From 38737cf912ac5b60445ef6a9122fd6167ff2b0b7 Mon Sep 17 00:00:00 2001 From: czystyl Date: Sat, 14 Sep 2019 23:11:13 +0200 Subject: [PATCH 1/7] Init work on dashboard --- package.json | 1 + packages/dashboard/Client.js | 39 ++++ packages/dashboard/Common.js | 40 ++++ packages/dashboard/Nars.js | 40 ++++ packages/dashboard/NarsClient.js | 41 ++++ packages/dashboard/NarsCommon.js | 41 ++++ packages/dashboard/Server.js | 40 ++++ packages/dashboard/app.js | 51 ++++ packages/dashboard/package.json | 26 +++ packages/dashboard/run.js | 5 + packages/nars/src/ComponentRegistry.rei | 2 +- yarn.lock | 297 ++++++++++++++++++++++-- 12 files changed, 599 insertions(+), 24 deletions(-) create mode 100644 packages/dashboard/Client.js create mode 100644 packages/dashboard/Common.js create mode 100644 packages/dashboard/Nars.js create mode 100644 packages/dashboard/NarsClient.js create mode 100644 packages/dashboard/NarsCommon.js create mode 100644 packages/dashboard/Server.js create mode 100644 packages/dashboard/app.js create mode 100644 packages/dashboard/package.json create mode 100644 packages/dashboard/run.js diff --git a/package.json b/package.json index 98ce54e9..9ad2cf8c 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "workspaces": [ "packages/nars", + "packages/dashboard", "packages/nars-common", "packages/nars-client", "packages/reason-react-reconciler", diff --git a/packages/dashboard/Client.js b/packages/dashboard/Client.js new file mode 100644 index 00000000..1bd17fc9 --- /dev/null +++ b/packages/dashboard/Client.js @@ -0,0 +1,39 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class Client extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-client"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/Common.js b/packages/dashboard/Common.js new file mode 100644 index 00000000..6b0e1a26 --- /dev/null +++ b/packages/dashboard/Common.js @@ -0,0 +1,40 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class Common extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-common"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/Nars.js b/packages/dashboard/Nars.js new file mode 100644 index 00000000..015b3295 --- /dev/null +++ b/packages/dashboard/Nars.js @@ -0,0 +1,40 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class Nars extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-nars"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/NarsClient.js b/packages/dashboard/NarsClient.js new file mode 100644 index 00000000..0984a059 --- /dev/null +++ b/packages/dashboard/NarsClient.js @@ -0,0 +1,41 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class NarsClient extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-nars-client"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/NarsCommon.js b/packages/dashboard/NarsCommon.js new file mode 100644 index 00000000..340d2725 --- /dev/null +++ b/packages/dashboard/NarsCommon.js @@ -0,0 +1,41 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class NarsCommon extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-nars-common"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/Server.js b/packages/dashboard/Server.js new file mode 100644 index 00000000..62ef0aab --- /dev/null +++ b/packages/dashboard/Server.js @@ -0,0 +1,40 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class Server extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-server"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/app.js b/packages/dashboard/app.js new file mode 100644 index 00000000..c928c480 --- /dev/null +++ b/packages/dashboard/app.js @@ -0,0 +1,51 @@ +import React from "react"; +import blessed from "blessed"; +import { render } from "react-blessed"; +import Server from "./Server"; +import Client from "./Client"; +import Common from "./Common"; +import Nars from "./Nars"; +import NarsClient from "./NarsClient"; +import NarsCommon from "./NarsCommon"; + +const Dashboard = () => { + return ( + + + + + + + + + + ); +}; + +export const stylesheet = { + bordered: { + border: { + type: "line", + }, + style: { + border: { + fg: "blue", + }, + }, + }, +}; + +/** + * Rendering the screen. + */ +const screen = blessed.screen({ + autoPadding: true, + smartCSR: true, + title: "react-blessed dashboard", +}); + +screen.key(["escape", "q", "C-c"], function(ch, key) { + return process.exit(0); +}); + +render(, screen); diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json new file mode 100644 index 00000000..9b242cec --- /dev/null +++ b/packages/dashboard/package.json @@ -0,0 +1,26 @@ +{ + "name": "dashboard", + "version": "0.1.0", + "main": "index.js", + "license": "MIT", + "scripts": { + "build-client": "cd ../../examples/client && yarn start", + "build-server": "cd ../../examples/server && yarn start", + "build-common": "cd ../../examples/common && yarn build", + "build-nars": "cd ../nars && yarn bsb -make-world -w", + "build-nars-client": "cd ../nars && yarn build", + "build-nars-common": "cd ../nars && yarn build" + }, + "dependencies": { + "@babel/core": "^7.6.0", + "@babel/preset-env": "^7.6.0", + "@babel/preset-react": "^7.0.0", + "@babel/register": "^7.6.0", + "blessed": "^0.1.81", + "react": "^16.9.0", + "react-blessed": "^0.6.1", + "react-devtools-core": "^3.6.3", + "ws": "^7.1.2" + }, + "devDependencies": {} +} diff --git a/packages/dashboard/run.js b/packages/dashboard/run.js new file mode 100644 index 00000000..acc388af --- /dev/null +++ b/packages/dashboard/run.js @@ -0,0 +1,5 @@ +require("@babel/register")({ + presets: [["@babel/preset-env"], ["@babel/preset-react"]], +}); + +require("./app"); diff --git a/packages/nars/src/ComponentRegistry.rei b/packages/nars/src/ComponentRegistry.rei index 51991b20..c771bd5e 100644 --- a/packages/nars/src/ComponentRegistry.rei +++ b/packages/nars/src/ComponentRegistry.rei @@ -16,4 +16,4 @@ let registerRawTextEncodedReactElementInitializer: (string => Instance.encodedReactElement) => unit; [@genType] -let createRawTextEncodedReactElement: string => Instance.encodedReactElement; +let createRawTextEncodedReactElement: string => Instance.encodedReactElement; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1df70b52..0a476312 100644 --- a/yarn.lock +++ b/yarn.lock @@ -56,6 +56,26 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" + integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helpers" "^7.6.0" + "@babel/parser" "^7.6.0" + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/generator@^7.0.0", "@babel/generator@^7.3.4", "@babel/generator@^7.4.0", "@babel/generator@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" @@ -78,6 +98,17 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" + integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== + dependencies: + "@babel/types" "^7.6.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -262,6 +293,15 @@ "@babel/traverse" "^7.5.5" "@babel/types" "^7.5.5" +"@babel/helpers@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" + integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== + dependencies: + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -281,6 +321,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== +"@babel/parser@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" + integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== + "@babel/plugin-external-helpers@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4" @@ -305,6 +350,14 @@ "@babel/helper-create-class-features-plugin" "^7.5.5" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-proposal-dynamic-import@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" + integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-proposal-export-default-from@^7.0.0": version "7.5.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz#2c0ac2dcc36e3b2443fead2c3c5fc796fb1b5145" @@ -329,7 +382,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.3.4": +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.3.4", "@babel/plugin-proposal-object-rest-spread@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== @@ -353,7 +406,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-chaining" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.2.0": +"@babel/plugin-proposal-unicode-property-regex@^7.2.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== @@ -376,7 +429,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@^7.0.0": +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== @@ -453,7 +506,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.3.4": +"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.3.4", "@babel/plugin-transform-async-to-generator@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== @@ -477,7 +530,15 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.3.4": +"@babel/plugin-transform-block-scoping@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" + integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.3.4", "@babel/plugin-transform-classes@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== @@ -505,7 +566,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.2.0": +"@babel/plugin-transform-destructuring@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" + integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== @@ -514,7 +582,7 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.2.0": +"@babel/plugin-transform-duplicate-keys@^7.2.0", "@babel/plugin-transform-duplicate-keys@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== @@ -545,14 +613,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow" "^7.2.0" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.2.0": +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.2.0", "@babel/plugin-transform-for-of@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.2.0": +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.2.0", "@babel/plugin-transform-function-name@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== @@ -567,14 +635,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-member-expression-literals@^7.0.0": +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.2.0": +"@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== @@ -602,7 +670,17 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-systemjs@^7.3.4": +"@babel/plugin-transform-modules-commonjs@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" + integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.3.4", "@babel/plugin-transform-modules-systemjs@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== @@ -626,7 +704,14 @@ dependencies: regexp-tree "^0.1.6" -"@babel/plugin-transform-new-target@^7.0.0": +"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" + integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== + dependencies: + regexp-tree "^0.1.13" + +"@babel/plugin-transform-new-target@^7.0.0", "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== @@ -640,7 +725,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0": +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.2.0", "@babel/plugin-transform-object-super@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== @@ -648,7 +733,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.5.5" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.2.0": +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.2.0", "@babel/plugin-transform-parameters@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== @@ -657,7 +742,7 @@ "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-property-literals@^7.0.0": +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== @@ -671,6 +756,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/plugin-transform-react-jsx-source@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" @@ -688,13 +781,20 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.3.4": +"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.3.4", "@babel/plugin-transform-regenerator@^7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== dependencies: regenerator-transform "^0.14.0" +"@babel/plugin-transform-reserved-words@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" + integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-runtime@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz#a6331afbfc59189d2135b2e09474457a8e3d28bc" @@ -727,7 +827,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.2.0": +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.2.0", "@babel/plugin-transform-template-literals@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== @@ -751,7 +851,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.2.0": +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.2.0", "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== @@ -809,6 +909,73 @@ js-levenshtein "^1.1.3" semver "^5.3.0" +"@babel/preset-env@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" + integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-dynamic-import" "^7.5.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.5.5" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.5.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.6.0" + "@babel/plugin-transform-classes" "^7.5.5" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.6.0" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-duplicate-keys" "^7.5.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.4" + "@babel/plugin-transform-function-name" "^7.4.4" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.5.0" + "@babel/plugin-transform-modules-commonjs" "^7.6.0" + "@babel/plugin-transform-modules-systemjs" "^7.5.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" + "@babel/plugin-transform-new-target" "^7.4.4" + "@babel/plugin-transform-object-super" "^7.5.5" + "@babel/plugin-transform-parameters" "^7.4.4" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.5" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.4.4" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/types" "^7.6.0" + browserslist "^4.6.0" + core-js-compat "^3.1.1" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/register@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.5.5.tgz#40fe0d474c8c8587b28d6ae18a03eddad3dac3c1" @@ -821,6 +988,17 @@ pirates "^4.0.0" source-map-support "^0.5.9" +"@babel/register@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.6.0.tgz#76b6f466714680f4becafd45beeb2a7b87431abf" + integrity sha512-78BomdN8el+x/nkup9KwtjJXuptW5oXMFmP11WoM2VJBjxrKv4grC3qjpLL8RGGUYUGsm57xnjYFM2uom+jWUQ== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.13" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" + "@babel/runtime@^7.0.0", "@babel/runtime@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" @@ -853,6 +1031,15 @@ "@babel/parser" "^7.2.2" "@babel/types" "^7.2.2" +"@babel/template@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" + integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.3.4", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" @@ -883,6 +1070,21 @@ globals "^11.1.0" lodash "^4.17.11" +"@babel/traverse@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" + integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.4", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" @@ -901,6 +1103,15 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" +"@babel/types@^7.6.0": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" + integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -2001,6 +2212,11 @@ bindings@~1.2.1: resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" integrity sha1-FK1hE4EtLTfXLme0ystLtyZQXxE= +blessed@^0.1.81: + version "0.1.81" + resolved "https://registry.yarnpkg.com/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129" + integrity sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk= + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -2135,7 +2351,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.3.4: +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.3.4, browserslist@^4.6.0, browserslist@^4.6.6: version "4.7.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== @@ -2606,6 +2822,14 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +core-js-compat@^3.1.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.2.1.tgz#0cbdbc2e386e8e00d3b85dc81c848effec5b8150" + integrity sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A== + dependencies: + browserslist "^4.6.6" + semver "^6.3.0" + core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -7225,12 +7449,20 @@ react-addons-shallow-compare@15.6.2: fbjs "^0.8.4" object-assign "^4.1.0" +react-blessed@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/react-blessed/-/react-blessed-0.6.1.tgz#8c649bbf0e9d7c42f413b281d9789ecabc3db2a2" + integrity sha512-k1BPKGXLVEWb/xeMwwk3N9fCgKT+V4jknyGJ7Js773nfCIIuPK2RV0H0vVxqtdYlevIWc1B1ATxTOBY75EBMrw== + dependencies: + react "^16.8.0" + react-reconciler "^0.20.4" + react-deep-force-update@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" integrity sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA== -react-devtools-core@^3.6.1: +react-devtools-core@^3.6.1, react-devtools-core@^3.6.3: version "3.6.3" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.3.tgz#977d95b684c6ad28205f0c62e1e12c5f16675814" integrity sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ== @@ -7318,6 +7550,16 @@ react-reconciler@0.21.0: prop-types "^15.6.2" scheduler "^0.15.0" +react-reconciler@^0.20.4: + version "0.20.4" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.20.4.tgz#3da6a95841592f849cb4edd3d38676c86fd920b2" + integrity sha512-kxERc4H32zV2lXMg/iMiwQHOtyqf15qojvkcZ5Ja2CPkjVohHw9k70pdDBwrnQhLVetUJBSYyqU3yqrlVTOajA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + react-test-renderer@16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1" @@ -7346,6 +7588,15 @@ react@16.8.6: prop-types "^15.6.2" scheduler "^0.13.6" +react@^16.8.0, react@^16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa" + integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -7460,7 +7711,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.6: +regexp-tree@^0.1.13, regexp-tree@^0.1.6: version "0.1.13" resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== @@ -7775,7 +8026,7 @@ scheduler@^0.15.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.2.0: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== From 98f91634bbaf17d0795a4290b2de5021f6dc50e2 Mon Sep 17 00:00:00 2001 From: czystyl Date: Sat, 14 Sep 2019 23:31:04 +0200 Subject: [PATCH 2/7] Add watch scripts to all packages --- packages/dashboard/NarsClient.js | 4 +-- packages/dashboard/NarsCommon.js | 4 +-- packages/dashboard/NarsRe.js | 41 +++++++++++++++++++++++ packages/dashboard/{Nars.js => NarsTs.js} | 8 ++--- packages/dashboard/app.js | 6 ++-- packages/dashboard/package.json | 7 ++-- packages/nars-client/package.json | 3 +- packages/nars-common/package.json | 3 +- packages/nars/package.json | 4 ++- 9 files changed, 64 insertions(+), 16 deletions(-) create mode 100644 packages/dashboard/NarsRe.js rename packages/dashboard/{Nars.js => NarsTs.js} (79%) diff --git a/packages/dashboard/NarsClient.js b/packages/dashboard/NarsClient.js index 0984a059..2cbbdbd1 100644 --- a/packages/dashboard/NarsClient.js +++ b/packages/dashboard/NarsClient.js @@ -29,9 +29,9 @@ export default class NarsClient extends React.Component { label="Nars Client" class={stylesheet.bordered} width="50%" - height="33%" + height="25%" right="0" - top="33%" + top="50%" draggable={true} > diff --git a/packages/dashboard/NarsCommon.js b/packages/dashboard/NarsCommon.js index 340d2725..c4b3b24a 100644 --- a/packages/dashboard/NarsCommon.js +++ b/packages/dashboard/NarsCommon.js @@ -29,9 +29,9 @@ export default class NarsCommon extends React.Component { label="Nars Common" class={stylesheet.bordered} width="50%" - height="33%" + height="25%" right="0" - top="66%" + top="75%" draggable={true} > diff --git a/packages/dashboard/NarsRe.js b/packages/dashboard/NarsRe.js new file mode 100644 index 00000000..76cd4059 --- /dev/null +++ b/packages/dashboard/NarsRe.js @@ -0,0 +1,41 @@ +import React from "react"; +import { spawn } from "child_process"; +import { stylesheet } from "./app"; + +export default class NarsRe extends React.Component { + constructor(props) { + super(props); + + this.state = { + logs: [], + }; + } + + componentDidMount() { + const subprocess = spawn("yarn", ["build-nars-re"], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + this.setState(state => ({ + logs: [data.toString("utf-8"), ...state.logs], + })); + }); + } + + render() { + return ( + + + + ); + } +} diff --git a/packages/dashboard/Nars.js b/packages/dashboard/NarsTs.js similarity index 79% rename from packages/dashboard/Nars.js rename to packages/dashboard/NarsTs.js index 015b3295..525c3188 100644 --- a/packages/dashboard/Nars.js +++ b/packages/dashboard/NarsTs.js @@ -2,7 +2,7 @@ import React from "react"; import { spawn } from "child_process"; import { stylesheet } from "./app"; -export default class Nars extends React.Component { +export default class NarsTs extends React.Component { constructor(props) { super(props); @@ -12,7 +12,7 @@ export default class Nars extends React.Component { } componentDidMount() { - const subprocess = spawn("yarn", ["build-nars"], { + const subprocess = spawn("yarn", ["build-nars-ts"], { stdio: ["pipe", "pipe", "pipe"], }); @@ -26,10 +26,10 @@ export default class Nars extends React.Component { render() { return ( diff --git a/packages/dashboard/app.js b/packages/dashboard/app.js index c928c480..d999394f 100644 --- a/packages/dashboard/app.js +++ b/packages/dashboard/app.js @@ -4,7 +4,8 @@ import { render } from "react-blessed"; import Server from "./Server"; import Client from "./Client"; import Common from "./Common"; -import Nars from "./Nars"; +import NarsTs from "./NarsTs"; +import NarsRe from "./NarsRe"; import NarsClient from "./NarsClient"; import NarsCommon from "./NarsCommon"; @@ -15,7 +16,8 @@ const Dashboard = () => { - + + diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 9b242cec..019f5eea 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -7,9 +7,10 @@ "build-client": "cd ../../examples/client && yarn start", "build-server": "cd ../../examples/server && yarn start", "build-common": "cd ../../examples/common && yarn build", - "build-nars": "cd ../nars && yarn bsb -make-world -w", - "build-nars-client": "cd ../nars && yarn build", - "build-nars-common": "cd ../nars && yarn build" + "build-nars-re": "cd ../nars && yarn re:watch", + "build-nars-ts": "cd ../nars && yarn watch", + "build-nars-client": "cd ../nars-client && yarn watch", + "build-nars-common": "cd ../nars-common && yarn watch" }, "dependencies": { "@babel/core": "^7.6.0", diff --git a/packages/nars-client/package.json b/packages/nars-client/package.json index dd134c57..7842e75b 100644 --- a/packages/nars-client/package.json +++ b/packages/nars-client/package.json @@ -9,7 +9,8 @@ "license": "MIT", "private": false, "scripts": { - "build": "tsc" + "build": "tsc", + "watch": "tsc --watch" }, "peerDependencies": { "react-native": ">=0.60.0" diff --git a/packages/nars-common/package.json b/packages/nars-common/package.json index c09728c1..89768405 100644 --- a/packages/nars-common/package.json +++ b/packages/nars-common/package.json @@ -9,7 +9,8 @@ "license": "MIT", "private": false, "scripts": { - "build": "tsc" + "build": "tsc", + "watch": "tsc --watch" }, "devDependencies": { "prettier": "^1.18.2", diff --git a/packages/nars/package.json b/packages/nars/package.json index 06dc6798..e0b8decd 100644 --- a/packages/nars/package.json +++ b/packages/nars/package.json @@ -9,7 +9,9 @@ "license": "MIT", "private": false, "scripts": { - "build": "bsb -make-world && tsc && cp ./src/*.bs.js ./dist/" + "build": "bsb -make-world && tsc && cp ./src/*.bs.js ./dist/", + "re:watch": "bsb -make-world -w", + "watch": "tsc --watch" }, "dependencies": { "@types/analytics-node": "^3.1.1", From d0408f8ba9113e996a588eb3fdc3ac46021b8908 Mon Sep 17 00:00:00 2001 From: czystyl Date: Mon, 16 Sep 2019 18:29:00 +0200 Subject: [PATCH 3/7] Add multiple examples --- packages/dashboard/Client.js | 11 +++++-- packages/dashboard/Common.js | 12 +++++--- packages/dashboard/NarsClient.js | 13 +++++---- packages/dashboard/NarsCommon.js | 13 +++++---- packages/dashboard/NarsRe.js | 13 +++++---- packages/dashboard/NarsTs.js | 12 +++++--- packages/dashboard/Server.js | 12 +++++--- packages/dashboard/{app.js => core.js} | 31 +++++--------------- packages/dashboard/examples.js | 31 ++++++++++++++++++++ packages/dashboard/full.js | 40 ++++++++++++++++++++++++++ packages/dashboard/run.js | 17 ++++++++++- packages/dashboard/stylesheet.js | 14 +++++++++ 12 files changed, 164 insertions(+), 55 deletions(-) rename packages/dashboard/{app.js => core.js} (60%) create mode 100644 packages/dashboard/examples.js create mode 100644 packages/dashboard/full.js create mode 100644 packages/dashboard/stylesheet.js diff --git a/packages/dashboard/Client.js b/packages/dashboard/Client.js index 1bd17fc9..f80ed0bf 100644 --- a/packages/dashboard/Client.js +++ b/packages/dashboard/Client.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class Client extends React.Component { constructor(props) { @@ -24,12 +24,17 @@ export default class Client extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/Common.js b/packages/dashboard/Common.js index 6b0e1a26..be3dbfdb 100644 --- a/packages/dashboard/Common.js +++ b/packages/dashboard/Common.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class Common extends React.Component { constructor(props) { @@ -24,13 +24,17 @@ export default class Common extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/NarsClient.js b/packages/dashboard/NarsClient.js index 2cbbdbd1..24988c82 100644 --- a/packages/dashboard/NarsClient.js +++ b/packages/dashboard/NarsClient.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class NarsClient extends React.Component { constructor(props) { @@ -24,14 +24,17 @@ export default class NarsClient extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/NarsCommon.js b/packages/dashboard/NarsCommon.js index c4b3b24a..e6489d9f 100644 --- a/packages/dashboard/NarsCommon.js +++ b/packages/dashboard/NarsCommon.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class NarsCommon extends React.Component { constructor(props) { @@ -24,14 +24,17 @@ export default class NarsCommon extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/NarsRe.js b/packages/dashboard/NarsRe.js index 76cd4059..273c9c1d 100644 --- a/packages/dashboard/NarsRe.js +++ b/packages/dashboard/NarsRe.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class NarsRe extends React.Component { constructor(props) { @@ -24,14 +24,17 @@ export default class NarsRe extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/NarsTs.js b/packages/dashboard/NarsTs.js index 525c3188..010a3dad 100644 --- a/packages/dashboard/NarsTs.js +++ b/packages/dashboard/NarsTs.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class NarsTs extends React.Component { constructor(props) { @@ -24,13 +24,17 @@ export default class NarsTs extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/Server.js b/packages/dashboard/Server.js index 62ef0aab..c50639ac 100644 --- a/packages/dashboard/Server.js +++ b/packages/dashboard/Server.js @@ -1,6 +1,6 @@ import React from "react"; import { spawn } from "child_process"; -import { stylesheet } from "./app"; +import stylesheet from "./stylesheet"; export default class Server extends React.Component { constructor(props) { @@ -24,13 +24,17 @@ export default class Server extends React.Component { } render() { + const { width, height, top, right, left } = this.props; + return ( diff --git a/packages/dashboard/app.js b/packages/dashboard/core.js similarity index 60% rename from packages/dashboard/app.js rename to packages/dashboard/core.js index d999394f..c0f9e325 100644 --- a/packages/dashboard/app.js +++ b/packages/dashboard/core.js @@ -9,45 +9,28 @@ import NarsRe from "./NarsRe"; import NarsClient from "./NarsClient"; import NarsCommon from "./NarsCommon"; -const Dashboard = () => { +const Cpre = () => { return ( - - - - - - - - + + + + ); }; -export const stylesheet = { - bordered: { - border: { - type: "line", - }, - style: { - border: { - fg: "blue", - }, - }, - }, -}; - /** * Rendering the screen. */ const screen = blessed.screen({ autoPadding: true, smartCSR: true, - title: "react-blessed dashboard", + title: "Nars core dashboard", }); screen.key(["escape", "q", "C-c"], function(ch, key) { return process.exit(0); }); -render(, screen); +render(, screen); diff --git a/packages/dashboard/examples.js b/packages/dashboard/examples.js new file mode 100644 index 00000000..e4f4923c --- /dev/null +++ b/packages/dashboard/examples.js @@ -0,0 +1,31 @@ +import React from "react"; +import blessed from "blessed"; +import { render } from "react-blessed"; +import Server from "./Server"; +import Client from "./Client"; +import Common from "./Common"; + +const Examples = () => { + return ( + + + + + + ); +}; + +/** + * Rendering the screen. + */ +const screen = blessed.screen({ + autoPadding: true, + smartCSR: true, + title: "Nars examples dashboard", +}); + +screen.key(["escape", "q", "C-c"], function(ch, key) { + return process.exit(0); +}); + +render(, screen); diff --git a/packages/dashboard/full.js b/packages/dashboard/full.js new file mode 100644 index 00000000..a0130038 --- /dev/null +++ b/packages/dashboard/full.js @@ -0,0 +1,40 @@ +import React from "react"; +import blessed from "blessed"; +import { render } from "react-blessed"; +import Server from "./Server"; +import Client from "./Client"; +import Common from "./Common"; +import NarsTs from "./NarsTs"; +import NarsRe from "./NarsRe"; +import NarsClient from "./NarsClient"; +import NarsCommon from "./NarsCommon"; + +const Full = () => { + return ( + + + + + + + + + + + ); +}; + +/** + * Rendering the screen. + */ +const screen = blessed.screen({ + autoPadding: true, + smartCSR: true, + title: "Nars dashboard", +}); + +screen.key(["escape", "q", "C-c"], function(ch, key) { + return process.exit(0); +}); + +render(, screen); diff --git a/packages/dashboard/run.js b/packages/dashboard/run.js index acc388af..41e3ad23 100644 --- a/packages/dashboard/run.js +++ b/packages/dashboard/run.js @@ -2,4 +2,19 @@ require("@babel/register")({ presets: [["@babel/preset-env"], ["@babel/preset-react"]], }); -require("./app"); +const argv = process.argv.slice(2); + +const version = argv[0]; +const versions = ["full", "examples", "core"]; + +if (versions.indexOf(version) === -1) { + console.warn( + 'Invalid example "%s" provided. Must be one of:\n *', + version, + versions.join("\n * ") + ); + + process.exit(0); +} + +require("./" + version); diff --git a/packages/dashboard/stylesheet.js b/packages/dashboard/stylesheet.js new file mode 100644 index 00000000..e87da48d --- /dev/null +++ b/packages/dashboard/stylesheet.js @@ -0,0 +1,14 @@ +const stylesheet = { + bordered: { + border: { + type: "line", + }, + style: { + border: { + fg: "blue", + }, + }, + }, +}; + +export default stylesheet; From c7b2e3076a4c4eb3990d0ba37d6b3d53228bdf6d Mon Sep 17 00:00:00 2001 From: czystyl Date: Wed, 18 Sep 2019 18:45:29 +0200 Subject: [PATCH 4/7] Clean up --- package.json | 1 + packages/dashboard/Client.js | 44 -------------------- packages/dashboard/Common.js | 44 -------------------- packages/dashboard/NarsClient.js | 44 -------------------- packages/dashboard/NarsCommon.js | 44 -------------------- packages/dashboard/NarsRe.js | 44 -------------------- packages/dashboard/NarsTs.js | 44 -------------------- packages/dashboard/Process.js | 47 ++++++++++++++++++++++ packages/dashboard/Server.js | 44 -------------------- packages/dashboard/core.js | 45 ++++++++++++++------- packages/dashboard/examples.js | 26 +++++++++--- packages/dashboard/full.js | 69 +++++++++++++++++++++++++------- packages/dashboard/package.json | 3 +- packages/dashboard/run.js | 2 +- 14 files changed, 155 insertions(+), 346 deletions(-) delete mode 100644 packages/dashboard/Client.js delete mode 100644 packages/dashboard/Common.js delete mode 100644 packages/dashboard/NarsClient.js delete mode 100644 packages/dashboard/NarsCommon.js delete mode 100644 packages/dashboard/NarsRe.js delete mode 100644 packages/dashboard/NarsTs.js create mode 100644 packages/dashboard/Process.js delete mode 100644 packages/dashboard/Server.js diff --git a/package.json b/package.json index 9ad2cf8c..71ae339e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "private": true, "scripts": { + "dashboard": "node packages/dashboard/run", "build-nars-common": "cd packages/nars-common && yarn && ./generate_proto.sh && yarn build", "build-nars": "cd packages/nars && yarn && yarn build", "build-nars-client": "cd packages/nars-client && yarn build", diff --git a/packages/dashboard/Client.js b/packages/dashboard/Client.js deleted file mode 100644 index f80ed0bf..00000000 --- a/packages/dashboard/Client.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class Client extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-client"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/Common.js b/packages/dashboard/Common.js deleted file mode 100644 index be3dbfdb..00000000 --- a/packages/dashboard/Common.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class Common extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-common"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/NarsClient.js b/packages/dashboard/NarsClient.js deleted file mode 100644 index 24988c82..00000000 --- a/packages/dashboard/NarsClient.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class NarsClient extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-nars-client"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/NarsCommon.js b/packages/dashboard/NarsCommon.js deleted file mode 100644 index e6489d9f..00000000 --- a/packages/dashboard/NarsCommon.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class NarsCommon extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-nars-common"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/NarsRe.js b/packages/dashboard/NarsRe.js deleted file mode 100644 index 273c9c1d..00000000 --- a/packages/dashboard/NarsRe.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class NarsRe extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-nars-re"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/NarsTs.js b/packages/dashboard/NarsTs.js deleted file mode 100644 index 010a3dad..00000000 --- a/packages/dashboard/NarsTs.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class NarsTs extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-nars-ts"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/Process.js b/packages/dashboard/Process.js new file mode 100644 index 00000000..32f885b7 --- /dev/null +++ b/packages/dashboard/Process.js @@ -0,0 +1,47 @@ +import React from "react"; +import { spawn } from "child_process"; + +import stylesheet from "./stylesheet"; + +// type Props = { +// label: string; +// arg: string; +// width: string; +// height: string; +// top: string; +// right: string; +// left: string; +// }; + +const Pro = ({ width, height, top, right, left, label, arg }) => { + const [logs, setLogs] = React.useState([]); + + React.useEffect(() => { + const subprocess = spawn("yarn", [arg], { + stdio: ["pipe", "pipe", "pipe"], + }); + + subprocess.stdout.on("data", data => { + setLogs(state => [data.toString("utf-8"), ...state]); + }); + + return () => subprocess.kill(); + }, []); + + return ( + + + + ); +}; + +export default Pro; diff --git a/packages/dashboard/Server.js b/packages/dashboard/Server.js deleted file mode 100644 index c50639ac..00000000 --- a/packages/dashboard/Server.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { spawn } from "child_process"; -import stylesheet from "./stylesheet"; - -export default class Server extends React.Component { - constructor(props) { - super(props); - - this.state = { - logs: [], - }; - } - - componentDidMount() { - const subprocess = spawn("yarn", ["build-server"], { - stdio: ["pipe", "pipe", "pipe"], - }); - - subprocess.stdout.on("data", data => { - this.setState(state => ({ - logs: [data.toString("utf-8"), ...state.logs], - })); - }); - } - - render() { - const { width, height, top, right, left } = this.props; - - return ( - - - - ); - } -} diff --git a/packages/dashboard/core.js b/packages/dashboard/core.js index c0f9e325..42689ee0 100644 --- a/packages/dashboard/core.js +++ b/packages/dashboard/core.js @@ -1,21 +1,38 @@ import React from "react"; import blessed from "blessed"; import { render } from "react-blessed"; -import Server from "./Server"; -import Client from "./Client"; -import Common from "./Common"; -import NarsTs from "./NarsTs"; -import NarsRe from "./NarsRe"; -import NarsClient from "./NarsClient"; -import NarsCommon from "./NarsCommon"; - -const Cpre = () => { + +import Process from "./Process"; + +const Core = () => { return ( - - - - + + + + + + + ); }; @@ -33,4 +50,4 @@ screen.key(["escape", "q", "C-c"], function(ch, key) { return process.exit(0); }); -render(, screen); +render(, screen); diff --git a/packages/dashboard/examples.js b/packages/dashboard/examples.js index e4f4923c..c5029a9d 100644 --- a/packages/dashboard/examples.js +++ b/packages/dashboard/examples.js @@ -1,16 +1,30 @@ import React from "react"; import blessed from "blessed"; import { render } from "react-blessed"; -import Server from "./Server"; -import Client from "./Client"; -import Common from "./Common"; + +import Process from "./Process"; const Examples = () => { return ( - - - + + + + + ); }; diff --git a/packages/dashboard/full.js b/packages/dashboard/full.js index a0130038..755fde76 100644 --- a/packages/dashboard/full.js +++ b/packages/dashboard/full.js @@ -1,25 +1,64 @@ import React from "react"; import blessed from "blessed"; import { render } from "react-blessed"; -import Server from "./Server"; -import Client from "./Client"; -import Common from "./Common"; -import NarsTs from "./NarsTs"; -import NarsRe from "./NarsRe"; -import NarsClient from "./NarsClient"; -import NarsCommon from "./NarsCommon"; + +import Process from "./Process"; const Full = () => { return ( - - - - - - - - + + + + + + + + + + + + + ); }; diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 019f5eea..d563417a 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -22,6 +22,5 @@ "react-blessed": "^0.6.1", "react-devtools-core": "^3.6.3", "ws": "^7.1.2" - }, - "devDependencies": {} + } } diff --git a/packages/dashboard/run.js b/packages/dashboard/run.js index 41e3ad23..cf5d49b4 100644 --- a/packages/dashboard/run.js +++ b/packages/dashboard/run.js @@ -9,7 +9,7 @@ const versions = ["full", "examples", "core"]; if (versions.indexOf(version) === -1) { console.warn( - 'Invalid example "%s" provided. Must be one of:\n *', + "Invalid dashboard type %s selected. Must be one of:\n *", version, versions.join("\n * ") ); From e7aedffa668b752ea7a48f5788c108e10bde6564 Mon Sep 17 00:00:00 2001 From: czystyl Date: Wed, 18 Sep 2019 18:55:05 +0200 Subject: [PATCH 5/7] Update readme --- Readme.md | 35 +++++++++++++++---- .../dashboard/{examples.js => example.js} | 6 ++-- packages/dashboard/run.js | 2 +- 3 files changed, 33 insertions(+), 10 deletions(-) rename packages/dashboard/{examples.js => example.js} (89%) diff --git a/Readme.md b/Readme.md index 7da93611..0047c5a9 100644 --- a/Readme.md +++ b/Readme.md @@ -19,9 +19,25 @@ nars is currently being developed in a private repo, but it's public on npm so t ### App packages -In the rest of this guide, I assume that you have three packages: `client`, `server`, and `common`. +In the rest of this guide, I assume that you have three packages: `client`, `server`, and `common`. You can rename these however you want but make sure to swap the name in all relevant places. +### Dashboard + +You can use the project dashboard to run all necessary scripts at once. + +Choose the dashboard type from one of `{type}` : + +- `example` - run all scripts from the example directory +- `core` - run all build scripts from code packages +- `full` - run example and core at once + +To run dashboard use: + +```sh +yarn dashboard {type} +``` + ### Folder structure We want to share the common package so we will create a yarn monorepo. @@ -53,6 +69,7 @@ package.json in root: ### Defining a config In the common package run: + - `yarn add nars-common@latest` Next, create index.js with a config. @@ -79,6 +96,7 @@ export const config = { ### Configuring the server In the server package run: + - `yarn add nars ` where `common_package_name` is the name of the package in the `common` directory. Create `index.js` file: @@ -121,11 +139,13 @@ Static.attatchListener(webSocketServer, router); **Typescript** Add `parcel` if not present: + ``` yarn add parcel ``` Run: + ``` parcel build --target node index.tsx && node dist/index.js ``` @@ -139,6 +159,7 @@ node index.js ### Attaching a client Set up your React Native app in the client folder. Next run: + - `yarn add nars-client ` where `common_package_name` is the name of the package in the `common` directory. - Go to a file where you'd like to use nars' `RemoteComponent`. @@ -214,19 +235,21 @@ There's a limited set of props which are supported. You can check them out in ### Adding a prop to an existing component -Go to schema protobuf file: +Go to schema protobuf file: `packages/nars-common/src/proto/schema.proto` 1. Find the message that describes the component (i.e. View is described by message View) 2. Add a field to the component's message (see [Protobuf Language Guide](https://developers.google.com/protocol-buffers/docs/proto#simple) -for a reference. -3. If the field is optional, wrap it in a value type. See `Int32Value` message for reference. -It's a wrapper around int32 type. Protobuf doesn't have the notion of optional values but -the default value for message is 0 so it's possible to detect if it's set or not. + for a reference. +3. If the field is optional, wrap it in a value type. See `Int32Value` message for reference. + It's a wrapper around int32 type. Protobuf doesn't have the notion of optional values but + the default value for message is 0 so it's possible to detect if it's set or not. 4. If the prop is a function we use Callback message for describing it. Go to `packages/nars/src/.ts` + - Add the prop to the component and parsing code Go to `packages/nars-client/src/DecodeElement.tsx` + - Implement decoding for the prop. diff --git a/packages/dashboard/examples.js b/packages/dashboard/example.js similarity index 89% rename from packages/dashboard/examples.js rename to packages/dashboard/example.js index c5029a9d..ada6ee33 100644 --- a/packages/dashboard/examples.js +++ b/packages/dashboard/example.js @@ -4,7 +4,7 @@ import { render } from "react-blessed"; import Process from "./Process"; -const Examples = () => { +const Example = () => { return ( @@ -35,11 +35,11 @@ const Examples = () => { const screen = blessed.screen({ autoPadding: true, smartCSR: true, - title: "Nars examples dashboard", + title: "Nars example dashboard", }); screen.key(["escape", "q", "C-c"], function(ch, key) { return process.exit(0); }); -render(, screen); +render(, screen); diff --git a/packages/dashboard/run.js b/packages/dashboard/run.js index cf5d49b4..a347049c 100644 --- a/packages/dashboard/run.js +++ b/packages/dashboard/run.js @@ -5,7 +5,7 @@ require("@babel/register")({ const argv = process.argv.slice(2); const version = argv[0]; -const versions = ["full", "examples", "core"]; +const versions = ["full", "example", "core"]; if (versions.indexOf(version) === -1) { console.warn( From e1ce9003a79c05f4068e4b7b23508fa0b620ff6c Mon Sep 17 00:00:00 2001 From: czystyl Date: Wed, 18 Sep 2019 18:56:26 +0200 Subject: [PATCH 6/7] Add screens from dashboard --- Readme.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Readme.md b/Readme.md index 0047c5a9..44660809 100644 --- a/Readme.md +++ b/Readme.md @@ -38,6 +38,10 @@ To run dashboard use: yarn dashboard {type} ``` +| full | core | examples | +|---|---|---| +| ![image](https://user-images.githubusercontent.com/10349378/64976097-cc016d00-d8b0-11e9-97c2-6bc824131c96.png) | ![image](https://user-images.githubusercontent.com/10349378/64976116-d9b6f280-d8b0-11e9-8b47-43eb1a9c1f1b.png) | ![image](https://user-images.githubusercontent.com/10349378/64976136-e3405a80-d8b0-11e9-8d35-bbc9d19ff5b5.png) | + ### Folder structure We want to share the common package so we will create a yarn monorepo. From fda419631856862664c41e66a6b447da71357fef Mon Sep 17 00:00:00 2001 From: czystyl Date: Thu, 19 Sep 2019 17:06:25 +0200 Subject: [PATCH 7/7] Add TS suport --- packages/dashboard/{core.js => Core.tsx} | 6 +- .../dashboard/{example.js => Example.tsx} | 6 +- packages/dashboard/{full.js => Full.tsx} | 9 +-- .../dashboard/{Process.js => Process.tsx} | 32 ++++----- packages/dashboard/package.json | 5 ++ packages/dashboard/run.js | 9 ++- .../{stylesheet.js => stylesheet.ts} | 4 +- packages/dashboard/tsconfig.json | 68 +++++++++++++++++++ yarn.lock | 44 ++++++++++++ 9 files changed, 150 insertions(+), 33 deletions(-) rename packages/dashboard/{core.js => Core.tsx} (90%) rename packages/dashboard/{example.js => Example.tsx} (88%) rename packages/dashboard/{full.js => Full.tsx} (91%) rename packages/dashboard/{Process.js => Process.tsx} (58%) rename packages/dashboard/{stylesheet.js => stylesheet.ts} (72%) create mode 100644 packages/dashboard/tsconfig.json diff --git a/packages/dashboard/core.js b/packages/dashboard/Core.tsx similarity index 90% rename from packages/dashboard/core.js rename to packages/dashboard/Core.tsx index 42689ee0..a181eaa0 100644 --- a/packages/dashboard/core.js +++ b/packages/dashboard/Core.tsx @@ -6,7 +6,7 @@ import Process from "./Process"; const Core = () => { return ( - + { height="50%" width="50%" /> - + ); }; @@ -46,7 +46,7 @@ const screen = blessed.screen({ title: "Nars core dashboard", }); -screen.key(["escape", "q", "C-c"], function(ch, key) { +screen.key(["escape", "q", "C-c"], function() { return process.exit(0); }); diff --git a/packages/dashboard/example.js b/packages/dashboard/Example.tsx similarity index 88% rename from packages/dashboard/example.js rename to packages/dashboard/Example.tsx index ada6ee33..826c2573 100644 --- a/packages/dashboard/example.js +++ b/packages/dashboard/Example.tsx @@ -6,7 +6,7 @@ import Process from "./Process"; const Example = () => { return ( - + { width="30%" right="0" /> - + ); }; @@ -38,7 +38,7 @@ const screen = blessed.screen({ title: "Nars example dashboard", }); -screen.key(["escape", "q", "C-c"], function(ch, key) { +screen.key(["escape", "q", "C-c"], function() { return process.exit(0); }); diff --git a/packages/dashboard/full.js b/packages/dashboard/Full.tsx similarity index 91% rename from packages/dashboard/full.js rename to packages/dashboard/Full.tsx index 755fde76..23b0250a 100644 --- a/packages/dashboard/full.js +++ b/packages/dashboard/Full.tsx @@ -6,7 +6,7 @@ import Process from "./Process"; const Full = () => { return ( - + { height="25%" width="50%" /> - + ); }; -/** - * Rendering the screen. - */ const screen = blessed.screen({ autoPadding: true, smartCSR: true, title: "Nars dashboard", }); -screen.key(["escape", "q", "C-c"], function(ch, key) { +screen.key(["escape", "q", "C-c"], function() { return process.exit(0); }); diff --git a/packages/dashboard/Process.js b/packages/dashboard/Process.tsx similarity index 58% rename from packages/dashboard/Process.js rename to packages/dashboard/Process.tsx index 32f885b7..006075a5 100644 --- a/packages/dashboard/Process.js +++ b/packages/dashboard/Process.tsx @@ -1,20 +1,20 @@ -import React from "react"; +import * as React from "react"; import { spawn } from "child_process"; import stylesheet from "./stylesheet"; -// type Props = { -// label: string; -// arg: string; -// width: string; -// height: string; -// top: string; -// right: string; -// left: string; -// }; +type Props = { + label: string; + arg: string; + width: string; + height: string; + top?: string; + right?: string; + left?: string; +}; -const Pro = ({ width, height, top, right, left, label, arg }) => { - const [logs, setLogs] = React.useState([]); +const Process = ({ width, height, top, right, left, label, arg }: Props) => { + const [logs, setLogs] = React.useState([]); React.useEffect(() => { const subprocess = spawn("yarn", [arg], { @@ -29,7 +29,7 @@ const Pro = ({ width, height, top, right, left, label, arg }) => { }, []); return ( - { height={height} draggable={true} > - - + + ); }; -export default Pro; +export default Process; diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index d563417a..a4b708b9 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -22,5 +22,10 @@ "react-blessed": "^0.6.1", "react-devtools-core": "^3.6.3", "ws": "^7.1.2" + }, + "devDependencies": { + "@babel/preset-typescript": "^7.6.0", + "@types/blessed": "^0.1.12", + "@types/react-blessed": "^0.3.1" } } diff --git a/packages/dashboard/run.js b/packages/dashboard/run.js index a347049c..711bc87e 100644 --- a/packages/dashboard/run.js +++ b/packages/dashboard/run.js @@ -1,5 +1,10 @@ require("@babel/register")({ - presets: [["@babel/preset-env"], ["@babel/preset-react"]], + presets: [ + ["@babel/preset-env"], + ["@babel/preset-react"], + "@babel/typescript", + ], + extensions: [".js", ".ts", ".tsx"], }); const argv = process.argv.slice(2); @@ -17,4 +22,4 @@ if (versions.indexOf(version) === -1) { process.exit(0); } -require("./" + version); +require("./" + version[0].toUpperCase() + version.slice(1) + ".tsx"); diff --git a/packages/dashboard/stylesheet.js b/packages/dashboard/stylesheet.ts similarity index 72% rename from packages/dashboard/stylesheet.js rename to packages/dashboard/stylesheet.ts index e87da48d..1a2dae0e 100644 --- a/packages/dashboard/stylesheet.js +++ b/packages/dashboard/stylesheet.ts @@ -1,4 +1,4 @@ -const stylesheet = { +export default { bordered: { border: { type: "line", @@ -10,5 +10,3 @@ const stylesheet = { }, }, }; - -export default stylesheet; diff --git a/packages/dashboard/tsconfig.json b/packages/dashboard/tsconfig.json new file mode 100644 index 00000000..dec03790 --- /dev/null +++ b/packages/dashboard/tsconfig.json @@ -0,0 +1,68 @@ +{ + "compilerOptions": { + /* Basic Options */ + "incremental": true /* Enable incremental compilation */, + "target": "es2017" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": [ + "es6" + ] /* Specify library files to be included in the compilation. */, + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "dist" /* Redirect output structure to the directory. */, + // "rootDir": "." /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + "strictFunctionTypes": true /* Enable strict checking of function types. */, + "strictBindCallApply": true /* Enable strict 'bind', 'call', and 'apply' methods on functions. */, + "strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */, + "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, + "alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, + + /* Additional Checks */ + "noUnusedLocals": true /* Report errors on unused locals. */, + "noUnusedParameters": true /* Report errors on unused parameters. */, + "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "resolveJsonModule": true /* Include modules imported with '.json' extension */ + } +} diff --git a/yarn.lock b/yarn.lock index 0a476312..187a7161 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,6 +153,18 @@ "@babel/helper-replace-supers" "^7.5.5" "@babel/helper-split-export-declaration" "^7.4.4" +"@babel/helper-create-class-features-plugin@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" + integrity sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.5.5" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-define-map@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" @@ -851,6 +863,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" +"@babel/plugin-transform-typescript@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.0.tgz#48d78405f1aa856ebeea7288a48a19ed8da377a6" + integrity sha512-yzw7EopOOr6saONZ3KA3lpizKnWRTe+rfBqg4AmQbSow7ik7fqmzrfIqt053osLwLE2AaTqGinLM2tl6+M/uog== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.6.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.2.0" + "@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.2.0", "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" @@ -976,6 +997,14 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" +"@babel/preset-typescript@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz#25768cb8830280baf47c45ab1a519a9977498c98" + integrity sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.6.0" + "@babel/register@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.5.5.tgz#40fe0d474c8c8587b28d6ae18a03eddad3dac3c1" @@ -1544,6 +1573,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/blessed@*", "@types/blessed@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@types/blessed/-/blessed-0.1.12.tgz#7d0dd21719dcc3ef57fd215efe1a214f98a0c58c" + integrity sha512-9O9oe2ty7odI28xnUDQrMl9WcajT+mnmF7qp8bbfr5XtdSSeceZn9kENMBSt+oEUh9o7GSxpTXHOaf76w4PqPQ== + dependencies: + "@types/node" "*" + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1611,6 +1647,14 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/react-blessed@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@types/react-blessed/-/react-blessed-0.3.1.tgz#7e422bbe348bb81d49ec1aa079381cfff25556b0" + integrity sha512-hRKF9JI3abrDeGnDI7oI4p0APj7LO0NiPaJ/VsTR2c4araGRAluWiNu1khsCBZ4nY8HuxC0E8QPfgK4U/V6udA== + dependencies: + "@types/blessed" "*" + "@types/react" "*" + "@types/react-native@^0.60.10", "@types/react-native@^0.60.11": version "0.60.11" resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.11.tgz#c797f89180291c3a1d6f573f1e89644c8c17f60e"