diff --git a/packages/my-joyent/.babelrc b/packages/my-joyent/.babelrc new file mode 100644 index 00000000..d57f858e --- /dev/null +++ b/packages/my-joyent/.babelrc @@ -0,0 +1,9 @@ +{ + "presets": "joyent-portal", + "plugins": [ + "styled-components", + ["inline-react-svg", { + "ignorePattern": "libre-franklin" + }] + ] +} diff --git a/packages/my-joyent/.dockerignore b/packages/my-joyent/.dockerignore new file mode 100644 index 00000000..06ad4916 --- /dev/null +++ b/packages/my-joyent/.dockerignore @@ -0,0 +1,9 @@ +src/components/base/*.css +node_modules +coverage +.nyc_output +docs/static +!docs/static/index.html +docs/node_modules +dist +package-lock.json diff --git a/packages/my-joyent/.eslintignore b/packages/my-joyent/.eslintignore new file mode 100644 index 00000000..0321eefc --- /dev/null +++ b/packages/my-joyent/.eslintignore @@ -0,0 +1,4 @@ +.nyc_output +coverage +dist +build \ No newline at end of file diff --git a/packages/my-joyent/.eslintrc b/packages/my-joyent/.eslintrc new file mode 100644 index 00000000..a847796a --- /dev/null +++ b/packages/my-joyent/.eslintrc @@ -0,0 +1,11 @@ +{ + "extends": "joyent-portal", + "rules": { + "no-console": 0, + "new-cap": 0, + // temp + "no-undef": 1, + "no-debugger": 1, + "no-negated-condition": 0 + } +} diff --git a/packages/my-joyent/.gitignore b/packages/my-joyent/.gitignore new file mode 100644 index 00000000..927d17bb --- /dev/null +++ b/packages/my-joyent/.gitignore @@ -0,0 +1,18 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env +npm-debug.log* +yarn-debug.log* +yarn-error.log* + diff --git a/packages/my-joyent/.stylelintrc b/packages/my-joyent/.stylelintrc new file mode 100644 index 00000000..c97c6aac --- /dev/null +++ b/packages/my-joyent/.stylelintrc @@ -0,0 +1,8 @@ +{ + "processors": ["stylelint-processor-styled-components"], + "extends": [ + "stylelint-config-standard", + "stylelint-config-styled-components" + ], + "syntax": "scss" +} \ No newline at end of file diff --git a/packages/my-joyent/.tern-project b/packages/my-joyent/.tern-project new file mode 100644 index 00000000..4a7fee71 --- /dev/null +++ b/packages/my-joyent/.tern-project @@ -0,0 +1,15 @@ +{ + "libs": [ + "ecmascript", + "browser" + ], + "plugins": { + "doc_comment": true, + "local-scope": true, + "jsx": true, + "node": true, + "webpack": { + "configPath": "./node_modules/react-scripts/config/webpack.config.dev.js" + } + } +} \ No newline at end of file diff --git a/packages/my-joyent/CHANGELOG.md b/packages/my-joyent/CHANGELOG.md new file mode 100644 index 00000000..a519a6d0 --- /dev/null +++ b/packages/my-joyent/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. diff --git a/packages/my-joyent/Dockerfile b/packages/my-joyent/Dockerfile new file mode 100644 index 00000000..2a8813c9 --- /dev/null +++ b/packages/my-joyent/Dockerfile @@ -0,0 +1,19 @@ +FROM quay.io/yldio/alpine-node-containerpilot:latest + +RUN apk add --update nginx + +ENV CONTAINERPILOT /etc/containerpilot.json5 + +RUN npm install -g npm@^4 +RUN npm config set loglevel info \ + && yarn add lerna@^2.0.0 + +RUN ./node_modules/.bin/lerna clean --yes --scope my-joyent --include-filtered-dependencies \ + && ./node_modules/.bin/lerna bootstrap --scope my-joyent --include-filtered-dependencies + +COPY packages/my-joyent/etc/containerpilot.json5 ${CONTAINERPILOT} +COPY packages/my-joyent/etc/nginx.conf.tmpl /etc/nginx/nginx.conf.tmpl + +WORKDIR /opt/app/packages/my-joyent + +CMD ["/bin/containerpilot"] diff --git a/packages/my-joyent/README.md b/packages/my-joyent/README.md new file mode 100644 index 00000000..7450daf1 --- /dev/null +++ b/packages/my-joyent/README.md @@ -0,0 +1,21 @@ +# my-joyent + +[![Docker Repository on Quay](https://quay.io/repository/yldio/my-joyent/status)](https://quay.io/repository/yldio/my-joyent) +[![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0) +[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg)](https://github.com/RichardLitt/standard-readme) + +## Table of Contents + +- [Usage](#usage) +- [License](#license) + +## Usage + +``` +npm run start +open http://0.0.0.0:3069 +``` + +## License + +MPL-2.0 diff --git a/packages/my-joyent/package.json b/packages/my-joyent/package.json new file mode 100644 index 00000000..63cd43a0 --- /dev/null +++ b/packages/my-joyent/package.json @@ -0,0 +1,75 @@ +{ + "name": "my-joyent", + "version": "1.0.0", + "license": "MPL-2.0", + "repository": "github:yldio/joyent-portal", + "main": "build/", + "scripts": { + "dev": + "REACT_APP_GQL_PORT=3000 PORT=3069 REACT_APP_GQL_PROTOCOL=http react-scripts start", + "start": "PORT=3069 react-scripts start", + "build": "NODE_ENV=production react-scripts build", + "lint:css": "stylelint './src/**/*.js'", + "lint:js": "eslint . --fix", + "lint": "redrun -s lint:*", + "lint-ci:css": "stylelint './src/**/*.js'", + "lint-ci:js": + "eslint . --format junit --output-file $CIRCLE_TEST_REPORTS/lint/cp-frontend.xml", + "lint-ci": "redrun -p lint-ci:*", + "test": "NODE_ENV=test ./test/run --env=jsdom", + "test-ci": + "echo 0 `# NODE_ENV=test JEST_JUNIT_OUTPUT=$CIRCLE_TEST_REPORTS/test/cp-frontend.xml ./test/run --env=jsdom --coverage --coverageDirectory=$CIRCLE_ARTIFACTS/cp-frontend --testResultsProcessor=$(node -e \"console.log(require.resolve('jest-junit'))\")`", + "prepublish": "node scripts/postinstall" + }, + "dependencies": { + "apollo": "^0.2.2", + "graphql-tag": "^2.4.2", + "jest-cli": "^21.0.1", + "joyent-ui-toolkit": "^2.0.0", + "normalized-styled-components": "^1.0.9", + "prop-types": "^15.5.10", + "react": "^15.6.1", + "react-apollo": "^1.4.15", + "react-dom": "^15.6.1", + "react-redux": "^5.0.6", + "react-router": "^4.1.1", + "react-router-dom": "^4.1.2", + "react-styled-flexboxgrid": "^2.0.3", + "redux": "^3.7.2", + "redux-form": "^7.0.3", + "remcalc": "^1.0.8", + "styled-components": "^2.1.2", + "styled-is": "^1.0.11", + "unitcalc": "^1.0.8" + }, + "devDependencies": { + "apr-for-each": "^1.0.6", + "apr-main": "^1.0.7", + "babel-plugin-inline-react-svg": "^0.4.0", + "babel-plugin-styled-components": "^1.2.0", + "babel-preset-joyent-portal": "^2.0.0", + "commitizen": "^2.9.6", + "cross-env": "^5.0.5", + "eslint": "^4.5.0", + "eslint-config-joyent-portal": "3.0.0", + "jest": "^21.0.1", + "jest-alias-preprocessor": "^1.1.1", + "jest-cli": "^20.0.4", + "jest-diff": "^21.0.0", + "jest-junit": "^3.0.0", + "jest-matcher-utils": "^21.0.0", + "jest-snapshot": "^21.0.0", + "jest-styled-components": "^4.4.1", + "jest-transform-graphql": "^2.1.0", + "lodash.sortby": "^4.7.0", + "mz": "^2.6.0", + "react-scripts": "^1.0.12", + "react-test-renderer": "^15.6.1", + "redrun": "^5.9.17", + "stylelint": "^8.1.1", + "stylelint-config-primer": "^2.0.1", + "stylelint-config-standard": "^17.0.0", + "stylelint-config-styled-components": "^0.1.1", + "stylelint-processor-styled-components": "^0.4.0" + } +} diff --git a/packages/my-joyent/public/favicon.ico b/packages/my-joyent/public/favicon.ico new file mode 100644 index 00000000..5c125de5 Binary files /dev/null and b/packages/my-joyent/public/favicon.ico differ diff --git a/packages/my-joyent/public/index.html b/packages/my-joyent/public/index.html new file mode 100644 index 00000000..17cfc072 --- /dev/null +++ b/packages/my-joyent/public/index.html @@ -0,0 +1,22 @@ + + + + + + + My Joyent + + + +
+ + diff --git a/packages/my-joyent/scripts/patch-webpack-config.js b/packages/my-joyent/scripts/patch-webpack-config.js new file mode 100644 index 00000000..ae95b04c --- /dev/null +++ b/packages/my-joyent/scripts/patch-webpack-config.js @@ -0,0 +1,120 @@ +const webpack = require('webpack'); +const isString = require('lodash.isstring'); +const fs = require('fs'); +const path = require('path'); + +const FRONTEND_ROOT = process.cwd(); +const FRONTEND = path.join(FRONTEND_ROOT, 'src'); + +const BabelLoader = loader => ({ + test: loader.test, + include: loader.include, + loader: loader.loader, + options: { + babelrc: true, + cacheDirectory: true + } +}); + +const FileLoader = loader => ({ + exclude: loader.exclude.concat([/\.(graphql|gql)$/]), + loader: loader.loader, + options: loader.options +}); + +module.exports = config => { + config.resolve.plugins = []; + + config.plugins = config.plugins.filter( + plugin => !(plugin instanceof webpack.optimize.UglifyJsPlugin) + ); + + config.module.rules = config.module.rules + .reduce((loaders, loader, index) => { + if (Array.isArray(loader.use)) { + return loaders.concat([ + Object.assign(loader, { + use: loader.use.map(l => { + if (isString(l) || !isString(l.loader)) { + return l; + } + + if (!l.loader.match(/eslint-loader/)) { + return l; + } + + return Object.assign(l, { + options: Object.assign(l.options, { + baseConfig: null, + useEslintrc: true + }) + }); + }) + }) + ]); + } + + if (Array.isArray(loader.oneOf)) { + return loaders.concat([ + Object.assign(loader, { + oneOf: loader.oneOf.map(loader => { + if (!isString(loader.loader)) { + return loader; + } + + if (loader.loader.match(/babel-loader/)) { + return BabelLoader(loader); + } + + if (loader.loader.match(/file-loader/)) { + return FileLoader(loader); + } + + return loader; + }) + }) + ]); + } + + if (!isString(loader.loader)) { + return loaders.concat([loader]); + } + + if (loader.loader.match(/babel-loader/)) { + return loaders.concat(BabelLoader(loader)); + } + + if (loader.loader.match(/file-loader/)) { + return loaders.concat([FileLoader(loader)]); + } + + return loaders.concat([loader]); + }, []) + .concat([ + { + test: /\.(graphql|gql)$/, + exclude: /node_modules/, + loader: require.resolve('graphql-tag/loader') + } + ]); + + config.resolve.alias = Object.assign( + {}, + config.resolve.alias, + fs + .readdirSync(FRONTEND) + .map(name => path.join(FRONTEND, name)) + .filter(fullpath => fs.statSync(fullpath).isDirectory()) + .reduce( + (aliases, fullpath) => + Object.assign(aliases, { + [`@${path.basename(fullpath)}`]: fullpath + }), + { + '@root': FRONTEND + } + ) + ); + + return config; +}; diff --git a/packages/my-joyent/scripts/postinstall.js b/packages/my-joyent/scripts/postinstall.js new file mode 100644 index 00000000..d313c46c --- /dev/null +++ b/packages/my-joyent/scripts/postinstall.js @@ -0,0 +1,41 @@ +const { readFile, writeFile, exists } = require('mz/fs'); +const main = require('apr-main'); +const forEach = require('apr-for-each'); +const path = require('path'); + +const ROOT = path.join(__dirname, '../../../node_modules/react-scripts/config'); +const configs = ['webpack.config.dev', 'webpack.config.prod']; + +const toCopy = [ + 'patch-webpack-config', + 'webpack.config.dev', + 'webpack.config.prod' +]; + +const backup = async file => { + const backupPath = path.join(ROOT, `${file}.original.js`); + const backupExists = await exists(backupPath); + + if (backupExists) { + return; + } + + const originalPath = path.join(ROOT, `${file}.js`); + const orignalConfig = await readFile(originalPath, 'utf-8'); + return writeFile(backupPath, orignalConfig); +}; + +const copy = async file => { + const srcPath = path.join(__dirname, `${file}.js`); + const destPath = path.join(ROOT, `${file}.js`); + + const src = await readFile(srcPath, 'utf-8'); + return writeFile(destPath, src); +}; + +main( + (async () => { + await forEach(configs, backup); + await forEach(toCopy, copy); + })() +); diff --git a/packages/my-joyent/scripts/webpack.config.dev.js b/packages/my-joyent/scripts/webpack.config.dev.js new file mode 100644 index 00000000..324e9d33 --- /dev/null +++ b/packages/my-joyent/scripts/webpack.config.dev.js @@ -0,0 +1,4 @@ +const originalConfig = require('./webpack.config.dev.original'); +const patch = require('./patch-webpack-config'); + +module.exports = patch(originalConfig); diff --git a/packages/my-joyent/scripts/webpack.config.prod.js b/packages/my-joyent/scripts/webpack.config.prod.js new file mode 100644 index 00000000..d4bb301c --- /dev/null +++ b/packages/my-joyent/scripts/webpack.config.prod.js @@ -0,0 +1,4 @@ +const originalConfig = require('./webpack.config.prod.original'); +const patch = require('./patch-webpack-config'); + +module.exports = patch(originalConfig); diff --git a/packages/my-joyent/src/app.js b/packages/my-joyent/src/app.js new file mode 100644 index 00000000..d309ccdf --- /dev/null +++ b/packages/my-joyent/src/app.js @@ -0,0 +1,26 @@ +import React, { Component } from 'react'; +import { ThemeProvider, injectGlobal } from 'styled-components'; +import { theme, global } from 'joyent-ui-toolkit'; +import { ApolloProvider } from 'react-apollo'; + +import { client, store } from '@state/store'; +import Router from '@root/router'; + +class App extends Component { + componentWillMount() { + // eslint-disable-next-line no-unused-expressions + injectGlobal` + ${global} + `; + } + + render() { + return ( + + {Router} + + ); + } +} + +export default App; diff --git a/packages/my-joyent/src/assets/triton_logo.png b/packages/my-joyent/src/assets/triton_logo.png new file mode 100644 index 00000000..666fe0fe Binary files /dev/null and b/packages/my-joyent/src/assets/triton_logo.png differ diff --git a/packages/my-joyent/src/assets/triton_logo_dark.png b/packages/my-joyent/src/assets/triton_logo_dark.png new file mode 100644 index 00000000..53aa24f8 Binary files /dev/null and b/packages/my-joyent/src/assets/triton_logo_dark.png differ diff --git a/packages/my-joyent/src/components/layout/__tests__/__snapshots__/container.spec.js.snap b/packages/my-joyent/src/components/layout/__tests__/__snapshots__/container.spec.js.snap new file mode 100644 index 00000000..8324951c --- /dev/null +++ b/packages/my-joyent/src/components/layout/__tests__/__snapshots__/container.spec.js.snap @@ -0,0 +1,38 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders without throwing 1`] = ` +.c0 { + margin-right: auto; + margin-left: auto; + padding-top: 1.1875rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: block; + -webkit-flex-flow: column; + -ms-flex-flow: column; + flex-flow: column; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +
+`; diff --git a/packages/my-joyent/src/components/layout/__tests__/container.spec.js b/packages/my-joyent/src/components/layout/__tests__/container.spec.js new file mode 100644 index 00000000..406eb413 --- /dev/null +++ b/packages/my-joyent/src/components/layout/__tests__/container.spec.js @@ -0,0 +1,14 @@ +/** + * @jest-environment jsdom + */ + +import React from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import Container from '../container'; + +it('renders without throwing', () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/packages/my-joyent/src/components/layout/container.js b/packages/my-joyent/src/components/layout/container.js new file mode 100644 index 00000000..81a53feb --- /dev/null +++ b/packages/my-joyent/src/components/layout/container.js @@ -0,0 +1,20 @@ +import { Grid } from 'react-styled-flexboxgrid'; +import remcalc from 'remcalc'; +import is, { isNot } from 'styled-is'; + +export default Grid.extend` + padding-top: ${remcalc(19)}; + ${isNot('plain')` + flex: 1 1 auto; + display: block; + flex-flow: column; + `}; + ${is('center')` + display: flex; + flex-direction: column; + flex-wrap: nowrap; + justify-content: center; + align-content: center; + align-items: center; + `}; +`; diff --git a/packages/my-joyent/src/components/layout/index.js b/packages/my-joyent/src/components/layout/index.js new file mode 100644 index 00000000..d0d40032 --- /dev/null +++ b/packages/my-joyent/src/components/layout/index.js @@ -0,0 +1 @@ +export { default as LayoutContainer } from './container'; diff --git a/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap b/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap new file mode 100644 index 00000000..2d040e98 --- /dev/null +++ b/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap @@ -0,0 +1,140 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders
without throwing 1`] = ` +.c2 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 1.5rem; + text-transform: uppercase; + color: ; + font-size: 1.8125rem; + margin: 0; +} + +.c1 { + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + padding: 0.9375rem 0; +} + +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: space-between; + -webkit-justify-content: space-between; + -ms-flex-pack: space-between; + justify-content: space-between; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + background-color: ; + max-height: 3.3125rem; + min-height: 3.3125rem; + padding: 0 1.125rem; + line-height: 1.5625rem; +} + +.c3 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + +
+ .c1 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 1.5rem; + text-transform: uppercase; + color: ; + font-size: 1.8125rem; + margin: 0; +} + +.c0 { + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + padding: 0.9375rem 0; +} + +.c2 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + +
+ .c0 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 1.5rem; + text-transform: uppercase; + color: ; + font-size: 1.8125rem; + margin: 0; +} + +.c1 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + +

+ .c0 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + + + .c0 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + + + +

+
+
+`; diff --git a/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/not-found.spec.js.snap b/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/not-found.spec.js.snap new file mode 100644 index 00000000..c2c3cfeb --- /dev/null +++ b/packages/my-joyent/src/components/navigation/__tests__/__snapshots__/not-found.spec.js.snap @@ -0,0 +1,345 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders without throwing 1`] = ` +.c6 { + display: inline-block; + box-sizing: border-box; + display: inline-block; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0; + padding: 0.9375rem 1.125rem; + position: relative; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + font-size: 0.9375rem; + text-align: center; + font-style: normal; + font-stretch: normal; + line-height: normal; + -webkit-letter-spacing: normal; + -moz-letter-spacing: normal; + -ms-letter-spacing: normal; + letter-spacing: normal; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + color: ; + background-image: none; + background-color: ; + border-radius: 0.25rem; + border: solid 0.0625rem; +} + +.c6:focus { + outline: 0; + text-decoration: none; + background-color: ; + border-color: ; +} + +.c6:hover { + background-color: ; + border: solid 0.0625rem; +} + +.c6:active, +.c6:active:hover, +.c6:active:focus { + background-image: none; + outline: 0; + background-color: ; + border-color: ; +} + +.c6[disabled] { + cursor: not-allowed; + pointer-events: none; +} + +.c3 { + font-size: 2rem; + margin: 0.625rem 0; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 2.25rem; + font-style: normal; + font-stretch: normal; + margin: 0; +} + +.c5 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + line-height: 1.5rem; + font-size: 0.9375rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + padding-top: 1.1875rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: block; + -webkit-flex-flow: column; + -ms-flex-flow: column; + flex-flow: column; +} + +.c1 { + margin-top: 3.75rem; +} + +.c2 { + font-weight: normal; + font-size: 2rem; +} + +.c4 { + margin-bottom: 1.875rem; + max-width: 30.625rem; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +
+ .c5 { + display: inline-block; + box-sizing: border-box; + display: inline-block; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0; + padding: 0.9375rem 1.125rem; + position: relative; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + font-size: 0.9375rem; + text-align: center; + font-style: normal; + font-stretch: normal; + line-height: normal; + -webkit-letter-spacing: normal; + -moz-letter-spacing: normal; + -ms-letter-spacing: normal; + letter-spacing: normal; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + color: ; + background-image: none; + background-color: ; + border-radius: 0.25rem; + border: solid 0.0625rem; +} + +.c5:focus { + outline: 0; + text-decoration: none; + background-color: ; + border-color: ; +} + +.c5:hover { + background-color: ; + border: solid 0.0625rem; +} + +.c5:active, +.c5:active:hover, +.c5:active:focus { + background-image: none; + outline: 0; + background-color: ; + border-color: ; +} + +.c5[disabled] { + cursor: not-allowed; + pointer-events: none; +} + +.c2 { + font-size: 2rem; + margin: 0.625rem 0; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 2.25rem; + font-style: normal; + font-stretch: normal; + margin: 0; +} + +.c4 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + line-height: 1.5rem; + font-size: 0.9375rem; +} + +.c0 { + margin-top: 3.75rem; +} + +.c1 { + font-weight: normal; + font-size: 2rem; +} + +.c3 { + margin-bottom: 1.875rem; + max-width: 30.625rem; +} + +
+ .c1 { + font-size: 2rem; + margin: 0.625rem 0; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 2.25rem; + font-style: normal; + font-stretch: normal; + margin: 0; +} + +.c0 { + font-weight: normal; + font-size: 2rem; +} + +

