diff --git a/.circleci/config.yml b/.circleci/config.yml
index f7b22ff4..58c71c8a 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -32,9 +32,9 @@ defs:
step-install-arduino-cli-on-mac: &step-install-arduino-cli-on-mac
name: Install arduino-cli
command: |
- curl -s --create-dirs -o "$HOME/arduino-cli.zip" "https://downloads.arduino.cc/arduino-cli/arduino-cli-0.3.2-alpha.preview-osx.zip" \
+ curl -s --create-dirs -o "$HOME/arduino-cli.zip" "http://downloads.arduino.cc/PR/arduino-cli/arduino-cli-25-PR91-osx.zip" \
&& unzip "$HOME/arduino-cli.zip" -d "$HOME" \
- && mv "$HOME/arduino-cli-0.3.2-alpha.preview-osx" "$HOME/arduino-cli" \
+ && mv "$HOME/arduino-cli-25-PR91-osx" "$HOME/arduino-cli" \
&& cp "$HOME/arduino-cli" "./packages/xod-client-electron/arduino-cli" \
&& mkdir "/tmp/arduino-cli" \
&& cp "$HOME/arduino-cli" "/tmp/arduino-cli/arduino-cli"
@@ -42,9 +42,9 @@ defs:
step-install-arduino-cli-on-linux: &step-install-arduino-cli-on-linux
name: Install arduino-cli
command: |
- curl -s --create-dirs -o "$HOME/arduino-cli.tar.bz2" "https://downloads.arduino.cc/arduino-cli/arduino-cli-0.3.2-alpha.preview-linux64.tar.bz2" \
+ curl -s --create-dirs -o "$HOME/arduino-cli.tar.bz2" "http://downloads.arduino.cc/PR/arduino-cli/arduino-cli-25-PR91-linux64.tar.bz2" \
&& tar xvjf "$HOME/arduino-cli.tar.bz2" -C "$HOME" \
- && mv "$HOME/arduino-cli-0.3.2-alpha.preview-linux64" "$HOME/arduino-cli" \
+ && mv "$HOME/arduino-cli-25-PR91-linux64" "$HOME/arduino-cli" \
&& cp "$HOME/arduino-cli" "./packages/xod-client-electron/arduino-cli" \
&& mkdir "/tmp/arduino-cli" \
&& cp "$HOME/arduino-cli" "/tmp/arduino-cli/arduino-cli"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6b6bb97f..95f4ca1e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file. See
[standard-version](https://github.com/conventional-changelog/standard-version)
for commit guidelines.
+
+## 0.25.3 (2018-11-22)
+
+### Bug fixes
+
+* [ide] Fix certificate validation issue that messed up autoupdate on Windows (#1555)
+* [ide] Update `arduino-cli` to 0.3.2 which fixes "Cannot update indexes" error that started occuring recently (#1560)
+* [ide] Make undo/redo hotkeys more reliable (#1556)
+* [ide] Fix "Select All" hotkey in Desktop IDE (#1554)
+* [ide] Prevent scroll position jumps in sidebar (#1533)
+* [nodes] Improve error handling in xod/common-hardware/sd-log (#1534)
+* [ide] Clarify error message about bad references when pasting nodes (#1541)
+
## 0.25.2 (2018-11-06)
diff --git a/lerna.json b/lerna.json
index 8d5ad562..10bc5eaf 100644
--- a/lerna.json
+++ b/lerna.json
@@ -6,5 +6,5 @@
"packages": [
"packages/*"
],
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/packages/xod-cli/package.json b/packages/xod-cli/package.json
index 7492085a..ec99bc5c 100644
--- a/packages/xod-cli/package.json
+++ b/packages/xod-cli/package.json
@@ -1,7 +1,7 @@
{
"name": "xod-cli",
+ "version": "0.25.3",
"description": "XOD project: Command Line Interface",
- "version": "0.25.0",
"author": "XOD Team ",
"bin": {
"xodc": "./bin/run"
diff --git a/packages/xod-cli/test-func/installArch.spec.js b/packages/xod-cli/test-func/installArch.spec.js
index bcc0abc9..42b97527 100644
--- a/packages/xod-cli/test-func/installArch.spec.js
+++ b/packages/xod-cli/test-func/installArch.spec.js
@@ -198,6 +198,10 @@ describe('xodc install:arch', () => {
process.exit = exit;
});
+ after(() => {
+ fs.removeSync(wd);
+ });
+
its(wd);
});
@@ -219,6 +223,10 @@ describe('xodc install:arch', () => {
process.exit = exit;
});
+ after(() => {
+ fs.removeSync(wd);
+ });
+
its(wd);
});
});
diff --git a/packages/xod-client-browser/package.json b/packages/xod-client-browser/package.json
index 5db7f4fa..8d6c8b5b 100644
--- a/packages/xod-client-browser/package.json
+++ b/packages/xod-client-browser/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-client-browser",
- "version": "0.25.2",
+ "version": "0.25.3",
"description": "XOD project: Client browser application",
"scripts": {
"build:tutorial-project": "node ./tools/loadTutorialProject.js",
@@ -18,14 +18,14 @@
"react-dom": "^16.2",
"react-event-listener": "^0.5.3",
"react-fa": "^5.0.0",
- "react-hotkeys": "^0.10.0",
+ "react-hotkeys": "^1.1.4",
"react-redux": "^4.4.5",
"react-skylight": "git+https://github.com/xodio/react-skylight.git#6dc266edc5198d0d1a6feb57f329826e782ec967",
"redux": "^3.0.5",
"redux-thunk": "^2.1.0",
"url-parse": "^1.2.0",
"xod-arduino": "^0.25.2",
- "xod-client": "^0.25.2",
+ "xod-client": "^0.25.3",
"xod-func-tools": "^0.25.0",
"xod-project": "^0.25.2"
},
diff --git a/packages/xod-client-browser/src/containers/App.jsx b/packages/xod-client-browser/src/containers/App.jsx
index 6a1f5154..616ce3a3 100644
--- a/packages/xod-client-browser/src/containers/App.jsx
+++ b/packages/xod-client-browser/src/containers/App.jsx
@@ -44,6 +44,8 @@ class App extends client.App {
this.hotkeyHandlers = {
[client.COMMAND.NEW_PROJECT]: this.onCreateProject,
+ [client.COMMAND.UNDO]: this.props.actions.undoCurrentPatch,
+ [client.COMMAND.REDO]: this.props.actions.redoCurrentPatch,
};
this.urlActions = {
diff --git a/packages/xod-client-electron/package.json b/packages/xod-client-electron/package.json
index 2aa8be7b..97e27fe4 100644
--- a/packages/xod-client-electron/package.json
+++ b/packages/xod-client-electron/package.json
@@ -5,7 +5,7 @@
"license": "AGPL-3.0",
"main": "src-babel/app/main.js",
"name": "xod-client-electron",
- "version": "0.25.2",
+ "version": "0.25.3",
"scripts": {
"build:workspace": "cpx \"../../workspace/**/*\" \"src-babel/workspace\"",
"build:gui": "webpack --colors",
@@ -37,7 +37,7 @@
"react-dom": "^16.2",
"react-event-listener": "^0.5.3",
"react-fa": "^5.0.0",
- "react-hotkeys": "^0.10.0",
+ "react-hotkeys": "^1.1.4",
"react-redux": "^4.4.5",
"react-skylight": "git+https://github.com/xodio/react-skylight.git#6dc266edc5198d0d1a6feb57f329826e782ec967",
"redux": "^3.0.5",
@@ -96,7 +96,7 @@
"category": "public.app-category.developer-tools"
},
"win": {
- "publisherName": "AMPERKA, OOO",
+ "publisherName": "Amperka, OOO",
"target": [
"nsis"
]
diff --git a/packages/xod-client-electron/src/view/containers/App.jsx b/packages/xod-client-electron/src/view/containers/App.jsx
index 953aae41..fd9fce87 100644
--- a/packages/xod-client-electron/src/view/containers/App.jsx
+++ b/packages/xod-client-electron/src/view/containers/App.jsx
@@ -175,6 +175,11 @@ class App extends client.App {
this.showError(error);
});
+ this.hotkeyHandlers = {
+ [client.COMMAND.UNDO]: this.props.actions.undoCurrentPatch,
+ [client.COMMAND.REDO]: this.props.actions.redoCurrentPatch,
+ };
+
this.urlActions = {
// actionPathName: params => this.props.actions.someAction(params.foo, params.bar),
[client.URL_ACTION_TYPES.OPEN_TUTORIAL]: this.onOpenTutorialProject,
@@ -630,7 +635,10 @@ class App extends client.App {
R.values
)(client.menu.items);
- return R.omit(commandsBoundToNativeMenu, client.HOTKEY);
+ return R.omit(
+ commandsBoundToNativeMenu,
+ client.menu.getOsSpecificHotkeys()
+ );
}
static getSelectedBoard() {
@@ -842,7 +850,11 @@ class App extends client.App {
render() {
return (
-
+
(dispatch, getState) => {
+ if (isInput(document.activeElement)) return;
-export const undoCurrentPatch = () => (dispatch, getState) =>
getCurrentPatchPath(getState()).map(currentPatchPath =>
dispatch(undoPatch(currentPatchPath))
);
+};
+
+export const redoCurrentPatch = () => (dispatch, getState) => {
+ if (isInput(document.activeElement)) return;
-export const redoCurrentPatch = () => (dispatch, getState) =>
getCurrentPatchPath(getState()).map(currentPatchPath =>
dispatch(redoPatch(currentPatchPath))
);
+};
export const showCode = code => ({
type: SHOW_CODE_REQUESTED,
diff --git a/packages/xod-client/src/editor/components/LibSuggester.jsx b/packages/xod-client/src/editor/components/LibSuggester.jsx
index c2c0d540..2c953839 100644
--- a/packages/xod-client/src/editor/components/LibSuggester.jsx
+++ b/packages/xod-client/src/editor/components/LibSuggester.jsx
@@ -13,6 +13,7 @@ import { isAmong } from 'xod-func-tools';
import { getPmSwaggerUrl } from '../../utils/urls';
import { KEYCODE } from '../../utils/constants';
+import { restoreFocusOnApp } from '../../utils/browser';
import SuggesterContainer from './SuggesterContainer';
import * as MSG from '../messages';
@@ -65,6 +66,11 @@ class LibSuggester extends React.Component {
}
}
+ componentWillUnmount() {
+ // A hack to make hotkeys work after focused input is destroyed
+ setTimeout(restoreFocusOnApp, 1);
+ }
+
onChange(e, { newValue, method }) {
if (isAmong(['up', 'down', 'click'], method)) return;
diff --git a/packages/xod-client/src/editor/components/Suggester.jsx b/packages/xod-client/src/editor/components/Suggester.jsx
index 742f0e27..edba1cef 100644
--- a/packages/xod-client/src/editor/components/Suggester.jsx
+++ b/packages/xod-client/src/editor/components/Suggester.jsx
@@ -10,6 +10,7 @@ import regExpEscape from 'escape-string-regexp';
import { isAmong, noop } from 'xod-func-tools';
import { KEYCODE } from '../../utils/constants';
+import { restoreFocusOnApp } from '../../utils/browser';
import { triggerUpdateHelpboxPositionViaSuggester } from '../../editor/utils';
import SuggesterContainer from './SuggesterContainer';
@@ -68,6 +69,11 @@ class Suggester extends React.Component {
}
}
+ componentWillUnmount() {
+ // A hack to make hotkeys work after focused input is destroyed
+ setTimeout(restoreFocusOnApp, 1);
+ }
+
onChange(e, { newValue, method }) {
if (isAmong(['up', 'down'], method)) {
this.setState({
diff --git a/packages/xod-client/src/editor/containers/Editor.jsx b/packages/xod-client/src/editor/containers/Editor.jsx
index b3c4840d..2df0ee3d 100644
--- a/packages/xod-client/src/editor/containers/Editor.jsx
+++ b/packages/xod-client/src/editor/containers/Editor.jsx
@@ -90,10 +90,6 @@ class Editor extends React.Component {
getHotkeyHandlers() {
return {
- [COMMAND.UNDO]: () =>
- this.props.currentPatchPath.map(this.props.actions.undo),
- [COMMAND.REDO]: () =>
- this.props.currentPatchPath.map(this.props.actions.redo),
[COMMAND.HIDE_HELPBOX]: () => this.props.actions.hideHelpbox(),
[COMMAND.TOGGLE_HELP]: this.toggleHelp,
[COMMAND.INSERT_NODE]: event => {
@@ -284,8 +280,6 @@ Editor.propTypes = {
actions: PropTypes.shape({
updatePatchImplementation: PropTypes.func.isRequired,
closeImplementationEditor: PropTypes.func.isRequired,
- undo: PropTypes.func.isRequired,
- redo: PropTypes.func.isRequired,
toggleHelp: PropTypes.func.isRequired,
setFocusedArea: PropTypes.func.isRequired,
addNode: PropTypes.func.isRequired,
diff --git a/packages/xod-client/src/utils/browser.js b/packages/xod-client/src/utils/browser.js
index 52d5ced2..50ef52e5 100644
--- a/packages/xod-client/src/utils/browser.js
+++ b/packages/xod-client/src/utils/browser.js
@@ -48,3 +48,7 @@ export const isEdge = () =>
R.compose(R.test(/Edge/), R.pathOr('', ['navigator', 'userAgent']))(window);
export const isMacOS = () => window.navigator.appVersion.indexOf('Mac') !== -1;
+
+export const restoreFocusOnApp = () => {
+ document.getElementById('App').focus();
+};
diff --git a/packages/xod-client/src/utils/constants.js b/packages/xod-client/src/utils/constants.js
index c7fdda5a..dbd5b4f6 100644
--- a/packages/xod-client/src/utils/constants.js
+++ b/packages/xod-client/src/utils/constants.js
@@ -40,8 +40,8 @@ export const HOTKEY = {
[COMMAND.DESELECT]: 'escape',
[COMMAND.SELECT_ALL]: 'CmdOrCtrl+a',
- [COMMAND.UNDO]: 'ctrl+z',
- [COMMAND.REDO]: ['ctrl+y', 'ctrl+shift+z'],
+ [COMMAND.UNDO]: 'CmdOrCtrl+z',
+ [COMMAND.REDO]: ['CmdOrCtrl+y', 'CmdOrCtrl+shift+z'],
[COMMAND.NEW_PROJECT]: 'ctrl+shift+n',
@@ -69,9 +69,6 @@ export const ELECTRON_ACCELERATOR = {
[COMMAND.DESELECT]: 'Escape',
- [COMMAND.UNDO]: 'CmdOrCtrl+Z',
- [COMMAND.REDO]: 'CmdOrCtrl+Shift+Z',
-
[COMMAND.NEW_PROJECT]: 'CmdOrCtrl+Shift+N',
[COMMAND.OPEN_PROJECT]: 'CmdOrCtrl+O',
diff --git a/tools/install-arduinocli.ps1 b/tools/install-arduinocli.ps1
index af733289..80532b7e 100644
--- a/tools/install-arduinocli.ps1
+++ b/tools/install-arduinocli.ps1
@@ -1,8 +1,8 @@
# Install arduino-cli
-Invoke-RestMethod -Uri "https://downloads.arduino.cc/arduino-cli/arduino-cli-0.3.2-alpha.preview-windows.zip" -Method GET -OutFile "$env:HOME/arduino-cli.zip"
+Invoke-RestMethod -Uri "http://downloads.arduino.cc/PR/arduino-cli/arduino-cli-25-PR91-windows.zip" -Method GET -OutFile "$env:HOME/arduino-cli.zip"
unzip "$env:HOME/arduino-cli.zip" -d "$env:HOME"
-mv "$env:HOME/arduino-cli-0.3.2-alpha.preview-windows.exe" "$env:HOME/arduino-cli.exe"
+mv "$env:HOME/arduino-cli-25-PR91-windows.exe" "$env:HOME/arduino-cli.exe"
copy "$env:HOME/arduino-cli.exe" "./packages/xod-client-electron/arduino-cli.exe"
$env:XOD_ARDUINO_CLI="$env:HOME/arduino-cli.exe"
diff --git a/workspace/__lib__/xod-dev/ds-rtc/project.xod b/workspace/__lib__/xod-dev/ds-rtc/project.xod
index bb3044b6..f3a0693f 100644
--- a/workspace/__lib__/xod-dev/ds-rtc/project.xod
+++ b/workspace/__lib__/xod-dev/ds-rtc/project.xod
@@ -5,5 +5,5 @@
"description": "This library operates DS1302/DS1307/DS3231 based breakout RTC boards",
"license": "AGPL-3.0",
"name": "ds-rtc",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod-dev/esp8266-mcu/project.xod b/workspace/__lib__/xod-dev/esp8266-mcu/project.xod
index 1ea45add..af338906 100644
--- a/workspace/__lib__/xod-dev/esp8266-mcu/project.xod
+++ b/workspace/__lib__/xod-dev/esp8266-mcu/project.xod
@@ -5,5 +5,5 @@
"description": "Support for ESP8266-based MCUs.",
"license": "AGPL-3.0",
"name": "esp8266-mcu",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod-dev/esp8266/project.xod b/workspace/__lib__/xod-dev/esp8266/project.xod
index 6ae06ce2..3ce5c054 100644
--- a/workspace/__lib__/xod-dev/esp8266/project.xod
+++ b/workspace/__lib__/xod-dev/esp8266/project.xod
@@ -5,5 +5,5 @@
"description": "Support for ESP8266 as a slave module",
"license": "AGPL-3.0",
"name": "esp8266",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod-dev/pn532-nfc/project.xod b/workspace/__lib__/xod-dev/pn532-nfc/project.xod
index d4896e82..776cd994 100644
--- a/workspace/__lib__/xod-dev/pn532-nfc/project.xod
+++ b/workspace/__lib__/xod-dev/pn532-nfc/project.xod
@@ -2,5 +2,5 @@
"description": "Support for RFID/NFC modules based on a PN532 chip.",
"license": "MIT",
"name": "pn532-nfc",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod-dev/w5500/project.xod b/workspace/__lib__/xod-dev/w5500/project.xod
index 8edc17f9..34c8a61b 100644
--- a/workspace/__lib__/xod-dev/w5500/project.xod
+++ b/workspace/__lib__/xod-dev/w5500/project.xod
@@ -5,5 +5,5 @@
"description": "Support for ethernet shields that use Wiznet W5500 chipset.",
"license": "AGPL-3.0",
"name": "w5500",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/bits/project.xod b/workspace/__lib__/xod/bits/project.xod
index 51a1d5f3..b1cec96f 100644
--- a/workspace/__lib__/xod/bits/project.xod
+++ b/workspace/__lib__/xod/bits/project.xod
@@ -5,5 +5,5 @@
"description": "Low-level bits and bytes operations",
"license": "AGPL-3.0",
"name": "bits",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/common-hardware/project.xod b/workspace/__lib__/xod/common-hardware/project.xod
index 6f02a1dc..7ae7c0d4 100644
--- a/workspace/__lib__/xod/common-hardware/project.xod
+++ b/workspace/__lib__/xod/common-hardware/project.xod
@@ -5,5 +5,5 @@
"description": "Hardware drivers for popular and simple peripherals",
"license": "AGPL-3.0",
"name": "common-hardware",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/core/project.xod b/workspace/__lib__/xod/core/project.xod
index 86e7533c..9313cf43 100644
--- a/workspace/__lib__/xod/core/project.xod
+++ b/workspace/__lib__/xod/core/project.xod
@@ -5,5 +5,5 @@
"description": "The very basic nodes of XOD",
"license": "AGPL-3.0",
"name": "core",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/datetime/project.xod b/workspace/__lib__/xod/datetime/project.xod
index 594f27ce..87c2dea1 100644
--- a/workspace/__lib__/xod/datetime/project.xod
+++ b/workspace/__lib__/xod/datetime/project.xod
@@ -5,5 +5,5 @@
"description": "Date and timestamp operations",
"license": "AGPL-3.0",
"name": "datetime",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/gpio/project.xod b/workspace/__lib__/xod/gpio/project.xod
index a480c242..9e375c53 100644
--- a/workspace/__lib__/xod/gpio/project.xod
+++ b/workspace/__lib__/xod/gpio/project.xod
@@ -5,5 +5,5 @@
"description": "Nodes of XOD to deal with GPIO (hardware pins)",
"license": "AGPL-3.0",
"name": "gpio",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/i2c/project.xod b/workspace/__lib__/xod/i2c/project.xod
index 39b5d09c..5794b6fa 100644
--- a/workspace/__lib__/xod/i2c/project.xod
+++ b/workspace/__lib__/xod/i2c/project.xod
@@ -5,5 +5,5 @@
"description": "I²C (aka I2C, IIC, TWI) bus interfacing",
"license": "AGPL-3.0",
"name": "i2c",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/math/project.xod b/workspace/__lib__/xod/math/project.xod
index 84727083..808febfc 100644
--- a/workspace/__lib__/xod/math/project.xod
+++ b/workspace/__lib__/xod/math/project.xod
@@ -5,5 +5,5 @@
"description": "Nodes of XOD for basic mathematical operations",
"license": "AGPL-3.0",
"name": "math",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/net/project.xod b/workspace/__lib__/xod/net/project.xod
index 8c499c17..7a5426b8 100644
--- a/workspace/__lib__/xod/net/project.xod
+++ b/workspace/__lib__/xod/net/project.xod
@@ -4,5 +4,5 @@
],
"license": "AGPL-3.0",
"name": "net",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/stream/project.xod b/workspace/__lib__/xod/stream/project.xod
index a4eb0959..35b5439d 100644
--- a/workspace/__lib__/xod/stream/project.xod
+++ b/workspace/__lib__/xod/stream/project.xod
@@ -4,5 +4,5 @@
],
"license": "AGPL-3.0",
"name": "stream",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/uart/project.xod b/workspace/__lib__/xod/uart/project.xod
index e04d3ee8..611f6f3d 100644
--- a/workspace/__lib__/xod/uart/project.xod
+++ b/workspace/__lib__/xod/uart/project.xod
@@ -5,5 +5,5 @@
"description": "Provides constructors and Nodes to interact with UARTs (Software, Hardware, USB) in XOD.",
"license": "AGPL-3.0",
"name": "uart",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/__lib__/xod/units/project.xod b/workspace/__lib__/xod/units/project.xod
index f6b4794f..db354a74 100644
--- a/workspace/__lib__/xod/units/project.xod
+++ b/workspace/__lib__/xod/units/project.xod
@@ -5,5 +5,5 @@
"description": "Units of measurement conversions",
"license": "AGPL-3.0",
"name": "units",
- "version": "0.25.2"
+ "version": "0.25.3"
}
diff --git a/workspace/blink/__fixtures__/firmware.bin b/workspace/blink/__fixtures__/firmware.bin
new file mode 100644
index 00000000..e7f9198d
Binary files /dev/null and b/workspace/blink/__fixtures__/firmware.bin differ
diff --git a/workspace/blink/__fixtures__/firmware.hex b/workspace/blink/__fixtures__/firmware.hex
index 132b2a18..f37dbb29 100644
--- a/workspace/blink/__fixtures__/firmware.hex
+++ b/workspace/blink/__fixtures__/firmware.hex
@@ -2,7 +2,7 @@
:100010000C9479000C9479000C9479000C9479007C
:100020000C9479000C9479000C9479000C9479006C
:100030000C9479000C9479000C9479000C9479005C
-:100040000C945C020C9479000C9479000C94790067
+:100040000C9470020C9479000C9479000C94790053
:100050000C9479000C9479000C9479000C9479003C
:100060000C9479000C947900000000002400270013
:100070002A0000000000250028002B0004040404CE
@@ -10,94 +10,97 @@
:10009000010204081020408001020408102001021F
:1000A00004081020000000080002010000030407FB
:1000B000000000000000000011241FBECFEFD8E0B8
-:1000C000DEBFCDBF11E0A0E0B1E0EAE3F6E002C0A0
+:1000C000DEBFCDBF11E0A0E0B1E0E2E6F6E002C0A5
:1000D00005900D92A831B107D9F721E0A8E1B1E070
-:1000E00001C01D92A632B207E1F70E94A6020C944D
-:1000F0001B030C9400003FB7F8948091220190916B
+:1000E00001C01D92A632B207E1F70E94BA020C9439
+:1000F0002F030C9400003FB7F89480912201909157
:100100002301A0912401B091250126B5A89B05C02B
:100110002F3F19F00196A11DB11D3FBFBA2FA92F86
:10012000982F8827820F911DA11DB11DBC01CD0103
:1001300042E0660F771F881F991F4A95D1F70895EF
:1001400080E090E0892B49F080E090E0892B29F055
:100150000E94000081110C94000008950F931F93DA
-:10016000FC01448155816681778141155105610506
-:10017000710571F081E00091180110911901209131
-:100180001A0130911B01401751076207730708F0ED
-:1001900080E01F910F9108958F929F92AF92BF922E
-:1001A000CF92DF92EF92FF92CF93DF938FB7F894C5
-:1001B00080901E0190901F01A0902001B09021011D
-:1001C0008FBF8092180190921901A0921A01B092EB
-:1001D0001B01409112015091130160911401709123
-:1001E0001501411551056105710531F081E0481592
-:1001F00059056A057B0508F080E0C0911701C1FB35
-:10020000DD27D0F9D82BD0FBC1F9C093170187E0C7
-:1002100091E00E94AE009091100191FB222720F9FD
-:10022000822B80FB91F990931001DD2399F091E0EE
-:1002300090931601C160C0931701809212019092B1
-:100240001301A0921401B0921501909106019460DF
-:1002500090930601882391F1C0911C0175016401FE
-:100260008AEFC80ED11CE11CF11C87E091E00E94CE
-:10027000AE008111E3C0CC23A1F0809107019091E1
-:100280000801A0910901B0910A0188159905AA05F4
-:10029000BB0508F4ECC0C816D906EA06FB0608F44C
-:1002A000E6C08091020181FB222720F99091100184
-:1002B0009170922B90FB81F9809302018091020151
-:1002C00081FF1CC09091100190FF0BC02091010193
-:1002D00091E09227291729F0909301018160809382
-:1002E00002018091060182FB222720F990910201F0
-:1002F0009170922B90FB82F9809306018091060108
-:1003000082FF6CC0609101018091170180FF66C07F
-:100310004DE950E0FA01749189E890E0FC012491E4
-:10032000222399F030E0220F331FF901E859FF4FE3
-:10033000A591B491F901EE58FF4F259134913FB743
-:10034000F8942C91272B2C933FBFE1EBF0E0249104
-:10035000FA014491FC019491992309F43CC02223B1
-:1003600039F1233091F038F42130A9F0223001F531
-:1003700084B58F7D12C0273091F02830A1F0243051
-:10038000B9F4809180008F7D03C0809180008F77C9
-:10039000809380000DC084B58F7784BD09C08091A3
-:1003A000B0008F7703C08091B0008F7D8093B00044
-:1003B000E92FF0E0EE0FFF1FEE58FF4FA591B4912B
-:1003C0009FB7F8948C91611103C04095482301C0F8
-:1003D000482B4C939FBF81E080930401109217013A
-:1003E00010921001109202011092060180911201E8
-:1003F00090911301A0911401B09115010097A105EE
-:10040000B10569F0409118015091190160911A01EC
-:1004100070911B0184179507A607B707C8F187E0FD
-:1004200091E00E94AE008823E1F110920B0110923E
-:100430000C0110920D0110920E0133C081E08093E7
-:100440000F0180911001816080931001C09207011B
-:10045000D0920801E0920901F0920A01C0920B01CA
-:10046000D0920C01E0920D01F0920E0104CFC092E7
-:100470000701D0920801E0920901F0920A01C092AE
-:100480000B01D0920C01E0920D01F0920E0109CF08
-:100490001092120110921301109214011092150182
-:1004A000BECFDF91CF91FF90EF90DF90CF90BF90C4
-:1004B000AF909F908F9008951F920F920FB60F925A
-:1004C00011242F933F938F939F93AF93BF9380916A
-:1004D0001E0190911F01A0912001B0912101309146
-:1004E0001D0123E0230F2D3720F40196A11DB11D1E
-:1004F00005C026E8230F0296A11DB11D20931D0102
-:1005000080931E0190931F01A0932001B0932101BD
-:100510008091220190912301A0912401B0912501A5
-:100520000196A11DB11D8093220190932301A093F8
-:100530002401B0932501BF91AF919F918F913F917D
-:100540002F910F900FBE0F901F901895789484B53F
-:10055000826084BD84B5816084BD85B5826085BDBF
-:1005600085B5816085BD80916E00816080936E004D
-:10057000109281008091810082608093810080913F
-:1005800081008160809381008091800081608093F0
-:1005900080008091B10084608093B1008091B000B0
-:1005A00081608093B00080917A00846080937A00AB
-:1005B00080917A00826080937A0080917A008160D5
-:1005C00080937A0080917A00806880937A001092FC
-:1005D000C1000E947B004B015C0184E6C82ED12C37
-:1005E000E12CF12C0E947B00DC01CB0188199909D8
-:1005F000AA09BB09883E9340A105B10598F321E003
-:10060000C21AD108E108F10888EE880E83E0981E2E
-:10061000A11CB11CC114D104E104F10419F781E05B
-:1006200080931C010E94CC0010921C010E94CC00FF
-:0A0630000E94A000FBCFF894FFCF5A
-:10063A0000000300000004000000000000000000A9
-:08064A000200000000000002A4
+:100160002FB7F89480911E0190911F01A09120015A
+:10017000B09121012FBF8093180190931901A09392
+:100180001A01B0931B01409112015091130160912B
+:10019000140170911501411551056105710531F08A
+:1001A00021E0481759076A077B0708F020E0809193
+:1001B000170181FB992790F9292B20FB81F9809366
+:1001C000170140910B0150910C0160910D0170914C
+:1001D0000E01411551056105710571F031E0809105
+:1001E000180190911901A0911A01B0911B014817B3
+:1001F00059076A077B0708F030E08091100181FB06
+:10020000992790F9932B90FB81F980931001222379
+:10021000E9F081E08093160180911701816080935D
+:100220001701009118011091190120911A013091C4
+:100230001B010093120110931301209314013093BA
+:100240001501809106018460809306019923F1F1E4
+:10025000E0911C01009118011091190120911A01DF
+:1002600030911B01D901C80186509F4FAF4FBF4F3E
+:10027000411551056105710531F0401751076207BD
+:10028000730708F411C1EE23A1F0409107015091CA
+:1002900008016091090170910A0140175107620736
+:1002A000730708F4E7C084179507A607B70708F493
+:1002B000E1C09091100191708091020181FB222791
+:1002C00020F9922B90FB81F9809302018091020129
+:1002D00081FF1CC0209101019091100190FF09C085
+:1002E00091E09227921729F0909301018160809309
+:1002F00002019091020191708091060182FB2227F8
+:1003000020F9922B90FB82F98093060180910601DF
+:1003100082FF6CC0609101018091170180FF66C06F
+:100320004DE950E0FA01749189E890E0FC012491D4
+:10033000222399F030E0220F331FF901E859FF4FD3
+:10034000A591B4912E583F4FF901059114912FB703
+:10035000F8943C91732B7C932FBFE1EBF0E0249158
+:10036000FA014491FC019491992309F43CC02223A1
+:1003700039F1233091F038F42130A9F0223001F521
+:1003800084B58F7D12C0273091F02830A1F0243041
+:10039000B9F4809180008F7D03C0809180008F77B9
+:1003A000809380000DC084B58F7784BD09C0809193
+:1003B000B0008F7703C08091B0008F7D8093B00034
+:1003C000E92FF0E0EE0FFF1FEE58FF4FA591B4911B
+:1003D0008FB7F8949C91611103C04095492301C0E7
+:1003E000492B4C938FBF81E0809304011092170139
+:1003F00010921001109202011092060180911201D8
+:1004000090911301A0911401B09115010097A105DD
+:10041000B10569F0409118015091190160911A01DC
+:1004200070911B0184179507A607B707A0F180916B
+:100430000B0190910C01A0910D01B0910E0100975C
+:10044000A105B10509F449C0409118015091190165
+:1004500060911A0170911B0184179507A607B707D1
+:10046000E0F510920B0110920C0110920D01109208
+:100470000E0133C08093070190930801A0930901F6
+:10048000B0930A0180930B0190930C01A0930D018E
+:10049000B0930E010ECF1092120110921301109220
+:1004A000140110921501C3CF41E040930F01409118
+:1004B000100141604093100180930701909308015F
+:1004C000A0930901B0930A0180930B0190930C0152
+:1004D000A0930D01B0930E01D6CE1F910F910895F8
+:1004E0001F920F920FB60F9211242F933F938F9369
+:1004F0009F93AF93BF9380911E0190911F01A09194
+:100500002001B091210130911D0123E0230F2D37EF
+:1005100020F40196A11DB11D05C026E8230F029607
+:10052000A11DB11D20931D0180931E0190931F01F9
+:10053000A0932001B0932101809122019091230189
+:10054000A0912401B09125010196A11DB11D8093B8
+:10055000220190932301A0932401B0932501BF9120
+:10056000AF919F918F913F912F910F900FBE0F9060
+:100570001F901895789484B5826084BD84B581609D
+:1005800084BD85B5826085BD85B5816085BD80915E
+:100590006E00816080936E001092810080918100D6
+:1005A00082608093810080918100816080938100CE
+:1005B000809180008160809380008091B100846090
+:1005C0008093B1008091B00081608093B0008091F1
+:1005D0007A00846080937A0080917A0082608093B0
+:1005E0007A0080917A00816080937A0080917A000D
+:1005F000806880937A001092C1000E947B004B01BA
+:100600005C0184E6C82ED12CE12CF12C0E947B00E9
+:10061000DC01CB0188199909AA09BB09883E9340DE
+:10062000A105B10558F021E0C21AD108E108F1088E
+:1006300088EE880E83E0981EA11CB11CC114D10461
+:10064000E104F10419F781E080931C010E94AE00DF
+:1006500010921C010E94AE000E94A000FBCFF894F3
+:02066000FFCFCA
+:100662000000030000000400000000000000000081
+:0806720002000000000000027C
:00000001FF
diff --git a/yarn.lock b/yarn.lock
index 1560bbc7..679b3148 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -978,6 +978,13 @@ ansi-styles@^2.0.1, ansi-styles@^2.2.1:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+ansi-styles@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
+ integrity sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==
+ dependencies:
+ color-convert "^1.9.0"
+
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -1146,7 +1153,7 @@ arr-diff@^4.0.0:
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+arr-flatten@^1.0.1, arr-flatten@^1.0.3, arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
@@ -2920,6 +2927,23 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+braces@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.2.2.tgz#241f868c2b2690d9febeee5a7c83fbbf25d00b1b"
+ integrity sha1-JB+GjCsmkNn+vu5afIP7vyXQCxs=
+ dependencies:
+ arr-flatten "^1.0.3"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.0"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^2.1.0"
+ to-regex "^3.0.1"
+
braces@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb"
@@ -3413,7 +3437,34 @@ 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.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1:
+chalk@^2.0.0, chalk@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
+ integrity sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==
+ dependencies:
+ ansi-styles "^3.1.0"
+ escape-string-regexp "^1.0.5"
+ supports-color "^4.0.0"
+
+chalk@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.0.tgz#477b3bf2f9b8fd5ca9e429747e37f724ee7af240"
+ integrity sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==
+ dependencies:
+ ansi-styles "^3.1.0"
+ escape-string-regexp "^1.0.5"
+ supports-color "^4.0.0"
+
+chalk@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
+ integrity sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==
+ dependencies:
+ ansi-styles "^3.1.0"
+ escape-string-regexp "^1.0.5"
+ supports-color "^4.0.0"
+
+chalk@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
@@ -6135,6 +6186,20 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
+extglob@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.2.tgz#3290f46208db1b2e8eb8be0c94ed9e6ad80edbe2"
+ integrity sha512-I0+eZBH+jFGL8F5BnIz2ON2nKCjTS3AS3H/5PeSmCp7UVC70Ym8IhdRiQly2juKYQ//f7z1aj1BRpQniFJoU1w==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
extglob@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
@@ -6616,7 +6681,16 @@ fs-extra@^6.0.1:
jsonfile "^4.0.0"
universalify "^0.1.0"
-fs-extra@^7.0.0, fs-extra@^7.0.1:
+fs-extra@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6"
+ integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
@@ -8197,6 +8271,13 @@ is-observable@^1.1.0:
dependencies:
symbol-observable "^1.1.0"
+is-odd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088"
+ integrity sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=
+ dependencies:
+ is-number "^3.0.0"
+
is-odd@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
@@ -9468,6 +9549,11 @@ lodash.isarray@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=
+lodash.isboolean@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
+
lodash.isequal@^4.0.0, lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
@@ -9478,6 +9564,11 @@ lodash.isfunction@^3.0.8:
resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b"
integrity sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs=
+lodash.isobject@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d"
+ integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=
+
lodash.isplainobject@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
@@ -9905,7 +9996,26 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
-micromatch@^3.0.0, micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
+micromatch@^3.0.0, micromatch@^3.0.4:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2"
+ integrity sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.2.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ extglob "^2.0.2"
+ fragment-cache "^0.2.1"
+ kind-of "^5.0.2"
+ nanomatch "^1.2.1"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@@ -10255,6 +10365,23 @@ nan@^2.9.2:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099"
integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==
+nanomatch@^1.2.1:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.3.tgz#15e1c02dcf990c27a283b08c0ba1801ce249a6a6"
+ integrity sha512-HqDMQWJlwpXbfKDpAnkc6AJQh5PFqVlrjYbruDjYVAS+05TQUb1qhIde4G9jMzHbs/u6bgEok1jMAV4yJzoh+w==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ is-odd "^1.0.0"
+ kind-of "^5.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
nanomatch@^1.2.9:
version "1.2.9"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
@@ -12372,15 +12499,16 @@ react-highlight-words@^0.8.1:
highlight-words-core "^1.0.2"
prop-types "^15.5.8"
-react-hotkeys@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-0.10.0.tgz#d1e78bd63f16d6db58d550d33c8eb071f35d94fb"
- integrity sha1-0eeL1j8W1ttY1VDTPI6wcfNdlPs=
+react-hotkeys@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz#a0712aa2e0c03a759fd7885808598497a4dace72"
+ integrity sha1-oHEqouDAOnWf14hYCFmEl6TaznI=
dependencies:
- create-react-class "^15.5.2"
- lodash "^4.13.1"
+ lodash.isboolean "^3.0.3"
+ lodash.isequal "^4.5.0"
+ lodash.isobject "^3.0.2"
mousetrap "^1.5.2"
- prop-types "^15.5.8"
+ prop-types "^15.6.0"
react-html-attributes@^1.3.0:
version "1.4.1"
@@ -13950,7 +14078,14 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
-source-map-support@^0.5.0, source-map-support@^0.5.6, source-map-support@^0.5.9:
+source-map-support@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.0.tgz#2018a7ad2bdf8faf2691e5fddab26bed5a2bacab"
+ integrity sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==
+ dependencies:
+ source-map "^0.6.0"
+
+source-map-support@^0.5.6, source-map-support@^0.5.9:
version "0.5.9"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
@@ -14065,6 +14200,13 @@ split-array-stream@^1.0.0:
async "^2.4.0"
is-stream-ended "^0.1.0"
+split-string@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-2.1.1.tgz#af4b06d821560426446c3cd931cda618940d37d0"
+ integrity sha1-r0sG2CFWBCZEbDzZMc2mGJQNN9A=
+ dependencies:
+ extend-shallow "^2.0.1"
+
split-string@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.0.2.tgz#6129bc92731716e5aa1fb73c333078f0b7c114c8"
@@ -14460,20 +14602,34 @@ supports-color@^3.1.2, supports-color@^3.2.3, supports-color@~3.2.3:
dependencies:
has-flag "^1.0.0"
-supports-color@^4.1.0, supports-color@^4.2.1, supports-color@^4.4.0:
+supports-color@^4.0.0, supports-color@^4.1.0, supports-color@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
+ integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==
+ dependencies:
+ has-flag "^2.0.0"
+
+supports-color@^4.2.1:
version "4.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
dependencies:
has-flag "^2.0.0"
-supports-color@^5.0.0, supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
+supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
+supports-color@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5"
+ integrity sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==
+ dependencies:
+ has-flag "^2.0.0"
+
supports-hyperlinks@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7"
@@ -15314,7 +15470,15 @@ url-parse@1.0.x:
querystringify "0.0.x"
requires-port "1.0.x"
-url-parse@^1.1.8, url-parse@^1.1.9, url-parse@^1.2.0:
+url-parse@^1.1.8, url-parse@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19"
+ integrity sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=
+ dependencies:
+ querystringify "~1.0.0"
+ requires-port "1.0.x"
+
+url-parse@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
integrity sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==
@@ -15827,7 +15991,14 @@ which-pm-runs@^1.0.0:
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
-which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
+which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+ integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==