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" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy