From e2e606974914881d8905f1a57b3636eb67e5e5d7 Mon Sep 17 00:00:00 2001 From: Sara Vieira Date: Fri, 8 Sep 2017 10:38:32 +0100 Subject: [PATCH] feat(my-joyent): Adds boilerplate for my joyent Create starting boilerplate for my joyent prototype --- packages/my-joyent/.babelrc | 9 + packages/my-joyent/.dockerignore | 9 + packages/my-joyent/.eslintignore | 4 + packages/my-joyent/.eslintrc | 11 + packages/my-joyent/.gitignore | 18 + packages/my-joyent/.stylelintrc | 8 + packages/my-joyent/.tern-project | 15 + packages/my-joyent/CHANGELOG.md | 4 + packages/my-joyent/Dockerfile | 19 + packages/my-joyent/README.md | 21 + packages/my-joyent/package.json | 75 ++++ packages/my-joyent/public/favicon.ico | Bin 0 -> 24838 bytes packages/my-joyent/public/index.html | 22 + .../my-joyent/scripts/patch-webpack-config.js | 120 ++++++ packages/my-joyent/scripts/postinstall.js | 41 ++ .../my-joyent/scripts/webpack.config.dev.js | 4 + .../my-joyent/scripts/webpack.config.prod.js | 4 + packages/my-joyent/src/app.js | 26 ++ packages/my-joyent/src/assets/triton_logo.png | Bin 0 -> 5766 bytes .../my-joyent/src/assets/triton_logo_dark.png | Bin 0 -> 19878 bytes .../__snapshots__/container.spec.js.snap | 38 ++ .../layout/__tests__/container.spec.js | 14 + .../src/components/layout/container.js | 20 + .../my-joyent/src/components/layout/index.js | 1 + .../__snapshots__/header.spec.js.snap | 140 +++++++ .../__snapshots__/not-found.spec.js.snap | 345 ++++++++++++++++ .../navigation/__tests__/header.spec.js | 21 + .../navigation/__tests__/not-found.spec.js | 21 + .../src/components/navigation/header.js | 24 ++ .../src/components/navigation/index.js | 2 + .../src/components/navigation/not-found.js | 45 ++ .../__snapshots__/index.spec.js.snap | 40 ++ .../containers/home/__tests__/index.spec.js | 14 + .../my-joyent/src/containers/home/index.js | 8 + .../__snapshots__/header.spec.js.snap | 140 +++++++ .../__snapshots__/not-found-hoc.spec.js.snap | 3 + .../navigation/__tests__/header.spec.js | 21 + .../__tests__/not-found-hoc.spec.js | 14 + .../src/containers/navigation/header.js | 7 + .../src/containers/navigation/index.js | 2 + .../containers/navigation/not-found-hoc.js | 20 + packages/my-joyent/src/graphql/Example.gql | 11 + packages/my-joyent/src/index.js | 5 + packages/my-joyent/src/router.js | 30 ++ packages/my-joyent/src/state/state.js | 3 + packages/my-joyent/src/state/store.js | 58 +++ packages/my-joyent/test/file-mock.js | 1 + packages/my-joyent/test/mocks/index.js | 3 + packages/my-joyent/test/mocks/router.js | 4 + packages/my-joyent/test/mocks/store.js | 9 + packages/my-joyent/test/mocks/theme.js | 7 + packages/my-joyent/test/run | 66 +++ scripts/format | 3 +- scripts/run-staged-pkg | 11 +- yarn.lock | 387 +++++++++++++++--- 55 files changed, 1889 insertions(+), 59 deletions(-) create mode 100644 packages/my-joyent/.babelrc create mode 100644 packages/my-joyent/.dockerignore create mode 100644 packages/my-joyent/.eslintignore create mode 100644 packages/my-joyent/.eslintrc create mode 100644 packages/my-joyent/.gitignore create mode 100644 packages/my-joyent/.stylelintrc create mode 100644 packages/my-joyent/.tern-project create mode 100644 packages/my-joyent/CHANGELOG.md create mode 100644 packages/my-joyent/Dockerfile create mode 100644 packages/my-joyent/README.md create mode 100644 packages/my-joyent/package.json create mode 100644 packages/my-joyent/public/favicon.ico create mode 100644 packages/my-joyent/public/index.html create mode 100644 packages/my-joyent/scripts/patch-webpack-config.js create mode 100644 packages/my-joyent/scripts/postinstall.js create mode 100644 packages/my-joyent/scripts/webpack.config.dev.js create mode 100644 packages/my-joyent/scripts/webpack.config.prod.js create mode 100644 packages/my-joyent/src/app.js create mode 100644 packages/my-joyent/src/assets/triton_logo.png create mode 100644 packages/my-joyent/src/assets/triton_logo_dark.png create mode 100644 packages/my-joyent/src/components/layout/__tests__/__snapshots__/container.spec.js.snap create mode 100644 packages/my-joyent/src/components/layout/__tests__/container.spec.js create mode 100644 packages/my-joyent/src/components/layout/container.js create mode 100644 packages/my-joyent/src/components/layout/index.js create mode 100644 packages/my-joyent/src/components/navigation/__tests__/__snapshots__/header.spec.js.snap create mode 100644 packages/my-joyent/src/components/navigation/__tests__/__snapshots__/not-found.spec.js.snap create mode 100644 packages/my-joyent/src/components/navigation/__tests__/header.spec.js create mode 100644 packages/my-joyent/src/components/navigation/__tests__/not-found.spec.js create mode 100644 packages/my-joyent/src/components/navigation/header.js create mode 100644 packages/my-joyent/src/components/navigation/index.js create mode 100644 packages/my-joyent/src/components/navigation/not-found.js create mode 100644 packages/my-joyent/src/containers/home/__tests__/__snapshots__/index.spec.js.snap create mode 100644 packages/my-joyent/src/containers/home/__tests__/index.spec.js create mode 100644 packages/my-joyent/src/containers/home/index.js create mode 100644 packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/header.spec.js.snap create mode 100644 packages/my-joyent/src/containers/navigation/__tests__/__snapshots__/not-found-hoc.spec.js.snap create mode 100644 packages/my-joyent/src/containers/navigation/__tests__/header.spec.js create mode 100644 packages/my-joyent/src/containers/navigation/__tests__/not-found-hoc.spec.js create mode 100644 packages/my-joyent/src/containers/navigation/header.js create mode 100644 packages/my-joyent/src/containers/navigation/index.js create mode 100644 packages/my-joyent/src/containers/navigation/not-found-hoc.js create mode 100644 packages/my-joyent/src/graphql/Example.gql create mode 100644 packages/my-joyent/src/index.js create mode 100644 packages/my-joyent/src/router.js create mode 100644 packages/my-joyent/src/state/state.js create mode 100644 packages/my-joyent/src/state/store.js create mode 100644 packages/my-joyent/test/file-mock.js create mode 100644 packages/my-joyent/test/mocks/index.js create mode 100644 packages/my-joyent/test/mocks/router.js create mode 100644 packages/my-joyent/test/mocks/store.js create mode 100644 packages/my-joyent/test/mocks/theme.js create mode 100755 packages/my-joyent/test/run 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 0000000000000000000000000000000000000000..5c125de5d897c1ff5692a656485b3216123dcd89 GIT binary patch literal 24838 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 + + + + + + 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 0000000000000000000000000000000000000000..666fe0fe39d45b3068d74503b5d855eafc35f833 GIT binary patch literal 5766 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..53aa24f808461dd246b3cde0c9f7a1d92cd03a81 GIT binary patch literal 19878 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 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"