From b4f8fd5b4871bf2a6f8efe260778a7e4e2395ec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Fri, 15 Sep 2017 14:12:27 +0200 Subject: [PATCH 01/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1240cf2..ce5c037 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ $ npm run dev ## Roadmap ARMata is currently at the very beginning of development phase and yet there're many thing, which are not implemented. The current roadmap: * toolbox -* live editing of a template +* ~~live editing of a template~~ * template validation * ~~ability to generate an image from a parsed template~~ * ~~refreshed UI~~ From b0d897cfe249bd59af5d768e30de981993449f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Sat, 16 Sep 2017 20:11:22 +0200 Subject: [PATCH 02/14] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index ce5c037..7e0d828 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,9 @@ You can obtain current version of ARMata from our [Releases](https://github.com/ ## Our goal We decided to create new ARM visualizer(apart from currently existing ones like ARMVIZ) because there's no tool, which is being currently maintained and developed. Our goal is to provide a solution, which will fill the gap of ARM visualizers and help people when working with them on daily basis. +## What does "ARMata" mean? +In Polish "armata" means "a cannon". It combines both the main purpose of this application and solve many issues related to working with ARM templates. + ## How can I help? Anyone can join and we'll welcome all new contributors. Currently we need people for all kinds of different things: * coding From 3838401f1b7c5ba26ca6603c4f19ea30473bc896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Sat, 16 Sep 2017 20:12:19 +0200 Subject: [PATCH 03/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e0d828..64c6a1f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ You can obtain current version of ARMata from our [Releases](https://github.com/ We decided to create new ARM visualizer(apart from currently existing ones like ARMVIZ) because there's no tool, which is being currently maintained and developed. Our goal is to provide a solution, which will fill the gap of ARM visualizers and help people when working with them on daily basis. ## What does "ARMata" mean? -In Polish "armata" means "a cannon". It combines both the main purpose of this application and solve many issues related to working with ARM templates. +In Polish "armata" means "a cannon". It combines both the main purpose of this application and the idea to solve many issues related to working with ARM templates. ## How can I help? Anyone can join and we'll welcome all new contributors. Currently we need people for all kinds of different things: From cb4b3fdc684ec231cefbe7fad00311633c6fee49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Wed, 11 Oct 2017 12:11:51 +0200 Subject: [PATCH 04/14] #64 - now it's possible to disable physics in a visualization --- app/actions/layout.js | 7 + app/components/App.js | 2 + app/components/Home.js | 4 +- app/components/Visualization.js | 4 +- app/containers/HomePage.js | 3 +- app/reducers/layout.js | 13 +- package.json | 5 +- .../__snapshots__/layout.spec.js.snap | 1 + yarn.lock | 952 +++++++++++++----- 9 files changed, 732 insertions(+), 259 deletions(-) diff --git a/app/actions/layout.js b/app/actions/layout.js index 025c623..bce057b 100644 --- a/app/actions/layout.js +++ b/app/actions/layout.js @@ -15,6 +15,7 @@ export const CLOSE_NODE_WINDOW = 'CLOSE_NODE_WINDOW'; export const OPEN_WINDOW = 'OPEN_WINDOW'; export const CLOSE_WINDOW = 'CLOSE_WINDOW'; export const OPEN_VISUALIZATION = 'OPEN_VISUALIZATION'; +export const TOGGLE_PHYSICS = 'TOGGLE_PHYSICS'; type actionType = { type: string @@ -31,6 +32,12 @@ export function toggleHierarchicalLayout() { }; } +export function togglePhysics() { + return (dispatch: (action: actionType) => void) => { + dispatch({ type: TOGGLE_PHYSICS }); + }; +} + export function changeView(view: string) { return (dispatch: (action: changeViewType) => void) => { dispatch({ type: CHANGE_VIEW, view }); diff --git a/app/components/App.js b/app/components/App.js index 27bd424..5fd97b7 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -18,6 +18,7 @@ export default class App extends Component { openSettings: () => void, openVisualization: () => void, toggleHierarchicalLayout: () => void, + togglePhysics(): () => void, children: Children, resources: Array, layout: Object, @@ -59,6 +60,7 @@ export default class App extends Component { this.props.toggleHierarchicalLayout()} /> + this.props.togglePhysics()} /> ) => void, json: Object, selectedFilename: string, - hierarchicalLayout: boolean + hierarchicalLayout: boolean, + physicsEnabled: boolean } render() { @@ -33,6 +34,7 @@ export default class Home extends Component { json={this.props.json} hierarchicalLayout={this.props.hierarchicalLayout} openNodeWindow={(nodes: Array) => this.props.openNodeWindow(nodes)} + physicsEnabled={this.props.physicsEnabled} /> ); diff --git a/app/components/Visualization.js b/app/components/Visualization.js index c0f218a..f1b78e6 100644 --- a/app/components/Visualization.js +++ b/app/components/Visualization.js @@ -8,7 +8,8 @@ export default class Visualization extends Component { props: { openNodeWindow: (Array) => void, // eslint-disable-line react/no-unused-prop-types json: Object, - hierarchicalLayout: boolean + hierarchicalLayout: boolean, + physicsEnabled: boolean } resources: any; @@ -138,6 +139,7 @@ export default class Visualization extends Component { } }, physics: { + enabled: this.props.physicsEnabled, forceAtlas2Based: { centralGravity: 0.03, gravitationalConstant: -300 diff --git a/app/containers/HomePage.js b/app/containers/HomePage.js index f67fe00..3acbfcf 100644 --- a/app/containers/HomePage.js +++ b/app/containers/HomePage.js @@ -9,7 +9,8 @@ function mapStateToProps(state) { selectedFilename: state.fileDialog.selectedFilename, json: state.fileDialog.fileData, error: state.fileDialog.error, - hierarchicalLayout: state.layout.hierarchicalLayout + hierarchicalLayout: state.layout.hierarchicalLayout, + physicsEnabled: state.layout.physicsEnabled }; } diff --git a/app/reducers/layout.js b/app/reducers/layout.js index 19027fb..e626039 100644 --- a/app/reducers/layout.js +++ b/app/reducers/layout.js @@ -11,7 +11,8 @@ import { OPEN_NODE_WINDOW, CLOSE_NODE_WINDOW, OPEN_WINDOW, - CLOSE_WINDOW + CLOSE_WINDOW, + TOGGLE_PHYSICS } from '../actions/layout'; import Window from '../types/window'; @@ -31,7 +32,8 @@ type layoutStateType = { isNodeWindowOpen: boolean, nodes: Array, activeWindow: string, - window: Window + window: Window, + physicsEnabled: boolean }; const initialState = { @@ -46,7 +48,8 @@ const initialState = { isNodeWindowOpen: false, nodes: [], activeWindow: '', - window: {} + window: {}, + physicsEnabled: true }; export default function layout(state: layoutStateType = initialState, action: actionType) { @@ -113,6 +116,10 @@ export default function layout(state: layoutStateType = initialState, action: ac activeWindow: '', window: {} }); + case TOGGLE_PHYSICS: + return Object.assign({}, state, { + physicsEnabled: !state.physicsEnabled + }); default: return state; } diff --git a/package.json b/package.json index 2848b7d..e0d5b4a 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "cross-spawn": "^5.1.0", "css-loader": "^0.28.3", "devtron": "^1.4.0", - "electron": "^1.6.10", + "electron": "^1.7.9", "electron-builder": "^19.16.1", "electron-devtools-installer": "^2.2.0", "electron-updater": "^2.7.1", @@ -182,7 +182,8 @@ "webpack-merge": "^4.1.0" }, "dependencies": { - "electron-debug": "^1.1.0", + "electron-builder-http": "^19.27.5", + "electron-debug": "^1.4.0", "font-awesome": "^4.7.0", "history": "^4.6.1", "react": "^15.5.4", diff --git a/test/reducers/__snapshots__/layout.spec.js.snap b/test/reducers/__snapshots__/layout.spec.js.snap index 8d1432e..475684f 100644 --- a/test/reducers/__snapshots__/layout.spec.js.snap +++ b/test/reducers/__snapshots__/layout.spec.js.snap @@ -38,6 +38,7 @@ Object { "isSettingsWindowOpen": false, "message": "", "nodes": Array [], + "physicsEnabled": true, "progress": Object {}, "title": "", "view": "Structure", diff --git a/yarn.lock b/yarn.lock index 875948d..6a9e376 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"7zip-bin-linux@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/7zip-bin-linux/-/7zip-bin-linux-1.0.3.tgz#66724d7bb7526381574393888f62566ed537151c" +"7zip-bin-linux@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/7zip-bin-linux/-/7zip-bin-linux-1.1.0.tgz#2ca309fd6a2102e18bd81e3a5d91b39db9adab71" "7zip-bin-mac@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/7zip-bin-mac/-/7zip-bin-mac-1.0.1.tgz#3e68778bbf0926adc68159427074505d47555c02" -"7zip-bin-win@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/7zip-bin-win/-/7zip-bin-win-2.0.2.tgz#4c36399413922f111b8e80df3065a4069cfc0a64" +"7zip-bin-win@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/7zip-bin-win/-/7zip-bin-win-2.1.1.tgz#8acfc28bb34e53a9476b46ae85a97418e6035c20" -"7zip-bin@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-2.0.4.tgz#0cd28ac3301b1302fbd99922bacb8bad98103e12" +"7zip-bin@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-2.2.4.tgz#5d0a7da759258b7fa59121fddcec7cb65938a85c" optionalDependencies: - "7zip-bin-linux" "^1.0.3" + "7zip-bin-linux" "^1.1.0" "7zip-bin-mac" "^1.0.1" - "7zip-bin-win" "^2.0.2" + "7zip-bin-win" "^2.1.1" "7zip@0.0.6": version "0.0.6" @@ -30,9 +30,9 @@ version "6.0.73" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.73.tgz#85dc4bb6f125377c75ddd2519a1eeb63f0a4ed70" -"@types/node@^7.0.18": - version "7.0.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.22.tgz#4593f4d828bdd612929478ea40c67b4f403ca255" +"@types/node@^8.0.24": + version "8.0.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.34.tgz#55f801fa2ddb2a40dd6dfc15ecfe1dde9c129fe9" JSONStream@^0.8.4: version "0.8.4" @@ -94,9 +94,9 @@ ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" -ajv-keywords@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.0.0.tgz#a37d02f845b6f52569804164270b24cb6c6cee61" +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.11.2, ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" @@ -105,11 +105,13 @@ ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.1.3.tgz#423d1c302c61e617081b30ca05f595ec51408e33" +ajv@^5.0.0, ajv@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" dependencies: co "^4.6.0" + fast-deep-equal "^1.0.0" + json-schema-traverse "^0.3.0" json-stable-stringify "^1.0.1" align-text@^0.1.1, align-text@^0.1.3: @@ -158,11 +160,11 @@ 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.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1" +ansi-styles@^3.0.0, 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.0.0" + color-convert "^1.9.0" anymatch@^1.3.0: version "1.3.0" @@ -171,6 +173,18 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" +app-package-builder@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/app-package-builder/-/app-package-builder-1.1.0.tgz#b114c5623537e1a0817bbddebba9b4d65dc6ef82" + dependencies: + bluebird-lst "^1.0.4" + builder-util "^3.0.10" + builder-util-runtime "^2.0.0" + fs-extra-p "^4.4.3" + int64-buffer "^0.1.9" + js-yaml "^3.10.0" + rabin-bindings "~1.7.3" + append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" @@ -284,6 +298,13 @@ asap@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" +asar-integrity@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/asar-integrity/-/asar-integrity-0.2.2.tgz#ccfacebc3e417a23c65b0549b9824f10684ad9a2" + dependencies: + bluebird-lst "^1.0.4" + fs-extra-p "^4.4.3" + asn1.js@^4.0.0: version "4.9.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" @@ -318,6 +339,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-exit-hook@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" @@ -1330,7 +1355,14 @@ babel-register@^6.24.1: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@~6.23.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.25.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-runtime@~6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: @@ -1386,6 +1418,10 @@ balanced-match@^0.4.0, balanced-match@^0.4.1, balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + base64-js@1.2.0, base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" @@ -1423,6 +1459,10 @@ bindings@1.2.x: version "1.2.1" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" +bindings@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + bl@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" @@ -1435,13 +1475,17 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird-lst@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.2.tgz#c7b26176b6c8fa458be703deb0644a28f64a475b" +bluebird-lst@^1.0.3, bluebird-lst@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.4.tgz#7fa1e4daaaf9e4e52f6dd0ec5b32e7ed4ca8cd6d" dependencies: - bluebird "^3.5.0" + bluebird "^3.5.1" -bluebird@^3.0.5, bluebird@^3.4.7, bluebird@^3.5.0: +bluebird@^3.0.5, bluebird@^3.5.0, bluebird@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bluebird@^3.4.7: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" @@ -1459,16 +1503,16 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boxen@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.1.0.tgz#b1b69dd522305e807a99deee777dbd6e5167b102" +boxen@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" - chalk "^1.1.1" + chalk "^2.0.1" cli-boxes "^1.0.0" string-width "^2.0.0" - term-size "^0.1.0" + term-size "^1.2.0" widest-line "^1.0.0" brace-expansion@^1.1.7: @@ -1478,6 +1522,12 @@ brace-expansion@^1.1.7: balanced-match "^0.4.1" concat-map "0.0.1" +brace@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/brace/-/brace-0.10.0.tgz#edef4eb9b0928ba1ee5f717ffc157749a6dd5d76" + dependencies: + w3c-blob "0.0.1" + braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" @@ -1597,6 +1647,64 @@ buffers@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" +builder-util-runtime@2.0.0, builder-util-runtime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-2.0.0.tgz#cd7720236568f9503934373ad555561093ddc1bb" + dependencies: + bluebird-lst "^1.0.4" + debug "^3.1.0" + fs-extra-p "^4.4.3" + +builder-util-runtime@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-1.0.8.tgz#a2f7639180e5b5f2aa2c9641e4c970110c832e95" + dependencies: + bluebird-lst "^1.0.4" + debug "^3.1.0" + fs-extra-p "^4.4.3" + +builder-util@3.0.10, builder-util@^3.0.10: + version "3.0.10" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-3.0.10.tgz#841b75efef2ca939c88900f275524082cc92d1a5" + dependencies: + "7zip-bin" "^2.2.4" + bluebird-lst "^1.0.4" + builder-util-runtime "^2.0.0" + chalk "^2.1.0" + debug "^3.1.0" + fs-extra-p "^4.4.3" + ini "^1.3.4" + is-ci "^1.0.10" + js-yaml "^3.10.0" + lazy-val "^1.0.2" + node-emoji "^1.8.1" + semver "^5.4.1" + source-map-support "^0.5.0" + stat-mode "^0.2.2" + temp-file "^2.0.3" + tunnel-agent "^0.6.0" + +builder-util@^2.0.10: + version "2.0.10" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-2.0.10.tgz#d280ab7b9fbbcab4057f17282b733b1f641610f0" + dependencies: + "7zip-bin" "^2.2.4" + bluebird-lst "^1.0.4" + builder-util-runtime "^1.0.8" + chalk "^2.1.0" + debug "^3.1.0" + fs-extra-p "^4.4.3" + ini "^1.3.4" + is-ci "^1.0.10" + js-yaml "^3.10.0" + lazy-val "^1.0.2" + node-emoji "^1.8.1" + semver "^5.4.1" + source-map-support "^0.5.0" + stat-mode "^0.2.2" + temp-file "^2.0.3" + tunnel-agent "^0.6.0" + builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1711,6 +1819,14 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.1, chalk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -1751,6 +1867,10 @@ chokidar@^1.4.3, chokidar@^1.6.0: optionalDependencies: fsevents "^1.0.0" +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + chromium-pickle-js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" @@ -1775,6 +1895,10 @@ clap@^1.0.9: dependencies: chalk "^1.1.3" +classnames@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + clean-css@4.0.x: version "4.0.13" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.13.tgz#feb2a176062d72a6c3e624d9213cac6a0c485e80" @@ -1801,6 +1925,14 @@ cli-width@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" +clipboard@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b" + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -1856,7 +1988,7 @@ 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.0.0, color-convert@^1.3.0: +color-convert@^1.3.0, color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: @@ -2130,13 +2262,6 @@ cross-env@^5.0.0: cross-spawn "^5.1.0" is-windows "^1.0.0" -cross-spawn-async@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" - dependencies: - lru-cache "^4.0.0" - which "^1.2.8" - cross-spawn@^3.0.0, cross-spawn@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" @@ -2151,7 +2276,7 @@ cross-spawn@^4.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.1.0: +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: @@ -2394,24 +2519,30 @@ debug@2.2.0, debug@~2.2.0: dependencies: ms "0.7.1" -debug@2.6.7: +debug@2.6.7, debug@^2.6.0: version "2.6.7" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" dependencies: ms "2.0.0" -debug@2.6.8, debug@^2.1.3, debug@^2.2.0, debug@^2.6.0, debug@^2.6.1, debug@^2.6.3, debug@^2.6.6: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -debug@^2.1.1: +debug@^2.1.1, debug@^2.2.0: version "2.6.6" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" dependencies: ms "0.7.3" +debug@^2.1.3, debug@^2.6.3, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.0.0, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2465,6 +2596,10 @@ delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +delegate@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.1.3.tgz#9a8251a777d7025faa55737bc3b071742127a9fd" + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -2514,6 +2649,18 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dmg-builder@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-2.1.1.tgz#e70543bc2e4b708242c4d07a0d5b391a2bfe0f63" + dependencies: + bluebird-lst "^1.0.4" + builder-util "^2.0.10" + debug "^3.1.0" + fs-extra-p "^4.4.3" + iconv-lite "^0.4.19" + js-yaml "^3.10.0" + parse-color "^1.0.0" + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -2605,6 +2752,14 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +dotenv-expand@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.0.1.tgz#68fddc1561814e0a10964111057ff138ced7d7a8" + +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" @@ -2638,72 +2793,47 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -ejs@^2.5.6, ejs@~2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" - -electron-builder-core@17.2.0: - version "17.2.0" - resolved "https://registry.yarnpkg.com/electron-builder-core/-/electron-builder-core-17.2.0.tgz#e235d11aae64bffbad36b601ac58173f9377f619" - -electron-builder-http@18.0.1, electron-builder-http@~18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-18.0.1.tgz#9d10ead501656087222b4de28b2b90df9f978313" - dependencies: - debug "2.6.8" - fs-extra-p "^4.3.0" - -electron-builder-util@18.0.1, electron-builder-util@~18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/electron-builder-util/-/electron-builder-util-18.0.1.tgz#891ddd09ae0fcb7bf9f4abde6e3fa7045fbdb231" - dependencies: - "7zip-bin" "^2.0.4" - bluebird-lst "^1.0.2" - chalk "^1.1.3" - debug "2.6.8" - electron-builder-http "~18.0.1" - fs-extra-p "^4.3.0" - ini "^1.3.4" - is-ci "^1.0.10" - node-emoji "^1.5.1" - source-map-support "^0.4.15" - stat-mode "^0.2.2" - tunnel-agent "^0.6.0" - -electron-builder@^18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-18.0.1.tgz#13517273e287e458c95d853622003874ddb90f89" - dependencies: - "7zip-bin" "^2.0.4" - ajv "^5.1.3" - ajv-keywords "^2.0.0" - bluebird-lst "^1.0.2" - chalk "^1.1.3" +ejs@^2.5.6, ejs@^2.5.7, ejs@~2.5.6: + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" + +electron-builder@^19.16.1: + version "19.36.0" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-19.36.0.tgz#25a6025f6c08db9dacc6dc14c6299c8d5b3b1669" + dependencies: + "7zip-bin" "^2.2.4" + app-package-builder "1.1.0" + asar-integrity "0.2.2" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.4" + builder-util "3.0.10" + builder-util-runtime "2.0.0" + chalk "^2.1.0" chromium-pickle-js "^0.2.0" cuint "^0.2.2" - debug "2.6.8" - electron-builder-core "17.2.0" - electron-builder-http "18.0.1" - electron-builder-util "18.0.1" - electron-download-tf "4.3.1" - electron-osx-sign "0.4.5" - electron-publish "18.0.1" - fs-extra-p "^4.3.0" - hosted-git-info "^2.4.2" + debug "^3.1.0" + dmg-builder "2.1.1" + dotenv "^4.0.0" + dotenv-expand "^4.0.1" + ejs "^2.5.7" + electron-download-tf "4.3.4" + electron-osx-sign "0.4.7" + electron-publish "19.36.0" + fs-extra-p "^4.4.3" + hosted-git-info "^2.5.0" is-ci "^1.0.10" isbinaryfile "^3.0.2" - js-yaml "^3.8.4" - json5 "^0.5.1" + js-yaml "^3.10.0" + lazy-val "^1.0.2" minimatch "^3.0.4" - node-forge "^0.7.1" - normalize-package-data "^2.3.8" - parse-color "^1.0.0" + normalize-package-data "^2.4.0" plist "^2.1.0" + read-config-file "1.1.1" sanitize-filename "^1.6.1" - semver "^5.3.0" - update-notifier "^2.1.0" - uuid-1345 "^0.99.6" - yargs "^8.0.1" + semver "^5.4.1" + temp-file "^2.0.3" + update-notifier "^2.3.0" + yargs "^9.0.1" electron-chromedriver@~1.7.0: version "1.7.1" @@ -2712,12 +2842,12 @@ electron-chromedriver@~1.7.0: electron-download "^4.1.0" extract-zip "^1.6.5" -electron-debug@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/electron-debug/-/electron-debug-1.1.0.tgz#050a9c3f906fffc2492510cf8ac31d0f32a579e1" +electron-debug@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/electron-debug/-/electron-debug-1.4.0.tgz#bec7005522220a9d0622153352e1bbff0f37af2e" dependencies: - electron-is-dev "^0.1.0" - electron-localshortcut "^0.6.0" + electron-is-dev "^0.3.0" + electron-localshortcut "^3.0.0" electron-devtools-installer@^2.2.0: version "2.2.0" @@ -2728,18 +2858,18 @@ electron-devtools-installer@^2.2.0: rimraf "^2.5.2" semver "^5.3.0" -electron-download-tf@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/electron-download-tf/-/electron-download-tf-4.3.1.tgz#7930f24a08e3669eaad38a5f7f288a10461caf72" +electron-download-tf@4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/electron-download-tf/-/electron-download-tf-4.3.4.tgz#b03740b2885aa2ad3f8784fae74df427f66d5165" dependencies: - debug "^2.6.6" + debug "^3.0.0" env-paths "^1.0.0" - fs-extra "^3.0.1" + fs-extra "^4.0.1" minimist "^1.2.0" nugget "^2.0.1" path-exists "^3.0.0" rc "^1.2.1" - semver "^5.3.0" + semver "^5.4.1" sumchecker "^2.0.2" electron-download@^3.0.1: @@ -2770,46 +2900,69 @@ electron-download@^4.1.0: semver "^5.3.0" sumchecker "^2.0.1" -electron-is-dev@^0.1.0: +electron-is-accelerator@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-0.1.2.tgz#8a1043e32b3a1da1c3f553dce28ce764246167e3" + resolved "https://registry.yarnpkg.com/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz#509e510c26a56b55e17f863a4b04e111846ab27b" -electron-localshortcut@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-0.6.1.tgz#c4e268c38a6e42f40de5618fc906d1ed608f11aa" +electron-is-dev@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-0.3.0.tgz#14e6fda5c68e9e4ecbeff9ccf037cbd7c05c5afe" -electron-osx-sign@0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.5.tgz#59037cae6ac05ba9e802f76d9bb772b31a8c75c7" +electron-localshortcut@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-3.0.2.tgz#df9cebe64140f4e58b680aacb2bd6278ae38ee61" dependencies: - bluebird "^3.4.7" + debug "^2.6.8" + electron-is-accelerator "^0.1.0" + keyboardevent-from-electron-accelerator "^0.7.0" + keyboardevents-areequal "^0.2.1" + +electron-osx-sign@0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.7.tgz#1d75647a82748eacd48bea70616ec83ffade3ee5" + dependencies: + bluebird "^3.5.0" compare-version "^0.1.2" - debug "^2.6.1" + debug "^2.6.8" isbinaryfile "^3.0.2" minimist "^1.2.0" - plist "^2.0.1" - tempfile "^1.1.1" + plist "^2.1.0" -electron-publish@18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-18.0.1.tgz#04e8bd1db2c431f9de47c277c845234e3d7e0df8" +electron-publish@19.36.0: + version "19.36.0" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-19.36.0.tgz#34b48fdcaa3cd782de7ae3637cd117941e1231e6" dependencies: - bluebird-lst "^1.0.2" - chalk "^1.1.3" - electron-builder-http "~18.0.1" - electron-builder-util "~18.0.1" - fs-extra-p "^4.3.0" - mime "^1.3.6" + bluebird-lst "^1.0.4" + builder-util "^3.0.10" + builder-util-runtime "^2.0.0" + chalk "^2.1.0" + fs-extra-p "^4.4.3" + mime "^2.0.3" electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.11: version "1.3.11" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.11.tgz#744761df1d67b492b322ce9aa0aba5393260eb61" -electron@^1.6.10: - version "1.7.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.1.tgz#a93b8abd1fd6df794839d8602903aacbce74d388" +electron-updater@^2.7.1: + version "2.11.0" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-2.11.0.tgz#a66e64813f2af012b922c27420758af74ad68137" + dependencies: + bluebird-lst "^1.0.4" + builder-util-runtime "^2.0.0" + electron-is-dev "^0.3.0" + fs-extra-p "^4.4.3" + js-yaml "^3.10.0" + lazy-val "^1.0.2" + lodash.isequal "^4.5.0" + semver "^5.4.1" + source-map-support "^0.5.0" + xelement "^1.0.16" + +electron@^1.7.9: + version "1.8.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.1.tgz#19b6f39f2013e204a91a60bc3086dc7a4a07ed88" dependencies: - "@types/node" "^7.0.18" + "@types/node" "^8.0.24" electron-download "^3.0.1" extract-zip "^1.0.3" @@ -2825,6 +2978,10 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emitter-component@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.1.1.tgz#065e2dbed6959bf470679edabeaf7981d1003ab6" + emoji-regex@^6.1.0: version "6.4.2" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.4.2.tgz#a30b6fee353d406d96cfb9fa765bdc82897eff6e" @@ -2843,7 +3000,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.0.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" dependencies: @@ -3187,9 +3344,9 @@ esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" esquery@^1.0.0: version "1.0.0" @@ -3257,17 +3414,6 @@ exec-sh@^0.2.0: dependencies: merge "^1.1.3" -execa@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" - dependencies: - cross-spawn-async "^2.1.1" - is-stream "^1.1.0" - npm-run-path "^1.0.0" - object-assign "^4.0.1" - path-key "^1.0.0" - strip-eof "^1.0.0" - execa@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" @@ -3280,6 +3426,18 @@ execa@^0.5.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execall@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" @@ -3302,6 +3460,10 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-template@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.0.tgz#e09efba977bf98f9ee0ed25abd0c692e02aec3fc" + express@^4.13.3, express@^4.15.2, express@^4.15.3: version "4.15.3" resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662" @@ -3380,6 +3542,10 @@ fancy-log@^1.1.0: chalk "^1.1.1" time-stamp "^1.0.0" +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -3412,6 +3578,12 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fbemitter@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865" + dependencies: + fbjs "^0.8.4" + fbjs-scripts@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-0.7.1.tgz#4f115e218e243e3addbf0eddaac1e3c62f703fac" @@ -3425,7 +3597,7 @@ fbjs-scripts@^0.7.1: semver "^5.1.0" through2 "^2.0.0" -fbjs@^0.8.4, fbjs@^0.8.9: +fbjs@^0.8.0, fbjs@^0.8.4, fbjs@^0.8.6, fbjs@^0.8.9: version "0.8.12" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" dependencies: @@ -3576,6 +3748,13 @@ flow-typed@^2.1.2: which "^1.2.11" yargs "^4.2.0" +flux@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-3.1.3.tgz#d23bed515a79a22d933ab53ab4ada19d05b2f08a" + dependencies: + fbemitter "^2.0.0" + fbjs "^0.8.0" + font-awesome@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" @@ -3624,12 +3803,12 @@ fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" -fs-extra-p@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-4.3.0.tgz#2e148a544287df0258931cabc583063b4eed2303" +fs-extra-p@^4.4.0, fs-extra-p@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-4.4.3.tgz#98be363dad570405474e72aecda29f2f4b60b53d" dependencies: - bluebird-lst "^1.0.2" - fs-extra "^3.0.1" + bluebird-lst "^1.0.4" + fs-extra "^4.0.2" fs-extra@^0.30.0: version "0.30.0" @@ -3648,12 +3827,12 @@ fs-extra@^2.0.0: graceful-fs "^4.1.2" jsonfile "^2.1.0" -fs-extra@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" +fs-extra@^4.0.1, fs-extra@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" dependencies: graceful-fs "^4.1.2" - jsonfile "^3.0.0" + jsonfile "^4.0.0" universalify "^0.1.0" fs.realpath@^1.0.0: @@ -3767,6 +3946,10 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + github@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/github/-/github-0.2.4.tgz#24fa7f0e13fa11b946af91134c51982a91ce538b" @@ -3797,6 +3980,12 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.0.tgz#10d34039e0df04272e262cf24224f7209434df4f" + dependencies: + ini "^1.3.4" + global@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -3847,6 +4036,12 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + dependencies: + delegate "^3.1.2" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -3916,6 +4111,10 @@ gzip-size@^3.0.0: dependencies: duplexer "^0.1.1" +hammerjs@^2.0.6, hammerjs@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + handle-thing@^1.2.4: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -3961,6 +4160,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" @@ -4043,9 +4246,9 @@ home-path@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.5.tgz#788b29815b12d53bacf575648476e6f9041d133f" -hosted-git-info@^2.1.4, hosted-git-info@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" +hosted-git-info@^2.1.4, hosted-git-info@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" hpack.js@^2.1.6: version "2.1.6" @@ -4171,10 +4374,14 @@ humanize-plus@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/humanize-plus/-/humanize-plus-1.8.2.tgz#a65b34459ad6367adbb3707a82a3c9f916167030" -iconv-lite@0.4.13, iconv-lite@~0.4.13: +iconv-lite@0.4.13: version "0.4.13" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" +iconv-lite@^0.4.19, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + icss-replace-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" @@ -4193,6 +4400,10 @@ ignore@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.0.tgz#3812d22cbe9125f2c2b4915755a1b8abd745a001" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -4270,6 +4481,10 @@ inquirer@~3.0.6: strip-ansi "^3.0.0" through "^2.3.6" +int64-buffer@^0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-0.1.9.tgz#9e039da043b24f78b196b283e04653ef5e990f61" + interpret@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" @@ -4391,6 +4606,13 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + is-my-json-valid@^2.10.0: version "2.16.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" @@ -4847,6 +5069,10 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" +jquery@x.*: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" + js-base64@^2.1.8, js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" @@ -4855,12 +5081,12 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" -js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0, js-yaml@^3.8.4: - version "3.8.4" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" +js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: argparse "^1.0.7" - esprima "^3.1.1" + esprima "^4.0.0" js-yaml@~3.7.0: version "3.7.0" @@ -4935,6 +5161,10 @@ json-loader@^0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -4963,9 +5193,9 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" optionalDependencies: graceful-fs "^4.1.6" @@ -5003,6 +5233,18 @@ jsx-ast-utils@^1.3.4, jsx-ast-utils@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" +keyboardevent-from-electron-accelerator@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-0.7.1.tgz#aedafa5cc9a3a5f3f2b7c88b2ffd4057568118e7" + +keyboardevents-areequal@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz#88191ec738ce9f7591c25e9056de928b40277194" + +keycharm@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/keycharm/-/keycharm-0.2.0.tgz#fa6ea2e43b90a68028843d27f2075d35a8c3e6f9" + kind-of@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" @@ -5039,9 +5281,9 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" -lazy-req@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" +lazy-val@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.2.tgz#d9b07fb1fce54cbc99b3c611de431b83249369b6" lazystream@^1.0.0: version "1.0.0" @@ -5194,6 +5436,10 @@ lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + lodash.defaults@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -5212,6 +5458,10 @@ lodash.flatten@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + lodash.foreach@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" @@ -5223,6 +5473,10 @@ lodash.get@^3.7.0: lodash._baseget "^3.0.0" lodash._topath "^3.0.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -5231,6 +5485,10 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lodash.isequal@^4.1.1, lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + lodash.isnil@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c" @@ -5316,6 +5574,10 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -5369,14 +5631,14 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" -lru-cache@^4.0.0, lru-cache@^4.0.1: +lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" dependencies: pseudomap "^1.0.1" yallist "^2.0.0" -macaddress@^0.2.7, macaddress@^0.2.8: +macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -5505,13 +5767,13 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: dependencies: mime-db "~1.27.0" -mime@1.3.4, mime@1.3.x: +mime@1.3.4, mime@1.3.x, mime@^1.2.11, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" -mime@^1.2.11, mime@^1.3.4, mime@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" +mime@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b" mimic-fn@^1.0.0: version "1.1.0" @@ -5564,6 +5826,10 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" +moment@^2.18.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.0.tgz#44f675ef6b944942762581b1c179fb679e599d67" + ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" @@ -5599,10 +5865,14 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@2.6.x, nan@^2.3.0, nan@^2.3.2: +nan@2.6.x, nan@^2.3.2: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +nan@^2.3.0, nan@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + native-promise-only@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" @@ -5631,11 +5901,15 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" -node-emoji@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.5.1.tgz#fd918e412769bf8c448051238233840b2aff16a1" +node-abi@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.1.1.tgz#c9cda256ec8aa99bcab2f6446db38af143338b2a" + +node-emoji@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.8.1.tgz#6eec6bfb07421e2148c75c6bba72421f8530a826" dependencies: - string.prototype.codepointat "^0.2.0" + lodash.toarray "^4.4.0" node-fetch@^1.0.1: version "1.6.3" @@ -5644,10 +5918,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-forge@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" - node-gyp@^3.3.1: version "3.6.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.1.tgz#19561067ff185464aded478212681f47fd578cbc" @@ -5772,6 +6042,10 @@ node-sass@^4.5.3: sass-graph "^2.1.1" stdout-stream "^1.4.0" +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -5785,9 +6059,9 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -5821,19 +6095,13 @@ npm-install-package@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-install-package/-/npm-install-package-2.1.0.tgz#d7efe3cfcd7ab00614b896ea53119dc9ab259125" -npm-run-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" - dependencies: - path-key "^1.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" dependencies: @@ -5947,7 +6215,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -6143,10 +6411,6 @@ path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" - path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -6226,7 +6490,7 @@ pkg-dir@^1.0.0: dependencies: find-up "^1.0.0" -plist@^2.0.1, plist@^2.1.0: +plist@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/plist/-/plist-2.1.0.tgz#57ccdb7a0821df21831217a3cad54e3e146a1025" dependencies: @@ -6539,6 +6803,25 @@ postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0. source-map "^0.5.6" supports-color "^3.2.3" +prebuild-install@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.3.0.tgz#19481247df728b854ab57b187ce234211311b485" + dependencies: + expand-template "^1.0.2" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-abi "^2.1.1" + noop-logger "^0.1.1" + npmlog "^4.0.1" + os-homedir "^1.0.1" + pump "^1.0.1" + rc "^1.1.6" + simple-get "^1.4.2" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + xtend "4.0.1" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6612,13 +6895,19 @@ prop-types@^15.5.10, prop-types@^15.5.4: fbjs "^0.8.9" loose-envify "^1.3.1" -prop-types@^15.5.7, prop-types@~15.5.7: +prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7: version "15.5.9" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.9.tgz#d478eef0e761396942f70c78e772f76e8be747c9" dependencies: fbjs "^0.8.9" loose-envify "^1.3.1" +propagating-hammerjs@^1.4.6: + version "1.4.6" + resolved "https://registry.yarnpkg.com/propagating-hammerjs/-/propagating-hammerjs-1.4.6.tgz#fed00e9b00767ffd42d14f5b531bc493eb672e37" + dependencies: + hammerjs "^2.0.6" + proxy-addr@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" @@ -6653,6 +6942,13 @@ public-encrypt@^4.0.0: setimmediate ">= 1.0.2 < 2" slice-stream ">= 1.0.0 < 2" +pump@^1.0.0, pump@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -6661,6 +6957,10 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + q@^1.1.2, q@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" @@ -6692,6 +6992,14 @@ querystringify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" +rabin-bindings@~1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/rabin-bindings/-/rabin-bindings-1.7.3.tgz#fb6ae9dbf897988bc2504ccf4832ee4f0546d32a" + dependencies: + bindings "^1.3.0" + nan "^2.7.0" + prebuild-install "^2.3.0" + randomatic@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" @@ -6716,6 +7024,15 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7, rc@^1.2.1: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-ace@^5.2.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-5.4.0.tgz#6dadbbe4d1ca49da62f7579963dd064759358ddc" + dependencies: + brace "^0.10.0" + lodash.get "^4.4.2" + lodash.isequal "^4.1.1" + prop-types "^15.5.8" + react-addons-test-utils@^15.5.1: version "15.5.1" resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7" @@ -6723,6 +7040,15 @@ react-addons-test-utils@^15.5.1: fbjs "^0.8.4" object-assign "^4.1.0" +react-base16-styling@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.5.3.tgz#3858f24e9c4dd8cbd3f702f3f74d581ca2917269" + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + react-deep-force-update@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.0.1.tgz#f911b5be1d2a6fe387507dd6e9a767aa2924b4c7" @@ -6740,6 +7066,15 @@ react-dom@^15.5.4: object-assign "^4.1.0" prop-types "~15.5.7" +react-graph-vis@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/react-graph-vis/-/react-graph-vis-0.1.4.tgz#4e4199f15ee1e0fa16d54c369eba7b3b577b00d8" + dependencies: + lodash "^4.17.4" + prop-types "^15.5.10" + uuid "^2.0.1" + vis "^4.18.1" + react-hot-loader@3.0.0-beta.6: version "3.0.0-beta.6" resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.0.0-beta.6.tgz#463fac0bfc8b63a8385258af20c91636abce75f4" @@ -6751,6 +7086,15 @@ react-hot-loader@3.0.0-beta.6: redbox-react "^1.2.5" source-map "^0.4.4" +react-json-view@^1.10.8: + version "1.13.0" + resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.13.0.tgz#4d6df1520bf838b450e5940b54cad4dba9a6aac1" + dependencies: + clipboard "^1.7.1" + flux "^3.1.3" + react-base16-styling "^0.5.3" + react-textarea-autosize "^5.1.0" + react-proxy@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-1.1.8.tgz#9dbfd9d927528c3aa9f444e4558c37830ab8c26a" @@ -6805,6 +7149,12 @@ react-router@^4.1.1: prop-types "^15.5.4" warning "^3.0.0" +react-tap-event-plugin@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/react-tap-event-plugin/-/react-tap-event-plugin-2.0.1.tgz#316beb3bc6556e29ec869a7293e89c826a9074d2" + dependencies: + fbjs "^0.8.6" + react-test-renderer@^15.5.4: version "15.5.4" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.5.4.tgz#d4ebb23f613d685ea8f5390109c2d20fbf7c83bc" @@ -6812,6 +7162,12 @@ react-test-renderer@^15.5.4: fbjs "^0.8.9" object-assign "^4.1.0" +react-textarea-autosize@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-5.1.0.tgz#ffbf8164fce217c79443c1c17dedf730592df224" + dependencies: + prop-types "^15.5.10" + react-transform-catch-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/react-transform-catch-errors/-/react-transform-catch-errors-1.0.2.tgz#1b4d4a76e97271896fc16fe3086c793ec88a9eeb" @@ -6832,6 +7188,18 @@ react@^15.5.4: object-assign "^4.1.0" prop-types "^15.5.7" +read-config-file@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-1.1.1.tgz#26b3d38a3ccbdacae9c168dc479828e68878a5d6" + dependencies: + ajv "^5.2.2" + ajv-keywords "^2.1.0" + bluebird-lst "^1.0.3" + fs-extra-p "^4.4.0" + js-yaml "^3.10.0" + json5 "^0.5.1" + lazy-val "^1.0.2" + read-file-stdin@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" @@ -6977,6 +7345,10 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regenerator-transform@0.9.11: version "0.9.11" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" @@ -7288,13 +7660,37 @@ select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + +semantic-ui-css@^2.2.12: + version "2.2.12" + resolved "https://registry.yarnpkg.com/semantic-ui-css/-/semantic-ui-css-2.2.12.tgz#afc462e5bb4f8a0dcfe3dca11274499a997490dd" + dependencies: + jquery x.* + +semantic-ui-react@^0.71.3: + version "0.71.5" + resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.71.5.tgz#c8713f1cbdd63815843949fb611602541d3a20d8" + dependencies: + babel-runtime "^6.25.0" + classnames "^2.2.5" + debug "^3.0.0" + lodash "^4.17.4" + prop-types "^15.5.10" + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +semver@^5.3.0, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -7402,6 +7798,14 @@ 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" +simple-get@^1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" + dependencies: + once "^1.3.1" + unzip-response "^1.0.0" + xtend "^4.0.0" + single-line-log@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364" @@ -7492,6 +7896,12 @@ source-map-support@^0.4.15, source-map-support@^0.4.2: dependencies: source-map "^0.5.6" +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" + dependencies: + source-map "^0.6.0" + source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" @@ -7512,6 +7922,10 @@ source-map@^0.4.2, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" @@ -7684,10 +8098,6 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^3.0.0" -string.prototype.codepointat@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78" - string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -7734,7 +8144,7 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -7870,6 +8280,12 @@ supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-co dependencies: has-flag "^1.0.0" +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" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -7930,6 +8346,15 @@ tapable@^0.2.5, tapable@~0.2.5: version "0.2.6" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" +tar-fs@^1.13.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896" + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + tar-pack@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" @@ -7943,7 +8368,7 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar-stream@^1.5.0: +tar-stream@^1.1.2, tar-stream@^1.5.0: version "1.5.4" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016" dependencies: @@ -7960,18 +8385,20 @@ tar@^2.0.0, tar@^2.2.1: fstream "^1.0.2" inherits "2" -tempfile@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" +temp-file@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-2.0.3.tgz#0de2540629fc77a6406ca56f50214d1f224947ac" dependencies: - os-tmpdir "^1.0.0" - uuid "^2.0.1" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.3" + fs-extra-p "^4.4.0" + lazy-val "^1.0.2" -term-size@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-0.1.1.tgz#87360b96396cab5760963714cda0d0cbeecad9ca" +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" dependencies: - execa "^0.4.0" + execa "^0.7.0" test-exclude@^4.1.0: version "4.1.0" @@ -8044,6 +8471,10 @@ timers-browserify@^2.0.2: dependencies: setimmediate "^1.0.4" +tiny-emitter@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" + tmp@^0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" @@ -8194,6 +8625,10 @@ unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +unzip-response@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" @@ -8209,16 +8644,17 @@ unzip@^0.1.11: readable-stream "~1.0.31" setimmediate ">= 1.0.1 < 2" -update-notifier@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9" +update-notifier@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" dependencies: - boxen "^1.0.0" - chalk "^1.0.0" + boxen "^1.2.1" + chalk "^2.0.1" configstore "^3.0.0" + import-lazy "^2.1.0" + is-installed-globally "^0.1.0" is-npm "^1.0.0" latest-version "^3.0.0" - lazy-req "^2.0.0" semver-diff "^2.0.0" xdg-basedir "^3.0.0" @@ -8296,12 +8732,6 @@ utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" -uuid-1345@^0.99.6: - version "0.99.6" - resolved "https://registry.yarnpkg.com/uuid-1345/-/uuid-1345-0.99.6.tgz#b1270ae015a7721c7adec6c46ec169c6098aed40" - dependencies: - macaddress "^0.2.7" - uuid@^2.0.1, uuid@^2.0.2, uuid@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" @@ -8347,12 +8777,26 @@ vinyl@^0.5.0: clone-stats "^0.0.1" replace-ext "0.0.1" +vis@^4.18.1: + version "4.20.1" + resolved "https://registry.yarnpkg.com/vis/-/vis-4.20.1.tgz#67e92edafe72da63b15c9302991af9edf2f86619" + dependencies: + emitter-component "^1.1.1" + hammerjs "^2.0.8" + keycharm "^0.2.0" + moment "^2.18.1" + propagating-hammerjs "^1.4.6" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" dependencies: indexof "0.0.1" +w3c-blob@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/w3c-blob/-/w3c-blob-0.0.1.tgz#b0cd352a1a50f515563420ffd5861f950f1d85b8" + walkdir@^0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" @@ -8562,7 +9006,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.2.11, which@^1.2.12, which@^1.2.8, which@^1.2.9: +which@1, which@^1.2.11, which@^1.2.12, which@^1.2.9: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: @@ -8647,6 +9091,12 @@ xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" +xelement@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/xelement/-/xelement-1.0.16.tgz#900bb46c20fc2dffadff778a9d2dc36699d0ff7e" + dependencies: + sax "^1.2.1" + xml-char-classes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" @@ -8663,7 +9113,7 @@ xmldom@0.1.x: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: +xtend@4.0.1, "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -8777,9 +9227,9 @@ yargs@^7.0.2: y18n "^3.2.1" yargs-parser "^5.0.0" -yargs@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa" +yargs@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" dependencies: camelcase "^4.1.0" cliui "^3.2.0" From 58c21c3e43907765efdfbecf979f74437ecce6b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Thu, 19 Oct 2017 11:50:06 +0200 Subject: [PATCH 05/14] Changed icons in `SideMenu`, added new sidebar --- app/actions/layout.js | 14 ++++++++++++++ app/components/App.js | 19 ++++++++++++++++--- app/components/SideMenu.js | 11 ++++++++++- app/reducers/layout.js | 18 +++++++++++++++--- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/app/actions/layout.js b/app/actions/layout.js index bce057b..72d45bf 100644 --- a/app/actions/layout.js +++ b/app/actions/layout.js @@ -15,6 +15,8 @@ export const CLOSE_NODE_WINDOW = 'CLOSE_NODE_WINDOW'; export const OPEN_WINDOW = 'OPEN_WINDOW'; export const CLOSE_WINDOW = 'CLOSE_WINDOW'; export const OPEN_VISUALIZATION = 'OPEN_VISUALIZATION'; +export const OPEN_TOOLBOX = 'OPEN_TOOLBOX'; +export const CLOSE_TOOLBOX = 'CLOSE_TOOLBOX'; export const TOGGLE_PHYSICS = 'TOGGLE_PHYSICS'; type actionType = { @@ -69,6 +71,18 @@ export function openVisualization() { }; } +export function openToolbox() { + return (dispatch: (action: actionType) => void) => { + dispatch({ type: OPEN_TOOLBOX }); + }; +} + +export function closeToolbox() { + return (dispatch: (action: actionType) => void) => { + dispatch({ type: CLOSE_TOOLBOX }); + }; +} + export function error(errorMessage: string, title: string = 'Error occured') { const buttons = [{ label: 'Got it', action: CLEAR_ERRORS }, { label: 'Report', action: REPORT_ERROR }]; diff --git a/app/components/App.js b/app/components/App.js index 5fd97b7..1f85ad9 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -17,6 +17,7 @@ export default class App extends Component { changeView: () => void, openSettings: () => void, openVisualization: () => void, + openToolbox: () => void, toggleHierarchicalLayout: () => void, togglePhysics(): () => void, children: Children, @@ -39,7 +40,8 @@ export default class App extends Component { changeView={this.props.changeView} currentView={this.props.currentView} openSettings={this.props.openSettings} - openVisualization={this.props.openVisualization} /> + openVisualization={this.props.openVisualization} + openToolbox={this.props.openToolbox} /> - this.props.toggleHierarchicalLayout()} /> - this.props.togglePhysics()} /> + +
+ + Toolbox + + Build & customize a template + +
+ +
this.props.dispatchButtonClick(action)} isNodeWindowOpen={this.props.layout.isNodeWindowOpen} @@ -72,6 +82,9 @@ export default class App extends Component { {this.props.children} + + + ); } diff --git a/app/components/SideMenu.js b/app/components/SideMenu.js index c8acdff..f7c1f9f 100644 --- a/app/components/SideMenu.js +++ b/app/components/SideMenu.js @@ -8,6 +8,7 @@ export default class SideMenu extends Component { props: { openSettings: () => void, openVisualization: () => void, + openToolbox: () => void, currentView: string } @@ -22,9 +23,17 @@ export default class SideMenu extends Component { position="right center" size="mini" /> + this.props.openToolbox()}> + + } + content="Toolbox" + position="right center" + size="mini" + /> - + } content="Editor" position="right center" diff --git a/app/reducers/layout.js b/app/reducers/layout.js index e626039..7e09975 100644 --- a/app/reducers/layout.js +++ b/app/reducers/layout.js @@ -12,7 +12,9 @@ import { CLOSE_NODE_WINDOW, OPEN_WINDOW, CLOSE_WINDOW, - TOGGLE_PHYSICS + TOGGLE_PHYSICS, + OPEN_TOOLBOX, + CLOSE_TOOLBOX } from '../actions/layout'; import Window from '../types/window'; @@ -33,7 +35,8 @@ type layoutStateType = { nodes: Array, activeWindow: string, window: Window, - physicsEnabled: boolean + physicsEnabled: boolean, + isToolboxOpen: boolean }; const initialState = { @@ -49,7 +52,8 @@ const initialState = { nodes: [], activeWindow: '', window: {}, - physicsEnabled: true + physicsEnabled: true, + isToolboxOpen: false }; export default function layout(state: layoutStateType = initialState, action: actionType) { @@ -120,6 +124,14 @@ export default function layout(state: layoutStateType = initialState, action: ac return Object.assign({}, state, { physicsEnabled: !state.physicsEnabled }); + case OPEN_TOOLBOX: + return Object.assign({}, state, { + isToolboxOpen: true + }); + case CLOSE_TOOLBOX: + return Object.assign({}, state, { + isToolboxOpen: false + }); default: return state; } From be6c9da8a231bd01ffcc0a57f70499c4f99b077a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Thu, 19 Oct 2017 14:37:45 +0200 Subject: [PATCH 06/14] Added a few components to `Toolbox`, which will introduce drag'n'drop --- app/components/App.js | 12 +--- app/components/Toolbox.css | 8 +++ app/components/Toolbox.js | 131 +++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+), 10 deletions(-) create mode 100644 app/components/Toolbox.css create mode 100644 app/components/Toolbox.js diff --git a/app/components/App.js b/app/components/App.js index 1f85ad9..7bd840a 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -7,6 +7,7 @@ import Alert from './Alert'; import ProgressBar from './Progress'; import StatusBar from './StatusBar'; import RightSidebar from './RightSidebar'; +import Toolbox from './Toolbox'; import CustomWindow from './Window'; import { Resource } from '../types/template'; import styles from './App.css'; // eslint-disable-line flowtype-errors/show-errors @@ -63,16 +64,7 @@ export default class App extends Component { - -
- - Toolbox - - Build & customize a template - -
- -
+ this.props.dispatchButtonClick(action)} isToolboxOpen={this.props.layout.isToolboxOpen} /> this.props.dispatchButtonClick(action)} isNodeWindowOpen={this.props.layout.isNodeWindowOpen} diff --git a/app/components/Toolbox.css b/app/components/Toolbox.css new file mode 100644 index 0000000..5d66945 --- /dev/null +++ b/app/components/Toolbox.css @@ -0,0 +1,8 @@ +.toolbox { + color: #fff !important; + padding-left: 10px; + padding-right: 10px; + padding-top: 10px; + text-align: center; + background-color: #586f80; +} diff --git a/app/components/Toolbox.js b/app/components/Toolbox.js new file mode 100644 index 0000000..1c1a6be --- /dev/null +++ b/app/components/Toolbox.js @@ -0,0 +1,131 @@ +// @flow +import React, { Component } from 'react'; +import type { Children } from 'react'; +import { Sidebar, Button, Form, Header, Icon, Grid, Image } from 'semantic-ui-react'; +import { remote } from 'electron'; +import styles from './Toolbox.css'; // eslint-disable-line flowtype-errors/show-errors + +export default class Toolbox extends Component { + props: { + dispatchButtonClick: (action: string) => void, + isToolboxOpen: boolean + } + + render() { + return ( +
+ + Toolbox + + Build & customize a template + +
+ + + + + App Service + + + + Web App + + + + + + Application Insights + + + + Storage Account + + + + + + Event Hub + + + + Traffic Manager + + + + + + Notification Hub + + + + Virtual Network + + + +
+ +
); + } + + static findImage(resourceType: string) { + let dir = ''; + if (process.env.NODE_ENV === 'development') { + dir = '../assets/azure/'; + } else { + dir = `${remote.app.getAppPath()}../../assets/azure/`; + } + + switch (resourceType) { + case 'Microsoft.Web/serverfarms': + return `${dir}Azure App Service_COLOR.png`; + case 'Microsoft.Web/sites': + return `${dir}Azure App Service - Web App_COLOR.png`; + case 'Microsoft.Insights/components': + return `${dir}Azure Application Insights_COLOR.png`; + case 'Microsoft.Storage/storageAccounts': + return `${dir}Azure Storage.png`; + case 'Microsoft.EventHub/namespaces': + return `${dir}Azure Event Hubs_COLOR.png`; + case 'Microsoft.Network/trafficManagerProfiles': + return `${dir}Azure Traffic Manager_COLOR.png`; + case 'Microsoft.Network/trafficManagerProfiles/azureEndpoints': + return `${dir}Azure Traffic Manager.png`; + case 'Microsoft.NotificationHubs/namespaces': + return `${dir}Azure Notification Hubs_COLOR.png`; + case 'Microsoft.Resources/deployments': + return `${dir}Unidentified feature object_COLOR.png`; + case 'Microsoft.Network/networkInterfaces': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Network/virtualNetworks': + return `${dir}Azure Virtual Network_COLOR.png`; + case 'Microsoft.Network/publicIpAddresses': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Network/publicIPAddresses': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Network/networkSecurityGroups': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Compute/virtualMachines': + return `${dir}Azure Virtual Machine_COLOR.png`; + case 'Microsoft.Network/applicationGateways': + return `${dir}Azure Application Gateway_COLOR.png`; + case 'Microsoft.Search/searchServices': + return `${dir}Azure Search_COLOR.png`; + case 'Microsoft.ContainerService/containerServices': + return `${dir}Azure Container Service_COLOR.png`; + case 'Microsoft.Web/sites/domainOwnershipIdentifiers': + return `${dir}Azure App Service - Web App (was Websites).png`; + case 'Microsoft.Automation/automationAccounts': + return `${dir}Azure Automation_COLOR.png`; + case 'Microsoft.Compute/availabilitySets': + return `${dir}Azure Virtual Machines - Availability Set_COLOR.png`; + case 'Microsoft.ApiManagement/service': + return `${dir}Azure API Management_COLOR.png`; + case 'Microsoft.Backup/BackupVault/registeredContainers/protectedItems': + return `${dir}Azure Backup_COLOR.png`; + case 'Microsoft.Backup/BackupVault': + return `${dir}Azure Backup - Recovery Vault.png`; + default: + return `${dir}Unidentified feature object_COLOR.png`; + } + } +} From 8cb19e89d77889dead2bf6352f671ff3ab4268e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Thu, 19 Oct 2017 15:26:44 +0200 Subject: [PATCH 07/14] Added `react-dnd` with components integrated with each other --- app/components/App.js | 92 ++++++++++++++------------- app/components/Home.js | 19 +++++- app/components/Toolbox.css | 1 + app/components/Toolbox.js | 80 +++--------------------- app/components/ToolboxComponent.js | 99 ++++++++++++++++++++++++++++++ package.json | 2 + 6 files changed, 175 insertions(+), 118 deletions(-) create mode 100644 app/components/ToolboxComponent.js diff --git a/app/components/App.js b/app/components/App.js index 7bd840a..ee287ba 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -2,6 +2,8 @@ import React, { Component } from 'react'; import type { Children } from 'react'; import { Sidebar, Button, Form, Checkbox, Header, Icon } from 'semantic-ui-react'; +import { DragDropContextProvider } from 'react-dnd' +import HTML5Backend from 'react-dnd-html5-backend' import SideMenu from './SideMenu'; import Alert from './Alert'; import ProgressBar from './Progress'; @@ -31,53 +33,55 @@ export default class App extends Component { render() { return ( -
- - - - - - - -
- - Settings + +
+ + + + + + + +
+ + Settings - Manage graph settings and set preferences. + Manage graph settings and set preferences. -
- -
- this.props.dispatchButtonClick(action)} isToolboxOpen={this.props.layout.isToolboxOpen} /> - this.props.dispatchButtonClick(action)} - isNodeWindowOpen={this.props.layout.isNodeWindowOpen} - nodes={this.props.layout.nodes} - resources={this.props.resources} /> - - {this.props.children} - -
- +
+ +
+ this.props.dispatchButtonClick(action)} isToolboxOpen={this.props.layout.isToolboxOpen} /> + this.props.dispatchButtonClick(action)} + isNodeWindowOpen={this.props.layout.isNodeWindowOpen} + nodes={this.props.layout.nodes} + resources={this.props.resources} /> + + {this.props.children} + +
+ - -
+ + + ); } } diff --git a/app/components/Home.js b/app/components/Home.js index 188fec5..c665c5c 100644 --- a/app/components/Home.js +++ b/app/components/Home.js @@ -1,9 +1,16 @@ // @flow import React, { Component } from 'react'; +import { DropTarget } from 'react-dnd'; import styles from './Home.css'; // eslint-disable-line flowtype-errors/show-errors import Visualization from './Visualization'; -export default class Home extends Component { +const boxTarget = { + drop() { + return { name: 'Dustbin' } + }, +} + +class Home extends Component { props: { openNodeWindow: (nodes: Array) => void, json: Object, @@ -14,7 +21,7 @@ export default class Home extends Component { render() { if (this.props.selectedFilename === '') { - return ( + return this.props.connectDropTarget(
{this.props.selectedFilename === '' ?
@@ -28,7 +35,7 @@ export default class Home extends Component { ); } - return ( + return this.props.connectDropTarget(
({ + connectDropTarget: connect.dropTarget(), + isOver: monitor.isOver(), + canDrop: monitor.canDrop(), +}))(Home) diff --git a/app/components/Toolbox.css b/app/components/Toolbox.css index 5d66945..e15879a 100644 --- a/app/components/Toolbox.css +++ b/app/components/Toolbox.css @@ -1,5 +1,6 @@ .toolbox { color: #fff !important; + left: 70px !important; padding-left: 10px; padding-right: 10px; padding-top: 10px; diff --git a/app/components/Toolbox.js b/app/components/Toolbox.js index 1c1a6be..eeb5644 100644 --- a/app/components/Toolbox.js +++ b/app/components/Toolbox.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import type { Children } from 'react'; import { Sidebar, Button, Form, Header, Icon, Grid, Image } from 'semantic-ui-react'; -import { remote } from 'electron'; +import ToolboxComponent from './ToolboxComponent'; import styles from './Toolbox.css'; // eslint-disable-line flowtype-errors/show-errors export default class Toolbox extends Component { @@ -23,41 +23,41 @@ export default class Toolbox extends Component { - + App Service - + Web App - + Application Insights - + Storage Account - + Event Hub - + Traffic Manager - + Notification Hub - + Virtual Network @@ -66,66 +66,4 @@ export default class Toolbox extends Component { ); } - - static findImage(resourceType: string) { - let dir = ''; - if (process.env.NODE_ENV === 'development') { - dir = '../assets/azure/'; - } else { - dir = `${remote.app.getAppPath()}../../assets/azure/`; - } - - switch (resourceType) { - case 'Microsoft.Web/serverfarms': - return `${dir}Azure App Service_COLOR.png`; - case 'Microsoft.Web/sites': - return `${dir}Azure App Service - Web App_COLOR.png`; - case 'Microsoft.Insights/components': - return `${dir}Azure Application Insights_COLOR.png`; - case 'Microsoft.Storage/storageAccounts': - return `${dir}Azure Storage.png`; - case 'Microsoft.EventHub/namespaces': - return `${dir}Azure Event Hubs_COLOR.png`; - case 'Microsoft.Network/trafficManagerProfiles': - return `${dir}Azure Traffic Manager_COLOR.png`; - case 'Microsoft.Network/trafficManagerProfiles/azureEndpoints': - return `${dir}Azure Traffic Manager.png`; - case 'Microsoft.NotificationHubs/namespaces': - return `${dir}Azure Notification Hubs_COLOR.png`; - case 'Microsoft.Resources/deployments': - return `${dir}Unidentified feature object_COLOR.png`; - case 'Microsoft.Network/networkInterfaces': - return `${dir}Azure Virtual Network.png`; - case 'Microsoft.Network/virtualNetworks': - return `${dir}Azure Virtual Network_COLOR.png`; - case 'Microsoft.Network/publicIpAddresses': - return `${dir}Azure Virtual Network.png`; - case 'Microsoft.Network/publicIPAddresses': - return `${dir}Azure Virtual Network.png`; - case 'Microsoft.Network/networkSecurityGroups': - return `${dir}Azure Virtual Network.png`; - case 'Microsoft.Compute/virtualMachines': - return `${dir}Azure Virtual Machine_COLOR.png`; - case 'Microsoft.Network/applicationGateways': - return `${dir}Azure Application Gateway_COLOR.png`; - case 'Microsoft.Search/searchServices': - return `${dir}Azure Search_COLOR.png`; - case 'Microsoft.ContainerService/containerServices': - return `${dir}Azure Container Service_COLOR.png`; - case 'Microsoft.Web/sites/domainOwnershipIdentifiers': - return `${dir}Azure App Service - Web App (was Websites).png`; - case 'Microsoft.Automation/automationAccounts': - return `${dir}Azure Automation_COLOR.png`; - case 'Microsoft.Compute/availabilitySets': - return `${dir}Azure Virtual Machines - Availability Set_COLOR.png`; - case 'Microsoft.ApiManagement/service': - return `${dir}Azure API Management_COLOR.png`; - case 'Microsoft.Backup/BackupVault/registeredContainers/protectedItems': - return `${dir}Azure Backup_COLOR.png`; - case 'Microsoft.Backup/BackupVault': - return `${dir}Azure Backup - Recovery Vault.png`; - default: - return `${dir}Unidentified feature object_COLOR.png`; - } - } } diff --git a/app/components/ToolboxComponent.js b/app/components/ToolboxComponent.js new file mode 100644 index 0000000..cf53523 --- /dev/null +++ b/app/components/ToolboxComponent.js @@ -0,0 +1,99 @@ +// @flow +import React, { Component } from 'react'; +import type { Children } from 'react'; +import { remote } from 'electron'; +import { Image } from 'semantic-ui-react'; +import { DragSource } from 'react-dnd'; + +const boxSource = { + beginDrag(props) { + return { + name: props.name, + } + }, + + endDrag(props, monitor) { + const item = monitor.getItem() + const dropResult = monitor.getDropResult() + if (dropResult) { + alert(`You dropped ${item.name} into ${dropResult.name}!`) // eslint-disable-line no-alert + } + }, +} + +class ToolboxComponent extends Component { + props: { + resourceType: string + } + + render() { + return this.props.connectDragSource(
); + } + + static findImage(resourceType: string) { + let dir = ''; + if (process.env.NODE_ENV === 'development') { + dir = '../assets/azure/'; + } else { + dir = `${remote.app.getAppPath()}../../assets/azure/`; + } + + switch (resourceType) { + case 'Microsoft.Web/serverfarms': + return `${dir}Azure App Service_COLOR.png`; + case 'Microsoft.Web/sites': + return `${dir}Azure App Service - Web App_COLOR.png`; + case 'Microsoft.Insights/components': + return `${dir}Azure Application Insights_COLOR.png`; + case 'Microsoft.Storage/storageAccounts': + return `${dir}Azure Storage.png`; + case 'Microsoft.EventHub/namespaces': + return `${dir}Azure Event Hubs_COLOR.png`; + case 'Microsoft.Network/trafficManagerProfiles': + return `${dir}Azure Traffic Manager_COLOR.png`; + case 'Microsoft.Network/trafficManagerProfiles/azureEndpoints': + return `${dir}Azure Traffic Manager.png`; + case 'Microsoft.NotificationHubs/namespaces': + return `${dir}Azure Notification Hubs_COLOR.png`; + case 'Microsoft.Resources/deployments': + return `${dir}Unidentified feature object_COLOR.png`; + case 'Microsoft.Network/networkInterfaces': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Network/virtualNetworks': + return `${dir}Azure Virtual Network_COLOR.png`; + case 'Microsoft.Network/publicIpAddresses': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Network/publicIPAddresses': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Network/networkSecurityGroups': + return `${dir}Azure Virtual Network.png`; + case 'Microsoft.Compute/virtualMachines': + return `${dir}Azure Virtual Machine_COLOR.png`; + case 'Microsoft.Network/applicationGateways': + return `${dir}Azure Application Gateway_COLOR.png`; + case 'Microsoft.Search/searchServices': + return `${dir}Azure Search_COLOR.png`; + case 'Microsoft.ContainerService/containerServices': + return `${dir}Azure Container Service_COLOR.png`; + case 'Microsoft.Web/sites/domainOwnershipIdentifiers': + return `${dir}Azure App Service - Web App (was Websites).png`; + case 'Microsoft.Automation/automationAccounts': + return `${dir}Azure Automation_COLOR.png`; + case 'Microsoft.Compute/availabilitySets': + return `${dir}Azure Virtual Machines - Availability Set_COLOR.png`; + case 'Microsoft.ApiManagement/service': + return `${dir}Azure API Management_COLOR.png`; + case 'Microsoft.Backup/BackupVault/registeredContainers/protectedItems': + return `${dir}Azure Backup_COLOR.png`; + case 'Microsoft.Backup/BackupVault': + return `${dir}Azure Backup - Recovery Vault.png`; + default: + return `${dir}Unidentified feature object_COLOR.png`; + } + } +} + +export default DragSource('Component', boxSource, (connect, monitor) => ({ + connectDragSource: connect.dragSource(), + isDragging: monitor.isDragging(), +}))(ToolboxComponent) diff --git a/package.json b/package.json index e0d5b4a..d8cde80 100644 --- a/package.json +++ b/package.json @@ -188,6 +188,8 @@ "history": "^4.6.1", "react": "^15.5.4", "react-ace": "^5.2.0", + "react-dnd": "^2.5.4", + "react-dnd-html5-backend": "^2.5.4", "react-dom": "^15.5.4", "react-graph-vis": "^0.1.2", "react-hot-loader": "3.0.0-beta.6", From 03dadcda938692ff453b37f355b864b24a6b6384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Thu, 19 Oct 2017 15:48:31 +0200 Subject: [PATCH 08/14] #36 - full infrastructure for drag'n'drop of resources is prepared and working --- app/actions/layout.js | 8 ++++++++ app/components/App.js | 8 ++++++-- app/components/Toolbox.js | 13 +++++++------ app/components/ToolboxComponent.js | 9 +++++---- app/reducers/fileDialog.js | 6 +++++- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/app/actions/layout.js b/app/actions/layout.js index 72d45bf..d4dda0c 100644 --- a/app/actions/layout.js +++ b/app/actions/layout.js @@ -18,6 +18,7 @@ export const OPEN_VISUALIZATION = 'OPEN_VISUALIZATION'; export const OPEN_TOOLBOX = 'OPEN_TOOLBOX'; export const CLOSE_TOOLBOX = 'CLOSE_TOOLBOX'; export const TOGGLE_PHYSICS = 'TOGGLE_PHYSICS'; +export const ADD_RESOURCE = 'ADD_RESOURCE'; type actionType = { type: string @@ -120,3 +121,10 @@ export function closeWindow() { type: CLOSE_WINDOW }; } + +export function addResource(resourceType: string) { + return (dispatch: (action: actionType) => void) => { + dispatch({ type: ADD_RESOURCE, resourceType }); + }; +} + diff --git a/app/components/App.js b/app/components/App.js index ee287ba..3a3a8b6 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -22,7 +22,8 @@ export default class App extends Component { openVisualization: () => void, openToolbox: () => void, toggleHierarchicalLayout: () => void, - togglePhysics(): () => void, + togglePhysics: () => void, + addResource: (resourceType: string) => void, children: Children, resources: Array, layout: Object, @@ -67,7 +68,10 @@ export default class App extends Component { - this.props.dispatchButtonClick(action)} isToolboxOpen={this.props.layout.isToolboxOpen} /> + this.props.dispatchButtonClick(action)} + addResource={(type) => this.props.addResource(type)} + isToolboxOpen={this.props.layout.isToolboxOpen} /> this.props.dispatchButtonClick(action)} isNodeWindowOpen={this.props.layout.isNodeWindowOpen} diff --git a/app/components/Toolbox.js b/app/components/Toolbox.js index eeb5644..60b2730 100644 --- a/app/components/Toolbox.js +++ b/app/components/Toolbox.js @@ -8,6 +8,7 @@ import styles from './Toolbox.css'; // eslint-disable-line flowtype-errors/show- export default class Toolbox extends Component { props: { dispatchButtonClick: (action: string) => void, + addResource: (resourceType: string) => void, isToolboxOpen: boolean } @@ -23,31 +24,31 @@ export default class Toolbox extends Component { - + this.props.addResource(type)} /> App Service - + this.props.addResource(type)} /> Web App - + this.props.addResource(type)} /> Application Insights - + this.props.addResource(type)} /> Storage Account - + this.props.addResource(type)} /> Event Hub - + this.props.addResource(type)} /> Traffic Manager diff --git a/app/components/ToolboxComponent.js b/app/components/ToolboxComponent.js index cf53523..31e0bb3 100644 --- a/app/components/ToolboxComponent.js +++ b/app/components/ToolboxComponent.js @@ -5,7 +5,7 @@ import { remote } from 'electron'; import { Image } from 'semantic-ui-react'; import { DragSource } from 'react-dnd'; -const boxSource = { +const componentSource = { beginDrag(props) { return { name: props.name, @@ -13,16 +13,17 @@ const boxSource = { }, endDrag(props, monitor) { - const item = monitor.getItem() const dropResult = monitor.getDropResult() + if (dropResult) { - alert(`You dropped ${item.name} into ${dropResult.name}!`) // eslint-disable-line no-alert + props.addResource(props.resourceType); } }, } class ToolboxComponent extends Component { props: { + addResource: (resourceType: string) => void, resourceType: string } @@ -93,7 +94,7 @@ class ToolboxComponent extends Component { } } -export default DragSource('Component', boxSource, (connect, monitor) => ({ +export default DragSource('Component', componentSource, (connect, monitor) => ({ connectDragSource: connect.dragSource(), isDragging: monitor.isDragging(), }))(ToolboxComponent) diff --git a/app/reducers/fileDialog.js b/app/reducers/fileDialog.js index 7959aa7..48abb27 100644 --- a/app/reducers/fileDialog.js +++ b/app/reducers/fileDialog.js @@ -1,7 +1,7 @@ // @flow import { OPEN_FILE, SAVE_FILE, GENERATE_IMAGE } from '../actions/fileDialog'; import { SET_TEMPLATE } from '../actions/editor'; -import { OPEN_VISUALIZATION, CLEAR_ERRORS } from '../actions/layout'; +import { OPEN_VISUALIZATION, CLEAR_ERRORS, ADD_RESOURCE } from '../actions/layout'; import TemplateParser from '../parsers/templateParser'; import { Template } from '../types/template'; @@ -100,6 +100,10 @@ export default function fileDialog(state: fileDialogStateType = initialState, ac title: '', isError: false }); + case ADD_RESOURCE: { + return Object.assign({}, state, { + }); + } default: { return state; } From 925774a1754fd36b5e735ef12a5b3532cc5e5838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Fri, 20 Oct 2017 11:01:25 +0200 Subject: [PATCH 09/14] Refactored `Toolbox` a little so now it's easier to add new resources --- app/components/Toolbox.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/app/components/Toolbox.js b/app/components/Toolbox.js index 60b2730..b37929d 100644 --- a/app/components/Toolbox.js +++ b/app/components/Toolbox.js @@ -54,11 +54,11 @@ export default class Toolbox extends Component { - + this.props.addResource(type)} /> Notification Hub - + this.props.addResource(type)} /> Virtual Network @@ -67,4 +67,32 @@ export default class Toolbox extends Component { ); } + + generateGrid() { + const types = [ + { type: 'Microsoft.Web/serverfarms', name: 'App Service' }, + { type: 'Microsoft.Web/sites', name: 'Web App' }, + { type: 'Microsoft.Insights/components', name: 'Application Insights' }, + { type: 'Microsoft.Storage/storageAccounts', name: 'Storage Account' }, + { type: 'Microsoft.EventHub/namespaces', name: 'Event Hub' }, + { type: 'Microsoft.Network/trafficManagerProfiles', name: 'Traffic Manager' }, + { type: 'Microsoft.NotificationHubs/namespaces', name: 'Notification Hub' }, + { type: 'Microsoft.Network/networkInterfaces', name: 'Virtual Network' }]; + + let grid = ''; + for (let i = 0; i <= types.length - 1; i += 1) { + grid += + + this.props.addResource(type)} /> + {types[i].name} + + + this.props.addResource(type)} /> + {types[i + 1].name} + + + } + + return grid; + } } From 273550e4e131229ae8947404a14f96a4a9f66209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Fri, 20 Oct 2017 11:42:38 +0200 Subject: [PATCH 10/14] Initial version of toolbox with working adding resources to visualization --- app/components/App.js | 11 +-- app/components/Home.js | 10 +- app/components/Toolbox.js | 92 ++++++------------- app/components/ToolboxComponent.js | 19 ++-- app/reducers/fileDialog.js | 9 ++ app/utils/uuid.js | 11 +++ test/components/Home.spec.js | 21 ----- .../__snapshots__/layout.spec.js.snap | 1 + 8 files changed, 66 insertions(+), 108 deletions(-) create mode 100644 app/utils/uuid.js delete mode 100644 test/components/Home.spec.js diff --git a/app/components/App.js b/app/components/App.js index 3a3a8b6..2a0ab59 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -1,9 +1,9 @@ // @flow import React, { Component } from 'react'; import type { Children } from 'react'; -import { Sidebar, Button, Form, Checkbox, Header, Icon } from 'semantic-ui-react'; -import { DragDropContextProvider } from 'react-dnd' -import HTML5Backend from 'react-dnd-html5-backend' +import { Sidebar, Button, Form, Header, Icon } from 'semantic-ui-react'; +import { DragDropContextProvider } from 'react-dnd'; +import HTML5Backend from 'react-dnd-html5-backend'; import SideMenu from './SideMenu'; import Alert from './Alert'; import ProgressBar from './Progress'; @@ -21,8 +21,6 @@ export default class App extends Component { openSettings: () => void, openVisualization: () => void, openToolbox: () => void, - toggleHierarchicalLayout: () => void, - togglePhysics: () => void, addResource: (resourceType: string) => void, children: Children, resources: Array, @@ -81,9 +79,6 @@ export default class App extends Component { {this.props.children} - - -
); diff --git a/app/components/Home.js b/app/components/Home.js index c665c5c..8ddc0a1 100644 --- a/app/components/Home.js +++ b/app/components/Home.js @@ -6,9 +6,9 @@ import Visualization from './Visualization'; const boxTarget = { drop() { - return { name: 'Dustbin' } + return { name: 'Dustbin' }; }, -} +}; class Home extends Component { props: { @@ -21,7 +21,7 @@ class Home extends Component { render() { if (this.props.selectedFilename === '') { - return this.props.connectDropTarget( + return this.props.connectDropTarget( // eslint-disable-line react/prop-types
{this.props.selectedFilename === '' ?
@@ -35,7 +35,7 @@ class Home extends Component { ); } - return this.props.connectDropTarget( + return this.props.connectDropTarget( // eslint-disable-line react/prop-types
({ connectDropTarget: connect.dropTarget(), isOver: monitor.isOver(), canDrop: monitor.canDrop(), -}))(Home) +}))(Home); diff --git a/app/components/Toolbox.js b/app/components/Toolbox.js index b37929d..a9bbece 100644 --- a/app/components/Toolbox.js +++ b/app/components/Toolbox.js @@ -1,7 +1,6 @@ // @flow import React, { Component } from 'react'; -import type { Children } from 'react'; -import { Sidebar, Button, Form, Header, Icon, Grid, Image } from 'semantic-ui-react'; +import { Sidebar, Button, Form, Header, Icon, Grid } from 'semantic-ui-react'; import ToolboxComponent from './ToolboxComponent'; import styles from './Toolbox.css'; // eslint-disable-line flowtype-errors/show-errors @@ -12,62 +11,6 @@ export default class Toolbox extends Component { isToolboxOpen: boolean } - render() { - return ( -
- - Toolbox - - Build & customize a template - -
- - - - this.props.addResource(type)} /> - App Service - - - this.props.addResource(type)} /> - Web App - - - - - this.props.addResource(type)} /> - Application Insights - - - this.props.addResource(type)} /> - Storage Account - - - - - this.props.addResource(type)} /> - Event Hub - - - this.props.addResource(type)} /> - Traffic Manager - - - - - this.props.addResource(type)} /> - Notification Hub - - - this.props.addResource(type)} /> - Virtual Network - - - -
- -
); - } - generateGrid() { const types = [ { type: 'Microsoft.Web/serverfarms', name: 'App Service' }, @@ -79,20 +22,41 @@ export default class Toolbox extends Component { { type: 'Microsoft.NotificationHubs/namespaces', name: 'Notification Hub' }, { type: 'Microsoft.Network/networkInterfaces', name: 'Virtual Network' }]; - let grid = ''; - for (let i = 0; i <= types.length - 1; i += 1) { - grid += + const grid = []; + for (let i = 0; i <= types.length - 1; i += 2) { + grid.push( - this.props.addResource(type)} /> + this.props.addResource(type)} /> {types[i].name} - this.props.addResource(type)} /> + this.props.addResource(type)} /> {types[i + 1].name} - + ); } return grid; } + + render() { + return ( +
+ + Toolbox + + Build & customize a template + +
+ + {this.generateGrid()} + +
+ +
); + } } diff --git a/app/components/ToolboxComponent.js b/app/components/ToolboxComponent.js index 31e0bb3..8e92813 100644 --- a/app/components/ToolboxComponent.js +++ b/app/components/ToolboxComponent.js @@ -1,6 +1,5 @@ // @flow import React, { Component } from 'react'; -import type { Children } from 'react'; import { remote } from 'electron'; import { Image } from 'semantic-ui-react'; import { DragSource } from 'react-dnd'; @@ -9,28 +8,24 @@ const componentSource = { beginDrag(props) { return { name: props.name, - } + }; }, endDrag(props, monitor) { - const dropResult = monitor.getDropResult() + const dropResult = monitor.getDropResult(); if (dropResult) { props.addResource(props.resourceType); } }, -} +}; class ToolboxComponent extends Component { props: { - addResource: (resourceType: string) => void, + addResource: (resourceType: string) => void, // eslint-disable-line react/no-unused-prop-types resourceType: string } - render() { - return this.props.connectDragSource(
); - } - static findImage(resourceType: string) { let dir = ''; if (process.env.NODE_ENV === 'development') { @@ -92,9 +87,13 @@ class ToolboxComponent extends Component { return `${dir}Unidentified feature object_COLOR.png`; } } + + render() { + return this.props.connectDragSource(
); // eslint-disable-line react/prop-types + } } export default DragSource('Component', componentSource, (connect, monitor) => ({ connectDragSource: connect.dragSource(), isDragging: monitor.isDragging(), -}))(ToolboxComponent) +}))(ToolboxComponent); diff --git a/app/reducers/fileDialog.js b/app/reducers/fileDialog.js index 48abb27..b6b95e7 100644 --- a/app/reducers/fileDialog.js +++ b/app/reducers/fileDialog.js @@ -4,6 +4,7 @@ import { SET_TEMPLATE } from '../actions/editor'; import { OPEN_VISUALIZATION, CLEAR_ERRORS, ADD_RESOURCE } from '../actions/layout'; import TemplateParser from '../parsers/templateParser'; import { Template } from '../types/template'; +import Uuid from '../utils/uuid'; const fs = require('fs'); @@ -101,7 +102,15 @@ export default function fileDialog(state: fileDialogStateType = initialState, ac isError: false }); case ADD_RESOURCE: { + state.fileData.resources.push({ + id: Uuid.uuidv4(), + displayName: action.resourceType, + name: action.resourceType, + dependsOn: [], + type: action.resourceType + }); return Object.assign({}, state, { + fileData: state.fileData }); } default: { diff --git a/app/utils/uuid.js b/app/utils/uuid.js new file mode 100644 index 0000000..da5d1a8 --- /dev/null +++ b/app/utils/uuid.js @@ -0,0 +1,11 @@ +// @flow +/* eslint-disable */ + +export default class Uuid { + static uuidv4() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + } +} diff --git a/test/components/Home.spec.js b/test/components/Home.spec.js deleted file mode 100644 index 47e2f02..0000000 --- a/test/components/Home.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; -import Home from '../../app/components/Home'; - -function setupBOM() { - const data = '\uFEFF{}'; - const actions = { - }; - const component = shallow(); - return { - component, - actions - }; -} - -describe('Home component', () => { - it('should throw no error if file content contains BOM', () => { - setupBOM(); - expect('1').toMatch('1'); - }); -}); diff --git a/test/reducers/__snapshots__/layout.spec.js.snap b/test/reducers/__snapshots__/layout.spec.js.snap index 475684f..c3e0e25 100644 --- a/test/reducers/__snapshots__/layout.spec.js.snap +++ b/test/reducers/__snapshots__/layout.spec.js.snap @@ -36,6 +36,7 @@ Object { "isError": false, "isNodeWindowOpen": false, "isSettingsWindowOpen": false, + "isToolboxOpen": false, "message": "", "nodes": Array [], "physicsEnabled": true, From 0335a0aa1bc7d72a5f1f514abe5613071aa7a833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Wed, 25 Oct 2017 11:46:13 +0200 Subject: [PATCH 11/14] #36 - added new resources to the toolbox, fixed a visualization when template is not loaded and one tries to create it by dragging resources --- app/components/Toolbox.js | 10 +++++-- app/reducers/fileDialog.js | 1 + yarn.lock | 61 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/app/components/Toolbox.js b/app/components/Toolbox.js index a9bbece..b797289 100644 --- a/app/components/Toolbox.js +++ b/app/components/Toolbox.js @@ -20,11 +20,17 @@ export default class Toolbox extends Component { { type: 'Microsoft.EventHub/namespaces', name: 'Event Hub' }, { type: 'Microsoft.Network/trafficManagerProfiles', name: 'Traffic Manager' }, { type: 'Microsoft.NotificationHubs/namespaces', name: 'Notification Hub' }, - { type: 'Microsoft.Network/networkInterfaces', name: 'Virtual Network' }]; + { type: 'Microsoft.Network/networkInterfaces', name: 'Virtual Network' }, + { type: 'Microsoft.Compute/virtualMachines', name: 'Virtual Machine' }, + { type: 'Microsoft.Search/searchServices', name: 'Azure Search' }, + { type: 'Microsoft.Compute/virtualMachines', name: 'Virtual Machine' }, + { type: 'Microsoft.Network/applicationGateways', name: 'Application Gateway' }, + { type: 'Microsoft.ApiManagement/service', name: 'API Management' }, + { type: 'Microsoft.Backup/BackupVault', name: 'Azure Backup' }]; const grid = []; for (let i = 0; i <= types.length - 1; i += 2) { - grid.push( + grid.push( Date: Wed, 25 Oct 2017 11:58:35 +0200 Subject: [PATCH 12/14] #36 - resources added from a toolbox are now added also to JSON --- app/reducers/fileDialog.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/reducers/fileDialog.js b/app/reducers/fileDialog.js index a5a97e0..32d7831 100644 --- a/app/reducers/fileDialog.js +++ b/app/reducers/fileDialog.js @@ -111,7 +111,8 @@ export default function fileDialog(state: fileDialogStateType = initialState, ac }); return Object.assign({}, state, { selectedFilename: 'EDITED TEMPLATE', - fileData: state.fileData + fileData: state.fileData, + rawJson: JSON.stringify(state.fileData, null, "\t") }); } default: { From b469eb8c6c5d85ac351d72c7e25e8925c8b3f9d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Wed, 25 Oct 2017 12:10:12 +0200 Subject: [PATCH 13/14] #36 - changed the way how resource `id` is created when it comes from the toolbox --- app/reducers/fileDialog.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/reducers/fileDialog.js b/app/reducers/fileDialog.js index 32d7831..f9b6f9a 100644 --- a/app/reducers/fileDialog.js +++ b/app/reducers/fileDialog.js @@ -103,7 +103,7 @@ export default function fileDialog(state: fileDialogStateType = initialState, ac }); case ADD_RESOURCE: { state.fileData.resources.push({ - id: Uuid.uuidv4(), + id: `${action.resourceType}${Uuid.uuidv4()}`, displayName: action.resourceType, name: action.resourceType, dependsOn: [], @@ -112,7 +112,7 @@ export default function fileDialog(state: fileDialogStateType = initialState, ac return Object.assign({}, state, { selectedFilename: 'EDITED TEMPLATE', fileData: state.fileData, - rawJson: JSON.stringify(state.fileData, null, "\t") + rawJson: JSON.stringify(state.fileData, null, '\t') }); } default: { From 0c624b7ebd2b24a68490adcbf559ffbb441da110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Mrzyg=C5=82=C3=B3d?= Date: Wed, 25 Oct 2017 12:22:34 +0200 Subject: [PATCH 14/14] Bump version, bug fix --- app/components/App.js | 6 +++++- app/package.json | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/components/App.js b/app/components/App.js index 2a0ab59..fd38774 100644 --- a/app/components/App.js +++ b/app/components/App.js @@ -1,7 +1,7 @@ // @flow import React, { Component } from 'react'; import type { Children } from 'react'; -import { Sidebar, Button, Form, Header, Icon } from 'semantic-ui-react'; +import { Sidebar, Button, Form, Header, Icon, Checkbox } from 'semantic-ui-react'; import { DragDropContextProvider } from 'react-dnd'; import HTML5Backend from 'react-dnd-html5-backend'; import SideMenu from './SideMenu'; @@ -22,6 +22,8 @@ export default class App extends Component { openVisualization: () => void, openToolbox: () => void, addResource: (resourceType: string) => void, + toggleHierarchicalLayout: () => void, + togglePhysics: () => void, children: Children, resources: Array, layout: Object, @@ -64,6 +66,8 @@ export default class App extends Component { Manage graph settings and set preferences. + this.props.toggleHierarchicalLayout()} /> + this.props.togglePhysics()} />