diff --git a/package.json b/package.json index bf6c235..df592e2 100644 --- a/package.json +++ b/package.json @@ -36,12 +36,12 @@ "dependencies": { "@material-ui/core": "^4.9.5", "@material-ui/icons": "^4.9.1", + "@wasmer/io-devices": "^0.10.1", "@wasmer/wasm-terminal": "^0.10.1", "@wasmer/wasm-transformer": "^0.10.1", - "@wasmer/io-devices": "^0.10.1", "@wasmer/wasmfs": "^0.10.1", - "comlink": "^4.2.0", "classnames": "^2.2.6", + "comlink": "^4.2.0", "connected-react-router": "^6.6.1", "ethers": "^4.0.45", "inherits": "^2.0.4", @@ -74,6 +74,7 @@ "devDependencies": { "@types/classnames": "^2.2.10", "@types/jszip": "^3.1.7", + "@types/material-ui": "^0.21.7", "@types/react": "^16.9.23", "@types/react-dom": "^16.9.5", "@types/react-loadable": "^5.5.3", diff --git a/src/img/PlayOSLogoSide_white.svg b/src/img/PlayOSLogoSide_white.svg new file mode 100644 index 0000000..721a993 --- /dev/null +++ b/src/img/PlayOSLogoSide_white.svg @@ -0,0 +1,27 @@ + + + + PlayOSLogoSide + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/js/App.tsx b/src/js/App.tsx index aa1f227..2a93c3c 100644 --- a/src/js/App.tsx +++ b/src/js/App.tsx @@ -17,7 +17,6 @@ export default class App { constructor(id: string = 'app') { this.domId = id; - console.log('[] id -> ', id); } run() { diff --git a/src/js/apps/Explorer/components/File/File.tsx b/src/js/apps/Explorer/components/File/File.tsx index edcf8f1..0d3857c 100644 --- a/src/js/apps/Explorer/components/File/File.tsx +++ b/src/js/apps/Explorer/components/File/File.tsx @@ -1,5 +1,4 @@ import * as React from 'react'; -import Dirent from 'memfs/lib/Dirent'; import InsertDriveFileOutlinedIcon from '@material-ui/icons/InsertDriveFileOutlined'; import WebIcon from '@material-ui/icons/Web'; import getFileExtension from '../../../../services/micro/getFileExtension'; diff --git a/src/js/apps/Explorer/components/Folder/Folder.tsx b/src/js/apps/Explorer/components/Folder/Folder.tsx index c4d079e..e5b7de9 100644 --- a/src/js/apps/Explorer/components/Folder/Folder.tsx +++ b/src/js/apps/Explorer/components/Folder/Folder.tsx @@ -15,8 +15,9 @@ interface Props { } export default function Folder(props: Props) { + const { folder } = props; const [icon, setIcon] = React.useState(''); - const [name, setName] = React.useState(props.folder.name); + const [name, setName] = React.useState(folder.name); React.useEffect(() => { async function processFile() { @@ -34,7 +35,7 @@ export default function Folder(props: Props) { // const info = await getWappInformation(file); if (wappInfo !== null) { - const newFolderName = folderName.replace('.' + WAPP_EXTENSION, ''); + const newFolderName = folderName.replace(`.${WAPP_EXTENSION}`, ''); setIcon(wappInfo.icon); setName(newFolderName); diff --git a/src/js/components/atoms/BackgroundWallpaper/BackgroundWallpaper.module.scss b/src/js/components/atoms/BackgroundWallpaper/BackgroundWallpaper.module.scss new file mode 100644 index 0000000..80b06b8 --- /dev/null +++ b/src/js/components/atoms/BackgroundWallpaper/BackgroundWallpaper.module.scss @@ -0,0 +1,42 @@ +.wrapper { + position: absolute; + top: 0; + width: 100%; + height: 100%; +} + + +.defaultBackground { + position: absolute; + top: 0; + z-index: 1; + + width: 100%; + height: 100%; + + background-image: var(--default-background); + background-repeat: no-repeat; + background-size: cover; + background-position: center; + + opacity: 1; + + transition: opacity 2s ease-in-out; +} + +.backgroundSet { + opacity: 0; +} + +.background { + position: absolute; + top: 0; + z-index: 0; + + width: 100%; + height: 100%; + + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} diff --git a/src/js/components/atoms/BackgroundWallpaper/BackgroundWallpaper.tsx b/src/js/components/atoms/BackgroundWallpaper/BackgroundWallpaper.tsx new file mode 100644 index 0000000..a62e636 --- /dev/null +++ b/src/js/components/atoms/BackgroundWallpaper/BackgroundWallpaper.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import classnames from 'classnames'; +import styles from './BackgroundWallpaper.module.scss'; + +interface Props { + src?: string; +} + +export default function BackgroundWallpaper(props: Props) { + const { src } = props; + const backgroundImage = src ? `url(${src})` : undefined; + + const defaultBackgroundClassName = classnames(styles.defaultBackground, { + [styles.backgroundSet]: !!backgroundImage, + }); + + return ( +
+
+
+
+ ); +} diff --git a/src/js/components/atoms/BackgroundWallpaper/index.ts b/src/js/components/atoms/BackgroundWallpaper/index.ts new file mode 100644 index 0000000..802031f --- /dev/null +++ b/src/js/components/atoms/BackgroundWallpaper/index.ts @@ -0,0 +1 @@ +export { default } from './BackgroundWallpaper'; diff --git a/src/js/components/molecules/Header/Header.module.scss b/src/js/components/molecules/Header/Header.module.scss index f671756..d857a2a 100644 --- a/src/js/components/molecules/Header/Header.module.scss +++ b/src/js/components/molecules/Header/Header.module.scss @@ -13,7 +13,7 @@ position: fixed; top: 0; - z-index: 3; + z-index: 20; // border-bottom: 2px solid rgba(86, 86, 86, 0.63); diff --git a/src/js/layout/DefaultLayout.jsx b/src/js/layout/DefaultLayout.jsx deleted file mode 100644 index b29f055..0000000 --- a/src/js/layout/DefaultLayout.jsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import { Route } from 'react-router'; -import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; -import Paper from 'material-ui/Paper'; -import styles from './DefaultLayout.module.scss'; -import classnames from 'classnames'; -import logo from '../../img/PlayOSLogoSide_black.svg'; -import ChoosePage from '../pages/ChoosePage'; -import LoginPage from '../pages/LoginPage'; -import RegisterPage from '../pages/RegisterPage'; -import HomePage from '../pages/HomePage/HomePage'; - -function getRoutes() { - return ( - <> - - - - - - ) -} - -class DefaultLayout extends React.Component { - render() { - const wallpaper = this.props.user.info.wallpaper; - const backgroundImage = wallpaper ? `url(${wallpaper})` : null; - const backgroundClasses = classnames(styles.defaultLayoutBackground, { - [styles.defaultLayoutBackgroundDefault]: !wallpaper, - }); - - return ( - -
- {/* The background, we can keep that across the site */} -
- - {this.props.currentPathName !== '/os/home' && -
- -
- - Logo - -
-
- {getRoutes()} -
-
-
- } - - {this.props.currentPathName === '/os/home' && -
- {getRoutes()} -
- } - {/* */} -
- - ); - } -} - -const mapStateToProps = store => { - return ({ - SnackBarMessageStore: store.SnackBarMessageStore, - user: store.UserInfoStore, - currentPathName: store.router.location ? store.router.location.pathname : '', - }) -}; - -export default connect(mapStateToProps)(DefaultLayout); diff --git a/src/js/layout/DefaultLayout.module.scss b/src/js/layout/DefaultLayout.module.scss index d7922a8..12cf672 100644 --- a/src/js/layout/DefaultLayout.module.scss +++ b/src/js/layout/DefaultLayout.module.scss @@ -2,11 +2,14 @@ position: fixed; width: 100%; height: 100%; + z-index: 10; &Background { position: absolute; top: 0; - background-color: #252525; + // background-color: #252525; + background-image: linear-gradient(45deg, #833ab4 0%, #fd1d1d 50%, #fcb045 100%); + // background: linear-gradient(45deg, #FF512F 0%, #DD2476 100%); background-repeat: no-repeat; background-size: cover; background-position: center; @@ -16,7 +19,7 @@ position: fixed; &Default { - background-image: url('/res/img/background.jpg'); + // background-image: url('/res/img/background.jpg'); } } @@ -29,6 +32,7 @@ top: -100px; bottom: 0; margin: auto; + z-index: 15; &Paper { padding: 20px; @@ -38,12 +42,16 @@ display: block; &Logo { - text-align: center; color: black; - font-size: 40px; -webkit-font-smoothing: antialiased; letter-spacing: 0; - display: block; + display: flex; + justify-content: center; + margin-bottom: 30px; + + img { + width: 180px; + } } &-Description { @@ -65,6 +73,7 @@ .childrenWrapper { position: absolute; + z-index: 10; width: 100%; height: 100%; } diff --git a/src/js/layout/DefaultLayout.tsx b/src/js/layout/DefaultLayout.tsx new file mode 100644 index 0000000..8202c61 --- /dev/null +++ b/src/js/layout/DefaultLayout.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { Route } from 'react-router'; +import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; +import Paper from 'material-ui/Paper'; +import classnames from 'classnames'; +import styles from './DefaultLayout.module.scss'; +import logo from '../../img/PlayOSLogoSide_white.svg'; +import ChoosePage from '../pages/ChoosePage'; +import LoginPage from '../pages/LoginPage'; +import RegisterPage from '../pages/RegisterPage'; +import HomePage from '../pages/HomePage/HomePage'; +import BackgroundWallpaper from '../components/atoms/BackgroundWallpaper'; + +function getRoutes() { + return ( + <> + + + + + + ); +} + +interface Props { + user: any; + currentPathName: string; +} + +function DefaultLayout(props: Props) { + const { user, currentPathName } = props; + const { wallpaper } = user.info; + + return ( + +
+ + + {currentPathName !== '/os/home' + && ( +
+
+ + Logo + +
+ +
+ {getRoutes()} +
+
+
+ )} + + {currentPathName === '/os/home' + && ( +
+ {getRoutes()} +
+ )} +
+
+ ); +} + +const mapStateToProps = (store: any) => ({ + SnackBarMessageStore: store.SnackBarMessageStore, + user: store.UserInfoStore, + currentPathName: store.router.location ? store.router.location.pathname : '', +}); + +export default connect(mapStateToProps)(DefaultLayout); diff --git a/src/js/pages/HomePage/HomePage.tsx b/src/js/pages/HomePage/HomePage.tsx index df123fa..897fe4d 100644 --- a/src/js/pages/HomePage/HomePage.tsx +++ b/src/js/pages/HomePage/HomePage.tsx @@ -35,7 +35,7 @@ class HomePage extends React.Component { await bootSystem(keys); if (!this.props.user.info.fullName && keys) { - this.props.dispatch(loadUserInfo()); + this.props.dispatch(loadUserInfo(keys)); this.props.dispatch(loadApps()); } } diff --git a/src/js/pages/RegisterPage/RegisterPage.tsx b/src/js/pages/RegisterPage/RegisterPage.tsx index 00545d7..4a30e3a 100644 --- a/src/js/pages/RegisterPage/RegisterPage.tsx +++ b/src/js/pages/RegisterPage/RegisterPage.tsx @@ -3,6 +3,7 @@ import TextField from '@material-ui/core/TextField'; import Button from '@material-ui/core/Button'; import Typography from '@material-ui/core/Typography'; import KeyService from '../../services/KeyService'; + const styles = require('./RegisterPage.module.scss'); export default function RegisterPage() { @@ -15,7 +16,7 @@ export default function RegisterPage() { const [keys, setKeys] = React.useState(''); function handleChange(name: string) { - return function(event: React.ChangeEvent) { + return (event: React.ChangeEvent) => { setValues({ ...values, [name]: event.target.value, @@ -45,20 +46,24 @@ export default function RegisterPage() { return (
- {!keys && <> - - - - - } + {!keys && ( + <> + + + + + + )} - {keys && <> - - Please save the following words securely. They are the only way to recover your account. - - - - } + {keys && ( + <> + + Please save the following words securely. They are the only way to recover your account. + + + + + )}
); diff --git a/src/js/services/AuthService.ts b/src/js/services/AuthService.ts index 15c9f5b..4660a03 100644 --- a/src/js/services/AuthService.ts +++ b/src/js/services/AuthService.ts @@ -1,31 +1,35 @@ -import { PrivateKey, Account } from "./providers/IProvider"; -import KeyService from "./KeyService"; +import { PrivateKey, Account } from './providers/IProvider'; +import KeyService from './KeyService'; +import Kernel from '../../vendor/kernel'; class AuthService { - static async getAccountInfo(privateKey: PrivateKey): Promise { + static async getAccountInfo(privateKey: PrivateKey, kernel: Kernel): Promise { + const username = await kernel.registry.get('username'); + return { currencyTicker: 'RUT', balance: '0', // balance: ethers.utils.formatEther(balance), - fullName: 'Test account', + fullName: username, address: privateKey.address, profilePic: '', - wallpaper: 'https://playos.io/wp-content/uploads/2019/10/background.jpg?id=4353', + wallpaper: './res/img/background.jpg', }; } - static async login(): Promise { + static async login(kernel: Kernel): Promise { const keys = KeyService.keysFromStorage(); if (!keys) { throw new Error('Login failed, no keys found'); } - return AuthService.getAccountInfo(keys); + return AuthService.getAccountInfo(keys, kernel); } static async logout(): Promise { KeyService.removeKeys(); + localStorage.clear(); } static async isLoggedIn(): Promise { diff --git a/src/js/services/FileService.ts b/src/js/services/FileService.ts index 2625852..a39911a 100644 --- a/src/js/services/FileService.ts +++ b/src/js/services/FileService.ts @@ -45,7 +45,6 @@ export async function getFile(path: string): Promise { }); process.on('exit', () => { - console.log('[] buffer -> ', output); resolve(Buffer.from(output)); }); }); diff --git a/src/js/services/TerminalService.ts b/src/js/services/TerminalService.ts index 0cc1552..d4ca063 100644 --- a/src/js/services/TerminalService.ts +++ b/src/js/services/TerminalService.ts @@ -65,8 +65,13 @@ export default class TerminalService extends EventEmitter { let terminalResult: string = ''; + if (this.terminal) { + this.terminal.wasmTty.print('\n'); + } + process.on('message', (msg: string) => { if (this.terminal) { + this.terminal.wasmTty.print(msg, true); terminalResult += msg; } }); diff --git a/src/js/services/bootSystem.ts b/src/js/services/bootSystem.ts index ed0e457..47cb7f2 100644 --- a/src/js/services/bootSystem.ts +++ b/src/js/services/bootSystem.ts @@ -5,7 +5,7 @@ import BackgroundTerminal from '../background/BackgroundTerminal'; import isNodeJs from './isNodeJs'; -export default async function πbootSystem(keys: PrivateKey) { +export default async function bootSystem(keys: PrivateKey) { let kernel: Kernel; if (isNodeJs()) { diff --git a/src/js/store/UserInfoStore.ts b/src/js/store/UserInfoStore.ts index 8e98f4c..bc8bc0a 100644 --- a/src/js/store/UserInfoStore.ts +++ b/src/js/store/UserInfoStore.ts @@ -1,5 +1,7 @@ import InstanceBag from "../InstanceBag"; import Kernel from "../../vendor/kernel"; +import { PrivateKey } from "../services/providers/IProvider"; +import AuthService from "../services/AuthService"; export interface UserInfo { info: { @@ -41,34 +43,25 @@ function UserInfoStore(state = defaultState, action: any) { return currentState; } -export function loadUserInfo() { +export function setUserInfo(payload: any) { + return { + type: 'SET_USER_INFO', + payload, + }; +} + +export function loadUserInfo(privateKey: PrivateKey) { return async (dispatch: any) => { const kernel = InstanceBag.get('kernel'); - const username = await kernel.registry.get('username'); - - console.log('[] username -> ', username); + const userInfo = await AuthService.getAccountInfo(privateKey, kernel); // Make sure we preload the background image to get a nice effect - // const response = await fetch(user.wallpaper); - // const blob = await response.blob(); - // const blobUrl = window.URL.createObjectURL(blob); - // user.wallpaper = blobUrl; + const response = await fetch(userInfo.wallpaper); + const blob = await response.blob(); + const blobUrl = window.URL.createObjectURL(blob); + userInfo.wallpaper = blobUrl; - dispatch(setUserInfo({ - fullName: username, - address: '', - profilePic: '', - wallpaper: '', - currencyTicker: '', - balance: '', - })); - } -} - -export function setUserInfo(payload: any) { - return { - type: 'SET_USER_INFO', - payload, + dispatch(setUserInfo(userInfo)); }; } diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss index 81457f2..2361481 100644 --- a/src/scss/_variables.scss +++ b/src/scss/_variables.scss @@ -7,3 +7,7 @@ $dashboard-tab-size: 48px; $desktop-breakpoint: 960px; $container-large: 1500px; + +:root { + --default-background: linear-gradient(45deg, #833ab4 0%, #fd1d1d 50%, #fcb045 100%); +} diff --git a/yarn.lock b/yarn.lock index 16202fc..3a0d5bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1573,10 +1573,10 @@ dependencies: "@types/node" "*" -"@types/classnames@^2.2.9": - version "2.2.9" - resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.9.tgz#d868b6febb02666330410fe7f58f3c4b8258be7b" - integrity sha512-MNl+rT5UmZeilaPxAVs6YaPC2m6aA8rofviZbhbxpPpl61uKodfdQVsBtgJGTqGizEf02oW3tsVe7FYB8kK14A== +"@types/classnames@^2.2.10": + version "2.2.10" + resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.10.tgz#cc658ca319b6355399efc1f5b9e818f1a24bf999" + integrity sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ== "@types/color-name@^1.1.1": version "1.1.1" @@ -1647,6 +1647,14 @@ dependencies: "@types/node" "*" +"@types/material-ui@^0.21.7": + version "0.21.7" + resolved "https://registry.yarnpkg.com/@types/material-ui/-/material-ui-0.21.7.tgz#2a4ab77a56a16adef044ba607edde5214151a5d8" + integrity sha512-OxGu+Jfm3d8IVYu5w2cqosSFU+8KJYCeVjw1jLZ7DzgoE7KpSFFpbDJKWhV1FAf/HEQXzL1IpX6PmLwINlE4Xg== + dependencies: + "@types/react" "*" + "@types/react-addons-linked-state-mixin" "*" + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1682,6 +1690,13 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/react-addons-linked-state-mixin@*": + version "0.14.20" + resolved "https://registry.yarnpkg.com/@types/react-addons-linked-state-mixin/-/react-addons-linked-state-mixin-0.14.20.tgz#5f0cd884ace049d538982a3b254f4807b9395eb6" + integrity sha512-17M8ymjR/vvyaQnLNuLSQipxtUrxaIq19phbWKKz1drIXeVQx+AnqMVVVIClno/gPheJWcLVCbf+yXXbbRalIg== + dependencies: + "@types/react" "*" + "@types/react-dom@^16.9.5": version "16.9.5" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" @@ -1873,29 +1888,29 @@ semver "^6.3.0" tsutils "^3.17.1" -"@wasmer/io-devices@^0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@wasmer/io-devices/-/io-devices-0.10.0.tgz#5b0665fb18e1f9f3baac6b1f7902d57200c8ebeb" - integrity sha512-RbWxr7INIOlhki2f/EvmjAqXGhAWlBC7U65eij5Rd3V+j2FgA2y/sEuohiusiPMM/U6kYq79xlghrSJDAcCfRg== +"@wasmer/io-devices@^0.10.1", "@wasmer/io-devices@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@wasmer/io-devices/-/io-devices-0.10.2.tgz#bc1fcbc3288b0b7086d472799ce49cc369db1626" + integrity sha512-wGaOlaERnSiGxYAQ4q9MFiETB+KPcrpVJ+n/n22ijevnNqACTH47zDXERTqxLptXkkBi/YUiAg0G9iyaKM6fhQ== -"@wasmer/wasi@^0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@wasmer/wasi/-/wasi-0.10.0.tgz#883221fae0d4c9ab8220e548b477f149d4bb660a" - integrity sha512-9toRqlH9QZDVdAn7xv3cPw/Jkl/agYyqY4TuxcEC0B9TgmuvGI0yj3TNMwbbULMm3Yi8Jla/ErpLTLkhnlhGqQ== +"@wasmer/wasi@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@wasmer/wasi/-/wasi-0.10.2.tgz#4bd79bcae88cfa23224c21b6af7ef6d2a07081eb" + integrity sha512-zEcZnGmPcO+b6o95W+uF4AK4oGBvBaM6oyyIOH1Kv/Sigy/knRMmawHWPDdJlImYmea7NLvn6PwdN+XJBYSz5A== dependencies: browser-process-hrtime "^1.0.0" buffer-es6 "^4.9.3" path-browserify "^1.0.0" randomfill "^1.0.4" -"@wasmer/wasm-terminal@^0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@wasmer/wasm-terminal/-/wasm-terminal-0.10.0.tgz#91d94bcbf7bc2b83b97866f12068e9c4906445d9" - integrity sha512-YCrx+KqKGPDjSEJAKvoIGOt3EhKeFiUEPhoXkiRkWEmCvNMjQlTFvvHABJYWfoU5OVlVpXNENJ49FJlB+VKVaA== +"@wasmer/wasm-terminal@^0.10.1": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@wasmer/wasm-terminal/-/wasm-terminal-0.10.2.tgz#eb9b948bfd3bb4988ef1de1bebde955ded9cb014" + integrity sha512-uy88vDjUSZ9cAr5IwKQDVULNSxJUoUmOMS1gcRh/oVvn2Y/a4xtLLnwMRR0ejeNqAj+6ctPMgphT7U+cnqWIEQ== dependencies: - "@wasmer/io-devices" "^0.10.0" - "@wasmer/wasi" "^0.10.0" - "@wasmer/wasmfs" "^0.10.0" + "@wasmer/io-devices" "^0.10.2" + "@wasmer/wasi" "^0.10.2" + "@wasmer/wasmfs" "^0.10.2" comlink "^4.0.5" shell-parse "0.0.2" shell-quote "^1.7.1" @@ -1904,17 +1919,17 @@ xterm-addon-web-links "^0.2.1" xterm-addon-webgl "^0.2.1" -"@wasmer/wasm-transformer@^0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@wasmer/wasm-transformer/-/wasm-transformer-0.10.0.tgz#759c3a23aef70c4245b1a474b7207b8199a1bc80" - integrity sha512-y0askaNhJUklqATadEA7665skxcKu5/9m7tz60eGWbPIt6Lky1j7t3A7xmC4LnERHM3i+GrSn8egEgrWXDCFbg== +"@wasmer/wasm-transformer@^0.10.1": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@wasmer/wasm-transformer/-/wasm-transformer-0.10.2.tgz#1f69a4a9766974f1b170de7ad4d46e2f0d2ffec6" + integrity sha512-cWctY14yLCJrNDrQfWVVlvrblYffwb8PVxsHnvdcbsaA8j8il0I7u/qzaGDA6k4jeN5Hd3QKWM4x+M1AJ6hOwg== dependencies: wasm-feature-detect "^1.2.2" -"@wasmer/wasmfs@^0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@wasmer/wasmfs/-/wasmfs-0.10.0.tgz#9ea7ff263a0a06e5ac2a354b0e3aeb0f6243c23f" - integrity sha512-VdMLE9PV7Yws0M3j3PWr482Q602FzH8FChz366cb2cPFCEzAgHpPIsmaUCq9qn6MbST2oFhkB/sLeUM/DxQMxw== +"@wasmer/wasmfs@^0.10.1", "@wasmer/wasmfs@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@wasmer/wasmfs/-/wasmfs-0.10.2.tgz#d82a3ff3dfd304c8c51177b1a1a710047779fa19" + integrity sha512-/sH64+/nyWwqY+gJO+q5qMrEG9SaTxmqr8jVvB6fiLOKEPCFnp9Dz+4dhc9O9W1tjScmcf15yGpZ+196w2m/6A== dependencies: memfs "3.0.4" pako "^1.0.11" @@ -3716,7 +3731,7 @@ concat-stream@~1.5.0: readable-stream "~2.0.0" typedarray "~0.0.5" -confusing-browser-globals@^1.0.7, confusing-browser-globals@^1.0.9: +confusing-browser-globals@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== @@ -4427,7 +4442,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -4536,11 +4551,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -4646,11 +4656,6 @@ detect-indent@6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -5189,23 +5194,23 @@ escodegen@^1.11.0, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" - integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== +eslint-config-airbnb-base@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4" + integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw== dependencies: - confusing-browser-globals "^1.0.7" + confusing-browser-globals "^1.0.9" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.1" -eslint-config-airbnb@^18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz#a3a74cc29b46413b6096965025381df8fb908559" - integrity sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ== +eslint-config-airbnb@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz#724d7e93dadd2169492ff5363c5aaa779e01257d" + integrity sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw== dependencies: - eslint-config-airbnb-base "^14.0.0" + eslint-config-airbnb-base "^14.1.0" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.1" eslint-config-react-app@^5.2.0: version "5.2.0" @@ -6924,7 +6929,7 @@ hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -6967,13 +6972,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -7087,7 +7085,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.2, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -8900,10 +8898,10 @@ memfs@3.0.4: fast-extend "1.0.2" fs-monkey "0.3.3" -memfs@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.1.1.tgz#3a23799a783102d40b13595cb25a7b39605bbcd0" - integrity sha512-A6QWLLH6HolvLeACaEc6WAAxU7c7iAvVgeyp1iDwzSIbwfGUjR4x9bAFUVq3YtSVFCYQAx4Nw2o4TEYAfH+lAg== +memfs@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.1.2.tgz#2bb51600dacec67ed35677b1185abb708b7d2ad6" + integrity sha512-YubKuE+RGSdpZcRq2Nih8HcHj3LrqndsDFNB9IFjrgwzdM4eq+fImlDMfNm/HdRhYRkLdUecHGIpdz+wyrqlDg== dependencies: fs-monkey "1.0.0" @@ -9329,15 +9327,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -9447,22 +9436,6 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.47, node-releases@^1.1.50: version "1.1.50" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" @@ -9500,14 +9473,6 @@ node-sass@^4.13.1: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -9562,27 +9527,6 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - 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" @@ -9590,7 +9534,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -9867,7 +9811,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@0: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -11380,16 +11324,6 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - re-resizable@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.2.0.tgz#7b42aee4df6de4e1f602c78828052d41f642bc94" @@ -12282,7 +12216,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -12498,7 +12432,7 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -13268,7 +13202,7 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -13435,7 +13369,7 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^4.0.2, tar@^4.4.2: +tar@^4.0.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==