+ I have no memory of this place +

+ .c1 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + line-height: 1.5rem; + font-size: 0.9375rem; +} + +.c0 { + margin-bottom: 1.875rem; + max-width: 30.625rem; +} + +

+ HTTP 404: We can’t find what you are looking for. Next time, always follow your nose. +

+ .c0 { + display: inline-block; + box-sizing: border-box; + display: inline-block; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0; + padding: 0.9375rem 1.125rem; + position: relative; + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 400; + font-size: 0.9375rem; + text-align: center; + font-style: normal; + font-stretch: normal; + line-height: normal; + -webkit-letter-spacing: normal; + -moz-letter-spacing: normal; + -ms-letter-spacing: normal; + letter-spacing: normal; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + color: ; + background-image: none; + background-color: ; + border-radius: 0.25rem; + border: solid 0.0625rem; +} + +.c0:focus { + outline: 0; + text-decoration: none; + background-color: ; + border-color: ; +} + +.c0:hover { + background-color: ; + border: solid 0.0625rem; +} + +.c0:active, +.c0:active:hover, +.c0:active:focus { + background-image: none; + outline: 0; + background-color: ; + border-color: ; +} + +.c0[disabled] { + cursor: not-allowed; + pointer-events: none; +} + + + Back home + +
+
+`; diff --git a/packages/my-joyent/src/components/navigation/__tests__/header.spec.js b/packages/my-joyent/src/components/navigation/__tests__/header.spec.js new file mode 100644 index 00000000..ef06967a --- /dev/null +++ b/packages/my-joyent/src/components/navigation/__tests__/header.spec.js @@ -0,0 +1,21 @@ +/** + * @jest-environment jsdom + */ + +import React from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import { Router } from '@mocks/'; +import { Header } from '../'; + +it('renders
without throwing', () => { + const tree = renderer + .create( + +
+ + ) + .toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/packages/my-joyent/src/components/navigation/__tests__/not-found.spec.js b/packages/my-joyent/src/components/navigation/__tests__/not-found.spec.js new file mode 100644 index 00000000..355b9c68 --- /dev/null +++ b/packages/my-joyent/src/components/navigation/__tests__/not-found.spec.js @@ -0,0 +1,21 @@ +/** + * @jest-environment jsdom + */ + +import React from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; +import { Router } from '@mocks/'; + +import { NotFound } from '../'; + +it('renders without throwing', () => { + const tree = renderer + .create( + + + + ) + .toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/packages/my-joyent/src/components/navigation/header.js b/packages/my-joyent/src/components/navigation/header.js new file mode 100644 index 00000000..581fb136 --- /dev/null +++ b/packages/my-joyent/src/components/navigation/header.js @@ -0,0 +1,24 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Img } from 'normalized-styled-components'; +import remcalc from 'remcalc'; + +import Logo from '@assets/triton_logo.png'; +import { Header, HeaderBrand } from 'joyent-ui-toolkit'; + +const StyledLogo = Img.extend` + width: ${remcalc(87)}; + height: ${remcalc(25)}; +`; + +const NavHeader = () => ( +
+ + + + + +
+); + +export default NavHeader; diff --git a/packages/my-joyent/src/components/navigation/index.js b/packages/my-joyent/src/components/navigation/index.js new file mode 100644 index 00000000..c3eeaef3 --- /dev/null +++ b/packages/my-joyent/src/components/navigation/index.js @@ -0,0 +1,2 @@ +export { default as Header } from './header'; +export { default as NotFound } from './not-found'; diff --git a/packages/my-joyent/src/components/navigation/not-found.js b/packages/my-joyent/src/components/navigation/not-found.js new file mode 100644 index 00000000..0dee2880 --- /dev/null +++ b/packages/my-joyent/src/components/navigation/not-found.js @@ -0,0 +1,45 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styled from 'styled-components'; +import remcalc from 'remcalc'; +import { H1, P, Button } from 'joyent-ui-toolkit'; +import { LayoutContainer } from '@components/layout'; + +const StyledContainer = styled.div` + /* Comment For prettier */ + margin-top: ${remcalc(60)}; +`; + +const StyledTitle = styled(H1)` + font-weight: normal; + font-size: ${remcalc(32)}; +`; + +const StyledP = styled(P)` + margin-bottom: ${remcalc(30)}; + max-width: ${remcalc(490)}; +`; + +const NotFound = ({ + title = 'I have no memory of this place', + message = 'HTTP 404: We can’t find what you are looking for. Next time, always follow your nose.', + link = 'Back home', + to = '/' +}) => ( + + + {title} + {message} + + + +); + +NotFound.propTypes = { + title: PropTypes.string, + message: PropTypes.string, + link: PropTypes.string, + to: PropTypes.string +}; + +export default NotFound; diff --git a/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap b/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap new file mode 100644 index 00000000..7f24793a --- /dev/null +++ b/packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders without throwing 1`] = ` +.c0 { + margin-right: auto; + margin-left: auto; + padding-top: 1.1875rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: block; + -webkit-flex-flow: column; + -ms-flex-flow: column; + flex-flow: column; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +
+ Welcome to your joyent portal +
+`; diff --git a/packages/my-joyent/src/containers/home/__tests__/index.spec.js b/packages/my-joyent/src/containers/home/__tests__/index.spec.js new file mode 100644 index 00000000..ae64bee5 --- /dev/null +++ b/packages/my-joyent/src/containers/home/__tests__/index.spec.js @@ -0,0 +1,14 @@ +/** + * @jest-environment jsdom + */ + +import React from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import Home from '../'; + +it('renders without throwing', () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/packages/my-joyent/src/containers/home/index.js b/packages/my-joyent/src/containers/home/index.js new file mode 100644 index 00000000..6359cbfd --- /dev/null +++ b/packages/my-joyent/src/containers/home/index.js @@ -0,0 +1,8 @@ +import React from 'react'; +import { LayoutContainer } from '@components/layout'; + +const Home = () => ( + Welcome to your joyent portal +); + +export default Home; diff --git a/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap b/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap new file mode 100644 index 00000000..2d040e98 --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap @@ -0,0 +1,140 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders
without throwing 1`] = ` +.c2 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 1.5rem; + text-transform: uppercase; + color: ; + font-size: 1.8125rem; + margin: 0; +} + +.c1 { + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + padding: 0.9375rem 0; +} + +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: space-between; + -webkit-justify-content: space-between; + -ms-flex-pack: space-between; + justify-content: space-between; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + background-color: ; + max-height: 3.3125rem; + min-height: 3.3125rem; + padding: 0 1.125rem; + line-height: 1.5625rem; +} + +.c3 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + +
+ .c1 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 1.5rem; + text-transform: uppercase; + color: ; + font-size: 1.8125rem; + margin: 0; +} + +.c0 { + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + padding: 0.9375rem 0; +} + +.c2 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + +
+ .c0 { + font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif; + font-weight: 500; + font-size: 1.5rem; + text-transform: uppercase; + color: ; + font-size: 1.8125rem; + margin: 0; +} + +.c1 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + +

