diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/packages/console-client/README.md b/packages/console-app/README.md similarity index 92% rename from packages/console-client/README.md rename to packages/console-app/README.md index 2a89b06..2087af2 100644 --- a/packages/console-client/README.md +++ b/packages/console-app/README.md @@ -7,14 +7,14 @@ Apollo GraphQL client. First start the server: ```bash - cd packages/consoe-server + cd packages/console-server yarn start ``` Then start the Webpack devserver. ```bash - cd packages/consoe-client + cd packages/consoe-app yarn start ``` diff --git a/packages/console-client/babel.config.js b/packages/console-app/babel.config.js similarity index 65% rename from packages/console-client/babel.config.js rename to packages/console-app/babel.config.js index 3ce227c..e081bbd 100644 --- a/packages/console-client/babel.config.js +++ b/packages/console-app/babel.config.js @@ -8,6 +8,10 @@ module.exports = { '@babel/preset-react' ], plugins: [ + // Allows export of components importing GQL files (without webpack). + 'import-graphql', + 'inline-json-import', + '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-export-default-from' ] diff --git a/packages/console-app/config.yml b/packages/console-app/config.yml new file mode 100644 index 0000000..150b1c4 --- /dev/null +++ b/packages/console-app/config.yml @@ -0,0 +1,41 @@ +# +# NODE_ENV === production +# NOTE: Set CONFIG_FILE to swap out this config file. +# + +app: + title: 'Console' + org': 'DxOS' + theme: 'dark' + website: 'https://dxos.org' + publicUrl: '/console' + +api: + path: '/api' + port: 4000 + intervalLog: 5000 + pollInterval: 10000 + +system: + debug: 'dxos:console:*' + +services: + app: + prefix: '/app' + server: 'http://127.0.0.1:5999' + + wns: + server: 'http://127.0.0.1:9473/api' + webui: 'http://127.0.0.1:9473/webui' + + signal: + server: 'http://127.0.0.1:4000' + api: 'http://127.0.0.1:4000' + + ipfs: + server: '/ip4/127.0.0.1/tcp/5001' + gateway: '/ip4//127.0.0.1:8888/ipfs/' + webui: 'http://127.0.0.1:5001/webui' + + wellknown: + endpoint: 'http://127.0.0.1:9000/.well-known/dxos' diff --git a/packages/console-client/package.json b/packages/console-app/package.json similarity index 87% rename from packages/console-client/package.json rename to packages/console-app/package.json index 5fe81c3..16309f3 100644 --- a/packages/console-client/package.json +++ b/packages/console-app/package.json @@ -1,18 +1,14 @@ { - "name": "@dxos/console-client", + "name": "@dxos/console-app", "version": "1.0.0-beta.0", "description": "DxOS Console Client", "main": "dist/es/index.js", "files": [ - "config.yml", - "dist/production", - "gql" + "src/gql" ], "scripts": { "analyzer": "webpack --config webpack-analyzer.config.js", - "build": "npm run clean && npm run build:module && npm run build:production", - "build:module": "babel ./src --out-dir ./dist/es --ignore \"**/*.test.js\" --source-maps inline", - "build:production": "PUBLIC_URL=/console webpack --mode production", + "build": "babel ./src --out-dir ./dist/es --ignore \"**/*.test.js\" --source-maps inline", "clean": "rm -rf dist", "lint": "semistandard 'src/**/*.js'", "start": "VERBOSE=true webpack-dev-server --mode development", @@ -47,9 +43,6 @@ "graphql-tag": "^2.10.3", "lodash.defaultsdeep": "^4.6.1", "lodash.get": "^4.4.2", - "lodash.isobject": "^3.0.2", - "lodash.omit": "^4.5.0", - "lodash.transform": "^4.6.0", "moment": "^2.26.0", "react": "^16.13.1", "react-dom": "^16.13.1", @@ -69,7 +62,9 @@ "babel-jest": "^24.8.0", "babel-loader": "^8.0.0", "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-import-graphql": "^2.7.0", "babel-plugin-inline-import": "^3.0.0", + "babel-plugin-inline-json-import": "^0.3.2", "dotenv-webpack": "^1.8.0", "eslint": "^6.7.2", "eslint-config-semistandard": "^15.0.0", @@ -94,6 +89,10 @@ "webpack-version-file-plugin": "^0.4.0", "yaml-loader": "^0.6.0" }, + "peerDependencies": { + "react": "16.12.0", + "react-dom": "^16.12.0" + }, "publishConfig": { "access": "public" }, diff --git a/packages/console-client/public/index.html b/packages/console-app/public/index.html similarity index 100% rename from packages/console-client/public/index.html rename to packages/console-app/public/index.html diff --git a/packages/console-client/src/client.js b/packages/console-app/src/client.js similarity index 100% rename from packages/console-client/src/client.js rename to packages/console-app/src/client.js diff --git a/packages/console-client/src/components/AppBar.js b/packages/console-app/src/components/AppBar.js similarity index 100% rename from packages/console-client/src/components/AppBar.js rename to packages/console-app/src/components/AppBar.js diff --git a/packages/console-client/src/components/ControlButtons.js b/packages/console-app/src/components/ControlButtons.js similarity index 100% rename from packages/console-client/src/components/ControlButtons.js rename to packages/console-app/src/components/ControlButtons.js diff --git a/packages/console-client/src/components/Error.js b/packages/console-app/src/components/Error.js similarity index 100% rename from packages/console-client/src/components/Error.js rename to packages/console-app/src/components/Error.js diff --git a/packages/console-client/src/components/ErrorBoundary.js b/packages/console-app/src/components/ErrorBoundary.js similarity index 100% rename from packages/console-client/src/components/ErrorBoundary.js rename to packages/console-app/src/components/ErrorBoundary.js diff --git a/packages/console-app/src/components/Json.js b/packages/console-app/src/components/Json.js new file mode 100644 index 0000000..17ccfa8 --- /dev/null +++ b/packages/console-app/src/components/Json.js @@ -0,0 +1,26 @@ +// +// Copyright 2020 DxOS.org +// + +import React from 'react'; +import { makeStyles } from '@material-ui/core'; + +import { JsonTreeView } from '@dxos/react-ux'; + +import { omitDeep } from '../util/omit'; + +const useStyles = makeStyles(() => ({ + root: { + flex: 1 + } +})); + +const Json = ({ data }) => { + const classes = useStyles(); + + return ( + + ); +}; + +export default Json; diff --git a/packages/console-client/src/components/Log.js b/packages/console-app/src/components/Log.js similarity index 100% rename from packages/console-client/src/components/Log.js rename to packages/console-app/src/components/Log.js diff --git a/packages/console-client/src/components/PackageLink.js b/packages/console-app/src/components/PackageLink.js similarity index 100% rename from packages/console-client/src/components/PackageLink.js rename to packages/console-app/src/components/PackageLink.js diff --git a/packages/console-client/src/components/Panel.js b/packages/console-app/src/components/Panel.js similarity index 100% rename from packages/console-client/src/components/Panel.js rename to packages/console-app/src/components/Panel.js diff --git a/packages/console-client/src/components/Sidebar.js b/packages/console-app/src/components/Sidebar.js similarity index 100% rename from packages/console-client/src/components/Sidebar.js rename to packages/console-app/src/components/Sidebar.js diff --git a/packages/console-client/src/components/Table.js b/packages/console-app/src/components/Table.js similarity index 100% rename from packages/console-client/src/components/Table.js rename to packages/console-app/src/components/Table.js diff --git a/packages/console-client/src/components/TableCell.js b/packages/console-app/src/components/TableCell.js similarity index 100% rename from packages/console-client/src/components/TableCell.js rename to packages/console-app/src/components/TableCell.js diff --git a/packages/console-client/src/components/Toolbar.js b/packages/console-app/src/components/Toolbar.js similarity index 100% rename from packages/console-client/src/components/Toolbar.js rename to packages/console-app/src/components/Toolbar.js diff --git a/packages/console-client/src/containers/ConsoleContextProvider.js b/packages/console-app/src/containers/ConsoleContextProvider.js similarity index 100% rename from packages/console-client/src/containers/ConsoleContextProvider.js rename to packages/console-app/src/containers/ConsoleContextProvider.js diff --git a/packages/console-client/src/containers/Layout.js b/packages/console-app/src/containers/Layout.js similarity index 100% rename from packages/console-client/src/containers/Layout.js rename to packages/console-app/src/containers/Layout.js diff --git a/packages/console-client/src/containers/Main.js b/packages/console-app/src/containers/Main.js similarity index 89% rename from packages/console-client/src/containers/Main.js rename to packages/console-app/src/containers/Main.js index d0d3b9a..790db9f 100644 --- a/packages/console-client/src/containers/Main.js +++ b/packages/console-app/src/containers/Main.js @@ -2,7 +2,6 @@ // Copyright 2020 DxOS.org // -import debug from 'debug'; import React from 'react'; import { HashRouter, Redirect, Route, Switch } from 'react-router-dom'; import { ApolloProvider } from '@apollo/react-hooks'; @@ -11,11 +10,10 @@ import CssBaseline from '@material-ui/core/CssBaseline'; import { ErrorHandler } from '@dxos/debug'; -import config from '../../config.yml'; -import { build } from '../../version.json'; +import { build } from '../version.json'; -import { createTheme } from '../theme'; import { clientFactory } from '../client'; +import { createTheme } from '../theme'; import modules from '../modules'; import Layout from './Layout'; @@ -30,18 +28,15 @@ import Signaling from './panels/Signaling'; import Status from './panels/Status'; import WNS from './panels/wns/WNS'; -// TODO(burdon): Config object. -Object.assign(config, { build }); - -debug.enable(config.system.debug); - // Global error handler. const errorHandler = new ErrorHandler(); /** * Root application. */ -const Main = () => { +const Main = ({ config }) => { + Object.assign(config, { build }); + return ( diff --git a/packages/console-client/src/containers/StatusBar.js b/packages/console-app/src/containers/StatusBar.js similarity index 100% rename from packages/console-client/src/containers/StatusBar.js rename to packages/console-app/src/containers/StatusBar.js diff --git a/packages/console-client/src/containers/VersionCheck.js b/packages/console-app/src/containers/VersionCheck.js similarity index 87% rename from packages/console-client/src/containers/VersionCheck.js rename to packages/console-app/src/containers/VersionCheck.js index a5fc6f2..87e62be 100644 --- a/packages/console-client/src/containers/VersionCheck.js +++ b/packages/console-app/src/containers/VersionCheck.js @@ -7,8 +7,8 @@ import React, { useEffect, useState } from 'react'; import { useQuery } from '@apollo/react-hooks'; import { makeStyles } from '@material-ui/core'; -import SYSTEM_STATUS from '../../gql/system_status.graphql'; -import WNS_RECORDS from '../../gql/wns_records.graphql'; +import SYSTEM_STATUS from '../gql/system_status.graphql'; +import WNS_RECORDS from '../gql/wns_records.graphql'; import { useQueryStatusReducer } from '../hooks'; @@ -35,9 +35,10 @@ const VersionCheck = () => { // Check version. useEffect(() => { if (status && data) { - const { dxos: { image: current } } = JSON.parse(status.system_status.json); + const { dxos: { image: current } } = status.system_status; let latest = current; data.wns_records.json.forEach(({ attributes: { name, version } }) => { + // TODO(burdon): Filter by type (WRN?) if (name.startsWith('dxos/xbox:')) { if (compareVersions(version, latest) > 0) { latest = version; diff --git a/packages/console-client/src/containers/panels/Config.js b/packages/console-app/src/containers/panels/Config.js similarity index 100% rename from packages/console-client/src/containers/panels/Config.js rename to packages/console-app/src/containers/panels/Config.js diff --git a/packages/console-client/src/containers/panels/Metadata.js b/packages/console-app/src/containers/panels/Metadata.js similarity index 100% rename from packages/console-client/src/containers/panels/Metadata.js rename to packages/console-app/src/containers/panels/Metadata.js diff --git a/packages/console-client/src/containers/panels/Signaling.js b/packages/console-app/src/containers/panels/Signaling.js similarity index 100% rename from packages/console-client/src/containers/panels/Signaling.js rename to packages/console-app/src/containers/panels/Signaling.js diff --git a/packages/console-client/src/containers/panels/Status.js b/packages/console-app/src/containers/panels/Status.js similarity index 84% rename from packages/console-client/src/containers/panels/Status.js rename to packages/console-app/src/containers/panels/Status.js index 905db83..7ce45cc 100644 --- a/packages/console-client/src/containers/panels/Status.js +++ b/packages/console-app/src/containers/panels/Status.js @@ -7,7 +7,7 @@ import { useQuery } from '@apollo/react-hooks'; import Json from '../../components/Json'; -import SYSTEM_STATUS from '../../../gql/system_status.graphql'; +import SYSTEM_STATUS from '../../gql/system_status.graphql'; import { ConsoleContext, useQueryStatusReducer } from '../../hooks'; @@ -27,7 +27,7 @@ const Status = () => { } > - + ); }; diff --git a/packages/console-client/src/containers/panels/apps/AppRecords.js b/packages/console-app/src/containers/panels/apps/AppRecords.js similarity index 97% rename from packages/console-client/src/containers/panels/apps/AppRecords.js rename to packages/console-app/src/containers/panels/apps/AppRecords.js index ef524d7..f8b1767 100644 --- a/packages/console-client/src/containers/panels/apps/AppRecords.js +++ b/packages/console-app/src/containers/panels/apps/AppRecords.js @@ -5,7 +5,7 @@ import React, { useContext } from 'react'; import { useQuery } from '@apollo/react-hooks'; -import WNS_RECORDS from '../../../../gql/wns_records.graphql'; +import WNS_RECORDS from '../../../gql/wns_records.graphql'; import { ConsoleContext, useQueryStatusReducer, useSorter } from '../../../hooks'; diff --git a/packages/console-client/src/containers/panels/apps/Apps.js b/packages/console-app/src/containers/panels/apps/Apps.js similarity index 100% rename from packages/console-client/src/containers/panels/apps/Apps.js rename to packages/console-app/src/containers/panels/apps/Apps.js diff --git a/packages/console-client/src/containers/panels/bots/BotRecords.js b/packages/console-app/src/containers/panels/bots/BotRecords.js similarity index 96% rename from packages/console-client/src/containers/panels/bots/BotRecords.js rename to packages/console-app/src/containers/panels/bots/BotRecords.js index 5e60b6c..8b53d58 100644 --- a/packages/console-client/src/containers/panels/bots/BotRecords.js +++ b/packages/console-app/src/containers/panels/bots/BotRecords.js @@ -5,7 +5,7 @@ import React, { useContext } from 'react'; import { useQuery } from '@apollo/react-hooks'; -import WNS_RECORDS from '../../../../gql/wns_records.graphql'; +import WNS_RECORDS from '../../../gql/wns_records.graphql'; import { ConsoleContext, useQueryStatusReducer, useSorter } from '../../../hooks'; diff --git a/packages/console-client/src/containers/panels/bots/Bots.js b/packages/console-app/src/containers/panels/bots/Bots.js similarity index 100% rename from packages/console-client/src/containers/panels/bots/Bots.js rename to packages/console-app/src/containers/panels/bots/Bots.js diff --git a/packages/console-client/src/containers/panels/ipfs/IPFS.js b/packages/console-app/src/containers/panels/ipfs/IPFS.js similarity index 90% rename from packages/console-client/src/containers/panels/ipfs/IPFS.js rename to packages/console-app/src/containers/panels/ipfs/IPFS.js index 593593f..e99019c 100644 --- a/packages/console-client/src/containers/panels/ipfs/IPFS.js +++ b/packages/console-app/src/containers/panels/ipfs/IPFS.js @@ -5,7 +5,7 @@ import React from 'react'; import { useQuery } from '@apollo/react-hooks'; -import IPFS_STATUS from '../../../../gql/ipfs_status.graphql'; +import IPFS_STATUS from '../../../gql/ipfs_status.graphql'; import { useQueryStatusReducer } from '../../../hooks'; diff --git a/packages/console-client/src/containers/panels/wns/WNS.js b/packages/console-app/src/containers/panels/wns/WNS.js similarity index 100% rename from packages/console-client/src/containers/panels/wns/WNS.js rename to packages/console-app/src/containers/panels/wns/WNS.js diff --git a/packages/console-client/src/containers/panels/wns/WNSLog.js b/packages/console-app/src/containers/panels/wns/WNSLog.js similarity index 90% rename from packages/console-client/src/containers/panels/wns/WNSLog.js rename to packages/console-app/src/containers/panels/wns/WNSLog.js index 8150a2a..d0f40bb 100644 --- a/packages/console-client/src/containers/panels/wns/WNSLog.js +++ b/packages/console-app/src/containers/panels/wns/WNSLog.js @@ -5,7 +5,7 @@ import React, { useContext } from 'react'; import { useQuery } from '@apollo/react-hooks'; -import WNS_LOG from '../../../../gql/wns_log.graphql'; +import WNS_LOG from '../../../gql/wns_log.graphql'; import { ConsoleContext, useQueryStatusReducer } from '../../../hooks'; diff --git a/packages/console-client/src/containers/panels/wns/WNSRecords.js b/packages/console-app/src/containers/panels/wns/WNSRecords.js similarity index 95% rename from packages/console-client/src/containers/panels/wns/WNSRecords.js rename to packages/console-app/src/containers/panels/wns/WNSRecords.js index 4a37d02..7e1260b 100644 --- a/packages/console-client/src/containers/panels/wns/WNSRecords.js +++ b/packages/console-app/src/containers/panels/wns/WNSRecords.js @@ -13,7 +13,7 @@ import TableHead from '@material-ui/core/TableHead'; import TableRow from '@material-ui/core/TableRow'; import TableBody from '@material-ui/core/TableBody'; -import WNS_RECORDS from '../../../../gql/wns_records.graphql'; +import WNS_RECORDS from '../../../gql/wns_records.graphql'; import { ConsoleContext, useQueryStatusReducer, useSorter } from '../../../hooks'; @@ -26,9 +26,10 @@ const types = [ { key: null, label: 'ALL' }, { key: 'wrn:xbox', label: 'XBox' }, { key: 'wrn:resource', label: 'Resource' }, + { key: 'wrn:service', label: 'Service' }, { key: 'wrn:app', label: 'App' }, { key: 'wrn:bot', label: 'Bot' }, - { key: 'wrn:type', label: 'Type' }, + { key: 'wrn:type', label: 'Type' } ]; const useStyles = makeStyles(theme => ({ diff --git a/packages/console-client/src/containers/panels/wns/WNSStatus.js b/packages/console-app/src/containers/panels/wns/WNSStatus.js similarity index 90% rename from packages/console-client/src/containers/panels/wns/WNSStatus.js rename to packages/console-app/src/containers/panels/wns/WNSStatus.js index 28d0804..27dc2c6 100644 --- a/packages/console-client/src/containers/panels/wns/WNSStatus.js +++ b/packages/console-app/src/containers/panels/wns/WNSStatus.js @@ -5,7 +5,7 @@ import React, { useContext } from 'react'; import { useQuery } from '@apollo/react-hooks'; -import WNS_STATUS from '../../../../gql/wns_status.graphql'; +import WNS_STATUS from '../../../gql/wns_status.graphql'; import { ConsoleContext, useQueryStatusReducer } from '../../../hooks'; diff --git a/packages/console-client/gql/ipfs_status.graphql b/packages/console-app/src/gql/ipfs_status.graphql similarity index 88% rename from packages/console-client/gql/ipfs_status.graphql rename to packages/console-app/src/gql/ipfs_status.graphql index 5621aca..f4ee66f 100644 --- a/packages/console-client/gql/ipfs_status.graphql +++ b/packages/console-app/src/gql/ipfs_status.graphql @@ -2,7 +2,7 @@ # Copyright 2020 DxOS.org # -{ +query { ipfs_status { json } diff --git a/packages/console-app/src/gql/system_status.graphql b/packages/console-app/src/gql/system_status.graphql new file mode 100644 index 0000000..5ebc1cb --- /dev/null +++ b/packages/console-app/src/gql/system_status.graphql @@ -0,0 +1,21 @@ +# +# Copyright 2020 DxOS.org +# + +query { + system_status { + timestamp + dxos { + image + } + system { + network { + address + } + nodejs { + version + environment + } + } + } +} diff --git a/packages/console-client/gql/wns_action.graphql b/packages/console-app/src/gql/wns_action.graphql similarity index 100% rename from packages/console-client/gql/wns_action.graphql rename to packages/console-app/src/gql/wns_action.graphql diff --git a/packages/console-client/gql/wns_log.graphql b/packages/console-app/src/gql/wns_log.graphql similarity index 90% rename from packages/console-client/gql/wns_log.graphql rename to packages/console-app/src/gql/wns_log.graphql index a477f8f..ab5f741 100644 --- a/packages/console-client/gql/wns_log.graphql +++ b/packages/console-app/src/gql/wns_log.graphql @@ -2,7 +2,7 @@ # Copyright 2020 DxOS.org # -{ +query { wns_log @client { timestamp log diff --git a/packages/console-client/gql/wns_records.graphql b/packages/console-app/src/gql/wns_records.graphql similarity index 100% rename from packages/console-client/gql/wns_records.graphql rename to packages/console-app/src/gql/wns_records.graphql diff --git a/packages/console-client/gql/wns_status.graphql b/packages/console-app/src/gql/wns_status.graphql similarity index 91% rename from packages/console-client/gql/wns_status.graphql rename to packages/console-app/src/gql/wns_status.graphql index b3d4ad5..3175792 100644 --- a/packages/console-client/gql/wns_status.graphql +++ b/packages/console-app/src/gql/wns_status.graphql @@ -2,7 +2,7 @@ # Copyright 2020 DxOS.org # -{ +query { wns_status @client { timestamp json diff --git a/packages/console-client/src/hooks/context.js b/packages/console-app/src/hooks/context.js similarity index 100% rename from packages/console-client/src/hooks/context.js rename to packages/console-app/src/hooks/context.js diff --git a/packages/console-client/src/hooks/index.js b/packages/console-app/src/hooks/index.js similarity index 100% rename from packages/console-client/src/hooks/index.js rename to packages/console-app/src/hooks/index.js diff --git a/packages/console-client/src/hooks/registry.js b/packages/console-app/src/hooks/registry.js similarity index 100% rename from packages/console-client/src/hooks/registry.js rename to packages/console-app/src/hooks/registry.js diff --git a/packages/console-client/src/hooks/sorter.js b/packages/console-app/src/hooks/sorter.js similarity index 100% rename from packages/console-client/src/hooks/sorter.js rename to packages/console-app/src/hooks/sorter.js diff --git a/packages/console-client/src/hooks/status.js b/packages/console-app/src/hooks/status.js similarity index 90% rename from packages/console-client/src/hooks/status.js rename to packages/console-app/src/hooks/status.js index 5bc0e21..564b1cd 100644 --- a/packages/console-client/src/hooks/status.js +++ b/packages/console-app/src/hooks/status.js @@ -29,11 +29,11 @@ export const useQueryStatusReducer = ({ loading, error, data }) => { useEffect(() => { if (loading) { - setTimeout(() => setStatus({ loading })); + setStatus({ loading }); } if (error) { - setTimeout(() => setStatus({ error })); + setStatus({ error }); } }, [loading, error]); diff --git a/packages/console-client/src/icons/DXOS.js b/packages/console-app/src/icons/DXOS.js similarity index 100% rename from packages/console-client/src/icons/DXOS.js rename to packages/console-app/src/icons/DXOS.js diff --git a/packages/console-client/src/icons/Logo.js b/packages/console-app/src/icons/Logo.js similarity index 100% rename from packages/console-client/src/icons/Logo.js rename to packages/console-app/src/icons/Logo.js diff --git a/packages/console-app/src/index.js b/packages/console-app/src/index.js new file mode 100644 index 0000000..62f8198 --- /dev/null +++ b/packages/console-app/src/index.js @@ -0,0 +1,9 @@ +// +// Copyright 2020 DxOS.org +// + +import Main from './containers/Main'; + +export { + Main +}; diff --git a/packages/console-app/src/main.js b/packages/console-app/src/main.js new file mode 100644 index 0000000..de8f5b8 --- /dev/null +++ b/packages/console-app/src/main.js @@ -0,0 +1,15 @@ +// +// Copyright 2020 DxOS.org +// + +import debug from 'debug'; +import React from 'react'; +import { render } from 'react-dom'; + +import config from '../config.yml'; + +import Main from './containers/Main'; + +debug.enable(config.system.debug); + +render(
, document.getElementById('root')); diff --git a/packages/console-client/src/modules.js b/packages/console-app/src/modules.js similarity index 100% rename from packages/console-client/src/modules.js rename to packages/console-app/src/modules.js diff --git a/packages/console-client/src/resolvers.js b/packages/console-app/src/resolvers.js similarity index 84% rename from packages/console-client/src/resolvers.js rename to packages/console-app/src/resolvers.js index 82cbbd7..a93ccb6 100644 --- a/packages/console-client/src/resolvers.js +++ b/packages/console-app/src/resolvers.js @@ -59,19 +59,15 @@ export const createResolvers = config => { wns_log: async () => { log('WNS log...'); - const data = await registry.getLogs(); - - // TODO(burdon): Bug returns blank line at end. - const filtered = data.map(line => line).filter(Boolean); - // Cache and merge previous state. - let i = filtered.findIndex(line => line === cachedLog[cachedLog.length - 1]); + const data = await registry.getLogs(); + let i = data.findIndex(line => line === cachedLog[cachedLog.length - 1]); if (i === -1) { - cachedLog = filtered; + cachedLog = data; } else { i++; - for (; i < filtered.length - 1; i++) { - cachedLog.push(filtered[i]); + for (; i < data.length - 1; i++) { + cachedLog.push(data[i]); } // Trim. diff --git a/packages/console-client/src/theme.js b/packages/console-app/src/theme.js similarity index 100% rename from packages/console-client/src/theme.js rename to packages/console-app/src/theme.js diff --git a/packages/console-client/src/util/config.js b/packages/console-app/src/util/config.js similarity index 100% rename from packages/console-client/src/util/config.js rename to packages/console-app/src/util/config.js diff --git a/packages/console-client/src/util/config.test.js b/packages/console-app/src/util/config.test.js similarity index 100% rename from packages/console-client/src/util/config.test.js rename to packages/console-app/src/util/config.test.js diff --git a/packages/console-app/src/util/omit.js b/packages/console-app/src/util/omit.js new file mode 100644 index 0000000..9fa884f --- /dev/null +++ b/packages/console-app/src/util/omit.js @@ -0,0 +1,22 @@ +// +// Copyright 2020 DxOS.org +// + +// TODO(burdon): Factor out. +export const omitDeep = (value, key) => { + if (Array.isArray(value)) { + return value.map(i => omitDeep(i, key)); + } else if (typeof value === 'object' && value !== null) { + return Object.keys(value).reduce((newObject, k) => { + if (k === key) { + return newObject; + } + + return Object.assign({ + [k]: omitDeep(value[k], key), + }, newObject); + }, {}); + } + + return value; +}; diff --git a/packages/console-app/src/version.json b/packages/console-app/src/version.json new file mode 100644 index 0000000..bf22c00 --- /dev/null +++ b/packages/console-app/src/version.json @@ -0,0 +1,7 @@ +{ + "build": { + "name": "@dxos/console-app", + "buildDate": "2020-05-27T22:04:52.661Z", + "version": "1.0.0-beta.0" + } +} diff --git a/packages/console-client/version.ejs b/packages/console-app/version.ejs similarity index 100% rename from packages/console-client/version.ejs rename to packages/console-app/version.ejs diff --git a/packages/console-client/webpack-analyzer.config.js b/packages/console-app/webpack-analyzer.config.js similarity index 100% rename from packages/console-client/webpack-analyzer.config.js rename to packages/console-app/webpack-analyzer.config.js diff --git a/packages/console-client/webpack-common.config.js b/packages/console-app/webpack-common.config.js similarity index 78% rename from packages/console-client/webpack-common.config.js rename to packages/console-app/webpack-common.config.js index b1d8e3b..cc54831 100644 --- a/packages/console-client/webpack-common.config.js +++ b/packages/console-app/webpack-common.config.js @@ -9,10 +9,10 @@ const webpack = require('webpack'); const PUBLIC_URL = process.env.PUBLIC_URL || ''; +// TODO(burdon): Remove. const STACK_CONFIG = process.env.CONFIG || 'default'; module.exports = { - devtool: 'eval-source-map', devServer: { @@ -30,7 +30,6 @@ module.exports = { fs: 'empty' }, - // TODO(burdon): Config production path for apollo (diff webpack config). output: { path: `${__dirname}/dist/production`, filename: '[name].bundle.js', @@ -74,9 +73,6 @@ module.exports = { // NOTE: Must be defined below Dotenv (otherwise will override). // https://webpack.js.org/plugins/environment-plugin new webpack.EnvironmentPlugin({ - PUBLIC_URL: String(PUBLIC_URL), - STACK_CONFIG: String(STACK_CONFIG), - DEBUG: '' }), // Define the build config file based on the target. @@ -87,14 +83,14 @@ module.exports = { // https://www.npmjs.com/package/webpack-version-file-plugin new VersionFile({ + template: path.join(__dirname, 'version.ejs'), packageFile: path.join(__dirname, 'package.json'), - outputFile: path.join(__dirname, 'version.json') - }), + outputFile: path.join(__dirname, 'src', 'version.json') + }) ], module: { rules: [ - // js { test: /\.js$/, exclude: /(node_modules)/, @@ -108,27 +104,6 @@ module.exports = { test: /\.ya?ml$/, type: 'json', use: 'yaml-loader' - }, - - // https://www.apollographql.com/docs/react/integrations/webpack - { - test: /\.(graphql|gql)$/, - exclude: /node_modules/, - loader: 'graphql-tag/loader' - }, - - // fonts - { - test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/, - use: [ - { - loader: 'file-loader', - options: { - name: '[name].[ext]', - outputPath: 'fonts/' - } - } - ] } ] }, diff --git a/packages/console-client/webpack.config.js b/packages/console-app/webpack.config.js similarity index 94% rename from packages/console-client/webpack.config.js rename to packages/console-app/webpack.config.js index 4ee2141..04ea82f 100644 --- a/packages/console-client/webpack.config.js +++ b/packages/console-app/webpack.config.js @@ -8,8 +8,7 @@ const HtmlWebPackPlugin = require('html-webpack-plugin'); const commonConfig = require('./webpack-common.config'); module.exports = merge(commonConfig, { - - entry: './src/main', + entry: './src/main.js', plugins: [ // https://github.com/jantimon/html-webpack-plugin#options diff --git a/packages/console-client/gql/system_status.graphql b/packages/console-client/gql/system_status.graphql deleted file mode 100644 index 7037633..0000000 --- a/packages/console-client/gql/system_status.graphql +++ /dev/null @@ -1,10 +0,0 @@ -# -# Copyright 2020 DxOS.org -# - -{ - system_status { - timestamp - json - } -} diff --git a/packages/console-client/src/components/Json.js b/packages/console-client/src/components/Json.js deleted file mode 100644 index ce87470..0000000 --- a/packages/console-client/src/components/Json.js +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright 2020 DxOS.org -// - -import isObject from 'lodash.isobject'; -import omit from 'lodash.omit'; -import transform from 'lodash.transform'; -import React from 'react'; -import { makeStyles } from '@material-ui/core'; - -import { JsonTreeView } from '@dxos/react-ux'; - -const useStyles = makeStyles(() => ({ - root: { - flex: 1 - } -})); - -/** - * Remove Apollo __typename directive. - * @param {Object} data - * @returns {Object} - */ -const removeTypename = data => transform(data, (result, value, key) => { - if (key !== '__typename') { - result[key] = isObject(value) ? ('__typename' in value ? omit(value, '__typename') : value) : value; - } -}, {}); - -const Json = ({ data }) => { - const classes = useStyles(); - - // TODO(burdon): Bug expands when updated. - return ( - - ); -}; - -export default Json; diff --git a/packages/console-client/src/index.js b/packages/console-client/src/index.js deleted file mode 100644 index 7a340ac..0000000 --- a/packages/console-client/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// -// Copyright 2020 DxOS.org -// - -export * from './hooks'; diff --git a/packages/console-client/src/main.js b/packages/console-client/src/main.js deleted file mode 100644 index 87e279e..0000000 --- a/packages/console-client/src/main.js +++ /dev/null @@ -1,10 +0,0 @@ -// -// Copyright 2020 DxOS.org -// - -import React from 'react'; -import { render } from 'react-dom'; - -import Main from './containers/Main'; - -render(
, document.getElementById('root')); diff --git a/packages/console-client/version.json b/packages/console-client/version.json deleted file mode 100644 index 1c14713..0000000 --- a/packages/console-client/version.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "build": { - "name": "@dxos/console-client", - "buildDate": "2020-05-27T01:16:27.565Z", - "version": "1.0.0-beta.0" - } -} diff --git a/packages/console-server/README.md b/packages/console-server/README.md index f5c9f10..da24e7f 100644 --- a/packages/console-server/README.md +++ b/packages/console-server/README.md @@ -4,9 +4,41 @@ Apollo GraphQL client. ## Usage +Use the following command to run the server at: http://localhost:4000 + ```bash - yarn + yarn start +``` + +To test the Console app, the `@dxos/console-app` must be built first: + +```bash + cd ../console-app + yarn build +``` + +Use the following command to run the client in development mode (via the `webpack-dev-server`) at http://localhost:8080 + +```bash + yarn dev +``` + +To build the client and serve it directly from the server: + +```bash + yarn build yarn start ``` -http://localhost:4000 +Then open the app at: http://localhost:4000/console + + +## Production + +When running the Console server, either set the `CONFIG_FILE` environment variable or set the `--config` option. + +```bash + ./bin/console.js --config ./config.yml +``` + +NOTE: The server passes its configuration directly to the Console app when it is loaded. diff --git a/packages/console-server/babel.config.js b/packages/console-server/babel.config.js index 0aa7e84..4afbf90 100644 --- a/packages/console-server/babel.config.js +++ b/packages/console-server/babel.config.js @@ -4,20 +4,23 @@ module.exports = { presets: [ - [ - '@babel/preset-env' - ] + '@babel/preset-env', + '@babel/preset-react' ], plugins: [ [ 'babel-plugin-inline-import', { extensions: [ - '.graphql', - '.proto', - '.txt' + '.mustache', + '.graphql' ] } ], + + // Allows export of components importing GQL files (without webpack). + 'import-graphql', + 'inline-json-import', + '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-export-default-from' ] diff --git a/packages/console-server/bin/console.js b/packages/console-server/bin/console.js new file mode 100755 index 0000000..de2212c --- /dev/null +++ b/packages/console-server/bin/console.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +module.exports = require('../dist/es/server/main.js'); diff --git a/packages/console-client/config.yml b/packages/console-server/config.yml similarity index 70% rename from packages/console-client/config.yml rename to packages/console-server/config.yml index 9f1c389..ac97bae 100644 --- a/packages/console-client/config.yml +++ b/packages/console-server/config.yml @@ -3,6 +3,8 @@ # NOTE: Set CONFIG_FILE to swap out this config file. # +# TODO(burdon): Set defaults. + app: title: 'Console' org': 'DxOS' @@ -18,23 +20,19 @@ api: system: debug: 'dxos:console:*' - xbox: - image: '/opt/xbox/IMAGE' services: app: prefix: '/app' - server: 'http://127.0.0.1:5999' # TODO(burdon): ??? + server: 'http://127.0.0.1:5999' wns: server: 'https://node1.dxos.network/wns/api' webui: 'https://node1.dxos.network/wns/webui' - # server: 'http://127.0.0.1:9473/api' - # webui: 'http://127.0.0.1:9473/webui' signal: server: 'http://127.0.0.1:4000' - api: 'http://127.0.0.1:4000' # TODO(burdon): ??? + api: 'http://127.0.0.1:4000' ipfs: server: '/ip4/127.0.0.1/tcp/5001' diff --git a/packages/console-server/package.json b/packages/console-server/package.json index 4beb428..dfc11b2 100644 --- a/packages/console-server/package.json +++ b/packages/console-server/package.json @@ -1,12 +1,24 @@ { - "name": "@dxos/console-server", + "name": "@dxos/console", "version": "1.0.0-beta.0", "description": "DxOS Console Server", - "main": "index.js", + "main": "dist/es/index.js", + "bin": { + "console": "bin/console.js" + }, + "files": [ + "bin/", + "dist/es" + ], "scripts": { + "build": "npm run clean && npm run build:client && npm run build:server", + "build:client": "PUBLIC_URL=/console webpack --mode development", + "build:server": "babel ./src --out-dir ./dist/es --ignore \"**/*.test.js\" --copy-files", + "clean": "rm -rf ./dist", + "dev": "VERBOSE=true webpack-dev-server --mode development --watch", "lint": "semistandard 'src/**/*.js'", "test": "jest --rootDir ./src --passWithNoTests --no-cache", - "start": "BABEL_DISABLE_CACHE=1 nodemon --exec babel-node ./src/main.js" + "start": "CONFIG_FILE=./config.yml BABEL_DISABLE_CACHE=1 nodemon --exec babel-node src/server/main.js -- --verbose" }, "author": "DxOS.org", "license": "GPL-3.0", @@ -17,8 +29,10 @@ "testEnvironment": "node" }, "dependencies": { + "@babel/polyfill": "^7.8.7", "@babel/runtime": "^7.8.7", - "@dxos/console-client": "^1.0.0-beta.0", + "@dxos/console-app": "^1.0.0-beta.0", + "@wirelineio/wns-schema": "^0.1.1", "apollo-boost": "^0.4.9", "apollo-server-express": "^2.13.1", "debug": "^4.1.1", @@ -26,10 +40,17 @@ "express-graphql": "^0.9.0", "graphql": "^15.0.0", "graphql-tag": "^2.10.3", + "graphql-tools": "^6.0.3", "ipfs-http-client": "^44.1.0", "js-yaml": "^3.14.0", + "lodash.defaultsdeep": "^4.6.1", + "lodash.pick": "^4.4.0", + "mustache-express": "^1.3.0", + "react": "^16.13.1", "react-dom": "^16.13.1", - "source-map-support": "^0.5.12" + "source-map-support": "^0.5.12", + "systeminformation": "^4.26.5", + "yargs": "^15.3.1" }, "devDependencies": { "@babel/cli": "7.4.4", @@ -40,8 +61,14 @@ "@babel/preset-env": "^7.4.5", "babel-eslint": "^10.0.3", "babel-jest": "^24.8.0", + "babel-loader": "^8.1.0", "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-import-graphql": "^2.7.0", "babel-plugin-inline-import": "^3.0.0", + "babel-plugin-inline-json-import": "^0.3.2", + "body-parser": "^1.19.0", + "compression": "^1.7.4", + "dotenv-webpack": "^1.8.0", "eslint": "^6.7.2", "eslint-config-semistandard": "^15.0.0", "eslint-config-standard": "^14.1.1", @@ -54,7 +81,13 @@ "eslint-plugin-standard": "^4.0.1", "jest": "^24.8.0", "nodemon": "^2.0.4", - "semistandard": "^14.2.0" + "react": "^16.13.1", + "react-dom": "^16.13.1", + "semistandard": "^14.2.0", + "webpack": "^4.41.2", + "webpack-cli": "^3.3.10", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" }, "publishConfig": { "access": "public" diff --git a/packages/console-server/public/index.html b/packages/console-server/public/index.html new file mode 100644 index 0000000..835bbfd --- /dev/null +++ b/packages/console-server/public/index.html @@ -0,0 +1,10 @@ + + + + + <%= title %> + + +
+ + diff --git a/packages/console-server/src/client/main.js b/packages/console-server/src/client/main.js new file mode 100644 index 0000000..b8328b5 --- /dev/null +++ b/packages/console-server/src/client/main.js @@ -0,0 +1,16 @@ +// +// Copyright 2020 DxOS.org +// + +import debug from 'debug'; +import React from 'react'; +import { render } from 'react-dom'; + +import { Main } from '@dxos/console-app'; + +// Load from global printed into HTML page via template. +const { config } = window.__DXOS__; + +debug.enable(config.system.debug); + +render(
, document.getElementById('root')); diff --git a/packages/console-server/src/gql/api.graphql b/packages/console-server/src/gql/api.graphql index 1b1db8a..62780ad 100644 --- a/packages/console-server/src/gql/api.graphql +++ b/packages/console-server/src/gql/api.graphql @@ -2,6 +2,12 @@ # Copyright 2020 DxOS.org # +# TODO(burdon): Replace generic results with schema. +type JSONResult { + timestamp: String! + json: String! +} + type Result { timestamp: String! code: Int! @@ -12,27 +18,20 @@ type Log { log: [String]! } -# TODO(burdon): Generic result. -type JSONResult { - timestamp: String! - json: String! -} - # # Schema # -type Query { - system_status: JSONResult! - ipfs_status: JSONResult! - wns_status: JSONResult! - # TODO(burdon): Import WNS schema! - wns_records(type: String): JSONResult! - wns_log: Log! +type Mutation { + action(command: String!): Result! } -type Mutation { - wns_action(command: String!): Result! +type Query { + system_status: SystemStatus! + ipfs_status: JSONResult! + wns_status: JSONResult! + wns_records(type: String): JSONResult! + wns_log: Log! } schema { diff --git a/packages/console-server/src/gql/system.graphql b/packages/console-server/src/gql/system.graphql new file mode 100644 index 0000000..9bc71f9 --- /dev/null +++ b/packages/console-server/src/gql/system.graphql @@ -0,0 +1,27 @@ +# +# Copyright 2020 DxOS.org +# + +type DXOSInfo { + image: String +} + +type NetworkInfo { + address: [String] +} + +type NodeInfo { + version: String + environment: String +} + +type SystemInfo { + network: NetworkInfo + nodejs: NodeInfo +} + +type SystemStatus { + timestamp: String! + dxos: DXOSInfo + system: SystemInfo +} diff --git a/packages/console-server/src/main.js b/packages/console-server/src/main.js deleted file mode 100644 index b4bc6dc..0000000 --- a/packages/console-server/src/main.js +++ /dev/null @@ -1,101 +0,0 @@ -// -// Copyright 2020 DxOS.org -// - -import debug from 'debug'; -import express from 'express'; -import fs from 'fs'; -import path from 'path'; -import yaml from 'js-yaml'; -import { ApolloServer, gql } from 'apollo-server-express'; -import { print } from 'graphql/language'; - -import SYSTEM_STATUS from '@dxos/console-client/gql/system_status.graphql'; - -import { createResolvers } from './resolvers'; - -import SCHEMA from './gql/api.graphql'; - -const config = yaml.safeLoad( - fs.readFileSync(path.join(__dirname, '../../../node_modules/@dxos/console-client/config.yml'))); - -const log = debug('dxos:console:server'); - -debug.enable(config.system.debug); - -// -// Express server. -// - -const app = express(); - -// -// CORS -// - -// import cors from 'cors' -// https://expressjs.com/en/resources/middleware/cors.html -// https://www.prisma.io/blog/enabling-cors-for-express-graphql-apollo-server-1ef999bfb38d -// app.use(cors({ -// origin: true, -// credentials: true -// })); - -// -// React app -// - -const { app: { publicUrl } } = config; - -// TODO(burdon): Load via WNS. -app.get(`${publicUrl}(/:filePath)?`, (req, res) => { - const { filePath = 'index.html' } = req.params; - const file = path.join(__dirname, '../../../node_modules/@dxos/console-client/dist/production', filePath); - res.sendFile(file); -}); - -// -// Apollo Server -// https://www.apollographql.com/docs/apollo-server/api/apollo-server -// - -const server = new ApolloServer({ - typeDefs: SCHEMA, - - resolvers: createResolvers(config), - - // https://www.apollographql.com/docs/apollo-server/testing/graphql-playground - // https://github.com/prisma-labs/graphql-playground#usage - // introspection: true, - playground: { - settings: { - 'editor.theme': 'light' - }, - tabs: [ - { - name: 'Status', - endpoint: config.api.path, - query: print(gql(SYSTEM_STATUS)) - } - ] - } -}); - -// -// Apollo middleware -// https://www.apollographql.com/docs/apollo-server/api/apollo-server/#apolloserverapplymiddleware -// - -server.applyMiddleware({ - app, - path: config.api.path -}); - -// -// Start server -// - -const { api: { port } } = config; -app.listen({ port }, () => { - log(`Running: http://localhost:${port}`); -}); diff --git a/packages/console-server/src/resolvers.js b/packages/console-server/src/resolvers.js deleted file mode 100644 index de5a764..0000000 --- a/packages/console-server/src/resolvers.js +++ /dev/null @@ -1,82 +0,0 @@ -// -// Copyright 2020 DxOS.org -// - -import debug from 'debug'; -import IpfsHttpClient from 'ipfs-http-client'; - -const log = debug('dxos:console:server:resolvers'); - -const timestamp = () => new Date().toUTCString(); - -/** - * Resolvers - * https://www.apollographql.com/docs/graphql-tools/resolvers - * @param config - */ -export const createResolvers = config => ({ - - // TODO(burdon): Auth mutations. - // https://www.apollographql.com/docs/apollo-server/data/errors/#codes - - Mutation: { - // - // WNS - // - - wns_action: async (_, { command }) => { - log(`WNS action: ${command}`); - - return { - timestamp: timestamp(), - code: 0 - }; - } - }, - - Query: { - // - // System - // - - // TODO(burdon): System calls. - system_status: () => { - return { - timestamp: timestamp(), - json: JSON.stringify({ - dxos: { - image: '0.0.1' - } - }) - }; - }, - - // - // IPFS - // TODO(burdon): Call from client? - // https://github.com/ipfs/js-ipfs - // https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs-http-client#api - // - - ipfs_status: async () => { - log('Calling IPFS...'); - - // TODO(burdon): Config. - // NOTE: Hangs if server not running. - const ipfs = new IpfsHttpClient('/ip4/127.0.0.1/tcp/5001'); - - const version = await ipfs.version(); - const status = await ipfs.id(); - - console.log(version); - log('Done'); - - return { - json: JSON.stringify({ - version, - status - }) - }; - } - } -}); diff --git a/packages/console-server/src/resolvers/index.js b/packages/console-server/src/resolvers/index.js new file mode 100644 index 0000000..d0fcd65 --- /dev/null +++ b/packages/console-server/src/resolvers/index.js @@ -0,0 +1,32 @@ +// +// Copyright 2020 DxOS.org +// + +import debug from 'debug'; +import defaultsDeep from 'lodash.defaultsdeep'; + +import { ipfsResolvers } from './ipfs'; +import { systemResolvers } from './system'; + +const log = debug('dxos:console:server:resolvers'); + +/** + * Resolvers + * https://www.apollographql.com/docs/graphql-tools/resolvers + */ +export const resolvers = defaultsDeep({ + + // TODO(burdon): Auth. + // https://www.apollographql.com/docs/apollo-server/data/errors/#codes + + Mutation: { + action: async (_, { command }) => { + log(`WNS action: ${command}`); + + return { + timestamp: new Date().toUTCString(), + code: 0 + }; + } + } +}, ipfsResolvers, systemResolvers); diff --git a/packages/console-server/src/resolvers/ipfs.js b/packages/console-server/src/resolvers/ipfs.js new file mode 100644 index 0000000..40ab445 --- /dev/null +++ b/packages/console-server/src/resolvers/ipfs.js @@ -0,0 +1,36 @@ +// +// Copyright 2020 DxOS.org +// + +import debug from 'debug'; +import IpfsHttpClient from 'ipfs-http-client'; +const log = debug('dxos:console:server:resolvers'); + +export const ipfsResolvers = { + Query: { + // + // IPFS + // TODO(burdon): Call from client? + // https://github.com/ipfs/js-ipfs + // https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs-http-client#api + // + + ipfs_status: async (_, __, { config }) => { + log('Calling IPFS...'); + + // NOTE: Hangs if server not running. + const ipfs = new IpfsHttpClient(config.services.ipfs.server); + + const version = await ipfs.version(); + const status = await ipfs.id(); + + return { + timestamp: new Date().toUTCString(), + json: JSON.stringify({ + version, + status + }) + }; + } + } +}; diff --git a/packages/console-server/src/resolvers/system.js b/packages/console-server/src/resolvers/system.js new file mode 100644 index 0000000..5e7e426 --- /dev/null +++ b/packages/console-server/src/resolvers/system.js @@ -0,0 +1,91 @@ +// +// Copyright 2020 DxOS.org +// + +import moment from 'moment'; +import pick from 'lodash.pick'; +import os from 'os'; +import si from 'systeminformation'; + +const num = new Intl.NumberFormat('en', { maximumSignificantDigits: 3 }); + +const size = (n, unit) => { + const units = { + K: 3, + M: 6, + G: 9, + T: 12 + }; + + const power = units[unit] || 0; + + return num.format(Math.round(n / (10 ** power))) + (unit ? ` ${unit}` : ''); +}; + +/** + * Get system inforamtion. + * https://www.npmjs.com/package/systeminformation + */ +const getSystemInfo = async () => { + const ifaces = os.networkInterfaces(); + const addresses = Object.entries(ifaces).reduce((result, [, values]) => { + values.forEach(({ family, address }) => { + if (family === 'IPv4' && address !== '127.0.0.1') { + result.push(address); + } + }); + return result; + }, []); + + const cpu = await si.cpu(); + const memory = await si.mem(); + const device = await si.system(); + + return { + cpu: pick(cpu, 'brand', 'cores', 'manufacturer', 'vendor'), + + memory: { + total: size(memory.total, 'M'), + free: size(memory.free, 'M'), + used: size(memory.used, 'M'), + swaptotal: size(memory.swaptotal, 'M') + }, + + device: pick(device, 'model', 'serial', 'version'), + + network: { + address: addresses + }, + + // https://nodejs.org/api/os.html + os: { + arch: os.arch(), + type: os.type(), + platform: os.platform(), + version: os.version ? os.version() : undefined, // Node > 13 + uptime: moment().subtract(os.uptime(), 'seconds').fromNow() + }, + + nodejs: { + version: process.version, + environment: process.env.NODE_ENV + } + }; +}; + +export const systemResolvers = { + Query: { + system_status: async () => { + const system = await getSystemInfo(); + + return { + timestamp: new Date().toUTCString(), + dxos: { + // TODO(burdon): ??? + image: '0.0.1' + }, + system + }; + } + } +}; diff --git a/packages/console-server/src/server/main.js b/packages/console-server/src/server/main.js new file mode 100644 index 0000000..073aeb6 --- /dev/null +++ b/packages/console-server/src/server/main.js @@ -0,0 +1,159 @@ +// +// Copyright 2020 DxOS.org +// + +import compression from 'compression'; +import bodyParser from 'body-parser'; +import cors from 'cors'; +import debug from 'debug'; +import express from 'express'; +import mustache from 'mustache-express'; +import fs from 'fs'; +import yaml from 'js-yaml'; +import { ApolloServer, gql } from 'apollo-server-express'; +import { print } from 'graphql/language'; +import yargs from 'yargs'; + +// TODO(burdon): Use once published by @ashwinp. +// import { extensions as WNS_EXTENSIONS, schema as WNS_SCHEMA } from '@wirelineio/wns-schema'; + +import SYSTEM_STATUS from '@dxos/console-app/src/gql/system_status.graphql'; + +import { resolvers } from '../resolvers'; + +import API_SCHEMA from '../gql/api.graphql'; +import SYSTEM_SCHEMA from '../gql/system.graphql'; + +const argv = yargs + .option('config', { + alias: 'c', + description: 'Config file', + type: 'string' + }) + .option('verbose', { + alias: 'v', + description: 'Verbse info', + type: 'boolean' + }) + .help() + .alias('help', 'h') + .argv; + +const configFile = argv.config || process.env.CONFIG_FILE; +if (!configFile) { + yargs.showHelp(); + process.exit(1); +} + +const config = yaml.safeLoad(fs.readFileSync(configFile)); + +const log = debug('dxos:console:server'); + +debug.enable(config.system.debug); + +if (argv.verbose) { + log(JSON.stringify(config, undefined, 2)); +} + +// +// Express server. +// + +const { app: { publicUrl } } = config; + +const app = express(); + +app.set('views', `${__dirname}/views`); +app.set('view engine', 'mustache'); +app.engine('mustache', mustache()); +app.use(bodyParser.urlencoded({ extended: true })); +app.use(compression()); + +app.get('/', (req, res) => { + res.redirect(publicUrl); +}); + +// +// CORS +// + +// import cors from 'cors' +// https://expressjs.com/en/resources/middleware/cors.html +// https://www.prisma.io/blog/enabling-cors-for-express-graphql-apollo-server-1ef999bfb38d +app.use(cors({ + origin: true, + credentials: true +})); + +// +// React app +// TODO(burdon): Can we load this via WNS? +// + +const bundles = [ + 'runtime', 'vendor', 'material-ui', 'dxos', 'main' +]; + +app.use(`${publicUrl}/lib`, express.static('./dist/client')); + +app.get(publicUrl, (req, res) => { + res.render('console', { + title: 'Console', + container: 'root', + config: JSON.stringify(config), + scripts: bundles.map(bundle => ({ src: `${publicUrl}/lib/${bundle}.bundle.js` })) + }); +}); + +// +// Apollo Server and middleware +// https://www.apollographql.com/docs/apollo-server/api/apollo-server +// https://www.apollographql.com/docs/apollo-server/api/apollo-server/#apolloserverapplymiddleware +// + +const server = new ApolloServer({ + typeDefs: [ + API_SCHEMA, + SYSTEM_SCHEMA + // WNS_EXTENSIONS, + // WNS_SCHEMA + ], + + // https://www.apollographql.com/docs/graphql-tools/resolvers + resolvers, + + // https://www.apollographql.com/docs/apollo-server/data/resolvers/#the-context-argument + context: ({ req }) => ({ + config, + + // TODO(burdon): Auth. + authToken: req.headers.authorization + }), + + // https://www.apollographql.com/docs/apollo-server/testing/graphql-playground + // https://github.com/prisma-labs/graphql-playground#usage + // introspection: true, + playground: { + settings: { + 'editor.theme': config.app.theme + }, + tabs: [ + { + name: 'Status', + endpoint: config.api.path, + query: print(gql(SYSTEM_STATUS)) + } + ] + } +}); + +server.applyMiddleware({ app, path: config.api.path }); + +// +// Start server +// + +const { api: { port } } = config; +app.listen({ port }, () => { + log(`Running: http://localhost:${port}`); +}); diff --git a/packages/console-server/src/server/views/console.mustache b/packages/console-server/src/server/views/console.mustache new file mode 100644 index 0000000..3be110b --- /dev/null +++ b/packages/console-server/src/server/views/console.mustache @@ -0,0 +1,20 @@ + + + + + {{ title }} + + +
+ + + + + + {{#scripts}} + + {{/scripts}} + + diff --git a/packages/console-server/webpack.config.js b/packages/console-server/webpack.config.js new file mode 100644 index 0000000..c1cef45 --- /dev/null +++ b/packages/console-server/webpack.config.js @@ -0,0 +1,110 @@ +// +// Copyright 2019 DxOS +// + +const path = require('path'); +const Dotenv = require('dotenv-webpack'); +const webpack = require('webpack'); +const HtmlWebPackPlugin = require('html-webpack-plugin'); + +const PUBLIC_URL = process.env.PUBLIC_URL || ''; + +module.exports = { + devtool: 'eval-source-map', + + devServer: { + contentBase: path.join(__dirname, 'dist'), + compress: true, + disableHostCheck: true, + port: 8080, + watchOptions: { + ignored: /node_modules/, + aggregateTimeout: 600 + } + }, + + node: { + fs: 'empty' + }, + + entry: './src/client/main.js', + + output: { + path: `${__dirname}/dist/client`, + filename: '[name].bundle.js', + publicPath: PUBLIC_URL + }, + + optimization: { + runtimeChunk: 'single', + splitChunks: { + chunks: 'all', + maxInitialRequests: Infinity, + minSize: 0, + cacheGroups: { + vendor: { + test: /[\\/]node_modules[\\/]/, + name (module) { + const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]; + + if (packageName.startsWith('@dxos')) { + return 'dxos'; + } + + if (packageName.startsWith('@material-ui')) { + return 'material-ui'; + } + + return 'vendor'; + } + } + } + } + }, + + plugins: [ + // https://github.com/jantimon/html-webpack-plugin#options + new HtmlWebPackPlugin({ + template: './public/index.html', + templateParameters: { + title: 'DxOS Console' + } + }), + + // https://www.npmjs.com/package/dotenv-webpack#properties + new Dotenv({ + path: process.env.DOT_ENV || '.env' + }), + + // NOTE: Must be defined below Dotenv (otherwise will override). + // https://webpack.js.org/plugins/environment-plugin + new webpack.EnvironmentPlugin({}) + ], + + module: { + rules: [ + { + test: /\.js$/, + exclude: /(node_modules)/, + use: { + loader: 'babel-loader' + } + }, + + // https://github.com/eemeli/yaml-loader + { + test: /\.ya?ml$/, + type: 'json', + use: 'yaml-loader' + } + ] + }, + + resolve: { + alias: { + '@material-ui/styles': path.resolve(__dirname, '..', '..', 'node_modules/@material-ui/styles'), + 'react': path.resolve(__dirname, '..', '..', 'node_modules/react'), + 'react-dom': path.resolve(__dirname, '..', '..', 'node_modules/react-dom') + } + } +}; diff --git a/yarn.lock b/yarn.lock index b6c2a74..7b50c58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -86,6 +86,13 @@ dependencies: "@babel/highlight" "^7.8.3" +"@babel/code-frame@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" + integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== + dependencies: + "@babel/highlight" "^7.10.1" + "@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" @@ -117,6 +124,28 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.1.tgz#2a0ad0ea693601820defebad2140206503d89af3" + integrity sha512-u8XiZ6sMXW/gPmoP5ijonSUln4unazG291X0XAQ5h0s8qnAFr6BRRZGUEK+jtRWdmB0NTJQt7Uga25q8GetIIg== + dependencies: + "@babel/code-frame" "^7.10.1" + "@babel/generator" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helpers" "^7.10.1" + "@babel/parser" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.1.0", "@babel/core@^7.4.5": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" @@ -139,6 +168,16 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/generator@^7.10.0", "@babel/generator@^7.10.1", "@babel/generator@^7.5.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.1.tgz#4d14458e539bcb04ffe34124143f5c489f2dbca9" + integrity sha512-AT0YPLQw9DI21tliuJIdplVfLHya6mcGa8ctkv7n4Qv+hYacJrKmNWIteAK1P9iyLikFIAkwqJ7HAOqIDLFfgA== + dependencies: + "@babel/types" "^7.10.1" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/generator@^7.4.0", "@babel/generator@^7.9.0", "@babel/generator@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" @@ -149,6 +188,13 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/helper-annotate-as-pure@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" + integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -164,6 +210,15 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-builder-react-jsx-experimental@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz#9a7d58ad184d3ac3bafb1a452cec2bad7e4a0bc8" + integrity sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-module-imports" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-builder-react-jsx-experimental@^7.9.0": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" @@ -173,6 +228,14 @@ "@babel/helper-module-imports" "^7.8.3" "@babel/types" "^7.9.5" +"@babel/helper-builder-react-jsx@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz#a327f0cf983af5554701b1215de54a019f09b532" + integrity sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-builder-react-jsx@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" @@ -192,6 +255,18 @@ levenary "^1.1.1" semver "^5.5.0" +"@babel/helper-create-class-features-plugin@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.1.tgz#6d8a45aafe492378d0e6fc0b33e5dea132eae21c" + integrity sha512-bwhdehBJZt84HuPUcP1HaTLuc/EywVS8rc3FgsEPDcivg+DCW+SHuLHVkYOmcBA1ZfI+Z/oZjQc/+bPmIO7uAA== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-member-expression-to-functions" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/helper-create-class-features-plugin@^7.8.3", "@babel/helper-create-class-features-plugin@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" @@ -213,6 +288,15 @@ "@babel/helper-regex" "^7.8.3" regexpu-core "^4.7.0" +"@babel/helper-define-map@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz#5e69ee8308648470dd7900d159c044c10285221d" + integrity sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/types" "^7.10.1" + lodash "^4.17.13" + "@babel/helper-define-map@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" @@ -230,6 +314,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-function-name@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" + integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" @@ -239,6 +332,13 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.9.5" +"@babel/helper-get-function-arity@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" + integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -253,6 +353,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-member-expression-to-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz#432967fd7e12a4afef66c4687d4ca22bc0456f15" + integrity sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-member-expression-to-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" @@ -260,6 +367,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-module-imports@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" + integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" @@ -267,6 +381,19 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-module-transforms@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" + integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + lodash "^4.17.13" + "@babel/helper-module-transforms@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" @@ -280,6 +407,13 @@ "@babel/types" "^7.9.0" lodash "^4.17.13" +"@babel/helper-optimise-call-expression@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" + integrity sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" @@ -292,6 +426,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== +"@babel/helper-plugin-utils@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" + integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== + "@babel/helper-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" @@ -310,6 +449,16 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-replace-supers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" + integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" @@ -320,6 +469,14 @@ "@babel/traverse" "^7.9.6" "@babel/types" "^7.9.6" +"@babel/helper-simple-access@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" + integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-simple-access@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" @@ -328,6 +485,13 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-split-export-declaration@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" + integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -335,6 +499,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" + integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw== + "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" @@ -350,6 +519,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helpers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" + integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" @@ -359,6 +537,15 @@ "@babel/traverse" "^7.9.6" "@babel/types" "^7.9.6" +"@babel/highlight@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0" + integrity sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.1" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" @@ -382,6 +569,16 @@ resolve "^1.13.1" v8flags "^3.1.1" +"@babel/parser@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.0.tgz#8eca3e71a73dd562c5222376b08253436bb4995b" + integrity sha512-fnDUl1Uy2gThM4IFVW4ISNHqr3cJrCsRkSCasFgx0XDO9JcttDS5ytyBc4Cu4X1+fjoo3IVvFbRD6TeFlHJlEQ== + +"@babel/parser@^7.0.0", "@babel/parser@^7.10.0", "@babel/parser@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.1.tgz#2e142c27ca58aa2c7b119d09269b702c8bbad28c" + integrity sha512-AUTksaz3FqugBkbTZ1i+lDLG5qy8hIzCaAxEtttU6C0BtZZU9pkNZtWSVAht4EW9kl46YBiyTGMp9xTTGqViNg== + "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" @@ -404,6 +601,14 @@ "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" + integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-proposal-decorators@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" @@ -453,6 +658,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz#cba44908ac9f142650b4a65b8aa06bf3478d5fb6" + integrity sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread@^7.9.0", "@babel/plugin-proposal-object-rest-spread@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" @@ -493,6 +707,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" + integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-decorators@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" @@ -514,6 +735,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz#cd4bbca62fb402babacb174f64f8734310d742f0" + integrity sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-flow@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" @@ -528,6 +756,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz#0ae371134a42b91d5418feb3c8c8d43e1565d2da" + integrity sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-jsx@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" @@ -584,6 +819,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" + integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-arrow-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" @@ -600,6 +842,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-remap-async-to-generator" "^7.8.3" +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" + integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-block-scoped-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" @@ -607,6 +856,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" + integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + lodash "^4.17.13" + "@babel/plugin-transform-block-scoping@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" @@ -615,6 +872,20 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" +"@babel/plugin-transform-classes@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz#6e11dd6c4dfae70f540480a4702477ed766d733f" + integrity sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-define-map" "^7.10.1" + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + globals "^11.1.0" + "@babel/plugin-transform-classes@^7.9.0", "@babel/plugin-transform-classes@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" @@ -629,6 +900,13 @@ "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz#59aa399064429d64dce5cf76ef9b90b7245ebd07" + integrity sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-computed-properties@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" @@ -636,6 +914,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" + integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-destructuring@^7.8.3", "@babel/plugin-transform-destructuring@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" @@ -674,6 +959,21 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow" "^7.8.3" +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz#59eafbff9ae85ec8932d4c16c068654be814ec5e" + integrity sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-flow" "^7.10.1" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" + integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-for-of@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" @@ -681,6 +981,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-function-name@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" + integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" @@ -689,6 +997,13 @@ "@babel/helper-function-name" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-literals@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" + integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-literals@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" @@ -696,6 +1011,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" + integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-member-expression-literals@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" @@ -712,6 +1034,16 @@ "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" + integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.9.0", "@babel/plugin-transform-modules-commonjs@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" @@ -754,6 +1086,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-object-super@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" + integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/plugin-transform-object-super@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" @@ -762,6 +1102,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" + integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" @@ -770,6 +1118,13 @@ "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" + integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-property-literals@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" @@ -791,6 +1146,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.1.tgz#e6a33f6d48dfb213dda5e007d0c7ff82b6a3d8ef" + integrity sha512-rBjKcVwjk26H3VX8pavMxGf33LNlbocMHdSeldIEswtQ/hrjyTG8fKKILW1cSkODyRovckN/uZlGb2+sAV9JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-react-jsx-development@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" @@ -816,6 +1178,16 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz#91f544248ba131486decb5d9806da6a6e19a2896" + integrity sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.1" + "@babel/helper-builder-react-jsx-experimental" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/plugin-transform-react-jsx@^7.9.1", "@babel/plugin-transform-react-jsx@^7.9.4": version "7.9.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" @@ -850,6 +1222,13 @@ resolve "^1.8.1" semver "^5.5.1" +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" + integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-shorthand-properties@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" @@ -857,6 +1236,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-spread@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" + integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" @@ -872,6 +1258,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-regex" "^7.8.3" +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz#914c7b7f4752c570ea00553b4284dad8070e8628" + integrity sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-template-literals@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" @@ -904,6 +1298,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/polyfill@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f" + integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + "@babel/preset-env@7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" @@ -1112,6 +1514,22 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.9.2": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.1.tgz#b6eb75cac279588d3100baecd1b9894ea2840822" + integrity sha512-nQbbCbQc9u/rpg1XCxoMYQTbSMVZjCDxErQ1ClCn9Pvcmv1lGads19ep0a2VsEiIJeHqjZley6EQGEC3Yo1xMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" + integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== + dependencies: + "@babel/code-frame" "^7.10.1" + "@babel/parser" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" @@ -1121,6 +1539,36 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" +"@babel/traverse@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.0.tgz#290935529881baf619398d94fd453838bef36740" + integrity sha512-NZsFleMaLF1zX3NxbtXI/JCs2RPOdpGru6UBdGsfhdsDsP+kFF+h2QQJnMJglxk0kc69YmMFs4A44OJY0tKo5g== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.10.0" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.10.0" + "@babel/types" "^7.10.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" + integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== + dependencies: + "@babel/code-frame" "^7.10.1" + "@babel/generator" "^7.10.1" + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.1" + "@babel/types" "^7.10.1" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" @@ -1136,6 +1584,15 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/types@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.0.tgz#d47d92249e42393a5723aad5319035ae411e3e38" + integrity sha512-t41W8yWFyQFPOAAvPvjyRhejcLGnJTA3iRpFcDbEKwVJ3UnHQePFzLk8GagTsucJlImyNwrGikGsYURrWbQG8w== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" @@ -1145,6 +1602,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.10.0", "@babel/types@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.1.tgz#6886724d31c8022160a7db895e6731ca33483921" + integrity sha512-L2yqUOpf3tzlW9GVuipgLEcZxnO+96SzR6fjXMuxxNkIgFJ5+07mHCZ+HkHqaeZu8+3LKnNJJ1bKbjBETQAsrA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.1" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1294,6 +1760,209 @@ unique-filename "^1.1.1" which "^1.3.1" +"@graphql-tools/code-file-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-6.0.3.tgz#87ae4a996e0671508b8b2c3792785057bcc353da" + integrity sha512-2f7LyvjZ6/RhPYbgIl7BIFAE1AXtiCuiV/UgS1QwqsW2TgPb2KDHggZ2lHbufiPhS32DYcYGT98lQZ3NR70L0Q== + dependencies: + "@graphql-tools/graphql-tag-pluck" "6.0.3" + "@graphql-tools/utils" "6.0.3" + fs-extra "9.0.0" + tslib "~2.0.0" + +"@graphql-tools/delegate@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.0.3.tgz#1296143c65565ce25ce355d7606a8d48a6eef409" + integrity sha512-6cohVkrytPG/1L/2TqiHWH2uGUAualFa41KWPel9+r36XHr60mXsWm1NP1MTZXyBqp+v86Rf7FOv1nO8T4jb4A== + dependencies: + "@graphql-tools/schema" "6.0.3" + "@graphql-tools/utils" "6.0.3" + tslib "~2.0.0" + +"@graphql-tools/git-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-6.0.3.tgz#45985d2e14a8166e6ea45a24012fd25840a8f20f" + integrity sha512-Yd39daNwG4C3zOIyMdk8MvV74txhdd5ZpaQMZxQzlvHN7IzJwBWUeOv+oTp2G9fzxpWH1ydv1Z5ratmUiPCAjA== + dependencies: + "@graphql-tools/graphql-tag-pluck" "6.0.3" + "@graphql-tools/utils" "6.0.3" + simple-git "2.5.0" + +"@graphql-tools/github-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-6.0.3.tgz#eba6a71f0a9824c8c06ce70a8c864cc2e93cb624" + integrity sha512-olZUKrj/GWosytkIcWFOJht9fvKv+vt0wQvRzzgiHUzdx4cG13z8dguFHpJn8v/WN8GspUhJyDBppvTj6yr60A== + dependencies: + "@graphql-tools/graphql-tag-pluck" "6.0.3" + "@graphql-tools/utils" "6.0.3" + cross-fetch "3.0.4" + +"@graphql-tools/graphql-file-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.0.3.tgz#159ce5712a447828fc8d4bc41992714dba5e448e" + integrity sha512-+3Sk5oZOonREyY3mL2kfFOIRtflT6j+TFV+PKNLs2uM/GOpys5Qp396GCv3Tr+UI0n38bfAYSxExpGvRcY0e9g== + dependencies: + "@graphql-tools/import" "6.0.3" + "@graphql-tools/utils" "6.0.3" + fs-extra "9.0.0" + tslib "~2.0.0" + +"@graphql-tools/graphql-tag-pluck@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.0.3.tgz#8e8cefd10ba7c4ee9f26c2612a10af8c317a8579" + integrity sha512-vc+BLbHx88lMybdM1Ol1NP7I2gou7JLs8nhBieYgqNDdgjOYla74HiG9s/zl3XKT97psZ5Nv5D+GEaLwU+Z8hA== + dependencies: + "@babel/parser" "7.10.0" + "@babel/traverse" "7.10.0" + "@babel/types" "7.10.0" + "@graphql-tools/utils" "6.0.3" + optionalDependencies: + vue-template-compiler "^2.6.11" + +"@graphql-tools/import@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.0.3.tgz#1a8e98bb15569450809b9eda8d31b999c598c082" + integrity sha512-r30WDeHNv/pYNPLGf2q36fdqhyp9bttfjD4B8oAKOF53ZU2UjV65bnOtLkbjHMa7iyexvPDCdK9xb4d+w7pOyQ== + dependencies: + fs-extra "9.0.0" + resolve-from "5.0.0" + +"@graphql-tools/json-file-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.0.3.tgz#252041089d71011e218ddcd4eef8d8732b9cab9d" + integrity sha512-lKWZLZ5uUySG+oba/EEalkixAWGiFYNCMCp4UZe8KsNujVQJicxeGpyqxX0YPWAAxGZnMSRTpCjJeimLAEF7Jg== + dependencies: + "@graphql-tools/utils" "6.0.3" + fs-extra "9.0.0" + tslib "~2.0.0" + +"@graphql-tools/links@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.0.3.tgz#c5f207e607f7a46c2c05adfaf53aeec1e3499134" + integrity sha512-Q1gQVJvzK6tIMjUwL/AFicrDguN/7mJOR92wg48g3bSlGuWUJpqbbh/MbbqmqpEebPY/87zbRFswn/O4nlCrag== + dependencies: + apollo-link "1.2.14" + apollo-upload-client "13.0.0" + cross-fetch "3.0.4" + form-data "3.0.0" + tslib "~2.0.0" + +"@graphql-tools/load-files@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/load-files/-/load-files-6.0.3.tgz#8736324a9dd6a52a37d30044beeae57c2bcc7079" + integrity sha512-B7oUvkOrb1pNoOjlDGjZYQeKxbvxiGrlSyt6CxbmHmIEAn98EvSD348QwOpSfhEQudCYcwGcX+kfPQ6O6fxSgw== + dependencies: + fs-extra "9.0.0" + globby "11.0.0" + unixify "1.0.0" + +"@graphql-tools/load@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.0.3.tgz#ed87aed1676b06388c56f2f4ef86fe4956a3757c" + integrity sha512-0e2a35wl1x8kv3WhmBRPimsatAbThWkjx2QjlrSq9XoiH4ZOh/tdsbfhHtS+8MHXJ+c6506LnqQU8r68tFs18w== + dependencies: + "@graphql-tools/merge" "6.0.3" + "@graphql-tools/utils" "6.0.3" + globby "11.0.0" + import-from "3.0.0" + is-glob "4.0.1" + p-limit "2.3.0" + tslib "~2.0.0" + unixify "1.0.0" + valid-url "1.0.9" + +"@graphql-tools/merge@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.0.3.tgz#e8c21f0258bbc98a56d39a2c285cab29c3379b7d" + integrity sha512-Tdt6r6n/LvmBnYruRRykBOzOZTcAzp5q5d753tsMg57RC8AmShmGXDUpDPPwX6qIxPkra5r9f0pPH18h0mPpYQ== + dependencies: + "@graphql-tools/schema" "6.0.3" + "@graphql-tools/utils" "6.0.3" + tslib "~2.0.0" + +"@graphql-tools/mock@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-6.0.3.tgz#58a9cc86a0ed0ba03da0c820d4b8b6fc73594790" + integrity sha512-Amnwfqlfl+vHDB3MHX9EFxvPh6InmCRvjbq6dB84N0yukAbyfOzSb6u9dV6XwlqKw3hMOi5Tg2xux00cR5Fv1w== + dependencies: + "@graphql-tools/schema" "6.0.3" + "@graphql-tools/utils" "6.0.3" + tslib "~2.0.0" + +"@graphql-tools/module-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/module-loader/-/module-loader-6.0.3.tgz#d040f2f79ca4b5f6d89805da7242c0ba7401f788" + integrity sha512-NmDfFJvwibuId6NEcZorJP8WZdvhEqLE7pzEjkU9Ylgx/ObEskvVV8h9WMLV0Bov5S+UCZ047vSLJHs/mwvOug== + dependencies: + "@graphql-tools/utils" "6.0.3" + tslib "~2.0.0" + +"@graphql-tools/relay-operation-optimizer@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.0.3.tgz#369fd39d773f338d4a88b00b652a9b9e0aa18d3c" + integrity sha512-jAKupRt71f+KhKzxt4ypQAkH7YTEnWZkeen6K/1cmbPTjvOqm5ylM7GW8FaGoqx1SPq7VtCpbFw73ZpXKVVwww== + dependencies: + "@graphql-tools/utils" "6.0.3" + relay-compiler "9.1.0" + +"@graphql-tools/resolvers-composition@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/resolvers-composition/-/resolvers-composition-6.0.3.tgz#87991785ac200a91bf4295c5c1625f684ca17765" + integrity sha512-z+6lIPDIo0gneQ5Hcd1H2bpOl5qpip2jJCgQ6A9KmuXtkfShL5DMCGwx050djK96TZ3ra/n3HZKv81Cc8ecMRw== + dependencies: + "@graphql-tools/utils" "6.0.3" + lodash "4.17.15" + +"@graphql-tools/schema@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.3.tgz#e242ecbf1fbfe152dfb598d75fef055eb4dab217" + integrity sha512-HThJuZvlHbrH6++Zb60LMx/4ZPwJ+VqfRDg2lvgFvfiU7EtEbnidU0S+x9rg8inx30LzMg1Oc+pdLoyIZCAYaw== + dependencies: + "@graphql-tools/utils" "6.0.3" + tslib "~2.0.0" + +"@graphql-tools/stitch@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/stitch/-/stitch-6.0.3.tgz#0b719c301600d34599b16ebee175bfdb38b72f66" + integrity sha512-LrKTv9iV7tlB3ZdlZZoaKR6uwvSCRj+aUTfIVJNmpR/jsOnKK/pDsnAqu6fuqssojOzuLpa2xQtmXLFILrhr/w== + dependencies: + "@graphql-tools/delegate" "6.0.3" + "@graphql-tools/schema" "6.0.3" + "@graphql-tools/utils" "6.0.3" + "@graphql-tools/wrap" "6.0.3" + tslib "~2.0.0" + +"@graphql-tools/url-loader@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.0.3.tgz#6cda11a072a80477e648c410ef306dd4de1f380e" + integrity sha512-zIEaW8XRMnCIg3rvJ9RgeWI2fb2/46rwHuzKcE1QjPrcD9YfGwUzMs5qXZTEZffyo0fz/fkcW0cIg6l7mDy7fg== + dependencies: + "@graphql-tools/utils" "6.0.3" + "@graphql-tools/wrap" "6.0.3" + "@types/websocket" "1.0.0" + cross-fetch "3.0.4" + subscriptions-transport-ws "0.9.16" + tslib "~2.0.0" + valid-url "1.0.9" + websocket "1.0.31" + +"@graphql-tools/utils@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.0.3.tgz#54a2ff019707d84227771a7b1c11536ee32fc563" + integrity sha512-uS01PqtjOeEoG309orxYlnb8TIehsI27N4Z8NxmadTzkkLW98FfbUm62CjSHvc1IqgiQZSkqDuKqS4vy8lbUFQ== + dependencies: + camel-case "4.1.1" + +"@graphql-tools/wrap@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.0.3.tgz#f3545549d7d7c732cb87d2b741c0f580cf8a7fd6" + integrity sha512-phOj5BSirNBSoy+1VcZX/cGiK9qXlMBroi2uqpKEzkvoprqFZB/srJjXKFCBgHIT//w1/FvTX6muH0dHBWMydQ== + dependencies: + "@graphql-tools/delegate" "6.0.3" + "@graphql-tools/schema" "6.0.3" + "@graphql-tools/utils" "6.0.3" + tslib "~2.0.0" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1474,6 +2143,11 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@kwsites/exec-p@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@kwsites/exec-p/-/exec-p-0.4.0.tgz#ab3765d482849ba6e825721077c248cf9f3323b7" + integrity sha512-44DWNv5gDR9EwrCTVQ4ZC99yPqVS0VCWrYIBl45qNR8XQy+4lbl0IQG8kBDf6NHwj4Ib4c2z1Fq1IUJOCbkZcw== + "@lerna/add@3.21.0": version "3.21.0" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" @@ -2915,6 +3589,13 @@ "@types/webpack-sources" "*" source-map "^0.6.0" +"@types/websocket@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.0.tgz#828c794b0a50949ad061aa311af1009934197e4b" + integrity sha512-MLr8hDM8y7vvdAdnoDEP5LotRoYJj7wgT6mWzCUQH/gHqzS4qcnOT/K4dhC0WimWIUiA3Arj9QAJGGKNRiRZKA== + dependencies: + "@types/node" "*" + "@types/ws@^7.0.0": version "7.2.4" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.4.tgz#b3859f7b9c243b220efac9716ec42c716a72969d" @@ -3303,6 +3984,11 @@ resolved "https://registry.yarnpkg.com/@wirelineio/wns-schema/-/wns-schema-0.1.0.tgz#61afc98e0a3e89a5d4ad3ef1d84f50b199224356" integrity sha512-MetSYFR7OS54hR2tGmFnzGeK5vwqJfBI2kZXmYHKcdj5EyJXheMg9XP3LUwVLVgRe7gOCoQqBstAYl1cL1FdHg== +"@wirelineio/wns-schema@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@wirelineio/wns-schema/-/wns-schema-0.1.1.tgz#ea8c92c49069703bb2fffc111e8d482b880f8c67" + integrity sha512-tdMkN+UAy1rywB/Wdm68aHORLpeCTImzegxvg2VuECXQ9JZNHBKEpWxZYYzc2D7HRXO7pcg30IRwfTOQmRYd0Q== + "@wry/context@^0.4.0": version "0.4.4" resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" @@ -3539,7 +4225,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -3692,7 +4378,7 @@ apollo-link-error@^1.0.3: apollo-link-http-common "^0.2.16" tslib "^1.9.3" -apollo-link-http-common@^0.2.16: +apollo-link-http-common@^0.2.14, apollo-link-http-common@^0.2.16: version "0.2.16" resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== @@ -3710,7 +4396,7 @@ apollo-link-http@^1.3.1, apollo-link-http@^1.5.17: apollo-link-http-common "^0.2.16" tslib "^1.9.3" -apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.14: +apollo-link@1.2.14, apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.12, apollo-link@^1.2.14: version "1.2.14" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== @@ -3814,6 +4500,16 @@ apollo-tracing@^0.10.1-alpha.0: apollo-server-env "^2.4.4-alpha.0" graphql-extensions "^0.12.1-alpha.0" +apollo-upload-client@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-13.0.0.tgz#146d1ddd85d711fcac8ca97a72d3ca6787f2b71b" + integrity sha512-lJ9/bk1BH1lD15WhWRha2J3+LrXrPIX5LP5EwiOUHv8PCORp4EUrcujrA3rI5hZeZygrTX8bshcuMdpqpSrvtA== + dependencies: + "@babel/runtime" "^7.9.2" + apollo-link "^1.2.12" + apollo-link-http-common "^0.2.14" + extract-files "^8.0.0" + apollo-utilities@1.3.4, apollo-utilities@^1.0.1, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" @@ -3956,7 +4652,7 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0, asap@~2.0.6: +asap@^2.0.0, asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -4036,6 +4732,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/async/-/async-3.1.1.tgz#dd3542db03de837979c9ebbca64ca01b06dc98df" + integrity sha512-X5Dj8hK1pJNC2Wzo2Rcp9FBVdJMGRR/S7V+lH46s8GVFhtbo5O4Le5GECCF/8PISVdkUA6mMPvgz7qTTD1rf1g== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -4125,7 +4826,7 @@ babel-jest@^24.8.0, babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-loader@8.1.0, babel-loader@^8.0.0: +babel-loader@8.1.0, babel-loader@^8.0.0, babel-loader@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== @@ -4150,6 +4851,13 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-import-graphql@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/babel-plugin-import-graphql/-/babel-plugin-import-graphql-2.7.0.tgz#984b2330afa05cce5ff81e577f7d82cdb86aea6d" + integrity sha512-PCNT6hLXaFxb7bsXJ+ALFnEnZUK2Hj1HhM0nWv4XDpuYf8arulm7ZAu/Z0MBItLkcik/TAokGX9IUzwyTYMXvQ== + dependencies: + graphql-tag "^2.9.2" + babel-plugin-inline-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz#220eb2a52f8e779d8fb89447f950275e1e3f5981" @@ -4157,6 +4865,13 @@ babel-plugin-inline-import@^3.0.0: dependencies: require-resolve "0.0.2" +babel-plugin-inline-json-import@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-inline-json-import/-/babel-plugin-inline-json-import-0.3.2.tgz#fdec1a59364d632895d421aec4c9435ccbbcadd3" + integrity sha512-QNNJx08KjmMT25Cw7rAPQ6dlREDPiZGDyApHL8KQ9vrQHbrr4PTi7W8g1tMMZPz0jEMd39nx/eH7xjnDNxq5sA== + dependencies: + decache "^4.5.1" + babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -4193,6 +4908,11 @@ babel-plugin-syntax-object-rest-spread@^6.8.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + babel-plugin-transform-object-rest-spread@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" @@ -4206,6 +4926,39 @@ babel-plugin-transform-react-remove-prop-types@0.4.24: resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== +babel-preset-fbjs@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" + integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + babel-preset-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" @@ -4417,7 +5170,7 @@ bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== -body-parser@1.19.0, body-parser@^1.18.3: +body-parser@1.19.0, body-parser@^1.18.3, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -4818,6 +5571,11 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" +callsite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -4828,7 +5586,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.1: +camel-case@4.1.1, camel-case@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== @@ -5120,6 +5878,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -5531,7 +6298,7 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js@^2.4.0: +core-js@^2.4.0, core-js@^2.4.1, core-js@^2.6.5: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== @@ -5606,6 +6373,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c" + integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw== + dependencies: + node-fetch "2.6.0" + whatwg-fetch "3.0.0" + cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -6206,6 +6981,11 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + debug-log@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" @@ -6244,6 +7024,13 @@ debuglog@^1.0.1: resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= +decache@^4.5.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/decache/-/decache-4.6.0.tgz#87026bc6e696759e82d57a3841c4e251a30356e8" + integrity sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w== + dependencies: + callsite "^1.0.0" + decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -7576,6 +8363,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-files@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-8.1.0.tgz#46a0690d0fe77411a2e3804852adeaa65cd59288" + integrity sha512-PTGtfthZK79WUMk+avLmwx3NGdU8+iVFXC2NMGxKsn0MnihOG2lvumj+AZo8CTwTrwjXDgZ5tztbRlEdRjBonQ== + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -7601,7 +8393,7 @@ fast-fifo@^1.0.0: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.0.0.tgz#9bc72e6860347bb045a876d1c5c0af11e9b984e7" integrity sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ== -fast-glob@^2.0.2, fast-glob@^2.2.6: +fast-glob@^2.0.2, fast-glob@^2.2.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -7613,7 +8405,7 @@ fast-glob@^2.0.2, fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3: +fast-glob@^3.0.3, fast-glob@^3.1.1: version "3.2.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== @@ -7663,6 +8455,25 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -7892,7 +8703,7 @@ fork-ts-checker-webpack-plugin@3.1.1: tapable "^1.0.0" worker-rpc "^0.1.0" -form-data@^3.0.0: +form-data@3.0.0, form-data@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== @@ -7940,6 +8751,16 @@ fs-capacitor@^2.0.4: resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== +fs-extra@9.0.0, fs-extra@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -7967,16 +8788,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -8276,6 +9087,18 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globby@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" + integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -8382,6 +9205,33 @@ graphql-tools@^4.0.0: iterall "^1.1.3" uuid "^3.1.0" +graphql-tools@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-6.0.3.tgz#0c08be198f2646e70826cef12c72049d24189c53" + integrity sha512-vgMNIcaZM/F109W9ddmL9yhBj4llkoeTUI+pxsXNSd5eFinlbTLCT0wFVY4YqxylleNWI/FekiwLoMC3WHSGIg== + dependencies: + "@graphql-tools/code-file-loader" "6.0.3" + "@graphql-tools/delegate" "6.0.3" + "@graphql-tools/git-loader" "6.0.3" + "@graphql-tools/github-loader" "6.0.3" + "@graphql-tools/graphql-file-loader" "6.0.3" + "@graphql-tools/graphql-tag-pluck" "6.0.3" + "@graphql-tools/import" "6.0.3" + "@graphql-tools/json-file-loader" "6.0.3" + "@graphql-tools/links" "6.0.3" + "@graphql-tools/load" "6.0.3" + "@graphql-tools/load-files" "6.0.3" + "@graphql-tools/merge" "6.0.3" + "@graphql-tools/mock" "6.0.3" + "@graphql-tools/module-loader" "6.0.3" + "@graphql-tools/relay-operation-optimizer" "6.0.3" + "@graphql-tools/resolvers-composition" "6.0.3" + "@graphql-tools/schema" "6.0.3" + "@graphql-tools/stitch" "6.0.3" + "@graphql-tools/url-loader" "6.0.3" + "@graphql-tools/utils" "6.0.3" + "@graphql-tools/wrap" "6.0.3" + graphql-upload@^8.0.2: version "8.1.0" resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-8.1.0.tgz#6d0ab662db5677a68bfb1f2c870ab2544c14939a" @@ -8558,7 +9408,7 @@ hdkey@^1.1.1: safe-buffer "^5.1.1" secp256k1 "^3.0.1" -he@^1.2.0: +he@^1.1.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -8890,7 +9740,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.0, ignore@^5.1.1: +ignore@^5.0.0, ignore@^5.1.1, ignore@^5.1.4: version "5.1.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.6.tgz#643194ad4bf2712f37852e386b6998eff0db2106" integrity sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA== @@ -8907,6 +9757,11 @@ immutability-helper@^3.0.2: dependencies: invariant "^2.2.4" +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -8930,6 +9785,13 @@ import-fresh@^3.0.0, import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -9421,6 +10283,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -9428,13 +10297,6 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -9571,7 +10433,7 @@ is-ssh@^1.3.0: dependencies: protocols "^1.1.0" -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -9686,6 +10548,14 @@ isobject@^4.0.0: resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -10818,6 +11688,11 @@ lodash.omit@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" @@ -10853,7 +11728,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1: +lodash@4.17.15, "lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -10931,7 +11806,7 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.0.0, lru-cache@^5.1.1: +lru-cache@^5.0.0, lru-cache@^5.1.1, lru-cache@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== @@ -11525,6 +12400,20 @@ murmurhash3js-revisited@^3.0.0: resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== +mustache-express@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mustache-express/-/mustache-express-1.3.0.tgz#91d67121e3553d42d6c995f4c32793db89492493" + integrity sha512-JWG8Rzxh9tpoLEH0NZ2u/caDiwhIkW+50IOBrcO+lHya3tCYj41bYPDEHCxPbKXvPrSyMNpI6ly4xdU2zpNQtg== + dependencies: + async "~3.1.0" + lru-cache "~5.1.1" + mustache "^3.1.0" + +mustache@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.2.1.tgz#89e78a9d207d78f2799b1e95764a25bf71a28322" + integrity sha512-RERvMFdLpaFfSRIEe632yDm5nsd0SDKn8hGmcUwswnyiE5mtdZLDybtHAz6hjJhawokF0hXvGLtx9mrQfm6FkA== + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -11626,11 +12515,19 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: +node-fetch@2.6.0, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" @@ -11876,6 +12773,11 @@ nth-check@^1.0.2, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -12195,6 +13097,13 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +p-limit@2.3.0, p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -12202,13 +13111,6 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -13417,6 +14319,13 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + promise@^8.0.3: version "8.1.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" @@ -14155,6 +15064,36 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +relay-compiler@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-9.1.0.tgz#e2975de85192e2470daad78e30052bf9614d22ed" + integrity sha512-jsJx0Ux5RoxM+JFm3M3xl7UfZAJ0kUTY/r6jqOpcYgVI3GLJthvNI4IoziFRlWbhizEzGFbpkdshZcu9IObJYA== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.3.0" + chalk "^2.4.1" + fast-glob "^2.2.2" + fb-watchman "^2.0.0" + fbjs "^1.0.0" + immutable "~3.7.6" + nullthrows "^1.1.1" + relay-runtime "9.1.0" + signedsource "^1.0.0" + yargs "^14.2.0" + +relay-runtime@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-9.1.0.tgz#d0534007d5c43e7b9653c6f5cc112ffac09c5020" + integrity sha512-6FE5YlZpR/b3R/HzGly85V+c4MdtLJhFY/outQARgxXonomrwqEik0Cr34LnPK4DmGS36cMLUliqhCs/DZyPVw== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -14272,6 +15211,11 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -14682,7 +15626,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -14776,6 +15720,19 @@ signed-varint@^2.0.1: dependencies: varint "~5.0.0" +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + +simple-git@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.5.0.tgz#538b14b25f83916a56f30eca53f13796db6712f6" + integrity sha512-4gmtMqfIL9bsBNJDP/rDwZe3GsQL/tp85Qv5cmRc8iIDNOZJS4IX1oPfcqp9b7BGPc5bfuw4yd1i3lQacvuqDQ== + dependencies: + "@kwsites/exec-p" "^0.4.0" + debug "^4.0.1" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -15238,7 +16195,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -15429,7 +16386,7 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: +subscriptions-transport-ws@0.9.16, subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: version "0.9.16" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec" integrity sha512-pQdoU7nC+EpStXnCfh/+ho0zE0Z+ma+i7xvj7bkXKb1dvYHSZxgRPaU6spRP+Bjzow67c/rRDoix5RT0uU9omw== @@ -15500,6 +16457,11 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +systeminformation@^4.26.5: + version "4.26.5" + resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-4.26.5.tgz#d2dc77d4cc54b38345d552fcfd00344f49a964a4" + integrity sha512-hTVhCYNIsoDtL8brW6wg/UTHmyRfMRItd/+6f6JZtXjmx06FHKBGCyBe7WN6J+FiDIiDfTK7mvMq7hljM6r5OA== + table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -15819,6 +16781,11 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" + integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -15910,6 +16877,11 @@ typeforce@^1.11.5: resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== +ua-parser-js@^0.7.18: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + uglify-js@^3.1.4: version "3.9.3" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.3.tgz#4a285d1658b8a2ebaef9e51366b3a0f7acd79ec2" @@ -16034,6 +17006,13 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +unixify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" + integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= + dependencies: + normalize-path "^2.1.1" + unorm@^1.3.3: version "1.6.0" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" @@ -16206,6 +17185,11 @@ v8flags@^3.1.1: dependencies: homedir-polyfill "^1.0.1" +valid-url@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -16255,6 +17239,14 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vue-template-compiler@^2.6.11: + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" + integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + w3c-hr-time@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -16561,6 +17553,17 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== +websocket@1.0.31: + version "1.0.31" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.31.tgz#e5d0f16c3340ed87670e489ecae6144c79358730" + integrity sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ== + dependencies: + debug "^2.2.0" + es5-ext "^0.10.50" + nan "^2.14.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" + whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -16568,7 +17571,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0: +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== @@ -16834,6 +17837,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -16964,6 +17976,11 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -17016,7 +18033,7 @@ yargs-parser@^15.0.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.3: +yargs-parser@^18.1.1, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -17075,7 +18092,7 @@ yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^14.2.2: +yargs@^14.2.0, yargs@^14.2.2: version "14.2.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== @@ -17092,6 +18109,23 @@ yargs@^14.2.2: y18n "^4.0.0" yargs-parser "^15.0.1" +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + zen-observable-ts@^0.8.21: version "0.8.21" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d"