summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-02-08 10:41:16 -0500
committerWes Bos <wesbos@gmail.com>2018-02-08 10:41:16 -0500
commit19c9683e2126c68cb9d231293162c756d69c51fb (patch)
tree4679ca2dee47740aa0bf6fe623513c4242e027e6
parenteabff7cd396d1f37ceb929e666f082ce57f07919 (diff)
WIP
-rw-r--r--backend/README.md4
-rw-r--r--backend/database/datamodel.graphql2
-rw-r--r--backend/database/prisma.yml2
-rw-r--r--backend/src/generated/prisma.graphql44
-rw-r--r--backend/src/resolvers/Mutation.js31
-rw-r--r--backend/src/resolvers/Query.js7
-rw-r--r--backend/src/schema.graphql5
-rw-r--r--backend/src/utils.js10
-rw-r--r--frontend/components/Header.js16
-rw-r--r--frontend/components/Item.js114
-rw-r--r--frontend/components/Items.js56
-rw-r--r--frontend/components/Page.js40
-rw-r--r--frontend/components/Pagination.js16
-rw-r--r--frontend/components/RequestReset.js71
-rw-r--r--frontend/components/Signin.js76
-rw-r--r--frontend/components/Signout.js20
-rw-r--r--frontend/components/Signup.js130
-rw-r--r--frontend/components/SingleItem.js26
-rw-r--r--frontend/components/TakeMyMoney.js24
-rw-r--r--frontend/components/UpdateItem.js67
-rw-r--r--frontend/enhancers/enhancers.js36
-rw-r--r--frontend/lib/initApollo.js11
-rw-r--r--frontend/package-lock.json1047
-rw-r--r--frontend/package.json3
-rw-r--r--frontend/pages/admin/update.js7
-rw-r--r--frontend/pages/signup.js24
-rw-r--r--frontend/queries/index.js71
27 files changed, 1097 insertions, 863 deletions
diff --git a/backend/README.md b/backend/README.md
index 4acc044..7687fd4 100644
--- a/backend/README.md
+++ b/backend/README.md
@@ -1 +1,5 @@
What are all these files?!
+
+What are the steps:
+
+1.
diff --git a/backend/database/datamodel.graphql b/backend/database/datamodel.graphql
index c383b23..40dd30c 100644
--- a/backend/database/datamodel.graphql
+++ b/backend/database/datamodel.graphql
@@ -16,7 +16,7 @@ type User {
posts: [Post!]!
website: String
age: Int
- dummy: String
+ resetToken: String
}
type Item {
diff --git a/backend/database/prisma.yml b/backend/database/prisma.yml
index ce652ef..70e10f4 100644
--- a/backend/database/prisma.yml
+++ b/backend/database/prisma.yml
@@ -1,5 +1,5 @@
# the name for the service (will be part of the service's HTTP endpoint)
-service: sick-fits
+service: sick-fitz
# the cluster and stage the service is deployed to
stage: ${env:PRISMA_STAGE}
diff --git a/backend/src/generated/prisma.graphql b/backend/src/generated/prisma.graphql
index e59a1c9..5e2d471 100644
--- a/backend/src/generated/prisma.graphql
+++ b/backend/src/generated/prisma.graphql
@@ -30,7 +30,7 @@ type User implements Node {
posts(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Post!]
website: String
age: Int
- dummy: String
+ resetToken: String
}
@@ -421,7 +421,7 @@ input UserCreateInput {
name: String!
website: String
age: Int
- dummy: String
+ resetToken: String
posts: PostCreateManyWithoutAuthorInput
}
@@ -436,7 +436,7 @@ input UserCreateWithoutPostsInput {
name: String!
website: String
age: Int
- dummy: String
+ resetToken: String
}
type UserEdge {
@@ -457,8 +457,8 @@ enum UserOrderByInput {
website_DESC
age_ASC
age_DESC
- dummy_ASC
- dummy_DESC
+ resetToken_ASC
+ resetToken_DESC
updatedAt_ASC
updatedAt_DESC
createdAt_ASC
@@ -472,7 +472,7 @@ type UserPreviousValues {
name: String!
website: String
age: Int
- dummy: String
+ resetToken: String
}
type UserSubscriptionPayload {
@@ -498,7 +498,7 @@ input UserUpdateInput {
name: String
website: String
age: Int
- dummy: String
+ resetToken: String
posts: PostUpdateManyWithoutAuthorInput
}
@@ -517,7 +517,7 @@ input UserUpdateWithoutPostsDataInput {
name: String
website: String
age: Int
- dummy: String
+ resetToken: String
}
input UserUpdateWithoutPostsInput {
@@ -612,20 +612,20 @@ input UserWhereInput {
age_lte: Int
age_gt: Int
age_gte: Int
- dummy: String
- dummy_not: String
- dummy_in: [String!]
- dummy_not_in: [String!]
- dummy_lt: String
- dummy_lte: String
- dummy_gt: String
- dummy_gte: String
- dummy_contains: String
- dummy_not_contains: String
- dummy_starts_with: String
- dummy_not_starts_with: String
- dummy_ends_with: String
- dummy_not_ends_with: String
+ resetToken: String
+ resetToken_not: String
+ resetToken_in: [String!]
+ resetToken_not_in: [String!]
+ resetToken_lt: String
+ resetToken_lte: String
+ resetToken_gt: String
+ resetToken_gte: String
+ resetToken_contains: String
+ resetToken_not_contains: String
+ resetToken_starts_with: String
+ resetToken_not_starts_with: String
+ resetToken_ends_with: String
+ resetToken_not_ends_with: String
posts_every: PostWhereInput
posts_some: PostWhereInput
posts_none: PostWhereInput
diff --git a/backend/src/resolvers/Mutation.js b/backend/src/resolvers/Mutation.js
index fbae6fe..95be561 100644
--- a/backend/src/resolvers/Mutation.js
+++ b/backend/src/resolvers/Mutation.js
@@ -2,6 +2,8 @@ const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const { forwardTo } = require('prisma-binding');
const { getUserId, Context } = require('../utils');
+const { randomBytes } = require('crypto');
+const { promisify } = require('util');
const mutations = {
// Signup Mutations
@@ -17,7 +19,7 @@ const mutations = {
};
},
- async login(parent, { email, password }, ctx, info) {
+ async signin(parent, { email, password }, ctx, info) {
const user = await ctx.db.query.user({ where: { email } });
if (!user) {
throw new Error(`No such user found for email: ${email}`);
@@ -40,8 +42,7 @@ const mutations = {
},
async deleteItem(parent, args, ctx, info) {
- console.log('gonna delete one');
- console.log(args);
+ // TODO - handle auth for deleting an item
return ctx.db.mutation.deleteItem(
{
where: {
@@ -53,7 +54,6 @@ const mutations = {
},
async updateItem(parent, args, ctx, info) {
- console.log('Updating an item');
const updates = { ...args };
delete updates.id;
return ctx.db.mutation.updateItem({
@@ -123,9 +123,30 @@ const mutations = {
text: args.text,
},
});
- console.log(updatedPost);
return updatedPost;
},
+
+ // Send password request
+ async requestReset(parent, args, ctx, info) {
+ // 1. find if there is a user with that email
+ const user = await ctx.db.query.user({ where: { email: args.email } });
+
+ if (!user) {
+ throw new Error(`No user with the email ${args.email}`);
+ }
+ console.log(user);
+ // 2. Set a reset token, and a reset date
+ // const resetToken = await promisify(randomBytes)(20);
+ // const resetTokenExpiry = Date.now() + 3600000; // 1 hour from now
+ // console.log({ resetToken, resetTokenExpiry });
+ // const res = await ctx.db.mutation.updateUser({
+ // where: { email: args.email },
+ // data: { resetToken, resetTokenExpiry },
+ // });
+
+ // console.log(res);
+ // 3. Send them their token via email
+ },
};
module.exports = mutations;
diff --git a/backend/src/resolvers/Query.js b/backend/src/resolvers/Query.js
index a2eb749..e6ea299 100644
--- a/backend/src/resolvers/Query.js
+++ b/backend/src/resolvers/Query.js
@@ -1,4 +1,4 @@
-const { getUserId, Context } = require('../utils');
+const { getUserId, Context, checkForUserId } = require('../utils');
const { forwardTo } = require('prisma-binding');
const Query = {
@@ -31,6 +31,11 @@ const Query = {
},
me(parent, args, ctx, info) {
+ const Authorization = ctx.request.get('Authorization');
+ if (!Authorization || Authorization === 'null') {
+ console.log('Authorization is null');
+ return null;
+ }
const id = getUserId(ctx);
return ctx.db.query.user({ where: { id } }, info);
},
diff --git a/backend/src/schema.graphql b/backend/src/schema.graphql
index 993236e..8a2fa23 100644
--- a/backend/src/schema.graphql
+++ b/backend/src/schema.graphql
@@ -26,7 +26,8 @@ type Query {
type Mutation {
signup(email: String!, password: String!, name: String!): AuthPayload!
- login(email: String!, password: String!): AuthPayload!
+ signin(email: String!, password: String!): AuthPayload!
+ requestReset(email: String!): User
createDraft(title: String!, text: String!): Post!
publish(id: ID!): Post!
deletePost(id: ID!): Post!
@@ -41,7 +42,6 @@ type AuthPayload {
user: User!
}
-# THe user definition overrides
type User {
id: ID!
email: String!
@@ -49,4 +49,5 @@ type User {
name: String!
posts: [Post!]!
age: Int
+ resetToken: String
}
diff --git a/backend/src/utils.js b/backend/src/utils.js
index 35587db..642c04a 100644
--- a/backend/src/utils.js
+++ b/backend/src/utils.js
@@ -11,6 +11,15 @@ function getUserId(ctx) {
throw new AuthError();
}
+function checkForUserId(ctx) {
+ const Authorization = ctx.request.get('Authorization');
+ if (Authorization) {
+ const token = Authorization.replace('Bearer ', '');
+ const { userId } = jwt.verify(token, process.env.APP_SECRET);
+ return userId;
+ }
+}
+
class AuthError extends Error {
constructor() {
super('Not authorized');
@@ -20,4 +29,5 @@ class AuthError extends Error {
module.exports = {
getUserId,
AuthError,
+ checkForUserId,
};
diff --git a/frontend/components/Header.js b/frontend/components/Header.js
index 5624fb5..5e1a620 100644
--- a/frontend/components/Header.js
+++ b/frontend/components/Header.js
@@ -6,6 +6,7 @@ import Login from './LoginAuth0';
import Search from './Search';
import NProgress from 'nprogress';
import Router from 'next/router';
+import Signout from './Signout';
Router.onRouteChangeStart = url => {
console.log(`Loading: ${url}`);
@@ -23,20 +24,17 @@ class Header extends Component {
}
render() {
- // const user = this.props.currentUserQuery.user || {};
- // const { email = '' } = user;
return (
<div>
- {/* <p>
- Signed in as <strong>{email}</strong>
- </p> */}
+ {this.props.currentUser.me ? this.props.currentUser.me.email : 'Not Signed in'}
+ <Signout />
{/* <Cart /> */}
- <Search />
+ {/* <Search /> */}
</div>
);
}
}
-const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUserQuery' });
-// export default compose(userEnhancer)(Header);
-export default Header;
+const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUser' });
+export default compose(userEnhancer)(Header);
+// export default Header;
diff --git a/frontend/components/Item.js b/frontend/components/Item.js
index eb19918..d19af0e 100644
--- a/frontend/components/Item.js
+++ b/frontend/components/Item.js
@@ -1,10 +1,13 @@
-import styled from "styled-components";
-import slugify from "slugify";
-import { Link } from "../routes";
-import AddToCart from "./AddToCart";
-import makeImage from "../lib/image";
-import TakeMyMoney from "./TakeMyMoney";
-import formatMoney from "../lib/formatMoney";
+import React from 'react';
+import styled from 'styled-components';
+import slugify from 'slugify';
+import { compose } from 'react-apollo';
+import { Link } from '../routes';
+import AddToCart from './AddToCart';
+import makeImage from '../lib/image';
+import TakeMyMoney from './TakeMyMoney';
+import formatMoney from '../lib/formatMoney';
+import { removeItemMutation } from '../enhancers/enhancers';
const Item = styled.div`
background: #f3f3f3;
@@ -14,60 +17,53 @@ const Item = styled.div`
}
`;
-const ItemComponent = ({ item }) => (
- <Item key={item.id}>
- {item.image ? (
- <img
- key={item.image.secret}
- src={makeImage(item.image)}
- alt={item.title}
- />
- ) : null}
- <h3>
- <Link
- route="item"
- params={{
- slug: slugify(item.title),
- itemId: item.id
- }}
- >
- <a>{item.title}</a>
- </Link>
- </h3>
+class ItemComponent extends React.Component {
+ removeItem = () => {
+ this.props.removeItem({ variables: { id: this.props.item.id } });
+ };
+ render() {
+ const item = this.props.item;
+ return (
+ <Item key={item.id}>
+ {item.image ? <img key={item.image.secret} src={makeImage(item.image)} alt={item.title} /> : null}
+ <h3>
+ <Link
+ route="item"
+ params={{
+ slug: slugify(item.title),
+ itemId: item.id,
+ }}
+ >
+ <a>{item.title}</a>
+ </Link>
+ </h3>
- <p>{item.description}</p>
- {/* {
+ <p>{item.description}</p>
- <Link
- href={{
- pathname: '/admin/update',
- query: { id: item.id },
- }}
- >
- <a>Edit ✏️</a>
- </Link>
+ <Link
+ href={{
+ pathname: '/admin/update',
+ query: { id: item.id },
+ }}
+ >
+ <a>Edit ✏️</a>
+ </Link>
- } */}
+ <TakeMyMoney
+ id={item.id}
+ amount={item.price}
+ name={item.title} // the pop-in header title
+ description={item.description} // the pop-in header subtitle
+ image={makeImage(item.image)}
+ >
+ <button>Buy for {formatMoney(item.price)}</button>
+ </TakeMyMoney>
- <TakeMyMoney
- id={item.id}
- amount={item.price}
- name={item.title} // the pop-in header title
- description={item.description} // the pop-in header subtitle
- image={makeImage(item.image)}
- >
- <button>Buy for {formatMoney(item.price)}</button>
- </TakeMyMoney>
-
- <AddToCart id={item.id} />
- <button
- onClick={() =>
- this.props.removeItemMutation({ variables: { id: item.id } })
- }
- >
- &times; Delete item
- </button>
- </Item>
-);
+ {/* <AddToCart id={item.id} /> */}
+ <button onClick={this.removeItem}>&times; Delete item</button>
+ </Item>
+ );
+ }
+}
-export default ItemComponent;
+export default compose(removeItemMutation)(ItemComponent);
diff --git a/frontend/components/Items.js b/frontend/components/Items.js
index 3e2c738..a3f98c9 100644
--- a/frontend/components/Items.js
+++ b/frontend/components/Items.js
@@ -1,11 +1,11 @@
-import { Component } from "react";
-import { withApollo, graphql, compose } from "react-apollo";
-import styled from "styled-components";
-import Pagination from "./Pagination";
-import Item from "./Item";
-import { itemEnhancer } from "../enhancers/enhancers";
+import { Component } from 'react';
+import { withApollo, graphql, compose } from 'react-apollo';
+import styled from 'styled-components';
+import Pagination from './Pagination';
+import Item from './Item';
+import { itemEnhancer } from '../enhancers/enhancers';
-import { ALL_ITEMS_QUERY, DELETE_ITEM_MUTATION } from "../queries";
+import { ALL_ITEMS_QUERY, DELETE_ITEM_MUTATION } from '../queries';
const Title = styled.h1`
font-size: 10px;
@@ -19,7 +19,6 @@ const Items = styled.div`
class ItemList extends Component {
componentDidMount() {
- console.log(this.props.allItemsQuery);
this.prefetchNextItems(this.props.page);
}
@@ -36,56 +35,35 @@ class ItemList extends Component {
this.props.client.query({
query: ALL_ITEMS_QUERY,
variables: {
- skip: page * 3 - 3
- }
+ skip: page * 3 - 3,
+ },
});
};
render() {
+ console.log(this.props);
// 1
- if (this.props.allItemsQuery && this.props.allItemsQuery.loading) {
+ if (this.props.itemsQuery && this.props.itemsQuery.loading) {
return <div>Loading</div>;
}
// 2
- if (this.props.allItemsQuery && this.props.allItemsQuery.error) {
- console.log(this.props.allItemsQuery.error);
+ if (this.props.itemsQuery && this.props.itemsQuery.error) {
+ console.log(this.props.itemsQuery.error);
return <div>Error</div>;
}
-
+ console.log(this.props);
// 3
- const itemsToRender = this.props.allItemsQuery.items;
+ const itemsToRender = this.props.itemsQuery.items;
return (
<div>
<Pagination page={this.props.page} />
<Title>Items For Sale</Title>
- <Items key={this.props.page}>
- {itemsToRender.map((item, i) => <Item key={item.id} item={item} />)}
- </Items>
+ <Items key={this.props.page}>{itemsToRender.map((item, i) => <Item key={item.id} item={item} />)}</Items>
</div>
);
}
}
-// 1
-
-// We export the graphQL HOC - this will fetch the data and inject it into the ItemList compeont via props
-
-const deleteItemEnhancer = graphql(DELETE_ITEM_MUTATION, {
- name: "removeItemMutation",
- options: {
- update: (proxy, { data: { deleteItem } }) => {
- // grab the data from our cache
- const data = proxy.readQuery({ query: ALL_ITEMS_QUERY });
-
- // filter out the deleted item
- data.allItems = data.allItems.filter(item => item.id !== deleteItem.id);
-
- // and then "set state" (update cache), so it will update wherever we have used this data on the page
- proxy.writeQuery({ query: ALL_ITEMS_QUERY, data });
- }
- }
-});
-
-export default withApollo(compose(itemEnhancer, deleteItemEnhancer)(ItemList));
+export default withApollo(compose(itemEnhancer)(ItemList));
diff --git a/frontend/components/Page.js b/frontend/components/Page.js
index ceb0939..291bdcd 100644
--- a/frontend/components/Page.js
+++ b/frontend/components/Page.js
@@ -1,8 +1,26 @@
-import styled from "styled-components";
-import Header from "./Header";
-import Meta from "./Meta";
-import Nav from "./Nav";
-import CartList from "./CartList";
+import styled from 'styled-components';
+import Header from './Header';
+import Meta from './Meta';
+import Nav from './Nav';
+import CartList from './CartList';
+import { Component } from 'react';
+
+class ErrorBoundary extends Component {
+ state = {
+ error: null,
+ errorInfo: null,
+ };
+ componentDidCatch(error, errorInfo) {
+ console.log('Caught an erorrror!');
+ this.setState({ error, errorInfo });
+ }
+ render() {
+ if (this.state.error) {
+ return <p>Shit! AN error!</p>;
+ }
+ return this.props.children;
+ }
+}
const StyledPage = styled.div`
font-family: sans-serif;
@@ -13,11 +31,13 @@ const StyledPage = styled.div`
const Page = ({ children }) => (
<StyledPage className="main">
- <Meta />
- <Nav />
- {/* <Header /> */}
- {/* <CartList /> */}
- {children}
+ <ErrorBoundary>
+ <Meta />
+ <Nav />
+ <Header />
+ {/* <CartList /> */}
+ {children}
+ </ErrorBoundary>
</StyledPage>
);
diff --git a/frontend/components/Pagination.js b/frontend/components/Pagination.js
index 28785be..2cb5080 100644
--- a/frontend/components/Pagination.js
+++ b/frontend/components/Pagination.js
@@ -1,16 +1,16 @@
-import React, { Component } from "react";
-import { graphql, gql, compose } from "react-apollo";
-import { ALL_ITEMS_QUERY } from "../queries";
-import withData from "../lib/withData";
-import { Link } from "../routes";
-import { itemEnhancer } from "../enhancers/enhancers";
+import React, { Component } from 'react';
+import { graphql, gql, compose } from 'react-apollo';
+import { ALL_ITEMS_QUERY } from '../queries';
+import withData from '../lib/withData';
+import { Link } from '../routes';
+import { itemEnhancer } from '../enhancers/enhancers';
const Pagination = props => {
- const { loading, error } = props.allItemsQuery;
+ const { loading, error } = props.itemsQuery;
if (loading) return <p>Loading Item...</p>;
- const { aggregate, pageInfo } = props.allItemsQuery.itemsConnection;
+ const { aggregate, pageInfo } = props.itemsQuery.itemsConnection;
const { page } = props;
const pages = Math.floor(aggregate.count / 3);
diff --git a/frontend/components/RequestReset.js b/frontend/components/RequestReset.js
new file mode 100644
index 0000000..de16751
--- /dev/null
+++ b/frontend/components/RequestReset.js
@@ -0,0 +1,71 @@
+import React, { Component } from 'react';
+import { graphql, compose } from 'react-apollo';
+import { REQUEST_RESET_MUTATION } from '../queries';
+
+class ResetRequest extends Component {
+ state = {
+ email: `wesbos@gmail.com`,
+ password: 'abc123',
+ errors: [],
+ };
+
+ requestReset = async e => {
+ e.preventDefault();
+ console.log(this.state.email);
+ const res = await this.props.requestReset({
+ variables: {
+ email: this.state.email,
+ },
+ });
+ if (res.errors) {
+ this.setState({ errors: res.errors });
+ }
+ console.log(res);
+ // // pull the values from state
+ // const { email, password } = this.state;
+ // this.setState({ loading: true, errors: [] });
+ // const res = await this.props.signin({
+ // // pass in those variables from state
+ // variables: { name, email, password },
+ // });
+ // if (res.errors) {
+ // this.setState({ errors: res.errors });
+ // return;
+ // }
+ // localStorage.setItem('token', res.data.signin.token);
+ // // TODO refetch current user query
+ // this.props.currentUser.refetch();
+ // this.setState({ loading: false });
+ };
+
+ saveToState = e => {
+ const { name, value } = e.target;
+ this.setState({ [name]: value });
+ };
+
+ render() {
+ return (
+ <div>
+ {this.state.loading ? 'LOADING...' : 'Ready!'}
+
+ {this.state.errors ? this.state.errors.map(err => <p>{err.message}</p>) : null}
+ <h2>Request a Reset</h2>
+ <form onSubmit={this.requestReset}>
+ <label htmlFor="email">
+ Email
+ <input value={this.state.email} onChange={this.saveToState} name="email" type="text" placeholder="email" />
+ </label>
+
+ <button type="submit">Request Reset!</button>
+ </form>
+ </div>
+ );
+ }
+}
+
+// When we submit this mutation, we need to update our store - we have a few ways to do that:
+// One - we can go nucular and run refetchQueries() which will just go get everything - this is easy, but at the cost of efficiency.
+
+const requestResetEnhancer = graphql(REQUEST_RESET_MUTATION, { name: 'requestReset' });
+
+export default compose(requestResetEnhancer)(ResetRequest);
diff --git a/frontend/components/Signin.js b/frontend/components/Signin.js
new file mode 100644
index 0000000..aac1222
--- /dev/null
+++ b/frontend/components/Signin.js
@@ -0,0 +1,76 @@
+import React, { Component } from 'react';
+import { graphql, compose } from 'react-apollo';
+import { SIGNIN_MUTATION, CURRENT_USER_QUERY } from '../queries';
+
+class Signin extends Component {
+ state = {
+ email: `wesbos@gmail.com`,
+ password: 'abc123',
+ errors: [],
+ };
+
+ loginUser = async e => {
+ e.preventDefault();
+ // pull the values from state
+ const { email, password } = this.state;
+ this.setState({ loading: true, errors: [] });
+ const res = await this.props.signin({
+ // pass in those variables from state
+ variables: { name, email, password },
+ });
+ if (res.errors) {
+ this.setState({ errors: res.errors });
+ return;
+ }
+ localStorage.setItem('token', res.data.signin.token);
+ // TODO refetch current user query
+ this.props.currentUser.refetch();
+
+ this.setState({ loading: false });
+ };
+
+ saveToState = e => {
+ const { name, value } = e.target;
+ this.setState({ [name]: value });
+ };
+
+ render() {
+ return (
+ <div>
+ {this.state.loading ? 'LOADING...' : 'Ready!'}
+
+ {this.state.errors ? this.state.errors.map(err => <p>{err.message}</p>) : null}
+
+ <form onSubmit={this.loginUser}>
+ <label htmlFor="email">
+ Email
+ <input value={this.state.email} onChange={this.saveToState} name="email" type="text" placeholder="email" />
+ </label>
+
+ <label htmlFor="password">
+ Password
+ <input
+ type="password"
+ name="password"
+ id="password"
+ className="password"
+ placeholder="password"
+ value={this.state.password}
+ onChange={this.saveToState}
+ />
+ </label>
+
+ <button type="submit">Sign In!</button>
+ </form>
+ </div>
+ );
+ }
+}
+
+// When we submit this mutation, we need to update our store - we have a few ways to do that:
+// One - we can go nucular and run refetchQueries() which will just go get everything - this is easy, but at the cost of efficiency.
+
+const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUser' });
+const signinEnhancer = graphql(SIGNIN_MUTATION, { name: 'signin' });
+
+export default compose(signinEnhancer, userEnhancer)(Signin);
diff --git a/frontend/components/Signout.js b/frontend/components/Signout.js
new file mode 100644
index 0000000..97eef40
--- /dev/null
+++ b/frontend/components/Signout.js
@@ -0,0 +1,20 @@
+import React, { Component } from 'react';
+import { graphql, compose } from 'react-apollo';
+import { CURRENT_USER_QUERY } from '../queries';
+
+class Signout extends Component {
+ signout = () => {
+ console.log('Signing Out');
+ localStorage.removeItem('token');
+ this.props.currentUser.refetch();
+ };
+
+ render() {
+ const { me, loading, error } = this.props.currentUser;
+ if (!me || loading || error) return null;
+ return <button onClick={this.signout}>Sign Out of {me.id}👋 🏻</button>;
+ }
+}
+
+const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUser' });
+export default compose(userEnhancer)(Signout);
diff --git a/frontend/components/Signup.js b/frontend/components/Signup.js
index 57e2569..746f1e4 100644
--- a/frontend/components/Signup.js
+++ b/frontend/components/Signup.js
@@ -1,94 +1,92 @@
import React, { Component } from 'react';
-import { graphql, gql } from 'react-apollo';
-import { CREATE_USER_MUTATION } from '../queries';
+import { graphql, compose } from 'react-apollo';
+import { SIGNUP_MUTATION, CURRENT_USER_QUERY } from '../queries';
class Signup extends Component {
- constructor() {
- super();
- const idToken = typeof window !== 'undefined' ? localStorage.getItem('auth0IdToken') || '' : '';
- this.state = {
- email: '',
- name: '',
- idToken,
- error: undefined,
- };
- }
+ state = {
+ email: `wesbos+${Date.now()}@gmail.com`,
+ name: 'Wes Bos',
+ password: 'abc123',
+ error: undefined,
+ };
+
+ createUser = async e => {
+ e.preventDefault();
+ // pull the values from state
+ const { email, name, password } = this.state;
+ // create a mutation
+ // TODO: handle any errors
+ // turn loading on
+ this.setState({ loading: true });
+ console.log({ name, email, password });
+ try {
+ const res = await this.props.signup({
+ // pass in those variables from state
+ variables: { name, email, password },
+ });
+ localStorage.setItem('token', res.data.signup.token);
+ // TODO refetch current user query
+ this.props.currentUser.refetch();
+ } catch (error) {
+ this.setState({ error });
+ console.dir(error);
+ }
+ this.setState({ loading: false });
+ };
+
+ saveToState = e => {
+ const { name, value } = e.target;
+ this.setState({ [name]: value });
+ };
render() {
return (
<div>
{this.state.loading ? 'LOADING...' : 'Ready!'}
- {this.state.error ? <p>{this.state.error.message}</p> : ''}
+ {this.state.error ? <p>{this.state.error.message}</p> : null}
- <form onSubmit={this._createUser}>
- <p>
+ <form onSubmit={this.createUser}>
+ <label htmlFor="email">
Email
- <input
- value={this.state.email}
- onChange={e => this.setState({ email: e.target.value })}
- type="text"
- placeholder="email"
- />
- </p>
+ <input value={this.state.email} onChange={this.saveToState} name="email" type="text" placeholder="email" />
+ </label>
- <p>
+ <label htmlFor="name">
Name
- <input
- value={this.state.name}
- onChange={e => this.setState({ name: e.target.value })}
- type="text"
- placeholder="name"
- />
- </p>
+ <input type="text" name="name" placeholder="name" value={this.state.name} onChange={this.saveToState} />
+ </label>
- <p>
- idToken
+ <label htmlFor="password">
+ Password
<input
- disabled
- value={this.state.idToken}
- onChange={e => this.setState({ idToken: e.target.value })}
- type="text"
- placeholder="name"
+ type="password"
+ name="password"
+ id="password"
+ className="password"
+ placeholder="password"
+ value={this.state.password}
+ onChange={this.saveToState}
/>
- </p>
+ </label>
<button type="submit">Submit</button>
</form>
</div>
);
}
-
- _createUser = async e => {
- e.preventDefault();
- // pull the values from state
- const { email, name, idToken } = this.state;
- // create a mutation
- // TODO: handle any errors
- // turn loading on
- this.setState({ loading: true });
- console.log(name, email, idToken);
- try {
- const res = await this.props.createUserMutation({
- // pass in those variables from state
- variables: { name, email, idToken },
- });
- } catch (error) {
- this.setState({ error });
- console.dir(error);
- }
- this.setState({ loading: false });
- };
}
+
// When we submit this mutation, we need to update our store - we have a few ways to do that:
// One - we can go nucular and run refetchQueries() which will just go get everything - this is easy, but at the cost of efficiency.
-export default graphql(CREATE_USER_MUTATION, {
- name: 'createUserMutation',
+const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUser' });
+
+const signupEnhancer = graphql(SIGNUP_MUTATION, {
+ name: 'signup',
options: {
- // Easy, but slow
- // refetchQueries: ['AllLinksQuery']
- // This is much Better / efficient
- // Notice how the variable is called createItem - that is because createItem is the name of the query!
+ refetchQueries: ['currentUser'],
},
-})(Signup);
+});
+
+export default compose(userEnhancer, signupEnhancer)(Signup);
diff --git a/frontend/components/SingleItem.js b/frontend/components/SingleItem.js
index 297c33d..9d18074 100644
--- a/frontend/components/SingleItem.js
+++ b/frontend/components/SingleItem.js
@@ -1,36 +1,22 @@
import { graphql, compose } from 'react-apollo';
-import { Motion, spring } from 'react-motion';
import { SINGLE_ITEM_QUERY } from '../queries';
+import { singleItemEnhancer } from '../enhancers/enhancers';
import makeImage from '../lib/image';
const SingleItem = props => {
- if (!props.findItem.Item) return <p>Not ready</p>;
- console.log(props.findItem.Item);
-
- if (props.loading) return <p>Loading...</p>;
+ if (props.loading || !props.item) return <p>Loading...</p>;
if (props.error) return <p>Error...</p>;
-
- const item = props.findItem.Item;
+ console.log(props);
+ const item = props.findItem.items[0];
return (
<div>
<img src={makeImage(item.image)} alt={item.title} />
<h2>Viewing {item.title}</h2>
-
- <Motion defaultStyle={{ x: 0 }} style={{ x: spring(100) }}>
- {value => <div>{value.x}</div>}
- </Motion>
+ <p>{item.description}</p>
</div>
);
};
-const ComponentWithMutations = compose(
- graphql(SINGLE_ITEM_QUERY, {
- name: 'findItem',
- // This comes from Props
- options: ({ id }) => ({
- variables: { id },
- }),
- })
-)(SingleItem);
+const ComponentWithMutations = compose(singleItemEnhancer)(SingleItem);
export default ComponentWithMutations;
diff --git a/frontend/components/TakeMyMoney.js b/frontend/components/TakeMyMoney.js
index d68cca1..042e9c8 100644
--- a/frontend/components/TakeMyMoney.js
+++ b/frontend/components/TakeMyMoney.js
@@ -1,25 +1,25 @@
import { Component } from 'react';
import StripeCheckout from 'react-stripe-checkout';
-import { CREATE_ORDER_MUTATION, CURRENT_USER_QUERY } from '../queries';
import { graphql, compose } from 'react-apollo';
-
+import { CREATE_ORDER_MUTATION, CURRENT_USER_QUERY } from '../queries';
class TakeMyMoney extends Component {
- onToken = async (res) => {
+ onToken = async res => {
+ console.log('We got a toooken!');
const token = res.id;
const userId = this.props.currentUserQuery.user.id;
const itemId = this.props.id;
console.log(`Going to make a purchase with ${token}`);
- console.log(`THe person that bought this was ${userId}`)
- console.log(`The item id is ${itemId}`)
- const charge = await this.props.createOrder({ variables: { token, userId, itemId }});
+ console.log(`THe person that bought this was ${userId}`);
+ console.log(`The item id is ${itemId}`);
+ const charge = await this.props.createOrder({ variables: { token, userId, itemId } });
alert(`Back from the charge! ${charge.id}`);
console.log(charge);
-
- }
+ };
render() {
- const user = this.props.currentUserQuery.user || {};
- const email = user.email || '';
+ // const user = this.props.currentUserQuery.user || {};
+ // const email = user.email || '';
+ const email = 'wesbos@gmail.com';
return (
<div>
<StripeCheckout
@@ -34,10 +34,10 @@ class TakeMyMoney extends Component {
{this.props.children}
</StripeCheckout>
</div>
- )
+ );
}
}
const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUserQuery' });
const createOrderEnhancer = graphql(CREATE_ORDER_MUTATION, { name: 'createOrder' });
-export default compose(userEnhancer, createOrderEnhancer)(TakeMyMoney);
+export default compose(createOrderEnhancer)(TakeMyMoney);
diff --git a/frontend/components/UpdateItem.js b/frontend/components/UpdateItem.js
index 27be90f..febe2ad 100644
--- a/frontend/components/UpdateItem.js
+++ b/frontend/components/UpdateItem.js
@@ -2,58 +2,75 @@ import React, { Component } from 'react';
import { graphql, gql, compose } from 'react-apollo';
import { SINGLE_ITEM_QUERY, UPDATE_LINK_MUTATION } from '../queries';
-class UpdateLink extends Component {
+import { singleItemEnhancer } from '../enhancers/enhancers';
+
+class UpdateItem extends Component {
state = {
- ...this.props.findItem.Item,
+ item: {},
};
+ componentDidMount() {
+ console.log(this.props);
+ }
saveToState = e => {
let { name, value, type } = e.target;
if (type === 'number') {
value = parseInt(value);
}
-
- this.setState({ [name]: value });
+ console.log('Saving to state');
+ const item = { ...this.state.item };
+ item[name] = value;
+ this.setState({ item });
};
- _createLink = async e => {
+ updateItem = async e => {
e.preventDefault();
// pull the values from state
const { description, title } = this.state;
const { id } = this.props;
// create a mutation
- // TODO: handle any errors
+ // TODO: handle any errors. If you send an extra field it should break -how do we display those errors if they are currently only visible via the network tab?
// turn loading on
this.setState({ loading: true });
- console.log(this.state);
const res = await this.props.updateItem({
// pass in those variables from state
variables: {
- ...this.state,
+ ...this.props.findItem.items[0],
+ ...this.state.item,
},
});
+ console.log(res);
this.setState({ loading: false });
};
render() {
+ if (this.props.findItem.loading) {
+ return <p>Loading...</p>;
+ }
+
+ const item = this.props.findItem.items[0];
return (
<div>
<h2>Edit {this.props.id}</h2>
{this.state.loading ? 'LOADING...' : 'Ready!'}
- <form onSubmit={this._createLink}>
- <label htmlFor="title">Title</label>
- <input value={this.state.title} name="title" onChange={this.saveToState} type="text" />
-
- <label htmlFor="description">Description</label>
- <textarea value={this.state.description} name="description" onChange={this.saveToState} />
-
- <label htmlFor="price">Price</label>
- <input type="number" name="price" onChange={this.saveToState} value={this.state.price} />
+ <form onSubmit={this.updateItem}>
+ <fieldset disabled={this.state.loading}>
+ <label htmlFor="title">
+ Title
+ <input id="title" defaultValue={item.title} name="title" onChange={this.saveToState} type="text" />
+ </label>
- <label htmlFor="fullPrice">Full Price</label>
- <input type="number" name="fullPrice" onChange={this.saveToState} value={this.state.fullPrice} />
+ <label htmlFor="description">
+ Description
+ <textarea defaultValue={item.description} name="description" onChange={this.saveToState} />
+ </label>
- <button type="submit">Save...</button>
+ <label htmlFor="price">
+ Price
+ <input type="number" name="price" onChange={this.saveToState} defaultValue={item.price} />
+ </label>
+ <button type="submit">Save...</button>
+ </fieldset>
</form>
</div>
);
@@ -61,15 +78,9 @@ class UpdateLink extends Component {
}
const ComponentWithMutations = compose(
- // First, query for getting the link
- graphql(SINGLE_ITEM_QUERY, {
- name: 'findItem',
- options: ({ id }) => ({
- variables: { id },
- }),
- }),
+ singleItemEnhancer,
// Second, the mutation for updating the link
graphql(UPDATE_LINK_MUTATION, { name: 'updateItem' })
-)(UpdateLink);
+)(UpdateItem);
export default ComponentWithMutations;
diff --git a/frontend/enhancers/enhancers.js b/frontend/enhancers/enhancers.js
index 525c720..ff1712f 100644
--- a/frontend/enhancers/enhancers.js
+++ b/frontend/enhancers/enhancers.js
@@ -1,13 +1,37 @@
-import { ALL_ITEMS_QUERY } from "../queries/index";
-import { graphql } from "react-apollo";
+import { ALL_ITEMS_QUERY, REMOVE_ITEM_MUTATION, SINGLE_ITEM_QUERY } from '../queries/index';
+import { graphql } from 'react-apollo';
export const itemEnhancer = graphql(ALL_ITEMS_QUERY, {
- name: "allItemsQuery",
+ name: 'itemsQuery',
options({ page }) {
return {
variables: {
- skip: page * 3 - 3
- }
+ skip: page * 3 - 3,
+ },
};
- }
+ },
+});
+
+export const removeItemMutation = graphql(REMOVE_ITEM_MUTATION, {
+ name: 'removeItem',
+ options: {
+ update: (proxy, { data: { deleteItem } }) => {
+ // grab the data from our cache
+ const data = proxy.readQuery({ query: ALL_ITEMS_QUERY });
+ console.log(data);
+ // filter out the deleted item
+ data.items = data.items.filter(item => item.id !== deleteItem.id);
+
+ // and then "set state" (update cache), so it will update wherever we have used this data on the page
+ proxy.writeQuery({ query: ALL_ITEMS_QUERY, data });
+ },
+ },
+});
+
+export const singleItemEnhancer = graphql(SINGLE_ITEM_QUERY, {
+ name: 'findItem',
+ // This comes from Props
+ options: ({ id }) => ({
+ variables: { id },
+ }),
});
diff --git a/frontend/lib/initApollo.js b/frontend/lib/initApollo.js
index 35f5e08..7252a00 100644
--- a/frontend/lib/initApollo.js
+++ b/frontend/lib/initApollo.js
@@ -17,7 +17,6 @@ function create(initialState) {
// 1. Create a link for local state to be managed in Apollo
-
// 1. connect to our GraphQL API
const httpLink = new HttpLink({
uri: endpoint, // Server URL (must be absolute)
@@ -28,11 +27,13 @@ function create(initialState) {
// 2. One to tack on our auth token on each request
const authMiddleware = new ApolloLink((operation, forward) => {
+ console.log('Adding Auth');
const headers = {};
- if (typeof localStorage !== 'undefined' && localStorage.getItem('auth0IdToken')) {
- headers.authorization = `Bearer ${localStorage.getItem('auth0IdToken')}`;
+ if (typeof localStorage !== 'undefined' && localStorage.getItem('token')) {
+ headers.authorization = `Bearer ${localStorage.getItem('token')}`;
}
+ console.log({ headers });
operation.setContext({ headers });
return forward(operation);
@@ -43,6 +44,10 @@ function create(initialState) {
ssrMode: !process.browser, // Disables forceFetch on the server (so queries are only run once)
link: concat(authMiddleware, httpLink),
cache: new InMemoryCache().restore(initialState || {}),
+ defaultOptions: {
+ query: { errorPolicy: 'all' },
+ mutate: { errorPolicy: 'all' },
+ },
});
}
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index eed2f28..1cbed1a 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"@babel/code-frame": {
- "version": "7.0.0-beta.38",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz",
- "integrity": "sha512-JNHofQND7Iiuy3f6RXSillN1uBe87DAp+1ktsBfSxfL3xWeGFyJC9jH5zu2zs7eqVGp2qXWvJZFiJIwOYnaCQw==",
+ "version": "7.0.0-beta.39",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.39.tgz",
+ "integrity": "sha512-PConL+YIK9BgNUWWC2q4fbltj1g475TofpNVNivSypcAAKElfpSS1cv7MrpLYRG8TzZvwcVu9M30hLA/WAp1HQ==",
"dev": true,
"requires": {
"chalk": "2.3.0",
@@ -16,28 +16,21 @@
}
},
"@babel/helper-annotate-as-pure": {
- "version": "7.0.0-beta.38",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.38.tgz",
- "integrity": "sha512-7k67bppxvfSS+hu2yiDeuVTf8GHOlz8haHwRJZDXiXwjm2IBqEYYA6Dvi+xNMHy05pZVBy012qpS7BpguXoW4A==",
+ "version": "7.0.0-beta.39",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.39.tgz",
+ "integrity": "sha512-q+rE/5K8dTi5FYhG4iOsh11BTgEP8FvQ/zVInOezcihPUUJxpi5t9t3bi/SGooIIoYQdwSL4/bo5s6Yl4ZoMcA==",
"requires": {
- "@babel/types": "7.0.0-beta.38"
+ "@babel/types": "7.0.0-beta.39"
}
},
"@babel/types": {
- "version": "7.0.0-beta.38",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.38.tgz",
- "integrity": "sha512-SAtyEjmA7KiEoL2eAOAUM6M9arQJGWxJKK0S9x0WyPOosHS420RXoxPhn57u/8orRnK8Kxm0nHQQNTX203cP1Q==",
+ "version": "7.0.0-beta.39",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.39.tgz",
+ "integrity": "sha512-wrEe0z4kFP0KbFz8aHbPOGQal0gn+J2Iv9ZJGYbD77JN4BpavbF5l/BvLNZ0Omn665VENncoLVmQpclMbh64sQ==",
"requires": {
"esutils": "2.0.2",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"to-fast-properties": "2.0.0"
- },
- "dependencies": {
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
- }
}
},
"@semantic-release/commit-analyzer": {
@@ -46,10 +39,10 @@
"integrity": "sha512-bxCvvDsZeQp6Fvev8CdAV4pu9rEt8NOuLIFS0E8RLjKRnqQVL/fGAwpQWnRQ5hc08UZroguBNEENWpKBubWmKQ==",
"requires": {
"@semantic-release/error": "2.1.0",
- "conventional-changelog-angular": "1.6.0",
- "conventional-commits-parser": "2.1.0",
+ "conventional-changelog-angular": "1.6.2",
+ "conventional-commits-parser": "2.1.1",
"import-from": "2.1.0",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"pify": "3.0.0"
},
"dependencies": {
@@ -93,11 +86,11 @@
"integrity": "sha512-LznqPnifl8jtQkV5ZXnQbqMLx9QROoX5d/FLteLyKy3AznLSubm5rH0LndKvf9ZI8XU8jwgLYu+wbLAEIR2PPg==",
"requires": {
"@semantic-release/error": "2.1.0",
- "conventional-changelog-angular": "1.6.0",
+ "conventional-changelog-angular": "1.6.2",
"conventional-changelog-core": "1.9.5",
"get-stream": "3.0.0",
"import-from": "2.1.0",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"pify": "3.0.0"
},
"dependencies": {
@@ -114,9 +107,9 @@
"integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow=="
},
"@types/async": {
- "version": "2.0.46",
- "resolved": "https://registry.npmjs.org/@types/async/-/async-2.0.46.tgz",
- "integrity": "sha512-G4pYI5fcrmy6/NpTUHxTV8KOJgt7xO4jU7Itx3hA+AsBiECf78vFIJdRSWM6pHIskmKfCmJ0zGVbQJuKUooEQg==",
+ "version": "2.0.47",
+ "resolved": "https://registry.npmjs.org/@types/async/-/async-2.0.47.tgz",
+ "integrity": "sha512-/mQMARXVSuGbwOFFBKA4s0qRKtOaaTgnllp3qU4sMzDVGGAroPblyd529yBALnK/WEY8nHyRGx0/RFUDmhpVmQ==",
"optional": true
},
"@types/zen-observable": {
@@ -154,9 +147,9 @@
}
},
"acorn": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz",
- "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug=="
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz",
+ "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ=="
},
"acorn-dynamic-import": {
"version": "2.0.2",
@@ -179,7 +172,7 @@
"integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==",
"dev": true,
"requires": {
- "acorn": "5.3.0"
+ "acorn": "5.4.1"
}
},
"agent-base": {
@@ -278,43 +271,36 @@
}
},
"apollo-cache": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.0.tgz",
- "integrity": "sha512-ILs1/GCyAv8RRMansOqpENnsJMCc1w6UQKVY6vTxJBpUDpGO6B6/UbIaWM0esat9cf92a7yx13/BoauFRzwqzw==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.2.tgz",
+ "integrity": "sha512-U0xObyjvHcnOIQ1KMWGgVM0tzkWChh7xwxO3QmEGJBHr78f7LstBfMsY5KlK/4PbwOoTqrOBf8L6aCs4BSHx/A==",
"requires": {
- "apollo-utilities": "1.0.4"
+ "apollo-utilities": "1.0.6"
}
},
"apollo-cache-inmemory": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.1.5.tgz",
- "integrity": "sha512-Gy9g4RZUfIJwxaZuMF3ZqplYaiFSfgJYmepYTIP+zL+9dqV1Er8EIICJqVlc4T2uWXHQ9U01iK5Hu1g9pV85tg==",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.1.7.tgz",
+ "integrity": "sha512-qckP7ptk03qvk1UR1/tiy+vVswFyF2Ix06T53RxWLCeWuXvFfEM0mzmcAwGA0Rh3qC3p/GkQTmADJ/9pnltCkg==",
"requires": {
- "apollo-cache": "1.1.0",
- "apollo-utilities": "1.0.4",
- "graphql-anywhere": "4.1.1"
+ "apollo-cache": "1.1.2",
+ "apollo-utilities": "1.0.6",
+ "graphql-anywhere": "4.1.3"
}
},
"apollo-client": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.2.0.tgz",
- "integrity": "sha512-PSocHEbRoubHIV+GD/bHMACFstbEv9a4FLgu41d2djpwAIIiT37qgnfLbnvY7BlME0vKc7HIV6sYjLY3xnjY4Q==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.2.2.tgz",
+ "integrity": "sha512-ljV1JN4fWy2lW5kz4wSFqe4IT33rNNJmOMRSJ6V/VkZxxj4V2vwrm/YYpwQTZfXOPikTdUxi5GM9NvN1tbRI7w==",
"requires": {
- "@types/async": "2.0.46",
+ "@types/async": "2.0.47",
"@types/zen-observable": "0.5.3",
- "apollo-cache": "1.1.0",
+ "apollo-cache": "1.1.2",
"apollo-link": "1.0.7",
"apollo-link-dedup": "1.0.5",
- "apollo-utilities": "1.0.4",
- "symbol-observable": "1.1.0",
+ "apollo-utilities": "1.0.6",
+ "symbol-observable": "1.2.0",
"zen-observable": "0.7.1"
- },
- "dependencies": {
- "zen-observable": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz",
- "integrity": "sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg=="
- }
}
},
"apollo-link": {
@@ -323,8 +309,15 @@
"integrity": "sha512-oHzvpIDEy4UCNdbOw42wtOK1zOzdMrt4ulYyon24zT24MjicezTmXqJh2mR6whTl8RiUDLDY4ByusdKKXdcqHw==",
"requires": {
"@types/zen-observable": "0.5.3",
- "apollo-utilities": "1.0.4",
+ "apollo-utilities": "1.0.6",
"zen-observable": "0.6.1"
+ },
+ "dependencies": {
+ "zen-observable": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.6.1.tgz",
+ "integrity": "sha512-DKjFTL7siVLIUMZOFZ0alqMEdTsXPUxoCZzrvB2tdWEVN/6606Qh1nCfSTCAOZMrtcPzzFI3BXmwBKLAew52NA=="
+ }
}
},
"apollo-link-dedup": {
@@ -344,18 +337,18 @@
}
},
"apollo-link-state": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/apollo-link-state/-/apollo-link-state-0.3.1.tgz",
- "integrity": "sha512-NjoQ5xAHqOOavcmSmEsJHZsQFiEV7U5YRke7ez5GUJ5U0oV7njE6qtFemLJ1emyaH8FPSN5bUzaDN/jSIqQjuQ==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/apollo-link-state/-/apollo-link-state-0.4.0.tgz",
+ "integrity": "sha512-hzty8lhdmbaZXaW7ZGKYzCXQrkjxtBsi2ZmtXHbnAvWWIIE/RhSqU1iTLR/b0rKvBw6E+jI7arX8iUkQzK9j/g==",
"requires": {
- "apollo-utilities": "1.0.4",
- "graphql-anywhere": "4.1.1"
+ "apollo-utilities": "1.0.6",
+ "graphql-anywhere": "4.1.3"
}
},
"apollo-utilities": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.4.tgz",
- "integrity": "sha512-QnxSxRuJLCpa91P2Tzi3PCdpPydpBEawsHedr/hW7QrgOpn1fOicxgVrzhxt/au9rXSopwyDTBsGa7wEvz+DQQ=="
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.6.tgz",
+ "integrity": "sha512-3EUdGs19ZU5hN0zPF0h27blkd4aFqFxF0Qkec8o7iPFzxFeEf0UJGPg/b1St417K7Rta6/EDq2cYBQEzvOVq1g=="
},
"append-transform": {
"version": "0.4.0",
@@ -487,9 +480,9 @@
}
},
"assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"assign-symbols": {
"version": "1.0.0",
@@ -502,9 +495,12 @@
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
},
"async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "requires": {
+ "lodash": "4.17.5"
+ }
},
"async-each": {
"version": "1.0.1",
@@ -528,9 +524,9 @@
"integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10="
},
"auth0-js": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.1.0.tgz",
- "integrity": "sha1-Gevm5NX3jbH3dw+BOlYSiKGeqw8=",
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.2.1.tgz",
+ "integrity": "sha1-EQbYbrojdP9HdqQTdnH1dPr/YzI=",
"requires": {
"base64-js": "1.2.1",
"idtoken-verifier": "1.1.1",
@@ -541,11 +537,11 @@
}
},
"auth0-lock": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/auth0-lock/-/auth0-lock-11.1.0.tgz",
- "integrity": "sha1-tdeqja+Db/vjfNEMY1VW+zKzdPU=",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/auth0-lock/-/auth0-lock-11.2.2.tgz",
+ "integrity": "sha1-D1JM0BXCOkjDOxyhAKjLv8d/Ryc=",
"requires": {
- "auth0-js": "9.1.0",
+ "auth0-js": "9.2.1",
"blueimp-md5": "2.3.1",
"fbjs": "0.3.2",
"idtoken-verifier": "1.1.1",
@@ -565,7 +561,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
"integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=",
"requires": {
- "create-react-class": "15.6.2",
+ "create-react-class": "15.6.3",
"fbjs": "0.8.16",
"loose-envify": "1.3.1",
"object-assign": "4.1.1",
@@ -618,9 +614,9 @@
}
},
"aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.6.0",
@@ -680,7 +676,7 @@
"integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
"requires": {
"babel-code-frame": "6.26.0",
- "babel-generator": "6.26.0",
+ "babel-generator": "6.26.1",
"babel-helpers": "6.24.1",
"babel-messages": "6.23.0",
"babel-register": "6.26.0",
@@ -692,7 +688,7 @@
"convert-source-map": "1.5.1",
"debug": "2.6.9",
"json5": "0.5.1",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"minimatch": "3.0.4",
"path-is-absolute": "1.0.1",
"private": "0.1.8",
@@ -711,16 +707,16 @@
}
},
"babel-generator": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
- "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
+ "version": "6.26.1",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
"requires": {
"babel-messages": "6.23.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"detect-indent": "4.0.0",
"jsesc": "1.3.0",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"source-map": "0.5.7",
"trim-right": "1.0.1"
}
@@ -764,7 +760,7 @@
"babel-helper-function-name": "6.24.1",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
}
},
"babel-helper-explode-assignable-expression": {
@@ -823,7 +819,7 @@
"requires": {
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
}
},
"babel-helper-remap-async-to-generator": {
@@ -944,9 +940,9 @@
"resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.5.0.tgz",
"integrity": "sha1-RUnyihn7BRcKqe5Cm03g6sLSQB0=",
"requires": {
- "@babel/helper-annotate-as-pure": "7.0.0-beta.38",
+ "@babel/helper-annotate-as-pure": "7.0.0-beta.39",
"babel-types": "6.26.0",
- "stylis": "3.4.5"
+ "stylis": "3.4.8"
}
},
"babel-plugin-syntax-async-functions": {
@@ -1035,7 +1031,7 @@
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
}
},
"babel-plugin-transform-es2015-classes": {
@@ -1396,7 +1392,7 @@
"babel-runtime": "6.26.0",
"core-js": "2.5.3",
"home-or-tmp": "2.0.0",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"mkdirp": "0.5.1",
"source-map-support": "0.4.18"
},
@@ -1433,7 +1429,7 @@
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
}
},
"babel-traverse": {
@@ -1449,7 +1445,7 @@
"debug": "2.6.9",
"globals": "9.18.0",
"invariant": "2.2.2",
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
},
"dependencies": {
"debug": {
@@ -1469,8 +1465,15 @@
"requires": {
"babel-runtime": "6.26.0",
"esutils": "2.0.2",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"to-fast-properties": "1.0.3"
+ },
+ "dependencies": {
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ }
}
},
"babylon": {
@@ -1569,11 +1572,11 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
"boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
"requires": {
- "hoek": "2.16.3"
+ "hoek": "4.2.0"
}
},
"boxen": {
@@ -1714,8 +1717,8 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
"integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
"requires": {
- "caniuse-lite": "1.0.30000792",
- "electron-to-chromium": "1.3.31"
+ "caniuse-lite": "1.0.30000803",
+ "electron-to-chromium": "1.3.32"
}
},
"bser": {
@@ -1839,9 +1842,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30000792",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz",
- "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI="
+ "version": "1.0.30000803",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000803.tgz",
+ "integrity": "sha512-AoROHIFLv2iv5CG4nonOfT9ZCQ3JTN0GyEn8LG2sPb2Wc5cIyX/UwLYP0pnVajVF3LWH+mrO/DXBzmte0BK9cQ=="
},
"case-sensitive-paths-webpack-plugin": {
"version": "2.1.1",
@@ -1849,9 +1852,9 @@
"integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk="
},
"caseless": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c="
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"center-align": {
"version": "0.1.3",
@@ -2094,6 +2097,171 @@
"commander": "2.9.0",
"lcov-parse": "0.0.10",
"request": "2.79.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "requires": {
+ "chalk": "1.1.3",
+ "commander": "2.9.0",
+ "is-my-json-valid": "2.17.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "qs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw="
+ },
+ "request": {
+ "version": "2.79.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.1.0"
+ }
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
+ }
}
},
"collection-visit": {
@@ -2212,9 +2380,9 @@
"dev": true
},
"conventional-changelog-angular": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.0.tgz",
- "integrity": "sha1-CiagcfLJ/PzyuGugz79uYwG3W/o=",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.2.tgz",
+ "integrity": "sha512-LiGZkMJOCJFLNzDlZo3f+DpblcDSzsaYHUWhC+kzsqq+no4qwDP3uW0HVIHueXT4jJDhYNaE9t/XCD7vu7xR1g==",
"requires": {
"compare-func": "1.3.2",
"q": "1.5.1"
@@ -2226,13 +2394,13 @@
"integrity": "sha1-XbdWba18DLddr0f7spdve/mSjB0=",
"requires": {
"conventional-changelog-writer": "2.0.3",
- "conventional-commits-parser": "2.1.0",
+ "conventional-commits-parser": "2.1.1",
"dateformat": "1.0.12",
"get-pkg-repo": "1.4.0",
"git-raw-commits": "1.3.0",
"git-remote-origin-url": "2.0.0",
- "git-semver-tags": "1.2.3",
- "lodash": "4.17.4",
+ "git-semver-tags": "1.3.0",
+ "lodash": "4.17.5",
"normalize-package-data": "2.4.0",
"q": "1.5.1",
"read-pkg": "1.1.0",
@@ -2250,7 +2418,7 @@
"dateformat": "1.0.12",
"handlebars": "4.0.11",
"json-stringify-safe": "5.0.1",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"meow": "3.7.0",
"semver": "5.5.0",
"split": "1.0.1",
@@ -2267,13 +2435,13 @@
}
},
"conventional-commits-parser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.0.tgz",
- "integrity": "sha512-8MD05yN0Zb6aRsZnFX1ET+8rHWfWJk+my7ANCJZBU2mhz7TSB1fk2vZhkrwVy/PCllcTYAP/1T1NiWQ7Z01mKw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.1.tgz",
+ "integrity": "sha512-Qqxaul7TELPnTrm7KhWGjVTFTs7T9yUblzXugtXEff2C2uXFK4S0uVGqsyX7feQZzoFbXnJ1KdEs+IMmSxGbqQ==",
"requires": {
"JSONStream": "1.3.2",
"is-text-path": "1.0.1",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"meow": "3.7.0",
"split2": "2.2.0",
"through2": "2.0.3",
@@ -2349,9 +2517,9 @@
}
},
"create-react-class": {
- "version": "15.6.2",
- "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz",
- "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=",
+ "version": "15.6.3",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
+ "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
"requires": {
"fbjs": "0.8.16",
"loose-envify": "1.3.1",
@@ -2385,11 +2553,21 @@
}
},
"cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"requires": {
- "boom": "2.10.1"
+ "boom": "5.2.0"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ }
}
},
"crypto-browserify": {
@@ -2432,9 +2610,9 @@
}
},
"css-to-react-native": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.0.4.tgz",
- "integrity": "sha1-z0zEB1WLNHTUuovhos07bOcTEBs=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.1.1.tgz",
+ "integrity": "sha512-TrP3FRQ1AOhuElnUD4/I/Fd4HuSvnUH2KOmF0aYLjxbAX2kTd/WRUW3TuGkrsJwAGxNyYx8e/oaMSEKQKarrGQ==",
"requires": {
"css-color-keywords": "1.0.0",
"fbjs": "0.8.16",
@@ -2507,13 +2685,6 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
}
},
"date-now": {
@@ -2714,9 +2885,9 @@
"integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
},
"domain-browser": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
- "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
},
"domelementtype": {
"version": "1.3.0",
@@ -2763,9 +2934,9 @@
"integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0="
},
"downshift": {
- "version": "1.25.0",
- "resolved": "https://registry.npmjs.org/downshift/-/downshift-1.25.0.tgz",
- "integrity": "sha512-oYpEdGPW9BLuM6s1pmKtAi1eKxiCL7O+1t7U4Ai1zdfUb9UHT0Gsa3bw7x07CHBACT90MMV2gFzwql1swPWSng=="
+ "version": "1.27.1",
+ "resolved": "https://registry.npmjs.org/downshift/-/downshift-1.27.1.tgz",
+ "integrity": "sha512-rhvkL3VtVLIP1PafWnrSxe6ab0zeQ4PvdBhbmDeWFcAxsU4hwYmU8H+OOYJPRHQz19Zw4HoeN+BNeQV+BfUgnw=="
},
"duplexer3": {
"version": "0.1.4",
@@ -2787,9 +2958,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.31",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz",
- "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA=="
+ "version": "1.3.32",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.32.tgz",
+ "integrity": "sha1-EdBoTAhA4APEvoko+KxfNdvCtOY="
},
"elliptic": {
"version": "6.4.0",
@@ -2925,16 +3096,16 @@
}
},
"es6-promise": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz",
- "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ=="
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
+ "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
- "es6-promise": "4.2.2"
+ "es6-promise": "4.2.4"
}
},
"es6-set": {
@@ -3369,9 +3540,9 @@
}
},
"filesize": {
- "version": "3.5.11",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz",
- "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g=="
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.0.tgz",
+ "integrity": "sha512-g5OWtoZWcPI56js1DFhIEqyG9tnu/7sG3foHwgS9KGYFMfsYguI3E+PRVCmtmE96VajQIEMRU2OhN+ME589Gdw=="
},
"fill-range": {
"version": "4.0.0",
@@ -4489,13 +4660,6 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
}
},
"git-head": {
@@ -4538,9 +4702,9 @@
}
},
"git-semver-tags": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.2.3.tgz",
- "integrity": "sha1-GItFOIK/nXojr9Mbq6U32rc4jV0=",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.0.tgz",
+ "integrity": "sha1-sVSDOmq1w2DArTsaqbjxLqBt6Rk=",
"requires": {
"meow": "3.7.0",
"semver": "5.5.0"
@@ -4562,7 +4726,7 @@
"dotenv": "4.0.0",
"follow-redirects": "1.2.6",
"https-proxy-agent": "2.1.1",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"mime": "2.2.0",
"netrc": "0.1.4"
},
@@ -4723,11 +4887,11 @@
}
},
"graphql-anywhere": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.1.1.tgz",
- "integrity": "sha512-CMbuqNbp6nfHfOHswrDuEed+MxDSnLppHKjjte447P6fllqZi69D2bS/3QSfK/KONSgvpk3ptxNi4fR6WQFcSQ==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.1.3.tgz",
+ "integrity": "sha512-WYdNIRANlQrc0H1Dt9GkSWKthERSetjx6rKcPUTkhnhmqCzqlZ0K/KVBqhAQ7sqhV9d0m3BeiB5y2HqAkg4mIg==",
"requires": {
- "apollo-utilities": "1.0.4"
+ "apollo-utilities": "1.0.6"
}
},
"graphql-tag": {
@@ -4752,6 +4916,28 @@
"uglify-js": "2.8.29"
},
"dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "optional": true
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "optional": true,
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ }
+ },
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
@@ -4759,61 +4945,58 @@
"requires": {
"amdefine": "1.0.1"
}
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "optional": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "optional": true
+ }
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "optional": true
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "optional": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ }
}
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"requires": {
- "chalk": "1.1.3",
- "commander": "2.9.0",
- "is-my-json-valid": "2.17.1",
- "pinkie-promise": "2.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
+ "ajv": "5.5.2",
+ "har-schema": "2.0.0"
}
},
"has": {
@@ -4914,14 +5097,14 @@
}
},
"hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
"requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
+ "boom": "4.3.1",
+ "cryptiles": "3.1.2",
+ "hoek": "4.2.0",
+ "sntp": "2.1.0"
}
},
"hmac-drbg": {
@@ -4935,9 +5118,9 @@
}
},
"hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
+ "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
},
"hoist-non-react-statics": {
"version": "2.3.1",
@@ -5048,11 +5231,11 @@
}
},
"http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
- "assert-plus": "0.2.0",
+ "assert-plus": "1.0.0",
"jsprim": "1.4.1",
"sshpk": "1.13.1"
}
@@ -5516,17 +5699,6 @@
"js-yaml": "3.10.0",
"mkdirp": "0.5.1",
"once": "1.4.0"
- },
- "dependencies": {
- "async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
- "dev": true,
- "requires": {
- "lodash": "4.17.4"
- }
- }
}
},
"istanbul-lib-coverage": {
@@ -5550,7 +5722,7 @@
"integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==",
"dev": true,
"requires": {
- "babel-generator": "6.26.0",
+ "babel-generator": "6.26.1",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
@@ -5888,7 +6060,7 @@
"requires": {
"jest-mock": "22.1.0",
"jest-util": "22.1.4",
- "jsdom": "11.6.0"
+ "jsdom": "11.6.2"
}
},
"jest-environment-node": {
@@ -6028,7 +6200,7 @@
"jest-matcher-utils": "22.1.0",
"jest-message-util": "22.1.0",
"jest-snapshot": "22.1.2",
- "source-map-support": "0.5.2"
+ "source-map-support": "0.5.3"
},
"dependencies": {
"source-map": {
@@ -6038,9 +6210,9 @@
"dev": true
},
"source-map-support": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.2.tgz",
- "integrity": "sha512-9zHceZbQwERaMK1MiFguvx1dL9GQPLXInr2D/wUxAsuV6ZKc9F0DHYWeloMcalkYRbtanwqUakoDjvj55cL/4A==",
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz",
+ "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==",
"dev": true,
"requires": {
"source-map": "0.6.1"
@@ -6074,7 +6246,7 @@
"integrity": "sha512-kftcoawOeOVUGuGWmMupJt7FGLK1pqOrh02FlJwtImmPGZ2yTWCTx2D+N/g95qD2jCbQ/ntH1goBixhAIIxL+g==",
"dev": true,
"requires": {
- "@babel/code-frame": "7.0.0-beta.38",
+ "@babel/code-frame": "7.0.0-beta.39",
"chalk": "2.3.0",
"micromatch": "2.3.11",
"slash": "1.0.0",
@@ -6483,13 +6655,13 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"jsdom": {
- "version": "11.6.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.0.tgz",
- "integrity": "sha512-4lMxDCiQYK7qfVi9fKhDf2PpvXXeH/KAmcH6o0Ga7fApi8+lTBxRqGHWZ9B11SsK/pxQKOtsw413utw0M+hUrg==",
+ "version": "11.6.2",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz",
+ "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==",
"dev": true,
"requires": {
"abab": "1.0.4",
- "acorn": "5.3.0",
+ "acorn": "5.4.1",
"acorn-globals": "4.1.0",
"array-equal": "1.0.0",
"browser-process-hrtime": "0.1.2",
@@ -6514,148 +6686,6 @@
"whatwg-url": "6.4.0",
"ws": "4.0.0",
"xml-name-validator": "3.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "boom": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
- "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
- "dev": true,
- "requires": {
- "hoek": "4.2.0"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
- "cryptiles": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
- "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
- "dev": true,
- "requires": {
- "boom": "5.2.0"
- },
- "dependencies": {
- "boom": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
- "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
- "dev": true,
- "requires": {
- "hoek": "4.2.0"
- }
- }
- }
- },
- "har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
- "dev": true,
- "requires": {
- "ajv": "5.5.2",
- "har-schema": "2.0.0"
- }
- },
- "hawk": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
- "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
- "dev": true,
- "requires": {
- "boom": "4.3.1",
- "cryptiles": "3.1.2",
- "hoek": "4.2.0",
- "sntp": "2.1.0"
- }
- },
- "hoek": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
- "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
- "dev": true
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "jsprim": "1.4.1",
- "sshpk": "1.13.1"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "request": {
- "version": "2.83.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
- "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
- "dev": true,
- "requires": {
- "aws-sign2": "0.7.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.3.1",
- "har-validator": "5.0.3",
- "hawk": "6.0.2",
- "http-signature": "1.2.0",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "oauth-sign": "0.8.2",
- "performance-now": "2.1.0",
- "qs": "6.5.1",
- "safe-buffer": "5.1.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
- "tunnel-agent": "0.6.0",
- "uuid": "3.1.0"
- }
- },
- "sntp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
- "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
- "dev": true,
- "requires": {
- "hoek": "4.2.0"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- }
}
},
"jsesc": {
@@ -6800,13 +6830,6 @@
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
}
},
"junk": {
@@ -6914,9 +6937,9 @@
}
},
"lodash": {
- "version": "4.17.4",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ "version": "4.17.5",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
},
"lodash._baseassign": {
"version": "3.2.0",
@@ -7167,7 +7190,7 @@
"resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
"integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
"requires": {
- "mimic-fn": "1.1.0"
+ "mimic-fn": "1.2.0"
}
},
"memory-fs": {
@@ -7301,9 +7324,9 @@
}
},
"mimic-fn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
- "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
},
"mimic-response": {
"version": "1.0.0",
@@ -7570,6 +7593,21 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
+ "babel-generator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
+ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.5",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ }
+ },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -7621,19 +7659,19 @@
"console-browserify": "1.1.0",
"constants-browserify": "1.0.0",
"crypto-browserify": "3.12.0",
- "domain-browser": "1.1.7",
+ "domain-browser": "1.2.0",
"events": "1.1.1",
"https-browserify": "1.0.0",
"os-browserify": "0.3.0",
"path-browserify": "0.0.0",
"process": "0.11.10",
- "punycode": "1.4.1",
+ "punycode": "1.3.2",
"querystring-es3": "0.2.1",
"readable-stream": "2.3.3",
"stream-browserify": "2.0.1",
"stream-http": "2.8.0",
"string_decoder": "1.0.3",
- "timers-browserify": "2.0.4",
+ "timers-browserify": "2.0.6",
"tty-browserify": "0.0.0",
"url": "0.11.0",
"util": "0.10.3",
@@ -7659,6 +7697,11 @@
"which": "1.3.0"
}
},
+ "nodemailer": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.4.2.tgz",
+ "integrity": "sha512-sstDxbCSPHDXrWRQhH++khr3yVU0CGvH2dCtAHOPQQ0lRR7xwq2txItEXckMpX481B/cN+0akER2bfExh7Gu/Q=="
+ },
"nopt": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
@@ -7693,7 +7736,7 @@
"integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
"requires": {
"prepend-http": "2.0.0",
- "query-string": "5.0.1",
+ "query-string": "5.1.0",
"sort-keys": "2.0.0"
}
},
@@ -7719,7 +7762,7 @@
"npm-package-arg": "5.1.2",
"npmlog": "4.1.2",
"once": "1.4.0",
- "request": "2.79.0",
+ "request": "2.83.0",
"retry": "0.10.1",
"semver": "5.5.0",
"slide": "1.1.6",
@@ -7952,7 +7995,7 @@
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"requires": {
"minimist": "0.0.10",
- "wordwrap": "0.0.3"
+ "wordwrap": "0.0.2"
},
"dependencies": {
"minimist": {
@@ -8492,9 +8535,9 @@
}
},
"punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
},
"q": {
"version": "1.5.1",
@@ -8507,9 +8550,9 @@
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
},
"query-string": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.0.1.tgz",
- "integrity": "sha512-aM+MkQClojlNiKkO09tiN2Fv8jM/L7GWIjG2liWeKljlOdOPNWr+bW3KQ+w5V/uKprpezC7fAsAMsJtJ+2rLKA==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz",
+ "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==",
"requires": {
"decode-uri-component": "0.2.0",
"object-assign": "4.1.1",
@@ -8699,7 +8742,7 @@
"resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz",
"integrity": "sha1-RABCa8+oDKpnJMd1VpUxUgn6Swc=",
"requires": {
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
}
},
"react-stripe-checkout": {
@@ -8976,46 +9019,38 @@
}
},
"request": {
- "version": "2.79.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
- "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+ "version": "2.83.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
+ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
"requires": {
- "aws-sign2": "0.6.0",
+ "aws-sign2": "0.7.0",
"aws4": "1.6.0",
- "caseless": "0.11.0",
+ "caseless": "0.12.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
+ "form-data": "2.3.1",
+ "har-validator": "5.0.3",
+ "hawk": "6.0.2",
+ "http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
- "qs": "6.3.2",
+ "performance-now": "2.1.0",
+ "qs": "6.5.1",
+ "safe-buffer": "5.1.1",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
- "tunnel-agent": "0.4.3",
+ "tunnel-agent": "0.6.0",
"uuid": "3.1.0"
},
"dependencies": {
- "form-data": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
- "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.17"
- }
- },
- "qs": {
- "version": "6.3.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
- "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw="
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
}
}
},
@@ -9025,7 +9060,7 @@
"integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
"dev": true,
"requires": {
- "lodash": "4.17.4"
+ "lodash": "4.17.5"
}
},
"request-promise-native": {
@@ -9261,7 +9296,7 @@
"fs-extra": "4.0.3",
"git-head": "1.20.1",
"github": "12.1.0",
- "lodash": "4.17.4",
+ "lodash": "4.17.5",
"nerf-dart": "1.0.0",
"nopt": "4.0.1",
"normalize-package-data": "2.4.0",
@@ -9540,11 +9575,11 @@
}
},
"sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
"requires": {
- "hoek": "2.16.3"
+ "hoek": "4.2.0"
}
},
"sort-keys": {
@@ -9685,13 +9720,6 @@
"getpass": "0.1.7",
"jsbn": "0.1.1",
"tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
}
},
"ssri": {
@@ -9897,17 +9925,18 @@
}
},
"styled-components": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.0.2.tgz",
- "integrity": "sha1-281m7oTURO5DMqf3QCfopnUZFZM=",
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.1.6.tgz",
+ "integrity": "sha1-nEQxRvqCxmWan2TdSTvyICSANC4=",
"requires": {
"buffer": "5.0.8",
- "css-to-react-native": "2.0.4",
+ "css-to-react-native": "2.1.1",
"fbjs": "0.8.16",
"hoist-non-react-statics": "1.2.0",
"is-plain-object": "2.0.4",
"prop-types": "15.6.0",
- "stylis": "3.4.5",
+ "stylis": "3.4.8",
+ "stylis-rule-sheet": "0.0.7",
"supports-color": "3.2.3"
},
"dependencies": {
@@ -9972,13 +10001,18 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "stylis": {
+ "version": "3.4.5",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.4.5.tgz",
+ "integrity": "sha512-xxfO3FlxEKcNL1gTX4Tb/tyDLOlUcWCQopceIoQe7sBsX81Na83PNba7DFqMqgb9Rn1VjHkSAWdS9uhL/NVo+Q=="
}
}
},
"stylis": {
- "version": "3.4.5",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.4.5.tgz",
- "integrity": "sha512-xxfO3FlxEKcNL1gTX4Tb/tyDLOlUcWCQopceIoQe7sBsX81Na83PNba7DFqMqgb9Rn1VjHkSAWdS9uhL/NVo+Q=="
+ "version": "3.4.8",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.4.8.tgz",
+ "integrity": "sha512-RVhA1z8dOpHP3hr5B//LrGQzh9sz6Merg4GuOJQu8ZxHP9GmR+cDE6LHkL6l76ASY8pfnsWa1ycjZKjSN2NvLA=="
},
"stylis-rule-sheet": {
"version": "0.0.7",
@@ -10011,9 +10045,9 @@
}
},
"symbol-observable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz",
- "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
},
"symbol-tree": {
"version": "3.2.2",
@@ -10190,9 +10224,9 @@
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8="
},
"timers-browserify": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
- "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz",
+ "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==",
"requires": {
"setimmediate": "1.0.5"
}
@@ -10209,9 +10243,9 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
},
"to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
},
"to-object-path": {
"version": "0.3.0",
@@ -10335,6 +10369,13 @@
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
"requires": {
"punycode": "1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ }
}
},
"tr46": {
@@ -10399,9 +10440,12 @@
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
},
"tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
},
"tweetnacl": {
"version": "0.14.5",
@@ -10467,11 +10511,6 @@
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
},
- "wordwrap": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
- },
"yargs": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
@@ -10599,13 +10638,6 @@
"requires": {
"punycode": "1.3.2",
"querystring": "0.2.0"
- },
- "dependencies": {
- "punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
- }
}
},
"url-join": {
@@ -10772,13 +10804,6 @@
"assert-plus": "1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
}
},
"vm-browserify": {
@@ -10865,14 +10890,6 @@
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
},
- "async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
- "requires": {
- "lodash": "4.17.4"
- }
- },
"braces": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
@@ -10977,7 +10994,7 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz",
"integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==",
"requires": {
- "acorn": "5.3.0",
+ "acorn": "5.4.1",
"acorn-dynamic-import": "2.0.2",
"ajv": "5.5.2",
"ajv-keywords": "2.1.1",
@@ -11001,14 +11018,6 @@
"yargs": "8.0.2"
},
"dependencies": {
- "async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
- "requires": {
- "lodash": "4.17.4"
- }
- },
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
@@ -11257,9 +11266,9 @@
"integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU="
},
"wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
},
"wrap-ansi": {
"version": "2.1.0",
@@ -11326,8 +11335,8 @@
"requires": {
"chalk": "1.1.3",
"debug": "2.6.9",
- "filesize": "3.5.11",
- "lodash": "4.17.4",
+ "filesize": "3.6.0",
+ "lodash": "4.17.5",
"mkdirp": "0.5.1",
"moment": "2.20.1"
},
@@ -11485,9 +11494,9 @@
}
},
"zen-observable": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.6.1.tgz",
- "integrity": "sha512-DKjFTL7siVLIUMZOFZ0alqMEdTsXPUxoCZzrvB2tdWEVN/6606Qh1nCfSTCAOZMrtcPzzFI3BXmwBKLAew52NA=="
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz",
+ "integrity": "sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg=="
}
}
}
diff --git a/frontend/package.json b/frontend/package.json
index 7cd5e70..53e5f51 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -18,7 +18,7 @@
"apollo-client": "^2.2.0",
"apollo-link": "^1.0.7",
"apollo-link-http": "^1.3.2",
- "apollo-link-state": "^0.3.1",
+ "apollo-link-state": "^0.4.0",
"auth0-lock": "^11.1.0",
"babel-plugin-styled-components": "^1.5.0",
"downshift": "^1.25.0",
@@ -32,6 +32,7 @@
"micro-dev": "^2.2.0",
"next": "^4.2.3",
"next-routes": "^1.2.0",
+ "nodemailer": "^4.4.2",
"nprogress": "^0.2.0",
"prop-types": "^15.6.0",
"react": "^16.2.0",
diff --git a/frontend/pages/admin/update.js b/frontend/pages/admin/update.js
index ab98add..e9cd745 100644
--- a/frontend/pages/admin/update.js
+++ b/frontend/pages/admin/update.js
@@ -1,15 +1,16 @@
import { Component } from 'react';
import withData from '../../lib/withData';
import UpdateItem from '../../components/UpdateItem';
+import Page from '../../components/Page';
class Home extends Component {
render() {
return (
- <div>
+ <Page>
<p>Update You Item!</p>
<UpdateItem id={this.props.url.query.id} />
- </div>
- )
+ </Page>
+ );
}
}
diff --git a/frontend/pages/signup.js b/frontend/pages/signup.js
index f36b16f..1ea3794 100644
--- a/frontend/pages/signup.js
+++ b/frontend/pages/signup.js
@@ -1,21 +1,17 @@
import { Component } from 'react';
import withData from '../lib/withData';
-import Items from '../components/Items';
-import CreateItem from '../components/CreateItem';
import Signup from '../components/Signup';
-import LoginAuth0 from '../components/LoginAuth0';
+import Signin from '../components/Signin';
import Page from '../components/Page';
+import RequestReset from '../components/RequestReset';
-class SignUpPage extends Component {
- render() {
- return (
- <Page>
- <p>I'm the signup url!</p>
- <LoginAuth0></LoginAuth0>
- <Signup />
- </Page>
- )
- }
-}
+const SignUpPage = () => (
+ <Page>
+ <p>I'm the Sign Up url!</p>
+ <Signup />
+ {/* <Signin /> */}
+ <RequestReset />
+ </Page>
+);
export default withData(SignUpPage);
diff --git a/frontend/queries/index.js b/frontend/queries/index.js
index fb7445e..ea02c8b 100644
--- a/frontend/queries/index.js
+++ b/frontend/queries/index.js
@@ -1,5 +1,5 @@
-import gql from "graphql-tag";
-import { itemDetails } from "./fragments";
+import gql from 'graphql-tag';
+import { itemDetails } from './fragments';
export const CREATE_ITEM_MUTATION = gql`
${itemDetails}
@@ -10,28 +10,40 @@ export const CREATE_ITEM_MUTATION = gql`
}
`;
-export const CREATE_USER_MUTATION = gql`
- mutation CreateUserMutation(
- $email: String!
- $name: String!
- $idToken: String!
- ) {
- createUser(
- email: $email
- name: $name
- authProvider: { auth0: { idToken: $idToken } }
- ) {
- id
- email
- name
- cart {
+export const SIGNUP_MUTATION = gql`
+ mutation signup($email: String!, $name: String!, $password: String!) {
+ signup(email: $email, name: $name, password: $password) {
+ token
+ user {
id
- title
+ email
+ name
}
}
}
`;
+export const SIGNIN_MUTATION = gql`
+ mutation signup($email: String!, $password: String!) {
+ signin(email: $email, password: $password) {
+ token
+ user {
+ id
+ email
+ name
+ }
+ }
+ }
+`;
+
+export const REQUEST_RESET_MUTATION = gql`
+ mutation requestReset($email: String!) {
+ requestReset(email: $email) {
+ id
+ }
+ }
+`;
+
export const CREATE_ORDER_MUTATION = gql`
mutation CreateOrderMutation($token: String!, $userId: ID!, $itemId: ID!) {
createOrder(token: $token, userId: $userId, itemId: $itemId) {
@@ -76,7 +88,7 @@ export const ALL_ITEMS_QUERY = gql`
export const SINGLE_ITEM_QUERY = gql`
${itemDetails}
query FindItem($id: ID!) {
- Item(id: $id) {
+ items(where: { id: $id }) {
...itemDetails
}
}
@@ -98,8 +110,8 @@ export const SEARCH_ITEMS_QUERY = gql`
}
`;
-export const DELETE_ITEM_MUTATION = gql`
- mutation DelteItem($id: ID!) {
+export const REMOVE_ITEM_MUTATION = gql`
+ mutation RemoveItem($id: ID!) {
deleteItem(id: $id) {
id
title
@@ -115,14 +127,14 @@ export const UPDATE_LINK_MUTATION = gql`
$title: String!
$description: String!
$price: Int!
- $fullPrice: Int!
+ # $fullPrice: Int!
) {
updateItem(
id: $id
description: $description
title: $title
price: $price
- fullPrice: $fullPrice
+ # fullPrice: $fullPrice
) {
...itemDetails
}
@@ -131,19 +143,10 @@ export const UPDATE_LINK_MUTATION = gql`
export const CURRENT_USER_QUERY = gql`
query userQuery {
- user {
+ me {
id
- name
email
- cart {
- id
- price
- title
- image {
- id
- secret
- }
- }
+ name
}
}
`;