diff --git a/.gitignore b/.gitignore index e7649391d..d05f5f2d1 100644 --- a/.gitignore +++ b/.gitignore @@ -117,3 +117,4 @@ $RECYCLE.BIN/ # Others data/ .next/ +out/ diff --git a/.travis.yml b/.travis.yml index 6b32a58f1..3934f143c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,21 @@ sudo: required dist: trusty language: node_js node_js: - - "7.7" + - '8.6' before_install: - - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.27.5 - - export PATH="$HOME/.yarn/bin:$PATH" + - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.27.5' + - 'export PATH="$HOME/.yarn/bin:$PATH"' cache: yarn +after_script: + - >- + yarn export && cd out && NOW_ALIAS=coderplex-app.now.sh node + ../scripts/now.js -p +branches: + only: + - master +env: + global: + - secure: >- + nDYIe5Cw1FgD1Iqv2FKRG5Q6Jvvml4ovKPjMRD3BBWinPHe6xbZGtPi0P/Jqt6PFmu5o3aiWQO4ffYnFYUW8N8Tu86RMr0sLQ7Sv6MiE0JxL+7Y+VBZ9h1i9MARiTFQRUw9lrToNa13bnuGy5YNfx4nVUo63vluRTCW6AZd0h01tgEjbhTAamWf1z/n26ACMNJSr2iQ7coakLwpsQvdXMcUe5tAduzoQtLb8DiXdbXO+D7Oepl4dQvOfosa14wW5Z6MN6Y/AxxJ246Cngm3hgZF7IpLCD49H7shXHHSaIcYkJtnSRozKSBEdz34+Jqw+278vcWOA4n2advAhWd2oCAUa0drmu8Nu2Obtrx4oAUQhDwBxfQhbmXpen2Ry5DKp86AurTxgXc+n6bPfjwGdjha2u6cd1fCwpTu5pgnOeX101U/Bu68tAz/EIErCDxHDW/WyrBkVKG3rkABjv3pse4ZJuMy3eeKp+8o2P29b77GHxhKdEw4SvZSfdfnVooABcC6p/sqcumuTvJn20AZkBdhuxGDYSEfNecKPAEHRV8nUQUbMVT7bImQAgl4O4QhHcOfrthbNnQJM94DX0Z2xRQ5sdRmzhe4Ob771EUByNdMO7k2O1KsJAWQ78KhTdOJKoiIp2sH9zRGCTjnTIoCDJx4zBTGHpqV0+R4ltth7T4Q= + - secure: >- + Gj+PgZbNTBJ4C/5WZPjMicUWYJCt+gVnuDNjJCyahqFOOHvTowl3WKoeRwxSf/it9xqW/su6JrehgQixn0OVhkVWL8FVgs5TCvFtFBdYTHTrPIi+2T0sulp/NscsDG2hh3d6WD+AnC4u5QtRkTuh7IZEpLkRTHBwedRhfjvPOQaaT5wZCVMiPrscRhsNHJ4pTl2lEyU0BaLCxWkuAysWw5i7ZhxwtDNZroDuyIqhtJbJIXD9DkPQOuekJGyk+hqXJ7EdtHudltnh4M3Q44799k6n0NQIhjmkF5IZHnZVCKrZh+L0I/xyLU1WbY1uU4fShneryziFzKSAuDobmMC/z/kq/apSbPWuILeY5IMR/33NCz4dcb1bJG5IwCo35NHrqwfxElCkX9L1IyodCVXnZbC5jmwbbqyFHIPlmIUGhRxQyebZrXVGbJe8gHx4aMLpWeDrKL2PqbPOZkwfdDX/sbxhLjChUF6Pr9xFSQ12K/k17peE7KtpHpeIzDs2W0suQlm+/yH9auqUKXrrPp63U61gEY5TQzvBoUa7eTCOxdhTJqFhQw6DmFNDT2Qv06XiSbRt+L+N/EHQDljOADaw+0Z8LbOWa90l8klLIgsNvy8mzPx+kFieLeSh5ShlTguvNBQBK+bsLigc1/5Q3B62HEqLzY8piw+X4SLaHvdTeK8= diff --git a/components/header.js b/components/header.js index 909d3f8b4..5951ba474 100644 --- a/components/header.js +++ b/components/header.js @@ -3,9 +3,7 @@ import Headroom from 'react-headroom'; import NProgress from 'nprogress'; import Router from 'next/router'; import Link from 'next/link'; -import { Dropdown } from 'semantic-ui-react'; -import { logout } from '../utils/authenticate'; import GlobalStyles from './global-styles'; import Head from './head'; @@ -30,36 +28,29 @@ export default props => { { title: 'Home', path: '/', + external: false, }, { title: 'Events', path: '/events', + external: false, }, { title: 'Learn', path: '/learn', + external: false, }, { title: 'Space', path: '/space', - }, - { - title: 'Jobs', - path: '/jobs', - }, - { - title: 'Projects', - path: '/projects', + external: false, }, { title: 'Blog', - path: 'https://medium.com/freecodecamp-hyderabad', - }, - { - title: 'Login/Register', - path: '/login', + path: 'https://medium.com/coderplex', + external: true, }, - ].filter(item => (props.username ? item.path !== '/login' : true)); + ]; return (
@@ -73,17 +64,13 @@ export default props => { @@ -180,19 +147,6 @@ export default props => { border-bottom: 2px solid #314159; pointer-events: none; } - .login__btn .nav__link { - font-weight: bold; - color: #00df90; - } - .login__btn .nav__link:hover { - font-weight: bold; - color: #01bf7c; - } - .login__btn .nav__link--active { - color: #01bf7c; - border-bottom: 2px solid #00df90; - pointer-events: none; - } @media (max-width: 700px) { nav { justify-content: center; diff --git a/components/row-events.js b/components/row-events.js index ff99ac922..6a3ae1bca 100644 --- a/components/row-events.js +++ b/components/row-events.js @@ -1,6 +1,6 @@ import React from 'react'; import { Card, Icon } from 'semantic-ui-react'; -import moment from 'moment'; +import format from 'date-fns/format'; const RowEvent = props => { return ( @@ -16,7 +16,7 @@ const RowEvent = props => { - {moment(props.time).format("h:mm A, ddd MMM Do 'YY")} + {format(props.time, "h:mm A, ddd MMM Do 'YY")} diff --git a/hocs/public-page.js b/hocs/public-page.js index 59252aa12..f03453572 100644 --- a/hocs/public-page.js +++ b/hocs/public-page.js @@ -1,42 +1,16 @@ import React from 'react'; -import redirect from '../utils/redirect'; -import { authenticate } from '../utils/authenticate'; import Header from '../components/header'; import Footer from '../components/footer'; export default Page => { return class PublicPage extends React.Component { static async getInitialProps(ctx) { - let authData; let initialProps = {}; - const pathName = ctx.req ? ctx.req.url : ctx.pathname; - if (ctx.req && ctx.req.user) { - authData = ctx.req.user; - } else { - try { - authData = await authenticate(ctx); - } catch (err) { - console.error(err); - if (Page.getInitialProps) { - initialProps = await Page.getInitialProps(ctx); - } - return { ...initialProps }; - } - } - - if (authData) { - if (pathName === '/login') { - return redirect(ctx, '/profile'); - } - } if (Page.getInitialProps) { initialProps = await Page.getInitialProps(ctx); } - if (!authData) { - return { ...initialProps }; - } - return { ...authData, ...initialProps }; + return { ...initialProps }; } render() { return ( diff --git a/hocs/secret-page.js b/hocs/secret-page.js deleted file mode 100644 index 27feeef6f..000000000 --- a/hocs/secret-page.js +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; - -import redirect from '../utils/redirect'; -import { authenticate } from '../utils/authenticate'; -import Header from '../components/header'; -import Footer from '../components/footer'; - -export default Page => { - return class SecretPage extends React.Component { - static async getInitialProps(ctx) { - let authData; - let initialProps = {}; - const pathName = ctx.req ? ctx.req.url : ctx.pathname; - if (ctx.req && ctx.req.user) { - authData = ctx.req.user; - } else { - try { - authData = await authenticate(ctx); - } catch (err) { - console.log(err); - return redirect(ctx); - } - } - if ( - pathName === '/profile' && - authData.interestedTechnologies.length === 0 - ) { - return redirect(ctx, '/profile/new'); - } - if (!authData) { - if (pathName === '/login') { - if (Page.getInitialProps) { - initialProps = await Page.getInitialProps(...ctx); - } - return { ...initialProps }; - } - return redirect(ctx); - } - if (Page.getInitialProps) { - initialProps = await Page.getInitialProps({ ...ctx }); - } - return { ...authData, ...initialProps }; - } - render() { - return ( -
-
- -
-
- ); - } - }; -}; diff --git a/next.config.js b/next.config.js index 33283c586..2976dced7 100644 --- a/next.config.js +++ b/next.config.js @@ -4,12 +4,6 @@ module.exports = { webpack: (config, { dev }) => { /* Enable only in Production */ if (!dev) { - // Preact - console.log('> Using Preact instead of React'); - config.resolve.alias = { - react: 'preact-compat/dist/preact-compat', - 'react-dom': 'preact-compat/dist/preact-compat', - }; if (ANALYZE) { const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); config.plugins.push( @@ -23,4 +17,12 @@ module.exports = { } return config; }, + exportPathMap() { + return { + '/': { page: '/' }, + '/events': { page: '/events' }, + '/learn': { page: '/learn' }, + '/space': { page: '/space' }, + }; + }, }; diff --git a/package.json b/package.json index bf2e234a3..d171d6542 100644 --- a/package.json +++ b/package.json @@ -5,35 +5,26 @@ "main": "index.js", "scripts": { "test": "xo", - "lint": "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix", + "lint": + "prettier 'utils/**/*.js' 'components/**/*.js' 'pages/**/*.js' 'lib/**/*.js' 'hocs/**/*.js' '*.js' --write --single-quote --print-width='80' --trailing-comma='all' && xo --fix", "precommit": "lint-staged", "analyze": "cross-env ANALYZE=1 next build", - "dev": "cross-env NODE_ENV=development nodemon server.js -w server.js", - "dev:with-api": "cross-env WITH_API=1 nodemon server.js -w server.js", - "start": "cross-env NODE_ENV=production node server", + "dev": "cross-env NODE_ENV=development next", + "start": "cross-env NODE_ENV=production next start", "build": "next build", - "heroku-postbuild": "next build" + "export": "cross-env NODE_ENV=production yarn build && next export" }, "xo": { "parser": "babel-eslint", - "extends": [ - "prettier", - "prettier/react", - "plugin:react/recommended" - ], - "env": [ - "browser", - "node" - ], + "extends": ["prettier", "prettier/react", "plugin:react/recommended"], + "env": ["browser", "node"], "rules": { "linebreak-style": 0, "react/display-name": 0, "react/prop-types": 0 }, "space:": 2, - "ignores": [ - "next.config.js" - ] + "ignores": ["next.config.js"] }, "lint-staged": { "*.js": [ @@ -44,22 +35,13 @@ }, "keywords": [], "author": "Vinay Puppal (https://www.vinaypuppal.com/)", - "license": "MIT", + "license": "BSD", "dependencies": { - "axios": "^0.16.2", - "cookie-parser": "^1.4.3", - "express": "^4.15.3", - "feathers": "^2.1.7", - "feathers-authentication-client": "^0.3.3", - "feathers-hooks": "^2.0.2", + "date-fns": "1.29.0", "feathers-rest": "^1.8.0", - "isomorphic-unfetch": "^2.0.0", - "js-cookie": "^2.1.4", - "moment": "^2.19.1", + "isomorphic-unfetch": "2.0.0", "next": "^4.1.0", "nprogress": "^0.2.0", - "preact": "^8.2.1", - "preact-compat": "^3.16.0", "prop-types": "^15.5.10", "react": "^16.0.0", "react-count-down": "^1.1.0", @@ -74,13 +56,19 @@ "babel-eslint": "^7.2.3", "babel-plugin-lodash": "^3.2.11", "cross-env": "^5.0.2", + "cross-spawn": "5.1.0", "eslint-config-prettier": "^2.3.0", "eslint-plugin-react": "^7.1.0", "husky": "^0.14.3", "lint-staged": "^4.0.2", - "nodemon": "^1.11.0", + "normalize-url": "1.9.1", + "now": "8.3.10", + "octonode": "0.9.1", "prettier": "^1.7.0", + "travis-after-all": "1.4.5", + "url-regex": "4.1.1", "webpack-bundle-analyzer": "^2.8.3", - "xo": "^0.18.2" + "xo": "^0.18.2", + "yargs": "9.0.1" } } diff --git a/pages/events.js b/pages/events.js index e8801caad..4643fcf8b 100644 --- a/pages/events.js +++ b/pages/events.js @@ -1,6 +1,6 @@ import React from 'react'; -import axios from 'axios'; -import { Card } from 'semantic-ui-react'; +import fetch from 'isomorphic-unfetch'; +import { Card, Divider, Dimmer, Loader } from 'semantic-ui-react'; import publicPage from '../hocs/public-page'; import { @@ -10,102 +10,137 @@ import { } from '../utils/urls'; import RowEvent from '../components/row-events'; -export default publicPage( - class Events extends React.Component { - static async getInitialProps() { - try { - const requestPastEvents = await axios.get( - `${reverseProxyCORS}${pastEventsMeetupURL}`, - ); - const requestFutureEvents = await axios.get( - `${reverseProxyCORS}${futureEventsMeetupURL}`, - ); - return { - pastEvents: requestPastEvents.data, - futureEvents: requestFutureEvents.data, - }; - } catch (err) { - return { - pastEvents: 'err', - futureEvents: 'err', - }; - } +class Events extends React.Component { + state = { + pastEvents: null, + futureEvents: null, + fetchError: null, + loading: true, + }; + async componentDidMount() { + try { + const pastEvents = await fetch( + `${reverseProxyCORS}${pastEventsMeetupURL}`, + ).then(res => { + if (res.ok) return res.json(); + throw new Error('Failed to Retrieve Events'); + }); + const futureEvents = await fetch( + `${reverseProxyCORS}${futureEventsMeetupURL}`, + ).then(res => { + if (res.ok) return res.json(); + throw new Error('Failed to Retrieve Events'); + }); + await this.setState({ + pastEvents, + futureEvents, + fetchError: null, + loading: false, + }); + } catch (err) { + console.log(err); + await this.setState({ + pastEvents: null, + futureEvents: null, + fetchError: err.message, + loading: false, + }); } - - render() { - return ( -
-
-

Events

-

Because you cannot change the world alone

+ } + renderEvents() { + if (this.state.fetchError) { + return
{this.state.fetchError}
; + } + return ( +
+
+

Upcoming events

+
+ {this.state.futureEvents.map(event => ( + + + + ))} +
+
+ +
+

Recent events

+
+ {this.state.pastEvents.map(event => ( + + + + ))}
-
- {this.props.pastEvents !== 'err' && - this.props.futureEvents !== 'err' ? ( -
-

Upcoming events

-
- {this.props.futureEvents.map(event => ( - - - - ))} -
-

Recent events

-
- {this.props.pastEvents.map(event => ( - - - - ))} -
-
- ) : ( -
Failed to Retrieve Events
- )} -
- +
+ +
+ ); + } + render() { + return ( +
+
+

Events

+

Because you cannot change the world alone

- ); - } - }, -); +
+ {this.state.loading ? ( + + Fetching Events + + ) : ( + this.renderEvents() + )} +
+ +
+ ); + } +} + +export default publicPage(Events); diff --git a/pages/index.js b/pages/index.js index 3ba396670..4023f81ca 100644 --- a/pages/index.js +++ b/pages/index.js @@ -22,7 +22,11 @@ class Home extends React.Component { } .about__container { max-width: 1280px; + min-height: calc(100vh - 260px); margin: 0 auto; + display: flex; + justify-content: center; + align-items: center; } .about__content img { width: 100%; diff --git a/pages/jobs/index.js b/pages/jobs/index.js deleted file mode 100644 index 7ff3d1dcc..000000000 --- a/pages/jobs/index.js +++ /dev/null @@ -1,383 +0,0 @@ -import React from 'react'; -import Link from 'next/link'; -import { Input, Dropdown, Button, Header, Icon } from 'semantic-ui-react'; -import FaBuilding from 'react-icons/lib/fa/building'; -import FaLocation from 'react-icons/lib/fa/map-marker'; -// Import FaArrowRight from 'react-icons/lib/fa/angle-right' - -import publicPage from '../../hocs/public-page'; -import { client as feathersClient } from '../../utils/feathers-client'; -import truncateString from '../../utils'; - -const _jobTypes = ['FullTime', 'PartTime', 'Remote', 'Consulting', 'Freelance']; - -const jobTypes = _jobTypes.map(type => ({ - key: type, - text: type, - value: type, -})); - -const technologies = [ - { key: 'all', text: 'All', value: 'all' }, - { key: 'angular', text: 'Angular', value: 'angular' }, - { key: 'css', text: 'CSS', value: 'css' }, - { key: 'design', text: 'Graphic Design', value: 'design' }, - { key: 'ember', text: 'Ember', value: 'ember' }, - { key: 'html', text: 'HTML', value: 'html' }, - { key: 'ia', text: 'Information Architecture', value: 'ia' }, - { key: 'javascript', text: 'Javascript', value: 'javascript' }, - { key: 'meteor', text: 'Meteor', value: 'meteor' }, - { key: 'node', text: 'NodeJS', value: 'node' }, - { key: 'python', text: 'Python', value: 'python' }, - { key: 'rails', text: 'Rails', value: 'rails' }, - { key: 'react', text: 'React', value: 'react' }, - { key: 'ruby', text: 'Ruby', value: 'ruby' }, - { key: 'ui', text: 'UI Design', value: 'ui' }, - { key: 'ux', text: 'User Experience', value: 'ux' }, -]; - -const Jobs = props => ( -
-
-
-

Find your next job

-

Imagine what you could be working on.

-
- -
-
-
-
- - - -
- - - - Show me jobs by - {' '} - {' '} - technologie/s and {' '} - {' '} - jobs - -
-
-
-
-
- {props.jobs.map(job => { - return ( -
-

{job.title}

- -
- {truncateString(job.description, 100)} -
-
    - {job.requiredTechnologies.map(skill => ( -
  • {skill}
  • - ))} -
-
-
{job.jobType}
-
- {typeof job.payScale === 'string' - ? `${job.payScale}` - : `$ ${Math.floor( - job.payScale.from, - )}k to ${Math.floor(job.payScale.to)}k`} -
- - More Details - -
-
- ); - })} -
- {/*
- - View More - -
*/} -
-
-
-
- -
-); - -Jobs.getInitialProps = async () => { - const jobs = await feathersClient - .service('jobs') - .find({ - query: { - $sort: { - createdAt: -1, - }, - }, - }) - .then(res => res.data); - return { jobs }; -}; - -export default publicPage(Jobs); diff --git a/pages/jobs/new.js b/pages/jobs/new.js deleted file mode 100644 index 103303b17..000000000 --- a/pages/jobs/new.js +++ /dev/null @@ -1,377 +0,0 @@ -import React from 'react'; -import Router from 'next/router'; -import { - Container, - Message, - Form, - Grid, - Input, - TextArea, - Select, - Dropdown, -} from 'semantic-ui-react'; - -import secretPage from '../../hocs/secret-page'; -import { client as feathersClient } from '../../utils/feathers-client'; - -const _jobTypes = ['FullTime', 'PartTime', 'Remote', 'Consulting', 'Freelance']; - -const jobTypes = _jobTypes.map(type => ({ - key: type, - text: type, - value: type, -})); - -const technologies = [ - { key: 'angular', text: 'Angular', value: 'angular' }, - { key: 'css', text: 'CSS', value: 'css' }, - { key: 'design', text: 'Graphic Design', value: 'design' }, - { key: 'ember', text: 'Ember', value: 'ember' }, - { key: 'html', text: 'HTML', value: 'html' }, - { key: 'ia', text: 'Information Architecture', value: 'ia' }, - { key: 'javascript', text: 'Javascript', value: 'javascript' }, - { key: 'meteor', text: 'Meteor', value: 'meteor' }, - { key: 'node', text: 'NodeJS', value: 'node' }, - { key: 'python', text: 'Python', value: 'python' }, - { key: 'rails', text: 'Rails', value: 'rails' }, - { key: 'react', text: 'React', value: 'react' }, - { key: 'ruby', text: 'Ruby', value: 'ruby' }, - { key: 'ui', text: 'UI Design', value: 'ui' }, - { key: 'ux', text: 'User Experience', value: 'ux' }, -]; - -class PostJob extends React.Component { - state = { - title: '', - description: '', - payScale: '', - jobType: '', - technologies, - requiredTechnologies: [], - companyName: '', - companyLocation: '', - companyWebsite: '', - companyEmail: '', - errors: [], - errorMessage: '', - loading: false, - }; - handelForm = e => { - e.preventDefault(); - const { - title, - description, - payScale, - jobType, - requiredTechnologies, - companyName, - companyLocation, - companyWebsite, - companyEmail, - } = this.state; - if (!title) { - this.setState({ - errors: ['title'], - }); - return; - } - if (!description) { - this.setState({ - errors: ['description'], - }); - return; - } - if (!jobType) { - this.setState({ - errors: ['jobType'], - }); - return; - } - if (!payScale) { - this.setState({ - errors: ['payScale'], - }); - return; - } - if (requiredTechnologies.length === 0) { - this.setState({ - errors: ['requiredTechnologies'], - }); - return; - } - if (!companyName) { - this.setState({ - errors: ['companyName'], - }); - return; - } - if (!companyWebsite) { - this.setState({ - errors: ['companyWebsite'], - }); - return; - } - if (!companyEmail) { - this.setState({ - errors: ['companyEmail'], - }); - return; - } - if (!companyLocation) { - this.setState({ - errors: ['companyLocation'], - }); - return; - } - this.setState({ loading: true }); - const companyDetails = { - name: companyName, - location: companyLocation, - website: companyWebsite, - email: companyEmail, - }; - feathersClient - .service('jobs') - .create({ - title, - description, - payScale, - jobType, - requiredTechnologies, - companyDetails, - }) - .then(job => { - console.log(job); - return Router.push('/jobs').then(() => { - this.setState({ - loading: false, - title: '', - description: '', - payScale: '', - jobType: '', - requiredTechnologies: '', - companyName: '', - companyLocation: '', - companyWebsite: '', - companyEmail: '', - }); - }); - }) - .catch(err => { - console.log(err); - this.setState({ - loading: false, - errors: [`${e.message}`], - errorMessage: e.message, - }); - }); - console.log('all don'); - }; - render() { - return ( -
-
- - - Hi, {this.props.username} :) -

Fill the below details to post new job opening

-
-
- - - - - this.setState({ title: e.target.value })} - /> - - - this.setState({ description: e.target.value })} - /> - - - this.setState({ jobType: data.value })} - /> - - - - this.setState({ requiredTechnologies: data.value })} - onAddItem={(e, { value }) => - this.setState({ - technologies: [ - { text: value, value, key: value }, - ...this.state.technologies, - ], - })} - /> - - - - - - this.setState({ payScale: e.target.value })} - /> - - - - this.setState({ companyName: e.target.value })} - /> - - - - this.setState({ companyLocation: e.target.value })} - /> - - - - this.setState({ companyWebsite: e.target.value })} - /> - - - - this.setState({ companyEmail: e.target.value })} - /> - - - - - {this.state.errors.length ? ( - - - Error:{' '} - {this.state.errorMessage || 'Fill the required * fields'} - - {!this.state.errorMessage && ( -

- {this.state.errors.join(',')} is/are - required fields -

- )} -
- ) : ( - '' - )} - - - Post Job - - -
-
-
- -
- ); - } -} - -export default secretPage(PostJob); diff --git a/pages/login.js b/pages/login.js deleted file mode 100644 index 02db74c6c..000000000 --- a/pages/login.js +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; -import { Button, Segment } from 'semantic-ui-react'; - -import { login } from '../utils/authenticate'; -import publicPage from '../hocs/public-page'; - -export default publicPage( - class Login extends React.Component { - state = { - githubLoading: false, - linkedinLoading: false, - }; - render() { - return ( -
-
- -

Welcome to coderplex

-

Please login to coderplex or create an account

-
-
-
-
-

Along with 300+ community members.

-
-
- -
- ); - } - }, -); diff --git a/pages/profile/edit.js b/pages/profile/edit.js deleted file mode 100644 index 024b21c90..000000000 --- a/pages/profile/edit.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; - -import Icon from '../../components/icon'; -import publicPage from '../../hocs/public-page'; - -export default publicPage(() => ( -
-
- -

Under Construction, Coming Soon!...

-
- -
-)); diff --git a/pages/profile/index.js b/pages/profile/index.js deleted file mode 100644 index 8070d0730..000000000 --- a/pages/profile/index.js +++ /dev/null @@ -1,196 +0,0 @@ -import React from 'react'; -import Link from 'next/link'; -import { Grid, Button, Image, Divider, Tab } from 'semantic-ui-react'; - -import secretPage from '../../hocs/secret-page'; -import Icon from '../../components/icon'; - -const TabsContent = [ - { - menuItem: 'Jobs', - render: () => ( - -
-

No Jobs Posted By You

- - - - -
- -
- ), - }, - { - menuItem: 'Projects', - render: () => ( - -
-

No Projects Found

- - - - -
- -
- ), - }, -]; - -const Profile = props => ( -
-
- - - - - - -

{props.displayName}

-

{props.bio}

-

- {props.profession} : - {props.company || 'Yes'} -

-

- From : {props.location || ''} -

-

- Interested Technologies : {' '} - {props.interestedTechnologies.join(', ')} -

-

- Familliar Technologies : {' '} - {props.familiarTechnologies.join(', ')} -

-
- - - - - -
- - - -
-
-
-
-
-
-
-
- -
-
-
-
-
- - - -
-
-
- -
-); - -export default secretPage(Profile); diff --git a/pages/profile/new.js b/pages/profile/new.js deleted file mode 100644 index 3dd925af1..000000000 --- a/pages/profile/new.js +++ /dev/null @@ -1,434 +0,0 @@ -import React from 'react'; -import Router from 'next/router'; -import { - Container, - Message, - Form, - Input, - Dropdown, - TextArea, - Select, - Grid, -} from 'semantic-ui-react'; - -import { client as feathersClient } from '../../utils/feathers-client'; -import secretPage from '../../hocs/secret-page'; - -const technologies = [ - { key: 'angular', text: 'Angular', value: 'angular' }, - { key: 'css', text: 'CSS', value: 'css' }, - { key: 'design', text: 'Graphic Design', value: 'design' }, - { key: 'ember', text: 'Ember', value: 'ember' }, - { key: 'html', text: 'HTML', value: 'html' }, - { key: 'ia', text: 'Information Architecture', value: 'ia' }, - { key: 'javascript', text: 'Javascript', value: 'javascript' }, - { key: 'meteor', text: 'Meteor', value: 'meteor' }, - { key: 'node', text: 'NodeJS', value: 'node' }, - { key: 'python', text: 'Python', value: 'python' }, - { key: 'rails', text: 'Rails', value: 'rails' }, - { key: 'react', text: 'React', value: 'react' }, - { key: 'ruby', text: 'Ruby', value: 'ruby' }, - { key: 'ui', text: 'UI Design', value: 'ui' }, - { key: 'ux', text: 'User Experience', value: 'ux' }, -]; - -const professionOptions = [ - { key: 's', text: 'Student', value: 'student' }, - { key: 'w', text: 'Working', value: 'working' }, - { key: 'h', text: 'Available For Hire', value: 'hirable' }, -]; - -class Profile extends React.Component { - state = { - displayName: '', - contactNumber: '', - bio: '', - profession: '', - company: '', - technologies, - interestedTechnologies: [], - familiarTechnologies: [], - github: '', - linkedin: '', - facebook: '', - codepen: '', - twitter: '', - blog: '', - discord: '', - errors: [], - loading: false, - }; - componentDidMount() { - this.setState({ - displayName: this.props.displayName || '', - contactNumber: this.props.contactNumber || '', - bio: this.props.bio || '', - profession: this.props.profession || '', - company: this.props.company || '', - interestedTechnologies: this.props.interestedTechnologies || [], - familiarTechnologies: this.props.familiarTechnologies || [], - github: this.props.socialLinks.github || '', - linkedin: this.props.socialLinks.linkedin || '', - facebook: this.props.socialLinks.facebook || '', - codepen: this.props.socialLinks.codepen || '', - twitter: this.props.socialLinks.twitter || '', - blog: this.props.socialLinks.blog || '', - discord: this.props.socialLinks.discord || '', - }); - } - handelForm = e => { - e.preventDefault(); - const { - displayName, - contactNumber, - bio, - profession, - company, - interestedTechnologies, - familiarTechnologies, - github, - linkedin, - facebook, - codepen, - twitter, - blog, - discord, - } = this.state; - console.log(this.state); - if (!displayName) { - this.setState({ - errors: ['displayName'], - }); - return; - } - if (!bio) { - this.setState({ - errors: ['bio'], - }); - return; - } - if (!profession) { - this.setState({ - errors: ['profession'], - }); - return; - } - if (profession === 'working' && !company) { - this.setState({ - errors: ['company'], - }); - return; - } - if (interestedTechnologies.length === 0) { - this.setState({ - errors: ['interestedTechnologies'], - }); - return; - } - this.setState({ loading: true }); - feathersClient - .service('users') - .patch(this.props._id, { - displayName, - contactNumber, - bio, - profession, - company, - interestedTechnologies, - familiarTechnologies, - socialLinks: { - github, - linkedin, - facebook, - codepen, - twitter, - blog, - discord, - }, - }) - .then(user => { - this.setState({ loading: false }); - console.log(user); - Router.push('/profile'); - }) - .catch(err => { - console.log(err); - this.setState({ loading: false }); - }); - console.log('all don'); - }; - render() { - return ( -
-
- - - Welcome {this.props.username} :) -

Complete rest of your profile details

-
-
- - - - - - this.setState({ displayName: e.target.value })} - /> - - this.setState({ bio: e.target.value })} - /> - - - this.setState({ profession: data.value })} - /> - - {this.state.profession === 'working' && ( - - - this.setState({ company: e.target.value })} - /> - - )} - - - this.setState({ interestedTechnologies: value })} - onAddItem={(e, { value }) => - this.setState({ - technologies: [ - { text: value, value, key: value }, - ...this.state.technologies, - ], - })} - /> - - - - this.setState({ familiarTechnologies: value })} - onAddItem={(e, { value }) => - this.setState({ - technologies: [ - { text: value, value, key: value }, - ...this.state.technologies, - ], - })} - /> - - - - - this.setState({ contactNumber: e.target.value })} - /> - - - this.setState({ github: e.target.value })} - icon="github" - iconPosition="left" - /> - - - - this.setState({ linkedin: e.target.value })} - /> - - - - this.setState({ facebook: e.target.value })} - /> - - - - this.setState({ twitter: e.target.value })} - /> - - - - this.setState({ codepen: e.target.value })} - /> - - - this.setState({ blog: e.target.value })} - /> - - - - this.setState({ discord: e.target.value })} - /> - - - - - {this.state.errors.length ? ( - - - Error: Fill the required * fields - -

- {this.state.errors.join(',')} is/are - required fields -

-
- ) : ( - '' - )} - - - Save - - -
-
-
- -
- ); - } -} -export default secretPage(Profile); diff --git a/pages/projects.js b/pages/projects.js deleted file mode 100644 index 579be93c6..000000000 --- a/pages/projects.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; - -import Icon from '../components/icon'; -import publicPage from '../hocs/public-page'; - -export default publicPage(() => ( -
-
- -

Under Construction, Coming Soon!...

-
- -
-)); diff --git a/scripts/now.js b/scripts/now.js new file mode 100644 index 000000000..159dad419 --- /dev/null +++ b/scripts/now.js @@ -0,0 +1,147 @@ +#! /usr/bin/env node +/* eslint-disable camelcase */ +const github = require('octonode'); +const normalizeUrl = require('normalize-url'); +const spawn = require('cross-spawn'); +const travisAfterAll = require('travis-after-all'); +const urlRegex = require('url-regex'); +const argv = require('yargs').argv; + +const nowCli = require.resolve('now/download/dist/now'); + +if (!process.env.CI || !process.env.TRAVIS) { + throw new Error('Could not detect Travis CI environment'); +} + +const githubToken = process.env.GH_TOKEN; +const nowToken = process.env.NOW_TOKEN; + +if (!githubToken) { + throw new Error('Missing required environment variable GH_TOKEN'); +} + +if (!nowToken) { + throw new Error('Missing required environment variable NOW_TOKEN'); +} + +console.log(process.env.TRAVIS_PULL_REQUEST); + +const client = github.client(githubToken); +const ghRepo = client.repo(process.env.TRAVIS_REPO_SLUG); +let ghPR; + +if (process.env.TRAVIS_PULL_REQUEST) { + ghPR = client.issue( + process.env.TRAVIS_REPO_SLUG, + process.env.TRAVIS_PULL_REQUEST, + ); +} + +function noop() {} + +function getUrl(content) { + const urls = content.match(urlRegex()) || []; + + return urls.map(url => normalizeUrl(url.trim().replace(/\.+$/, '')))[0]; +} + +function deploy(context, sha) { + ghRepo.status( + sha, + { + context, + state: 'pending', + description: `Δ Now ${context} deployment pending`, + }, + noop, + ); + + const args = [ + '--token', + nowToken, + '--team', + 'coderplex', + '--no-clipboard', + '-n', + 'coderplex-app', + ]; + const alias = context === 'production' && process.env.NOW_ALIAS; + let stdout = ''; + + if (alias) { + args.push(...['--alias', alias]); + } + + if (argv.p || argv.public) { + args.push(...['-p']); + } + + if (argv.folder) { + args.push(argv.folder); + } + + const child = spawn(nowCli, args); + + if (!alias) { + child.stdout.on('data', data => { + stdout += data; + }); + } + + child.on('error', err => { + console.error(err); + ghRepo.status( + sha, + { + context, + state: 'error', + description: `Δ Now ${context} deployment failed. See Travis logs for details.`, + }, + noop, + ); + }); + + child.on('close', () => { + const target_url = alias || getUrl(stdout); + if (ghPR) { + const comment = `### New Δ Now ${context} deployment complete\n- ✅ **Build Passed**\n- 🚀 **Staging URL** : ${target_url}\n---\nNote: **This is autogenerated through Travis build**`; + console.log(comment); + ghPR.createComment( + { + body: comment, + }, + (err, res) => { + console.log(err, res); + }, + ); + } else { + console.log('No PR found'); + } + ghRepo.status( + sha, + { + context, + target_url, + state: 'success', + description: `Δ Now ${context} deployment complete`, + }, + noop, + ); + }); +} + +travisAfterAll((code, err) => { + // Don't do anything if there was an error of if the build returned a failing code + if (err || code) { + return; + } + + switch (process.env.TRAVIS_EVENT_TYPE) { + case 'pull_request': + return deploy('staging', process.env.TRAVIS_PULL_REQUEST_SHA); + case 'push': + return deploy('production', process.env.TRAVIS_COMMIT); + default: + return ''; + } +}); diff --git a/server.js b/server.js deleted file mode 100644 index e9f6750eb..000000000 --- a/server.js +++ /dev/null @@ -1,90 +0,0 @@ -const express = require('express'); -const next = require('next'); -const cookieParser = require('cookie-parser'); -const fetch = require('isomorphic-unfetch'); -const feathers = require('feathers/client'); -const hooks = require('feathers-hooks'); -const auth = require('feathers-authentication-client'); -const rest = require('feathers-rest/client'); - -const baseUrl = - process.env.NODE_ENV === 'production' || process.env.WITH_API - ? `https://coderplex.org/api` - : 'http://localhost:4000'; - -const dev = process.env.NODE_ENV !== 'production'; -const app = next({ dir: '.', dev }); -const handle = app.getRequestHandler(); -const feathersClient = feathers(); - -feathersClient - .configure(rest(baseUrl).fetch(fetch)) - .configure(hooks()) - .configure(auth()); - -app - .prepare() - .then(() => { - const server = express(); - server.use(cookieParser()); - - // Handling login - server.use((req, res, next) => { - if (!req.query.token) return next(); - res.cookie('feathers-jwt', req.query.token, { - expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 30), - httpOnly: false, - }); - return res.redirect(req.query.next); - }); - - // Handling logout - server.use((req, res, next) => { - if (!req.query.logout) return next(); - console.log('logout', req.query.logout); - res.cookie('feathers-jwt', null, { - expires: new Date(Date.now() - 1000), - httpOnly: false, - }); - - return res.redirect('/login'); - }); - - // Get loggedIn user - server.use(async (req, res, next) => { - const token = req.cookies['feathers-jwt']; - console.log('****token****'); - console.log(token); - console.log('****token****'); - if (!token) return next(); - try { - const { userId } = await feathersClient.passport.verifyJWT(token); - console.log('****USERID****'); - console.log(userId); - console.log('****USERID****'); - req.user = await fetch(`${baseUrl}/users/${userId}`, { - headers: { - Authorization: `${token}`, - }, - }).then(res => res.json()); - console.log('****ServerUSER****'); - console.log(req.user); - console.log('****ServerUSER****'); - next(); - } catch (error) { - console.error(error); - next(); - } - }); - - // Pass all routes to next.js handler - server.get('*', (req, res) => handle(req, res)); - - server.listen(process.env.PORT || 3000, err => { - if (err) throw err; - console.log('> App running on port', process.env.PORT || 3000); - }); - }) - .catch(ex => { - console.error(ex.stack); - }); diff --git a/utils/authenticate.js b/utils/authenticate.js deleted file mode 100644 index f79a939fe..000000000 --- a/utils/authenticate.js +++ /dev/null @@ -1,55 +0,0 @@ -import Cookie from 'js-cookie'; - -import { client as feathersClient, baseUrl } from './feathers-client'; - -export function login(service, url) { - let href; - if (url.query.next) { - href = `${baseUrl}/auth/${service}?next=${url.query.next}`; - } else { - href = `${baseUrl}/auth/${service}`; - } - window.location.href = href; -} - -export function logout() { - const href = `${window.location.href}?logout=1`; - window.localStorage.setItem('logout', Date.now()); - feathersClient - .logout() - .then(() => { - feathersClient.set('user', null); - Cookie.remove('feathers-jwt', { path: '' }); - window.location.href = href; - }) - .catch(console.log); -} - -export function authenticate() { - const token = Cookie.get('feathers-jwt'); - console.log(token); - if (!token) { - feathersClient.set('user', null); - const e = new Error('not authenticated'); - e.code = 401; - return Promise.reject(e); - } - return feathersClient - .authenticate({ - strategy: 'jwt', - accessToken: token, - }) - .then(response => { - return feathersClient.passport.verifyJWT(response.accessToken); - }) - .then(payload => { - feathersClient.set('user', null); - return feathersClient.service('users').get(payload.userId); - }) - .then(user => { - if (process.browser) { - feathersClient.set('user', user); - } - return user; - }); -} diff --git a/utils/feathers-client.js b/utils/feathers-client.js deleted file mode 100644 index 4363da18f..000000000 --- a/utils/feathers-client.js +++ /dev/null @@ -1,19 +0,0 @@ -import fetch from 'isomorphic-unfetch'; -import feathers from 'feathers/client'; -import hooks from 'feathers-hooks'; -import auth from 'feathers-authentication-client'; -import rest from 'feathers-rest/client'; - -const baseUrl = - process.env.NODE_ENV === 'production' || process.env.WITH_API - ? `https://coderplex.org/api` - : 'http://localhost:4000'; - -const client = feathers(); - -client - .configure(rest(baseUrl).fetch(fetch)) - .configure(hooks()) - .configure(auth()); - -export { client, baseUrl }; diff --git a/utils/redirect.js b/utils/redirect.js deleted file mode 100644 index 2187d488f..000000000 --- a/utils/redirect.js +++ /dev/null @@ -1,15 +0,0 @@ -import Router from 'next/router'; - -export default ( - ctx, - to = `/login?next=${encodeURIComponent( - ctx.req ? ctx.req.url : ctx.pathname, - )}`, -) => { - if (ctx.res) { - ctx.res.writeHead(302, { Location: to }); - ctx.res.end(); - return {}; - } - return Router.push(to); -}; diff --git a/yarn.lock b/yarn.lock index 7ace0c0d0..5e098efd8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,34 +47,6 @@ lodash "^4.17.4" pify "^3.0.0" -"@types/express-serve-static-core@*": - version "4.0.53" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.53.tgz#1723a35d1447f2c55e13c8721eab3448e42f4d82" - dependencies: - "@types/node" "*" - -"@types/express@~4.0.35": - version "4.0.37" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.37.tgz#625ac3765169676e01897ca47011c26375784971" - dependencies: - "@types/express-serve-static-core" "*" - "@types/serve-static" "*" - -"@types/mime@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b" - -"@types/node@*": - version "8.0.43" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.43.tgz#a596ccba8fe2293a54a9f3537d066b208d3fb1b2" - -"@types/serve-static@*": - version "1.7.32" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.32.tgz#0f6732e4dab0813771dd8fc8fe14940f34728b4c" - dependencies: - "@types/express-serve-static-core" "*" - "@types/mime" "*" - JSONStream@^1.0.4: version "1.3.1" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" @@ -267,6 +239,10 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-uniq@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.2.tgz#5fcc373920775723cfd64d65c64bef53bf9eba6d" + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -339,13 +315,6 @@ aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -axios@^0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" - dependencies: - follow-redirects "^1.2.3" - is-buffer "^1.1.5" - babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -991,6 +960,10 @@ block-stream@*: dependencies: inherits "~2.0.0" +bluebird@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -1491,13 +1464,6 @@ convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" -cookie-parser@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.3.tgz#0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5" - dependencies: - cookie "0.3.1" - cookie-signature "1.0.6" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -1648,7 +1614,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-fns@^1.27.2: +date-fns@1.29.0, date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" @@ -1663,13 +1629,13 @@ dateformat@^1.0.11, dateformat@^1.0.12: get-stdin "^4.0.1" meow "^3.3.0" -debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9: +debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0: +debug@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -1685,7 +1651,7 @@ deep-assign@^1.0.0: dependencies: is-obj "^1.0.0" -deep-extend@~0.4.0: +deep-extend@^0.4.1, deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -1808,7 +1774,7 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -duplexer@^0.1.1, duplexer@~0.1.1: +duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -1947,10 +1913,6 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" -es6-promise@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" @@ -2177,19 +2139,7 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" -event-stream@~3.3.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -events@^1.0.0, events@^1.1.1: +events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -2252,7 +2202,7 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -express@^4.15.2, express@^4.15.3, express@^4.16.1: +express@^4.15.2: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" dependencies: @@ -2321,31 +2271,16 @@ fbjs@^0.8.16: setimmediate "^1.0.5" ua-parser-js "^0.7.9" -feathers-authentication-client@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/feathers-authentication-client/-/feathers-authentication-client-0.3.3.tgz#d2183e4b08287dfd3ecb4a96eb081cf0b4e7c263" - dependencies: - debug "^2.2.0" - feathers-errors "^2.4.0" - jwt-decode "^2.1.0" - -feathers-commons@^0.8.0, feathers-commons@^0.8.6, feathers-commons@^0.8.7: +feathers-commons@^0.8.0: version "0.8.7" resolved "https://registry.yarnpkg.com/feathers-commons/-/feathers-commons-0.8.7.tgz#11c6f25b537745a983e8d61552d7db8932d53782" -feathers-errors@^2.0.1, feathers-errors@^2.4.0: +feathers-errors@^2.0.1: version "2.9.2" resolved "https://registry.yarnpkg.com/feathers-errors/-/feathers-errors-2.9.2.tgz#96ca0e5fe50cc56f0eccc90ce3fa5e1f8840828d" dependencies: debug "^3.0.0" -feathers-hooks@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/feathers-hooks/-/feathers-hooks-2.1.0.tgz#3e49c85048231a04daa5e8ce196223ea1a2c64b6" - dependencies: - feathers-commons "^0.8.6" - uberproto "^1.2.0" - feathers-rest@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/feathers-rest/-/feathers-rest-1.8.0.tgz#3c03f1ea56adec940a8f9823d87a3aafeb9742a9" @@ -2355,19 +2290,6 @@ feathers-rest@^1.8.0: feathers-errors "^2.0.1" qs "^6.4.0" -feathers@^2.1.7: - version "2.2.2" - resolved "https://registry.yarnpkg.com/feathers/-/feathers-2.2.2.tgz#334590ffbddc93dd4af6590b20560762cda41beb" - dependencies: - "@types/express" "~4.0.35" - babel-runtime "^6.26.0" - debug "^3.1.0" - events "^1.1.1" - express "^4.16.1" - feathers-commons "^0.8.7" - rubberduck "^1.1.1" - uberproto "^1.2.0" - figures@^1.3.5, figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -2456,12 +2378,6 @@ follow-redirects@0.0.7: debug "^2.2.0" stream-consume "^0.1.0" -follow-redirects@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.5.tgz#ffd3e14cbdd5eaa72f61b6368c1f68516c2a26cc" - dependencies: - debug "^2.6.9" - for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2524,10 +2440,6 @@ friendly-errors-webpack-plugin@1.6.1: error-stack-parser "^2.0.0" string-length "^1.0.1" -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - fs-extra@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" @@ -3006,20 +2918,10 @@ ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - ignore@^3.2.0, ignore@^3.2.6: version "3.3.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" -immutability-helper@^2.1.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.4.0.tgz#00d421e2957c17f0f0781475f05ffd837e73458d" - dependencies: - invariant "^2.2.0" - import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -3093,7 +2995,7 @@ interpret@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" -invariant@^2.2.0, invariant@^2.2.2: +invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: @@ -3103,6 +3005,10 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ip-regex@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + ipaddr.js@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" @@ -3377,7 +3283,7 @@ isomorphic-fetch@^2.1.1: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" -isomorphic-unfetch@^2.0.0: +isomorphic-unfetch@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-2.0.0.tgz#f50140a4c163d7582b5f37f1591968c4f809a645" dependencies: @@ -3401,10 +3307,6 @@ jest-validate@^21.1.0: leven "^2.1.0" pretty-format "^21.2.1" -js-cookie@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.4.tgz#da4ec503866f149d164cf25f579ef31015025d8d" - js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -3495,10 +3397,6 @@ junk@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" -jwt-decode@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" - kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -3697,13 +3595,6 @@ lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" -lodash.defaults@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" - dependencies: - lodash.assign "^3.0.0" - lodash.restparam "^3.0.0" - lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -3818,10 +3709,6 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - maximatch@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/maximatch/-/maximatch-0.1.0.tgz#86cd8d6b04c9f307c05a6b9419906d0360fb13a2" @@ -3976,7 +3863,7 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" -moment@^2.11.2, moment@^2.19.1: +moment@^2.11.2: version "2.19.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" @@ -4151,21 +4038,6 @@ node-uuid@~1.4.7: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" -nodemon@^1.11.0: - version "1.12.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d" - dependencies: - chokidar "^1.7.0" - debug "^2.6.8" - es6-promise "^3.3.1" - ignore-by-default "^1.0.1" - lodash.defaults "^3.1.2" - minimatch "^3.0.4" - ps-tree "^1.1.0" - touch "^3.1.0" - undefsafe "0.0.3" - update-notifier "^2.2.0" - nopt@^4.0.0, nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4204,6 +4076,19 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +now@8.3.10: + version "8.3.10" + resolved "https://registry.yarnpkg.com/now/-/now-8.3.10.tgz#13b0dc1b8651284d5c345bc969d664d11c7885e8" + "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0": version "5.1.2" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" @@ -4312,6 +4197,15 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" +octonode@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/octonode/-/octonode-0.9.1.tgz#a8ac6e767a5db0256b9f064527134f3f4e92e635" + dependencies: + bluebird "^3.5.0" + deep-extend "^0.4.1" + randomstring "^1.1.5" + request "^2.72.0" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -4540,12 +4434,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - dependencies: - through "~2.3" - pbkdf2@^3.0.3: version "3.0.14" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" @@ -4617,35 +4505,11 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" -preact-compat@^3.16.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/preact-compat/-/preact-compat-3.17.0.tgz#528cfdfc301190c1a0f47567336be1f4be0266b3" - dependencies: - immutability-helper "^2.1.2" - preact-render-to-string "^3.6.0" - preact-transition-group "^1.1.0" - prop-types "^15.5.8" - standalone-react-addons-pure-render-mixin "^0.1.1" - -preact-render-to-string@^3.6.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-3.7.0.tgz#7db4177454bc01395e0d01d6ac07bc5e838e31ee" - dependencies: - pretty-format "^3.5.1" - -preact-transition-group@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/preact-transition-group/-/preact-transition-group-1.1.1.tgz#f0a49327ea515ece34ea2be864c4a7d29e5d6e10" - -preact@^8.2.1: - version "8.2.5" - resolved "https://registry.yarnpkg.com/preact/-/preact-8.2.5.tgz#cbfa3962a8012768159f6d01d46f9c1eb3213c0a" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" -prepend-http@^1.0.1: +prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -4664,10 +4528,6 @@ pretty-format@^21.2.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^3.5.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" - private@^0.1.6, private@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -4728,12 +4588,6 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - dependencies: - event-stream "~3.3.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -4776,6 +4630,13 @@ qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -4803,6 +4664,12 @@ randombytes@^2.0.0, randombytes@^2.0.1: dependencies: safe-buffer "^5.1.0" +randomstring@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/randomstring/-/randomstring-1.1.5.tgz#6df0628f75cbd5932930d9fe3ab4e956a18518c3" + dependencies: + array-uniq "1.0.2" + range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -5100,7 +4967,7 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" -request@^2.74.0: +request@^2.72.0, request@^2.74.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -5261,10 +5128,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" -rubberduck@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/rubberduck/-/rubberduck-1.1.1.tgz#cd2cda4b867178135eafc995a71384f5f743db02" - run-async@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" @@ -5447,7 +5310,7 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -sort-keys@^1.1.2: +sort-keys@^1.0.0, sort-keys@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" dependencies: @@ -5513,12 +5376,6 @@ split2@^2.0.0: dependencies: through2 "^2.0.2" -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - dependencies: - through "2" - split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" @@ -5561,10 +5418,6 @@ staged-git-files@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35" -standalone-react-addons-pure-render-mixin@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/standalone-react-addons-pure-render-mixin/-/standalone-react-addons-pure-render-mixin-0.1.1.tgz#3c7409f4c79c40de9ac72c616cf679a994f37551" - "statuses@>= 1.2.1 < 2", "statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -5576,12 +5429,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - dependencies: - duplexer "~0.1.1" - stream-consume@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" @@ -5600,6 +5447,10 @@ stream-to-observable@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + string-hash@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.1.tgz#8e85bed291e0763b8f6809d9c3368fea048db3dc" @@ -5794,7 +5645,7 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1: +through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5812,6 +5663,10 @@ timers-browserify@^2.0.2: dependencies: setimmediate "^1.0.4" +tlds@^1.187.0: + version "1.198.0" + resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.198.0.tgz#e7413ea5cccb5e1f4de2a1f45230b0c80994a886" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -5820,7 +5675,7 @@ to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -touch@3.1.0, touch@^3.1.0: +touch@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" dependencies: @@ -5832,6 +5687,10 @@ tough-cookie@~2.3.0, tough-cookie@~2.3.3: dependencies: punycode "^1.4.1" +travis-after-all@1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/travis-after-all/-/travis-after-all-1.4.5.tgz#55c0bd9afce2b8dc208ed026aa695fc93f06a65c" + travis-ci@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e" @@ -5905,10 +5764,6 @@ ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" -uberproto@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-1.2.0.tgz#61d4eab024f909c4e6ea52be867c4894a4beeb76" - uglify-js@^2.6, uglify-js@^2.8.29: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" @@ -5942,10 +5797,6 @@ ultron@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" -undefsafe@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" - underscore.string@~2.2.0rc: version "2.2.1" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" @@ -5972,7 +5823,7 @@ unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" -update-notifier@^2.1.0, update-notifier@^2.2.0: +update-notifier@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" dependencies: @@ -5992,6 +5843,13 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" +url-regex@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-4.1.1.tgz#a5617b22e15e26dac57ce74c3f52088bcdfec995" + dependencies: + ip-regex "^1.0.1" + tlds "^1.187.0" + url@0.11.0, url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -6308,6 +6166,24 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" +yargs@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"