summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-10-29 13:18:37 +0100
committerGitHub <noreply@github.com>2020-10-29 13:18:37 +0100
commitcb50c427098cd73b0d4de930d35c5976f2ae919f (patch)
tree7906ae4c1620670e74f89a4649c8eac215ca087f /frontend
parent93fa55749c40ed1f1a7bee9157bce81708988656 (diff)
parent59bbe732cd83595b8114971d1baa802ef8cb95cc (diff)
Merge pull request #54 from atlarge-research/build/frontend
Simplify and optimize frontend build process
Diffstat (limited to 'frontend')
-rw-r--r--frontend/.dockerignore1
-rw-r--r--frontend/Dockerfile14
-rw-r--r--frontend/package.json11
-rw-r--r--frontend/public/index.html2
-rw-r--r--frontend/src/components/app/map/controls/ScaleIndicatorComponent.js2
-rw-r--r--frontend/src/components/app/map/controls/ToolPanelComponent.js2
-rw-r--r--frontend/src/components/app/sidebars/Sidebar.js2
-rw-r--r--frontend/src/components/app/sidebars/topology/machine/UnitTabsComponent.js116
-rw-r--r--frontend/src/components/app/sidebars/topology/rack/MachineListComponent.js2
-rw-r--r--frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js2
-rw-r--r--frontend/src/components/home/ContactSection.js2
-rw-r--r--frontend/src/components/home/ContentSection.js2
-rw-r--r--frontend/src/components/home/JumbotronHeader.js2
-rw-r--r--frontend/src/components/home/ScreenshotSection.js2
-rw-r--r--frontend/src/components/navigation/AppNavbarComponent.js2
-rw-r--r--frontend/src/components/navigation/HomeNavbar.js2
-rw-r--r--frontend/src/components/navigation/Navbar.js2
-rw-r--r--frontend/src/components/not-found/BlinkingCursor.js2
-rw-r--r--frontend/src/components/not-found/CodeBlock.js2
-rw-r--r--frontend/src/components/not-found/TerminalWindow.js2
-rw-r--r--frontend/src/components/projects/FilterPanel.js2
-rw-r--r--frontend/src/index.js2
-rw-r--r--frontend/src/index.sass2
-rw-r--r--frontend/src/pages/Home.js2
-rw-r--r--frontend/src/pages/NotFound.js2
-rw-r--r--frontend/src/util/jquery.js8
-rw-r--r--frontend/yarn.lock152
27 files changed, 126 insertions, 218 deletions
diff --git a/frontend/.dockerignore b/frontend/.dockerignore
index 3c3629e6..dd87e2d7 100644
--- a/frontend/.dockerignore
+++ b/frontend/.dockerignore
@@ -1 +1,2 @@
node_modules
+build
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
index 113b09c9..dc74aa15 100644
--- a/frontend/Dockerfile
+++ b/frontend/Dockerfile
@@ -1,21 +1,23 @@
-FROM node:14
+FROM node:14 AS staging
MAINTAINER OpenDC Maintainers <opendc@atlarge-research.com>
ARG OPENDC_OAUTH_CLIENT_ID
ARG OPENDC_API_BASE_URL
-# Copy OpenDC directory
-COPY ./ /opendc
+# Copy package details
+COPY ./package.json ./yarn.lock /opendc/
+RUN cd /opendc && yarn
# Build frontend
+FROM node:14 AS build
+COPY ./ /opendc
+COPY --from=staging /opendc/node_modules /opendc/node_modules
RUN cd /opendc/ \
- && rm -rf ./build \
- && yarn \
&& export REACT_APP_OAUTH_CLIENT_ID=$OPENDC_OAUTH_CLIENT_ID \
&& export REACT_APP_API_BASE_URL=$OPENDC_API_BASE_URL \
&& yarn build
# Setup nginx to serve the frontend
FROM nginx:1.19
-COPY --from=0 /opendc/build /usr/share/nginx/html
+COPY --from=build /opendc/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
diff --git a/frontend/package.json b/frontend/package.json
index 1a3fc7cb..bb190954 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -19,13 +19,13 @@
"proxy": "http://localhost:8082",
"dependencies": {
"approximate-number": "~2.0.0",
+ "bootstrap": "4.5.3",
"classnames": "~2.2.5",
"husky": "~4.2.5",
"konva": "~6.0.0",
"lint-staged": "~10.2.2",
"mathjs": "~7.1.0",
- "node-sass-chokidar": "~1.4.0",
- "npm-run-all": "~4.1.2",
+ "node-sass": "^4.14.1",
"prettier": "~2.0.5",
"prop-types": "~15.7.2",
"react": "~16.13.1",
@@ -58,11 +58,8 @@
"scripts": {
"format": "prettier --write src",
"precommit": "lint-staged",
- "build-css": "node-sass-chokidar src/ -o src/",
- "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive",
- "start-js": "react-scripts start",
- "start": "npm-run-all -p watch-css start-js",
- "build": "npm run build-css && react-scripts build",
+ "start": "react-scripts start",
+ "build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
diff --git a/frontend/public/index.html b/frontend/public/index.html
index 8b32aec6..44a0d80f 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -37,8 +37,6 @@
<meta name="google-site-verification" content="YIR4LkQTv6WmOdWv8MkeiUKni-0Yu3WHylLp4VvUMig"/>
<!-- CDN dependencies -->
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
- integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
<script src="https://use.fontawesome.com/ece66a2e7c.js"></script>
diff --git a/frontend/src/components/app/map/controls/ScaleIndicatorComponent.js b/frontend/src/components/app/map/controls/ScaleIndicatorComponent.js
index 54709482..7cbb45c0 100644
--- a/frontend/src/components/app/map/controls/ScaleIndicatorComponent.js
+++ b/frontend/src/components/app/map/controls/ScaleIndicatorComponent.js
@@ -1,6 +1,6 @@
import React from 'react'
import { TILE_SIZE_IN_METERS, TILE_SIZE_IN_PIXELS } from '../MapConstants'
-import './ScaleIndicatorComponent.css'
+import './ScaleIndicatorComponent.sass'
const ScaleIndicatorComponent = ({ scale }) => (
<div className="scale-indicator" style={{ width: TILE_SIZE_IN_PIXELS * scale }}>
diff --git a/frontend/src/components/app/map/controls/ToolPanelComponent.js b/frontend/src/components/app/map/controls/ToolPanelComponent.js
index e0e4d554..f372734d 100644
--- a/frontend/src/components/app/map/controls/ToolPanelComponent.js
+++ b/frontend/src/components/app/map/controls/ToolPanelComponent.js
@@ -1,7 +1,7 @@
import React from 'react'
import ZoomControlContainer from '../../../../containers/app/map/controls/ZoomControlContainer'
import ExportCanvasComponent from './ExportCanvasComponent'
-import './ToolPanelComponent.css'
+import './ToolPanelComponent.sass'
const ToolPanelComponent = () => (
<div className="tool-panel">
diff --git a/frontend/src/components/app/sidebars/Sidebar.js b/frontend/src/components/app/sidebars/Sidebar.js
index e1760d5e..f7368f54 100644
--- a/frontend/src/components/app/sidebars/Sidebar.js
+++ b/frontend/src/components/app/sidebars/Sidebar.js
@@ -1,7 +1,7 @@
import PropTypes from 'prop-types'
import classNames from 'classnames'
import React from 'react'
-import './Sidebar.css'
+import './Sidebar.sass'
class Sidebar extends React.Component {
static propTypes = {
diff --git a/frontend/src/components/app/sidebars/topology/machine/UnitTabsComponent.js b/frontend/src/components/app/sidebars/topology/machine/UnitTabsComponent.js
index c03b826f..569166d8 100644
--- a/frontend/src/components/app/sidebars/topology/machine/UnitTabsComponent.js
+++ b/frontend/src/components/app/sidebars/topology/machine/UnitTabsComponent.js
@@ -1,50 +1,78 @@
-import React from 'react'
+import React, { useState } from 'react'
+import { Nav, NavItem, NavLink, TabContent, TabPane } from 'reactstrap'
import UnitAddContainer from '../../../../../containers/app/sidebars/topology/machine/UnitAddContainer'
import UnitListContainer from '../../../../../containers/app/sidebars/topology/machine/UnitListContainer'
-const UnitTabsComponent = () => (
- <div>
- <ul className="nav nav-tabs mt-2 mb-1" role="tablist">
- <li className="nav-item">
- <a className="nav-link active" data-toggle="tab" href="#cpu-units" role="tab">
- CPU
- </a>
- </li>
- <li className="nav-item">
- <a className="nav-link" data-toggle="tab" href="#gpu-units" role="tab">
- GPU
- </a>
- </li>
- <li className="nav-item">
- <a className="nav-link" data-toggle="tab" href="#memory-units" role="tab">
- Memory
- </a>
- </li>
- <li className="nav-item">
- <a className="nav-link" data-toggle="tab" href="#storage-units" role="tab">
- Stor.
- </a>
- </li>
- </ul>
- <div className="tab-content">
- <div className="tab-pane active" id="cpu-units" role="tabpanel">
- <UnitAddContainer unitType="cpu" />
- <UnitListContainer unitType="cpu" />
- </div>
- <div className="tab-pane" id="gpu-units" role="tabpanel">
- <UnitAddContainer unitType="gpu" />
- <UnitListContainer unitType="gpu" />
- </div>
- <div className="tab-pane" id="memory-units" role="tabpanel">
- <UnitAddContainer unitType="memory" />
- <UnitListContainer unitType="memory" />
- </div>
- <div className="tab-pane" id="storage-units" role="tabpanel">
- <UnitAddContainer unitType="storage" />
- <UnitListContainer unitType="storage" />
- </div>
+const UnitTabsComponent = () => {
+ const [activeTab, setActiveTab] = useState('cpu-units')
+ const toggle = (tab) => {
+ if (activeTab !== tab) setActiveTab(tab)
+ }
+
+ return (
+ <div>
+ <Nav tabs>
+ <NavItem>
+ <NavLink
+ className={activeTab === 'cpu-units' && 'active'}
+ onClick={() => {
+ toggle('cpu-units')
+ }}
+ >
+ CPU
+ </NavLink>
+ </NavItem>
+ <NavItem>
+ <NavLink
+ className={activeTab === 'gpu-units' && 'active'}
+ onClick={() => {
+ toggle('gpu-units')
+ }}
+ >
+ GPU
+ </NavLink>
+ </NavItem>
+ <NavItem>
+ <NavLink
+ className={activeTab === 'memory-units' && 'active'}
+ onClick={() => {
+ toggle('memory-units')
+ }}
+ >
+ Memory
+ </NavLink>
+ </NavItem>
+ <NavItem>
+ <NavLink
+ className={activeTab === 'storage-units' && 'active'}
+ onClick={() => {
+ toggle('storage-units')
+ }}
+ >
+ Stor.
+ </NavLink>
+ </NavItem>
+ </Nav>
+ <TabContent activeTab={activeTab}>
+ <TabPane tabId="cpu-units">
+ <UnitAddContainer unitType="cpu" />
+ <UnitListContainer unitType="cpu" />
+ </TabPane>
+ <TabPane tabId="gpu-units">
+ <UnitAddContainer unitType="gpu" />
+ <UnitListContainer unitType="gpu" />
+ </TabPane>
+ <TabPane tabId="memory-units">
+ <UnitAddContainer unitType="memory" />
+ <UnitListContainer unitType="memory" />
+ </TabPane>
+ <TabPane tabId="storage-units">
+ <UnitAddContainer unitType="storage" />
+ <UnitListContainer unitType="storage" />
+ </TabPane>
+ </TabContent>
</div>
- </div>
-)
+ )
+}
export default UnitTabsComponent
diff --git a/frontend/src/components/app/sidebars/topology/rack/MachineListComponent.js b/frontend/src/components/app/sidebars/topology/rack/MachineListComponent.js
index aa7a4f8f..12be26bd 100644
--- a/frontend/src/components/app/sidebars/topology/rack/MachineListComponent.js
+++ b/frontend/src/components/app/sidebars/topology/rack/MachineListComponent.js
@@ -1,7 +1,7 @@
import React from 'react'
import EmptySlotContainer from '../../../../../containers/app/sidebars/topology/rack/EmptySlotContainer'
import MachineContainer from '../../../../../containers/app/sidebars/topology/rack/MachineContainer'
-import './MachineListComponent.css'
+import './MachineListComponent.sass'
const MachineListComponent = ({ machineIds }) => {
return (
diff --git a/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js b/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js
index d7127114..ca41bf57 100644
--- a/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js
+++ b/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js
@@ -3,7 +3,7 @@ import BackToRoomContainer from '../../../../../containers/app/sidebars/topology
import DeleteRackContainer from '../../../../../containers/app/sidebars/topology/rack/DeleteRackContainer'
import MachineListContainer from '../../../../../containers/app/sidebars/topology/rack/MachineListContainer'
import RackNameContainer from '../../../../../containers/app/sidebars/topology/rack/RackNameContainer'
-import './RackSidebarComponent.css'
+import './RackSidebarComponent.sass'
import AddPrefabContainer from '../../../../../containers/app/sidebars/topology/rack/AddPrefabContainer'
const RackSidebarComponent = () => {
diff --git a/frontend/src/components/home/ContactSection.js b/frontend/src/components/home/ContactSection.js
index 095fb939..42bdab8a 100644
--- a/frontend/src/components/home/ContactSection.js
+++ b/frontend/src/components/home/ContactSection.js
@@ -1,6 +1,6 @@
import React from 'react'
import FontAwesome from 'react-fontawesome'
-import './ContactSection.css'
+import './ContactSection.sass'
import ContentSection from './ContentSection'
const ContactSection = () => (
diff --git a/frontend/src/components/home/ContentSection.js b/frontend/src/components/home/ContentSection.js
index ba2e4ec3..9d4832d9 100644
--- a/frontend/src/components/home/ContentSection.js
+++ b/frontend/src/components/home/ContentSection.js
@@ -1,7 +1,7 @@
import classNames from 'classnames'
import PropTypes from 'prop-types'
import React from 'react'
-import './ContentSection.css'
+import './ContentSection.sass'
const ContentSection = ({ name, title, children }) => (
<div id={name} className={classNames(name + '-section', 'content-section')}>
diff --git a/frontend/src/components/home/JumbotronHeader.js b/frontend/src/components/home/JumbotronHeader.js
index f7af4cd9..7b410679 100644
--- a/frontend/src/components/home/JumbotronHeader.js
+++ b/frontend/src/components/home/JumbotronHeader.js
@@ -1,5 +1,5 @@
import React from 'react'
-import './JumbotronHeader.css'
+import './JumbotronHeader.sass'
const JumbotronHeader = () => (
<section className="jumbotron-header">
diff --git a/frontend/src/components/home/ScreenshotSection.js b/frontend/src/components/home/ScreenshotSection.js
index d0ff54bd..c987d5d0 100644
--- a/frontend/src/components/home/ScreenshotSection.js
+++ b/frontend/src/components/home/ScreenshotSection.js
@@ -1,7 +1,7 @@
import classNames from 'classnames'
import React from 'react'
import ContentSection from './ContentSection'
-import './ScreenshotSection.css'
+import './ScreenshotSection.sass'
const ScreenshotSection = ({ name, title, imageUrl, caption, imageIsRight, children }) => (
<ContentSection name={name} title={title}>
diff --git a/frontend/src/components/navigation/AppNavbarComponent.js b/frontend/src/components/navigation/AppNavbarComponent.js
index 293049e1..7a1c2462 100644
--- a/frontend/src/components/navigation/AppNavbarComponent.js
+++ b/frontend/src/components/navigation/AppNavbarComponent.js
@@ -2,7 +2,7 @@ import React from 'react'
import FontAwesome from 'react-fontawesome'
import { Link } from 'react-router-dom'
import Navbar, { NavItem } from './Navbar'
-import './Navbar.css'
+import './Navbar.sass'
const AppNavbarComponent = ({ project, fullWidth }) => (
<Navbar fullWidth={fullWidth}>
diff --git a/frontend/src/components/navigation/HomeNavbar.js b/frontend/src/components/navigation/HomeNavbar.js
index 798d1b97..e22933af 100644
--- a/frontend/src/components/navigation/HomeNavbar.js
+++ b/frontend/src/components/navigation/HomeNavbar.js
@@ -1,6 +1,6 @@
import React from 'react'
import Navbar from './Navbar'
-import './Navbar.css'
+import './Navbar.sass'
const ScrollNavItem = ({ id, name }) => (
<li className="nav-item">
diff --git a/frontend/src/components/navigation/Navbar.js b/frontend/src/components/navigation/Navbar.js
index b1f1f7ae..164a2309 100644
--- a/frontend/src/components/navigation/Navbar.js
+++ b/frontend/src/components/navigation/Navbar.js
@@ -5,7 +5,7 @@ import { userIsLoggedIn } from '../../auth/index'
import Login from '../../containers/auth/Login'
import Logout from '../../containers/auth/Logout'
import ProfileName from '../../containers/auth/ProfileName'
-import './Navbar.css'
+import './Navbar.sass'
export const NAVBAR_HEIGHT = 60
diff --git a/frontend/src/components/not-found/BlinkingCursor.js b/frontend/src/components/not-found/BlinkingCursor.js
index bc2d2366..dbdba212 100644
--- a/frontend/src/components/not-found/BlinkingCursor.js
+++ b/frontend/src/components/not-found/BlinkingCursor.js
@@ -1,5 +1,5 @@
import React from 'react'
-import './BlinkingCursor.css'
+import './BlinkingCursor.sass'
const BlinkingCursor = () => <span className="blinking-cursor">_</span>
diff --git a/frontend/src/components/not-found/CodeBlock.js b/frontend/src/components/not-found/CodeBlock.js
index 6783d6a8..bcc522c9 100644
--- a/frontend/src/components/not-found/CodeBlock.js
+++ b/frontend/src/components/not-found/CodeBlock.js
@@ -1,5 +1,5 @@
import React from 'react'
-import './CodeBlock.css'
+import './CodeBlock.sass'
const CodeBlock = () => {
const textBlock =
diff --git a/frontend/src/components/not-found/TerminalWindow.js b/frontend/src/components/not-found/TerminalWindow.js
index 490fd4c7..a25e558a 100644
--- a/frontend/src/components/not-found/TerminalWindow.js
+++ b/frontend/src/components/not-found/TerminalWindow.js
@@ -2,7 +2,7 @@ import React from 'react'
import { Link } from 'react-router-dom'
import BlinkingCursor from './BlinkingCursor'
import CodeBlock from './CodeBlock'
-import './TerminalWindow.css'
+import './TerminalWindow.sass'
const TerminalWindow = () => (
<div className="terminal-window">
diff --git a/frontend/src/components/projects/FilterPanel.js b/frontend/src/components/projects/FilterPanel.js
index 0970f573..2b9795d0 100644
--- a/frontend/src/components/projects/FilterPanel.js
+++ b/frontend/src/components/projects/FilterPanel.js
@@ -1,6 +1,6 @@
import React from 'react'
import FilterLink from '../../containers/projects/FilterLink'
-import './FilterPanel.css'
+import './FilterPanel.sass'
const FilterPanel = () => (
<div className="btn-group filter-panel mb-2">
diff --git a/frontend/src/index.js b/frontend/src/index.js
index c49e0b68..0971b1e6 100644
--- a/frontend/src/index.js
+++ b/frontend/src/index.js
@@ -2,7 +2,7 @@ import React from 'react'
import ReactDOM from 'react-dom'
import { Provider } from 'react-redux'
import { setupSocketConnection } from './api/socket'
-import './index.css'
+import './index.sass'
import Routes from './routes'
import configureStore from './store/configure-store'
diff --git a/frontend/src/index.sass b/frontend/src/index.sass
index efb2bed5..a78f7a19 100644
--- a/frontend/src/index.sass
+++ b/frontend/src/index.sass
@@ -1,3 +1,5 @@
+@import "~bootstrap/scss/bootstrap"
+
@import ./style-globals/_mixins.sass
@import ./style-globals/_variables.sass
diff --git a/frontend/src/pages/Home.js b/frontend/src/pages/Home.js
index 5000ebfe..6fc940c0 100644
--- a/frontend/src/pages/Home.js
+++ b/frontend/src/pages/Home.js
@@ -9,7 +9,7 @@ import StakeholderSection from '../components/home/StakeholderSection'
import TeamSection from '../components/home/TeamSection'
import TechnologiesSection from '../components/home/TechnologiesSection'
import HomeNavbar from '../components/navigation/HomeNavbar'
-import './Home.css'
+import './Home.sass'
function Home() {
return (
diff --git a/frontend/src/pages/NotFound.js b/frontend/src/pages/NotFound.js
index f72c7d01..72be7342 100644
--- a/frontend/src/pages/NotFound.js
+++ b/frontend/src/pages/NotFound.js
@@ -1,7 +1,7 @@
import React from 'react'
import DocumentTitle from 'react-document-title'
import TerminalWindow from '../components/not-found/TerminalWindow'
-import './NotFound.css'
+import './NotFound.sass'
const NotFound = () => (
<DocumentTitle title="Page Not Found - OpenDC">
diff --git a/frontend/src/util/jquery.js b/frontend/src/util/jquery.js
deleted file mode 100644
index 4976dd7d..00000000
--- a/frontend/src/util/jquery.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Binding of the global jQuery variable for use within React.
- *
- * This should be used instead of '$', to address ESLint warnings relating to undefined global variables.
- */
-const jQuery = window['$']
-
-export default jQuery
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 2d867878..b77c38f6 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -2519,6 +2519,11 @@ boolbase@^1.0.0, boolbase@~1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+bootstrap@4.5.3:
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6"
+ integrity sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2819,11 +2824,6 @@ camelcase@^2.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-camelcase@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
- integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
-
caniuse-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -2897,7 +2897,7 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-chokidar@^2.0.4, chokidar@^2.1.8:
+chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
@@ -3003,15 +3003,6 @@ cli-width@^2.0.0:
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
-
cliui@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
@@ -3812,7 +3803,7 @@ debug@~3.1.0:
dependencies:
ms "2.0.0"
-decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
+decamelize@^1.1.2, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -5870,11 +5861,6 @@ invariant@^2.1.0, invariant@^2.2.2, invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
- integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-
invert-kv@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
@@ -6939,13 +6925,6 @@ lazy-cache@^1.0.3:
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
- dependencies:
- invert-kv "^1.0.0"
-
lcid@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
@@ -7336,11 +7315,6 @@ memory-fs@^0.5.0:
errno "^0.1.3"
readable-stream "^2.0.1"
-memorystream@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
- integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
-
meow@^3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
@@ -7739,24 +7713,10 @@ node-releases@^1.1.52, node-releases@^1.1.58:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935"
integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==
-node-sass-chokidar@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/node-sass-chokidar/-/node-sass-chokidar-1.4.0.tgz#3e5f2531e4606291b7d071761908a509075419d5"
- integrity sha512-yQWApNiQhg7tMGSbcbeOY0P7v1nKofGBMpX0N4bnOjYlOaN1s+Lw+gqAwuqNu8iuGZobZJlDDCiC6NCIv5/ejA==
- dependencies:
- async-foreach "^0.1.3"
- chokidar "^2.0.4"
- get-stdin "^4.0.1"
- glob "^7.0.3"
- meow "^3.7.0"
- node-sass "4.13"
- sass-graph "^2.1.1"
- stdout-stream "^1.4.0"
-
-node-sass@4.13:
- version "4.13.1"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3"
- integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==
+node-sass@^4.14.1:
+ version "4.14.1"
+ resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5"
+ integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==
dependencies:
async-foreach "^0.1.3"
chalk "^1.1.1"
@@ -7772,7 +7732,7 @@ node-sass@4.13:
node-gyp "^3.8.0"
npmlog "^4.0.0"
request "^2.88.0"
- sass-graph "^2.2.4"
+ sass-graph "2.2.5"
stdout-stream "^1.4.0"
"true-case-path" "^1.0.2"
@@ -7825,21 +7785,6 @@ normalize-url@^3.0.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-npm-run-all@~4.1.2:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
- integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
- dependencies:
- ansi-styles "^3.2.1"
- chalk "^2.4.1"
- cross-spawn "^6.0.5"
- memorystream "^0.3.1"
- minimatch "^3.0.4"
- pidtree "^0.3.0"
- read-pkg "^3.0.0"
- shell-quote "^1.6.1"
- string.prototype.padend "^3.0.0"
-
npm-run-path@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@@ -8087,13 +8032,6 @@ os-homedir@^1.0.0:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-os-locale@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
- integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
- dependencies:
- lcid "^1.0.0"
-
os-locale@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
@@ -8435,11 +8373,6 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-pidtree@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
- integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
-
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -10304,15 +10237,15 @@ sanitize.css@^10.0.0:
resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a"
integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==
-sass-graph@^2.1.1, sass-graph@^2.2.4:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.6.tgz#09fda0e4287480e3e4967b72a2d133ba09b8d827"
- integrity sha512-MKuEYXFSGuRSi8FZ3A7imN1CeVn9Gpw0/SFJKdL1ejXJneI9a5rwlEZrKejhEFAA3O6yr3eIyl/WuvASvlT36g==
+sass-graph@2.2.5:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8"
+ integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==
dependencies:
glob "^7.0.0"
lodash "^4.0.0"
scss-tokenizer "^0.2.3"
- yargs "^7.0.0"
+ yargs "^13.3.2"
sass-loader@8.0.2:
version "8.0.2"
@@ -10561,7 +10494,7 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-shell-quote@1.7.2, shell-quote@^1.6.1:
+shell-quote@1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
@@ -10954,7 +10887,7 @@ string-length@^3.1.0:
astral-regex "^1.0.0"
strip-ansi "^5.2.0"
-string-width@^1.0.1, string-width@^1.0.2:
+string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
@@ -11001,14 +10934,6 @@ string.prototype.matchall@^4.0.2:
regexp.prototype.flags "^1.3.0"
side-channel "^1.0.2"
-string.prototype.padend@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3"
- integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
-
string.prototype.trimend@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
@@ -11978,11 +11903,6 @@ whatwg-url@^7.0.0:
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
-which-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
- integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
-
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
@@ -12263,11 +12183,6 @@ xtend@^4.0.0, xtend@~4.0.1:
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
- integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
-
"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
@@ -12293,14 +12208,6 @@ yaml@^1.7.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
-yargs-parser@5.0.0-security.0:
- version "5.0.0-security.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24"
- integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==
- dependencies:
- camelcase "^3.0.0"
- object.assign "^4.1.0"
-
yargs-parser@^11.1.1:
version "11.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
@@ -12335,7 +12242,7 @@ yargs@12.0.5:
y18n "^3.2.1 || ^4.0.0"
yargs-parser "^11.1.1"
-yargs@^13.3.0:
+yargs@^13.3.0, yargs@^13.3.2:
version "13.3.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
@@ -12351,25 +12258,6 @@ yargs@^13.3.0:
y18n "^4.0.0"
yargs-parser "^13.1.2"
-yargs@^7.0.0:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6"
- integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==
- dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
- y18n "^3.2.1"
- yargs-parser "5.0.0-security.0"
-
yeast@0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"