Merge branch 'master' into burdon/tables

This commit is contained in:
Rich Burdon 2020-07-20 19:08:30 -04:00
commit c134a05926
32 changed files with 117 additions and 127 deletions

View File

@ -1,5 +1,5 @@
# Console
DXOS Network GraphQL server and console application.
DXOS Kubenet GraphQL server and console application.
![Console](./docs/images/console.png)

View File

@ -1,5 +1,5 @@
{
"version": "1.0.0-beta.17",
"version": "1.0.0-beta.19",
"useWorkspaces": true,
"npmClient": "yarn"
}

View File

@ -1,7 +1,7 @@
{
"name": "@dxos/console",
"version": "1.0.0-beta.0",
"description": "DXOS Console",
"description": "Kubenet Console",
"main": "index.js",
"private": true,
"scripts": {

View File

@ -1,5 +1,5 @@
name: dxos.network/console-app
displayName: DXOS Console Client
displayName: Kubenet Console Client
build: yarn dist
version: 0.0.6
package: QmZpM8u7ZUfQpXLgtdB1ug7nGExUrXhebtTSfSBPrRwcLX

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=development
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=development
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=production
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=development
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,7 +1,7 @@
{
"name": "@dxos/console-app",
"version": "1.0.0-beta.17",
"description": "DXOS Console Client",
"version": "1.0.0-beta.19",
"description": "Kubenet Console Client",
"main": "dist/es/index.js",
"files": [
"src/gql"
@ -10,10 +10,10 @@
"analyzer": "webpack --config webpack-analyzer.config.js",
"build:babel": "babel ./src --out-dir ./dist/es --ignore \"**/*.test.js\" --source-maps inline",
"build": "yarn dist",
"dist": "yarn clean && cp -f config-production.yml config.yml && yarn build:babel && webpack",
"dist": "yarn clean && yarn build:babel && CONFIG_FILE=config-production.yml webpack",
"clean": "rm -rf dist",
"lint": "semistandard 'src/**/*.js'",
"start": "cp -f ${CONFIG_FILE:-config-local.yml} config.yml && VERBOSE=true webpack-dev-server --mode development",
"start": "CONFIG_FILE=${CONFIG_FILE:-config-testnet.yml} VERBOSE=true webpack-dev-server --mode development",
"test": "jest --rootDir ./src --passWithNoTests --no-cache"
},
"author": "DXOS.org",

View File

@ -11,27 +11,31 @@ import Typography from '@material-ui/core/Typography';
import blueGrey from '@material-ui/core/colors/blueGrey';
import GraphQLIcon from '@material-ui/icons/Adb';
import DxOSIcon from '../icons/DXOS';
import DXOSIcon from '../icons/DXOS';
import { graphqlApi } from '../client';
const useStyles = makeStyles((theme) => ({
offset: theme.mixins.denseToolbar,
logo: {
paddingBottom: 2,
marginTop: 4,
marginRight: theme.spacing(2),
color: '#333',
color: theme.palette.grey[800],
'& svg': {
width: 64,
height: 32
width: 100,
height: 48
}
},
logoLink: {
lineHeight: 0
},
title: {
display: 'flex',
flex: 1
flex: 1,
marginTop: 2,
color: theme.palette.grey[800]
},
link: {
@ -46,9 +50,9 @@ const AppBar = ({ config }) => {
<>
<MuiAppBar position='fixed'>
<Toolbar>
<Link href='/'>
<Link classes={{ root: classes.logoLink }} href='/'>
<div className={classes.logo}>
<DxOSIcon />
<DXOSIcon />
</div>
</Link>
<div className={classes.title}>

View File

@ -1,5 +1,5 @@
//
// Copyright 2020 DXOS.org.org
// Copyright 2020 DXOS.org
//
import React from 'react';

View File

@ -1,5 +1,5 @@
//
// Copyright 2020 DXOS.org.org
// Copyright 2020 DXOS.org
//
import React from 'react';

View File

@ -1,15 +1,14 @@
//
// Copyright 2020 DXOS.org.org
// Copyright 2020 DXOS.org
//
import React from 'react';
import ExitToApp from '@material-ui/icons/ExitToApp';
import Link from '@material-ui/core/Link';
import LinkIcon from '@material-ui/icons/ExitToApp';
import { getServiceUrl } from '../util/config';
// TODO(burdon): print actual GRAPHQL query.
const QUERY = `
query {
queryRecords(attributes: [{ key: "name", value: { string: "%NAME%" } }]) {
@ -42,21 +41,19 @@ const QueryLink = ({ config, name, text, icon = false }) => {
const baseURL = getServiceUrl(config, 'wns.webui');
const query = QUERY.replace('%NAME%', name);
// TODO(burdon): This doesn't work.
// NOTE: Playground bug opens two tabs.
const fullURL = encodeURI(`${baseURL}?query=${query}`);
console.log(fullURL);
if (icon) {
return (
<Link href={fullURL} target='WNS_GraphQL'>
<ExitToApp />
<Link href={fullURL} target='gql'>
{icon && (
<LinkIcon />
)}
{!icon && (
text || name
)}
</Link>
);
}
return (
<Link href={fullURL} target='wns'>{text || name}</Link>
);
};
export default QueryLink;

View File

@ -17,6 +17,9 @@ const useStyles = makeStyles(() => ({
},
medium: {
width: 170
},
large: {
width: 400
}
}));

View File

@ -0,0 +1,8 @@
//
// Copyright 2020 DXOS.org
//
// See webpack-common.config.js
import config from '__CONFIG_FILE__';
export default config;

View File

@ -55,6 +55,7 @@ const Layout = ({ children }) => {
<FullScreen>
<div className={classes.root}>
<AppBar config={config} />
<div className={classes.container}>
<div className={classes.sidebar}>
<Sidebar modules={modules} />
@ -63,6 +64,7 @@ const Layout = ({ children }) => {
{children}
</div>
</div>
<div className={classes.footer}>
<StatusBar />
</div>

View File

@ -30,14 +30,12 @@ const AppRecords = () => {
// TODO(telackey): Does this also need an interval?
const ipfsResponse = useQueryStatusReducer(useQuery(IPFS_STATUS));
if (!appResponse || !ipfsResponse) {
return null;
}
const appData = JSON.parse(appResponse.wns_records.json);
const ipfsData = JSON.parse(ipfsResponse.ipfs_status.json);
const localRefs = new Set(ipfsData.refs.local);
return (
@ -45,23 +43,25 @@ const AppRecords = () => {
<TableHead>
<TableRow>
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
<TableCell size='icon'>Downloaded</TableCell>
<TableCell size='icon' />
</TableRow>
</TableHead>
<TableBody>
{appData.sort(sorter).map(({ id, name, version, createTime, attributes: { displayName, publicUrl, package: hash } }) => {
{appData.sort(sorter).map(({ id, name, version, createTime, attributes: { displayName, package: hash } }) => {
return (
<TableRow key={id} size='small'>
<TableCell monospace>
<AppLink config={config} name={name} />
</TableCell>
<TableCell>{displayName}</TableCell>
<TableCell monospace>
<AppLink config={config} name={name} version={version} text={version} />
</TableCell>
<TableCell>
{displayName}
</TableCell>
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
<TableCell>
<BooleanIcon yes={localRefs && localRefs.has(hash)} />

View File

@ -37,9 +37,9 @@ const BotRecords = () => {
<TableRow>
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
<TableCell />
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
<TableCell size='icon' />
</TableRow>
</TableHead>
<TableBody>
@ -48,8 +48,8 @@ const BotRecords = () => {
<TableRow key={id} size='small'>
<TableCell monospace>{name}</TableCell>
<TableCell monospace>{version}</TableCell>
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
<TableCell>{displayName}</TableCell>
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
<TableCell />
</TableRow>
);

View File

@ -109,14 +109,16 @@ const IPFSStatus = () => {
displayServers.push({ name: 'None' });
}
// TODO(burdon): Get Address (currenlty truncated).
return (
<Table stickyHeader size='small' className={classes.table}>
<TableHead>
<TableRow>
<TableCell>Identifier</TableCell>
<TableCell size='medium'>Description</TableCell>
<TableCell size='icon'>Connected</TableCell>
<TableCell>Address</TableCell>
<TableCell size='small'>Connected</TableCell>
</TableRow>
</TableHead>
<TableBody>
@ -125,10 +127,10 @@ const IPFSStatus = () => {
<TableCell>{name}</TableCell>
<TableCell>{description}</TableCell>
<TableCell>
<BooleanIcon yes={connected} />
{ipfs.addresses}
</TableCell>
<TableCell>
{ipfs.addresses}
<BooleanIcon yes={connected} />
</TableCell>
</TableRow>
))}

View File

@ -32,7 +32,7 @@ const SignalServers = () => {
<TableHead>
<TableRow>
<TableCell>Server</TableCell>
<TableCell>Peers</TableCell>
<TableCell size='small' s>Peers</TableCell>
</TableRow>
</TableHead>
<TableBody>

View File

@ -85,8 +85,8 @@ const WNSRecords = ({ type }) => {
<TableRow>
<TableCell onClick={sortBy('type')} size='medium'>Type</TableCell>
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
<TableCell onClick={sortBy('package')}>Package</TableCell>
<TableCell size='icon' />
@ -116,12 +116,12 @@ const WNSRecords = ({ type }) => {
<TableCell monospace>
{appLink || name}
</TableCell>
<TableCell>
{displayName || service || description}
</TableCell>
<TableCell monospace>
{verLink || version}
</TableCell>
<TableCell>
{displayName || service || description}
</TableCell>
<TableCell>
{moment.utc(createTime).fromNow()}
</TableCell>

View File

@ -6,34 +6,9 @@ import React from 'react';
import SvgIcon from '@material-ui/core/SvgIcon';
const Icon = (props) => (
<SvgIcon {...props} viewBox='0 0 512 256'>
<g transform='matrix(1,0,0,1,-187.374,-7.5)'>
<g transform='matrix(0.936373,0,0,0.906495,295.947,135.5)'>
<path
d='M0,-0.233C0,-27.435 -16.74,-48.591 -48.359,-48.591L-76.722,-48.591L-76.722,48.358L-48.59,48.358C-17.902,48.358 0,26.271 0,-0.233M-109.736,77.419L-109.736,-77.652L-48.59,-77.652C0,-77.652 33.711,-46.731 33.711,-0.233C33.711,46.73 0,77.419 -48.359,77.419L-109.736,77.419Z'
/>
</g>
<g transform='matrix(0.936373,0,0,0.906495,530.058,135.499)'>
<path
d='M0,0.002C0,-29.06 -18.367,-50.914 -46.964,-50.914C-75.793,-50.914 -94.16,-29.06 -94.16,0.002C-94.16,28.83 -75.793,50.917 -46.964,50.917C-18.367,50.917 0,28.83 0,0.002M-128.104,0.002C-128.104,-46.729 -93.927,-80.208 -46.964,-80.208C-0.233,-80.208 33.942,-46.729 33.942,0.002C33.942,46.731 -0.233,80.21 -46.964,80.21C-93.927,80.21 -128.104,46.731 -128.104,0.002'
/>
</g>
<g transform='matrix(0.936373,0,0,0.906495,573.603,85.3412)'>
<path
d='M0,110.898L18.134,85.092C29.062,96.484 46.034,106.249 67.422,106.249C85.789,106.249 94.392,98.111 94.392,89.044C94.392,62.075 5.115,80.907 5.115,22.551C5.115,-3.255 27.434,-24.644 63.935,-24.644C88.579,-24.644 109.039,-17.204 124.383,-3.022L106.017,21.622C93.462,9.997 76.723,4.65 60.913,4.65C46.964,4.65 39.059,10.695 39.059,19.994C39.059,44.406 128.103,27.898 128.103,85.789C128.103,114.153 107.644,135.542 66.028,135.542C36.036,135.542 14.648,125.544 0,110.898'
/>
</g>
<g transform='matrix(0.936373,0,0,0.906495,368.158,65.109)'>
<path
d='M0,56.844L-36.496,0L36.496,0L0,56.844Z'
/>
</g>
<g transform='matrix(0.936373,0,0,0.906495,368.158,205.681)'>
<path
d='M0,-56.845L-36.496,0L36.496,0L0,-56.845Z'
/>
</g>
</g>
<SvgIcon {...props} viewBox='0 0 3200 1067'>
<path fill='none' d='M0 0h3200v1066.67H0z' />
<path d='M1191.03 327.748v385.175h80.981c28.975 0 55.749-4.945 80.323-14.822 24.587-9.878 45.657-23.373 63.212-40.484 17.554-17.125 31.277-37.424 41.154-60.91 9.878-23.474 14.81-48.819 14.81-76.049 0-27.647-4.717-53.22-14.152-76.706-9.435-23.461-22.829-43.773-40.168-60.897-17.34-17.112-38.511-30.607-63.528-40.497-25.029-9.865-52.904-14.81-83.624-14.81h-79.008zm-51.361-47.403h134.327c37.297 0 71.319 6.147 102.052 18.428 30.72 12.306 57.052 29.202 79.008 50.703 21.943 21.513 38.954 46.858 51.02 76.049 12.065 29.202 18.111 60.897 18.111 95.133 0 34.237-6.261 66.07-18.769 95.475s-29.848 54.763-52.006 76.049c-22.171 21.298-48.402 38.081-78.692 50.374-30.278 12.281-63.199 18.427-98.751 18.427h-136.3V280.345zM1785.58 554.239l-135.63 206.747h-57.951l163.948-246.902-152.742-233.736h57.937l125.753 190.28 125.095-190.28h57.938l-153.4 230.435 163.278 250.203h-57.938L1785.58 554.239zM2301.11 718.848c27.66 0 53.334-5.274 77.035-15.81 23.702-10.535 44.216-24.789 61.555-42.786 17.34-17.997 30.948-38.954 40.826-62.882 9.878-23.917 14.81-49.49 14.81-76.707 0-27.204-4.932-52.777-14.81-76.706-9.878-23.916-23.486-44.873-40.826-62.883-17.339-17.984-37.853-32.251-61.555-42.786-23.701-10.535-49.375-15.809-77.035-15.809-27.659 0-53.334 5.274-77.035 15.809-23.701 10.535-44.228 24.802-61.555 42.786-17.352 18.01-30.948 38.967-40.825 62.883-9.878 23.929-14.81 49.502-14.81 76.706 0 27.217 4.932 52.79 14.81 76.707 9.877 23.928 23.473 44.885 40.825 62.882 17.327 17.997 37.854 32.251 61.555 42.786 23.701 10.536 49.376 15.81 77.035 15.81m0 48.717c-34.236 0-66.285-6.488-96.132-19.426-29.848-12.938-55.952-30.607-78.338-53.005-22.386-22.386-40.067-48.49-53.005-78.338-12.951-29.848-19.427-61.896-19.427-96.133 0-34.236 6.476-66.272 19.427-96.132 12.938-29.836 30.619-55.952 53.005-78.338 22.386-22.386 48.49-40.055 78.338-53.005 29.847-12.951 61.896-19.427 96.132-19.427 34.237 0 66.273 6.476 96.133 19.427 29.835 12.95 55.952 30.619 78.338 53.005 22.386 22.386 40.054 48.502 53.005 78.338 12.951 29.86 19.426 61.896 19.426 96.132 0 34.237-6.475 66.285-19.426 96.133-12.951 29.848-30.619 55.952-53.005 78.338-22.386 22.398-48.503 40.067-78.338 53.005-29.86 12.938-61.896 19.426-96.133 19.426M2802.16 767.565c-39.067 0-72.203-7.791-99.421-23.385-27.217-15.569-50.69-37.196-70.445-64.843l43.456-32.921c16.239 25.017 34.451 43.684 54.649 55.965 20.173 12.293 44.102 18.439 71.761 18.439 14.924 0 28.647-2.301 41.155-6.918 12.508-4.603 23.259-10.864 32.263-18.768 8.993-7.892 16.012-17.441 21.071-28.634 5.034-11.193 7.563-23.372 7.563-36.538 0-14.924-3.288-27.432-9.865-37.538-6.589-10.092-15.379-18.756-26.344-26.003-10.978-7.247-23.486-13.494-37.525-18.768a2454.437 2454.437 0 00-43.456-15.797 712.606 712.606 0 01-49.06-18.769c-16.024-6.791-30.277-15.24-42.786-25.345-12.521-10.093-22.714-22.272-30.619-36.538-7.905-14.266-11.851-31.935-11.851-53.005 0-17.555 3.719-33.908 11.193-49.047 7.462-15.151 17.77-28.317 30.949-39.51 13.165-11.193 28.734-19.97 46.732-26.332 17.997-6.362 37.537-9.549 58.607-9.549 34.237 0 63.212 6.362 86.913 19.098 23.701 12.736 44.329 30.505 61.884 53.334l-40.826 30.278c-24.586-38.183-60.796-57.28-108.628-57.28-13.609 0-26.117 1.973-37.525 5.931-11.433 3.946-21.399 9.536-29.962 16.783-8.562 7.247-15.252 15.696-20.084 25.346-4.831 9.662-7.247 19.982-7.247 30.948 0 14.051 3.188 25.788 9.549 35.223 6.362 9.447 14.823 17.681 25.358 24.687 10.535 7.032 22.715 13.065 36.538 18.111a4308.994 4308.994 0 0043.128 15.481 681.841 681.841 0 0149.375 19.085c16.24 7.032 30.835 15.695 43.786 26.003 12.938 10.32 23.473 22.942 31.605 37.866 8.107 14.924 12.18 33.364 12.18 55.307 0 17.997-3.617 35.223-10.864 51.69-7.247 16.454-17.681 31.049-31.277 43.772-13.609 12.736-29.848 22.942-48.718 30.619-18.883 7.677-39.953 11.522-63.212 11.522M893.472 909.428l-338.469-211.54 92.313-126.929 246.156 338.469zM398.96 570.959l92.313 126.929-338.469 211.54L398.96 570.959zM152.804 157.226l338.469 211.54-92.313 126.929-246.156-338.469zm392.473 273.423l74.67 102.684-74.67 102.672V430.649zm-44.266 205.356l-74.682-102.672 74.682-102.684v205.356zm146.305-140.31l-92.313-126.929 338.469-211.54-246.156 338.469zm349.03-404.653l-29.633-31.783L523.144 336.49 79.563 59.259 49.93 91.042l321.661 442.291L49.93 975.612l29.633 31.795 443.581-277.243 443.569 277.243 29.633-31.795-321.661-442.279L996.346 91.042z' fill-rule='nonzero' />
</SvgIcon>
);

View File

@ -6,7 +6,7 @@ import debug from 'debug';
import React from 'react';
import { render } from 'react-dom';
import config from '../config.yml';
import config from './config';
import Main from './containers/Main';

View File

@ -14,7 +14,7 @@ export const createTheme = (theme) => createMuiTheme({
// https://stackoverflow.com/questions/60567673/reactjs-material-ui-theme-mixins-toolbar-offset-is-not-adapting-when-toolbar
mixins: {
denseToolbar: {
minHeight: 48
height: 48
}
},

View File

@ -1,7 +1,7 @@
{
"build": {
"name": "@dxos/console-app",
"buildDate": "2020-07-20T18:34:32.825Z",
"version": "1.0.0-beta.17"
"buildDate": "2020-07-20T22:54:23.462Z",
"version": "1.0.0-beta.19"
}
}

View File

@ -9,8 +9,7 @@ const webpack = require('webpack');
const PUBLIC_URL = process.env.PUBLIC_URL || '';
// TODO(burdon): Remove.
const STACK_CONFIG = process.env.CONFIG || 'default';
const CONFIG_FILE = path.relative('./src', process.env.CONFIG_FILE || 'config-local.yml');
module.exports = {
devtool: 'eval-source-map',
@ -76,8 +75,8 @@ module.exports = {
// Define the build config file based on the target.
// https://webpack.js.org/plugins/normal-module-replacement-plugin
new webpack.NormalModuleReplacementPlugin(/(.*)__STACK_CONFIG__/, (resource) => {
resource.request = resource.request.replace(/__STACK_CONFIG__/, STACK_CONFIG);
new webpack.NormalModuleReplacementPlugin(/(.*)__CONFIG_FILE__/, (resource) => {
resource.request = resource.request.replace(/__CONFIG_FILE__/, CONFIG_FILE);
}),
// https://www.npmjs.com/package/webpack-version-file-plugin

View File

@ -15,7 +15,7 @@ module.exports = merge(commonConfig, {
new HtmlWebPackPlugin({
template: './public/index.html',
templateParameters: {
title: 'DXOS Console'
title: 'Kubenet Console'
}
})
]

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=development
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=development
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,11 +1,11 @@
#
# NODE_ENV === production
# NODE_ENV=production
# NOTE: Set CONFIG_FILE to swap out this config file.
#
app:
title: 'Console'
org': 'DXOS'
title: 'Kubenet Console'
org': 'DXOS.org'
theme: 'dark'
website: 'https://dxos.org'
publicUrl: '/console'

View File

@ -1,7 +1,7 @@
{
"name": "@dxos/console-server",
"version": "1.0.0-beta.17",
"description": "DXOS Console Server",
"version": "1.0.0-beta.19",
"description": "Kubenet Console Server",
"main": "dist/es/index.js",
"bin": {
"dxos-console": "bin/console.js"
@ -31,7 +31,7 @@
"dependencies": {
"@babel/polyfill": "^7.8.7",
"@babel/runtime": "^7.8.7",
"@dxos/console-app": "^1.0.0-beta.17",
"@dxos/console-app": "^1.0.0-beta.19",
"@wirelineio/wns-schema": "^0.1.1",
"apollo-boost": "^0.4.9",
"apollo-server-express": "^2.13.1",

View File

@ -67,7 +67,7 @@ module.exports = {
new HtmlWebPackPlugin({
template: './public/index.html',
templateParameters: {
title: 'DXOS Console'
title: 'Kubenet Console'
}
}),