+ .c0 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + + + .c0 { + border-style: none; + width: 5.4375rem; + height: 1.5625rem; +} + + + +

+
+
+`; diff --git a/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/not-found-hoc.spec.js.snap b/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/not-found-hoc.spec.js.snap new file mode 100644 index 00000000..1509cc15 --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/not-found-hoc.spec.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders without throwing 1`] = ``; diff --git a/packages/my-joyent/src/containers/navigation/__tests__/header.spec.js b/packages/my-joyent/src/containers/navigation/__tests__/header.spec.js new file mode 100644 index 00000000..ef06967a --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/__tests__/header.spec.js @@ -0,0 +1,21 @@ +/** + * @jest-environment jsdom + */ + +import React from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import { Router } from '@mocks/'; +import { Header } from '../'; + +it('renders
without throwing', () => { + const tree = renderer + .create( + +
+ + ) + .toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/packages/my-joyent/src/containers/navigation/__tests__/not-found-hoc.spec.js b/packages/my-joyent/src/containers/navigation/__tests__/not-found-hoc.spec.js new file mode 100644 index 00000000..e8e29e8d --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/__tests__/not-found-hoc.spec.js @@ -0,0 +1,14 @@ +/** + * @jest-environment jsdom + */ + +import React from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import { withNotFound } from '../'; + +it('renders without throwing', () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/packages/my-joyent/src/containers/navigation/header.js b/packages/my-joyent/src/containers/navigation/header.js new file mode 100644 index 00000000..eed568d7 --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/header.js @@ -0,0 +1,7 @@ +import React from 'react'; + +import { Header as HeaderComponent } from '@components/navigation'; + +export const Header = () => ; + +export default Header; diff --git a/packages/my-joyent/src/containers/navigation/index.js b/packages/my-joyent/src/containers/navigation/index.js new file mode 100644 index 00000000..1008ff79 --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/index.js @@ -0,0 +1,2 @@ +export { default as Header } from './header'; +export { default as withNotFound } from './not-found-hoc'; diff --git a/packages/my-joyent/src/containers/navigation/not-found-hoc.js b/packages/my-joyent/src/containers/navigation/not-found-hoc.js new file mode 100644 index 00000000..000d6860 --- /dev/null +++ b/packages/my-joyent/src/containers/navigation/not-found-hoc.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { NotFound } from '@components/navigation'; + +const pathsExample = { + title: 'I have no memory of this place', + message: + 'HTTP 404: We can’t find what you are looking for. Next time, always follow your nose.', + link: 'Back home', + to: '/' +}; +const NotFoundHOC = (paths = pathsExample) => ( + +); + +export default NotFoundHOC; diff --git a/packages/my-joyent/src/graphql/Example.gql b/packages/my-joyent/src/graphql/Example.gql new file mode 100644 index 00000000..ceeb4497 --- /dev/null +++ b/packages/my-joyent/src/graphql/Example.gql @@ -0,0 +1,11 @@ +query Portal { + portal { + user { + firstName + } + datacenter { + id + region + } + } +} diff --git a/packages/my-joyent/src/index.js b/packages/my-joyent/src/index.js new file mode 100644 index 00000000..968445cc --- /dev/null +++ b/packages/my-joyent/src/index.js @@ -0,0 +1,5 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './app'; + +ReactDOM.render(, document.getElementById('root')); diff --git a/packages/my-joyent/src/router.js b/packages/my-joyent/src/router.js new file mode 100644 index 00000000..856ce803 --- /dev/null +++ b/packages/my-joyent/src/router.js @@ -0,0 +1,30 @@ +import React from 'react'; +import { BrowserRouter, Route, Switch } from 'react-router-dom'; +import styled from 'styled-components'; + +import { Header } from '@containers/navigation'; + +import Home from '@containers/home'; + +import { NotFound } from '@components/navigation'; + +const Container = styled.div` + display: flex; + flex: 1 1 auto; + position: relative; + flex-flow: column; +`; + +const Router = ( + + + + + + + + + +); + +export default Router; diff --git a/packages/my-joyent/src/state/state.js b/packages/my-joyent/src/state/state.js new file mode 100644 index 00000000..4110b168 --- /dev/null +++ b/packages/my-joyent/src/state/state.js @@ -0,0 +1,3 @@ +const state = {}; + +export default state; diff --git a/packages/my-joyent/src/state/store.js b/packages/my-joyent/src/state/store.js new file mode 100644 index 00000000..067be2ae --- /dev/null +++ b/packages/my-joyent/src/state/store.js @@ -0,0 +1,58 @@ +import { createStore, combineReducers, applyMiddleware, compose } from 'redux'; +import { reducer as formReducer } from 'redux-form'; +import { ApolloClient, createNetworkInterface } from 'react-apollo'; +import state from './state'; + +const GLOBAL = + typeof window === 'object' + ? window + : { + location: { + hostname: '0.0.0.0' + } + }; + +const GQL_PORT = process.env.REACT_APP_GQL_PORT || 443; +const GQL_HOSTNAME = + process.env.REACT_APP_GQL_HOSTNAME || GLOBAL.location.hostname; +const GQL_PROTOCOL = process.env.REACT_APP_GQL_PROTOCOL || 'https'; + +export const client = new ApolloClient({ + dataIdFromObject: o => { + const id = o.id + ? o.id + : o.slug + ? o.slug + : o.uuid + ? o.uuid + : o.timestamp + ? o.timestamp + : o.name && o.instance + ? `${o.name}-${o.instance}` + : o.name + ? o.name + : o.time && o.value + ? `${o.time}-${o.value}` + : 'apollo-cache-key-not-defined'; + return `${o.__typename}:${id}`; + }, + networkInterface: createNetworkInterface({ + uri: `${GQL_PROTOCOL}://${GQL_HOSTNAME}:${GQL_PORT}/api/graphql` + }) +}); + +export const store = createStore( + combineReducers({ + apollo: client.reducer(), + form: formReducer + }), + state, // Initial state + compose( + applyMiddleware(client.middleware()), + // If you are using the devToolsExtension, you can add it here also + // eslint-disable-next-line no-negated-condition + typeof GLOBAL.__REDUX_DEVTOOLS_EXTENSION__ !== 'undefined' + ? GLOBAL.__REDUX_DEVTOOLS_EXTENSION__() + : f => f + ) +); diff --git a/packages/my-joyent/test/file-mock.js b/packages/my-joyent/test/file-mock.js new file mode 100644 index 00000000..d906d5b4 --- /dev/null +++ b/packages/my-joyent/test/file-mock.js @@ -0,0 +1 @@ +module.exports = 'test-file-mock'; diff --git a/packages/my-joyent/test/mocks/index.js b/packages/my-joyent/test/mocks/index.js new file mode 100644 index 00000000..cf9bab85 --- /dev/null +++ b/packages/my-joyent/test/mocks/index.js @@ -0,0 +1,3 @@ +export { default as Router } from './router'; +export { default as Store } from './store'; +export { default as Theme } from './theme'; diff --git a/packages/my-joyent/test/mocks/router.js b/packages/my-joyent/test/mocks/router.js new file mode 100644 index 00000000..47dbba36 --- /dev/null +++ b/packages/my-joyent/test/mocks/router.js @@ -0,0 +1,4 @@ +import React from 'react'; +import { MemoryRouter } from 'react-router-dom'; + +export default ({ children }) => {children}; diff --git a/packages/my-joyent/test/mocks/store.js b/packages/my-joyent/test/mocks/store.js new file mode 100644 index 00000000..6026ecbc --- /dev/null +++ b/packages/my-joyent/test/mocks/store.js @@ -0,0 +1,9 @@ +import React from 'react'; +import { client, store } from '@state/store'; +import { ApolloProvider } from 'react-apollo'; + +export default ({ children }) => ( + + {children} + +); diff --git a/packages/my-joyent/test/mocks/theme.js b/packages/my-joyent/test/mocks/theme.js new file mode 100644 index 00000000..5b1a2a45 --- /dev/null +++ b/packages/my-joyent/test/mocks/theme.js @@ -0,0 +1,7 @@ +import React from 'react'; +import { ThemeProvider } from 'styled-components'; +import { theme } from 'joyent-ui-toolkit'; + +export default ({ children }) => ( + {children} +); diff --git a/packages/my-joyent/test/run b/packages/my-joyent/test/run new file mode 100755 index 00000000..01c9d4a9 --- /dev/null +++ b/packages/my-joyent/test/run @@ -0,0 +1,66 @@ +#!/usr/bin/env node + +// Do this as the first thing so that any code reading it knows the right env. +process.env.BABEL_ENV = 'test'; +process.env.NODE_ENV = 'test'; +process.env.PUBLIC_URL = ''; + +// Makes the script crash on unhandled rejections instead of silently +// ignoring them. In the future, promise rejections that are not handled will +// terminate the Node.js process with a non-zero exit code. +process.on('unhandledRejection', err => { + throw err; +}); + +// Ensure environment variables are read. +require('react-scripts/config/env'); + +const jest = require('jest'); +const argv = process.argv.slice(2); + +// This is not necessary after eject because we embed config into package.json. +const createJestConfig = require('react-scripts/scripts/utils/createJestConfig'); +const path = require('path'); +const paths = require('react-scripts/config/paths'); + +const config = createJestConfig( + relativePath => + path.resolve( + __dirname, + '../../../node_modules/react-scripts', + relativePath + ), + path.resolve(__dirname, '../../../'), + false +); + +// patch +config.testEnvironment = 'node'; +config.transform = Object.assign( + {}, + { + '\\.(gql|graphql)$': 'jest-transform-graphql' + }, + config.transform +); +config.testMatch = [ + '/packages/my-joyent/src/**/**/__tests__/**/*.js', + '/packages/my-joyent/src/**/**/**/?(*.)(spec|test).js' +]; +config.moduleNameMapper = Object.assign({}, config.moduleNameMapper, { + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/packages/my-joyent/test/file-mock.js', + '^@root/(.*)$': '/packages/my-joyent/src/$1', + '^@mocks/(.*)$': '/packages/my-joyent/test/mocks$1', + '^@components/(.*)$': + '/packages/my-joyent/src/components/$1', + '^@containers/(.*)$': + '/packages/my-joyent/src/containers/$1', + '^@graphql/(.*)$': '/packages/my-joyent/src/graphql/$1', + '^@assets/(.*)$': '/packages/my-joyent/src/assets/$1', + '^@state/(.*)$': '/packages/my-joyent/src/state/$1' +}); + +argv.push('--config', JSON.stringify(config)); + +jest.run(argv); diff --git a/scripts/format b/scripts/format index 475aea64..4b8849b4 100755 --- a/scripts/format +++ b/scripts/format @@ -36,12 +36,11 @@ const filter = (files = []) => const run = async (files = []) => { const filteredFiles = filter(files); - const _files = filteredFiles.reduce( (files, file) => { const ext = path.extname(file).replace(/^./, '') || 'js'; return Object.assign(files, { - [ext]: files[ext].concat(file) + [ext]: (files[ext] || 'js').concat(file) }); }, { diff --git a/scripts/run-staged-pkg b/scripts/run-staged-pkg index 49dc7bad..b5a3c2b0 100755 --- a/scripts/run-staged-pkg +++ b/scripts/run-staged-pkg @@ -1,6 +1,5 @@ #!/usr/bin/env node -const { packages } = require('../lerna.json'); const { readFile, exists } = require('mz/fs'); const sgf = require('staged-git-files'); const execa = require('execa'); @@ -14,6 +13,8 @@ const path = require('path'); const uniq = require('lodash.uniq'); const argv = require('yargs').argv; const checksum = require('checksum'); +const { lstatSync, readdirSync } = require('fs'); +const { join } = require('path'); const ROOT = path.join(__dirname, '..'); const getStaged = awaitify(sgf); @@ -111,7 +112,13 @@ const runLintAndGitAdd = async (staged, pkgs) => { }; const gather = async () => { - const locations = await globby(packages, { + const isDirectory = source => lstatSync(source).isDirectory(); + const getDirectories = source => + readdirSync(source) + .map(name => join(source, name)) + .filter(isDirectory); + + const locations = await globby(getDirectories('./packages'), { cwd: ROOT }); diff --git a/yarn.lock b/yarn.lock index 24f34ffd..e8de6299 100644 --- a/yarn.lock +++ b/yarn.lock @@ -220,7 +220,7 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -ansi-escapes@^1.4.0: +ansi-escapes@^1.1.0, ansi-escapes@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -1974,6 +1974,10 @@ bytes@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + cacache@^9.2.9: version "9.2.9" resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.2.9.tgz#f9d7ffe039851ec94c28290662afa4dd4bb9e8dd" @@ -1992,6 +1996,12 @@ cacache@^9.2.9: unique-filename "^1.1.0" y18n "^3.2.1" +cachedir@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-1.1.1.tgz#e1363075ea206a12767d92bb711c8a2f76a10f62" + dependencies: + os-homedir "^1.0.1" + caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -2274,6 +2284,12 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -2483,6 +2499,26 @@ commander@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" +commitizen@^2.9.6: + version "2.9.6" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-2.9.6.tgz#c0d00535ef264da7f63737edfda4228983fa2291" + dependencies: + cachedir "^1.1.0" + chalk "1.1.3" + cz-conventional-changelog "1.2.0" + dedent "0.6.0" + detect-indent "4.0.0" + find-node-modules "1.0.4" + find-root "1.0.0" + fs-extra "^1.0.0" + glob "7.1.1" + inquirer "1.2.3" + lodash "4.17.2" + minimist "1.2.0" + path-exists "2.1.0" + shelljs "0.7.6" + strip-json-comments "2.0.1" + common-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-dir/-/common-dir-1.0.1.tgz#4fd872085ebc5f262d9cc23b0ff34b3e457677f0" @@ -2530,7 +2566,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.10, concat-stream@^1.5.0, concat-stream@^1.6.0: +concat-stream@^1.4.10, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -2796,6 +2832,10 @@ conventional-changelog@^1.1.5: conventional-changelog-jscs "^0.1.0" conventional-changelog-jshint "^0.2.0" +conventional-commit-types@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" + conventional-commits-filter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz#6fc2a659372bc3f2339cf9ffff7e1b0344b93039" @@ -3208,6 +3248,17 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" +cz-conventional-changelog@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-1.2.0.tgz#2bca04964c8919b23f3fd6a89ef5e6008b31b3f8" + dependencies: + conventional-commit-types "^2.0.0" + lodash.map "^4.5.1" + longest "^1.0.1" + pad-right "^0.2.2" + right-pad "^1.0.1" + word-wrap "^1.0.3" + d3-array@1, d3-array@1.2.0, d3-array@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.0.tgz#147d269720e174c4057a7f42be8b0f3f2ba53108" @@ -3511,11 +3562,15 @@ decompress-response@^3.2.0: dependencies: mimic-response "^1.0.0" +dedent@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" -deep-equal@^1.0.0, deep-equal@^1.0.1: +deep-equal@^1.0.0, deep-equal@^1.0.1, deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -3554,7 +3609,7 @@ define-properties@^1.1.2: foreach "^2.0.5" object-keys "^1.0.8" -defined@^1.0.0: +defined@^1.0.0, defined@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -3595,10 +3650,6 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - depd@1.1.1, depd@~1.1.0, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" @@ -3614,7 +3665,13 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" -detect-indent@^4.0.0: +detect-file@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + dependencies: + fs-exists-sync "^0.1.0" + +detect-indent@4.0.0, detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" dependencies: @@ -3960,7 +4017,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.7.0: +es-abstract@^1.5.0, es-abstract@^1.7.0: version "1.8.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" dependencies: @@ -4458,8 +4515,8 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10" + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" dependencies: merge "^1.1.3" @@ -4505,6 +4562,10 @@ execall@^1.0.0: dependencies: clone-regexp "^1.0.0" +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -4517,6 +4578,12 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + dependencies: + os-homedir "^1.0.1" + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -4580,6 +4647,14 @@ extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" + dependencies: + extend "^3.0.0" + spawn-sync "^1.0.15" + tmp "^0.0.29" + external-editor@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" @@ -4681,8 +4756,8 @@ fb-watchman@^2.0.0: bser "^2.0.0" fbjs@^0.8.5, fbjs@^0.8.9: - version "0.8.14" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.14.tgz#d1dbe2be254c35a91e09f31f9cd50a40b2a0ed1c" + version "0.8.15" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.15.tgz#4f0695fdfcc16c37c0b07facec8cb4c4091685b9" dependencies: core-js "^1.0.0" isomorphic-fetch "^2.1.1" @@ -4692,6 +4767,13 @@ fbjs@^0.8.5, fbjs@^0.8.9: setimmediate "^1.0.5" ua-parser-js "^0.7.9" +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -4772,10 +4854,21 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-node-modules@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-1.0.4.tgz#b6deb3cccb699c87037677bcede2c5f5862b2550" + dependencies: + findup-sync "0.4.2" + merge "^1.2.0" + find-rc@3.0.x: version "3.0.1" resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-3.0.1.tgz#54a4178370f10bc9371fa8d1b2c2809a2afa0cce" +find-root@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4789,6 +4882,15 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +findup-sync@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.2.tgz#a8117d0f73124f5a4546839579fe52d7129fb5e5" + dependencies: + detect-file "^0.1.0" + is-glob "^2.0.1" + micromatch "^2.3.7" + resolve-dir "^0.1.0" + findup@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/findup/-/findup-0.1.5.tgz#8ad929a3393bac627957a7e5de4623b06b0e2ceb" @@ -4824,6 +4926,12 @@ fn-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" +for-each@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" + dependencies: + is-function "~1.0.0" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -4888,6 +4996,10 @@ from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -4916,6 +5028,14 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + fs-extra@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880" @@ -4969,7 +5089,7 @@ fullstore@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fullstore/-/fullstore-1.1.0.tgz#a7a8b00ca07d86faca05fb825c45e5d1c3bba97e" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5139,7 +5259,18 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.x.x, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -5178,6 +5309,22 @@ global-modules@1.0.0, global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -5308,11 +5455,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" graphi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/graphi/-/graphi-3.0.0.tgz#78efaa2c47b9f946e6441b6217e75f8cced1ea30" + version "3.1.0" + resolved "https://registry.yarnpkg.com/graphi/-/graphi-3.1.0.tgz#e1dac4ab8dfd0f634b4d3672ed08b5815584e041" dependencies: boom "^5.2.0" - graphql "^0.10.5" + graphql "^0.11.2" graphql-server-module-graphiql "^1.1.2" graphql-anywhere@^3.0.1: @@ -5329,7 +5476,7 @@ graphql-tag@^2.0.0, graphql-tag@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.4.2.tgz#6a63297d8522d03a2b72d26f1b239aab343840cd" -graphql@^0.10.0, graphql@^0.10.3, graphql@^0.10.5: +graphql@^0.10.0, graphql@^0.10.3: version "0.10.5" resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.10.5.tgz#c9be17ca2bdfdbd134077ffd9bbaa48b8becd298" dependencies: @@ -5461,7 +5608,7 @@ has-yarn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" -has@^1.0.1: +has@^1.0.1, has@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" dependencies: @@ -5563,7 +5710,7 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.1: +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: @@ -5648,16 +5795,7 @@ http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" -http-errors@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" - dependencies: - depd "1.1.0" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-errors@^1.3.0, http-errors@~1.6.1, http-errors@~1.6.2: +http-errors@1.6.2, http-errors@^1.3.0, http-errors@~1.6.1, http-errors@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" dependencies: @@ -5829,6 +5967,25 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inquirer@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + external-editor "^1.1.0" + figures "^1.3.5" + lodash "^4.3.0" + mute-stream "0.0.6" + pinkie-promise "^2.0.0" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + inquirer@3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.1.tgz#06ceb0f540f45ca548c17d6840959878265fa175" @@ -6024,7 +6181,7 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" -is-function@^1.0.1: +is-function@^1.0.1, is-function@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" @@ -6200,6 +6357,10 @@ is-whitespace-character@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b" +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + is-windows@^1.0.0, is-windows@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" @@ -6875,8 +7036,8 @@ joi@8.1.x: topo "2.x.x" joyent-ui-toolkit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/joyent-ui-toolkit/-/joyent-ui-toolkit-1.2.0.tgz#f59c169ad06cfd89615f562866382f9fd161be3f" + version "1.2.1" + resolved "https://registry.yarnpkg.com/joyent-ui-toolkit/-/joyent-ui-toolkit-1.2.1.tgz#b2cbdffc64f8f1ce52ee5fed2bc78151cc6bfbf9" dependencies: babel-cli "^6.26.0" babel-generator "^6.26.0" @@ -7217,7 +7378,7 @@ ldjson-stream@^1.2.1: lerna-wizard@ramitos/lerna-wizard#7bcdc11: version "1.0.9" - resolved "https://codeload.github.com/ramitos/lerna-wizard/tar.gz/7bcdc11838452cbc5450aba05dffe033efebcdf1" + resolved "https://codeload.github.com/ramitos/lerna-wizard/tar.gz/7bcdc11" dependencies: babel-polyfill "^6.23.0" execa "^0.6.3" @@ -7533,6 +7694,10 @@ lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" +lodash.map@^4.5.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -7582,6 +7747,10 @@ lodash.uniqby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" +lodash@4.17.2: + version "4.17.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" + lodash@4.17.4, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.1.0, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.7.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -7810,7 +7979,7 @@ merge-source-map@^1.0.2: dependencies: source-map "^0.5.6" -merge@^1.1.3: +merge@^1.1.3, merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -7818,7 +7987,7 @@ methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -7904,14 +8073,14 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -8006,6 +8175,10 @@ multimatch@^2.0.0, multimatch@^2.1.0: arrify "^1.0.0" minimatch "^3.0.0" +mute-stream@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" + mute-stream@0.0.7, mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -8104,8 +8277,8 @@ node-dir@^0.1.10: minimatch "^3.0.2" node-fetch@^1.0.1, node-fetch@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.2.tgz#c54e9aac57e432875233525f3c891c4159ffefd7" + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" dependencies: encoding "^0.1.11" is-stream "^1.0.1" @@ -8156,8 +8329,8 @@ node-notifier@^5.0.2: which "^1.2.12" node-pre-gyp@^0.6.36: - version "0.6.36" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" + version "0.6.37" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.37.tgz#3c872b236b2e266e4140578fe1ee88f693323a05" dependencies: mkdirp "^0.5.1" nopt "^4.0.1" @@ -8166,6 +8339,7 @@ node-pre-gyp@^0.6.36: request "^2.81.0" rimraf "^2.6.1" semver "^5.3.0" + tape "^4.6.3" tar "^2.2.1" tar-pack "^3.4.0" @@ -8335,6 +8509,10 @@ object-hash@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c" +object-inspect@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.3.0.tgz#5b1eb8e6742e2ee83342a637034d844928ba2f6d" + object-keys@^1.0.6, object-keys@^1.0.7, object-keys@^1.0.8, object-keys@^1.0.9: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -8387,6 +8565,10 @@ onecolor@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494" +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -8473,6 +8655,10 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" +os-shim@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -8557,6 +8743,12 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +pad-right@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" + dependencies: + repeat-string "^1.5.2" + pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -8657,7 +8849,7 @@ path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" -path-exists@^2.0.0: +path-exists@2.1.0, path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" dependencies: @@ -9486,11 +9678,11 @@ range-parser@^1.0.3, range-parser@~1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" raw-body@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.0.tgz#f79ce1acacaba5b6362d33454d785d7129f4bc67" + version "2.3.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.1.tgz#30f95e2a67a14e2e4413d8d51fdd92c877e8f2ed" dependencies: - bytes "2.5.0" - http-errors "1.6.1" + bytes "3.0.0" + http-errors "1.6.2" iconv-lite "0.4.18" unpipe "1.0.0" @@ -10006,6 +10198,12 @@ recast@0.12.6, recast@^0.12.6: private "~0.1.5" source-map "~0.5.0" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + recursive-readdir@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" @@ -10390,6 +10588,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + resolve-dir@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -10421,7 +10626,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2, resolve@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: @@ -10462,6 +10667,13 @@ restify-errors@^3.1.0: lodash "^3.10.1" verror "^1.6.0" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -10469,6 +10681,12 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + dependencies: + through "~2.3.4" + retext-equality@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/retext-equality/-/retext-equality-3.2.0.tgz#65d20ed4958e977814c9e60cc3dbe741b36b9b35" @@ -10568,6 +10786,10 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" +right-pad@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" + rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" @@ -10647,6 +10869,10 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -10819,6 +11045,14 @@ shell-quote@1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" +shelljs@0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -11014,6 +11248,13 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" +spawn-sync@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" + dependencies: + concat-stream "^1.4.7" + os-shim "^0.1.2" + spawn-wrap@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" @@ -11249,6 +11490,14 @@ string-width@^2.0.0, string-width@^2.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.trim@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -11324,7 +11573,7 @@ strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" -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" @@ -11439,7 +11688,7 @@ stylelint-processor-styled-components@^0.4.0: stylelint-processor-styled-components@styled-components/stylelint-processor-styled-components#2a33b5f: version "0.2.1" - resolved "https://codeload.github.com/styled-components/stylelint-processor-styled-components/tar.gz/2a33b5ffbaef51a37266e6c2097a50141944667a" + resolved "https://codeload.github.com/styled-components/stylelint-processor-styled-components/tar.gz/2a33b5f" dependencies: babel-traverse "^6.16.0" babylon "^6.12.0" @@ -11711,6 +11960,24 @@ tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" +tape@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.8.0.tgz#f6a9fec41cc50a1de50fa33603ab580991f6068e" + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.2" + function-bind "~1.1.0" + glob "~7.1.2" + has "~1.0.1" + inherits "~2.0.3" + minimist "~1.2.0" + object-inspect "~1.3.0" + resolve "~1.4.0" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + tar-fs@~1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.12.0.tgz#a6a80553d8a54c73de1d0ae0e79de77035605e1d" @@ -11849,7 +12116,7 @@ through2@^2.0.0, through2@^2.0.2, through2@~2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -11899,6 +12166,12 @@ title-case@^2.1.1: no-case "^2.2.0" upper-case "^1.0.3" +tmp@^0.0.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + dependencies: + os-tmpdir "~1.0.1" + tmp@^0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" @@ -12802,6 +13075,10 @@ window-size@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" +word-wrap@^1.0.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"