From 96c865f14a62413b370c962864d5c749c144fdb6 Mon Sep 17 00:00:00 2001 From: Alexis Svinartchouk Date: Wed, 10 Jul 2019 17:01:48 +0200 Subject: [PATCH] wip --- .../app/components/drive-selector/index.ts | 8 +- .../drive-selector2/drive-selector.tsx | 157 +++--- .../app/components/drive-selector2/index.ts | 2 +- .../image-selector/image-selector.jsx | 11 +- .../open-external/services/open-external.js | 2 +- .../pages/main/controllers/drive-selection.js | 37 +- lib/gui/app/pages/main/main.js | 1 + .../app/pages/main/templates/main.tpl.html | 6 + npm-shrinkwrap.json | 494 ++++++++++++++---- package.json | 4 +- 10 files changed, 523 insertions(+), 199 deletions(-) diff --git a/lib/gui/app/components/drive-selector/index.ts b/lib/gui/app/components/drive-selector/index.ts index e40e100f..f783a04f 100644 --- a/lib/gui/app/components/drive-selector/index.ts +++ b/lib/gui/app/components/drive-selector/index.ts @@ -14,14 +14,12 @@ * limitations under the License. */ -'use strict' - /** * @module Etcher.Components.TargetSelector */ -const angular = require('angular') -const { react2angular } = require('react2angular') +import * as angular from 'angular'; +import { react2angular } from 'react2angular'; const MODULE_NAME = 'Etcher.Components.TargetSelector' const SelectTargetButton = angular.module(MODULE_NAME, []) @@ -31,4 +29,4 @@ SelectTargetButton.component( react2angular(require('./target-selector.jsx')) ) -module.exports = MODULE_NAME +export = MODULE_NAME; diff --git a/lib/gui/app/components/drive-selector2/drive-selector.tsx b/lib/gui/app/components/drive-selector2/drive-selector.tsx index 122703a7..e38de77f 100644 --- a/lib/gui/app/components/drive-selector2/drive-selector.tsx +++ b/lib/gui/app/components/drive-selector2/drive-selector.tsx @@ -16,14 +16,17 @@ import { Meter } from 'grommet'; import * as React from 'react'; -import { Badge, Heading, Modal, Table } from 'rendition'; +import { Badge, Modal, Table } from 'rendition'; import { getDrives } from '../../models/available-drives'; -import { getDriveImageCompatibilityStatuses } from '../../modules/drive-constraints'; +import { + COMPATIBILITY_STATUS_TYPES, + getDriveImageCompatibilityStatuses, + isDriveValid, +} from '../../modules/drive-constraints'; import { deselectDrive, getImage, - getSelectedDrives, isDriveSelected, selectDrive, } from '../../models/selection-state'; @@ -58,18 +61,17 @@ interface CompatibilityStatus { } interface DriveSelectorProps { + close: () => void; unique: boolean; // TODO } interface DriveSelectorState { - open: boolean; drives: Drive[]; + selected: Drive[]; image: Image; - selectedDrivesCount: number; + disabledDrives: string[]; } - -// TODO: no hardcoded size const modalStyle = { width: '800px', height: '600px', @@ -96,8 +98,13 @@ const wrapperStyle = { } export class DriveSelector2 extends React.Component { - private table: React.RefObject>; - private columns: any; // TODO + private table: Table | null = null; + private columns: { + field: keyof Drive, + label: string, + render?: (value: any, row: Drive) => string | number | JSX.Element | null, + }[]; + private unsubscribe?: () => void; constructor(props: DriveSelectorProps) { super(props); @@ -122,28 +129,43 @@ export class DriveSelector2 extends React.Component { - const drives: Drive[] = getDrives(); - for (let i = 0; i < drives.length; i++) { - drives[i] = {...drives[i]}; - } - const selected = drives.filter(d => isDriveSelected(d.device)); - this.setState({ - drives, - selectedDrivesCount: selected.length, - image: getImage(), - }); - if (this.table.current != null) { - this.table.current.setRowSelection(selected); - } - }); + this.state = this.getNewState(); + } + + public componentDidMount() { + this.update(); + if (this.unsubscribe === undefined) { + this.unsubscribe = subscribe(this.update.bind(this)); + } + } + + public componentWillUnmount() { + if (this.unsubscribe !== undefined) { + this.unsubscribe(); + this.unsubscribe = undefined; + } + } + + private getNewState() { + const drives: Drive[] = getDrives(); + for (let i = 0; i < drives.length; i++) { + drives[i] = {...drives[i]}; + } + const selected = drives.filter(d => isDriveSelected(d.device)); + const image = getImage(); + const disabledDrives = drives.filter(d => !isDriveValid(d, image)).map(d => d.device); + return { drives, disabledDrives, image, selected }; + } + + private update() { + this.setState(this.getNewState()); + this.updateTableSelection(); + } + + private updateTableSelection() { + if (this.table !== null) { + this.table.setRowSelection(this.state.selected); + } } private renderSize(size: number) { @@ -179,11 +201,15 @@ export class DriveSelector2 extends React.Component); } - result.push(...getDriveImageCompatibilityStatuses(row, this.state.image).map((status: CompatibilityStatus) => { // TODO: badge color - return {status.message} + result.push(...getDriveImageCompatibilityStatuses(row, this.state.image).map((status: CompatibilityStatus) => { + const props: { key: string, xsmall: true, danger?: boolean, warning?: boolean} = { xsmall: true, key: status.message }; + if (status.type === COMPATIBILITY_STATUS_TYPES.ERROR) { + props.danger = true; + } else if (status.type === COMPATIBILITY_STATUS_TYPES.WARNING) { + props.warning = true; + } + return {status.message} })) - // TODO: drive contains source mountpoint - // TODO: large drive return {result}; } @@ -202,38 +228,37 @@ export class DriveSelector2 extends React.Component d.device)); - if (this.state.open) { - return - - Available targets - - {this.state.drives.length} found - - - } - action={`Select (${this.state.selectedDrivesCount})`} - style={modalStyle} - done={() => {this.setState({open: false})}} - > -
- - ref={this.table} - rowKey='device' - onCheck={this.onCheck} - columns={this.columns} - data={this.state.drives} - tbodyPrefix={this.renderTbodyPrefix()} - > - + return + + Available targets + + {this.state.drives.length} found +
-
-
- } else { - return null; - } + } + action={`Select (${this.state.selected.length})`} + style={modalStyle} + done={this.props.close} + > +
+ + ref={(t) => { + this.table = t; + this.updateTableSelection(); + }} + rowKey='device' + onCheck={this.onCheck} + columns={this.columns} + data={this.state.drives} + disabledRows={this.state.disabledDrives} + tbodyPrefix={this.renderTbodyPrefix()} + > + +
+ + } private onCheck(checkedDrives: Drive[]): void { diff --git a/lib/gui/app/components/drive-selector2/index.ts b/lib/gui/app/components/drive-selector2/index.ts index 18dcc505..9c726a02 100644 --- a/lib/gui/app/components/drive-selector2/index.ts +++ b/lib/gui/app/components/drive-selector2/index.ts @@ -23,6 +23,6 @@ const MODULE_NAME = 'Etcher.Components.DriveSelector2' angular .module(MODULE_NAME, []) - .component('driveSelector2', react2angular(DriveSelector2)) + .component('driveSelector2', react2angular(DriveSelector2, ['close'])) export = MODULE_NAME; diff --git a/lib/gui/app/components/image-selector/image-selector.jsx b/lib/gui/app/components/image-selector/image-selector.jsx index 0db215ee..47a0dc64 100644 --- a/lib/gui/app/components/image-selector/image-selector.jsx +++ b/lib/gui/app/components/image-selector/image-selector.jsx @@ -19,6 +19,7 @@ /* eslint-disable no-unused-vars */ const React = require('react') const propTypes = require('prop-types') +const { Badge, Select } = require('rendition') const middleEllipsis = require('./../../utils/middle-ellipsis') @@ -64,6 +65,13 @@ const SelectImageButton = (props) => { return ( + @@ -92,7 +100,8 @@ SelectImageButton.propTypes = { imageBasename: propTypes.string, reselectImage: propTypes.func, flashing: propTypes.bool, - imageSize: propTypes.number + imageSize: propTypes.number, + sourceType: propTypes.string } module.exports = SelectImageButton diff --git a/lib/gui/app/os/open-external/services/open-external.js b/lib/gui/app/os/open-external/services/open-external.js index 7328ef75..097fab33 100644 --- a/lib/gui/app/os/open-external/services/open-external.js +++ b/lib/gui/app/os/open-external/services/open-external.js @@ -35,7 +35,7 @@ module.exports = function () { */ this.open = (url) => { // Don't open links if they're disabled by the env var - if (settings.get('disableExternalLinks')) { + if (settings.get('disableExternalLinks') || !url) { return } diff --git a/lib/gui/app/pages/main/controllers/drive-selection.js b/lib/gui/app/pages/main/controllers/drive-selection.js index b73b6838..177118ce 100644 --- a/lib/gui/app/pages/main/controllers/drive-selection.js +++ b/lib/gui/app/pages/main/controllers/drive-selection.js @@ -28,7 +28,9 @@ const exceptionReporter = require('../../../modules/exception-reporter') // eslint-disable-next-line node/no-missing-require const utils = require('../../../../../gui/app/modules/utils') -module.exports = function (DriveSelectorService) { +module.exports = function ($timeout, DriveSelectorService) { + this.driveSelectorModalOpen = false; + /** * @summary Get drive title based on device quantity * @function @@ -103,20 +105,23 @@ module.exports = function (DriveSelectorService) { * DriveSelectionController.openDriveSelector(); */ this.openDriveSelector = () => { - DriveSelectorService.open().then((drive) => { - if (!drive) { - return - } + this.driveSelectorModalOpen = true; + // Trigger re-render + $timeout() + //DriveSelectorService.open().then((drive) => { + // if (!drive) { + // return + // } - selectionState.selectDrive(drive.device) + // selectionState.selectDrive(drive.device) - analytics.logEvent('Select drive', { - device: drive.device, - unsafeMode: settings.get('unsafeMode') && !settings.get('disableUnsafeMode'), - applicationSessionUuid: store.getState().toJS().applicationSessionUuid, - flashingWorkflowUuid: store.getState().toJS().flashingWorkflowUuid - }) - }).catch(exceptionReporter.report) + // analytics.logEvent('Select drive', { + // device: drive.device, + // unsafeMode: settings.get('unsafeMode') && !settings.get('disableUnsafeMode'), + // applicationSessionUuid: store.getState().toJS().applicationSessionUuid, + // flashingWorkflowUuid: store.getState().toJS().flashingWorkflowUuid + // }) + //}).catch(exceptionReporter.report) } /** @@ -158,4 +163,10 @@ module.exports = function (DriveSelectorService) { this.shouldShowDrivesButton = () => { return !settings.get('disableExplicitDriveSelection') } + + this.closeDriveSelectorModal = () => { + this.driveSelectorModalOpen = false + // Trigger re-render + $timeout() + } } diff --git a/lib/gui/app/pages/main/main.js b/lib/gui/app/pages/main/main.js index 7838ba04..2bad6ce4 100644 --- a/lib/gui/app/pages/main/main.js +++ b/lib/gui/app/pages/main/main.js @@ -34,6 +34,7 @@ const MainPage = angular.module(MODULE_NAME, [ require('angular-seconds-to-date'), require('../../components/drive-selector/drive-selector'), + require('../../components/drive-selector2'), require('../../components/tooltip-modal/tooltip-modal'), require('../../components/flash-error-modal/flash-error-modal'), require('../../components/progress-button'), diff --git a/lib/gui/app/pages/main/templates/main.tpl.html b/lib/gui/app/pages/main/templates/main.tpl.html index fdf1b71d..bd6f9fb5 100644 --- a/lib/gui/app/pages/main/templates/main.tpl.html +++ b/lib/gui/app/pages/main/templates/main.tpl.html @@ -26,6 +26,12 @@
+ +
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 812b863f..5bbb4201 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -854,17 +854,17 @@ } }, "@babel/runtime": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", - "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.4.tgz", + "integrity": "sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q==", "requires": { - "regenerator-runtime": "^0.12.0" + "regenerator-runtime": "^0.13.2" }, "dependencies": { "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" } } }, @@ -987,9 +987,9 @@ "dev": true }, "@types/color": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/color/-/color-2.0.1.tgz", - "integrity": "sha512-dVqiefojpzW1O1uOJ9Mn0iKfRaaD5B944loklphiG8uRok9/YYAUQQlOGebo5RSMfayyGTa0dGIZNAtPQdhceQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.0.tgz", + "integrity": "sha512-5qqtNia+m2I0/85+pd2YzAXaTyKO8j+svirO5aN+XaQJ5+eZ8nx0jPtEWZLxCi50xwYsX10xUHetFzfb1WEs4Q==", "requires": { "@types/color-convert": "*" } @@ -1019,6 +1019,19 @@ "integrity": "sha512-l/1wJTM4G+aWVzonZJ8vx/xJp3flBLWgZMUrCWBaGysiCutl+q3Eu1lKPq6GYFasP7L19KZ3L/y1kv3X08R71w==", "dev": true }, + "@types/domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha512-cfBw6q6tT5sa1gSPFSRKzF/xxYrrmeiut7E0TxNBObiLSBTuFEHibcfEe3waQPEDbqBsq+ql/TOniw65EyDFMA==" + }, + "@types/domutils": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/domutils/-/domutils-1.7.2.tgz", + "integrity": "sha512-Nnwy1Ztwq42SSNSZSh9EXBJGrOZPR+PQ2sRT4VZy8hnsFXfCil7YlKO2hd2360HyrtFz2qwnKQ13ENrgXNxJbw==", + "requires": { + "@types/domhandler": "*" + } + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -1045,10 +1058,20 @@ "@types/node": "*" } }, + "@types/htmlparser2": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@types/htmlparser2/-/htmlparser2-3.10.0.tgz", + "integrity": "sha512-keXxWwpNOTvRTWTS4cdLHPp3p6gSzitTCmLNgPJinEvS95QzjkhbEMSaQO4XkEp4ctXJu8P0j4xqEVOPsLj3vg==", + "requires": { + "@types/domhandler": "*", + "@types/domutils": "*", + "@types/node": "*" + } + }, "@types/json-schema": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-6.0.1.tgz", - "integrity": "sha512-vuL/tG01yKO//gmCmnV3OZhx2hs538t+7FpQq//sUV1sF6xiKi5V8F60dvAxe/HkC4+QaMCHqrm/akqlppTAkQ==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==" }, "@types/lodash": { "version": "4.14.120", @@ -1106,9 +1129,9 @@ "integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==" }, "@types/react": { - "version": "16.8.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.17.tgz", - "integrity": "sha512-pln3mgc6VfkNg92WXODul/ONo140huK9OMsx62GlBlZ2lvjNK86PQJhYMPLO1i66aF5O9OPyZefogvNltBIszA==", + "version": "16.8.22", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.22.tgz", + "integrity": "sha512-C3O1yVqk4sUXqWyx0wlys76eQfhrQhiDhDlHBrjER76lR2S2Agiid/KpOU9oCqj1dISStscz7xXz1Cg8+sCQeA==", "requires": { "@types/prop-types": "*", "csstype": "^2.2.0" @@ -1141,9 +1164,9 @@ } }, "@types/react-jsonschema-form": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.3.2.tgz", - "integrity": "sha512-aG2zyxAlRw9+96le7U0P3mqrVgallf5cmsDW4OhZgFhpXyrB0N93hhNfw4zTlC39aVA04ZlhQ3cG1hv1G9X4yA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.6.1.tgz", + "integrity": "sha512-DKHLLI0YZns7v58jnIy39eXX+seiaBhCGDtFm8ULcr/knxZYxm/vBpCm4GHl4znjXdRXFm8DjkARxqTkamkOfA==", "requires": { "@types/json-schema": "*", "@types/react": "*" @@ -1169,6 +1192,14 @@ "@types/tough-cookie": "*" } }, + "@types/sanitize-html": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-1.20.0.tgz", + "integrity": "sha512-didHnmdOqYconeLOaHbYK9Y0jEULat5UbblgPUmwTJCEU7gA9AW1m9Zsi4h5gMFP56zAWRuAnH42D/h1zwZr+Q==", + "requires": { + "@types/htmlparser2": "*" + } + }, "@types/styled-components": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-4.1.8.tgz", @@ -1180,9 +1211,9 @@ } }, "@types/styled-system": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/styled-system/-/styled-system-4.2.0.tgz", - "integrity": "sha512-bpRRQ2rtjIeVC+EEar2669F8cq4TgXno6NNj+ZeZnCM3fMKarvrGFKBHVuQc1wSTbi7Z/4CJQvYcslKyUbzgxg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/styled-system/-/styled-system-4.2.2.tgz", + "integrity": "sha512-eULPjWVEaXElIFKBwDVWRvGkHC0Fj63XVRna8RHoaRivNhCI/QkEJpMgyb0uA4WpsHpO5SDXH+DyQwEUkyW3rA==", "requires": { "csstype": "^2.6.4" } @@ -1208,9 +1239,9 @@ } }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", + "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", "requires": { "@types/node": "*" } @@ -1794,8 +1825,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { "version": "0.3.2", @@ -2068,9 +2098,9 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "balena-temen": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/balena-temen/-/balena-temen-0.5.6.tgz", - "integrity": "sha512-xLFTN0CNM5qc7yI8LlcL1O+bqAZwrjcyrnuoxIJItgXmGg3NpWV/pndfz3FI0l8DQSJD5CyXqTEVz0MM6e9+jQ==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/balena-temen/-/balena-temen-0.5.7.tgz", + "integrity": "sha512-ud6CJAdPXXy7UGN+ws1iKNl4W1egqxA4STOWlbQjER7xGt/L7AWVZDkUXcrBrLaDwFDd+uSwi+AhqFp+yrplNw==" }, "base": { "version": "0.11.2", @@ -2715,7 +2745,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, "requires": { "no-case": "^2.2.0", "upper-case": "^1.1.1" @@ -2954,7 +2983,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, "requires": { "source-map": "~0.6.0" }, @@ -2962,8 +2990,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -3485,6 +3512,11 @@ } } }, + "css-b64-images": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/css-b64-images/-/css-b64-images-0.2.5.tgz", + "integrity": "sha1-QgBdgyBLK0pdk7axpWRBM7WSegI=" + }, "css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -4356,12 +4388,43 @@ "esutils": "^2.0.2" } }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -4794,6 +4857,11 @@ "tapable": "^1.0.0" } }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, "env-paths": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", @@ -6597,9 +6665,9 @@ } }, "grommet": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/grommet/-/grommet-2.7.0.tgz", - "integrity": "sha512-qsI1SeIPdRDb/I9hQkNngmZjB15SsLHw9JgdE0IH5HLZBWMOVk2tOhMjFM/0picc7BQI9m+LDTDihqS7TtgnPw==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/grommet/-/grommet-2.7.3.tgz", + "integrity": "sha512-Eqg9nituE2/CseEjxBDUMi2EZZIBTMF185L+erJOWOqIHKmtqhRAhrl8MCxO5St7i05ZeQmqg1NQBaFZ6v0BNg==", "requires": { "css": "^2.2.3", "grommet-icons": "^4.2.0", @@ -6852,6 +6920,31 @@ } } }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -7686,8 +7779,12 @@ "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" }, "lodash.frompairs": { "version": "4.0.1", @@ -7699,6 +7796,16 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, "lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -7708,8 +7815,7 @@ "lodash.mergewith": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" }, "lodash.topath": { "version": "4.5.2", @@ -7830,8 +7936,7 @@ "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" }, "lowercase-keys": { "version": "1.0.1", @@ -7925,9 +8030,9 @@ } }, "markdown-to-jsx": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.9.4.tgz", - "integrity": "sha512-Fvx2ZhiknGmcLsWVjIq6MmiN9gcCot8w+jzwN2mLXZcQsJGRN3Zes5Sp5M9YNIzUy/sDyuOTjimFdtAcvvmAPQ==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.10.2.tgz", + "integrity": "sha512-eDCsRobOkbQ4PqCphrxNi/U8geA8DGf52dMP4BrrYsVFyQ2ILFnXIB5sRcIxnRK2nPl8k5hUYdRNRXLlQNYLYg==", "requires": { "prop-types": "^15.6.2", "unquote": "^1.1.0" @@ -8021,9 +8126,9 @@ "dev": true }, "mermaid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.0.0.tgz", - "integrity": "sha512-vUQRykev0A6RtxIVqQT3a9TDxcSbdZbQF5JDyKgidnYuJy8BE8jp6LM+HKDSQuroKm6buu4NlpMO+qhxIP/cTg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.1.0.tgz", + "integrity": "sha512-fsCN8bOukYHZT6FlA0eIeLs/O3H2+CWcHnxRrS86Ci1cpJes5/qvoye0xjhe8lbXJCFLM8sXWVg57aMHPtnAaw==", "requires": { "d3": "^5.7.0", "dagre-d3-renderer": "^0.5.8", @@ -8031,14 +8136,15 @@ "graphlibrary": "^2.2.0", "he": "^1.2.0", "lodash": "^4.17.11", - "moment": "^2.23.0", + "minify": "^4.1.1", + "moment-mini": "^2.22.1", "scope-css": "^1.2.1" }, "dependencies": { "d3": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.9.2.tgz", - "integrity": "sha512-ydrPot6Lm3nTWH+gJ/Cxf3FcwuvesYQ5uk+j/kXEH/xbuYWYWTMAHTJQkyeuG8Y5WM5RSEYB41EctUrXQQytRQ==", + "version": "5.9.7", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.9.7.tgz", + "integrity": "sha512-jENytrmdXtGPw7HuSK2S4gxRM1eUGjKvWQkQ6ct4yK+DB8SG3VcnVrwesfnsv8rIcxMUg18TafT4Q8mOZUMP4Q==", "requires": { "d3-array": "1", "d3-axis": "1", @@ -8154,6 +8260,63 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, + "minify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/minify/-/minify-4.1.2.tgz", + "integrity": "sha512-YY6b6VzV7AY2MTMt1GjoFqKthGWvAr2L7MrzmFyiEsvPX+XAvidHcKqu36LlDT1V4I80ncbV5bsdTnIJq4/Sdw==", + "requires": { + "clean-css": "^4.1.6", + "css-b64-images": "~0.2.5", + "debug": "^4.1.0", + "html-minifier": "^4.0.0", + "terser": "^4.0.0", + "try-catch": "^2.0.0", + "try-to-catch": "^1.0.2" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "requires": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + } + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -8383,6 +8546,11 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, + "moment-mini": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.22.1.tgz", + "integrity": "sha512-OUCkHOz7ehtNMYuZjNciXUfwTuz8vmF1MTbAy59ebf+ZBYZO5/tZKuChVWCX+uDo+4idJBpGltNfV8st+HwsGw==" + }, "mountutils": { "version": "1.3.17", "resolved": "https://registry.npmjs.org/mountutils/-/mountutils-1.3.17.tgz", @@ -8561,7 +8729,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, "requires": { "lower-case": "^1.1.1" } @@ -9210,7 +9377,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, "requires": { "no-case": "^2.2.0" } @@ -9640,6 +9806,59 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "postcss": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", @@ -9999,21 +10218,27 @@ "integrity": "sha512-ioMCzVDWvCvKD8eeT+iukyWrBGrA3DiFYkXfBsVYIRdaREZuBjENG+KjrikavCLasozqRWTwFUagU/O4vPpRMA==" }, "react-jsonschema-form": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.5.0.tgz", - "integrity": "sha512-SsldN37+5dDLRAGmwNO6cKb9AH2zhgkhIST9+UVaBqQ/KONl4jj1KFerXiEySGGDFBe81CjMGapZV5Ydrdp4pg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.6.1.tgz", + "integrity": "sha512-rDZjAMzI9GrG5EpBbqmhnch3jgFd9YN9U2bk8zc0PBldgGiENjo+ziIh4vseDNijPNU+07wclD5anIN23nmYxw==", "requires": { "ajv": "^6.7.0", "babel-runtime": "^6.26.0", "core-js": "^2.5.7", "lodash.topath": "^4.5.2", - "prop-types": "^15.5.8" + "prop-types": "^15.5.8", + "react-is": "^16.8.4" }, "dependencies": { "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" } } }, @@ -10514,8 +10739,7 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" }, "remove-trailing-separator": { "version": "1.1.0", @@ -10524,29 +10748,30 @@ "dev": true }, "rendition": { - "version": "8.7.2", - "resolved": "https://registry.npmjs.org/rendition/-/rendition-8.7.2.tgz", - "integrity": "sha512-kv5K/u8OXEXQtPHsG72q3HismRKgROFJMSvV0EwiAByj3ZoWq5BTITvR0qCJIrlCCNspxjxKUVEIXiWWNmW4Gw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/rendition/-/rendition-10.1.0.tgz", + "integrity": "sha512-YQfY8G2+qTFhJTmncnB8DYaF7PgtmkKmfsvUgMt5m4/8Z69sUEAHFVpfd2MSI1pi/V+cb2R7xJkQGxmDwkyiNQ==", "requires": { - "@types/color": "^2.0.0", - "@types/json-schema": "^6.0.1", + "@types/color": "^3.0.0", + "@types/json-schema": "^7.0.3", "@types/lodash": "^4.14.77", "@types/marked": "^0.3.0", "@types/node": "^10.12.21", "@types/prop-types": "^15.7.0", "@types/react-icons": "^2.2.4", - "@types/react-jsonschema-form": "^1.0.9", + "@types/react-jsonschema-form": "^1.3.2", "@types/recompose": "^0.26.2", + "@types/sanitize-html": "^1.18.3", "@types/styled-components": "4.1.8", "@types/styled-system": "^4.0.0", "@types/uuid": "^3.4.3", "ajv": "^6.7.0", "ajv-keywords": "^3.3.0", "balena-temen": "^0.5.5", - "color": "^2.0.0", + "color": "^3.1.2", "color-hash": "^1.0.3", "copy-to-clipboard": "^3.0.8", - "grommet": "^2.6.6", + "grommet": "^2.7.1", "jellyschema": "^0.11.9", "lodash": "^4.17.11", "marked": "^0.4.0", @@ -10556,25 +10781,23 @@ "react-jsonschema-form": "^1.3.0", "recompose": "0.26.0", "regex-parser": "^2.2.7", + "sanitize-html": "^1.20.1", "styled-components": "^4.2.0", "styled-system": "^4.1.0", + "tslib": "^1.10.0", "uuid": "^3.2.1", "xterm": "^3.12.2" }, "dependencies": { - "@babel/runtime": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz", - "integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==", + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", "requires": { - "regenerator-runtime": "^0.13.2" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, - "@types/node": { - "version": "10.14.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.6.tgz", - "integrity": "sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg==" - }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -10585,19 +10808,10 @@ "react-is": "^16.8.1" } }, - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" - }, - "styled-system": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-4.2.2.tgz", - "integrity": "sha512-qaIIFbjHZxjIOQQ3AWIswriHP91L42UmNHt5GFut+IKkLIqMEWmd+OYo7N3myt5kFrJKGGKJBVDcjCpwglsY0A==", - "requires": { - "@babel/runtime": "^7.4.2", - "prop-types": "^15.7.2" - } + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -10941,6 +11155,51 @@ "truncate-utf8-bytes": "^1.0.0" } }, + "sanitize-html": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.1.tgz", + "integrity": "sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA==", + "requires": { + "chalk": "^2.4.1", + "htmlparser2": "^3.10.0", + "lodash.clonedeep": "^4.5.0", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.mergewith": "^4.6.1", + "postcss": "^7.0.5", + "srcset": "^1.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "sass-graph": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", @@ -11729,7 +11988,6 @@ "version": "0.5.12", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -11738,8 +11996,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -11812,6 +12069,15 @@ "extend-shallow": "^3.0.0" } }, + "srcset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", + "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", + "requires": { + "array-uniq": "^1.0.2", + "number-is-nan": "^1.0.0" + } + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -12355,7 +12621,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", - "dev": true, "requires": { "commander": "^2.19.0", "source-map": "~0.6.1", @@ -12365,14 +12630,12 @@ "commander": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -12645,6 +12908,16 @@ "utf8-byte-length": "^1.0.1" } }, + "try-catch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/try-catch/-/try-catch-2.0.0.tgz", + "integrity": "sha512-RPXpVjsbtWgymwGq5F/OWDFsjEzdvzwHFaMjWWW6f/p6+uk/N7YSKJHQfIfGqITfj8qH4cBqCLMnhKZBaKk7Kg==" + }, + "try-to-catch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/try-to-catch/-/try-to-catch-1.1.1.tgz", + "integrity": "sha512-ikUlS+/BcImLhNYyIgZcEmq4byc31QpC+46/6Jm5ECWkVFhf8SM2Fp/0pMVXPX6vk45SMCwrP4Taxucne8I0VA==" + }, "ts-loader": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.0.2.tgz", @@ -12932,9 +13205,9 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" }, "udif": { "version": "0.15.7", @@ -13232,8 +13505,7 @@ "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" }, "uri-js": { "version": "4.2.2", @@ -14130,9 +14402,9 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "xterm": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-3.13.1.tgz", - "integrity": "sha512-QtQjqZ3JVgIQHK6cBKIGSHY36dNs15nQ5+w8i5Pxg5I6nYGyg5HJT79xZyLiZhOoIet00fUQvVXArrOM2R9WNw==" + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-3.14.4.tgz", + "integrity": "sha512-3YHVyWuiYWMRpVdVavnpG7hZU3ybHPUEDy7x4mUIxMaRVYy75ZniPVTzJiD1D4EqYrbwY+DmBgP1h18X6GlOOw==" }, "xxhash": { "version": "github:balena-io-modules/node-xxhash#70ac31da1a41c6f8c53d931b5802c6c93f7b6b83", diff --git a/package.json b/package.json index cf6d435e..3de92aa1 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "react-dom": "^16.8.5", "react2angular": "^4.0.2", "redux": "^3.5.2", - "rendition": "^8.7.2", + "rendition": "^10.1.0", "request": "^2.81.0", "resin-corvus": "^2.0.3", "roboto-fontface": "^0.9.0", @@ -91,6 +91,8 @@ "@types/debug": "^4.1.4", "@types/node": "^10.14.9", "@types/pigpio": "^1.2.1", + "@types/prop-types": "^15.7.1", + "@types/react": "^16.8.22", "@types/react-dom": "^16.8.4", "@types/request": "^2.48.1", "@types/tmp": "^0.1.0",