summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-09-13 14:18:56 -0400
committerWes Bos <wesbos@gmail.com>2018-09-13 14:18:56 -0400
commit8a5825d52271d712ec7c8348447d433067e13ef2 (patch)
treeba07c218c1b2d4e59c154f2059b69fd858ae65fe
parentb0d25a9ad3cc1df2fcc11ddb84e4603b94520b09 (diff)
DONE
-rw-r--r--finished-application/backend/.vscode/settings.json5
-rw-r--r--finished-application/backend/README.md7
-rw-r--r--finished-application/backend/src/db.js10
-rw-r--r--finished-application/backend/src/resolvers/Query.js69
-rw-r--r--finished-application/backend/variables.env.sample5
-rw-r--r--finished-application/frontend/.vscode/settings.json7
-rw-r--r--finished-application/frontend/README.md59
-rw-r--r--finished-application/frontend/__tests__/CartItem.test.js33
-rw-r--r--finished-application/frontend/__tests__/EditUser.test.js75
-rw-r--r--finished-application/frontend/__tests__/Item.test.js22
-rw-r--r--finished-application/frontend/__tests__/Nav.test.js66
-rw-r--r--finished-application/frontend/__tests__/PleaseSignIn.test.js80
-rw-r--r--finished-application/frontend/__tests__/__snapshots__/CartCount.test.js.snap205
-rw-r--r--finished-application/frontend/__tests__/__snapshots__/CartItem.test.js.snap33
-rw-r--r--finished-application/frontend/__tests__/__snapshots__/EditUser.test.js.snap47
-rw-r--r--finished-application/frontend/__tests__/__snapshots__/SingleItem.test.js.snap32
-rw-r--r--finished-application/frontend/components/AddToCart.js68
-rw-r--r--finished-application/frontend/components/DeleteItem.js71
-rw-r--r--finished-application/frontend/components/Dump.js19
-rw-r--r--finished-application/frontend/components/EditUser.js81
-rw-r--r--finished-application/frontend/components/LoadingItem.js22
-rw-r--r--finished-application/frontend/components/Meta.js16
-rw-r--r--finished-application/frontend/components/Nav.js59
-rw-r--r--finished-application/frontend/components/Permissions.js133
-rw-r--r--finished-application/frontend/components/PleaseSignIn.js46
-rw-r--r--finished-application/frontend/components/SingleItem.js77
-rw-r--r--finished-application/frontend/components/UpdateItem.js105
-rw-r--r--finished-application/frontend/config.js3
-rw-r--r--finished-application/frontend/pages/diagram.js202
-rw-r--r--finished-application/frontend/pages/item.js7
-rw-r--r--finished-application/frontend/pages/items.js3
-rw-r--r--finished-application/frontend/pages/me.js13
-rw-r--r--finished-application/frontend/pages/order.js7
-rw-r--r--finished-application/frontend/pages/orders.js10
-rw-r--r--finished-application/frontend/pages/permissions.js10
-rw-r--r--finished-application/frontend/pages/reset.js10
-rw-r--r--finished-application/frontend/pages/sell.js10
-rw-r--r--finished-application/frontend/pages/update.js15
-rw-r--r--sick-fits/backend/package.json22
-rwxr-xr-x[-rw-r--r--]stepped-solutions/65/frontend/__tests__/AddToCart.test.js (renamed from finished-application/frontend/__tests__/AddToCart.test.js)45
-rwxr-xr-x[-rw-r--r--]stepped-solutions/65/frontend/__tests__/Cart.test.js (renamed from finished-application/frontend/__tests__/Cart.test.js)15
-rwxr-xr-x[-rw-r--r--]stepped-solutions/65/frontend/__tests__/RemoveFromCart.test.js (renamed from finished-application/frontend/__tests__/RemoveFromCart.test.js)39
-rwxr-xr-xstepped-solutions/65/frontend/components/AddToCart.js36
-rwxr-xr-x[-rw-r--r--]stepped-solutions/65/frontend/components/RemoveFromCart.js (renamed from finished-application/frontend/components/RemoveFromCart.js)30
-rwxr-xr-xstepped-solutions/66/backend/prisma.yml7
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/backend/src/generated/prisma.graphql (renamed from finished-application/backend/src/generated/prisma.graphql)549
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/frontend/__tests__/Order.test.js (renamed from finished-application/frontend/__tests__/Order.test.js)24
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/frontend/__tests__/TakeMyMoney.test.js (renamed from finished-application/frontend/__tests__/TakeMyMoney.test.js)64
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/frontend/__tests__/__snapshots__/Order.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/Order.test.js.snap)24
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap)8
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/frontend/components/Order.js (renamed from finished-application/frontend/components/Order.js)30
-rwxr-xr-x[-rw-r--r--]stepped-solutions/66/frontend/components/TakeMyMoney.js (renamed from finished-application/frontend/components/TakeMyMoney.js)36
-rw-r--r--stepped-solutions/FINISHED/backend/.graphqlconfig.yml (renamed from finished-application/backend/.graphqlconfig.yml)0
-rw-r--r--stepped-solutions/FINISHED/backend/datamodel.graphql (renamed from finished-application/backend/prisma/datamodel.graphql)35
-rw-r--r--stepped-solutions/FINISHED/backend/package-lock.json (renamed from finished-application/backend/package-lock.json)3369
-rw-r--r--stepped-solutions/FINISHED/backend/package.json (renamed from finished-application/backend/package.json)24
-rw-r--r--stepped-solutions/FINISHED/backend/prisma.yml7
-rw-r--r--stepped-solutions/FINISHED/backend/prisma/datamodel.graphql1
-rw-r--r--stepped-solutions/FINISHED/backend/prisma/prisma.yml (renamed from finished-application/backend/prisma/prisma.yml)0
-rw-r--r--stepped-solutions/FINISHED/backend/src/createServer.js (renamed from finished-application/backend/src/createServer.js)8
-rw-r--r--stepped-solutions/FINISHED/backend/src/db.js11
-rw-r--r--stepped-solutions/FINISHED/backend/src/generated/prisma.graphql1862
-rw-r--r--stepped-solutions/FINISHED/backend/src/index.js (renamed from finished-application/backend/src/index.js)18
-rw-r--r--stepped-solutions/FINISHED/backend/src/mail.js (renamed from finished-application/backend/src/mail.js)14
-rw-r--r--stepped-solutions/FINISHED/backend/src/resolvers/Mutation.js (renamed from finished-application/backend/src/resolvers/Mutation.js)380
-rw-r--r--stepped-solutions/FINISHED/backend/src/resolvers/Query.js69
-rw-r--r--stepped-solutions/FINISHED/backend/src/schema.graphql (renamed from finished-application/backend/src/schema.graphql)41
-rw-r--r--stepped-solutions/FINISHED/backend/src/stripe.js (renamed from finished-application/backend/src/stripe.js)0
-rw-r--r--stepped-solutions/FINISHED/backend/src/utils.js (renamed from finished-application/backend/src/utils.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/AddToCart.test.js97
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Cart.test.js39
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/CartCount.test.js (renamed from finished-application/frontend/__tests__/CartCount.test.js)12
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/CreateItem.test.js (renamed from finished-application/frontend/__tests__/CreateItem.test.js)84
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Item.test.js39
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Nav.test.js76
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Order.test.js27
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Pagination.test.js (renamed from finished-application/frontend/__tests__/Pagination.test.js)33
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/PleaseSignIn.test.js51
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/RemoveFromCart.test.js67
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/RequestReset.test.js (renamed from finished-application/frontend/__tests__/ResetRequest.test.js)36
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js (renamed from finished-application/frontend/__tests__/Signup.test.js)37
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/SingleItem.test.js (renamed from finished-application/frontend/__tests__/SingleItem.test.js)52
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/TakeMyMoney.test.js98
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/AddToCart.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/AddToCart.test.js.snap)6
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Cart.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/Cart.test.js.snap)20
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CartCount.test.js.snap79
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CreateItem.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/CreateItem.test.js.snap)38
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Item.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/Item.test.js.snap)24
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Nav.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/Nav.test.js.snap)22
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Order.test.js.snap118
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Pagination.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/Pagination.test.js.snap)26
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/RemoveFromCart.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/RemoveFromCart.test.js.snap)4
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/RequestReset.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap)18
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Signup.test.js.snap (renamed from finished-application/frontend/__tests__/__snapshots__/Signup.test.js.snap)16
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/SingleItem.test.js.snap32
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap67
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/formatMoney.test.js (renamed from finished-application/frontend/__tests__/formatMoney.test.js)6
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/mocking.test.js36
-rw-r--r--stepped-solutions/FINISHED/frontend/__tests__/sample.test.js19
-rw-r--r--stepped-solutions/FINISHED/frontend/components/AddToCart.js36
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Cart.js (renamed from finished-application/frontend/components/Cart.js)52
-rw-r--r--stepped-solutions/FINISHED/frontend/components/CartCount.js (renamed from finished-application/frontend/components/CartCount.js)42
-rw-r--r--stepped-solutions/FINISHED/frontend/components/CartItem.js (renamed from finished-application/frontend/components/CartItem.js)16
-rw-r--r--stepped-solutions/FINISHED/frontend/components/CreateItem.js (renamed from finished-application/frontend/components/CreateItem.js)96
-rw-r--r--stepped-solutions/FINISHED/frontend/components/DeleteItem.js50
-rw-r--r--stepped-solutions/FINISHED/frontend/components/ErrorMessage.js (renamed from finished-application/frontend/components/ErrorMessage.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Header.js (renamed from finished-application/frontend/components/Header.js)56
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Item.js (renamed from finished-application/frontend/components/Item.js)23
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Items.js (renamed from finished-application/frontend/components/Items.js)49
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Meta.js13
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Nav.js49
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Order.js92
-rw-r--r--stepped-solutions/FINISHED/frontend/components/OrderList.js (renamed from finished-application/frontend/components/OrderList.js)39
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Page.js (renamed from finished-application/frontend/components/Page.js)63
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Pagination.js (renamed from finished-application/frontend/components/Pagination.js)35
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Permissions.js131
-rw-r--r--stepped-solutions/FINISHED/frontend/components/PleaseSignIn.js22
-rw-r--r--stepped-solutions/FINISHED/frontend/components/RemoveFromCart.js71
-rw-r--r--stepped-solutions/FINISHED/frontend/components/RequestReset.js (renamed from finished-application/frontend/components/ResetRequest.js)33
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Reset.js (renamed from finished-application/frontend/components/Reset.js)55
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Search.js (renamed from finished-application/frontend/components/Search.js)39
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Signin.js (renamed from finished-application/frontend/components/Signin.js)33
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Signout.js (renamed from finished-application/frontend/components/Signout.js)16
-rw-r--r--stepped-solutions/FINISHED/frontend/components/Signup.js (renamed from finished-application/frontend/components/Signup.js)30
-rw-r--r--stepped-solutions/FINISHED/frontend/components/SingleItem.js70
-rw-r--r--stepped-solutions/FINISHED/frontend/components/TakeMyMoney.js79
-rw-r--r--stepped-solutions/FINISHED/frontend/components/UpdateItem.js117
-rw-r--r--stepped-solutions/FINISHED/frontend/components/User.js (renamed from finished-application/frontend/components/User.js)10
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/CartStyles.js (renamed from finished-application/frontend/components/styles/CartStyles.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/CloseButton.js (renamed from finished-application/frontend/components/styles/CloseButton.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/DropDown.js (renamed from finished-application/frontend/components/styles/DropDown.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/Form.js (renamed from finished-application/frontend/components/styles/Form.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/ItemStyles.js (renamed from finished-application/frontend/components/styles/ItemStyles.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/NavStyles.js (renamed from finished-application/frontend/components/styles/NavStyles.js)2
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/OrderItemStyles.js (renamed from finished-application/frontend/components/styles/OrderItemStyles.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/OrderStyles.js (renamed from finished-application/frontend/components/styles/OrderStyles.js)1
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/PaginationStyles.js (renamed from finished-application/frontend/components/styles/PaginationStyles.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/PriceTag.js (renamed from finished-application/frontend/components/styles/PriceTag.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/SickButton.js (renamed from finished-application/frontend/components/styles/SickButton.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/Supreme.js (renamed from finished-application/frontend/components/styles/Supreme.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/Table.js (renamed from finished-application/frontend/components/styles/Table.js)6
-rw-r--r--stepped-solutions/FINISHED/frontend/components/styles/Title.js (renamed from finished-application/frontend/components/styles/Title.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/config.js4
-rw-r--r--stepped-solutions/FINISHED/frontend/jest.setup.js (renamed from finished-application/frontend/jest.setup.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/lib/calcTotalPrice.js (renamed from finished-application/frontend/lib/calcTotalPrice.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/lib/formatMoney.js (renamed from finished-application/frontend/lib/formatMoney.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/lib/testUtils.js (renamed from finished-application/frontend/lib/testUtils.js)0
-rw-r--r--stepped-solutions/FINISHED/frontend/lib/withData.js (renamed from finished-application/frontend/lib/withData.js)15
-rw-r--r--stepped-solutions/FINISHED/frontend/notes.md (renamed from finished-application/frontend/notes.md)0
-rw-r--r--stepped-solutions/FINISHED/frontend/package-lock.json (renamed from finished-application/frontend/package-lock.json)2939
-rw-r--r--stepped-solutions/FINISHED/frontend/package.json (renamed from finished-application/frontend/package.json)52
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/.gitkeep0
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/_app.js (renamed from finished-application/frontend/pages/_app.js)11
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/_document.js (renamed from finished-application/frontend/pages/_document.js)4
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/index.js (renamed from finished-application/frontend/pages/index.js)6
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/item.js9
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/items.js3
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/order.js12
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/orders.js12
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/permissions.js12
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/reset.js10
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/sell.js (renamed from finished-application/frontend/pages/add.js)10
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/signup.js (renamed from finished-application/frontend/pages/signup.js)10
-rw-r--r--stepped-solutions/FINISHED/frontend/pages/update.js9
-rw-r--r--stepped-solutions/FINISHED/frontend/static/favicon.png (renamed from finished-application/frontend/static/favicon.png)bin5122 -> 5122 bytes
-rw-r--r--stepped-solutions/FINISHED/frontend/static/nprogress.css (renamed from finished-application/frontend/static/nprogress.css)0
-rwxr-xr-xstepped-solutions/FINISHED/frontend/static/radnikanext-medium-webfont.woff2 (renamed from finished-application/frontend/static/radnikanext-medium-webfont.woff2)bin20012 -> 20012 bytes
167 files changed, 7950 insertions, 6383 deletions
diff --git a/finished-application/backend/.vscode/settings.json b/finished-application/backend/.vscode/settings.json
deleted file mode 100644
index 3f5e825..0000000
--- a/finished-application/backend/.vscode/settings.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "workbench.colorCustomizations": {
- "titleBar.activeBackground": "#FF2C70",
- "titleBar.inactiveBackground": "#FF2C70CC"
- }
diff --git a/finished-application/backend/README.md b/finished-application/backend/README.md
deleted file mode 100644
index cce3c38..0000000
--- a/finished-application/backend/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-what
-<!--
-### Cloudinary
-
-1. go to your settings and turn on unsigned uploading
-2. -->
-
diff --git a/finished-application/backend/src/db.js b/finished-application/backend/src/db.js
deleted file mode 100644
index e8caa14..0000000
--- a/finished-application/backend/src/db.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const { Prisma } = require('prisma-binding');
-
-const db = new Prisma({
- typeDefs: 'src/generated/prisma.graphql',
- endpoint: process.env.PRISMA_ENDPOINT, // the endpoint of the Prisma DB service (value is set in variables.env)
- secret: process.env.PRISMA_SECRET, // taken from prisma/prisma.yml (value is set in .env)
- debug: false, // log all GraphQL queries & mutations
-});
-
-module.exports = db; \ No newline at end of file
diff --git a/finished-application/backend/src/resolvers/Query.js b/finished-application/backend/src/resolvers/Query.js
deleted file mode 100644
index a51ead5..0000000
--- a/finished-application/backend/src/resolvers/Query.js
+++ /dev/null
@@ -1,69 +0,0 @@
-const { hasPermission } = require('../utils');
-
-const { forwardTo } = require('prisma-binding');
-
-const Query = {
- items: forwardTo('db'),
- itemsConnection: forwardTo('db'),
- async users(parent, args, ctx, info) {
- if (!ctx.request.userId) {
- throw new Error('Insufficient Permissions');
- }
-
- return ctx.db.query.users({}, info);
- },
-
- async order(parent, args, ctx, info) {
- // 1. make sure they are signed in
- if (!ctx.request.userId) {
- throw new Error('You Must be signed in to view an order');
- }
-
- // 2. Create the query
- const where = {
- id: args.id,
- user: {
- id: ctx.request.userId,
- },
- };
- // 3. Fire off the query
- const [order] = await ctx.db.query.orders({ where }, info);
-
- // 4. Check that they are allowed to view the order
- if (order.user.id !== ctx.request.userId || hasPermission(ctx.request.user, ['ADMIN'])) {
- throw new Error("You don't have permission");
- }
- // 5. If everything checks out, return the order
- return order;
- },
-
- me(parent, args, ctx, info) {
- if (!ctx.request.userId) {
- return null; // don't error out, just return nothing
- }
-
- return ctx.db.query.user(
- {
- where: { id: ctx.request.userId },
- },
- info
- );
- },
-
- async orders(parent, args, ctx, info) {
- const { userId } = ctx.request;
- if (!userId) {
- throw new Error('You must be signed in to see your orders');
- }
- return ctx.db.query.orders(
- {
- where: {
- user: { id: userId },
- },
- },
- info
- );
- },
-};
-
-module.exports = Query;
diff --git a/finished-application/backend/variables.env.sample b/finished-application/backend/variables.env.sample
deleted file mode 100644
index 12cd06d..0000000
--- a/finished-application/backend/variables.env.sample
+++ /dev/null
@@ -1,5 +0,0 @@
-PRISMA_ENDPOINT="https://FILLMEIN"
-PRISMA_SECRET="omgchangeme"
-APP_SECRET="you-gotta-make-your-own"
-STRIPE_SECRET="sk_OMGGETYOUROWN"
-PORT=4444 \ No newline at end of file
diff --git a/finished-application/frontend/.vscode/settings.json b/finished-application/frontend/.vscode/settings.json
deleted file mode 100644
index 2fd8efc..0000000
--- a/finished-application/frontend/.vscode/settings.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "workbench.colorCustomizations": {
- "titleBar.activeForeground": "#000",
- "titleBar.inactiveForeground": "#000000CC",
- "titleBar.activeBackground": "#FFC600",
- "titleBar.inactiveBackground": "#FFC600CC"
- }
diff --git a/finished-application/frontend/README.md b/finished-application/frontend/README.md
deleted file mode 100644
index 9914799..0000000
--- a/finished-application/frontend/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Advanced-React
-
-<!--
-## Marketing
-
-I love this look and feel: http://wes.io/lxQe
-https://www.youtube.com/watch?v=Y0ePh9OxSWo
-
-
-
-Descriptions for Images
-
-Nudie Belt
-
-Our accessories are all about genuine leather and denim. Belts, leather wallets cases, denim bags, Knitted hats and scarves in wool or organic cotton. For our leather accessories, we only use vegetable tanned leather. Leather accessories will acquire a patina and become more beautiful the longer you use them.
-
-Triple Black Ultra Boost
-
-Ultraboost is the ultimate running shoe that delivers constant energy returns. The more you run the more energy you bring to your life.
-
-Patagonia Black Hole
-
-The Black Hole Duffle is highly weather-resistant, and protects your gear from rough handling. The U-shaped lid allows quick access to the main compartment, while 2 zippered internal mesh pockets keep small items organized. A padded bottom panel adds structure and helps cushion the load when it gets tossed out of the vehicle or dropped from the pack mule.
-
-Yeti cooler
-
-Keep your brie and bevies chilly. Heavy-duty insulation ensures cold temperatures persist. A self-stopping hinge and Yeti-tough details are durable. Non-slip rubber feet keep your drinks and snacks orderly through whitewater or rough approaches to the picnic site.
-
-Black Vapor Max
-
-With the radically reinvented VaporMax Air cushioning unit, the Nike Air VaporMax not only defies convention, it delivers a sensation that seems to defy gravity.
-
-Naked and Famous Jeans
-
-Naked & Famous Denim uses only the most unique and rare selvedge denim fabrics from Japan, with the best style and fits around. Made in Canada.
-
-
-Rimowa Suitcase
-
-RIMOWA is one of Europe's leading manufacturers of premium travel and carry-on luggage made of aluminum and polycarbonate.
-
-
-Canada goose Macmillian
-
-The MacMillan Parka offers active urban style with a quilt-through design and curved hem cut. Canada Goose.
-
-## The North Face Fanorak
-
-This versatile pullover offers wind and rain resistance, and packs into its own stylish fanny-pack-style kangaroo pocket.
-
-
-Kith Hoodie
-
-Hat
-
-270s
-
--->
-
diff --git a/finished-application/frontend/__tests__/CartItem.test.js b/finished-application/frontend/__tests__/CartItem.test.js
deleted file mode 100644
index 42dd39b..0000000
--- a/finished-application/frontend/__tests__/CartItem.test.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from 'react';
-import { shallow, mount } from 'enzyme';
-import toJSON from 'enzyme-to-json';
-import CartItem from '../components/CartItem';
-
-const cartItem = {
- item: {
- price: 5000,
- image: 'dog.jpg',
- title: 'Fake Item',
- },
- id: 'abc123',
- quantity: 20,
-};
-
-describe('<CartItem>', () => {
- it('renders and matches snapshot', () => {
- const wrapper = shallow(<CartItem cartItem={cartItem} />);
- expect(toJSON(wrapper)).toMatchSnapshot();
- });
-
- it('renders a single quantity', () => {
- const wrapper = shallow(<CartItem cartItem={{ ...cartItem, quantity: 1 }} />);
- const p = wrapper.find('p');
- expect(p.text()).toBe('$50 — 1 × $50 each');
- });
-
- it('renders multiples', () => {
- const wrapper = shallow(<CartItem cartItem={{ ...cartItem, quantity: 23423 }} />);
- const p = wrapper.find('p');
- expect(p.text()).toBe('$1,171,150 — 23423 × $50 each');
- });
-});
diff --git a/finished-application/frontend/__tests__/EditUser.test.js b/finished-application/frontend/__tests__/EditUser.test.js
deleted file mode 100644
index a98cbb5..0000000
--- a/finished-application/frontend/__tests__/EditUser.test.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import React from 'react';
-import { mount } from 'enzyme';
-import toJSON from 'enzyme-to-json';
-import { MockedProvider } from 'react-apollo/test-utils';
-import wait from 'waait';
-import EditUser, { UPDATE_USER_MUTATION } from '../components/EditUser';
-import { fakeUser } from '../lib/testUtils';
-import { CURRENT_USER_QUERY } from '../components/User';
-
-const mocks = [
- {
- request: { query: CURRENT_USER_QUERY },
- result: {
- data: {
- me: fakeUser(),
- },
- },
- },
- {
- request: {
- query: UPDATE_USER_MUTATION,
- variables: {
- name: 'Westopher',
- },
- },
- result: {
- updateUser: {
- name: 'Westopher',
- __typename: 'User',
- },
- },
- },
-];
-
-describe('<EditUser/>', () => {
- it('renders', async () => {
- const wrapper = mount(
- <MockedProvider mocks={mocks}>
- <EditUser />
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- expect(toJSON(wrapper.find('form'))).toMatchSnapshot();
- });
-
- it('displays changes', async () => {
- const wrapper = mount(
- <MockedProvider mocks={mocks}>
- <EditUser />
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- const nameInput = wrapper.find('[name="name"]');
- nameInput.simulate('change', { target: { name: 'name', value: 'Scott' } });
- const diff = wrapper.find('pre[data-test="change"]');
- expect(diff.text()).toBe('{"name":"Scott"}');
- });
-
- it('calls update user when form is submitted', async () => {
- const wrapper = mount(
- <MockedProvider mocks={mocks}>
- <EditUser />
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- const nameInput = wrapper.find('[name="name"]');
- nameInput.simulate('change', { target: { name: 'name', value: 'Westopher' } });
- wrapper.find('form').simulate('submit');
- wrapper.update();
- expect(wrapper.find('[data-test="updated"]').text()).toBe('Updated!');
- });
-});
diff --git a/finished-application/frontend/__tests__/Item.test.js b/finished-application/frontend/__tests__/Item.test.js
deleted file mode 100644
index 129efa9..0000000
--- a/finished-application/frontend/__tests__/Item.test.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env jest */
-
-import React from 'react';
-import Enzyme, { shallow, mount } from 'enzyme';
-import toJSON from 'enzyme-to-json';
-import ItemComponent from '../components/Item';
-
-const fakeItem = {
- id: 'ABC123',
- title: 'A Cool Item',
- price: 5000,
- description: 'This item is really cool!',
- image: 'dog.jpg',
- largeImage: 'largedog.jpg',
-};
-
-describe('<Item/>', () => {
- it('Renders and matches snapshot', () => {
- const wrapper = shallow(<ItemComponent item={fakeItem} />);
- expect(toJSON(wrapper)).toMatchSnapshot();
- });
-});
diff --git a/finished-application/frontend/__tests__/Nav.test.js b/finished-application/frontend/__tests__/Nav.test.js
deleted file mode 100644
index 5c61c56..0000000
--- a/finished-application/frontend/__tests__/Nav.test.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import React from 'react';
-import { mount } from 'enzyme';
-import toJSON from 'enzyme-to-json';
-import wait from 'waait';
-import Router from 'next/router';
-import Nav from '../components/Nav';
-import { MockedProvider } from 'react-apollo/test-utils';
-import { fakeUser } from '../lib/testUtils';
-import { CURRENT_USER_QUERY } from '../components/User';
-
-// Mock the router
-Router.router = { push() {} };
-
-const loggedOutMocks = [
- {
- request: { query: CURRENT_USER_QUERY },
- delay: 0,
- result: {
- data: {
- me: null,
- },
- },
- },
-];
-
-const loggedInMocks = [
- {
- request: { query: CURRENT_USER_QUERY },
- result: {
- data: {
- what: 'yah',
- me: {
- ...fakeUser(),
- orders: [],
- cart: [],
- },
- },
- },
- },
-];
-
-describe('<Nav></Nav>', () => {
- it('Renders minimal nav when logged out', () => {
- const wrapper = mount(
- <MockedProvider mocks={loggedOutMocks}>
- <Nav />
- </MockedProvider>
- );
- const nav = wrapper.find('ul[data-test="nav"]');
- expect(toJSON(nav)).toMatchSnapshot();
- });
-
- it('renders full nav when logged in', async () => {
- const wrapper = mount(
- <MockedProvider mocks={loggedInMocks}>
- <Nav />
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- const nav = wrapper.find('ul[data-test="nav"]');
- // account link
- const accountLink = wrapper.find('a[href="/me"]');
- expect(accountLink.length).toBe(1);
- });
-});
diff --git a/finished-application/frontend/__tests__/PleaseSignIn.test.js b/finished-application/frontend/__tests__/PleaseSignIn.test.js
deleted file mode 100644
index f516ea3..0000000
--- a/finished-application/frontend/__tests__/PleaseSignIn.test.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import React from 'react';
-import { mount } from 'enzyme';
-import wait from 'waait';
-import PleaseSignIn from '../components/PleaseSignIn';
-import { MockedProvider } from 'react-apollo/test-utils';
-import { fakeUser } from '../lib/testUtils';
-import { CURRENT_USER_QUERY } from '../components/User';
-
-const notSignedInMocks = [
- {
- request: { query: CURRENT_USER_QUERY },
- result: {
- data: {
- me: null,
- },
- },
- },
-];
-
-const signedInMocks = [
- {
- request: { query: CURRENT_USER_QUERY },
- result: {
- data: {
- me: {
- ...fakeUser(),
- permissions: ['VIEW_HEY'],
- },
- },
- },
- },
-];
-// some dummy child component
-const Hey = () => <p>Hey!</p>;
-
-describe('<PleaseSignIn />', () => {
- it('renders sign in dialog to logged out users', async () => {
- const wrapper = mount(
- <MockedProvider mocks={notSignedInMocks}>
- <PleaseSignIn allowedPermissions={[]}>
- <Hey />
- </PleaseSignIn>
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- // find the error message
- expect(wrapper.text()).toContain('Please sign in before continuing!');
- // show the sign in dialog
- expect(wrapper.find('Signin').exists()).toBeTruthy();
- });
-
- it('renders child for correct permissions', async () => {
- const wrapper = mount(
- <MockedProvider mocks={signedInMocks}>
- <PleaseSignIn allowedPermissions={['ADMIN', 'VIEW_HEY']}>
- <Hey />
- </PleaseSignIn>
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- expect(wrapper.find('Hey').exists()).toBeTruthy();
- });
- it("renders error when permissions aren't met", async () => {
- const wrapper = mount(
- <MockedProvider mocks={signedInMocks}>
- <PleaseSignIn allowedPermissions={['ADMIN']}>
- <Hey />
- </PleaseSignIn>
- </MockedProvider>
- );
- await wait();
- wrapper.update();
- // should tell you you can't access it
- expect(wrapper.text()).toContain('Insufficient Permissions');
- // it should not render the child component
- expect(wrapper.find('Hey').exists()).toBeFalsy();
- });
-});
diff --git a/finished-application/frontend/__tests__/__snapshots__/CartCount.test.js.snap b/finished-application/frontend/__tests__/__snapshots__/CartCount.test.js.snap
deleted file mode 100644
index 224141b..0000000
--- a/finished-application/frontend/__tests__/__snapshots__/CartCount.test.js.snap
+++ /dev/null
@@ -1,205 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`<CartCount></CartCount> matches snapshot 1`] = `
-<styled.span>
- <TransitionGroup
- childFactory={[Function]}
- component="div"
- >
- <CSSTransition
- className="count"
- classNames="count"
- key="10"
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <styled.div>
- 10
- </styled.div>
- </CSSTransition>
- </TransitionGroup>
-</styled.span>
-`;
-
-exports[`<CartCount></CartCount> updates via props 1`] = `
-<CartCount
- count={50}
->
- <styled.span>
- <span
- className="sc-bwzfXH fWZfOZ"
- >
- <TransitionGroup
- childFactory={[Function]}
- component="div"
- >
- <div>
- <CSSTransition
- className="count"
- classNames="count"
- in={true}
- key=".$50"
- onExited={[Function]}
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <Transition
- appear={false}
- className="count"
- enter={true}
- exit={true}
- in={true}
- mountOnEnter={false}
- onEnter={[Function]}
- onEntered={[Function]}
- onEntering={[Function]}
- onExit={[Function]}
- onExited={[Function]}
- onExiting={[Function]}
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <styled.div
- className="count"
- >
- <div
- className="count sc-bdVaJa ldHGxH"
- >
- 50
- </div>
- </styled.div>
- </Transition>
- </CSSTransition>
- </div>
- </TransitionGroup>
- </span>
- </styled.span>
-</CartCount>
-`;
-
-exports[`<CartCount></CartCount> updates via props 2`] = `
-<CartCount
- count={10}
->
- <styled.span>
- <span
- className="sc-bwzfXH fWZfOZ"
- >
- <TransitionGroup
- childFactory={[Function]}
- component="div"
- >
- <div>
- <CSSTransition
- className="count"
- classNames="count"
- in={true}
- key=".$10"
- onExited={[Function]}
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <Transition
- appear={false}
- className="count"
- enter={true}
- exit={true}
- in={true}
- mountOnEnter={false}
- onEnter={[Function]}
- onEntered={[Function]}
- onEntering={[Function]}
- onExit={[Function]}
- onExited={[Function]}
- onExiting={[Function]}
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <styled.div
- className="count"
- >
- <div
- className="count sc-bdVaJa ldHGxH"
- >
- 10
- </div>
- </styled.div>
- </Transition>
- </CSSTransition>
- <CSSTransition
- className="count"
- classNames="count"
- in={false}
- key=".$50"
- onExited={[Function]}
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <Transition
- appear={false}
- className="count"
- enter={true}
- exit={true}
- in={false}
- mountOnEnter={false}
- onEnter={[Function]}
- onEntered={[Function]}
- onEntering={[Function]}
- onExit={[Function]}
- onExited={[Function]}
- onExiting={[Function]}
- timeout={
- Object {
- "enter": 400,
- "exit": 400,
- }
- }
- unmountOnExit={true}
- >
- <styled.div
- className="count"
- >
- <div
- className="count sc-bdVaJa ldHGxH"
- >
- 50
- </div>
- </styled.div>
- </Transition>
- </CSSTransition>
- </div>
- </TransitionGroup>
- </span>
- </styled.span>
-</CartCount>
-`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/CartItem.test.js.snap b/finished-application/frontend/__tests__/__snapshots__/CartItem.test.js.snap
deleted file mode 100644
index b8f5ad3..0000000
--- a/finished-application/frontend/__tests__/__snapshots__/CartItem.test.js.snap
+++ /dev/null
@@ -1,33 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`<CartItem> renders and matches snapshot 1`] = `
-<styled.li
- key="abc123"
->
- <img
- alt="Fake Item"
- src="dog.jpg"
- width="100"
- />
- <div
- className="cart-item-details"
- >
- <h3>
- Fake Item
- </h3>
- <p>
- $1,000
- —
- <em>
- 20
- ×
- $50
- each
- </em>
- </p>
- </div>
- <RemoveFromCart
- id="abc123"
- />
-</styled.li>
-`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/EditUser.test.js.snap b/finished-application/frontend/__tests__/__snapshots__/EditUser.test.js.snap
deleted file mode 100644
index bbb672d..0000000
--- a/finished-application/frontend/__tests__/__snapshots__/EditUser.test.js.snap
+++ /dev/null
@@ -1,47 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`<EditUser/> renders 1`] = `
-<form
- className="sc-bdVaJa LHejR"
- onSubmit={[Function]}
->
- <DisplayError
- error={Object {}}
- />
- <fieldset
- aria-busy={false}
- disabled={false}
- >
- <label
- htmlFor="name"
- >
- Name:
- <input
- defaultValue="Miss Coleman Berge"
- name="name"
- onChange={[Function]}
- type="text"
- />
- </label>
- <button
- type="submit"
- >
- Update
- </button>
- <strong>
- me:
- </strong>
- <pre>
- "Miss Coleman Berge"
- </pre>
- <strong>
- Change:
- </strong>
- <pre
- data-test="change"
- >
- {}
- </pre>
- </fieldset>
-</form>
-`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/SingleItem.test.js.snap b/finished-application/frontend/__tests__/__snapshots__/SingleItem.test.js.snap
deleted file mode 100644
index 28e9174..0000000
--- a/finished-application/frontend/__tests__/__snapshots__/SingleItem.test.js.snap
+++ /dev/null
@@ -1,32 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`<SingleItem/> Errors with a not found Item 1`] = `
-<p
- data-test="graphql-error"
->
- <strong>
- Shoot!
- </strong>
- Item not found!
-</p>
-`;
-
-exports[`<SingleItem/> Renders with Proper Data 1`] = `
-<h2>
- Viewing
- dogs are best
-</h2>
-`;
-
-exports[`<SingleItem/> Renders with Proper Data 2`] = `
-<img
- alt="dogs are best"
- src="dog.jpg"
-/>
-`;
-
-exports[`<SingleItem/> Renders with Proper Data 3`] = `
-<p>
- dogs
-</p>
-`;
diff --git a/finished-application/frontend/components/AddToCart.js b/finished-application/frontend/components/AddToCart.js
deleted file mode 100644
index 03242a4..0000000
--- a/finished-application/frontend/components/AddToCart.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import { Component } from 'react';
-import { Mutation } from 'react-apollo';
-import PropTypes from 'prop-types';
-import gql from 'graphql-tag';
-import User, { CURRENT_USER_QUERY } from './User';
-
-const ADD_TO_CART_MUTATION = gql`
- mutation addToCart($id: ID!) {
- addToCart(id: $id) {
- id
- quantity
- item {
- id
- price
- description
- image
- title
- }
- }
- }
-`;
-
-class AddToCart extends Component {
- static propTypes = {
- id: PropTypes.string.isRequired,
- };
-
- update = (cache, payload) => {
- const newCartItem = payload.data.addToCart;
- const data = cache.readQuery({ query: CURRENT_USER_QUERY });
-
- const existingIndex = data.me.cart.findIndex(cartItem => cartItem.id === newCartItem.id);
- if (existingIndex >= 0) {
- // already in cache, just replace it
- data.me.cart = [
- ...data.me.cart.slice(0, existingIndex),
- newCartItem,
- ...data.me.cart.slice(existingIndex + 1),
- ];
- } else {
- data.me.cart = [...data.me.cart, newCartItem];
- }
- cache.writeQuery({ query: CURRENT_USER_QUERY, data });
- };
-
- render() {
- const { id } = this.props;
- return (
- <User>
- {({ data: { me }, loading }) => {
- if (!me || loading) return null;
- return (
- <Mutation mutation={ADD_TO_CART_MUTATION} variables={{ id }} update={this.update}>
- {(addToCart, { loading }) => (
- <button disabled={loading} onClick={addToCart}>
- 🛒 Add{loading && 'ing'} To Cart
- </button>
- )}
- </Mutation>
- );
- }}
- </User>
- );
- }
-}
-
-export default AddToCart;
-export { ADD_TO_CART_MUTATION };
diff --git a/finished-application/frontend/components/DeleteItem.js b/finished-application/frontend/components/DeleteItem.js
deleted file mode 100644
index 4d68d5e..0000000
--- a/finished-application/frontend/components/DeleteItem.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import React from 'react';
-import { Mutation } from 'react-apollo';
-import PropTypes, { number } from 'prop-types';
-import gql from 'graphql-tag';
-import { withRouter } from 'next/router';
-import { ALL_ITEMS_QUERY } from './Items';
-import { PAGINATION_QUERY } from './Pagination';
-import { perPage } from '../config';
-
-const DELETE_ITEM_MUTATION = gql`
- mutation deleteItem($id: ID!) {
- deleteItem(id: $id) {
- id
- title
- description
- }
- }
-`;
-
-class DeleteItem extends React.Component {
- static propTypes = {
- id: PropTypes.string.isRequired,
- };
-
- update = (cache, payload) => {
- const deletedItem = payload.data.deleteItem;
- let { page = 1 } = this.props.router.query;
- page = parseFloat(page);
- const skip = page * perPage - perPage;
- const variables = { skip };
- const data = cache.readQuery({ query: ALL_ITEMS_QUERY, variables });
- // filter this one out
- data.items = data.items.filter(item => item.id !== deletedItem.id);
- // write the data back to the cache
- console.log(data.items);
- cache.writeQuery({ query: ALL_ITEMS_QUERY, data, variables });
- // FYI Pagination is broken with Apollo currently - will make a followup video
- };
-
- render() {
- return (
- <Mutation
- mutation={DELETE_ITEM_MUTATION}
- variables={{ id: this.props.id }}
- refetchQueries={[
- {
- query: ALL_ITEMS_QUERY,
- variables: { skip: (this.props.router.query.page || 1) * perPage - perPage },
- },
- { query: PAGINATION_QUERY },
- ]}
- update={this.update}
- >
- {(removeItem, { error }) => (
- <button
- onClick={() => {
- if (confirm('Are you sure you want to delete this item?')) {
- removeItem();
- }
- }}
- >
- {error ? error.message : '× Delete Item'}
- </button>
- )}
- </Mutation>
- );
- }
-}
-
-export default withRouter(DeleteItem);
-export { DELETE_ITEM_MUTATION };
diff --git a/finished-application/frontend/components/Dump.js b/finished-application/frontend/components/Dump.js
deleted file mode 100644
index f281281..0000000
--- a/finished-application/frontend/components/Dump.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const Dump = props => (
- <div
- style={{
- fontSize: 20,
- border: '1px solid #efefef',
- padding: 10,
- background: 'white',
- }}
- >
- {Object.keys(props).map(prop => (
- <pre key={prop}>
- <strong style={{ color: 'white', background: 'red' }}>{prop} 💩</strong>
- {JSON.stringify(props[prop], '', ' ')}
- </pre>
- ))}
- </div>
-);
-
-export default Dump;
diff --git a/finished-application/frontend/components/EditUser.js b/finished-application/frontend/components/EditUser.js
deleted file mode 100644
index 1bb8e5b..0000000
--- a/finished-application/frontend/components/EditUser.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import React from 'react';
-import { Query, Mutation } from 'react-apollo';
-import gql from 'graphql-tag';
-import Form from './styles/Form';
-import { CURRENT_USER_QUERY } from './User';
-import Error from './ErrorMessage';
-import User from './User';
-
-const UPDATE_USER_MUTATION = gql`
- mutation updateUser($name: String!) {
- updateUser(name: $name) {
- name
- }
- }
-`;
-
-class EditUser extends React.Component {
- state = {
- changes: {},
- };
-
- handleChange = e => {
- const { name, value } = e.target;
- const changes = {
- ...this.state.changes,
- [name]: value,
- };
- this.setState({ changes });
- };
-
- handleSubmit = async (e, updateUser) => {
- e.preventDefault();
- // only submit if there are real changes
- if (Object.keys(this.state.changes).length === 0) return;
- await updateUser();
- this.setState({ changes: {} });
- };
-
- render() {
- return (
- <User>
- {({ data: { me }, loading }) => {
- if (loading) return <p>Loading...</p>;
- return (
- <Mutation
- mutation={UPDATE_USER_MUTATION}
- refetchQueries={[{ query: CURRENT_USER_QUERY }]}
- variables={this.state.changes}
- >
- {(updateUser, { error, called }) => (
- <Form onSubmit={e => this.handleSubmit(e, updateUser)}>
- <Error error={error} />
- <fieldset disabled={loading} aria-busy={loading}>
- {called && !error && <p data-test="updated">Updated!</p>}
- <label htmlFor="name">
- Name:
- <input
- type="text"
- name="name"
- defaultValue={me.name}
- onChange={this.handleChange}
- />
- </label>
- <button type="submit">Update</button>
- <strong>me:</strong>
- <pre>{JSON.stringify(me.name)}</pre>
- <strong>Change:</strong>
- <pre data-test="change">{JSON.stringify(this.state.changes)}</pre>
- </fieldset>
- </Form>
- )}
- </Mutation>
- );
- }}
- </User>
- );
- }
-}
-
-export default EditUser;
-export { UPDATE_USER_MUTATION };
diff --git a/finished-application/frontend/components/LoadingItem.js b/finished-application/frontend/components/LoadingItem.js
deleted file mode 100644
index 5736337..0000000
--- a/finished-application/frontend/components/LoadingItem.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import Title from './styles/Title';
-import ItemStyles from './styles/ItemStyles';
-
-class LoadingItem extends React.Component {
- render() {
- return (
- <ItemStyles>
- <img
- src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
- alt="Loading..."
- />>
- <Title>
- <a>Loading...</a>
- </Title>
- <p>Please Wait</p>
- </ItemStyles>
- );
- }
-}
-
-export default LoadingItem;
diff --git a/finished-application/frontend/components/Meta.js b/finished-application/frontend/components/Meta.js
deleted file mode 100644
index fe9c29f..0000000
--- a/finished-application/frontend/components/Meta.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import React from 'react';
-import Head from 'next/head';
-
-const Meta = () => (
- <div>
- <Head>
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <meta charSet="utf-8" />
- <link rel="shortcut icon" href="/static/favicon.png" />
- <link rel="stylesheet" type="text/css" href="/static/nprogress.css" />
- <title>Sick Fits!</title>
- </Head>
- </div>
-);
-
-export default Meta;
diff --git a/finished-application/frontend/components/Nav.js b/finished-application/frontend/components/Nav.js
deleted file mode 100644
index 5f3495a..0000000
--- a/finished-application/frontend/components/Nav.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import React, { Fragment } from 'react';
-import Link from 'next/link';
-import { Query, Mutation } from 'react-apollo';
-import { TOGGLE_CART_MUTATION } from './Cart';
-import User from './User';
-import CartCount from './CartCount';
-import Signout from './Signout';
-import NavStyles from './styles/NavStyles';
-
-class Nav extends React.Component {
- render() {
- // below we set the fetchPolicy to network only so it forces re-fetch on the server
- return (
- <User>
- {({ data: { me } }) => (
- <NavStyles data-test="nav">
- <Link href="/items">
- <a>Shop</a>
- </Link>
- <Link href="/sell">
- <a>Sell</a>
- </Link>
-
- {!me && (
- <Link href="/signup">
- <a>Sign In</a>
- </Link>
- )}
-
- {me && (
- <Fragment>
- <Link href="/orders">
- <a>Orders</a>
- </Link>
- <Link href="/me">
- <a>My Account</a>
- </Link>
- <Signout />
- <Mutation mutation={TOGGLE_CART_MUTATION}>
- {toggleCart => (
- <button onClick={toggleCart}>
- My Cart
- <CartCount
- className="cart-count"
- count={me.cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0)}
- />
- </button>
- )}
- </Mutation>
- </Fragment>
- )}
- </NavStyles>
- )}
- </User>
- );
- }
-}
-
-export default Nav;
diff --git a/finished-application/frontend/components/Permissions.js b/finished-application/frontend/components/Permissions.js
deleted file mode 100644
index 52a6acf..0000000
--- a/finished-application/frontend/components/Permissions.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import React from 'react';
-import { Query, Mutation } from 'react-apollo';
-import PropTypes from 'prop-types';
-import gql from 'graphql-tag';
-import Error from './ErrorMessage';
-import SickButton from './styles/SickButton';
-import Table from './styles/Table';
-
-const ALL_USERS_QUERY = gql`
- query {
- users {
- id
- name
- email
- permissions
- }
- }
-`;
-
-const UPDATE_PERMISSIONS_MUTATION = gql`
- mutation updatePermissions($permissions: [Permission], $userId: ID!) {
- updatePermissions(permissions: $permissions, userId: $userId) {
- id
- permissions
- name
- email
- }
- }
-`;
-
-const possiblePermissions = [
- 'ADMIN',
- 'USER',
- 'ITEMCREATE',
- 'ITEMUPDATE',
- 'ITEMDELETE',
- 'PERMISSIONUPDATE',
-];
-
-class User extends React.Component {
- static propTypes = {
- user: PropTypes.shape({
- permissions: PropTypes.array.isRequired,
- id: PropTypes.string.isRequired,
- }).isRequired,
- };
- state = {
- permissions: this.props.user.permissions,
- };
- handlePermissionsChange = e => {
- const checkbox = e.target;
- let updatedPermissions = [...this.state.permissions];
- if (checkbox.checked) {
- // add it in
- updatedPermissions.push(checkbox.value);
- } else {
- updatedPermissions = updatedPermissions.filter(permission => permission !== checkbox.value);
- }
- this.setState({ permissions: updatedPermissions });
- };
- render() {
- const { user } = this.props;
- return (
- <Mutation mutation={UPDATE_PERMISSIONS_MUTATION}>
- {(updatePermissions, { loading, error }) => (
- <tr key={user.id} className="user">
- <Error error={error} />
- <td>{user.name}</td>
- <td>{user.email}</td>
- {possiblePermissions.map(permission => (
- <td>
- <label key={permission} htmlFor={`${user.id}-permission-${permission}`}>
- <input
- type="checkbox"
- checked={this.state.permissions.includes(permission)}
- name={`permission-${permission}`}
- id={`${user.id}-permission-${permission}`}
- onChange={this.handlePermissionsChange}
- value={permission}
- />
- </label>
- </td>
- ))}
- <td>
- <SickButton
- type="button"
- disabled={loading}
- onClick={async () => {
- await updatePermissions({
- variables: {
- permissions: this.state.permissions,
- userId: this.props.user.id,
- },
- });
- }}
- >
- Updat{loading ? 'ing' : 'e'}
- </SickButton>
- </td>
- </tr>
- )}
- </Mutation>
- );
- }
-}
-
-const Permissions = () => (
- <Query query={ALL_USERS_QUERY}>
- {({ data, error, loading }) => {
- if (loading) return <div>Loading</div>;
- if (error) return <Error error={error} />;
- return (
- <div>
- <h1>Manage User Permissions</h1>
- <Table>
- <thead>
- <tr>
- <th>Name</th>
- <th>Email</th>
- {possiblePermissions.map(p => <th>{p}</th>)}
- <th>👇🏻</th>
- </tr>
- </thead>
- <tbody>{data.users.map(user => <User key={user.id} user={user} />)}</tbody>
- </Table>
- </div>
- );
- }}
- </Query>
-);
-
-export default Permissions;
-export { ALL_USERS_QUERY, UPDATE_PERMISSIONS_MUTATION };
diff --git a/finished-application/frontend/components/PleaseSignIn.js b/finished-application/frontend/components/PleaseSignIn.js
deleted file mode 100644
index 3cd7267..0000000
--- a/finished-application/frontend/components/PleaseSignIn.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import { Query } from 'react-apollo';
-import PropTypes from 'prop-types';
-import { CURRENT_USER_QUERY } from './User';
-import Signin from './Signin';
-
-const PleaseSignIn = props => (
- <Query query={CURRENT_USER_QUERY}>
- {({ data, loading }) => {
- if (loading) return <p>Loading...</p>;
- // check if they are signed in
- if (!data.me) {
- return (
- <div>
- <p>Please sign in before continuing!</p>
- <Signin />
- </div>
- );
- }
- // check if they need permissions
- if (props.allowedPermissions) {
- // check if they have NO permissions, or they don't meet the requmrenets
- if (
- !data.me.permissions ||
- !props.allowedPermissions.some(permission => data.me.permissions.includes(permission))
- ) {
- return (
- <p>
- Insufficient Permissions. You have:
- <strong>{data.me.permissions}</strong>
- and you need
- <strong>{props.allowedPermissions.join(' OR ')}</strong>
- </p>
- );
- }
- }
- return props.children;
- }}
- </Query>
-);
-
-PleaseSignIn.propTypes = {
- allowedPermissions: PropTypes.array,
- children: PropTypes.any.isRequired,
-};
-
-export default PleaseSignIn;
diff --git a/finished-application/frontend/components/SingleItem.js b/finished-application/frontend/components/SingleItem.js
deleted file mode 100644
index 83ef8a0..0000000
--- a/finished-application/frontend/components/SingleItem.js
+++ /dev/null
@@ -1,77 +0,0 @@
-import { Query } from 'react-apollo';
-import PropTypes from 'prop-types';
-import styled from 'styled-components';
-import Head from 'next/head';
-import Link from 'next/link';
-import gql from 'graphql-tag';
-import Error from './ErrorMessage';
-import AddToCart from './AddToCart';
-
-const SINGLE_ITEM_QUERY = gql`
- query SINGLE_ITEM_QUERY($id: ID!) {
- items(where: { id: $id }) {
- id
- title
- description
- largeImage
- image
- }
- }
-`;
-
-const SingleItemStyles = styled.div`
- max-width: 1200px;
- margin: 2rem auto;
- box-shadow: ${props => props.theme.bs};
- display: grid;
- grid-auto-columns: 1fr;
- grid-auto-flow: column;
- min-height: 800px;
- img {
- width: 100%;
- height: 100%;
- object-fit: contain;
- }
- .details {
- margin: 3rem;
- font-size: 2rem;
- }
-`;
-
-const SingleItem = props => (
- <Query query={SINGLE_ITEM_QUERY} variables={{ id: props.id }}>
- {({ data, loading, error }) => {
- if (loading) return <p>Loading...</p>;
- if (error) return <Error error={error} />;
- const [item] = data.items;
- return (
- <SingleItemStyles data-test="SingleItem">
- <Head>
- <title>{item.title}</title>
- </Head>
- <img src={item.largeImage || item.image} alt={item.title} />
- <div className="details">
- <h2>Viewing {item.title}</h2>
- <p>{item.description}</p>
- <Link
- href={{
- pathname: '/update',
- query: { id: item.id },
- }}
- >
- <a>Edit ✏️</a>
- </Link>
- <AddToCart id={item.id} />
- </div>
- </SingleItemStyles>
- );
- }}
- </Query>
-);
-
-SingleItem.propTypes = {
- id: PropTypes.string.isRequired,
-};
-
-export default SingleItem;
-export { SINGLE_ITEM_QUERY };
diff --git a/finished-application/frontend/components/UpdateItem.js b/finished-application/frontend/components/UpdateItem.js
deleted file mode 100644
index 08ba254..0000000
--- a/finished-application/frontend/components/UpdateItem.js
+++ /dev/null
@@ -1,105 +0,0 @@
-import React, { Component } from 'react';
-import { Query, Mutation } from 'react-apollo';
-import PropTypes from 'prop-types';
-import gql from 'graphql-tag';
-import { SINGLE_ITEM_QUERY } from './SingleItem';
-import Form from './styles/Form';
-import Error from './ErrorMessage';
-
-const UPDATE_ITEM_MUTATION = gql`
- mutation updateItem($id: ID!, $title: String, $description: String, $price: Int) {
- updateItem(id: $id, description: $description, title: $title, price: $price) {
- id
- }
- }
-`;
-
-class UpdateItem extends Component {
- static propTypes = {
- id: PropTypes.string.isRequired,
- };
- state = {
- item: {},
- };
-
- saveToState = e => {
- let { name, value, type } = e.target;
- if (type === 'number') {
- value = parseInt(value);
- }
- const item = { ...this.state.item };
- item[name] = value;
- this.setState({ item });
- };
-
- updateItem = async (e, updateItemMutation) => {
- console.log('Updating Item');
- e.preventDefault();
-
- const res = await updateItemMutation({
- // pass in those variables from state
- variables: {
- id: this.props.id,
- ...this.state.item,
- },
- });
- console.log(res);
- };
-
- render() {
- return (
- <Query query={SINGLE_ITEM_QUERY} variables={{ id: this.props.id }}>
- {({ data: { items }, loading }) => {
- if (loading) return <p>Loading...</p>;
- if (!items || !items.length) return <p>Item Not Found</p>;
- const [item] = items;
- return (
- <Mutation mutation={UPDATE_ITEM_MUTATION}>
- {(updateItemMutation, { error }) => (
- <Form onSubmit={e => this.updateItem(e, updateItemMutation)}>
- <Error error={error} />
- <h2>Edit {item.title}</h2>
- <fieldset disabled={loading} aria-busy={loading}>
- <label htmlFor="title">
- Title
- <input
- id="title"
- defaultValue={item.title}
- name="title"
- onChange={this.saveToState}
- type="text"
- />
- </label>
-
- <label htmlFor="description">
- Description
- <textarea
- defaultValue={item.description}
- name="description"
- onChange={this.saveToState}
- />
- </label>
-
- <label htmlFor="price">
- Price
- <input
- type="number"
- name="price"
- onChange={this.saveToState}
- defaultValue={item.price}
- />
- </label>
- <button type="submit">Save...</button>
- </fieldset>
- </Form>
- )}
- </Mutation>
- );
- }}
- </Query>
- );
- }
-}
-
-export default UpdateItem;
-export { UPDATE_ITEM_MUTATION };
diff --git a/finished-application/frontend/config.js b/finished-application/frontend/config.js
deleted file mode 100644
index 53e05ed..0000000
--- a/finished-application/frontend/config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// This is client side config only - don't put anything in here that shouldn't be public!
-export const endpoint = `http://localhost:5555`;
-export const perPage = 4;
diff --git a/finished-application/frontend/pages/diagram.js b/finished-application/frontend/pages/diagram.js
deleted file mode 100644
index a505089..0000000
--- a/finished-application/frontend/pages/diagram.js
+++ /dev/null
@@ -1,202 +0,0 @@
-import styled from 'styled-components';
-
-const DiagramStyles = styled.div`
- display: grid;
- grid-template-columns: repeat(8, 1fr);
- grid-column-gap: 20px;
- h1 {
- grid-column: 1 / -1;
- grid-row: 1;
- }
- ul {
- margin: 0;
- padding: 0;
- list-style: none;
- li {
- border-bottom: 1px solid rgba(0, 0, 0, 0.2);
- padding: 5px 0;
- }
- }
- h2 {
- text-align: center;
- margin: 0;
- background: black;
- color: white;
- width: calc(40px + 100%);
- transform: translateX(-20px);
- }
- span.for {
- font-size: 12px;
- text-align: center;
- margin-top: 1rem;
- margin-bottom: 1rem;
- display: block;
- }
- .slat {
- background: #f7f7f7;
- padding: 20px;
- min-height: 500px;
- grid-column: span 2;
- grid-row: 4;
- line-height: 1.7;
- }
-
- .location {
- grid-column: span 4;
- background: red;
- padding: 5px;
- grid-row: 2;
- text-align: center;
- color: white;
- text-transform: uppercase;
- }
-
- .arrow {
- font-size: 30px;
- line-height: 1;
- transform: translateX(-10px) translateX(-50%);
- text-align: center;
- grid-row: 3;
- margin-bottom: -100%;
- background: white;
- height: 40px;
- }
- .arrow1 {
- grid-column: 3;
- }
- .arrow2 {
- grid-column: 5;
- }
- .arrow3 {
- grid-column: 7;
- }
- img {
- width: 100%;
- height: 125px;
- object-fit: contain;
- }
- .slat2 img {
- filter: invert(100%);
- }
- .slat4 img {
- mix-blend-mode: multiply;
- }
-`;
-
-const Diagram = () => (
- <DiagramStyles>
- <h1>The Pieces of our Application</h1>
- <span className="location frontend">Frontend</span>
- <span className=" location backend">Backend</span>
- <div className="slat slat1">
- <img
- src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/640px-React-icon.svg.png"
- alt="React.js"
- />
- <h2>React.js</h2>
- <span className="for">For Building The Interface along with:</span>
- <ul>
- <li>
- <strong>Next.js</strong> for server side rendering, routing and tooling
- </li>
- <li>
- <strong>Styled Components</strong> for styling
- </li>
- <li>
- <strong>React-Apollo</strong> for interfacing with Apollo Client
- </li>
- </ul>
- </div>
- <div className="slat slat2">
- <img
- src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iOThweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgMTIwIDQyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHN0eWxlPgogICAgICAgIHRleHQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1NvdXJjZSBTYW5zIFBybycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxnIGlkPSJob21lcGFnZS0rLW5hdiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImhvbWUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zNTAuMDAwMDAwLCAtMTUzOS4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM1MC4wMDAwMDAsIDE1MzguMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0ibG9nby1hcG9sbG8tc3BhY2UtY29weS0yOCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTGF5ZXJfMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJsb2dvX2Fwb2xsb19zcGFjZS1saW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0OS42MTkxNTUsIDE1LjcxNjE3NSkgc2NhbGUoLTEsIDEpIHJvdGF0ZSgtMTgwLjAwMDAwMCkgdHJhbnNsYXRlKC00OS42MTkxNTUsIC0xNS43MTYxNzUpIHRyYW5zbGF0ZSgwLjExOTE1NSwgMC43MTYxNzUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJsb2dvX2Fwb2xsb19zcGFjZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIC0wLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4zMzE4MjUsIDAuOTY1MzA5KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJTaGFwZSIgcG9pbnRzPSIxNS44Mzg5MTQgMjAuNTYxMDg2IDEyLjkwNTQ2IDIwLjU2MTA4NiA4LjY3MDA0NTI1IDkuNTY4OTg5NDQgMTEuMzIzNDM4OSA5LjU2ODk4OTQ0IDEyLjAxNTU2NTYgMTEuNDMwOTUwMiAxNi4wMTc0OTYyIDExLjQzMDk1MDIgMTUuMjkzMDMxNyAxMy40OTEyODIxIDEyLjY1ODIyMDIgMTMuNDkxMjgyMSAxNC4zNzIyNDc0IDE4LjIyMDkzNTEgMTcuNDIxMTc2NSA5LjU2ODk4OTQ0IDIwLjA3NDMyODggOS41Njg5ODk0NCI+PC9wb2x5Z29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iU2hhcGUiIHBvaW50cz0iNjAuNDAwMjQxMyA5LjU2ODk4OTQ0IDYwLjQwMDI0MTMgMjAuNTYxMDg2IDYyLjc1NjkyMzEgMjAuNTYxMDg2IDYyLjc1NjkyMzEgMTEuNjI4OTU5MyA2Ny40MDQxNjI5IDExLjYyODk1OTMgNjcuNDA0MTYyOSA5LjU2ODk4OTQ0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJTaGFwZSIgcG9pbnRzPSI3My45ODI3NDUxIDkuNTY4OTg5NDQgNzMuOTgyNzQ1MSAyMC41NjEwODYgNzYuMzM5NDI2OCAyMC41NjEwODYgNzYuMzM5NDI2OCAxMS42Mjg5NTkzIDgwLjk4NjkwOCAxMS42Mjg5NTkzIDgwLjk4NjkwOCA5LjU2ODk4OTQ0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ny4zNDg1MzcsMTguNTkxMTMxMiBDNDkuMjk3NDk2MiwxOC41OTExMzEyIDUwLjg4MzEzNzMsMTcuMDA1NzMxNSA1MC44ODMxMzczLDE1LjA1NjY1MTYgQzUwLjg4MzEzNzMsMTMuMTA3ODEzIDQ5LjI5NzQ5NjIsMTEuNTIyMTcxOSA0Ny4zNDg1MzcsMTEuNTIyMTcxOSBDNDUuMzk5NTc3NywxMS41MjIxNzE5IDQzLjgxNDE3OCwxMy4xMDc4MTMgNDMuODE0MTc4LDE1LjA1NjY1MTYgQzQzLjgxNDE3OCwxNy4wMDU4NTIyIDQ1LjM5OTU3NzcsMTguNTkxMTMxMiA0Ny4zNDg1MzcsMTguNTkxMTMxMiBaIE00Ny4zNDg1MzcsMjAuNzQyMjAyMSBDNDQuMjA4NTA2OCwyMC43NDIyMDIxIDQxLjY2Mjk4NjQsMTguMTk2NjgxNyA0MS42NjI5ODY0LDE1LjA1NjY1MTYgQzQxLjY2Mjk4NjQsMTEuOTE2NjIxNCA0NC4yMDg1MDY4LDkuMzcwOTgwMzkgNDcuMzQ4NTM3LDkuMzcwOTgwMzkgQzUwLjQ4ODU2NzEsOS4zNzA5ODAzOSA1My4wMzQwODc1LDExLjkxNjYyMTQgNTMuMDM0MDg3NSwxNS4wNTY2NTE2IEM1My4wMzQwODc1LDE4LjE5NjY4MTcgNTAuNDg4Njg3OCwyMC43NDIyMDIxIDQ3LjM0ODUzNywyMC43NDIyMDIxIFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTEuODIwNjkzOCwxOC41OTExMzEyIEM5My43Njk4OTQ0LDE4LjU5MTEzMTIgOTUuMzU1NTM1NCwxNy4wMDU3MzE1IDk1LjM1NTUzNTQsMTUuMDU2NjUxNiBDOTUuMzU1NTM1NCwxMy4xMDc4MTMgOTMuNzY5ODk0NCwxMS41MjIxNzE5IDkxLjgyMDY5MzgsMTEuNTIyMTcxOSBDODkuODcxNzM0NSwxMS41MjIxNzE5IDg4LjI4NjMzNDgsMTMuMTA3ODEzIDg4LjI4NjMzNDgsMTUuMDU2NjUxNiBDODguMjg2MzM0OCwxNy4wMDU4NTIyIDg5Ljg3MTczNDUsMTguNTkxMTMxMiA5MS44MjA2OTM4LDE4LjU5MTEzMTIgWiBNOTEuODIwNjkzOCwyMC43NDIyMDIxIEM4OC42ODA5MDUsMjAuNzQyMjAyMSA4Ni4xMzUxNDMzLDE4LjE5NjY4MTcgODYuMTM1MTQzMywxNS4wNTY2NTE2IEM4Ni4xMzUxNDMzLDExLjkxNjYyMTQgODguNjgwOTA1LDkuMzcwOTgwMzkgOTEuODIwNjkzOCw5LjM3MDk4MDM5IEM5NC45NjA3MjQsOS4zNzA5ODAzOSA5Ny41MDY0ODU3LDExLjkxNjYyMTQgOTcuNTA2NDg1NywxNS4wNTY2NTE2IEM5Ny41MDY0ODU3LDE4LjE5NjY4MTcgOTQuOTYwNzI0LDIwLjc0MjIwMjEgOTEuODIwNjkzOCwyMC43NDIyMDIxIFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMzIuMDU2MTA4NiwyMC41NjEwODYgTDI5LjI3MDk1MDIsMjAuNTYxMDg2IEwyOC44NzE0MzI5LDIwLjU2MTA4NiBMMjYuOTMwNjc4NywyMC41NjEwODYgTDI2LjkzMDY3ODcsOS41Njg4Njg3OCBMMjkuMjcwOTUwMiw5LjU2ODg2ODc4IEwyOS4yNzA5NTAyLDEzLjM1MTY3NDIgTDMyLjA1NjEwODYsMTMuMzUxNjc0MiBDMzQuMDA5NzczOCwxMy4zNTE2NzQyIDM1LjU5MzQ4NDIsMTUuMDAyOTU2MyAzNS41OTM0ODQyLDE2Ljk1NjM4MDEgQzM1LjU5MzQ4NDIsMTguOTEwMTY1OSAzNC4wMDk3NzM4LDIwLjU2MTA4NiAzMi4wNTYxMDg2LDIwLjU2MTA4NiBaIE0zMi4wNTYxMDg2LDE1LjUwMjk4NjQgTDI5LjI3MDk1MDIsMTUuNTAyOTg2NCBMMjkuMjcwOTUwMiwxOC40MDk4OTQ0IEwzMi4wNTYxMDg2LDE4LjQwOTg5NDQgQzMyLjgyMDYzMzUsMTguNDA5ODk0NCAzMy40NDIyOTI2LDE3LjcyMDc4NDMgMzMuNDQyMjkyNiwxNi45NTYzODAxIEMzMy40NDIyOTI2LDE2LjE5MTk3NTkgMzIuODIwNjMzNSwxNS41MDI5ODY0IDMyLjA1NjEwODYsMTUuNTAyOTg2NCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI0LjkxMDA0NTIsNi4yMzI4ODA4NCBDMjQuNzA2MzY1LDYuMjMyODgwODQgMjQuNTI2NTc2Miw2LjEzMjAwNjAzIDI0LjQxNjc3MjIsNS45NzczMTUyMyBDMjQuNDE2NzcyMiw1Ljk3NzMxNTIzIDIzLjg4ODg2ODgsNS4zNzUwODI5NiAyMy42MDQyMjMyLDUuMDkwMDc1NDEgQzIyLjQwMDEyMDcsMy44ODU5NzI4NSAyMC45OTgxMjk3LDIuOTQwODE0NDggMTkuNDM3MzQ1NCwyLjI4MDU0Mjk5IEMxNy44MjIwMjExLDEuNTk3MjI0NzQgMTYuMTA1NzAxNCwxLjI1MDc5OTQgMTQuMzM1NTY1NiwxLjI1MDc5OTQgQzEyLjU2NTE4ODUsMS4yNTA3OTk0IDEwLjg0ODg2ODgsMS41OTcyMjQ3NCA5LjIzMzc4NTgyLDIuMjgwNTQyOTkgQzcuNjcyODgwODQsMi45NDA4MTQ0OCA2LjI3MDg4OTg5LDMuODg1OTcyODUgNS4wNjY5MDc5OSw1LjA5MDA3NTQxIEMzLjg2MjY4NDc3LDYuMjk0NDE5MzEgMi45MTc0MDU3Myw3LjY5NjI4OTU5IDIuMjU3MjU0OSw5LjI1NzA3MzkxIEMxLjU3NDE3Nzk4LDEwLjg3MjM5ODIgMS4yMjc2MzE5OCwxMi41ODg5NTkzIDEuMjI3NjMxOTgsMTQuMzU4OTc0NCBDMS4yMjc2MzE5OCwxNi4xMjg5ODk0IDEuNTc0MTc3OTgsMTcuODQ1NTUwNSAyLjI1NzI1NDksMTkuNDYwODc0OCBDMi45MTc0MDU3MywyMS4wMjE2NTkxIDMuODYyNjg0NzcsMjIuNDIzNTI5NCA1LjA2NjkwNzk5LDIzLjYyNzYzMiBDNi4yNzEwMTA1NiwyNC44MzE4NTUyIDcuNjczMDAxNTEsMjUuNzc3MDEzNiA5LjIzMzc4NTgyLDI2LjQzNzI4NTEgQzEwLjg0ODg2ODgsMjcuMTIwNjAzMyAxMi41NjUxODg1LDI3LjQ2NzAyODcgMTQuMzM1NTY1NiwyNy40NjcwMjg3IEMxNi4xMDU3MDE0LDI3LjQ2NzAyODcgMTcuODIyMTQxOCwyNy4xMjA2MDMzIDE5LjQzNzM0NTQsMjYuNDM3Mjg1MSBDMjAuNTc0MjM4MywyNS45NTY0NDA0IDIxLjYyNjMwNDcsMjUuMzIzNTU5NiAyMi41Nzk1NDc1LDI0LjU1MDIyNjIgQzIyLjUyODYyNzUsMjQuNDAwMjQxMyAyMi41MDAxNTA4LDI0LjIzOTM5NjcgMjIuNTAwMTUwOCwyNC4wNzIwMzYyIEMyMi41MDAxNTA4LDIzLjI1NTI2NCAyMy4xNjIzNTI5LDIyLjU5MzA2MTggMjMuOTc5MDA0NSwyMi41OTMwNjE4IEMyNC43OTU4OTc0LDIyLjU5MzA2MTggMjUuNDU4MDk5NSwyMy4yNTUyNjQgMjUuNDU4MDk5NSwyNC4wNzIwMzYyIEMyNS40NTgwOTk1LDI0Ljg4ODkyOTEgMjQuNzk1ODk3NCwyNS41NTEwMTA2IDIzLjk3OTAwNDUsMjUuNTUxMDEwNiBDMjMuNzc2Mjg5NiwyNS41NTEwMTA2IDIzLjU4Mjg2NTgsMjUuNTEwMTA1NiAyMy40MDY4MTc1LDI1LjQzNjAxODEgQzIwLjkzNzE5NDYsMjcuNDYwOTk1NSAxNy43Nzg0NjE1LDI4LjY3NjgwMjQgMTQuMzM1NTY1NiwyOC42NzY4MDI0IEM2LjQyNzg3MzMsMjguNjc2ODAyNCAwLjAxNzQ5NjIyOTMsMjIuMjY2NTQ2IDAuMDE3NDk2MjI5MywxNC4zNTg4NTM3IEMwLjAxNzQ5NjIyOTMsNi40NTExNjEzOSA2LjQyNzg3MzMsMC4wNDA3ODQzMTM3IDE0LjMzNTU2NTYsMC4wNDA3ODQzMTM3IEMxOC43NTg4NTM3LDAuMDQwNzg0MzEzNyAyMi43MTIwMzYyLDIuMDQ4MTQ0OCAyNS4zMzgxNTk5LDUuMjAwMTIwNjYgQzI1LjQ0NzQ4MTEsNS4zMDk1NjI1OSAyNS41MTU0MTQ4LDUuNDYwNzU0MTUgMjUuNTE1NDE0OCw1LjYyNzYzMTk4IEMyNS41MTUyOTQxLDUuOTYyMjMyMjggMjUuMjQ0NTI0OSw2LjIzMjg4MDg0IDI0LjkxMDA0NTIsNi4yMzI4ODA4NCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8dGV4dCBpZD0iQ0xJRU5ULUNvcHktOSIgb3BhY2l0eT0iMC41IiBmb250LXNpemU9IjE3IiBmb250LXdlaWdodD0ibm9ybWFsIiBsZXR0ZXItc3BhY2luZz0iMC44NzkzMTAzNjkiPgogICAgICAgICAgICAgICAgICAgIDx0c3BhbiB4PSI0Mi4yMTQxMzc4IiB5PSI0MiI+Q0xJRU5UPC90c3Bhbj4KICAgICAgICAgICAgICAgIDwvdGV4dD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"
- alt="React.js"
- />
- <h2>Apollo Client</h2>
- <span className="for">For Data Management</span>
- <small />
- <ul>
- <li>
- Performing GraphQL <strong>Mutations</strong>
- </li>
- <li>
- Fetching GraphQL <strong>Queries</strong>
- </li>
- <li>
- <strong>Caching</strong> GraphQL Data
- </li>
- <li>
- Managing <strong>Local State</strong>
- </li>
- <li>
- <strong>Error</strong> and <strong>Loading</strong> UI States
- </li>
- <li>
- <small>Apollo Client replaces the need for redux + data fetching/caching libraries</small>
- </li>
- </ul>
- </div>
- <div className="slat slat3">
- <img
- src="https://camo.githubusercontent.com/389368863d9b9df25acd07644bad7642459c3533/68747470733a2f2f696d6775722e636f6d2f5376366a3042362e706e67"
- alt="React.js"
- />
- <h2>GraphQL Yoga</h2>
-
- <span className="for">An Express GraphQL Server For:</span>
- <ul>
- <li>
- Implementing <strong>Query</strong> and <strong>Mutation</strong>{' '}
- <strong>Resolvers</strong>
- </li>
- <li>
- Custom <strong>Server Side Logic</strong>
- </li>
- <li>
- <strong>Charging</strong> Credit Cards
- </li>
- <li>
- <strong>Sending</strong> Email
- </li>
- <li>
- Performing <strong>JWT Authentication</strong>
- </li>
- <li>
- Checking <strong>Permissions</strong>
- </li>
- </ul>
- </div>
- <div className="slat slat4">
- <img
- src="https://camo.githubusercontent.com/87336b0d10b0d1f27518e14c4a36f995babd6a2f/68747470733a2f2f696d6775722e636f6d2f485575313072482e706e67"
- alt="React.js"
- />
- <h2>Prisma</h2>
-
- <span className="for">A GraphQL Database Interface</span>
- <ul>
- <li>
- Provides a set of GraphQL <strong>CRUD APIs</strong> for MySQL or Postgres{' '}
- <strong>Database</strong>
- </li>
- <li>
- <strong>Schema</strong> Definition
- </li>
- <li>
- Data <strong>Relationships</strong>
- </li>
- <li>
- <strong>Queried</strong> Directly from our Yoga Server
- </li>
- <li>
- <strong>Self-hosted</strong> or <strong>as-a-service</strong>
- </li>
- </ul>
- </div>
- <span className="arrow arrow1">↔</span>
- <span className="arrow arrow2">↔</span>
- <span className="arrow arrow3">↔</span>
- </DiagramStyles>
-);
-
-export default Diagram;
diff --git a/finished-application/frontend/pages/item.js b/finished-application/frontend/pages/item.js
deleted file mode 100644
index ae1e086..0000000
--- a/finished-application/frontend/pages/item.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import SingleItem from '../components/SingleItem';
-
-const ItemPage = ({ query }) => (
- <SingleItem id={query.id} />
-);
-
-export default ItemPage;
diff --git a/finished-application/frontend/pages/items.js b/finished-application/frontend/pages/items.js
deleted file mode 100644
index 3426f4b..0000000
--- a/finished-application/frontend/pages/items.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Index from './index';
-
-export default Index;
diff --git a/finished-application/frontend/pages/me.js b/finished-application/frontend/pages/me.js
deleted file mode 100644
index b0c2c25..0000000
--- a/finished-application/frontend/pages/me.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import EditUser from '../components/EditUser';
-import PleaseSignIn from '../components/PleaseSignIn';
-
-const MyAccount = () => (
- <>
- <h2>My Account</h2>
- <PleaseSignIn>
- <EditUser />
- </PleaseSignIn>
- </>
-);
-
-export default MyAccount;
diff --git a/finished-application/frontend/pages/order.js b/finished-application/frontend/pages/order.js
deleted file mode 100644
index 5298202..0000000
--- a/finished-application/frontend/pages/order.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import Order from '../components/Order';
-
-const OrderPage = props => (
- <Order id={props.query.id} />
-);
-
-export default OrderPage;
diff --git a/finished-application/frontend/pages/orders.js b/finished-application/frontend/pages/orders.js
deleted file mode 100644
index 4c7c76d..0000000
--- a/finished-application/frontend/pages/orders.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import OrderList from '../components/OrderList';
-import PleaseSignIn from '../components/PleaseSignIn';
-
-const Orders = () => (
- <PleaseSignIn>
- <OrderList />
- </PleaseSignIn>
-);
-
-export default Orders;
diff --git a/finished-application/frontend/pages/permissions.js b/finished-application/frontend/pages/permissions.js
deleted file mode 100644
index ad6b446..0000000
--- a/finished-application/frontend/pages/permissions.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import Permissions from '../components/Permissions';
-import PleaseSignIn from '../components/PleaseSignIn';
-
-const ItemPage = () => (
- <PleaseSignIn allowedPermissions={['ADMIN', 'PERMISSIONUPDATE']}>
- <Permissions />
- </PleaseSignIn>
-);
-
-export default ItemPage;
diff --git a/finished-application/frontend/pages/reset.js b/finished-application/frontend/pages/reset.js
deleted file mode 100644
index bc6e377..0000000
--- a/finished-application/frontend/pages/reset.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import Reset from '../components/Reset';
-
-const ResetPage = props => (
- <>
- <h2>So you wanna reset your password?</h2>
- <Reset resetToken={props.query.resetToken} />
- </>
-);
-
-export default ResetPage;
diff --git a/finished-application/frontend/pages/sell.js b/finished-application/frontend/pages/sell.js
deleted file mode 100644
index 155f3b7..0000000
--- a/finished-application/frontend/pages/sell.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import CreateItem from '../components/CreateItem';
-import PleaseSignIn from '../components/PleaseSignIn';
-
-const Add = () => (
- <PleaseSignIn>
- <CreateItem />
- </PleaseSignIn>
-);
-
-export default Add;
diff --git a/finished-application/frontend/pages/update.js b/finished-application/frontend/pages/update.js
deleted file mode 100644
index 7a8630d..0000000
--- a/finished-application/frontend/pages/update.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Component } from 'react';
-import UpdateItem from '../components/UpdateItem';
-import PleaseSignIn from '../components/PleaseSignIn';
-
-class Home extends Component {
- render() {
- return (
- <PleaseSignIn>
- <UpdateItem id={this.props.query.id} />
- </PleaseSignIn>
- );
- }
-}
-
-export default Home;
diff --git a/sick-fits/backend/package.json b/sick-fits/backend/package.json
index e038404..a8bd30d 100644
--- a/sick-fits/backend/package.json
+++ b/sick-fits/backend/package.json
@@ -1,31 +1,31 @@
{
- "name": "my-own",
+ "name": "sick-fits-backend",
"scripts": {
"start": "nodemon -e js,graphql -x node src/index.js",
"debug": "nodemon -e js,graphql -x node --inspect src/index.js",
"test": "jest",
- "playground": "graphql playground",
+ "playground": "graphql playground --dotenv variables.env",
"deploy": "prisma deploy --env-file variables.env",
"dev": "npm-run-all --parallel debug playground"
},
"dependencies": {
"bcryptjs": "2.4.3",
"cookie-parser": "^1.4.3",
- "graphql": "^0.13.2",
- "graphql-yoga": "1.14.7",
+ "graphql": "^14.0.2",
+ "graphql-yoga": "1.16.2",
"jsonwebtoken": "8.3.0",
"nodemailer": "^4.6.6",
"npm-run-all": "^4.1.3",
- "prisma-binding": "2.0.2",
- "stripe": "^6.1.1"
+ "prisma-binding": "2.1.5",
+ "stripe": "^6.1.1",
+ "dotenv": "6.0.0",
+ "prisma": "1.16.0",
+ "babel-preset-env": "^1.7.0",
+ "nodemon": "1.18.4"
},
"devDependencies": {
- "babel-preset-env": "^1.7.0",
- "dotenv": "6.0.0",
"graphql-cli": "^2.16.2",
- "jest-cli": "^23.1.0",
- "nodemon": "1.17.5",
- "prisma": "1.9.0"
+ "jest-cli": "^23.1.0"
},
"license": "MIT",
"repository": {
diff --git a/finished-application/frontend/__tests__/AddToCart.test.js b/stepped-solutions/65/frontend/__tests__/AddToCart.test.js
index fe15f3f..cfc2e3e 100644..100755
--- a/finished-application/frontend/__tests__/AddToCart.test.js
+++ b/stepped-solutions/65/frontend/__tests__/AddToCart.test.js
@@ -1,12 +1,11 @@
-import React from 'react';
import { mount } from 'enzyme';
+import wait from 'waait';
import toJSON from 'enzyme-to-json';
-import { ApolloConsumer } from 'react-apollo';
import { MockedProvider } from 'react-apollo/test-utils';
-import wait from 'waait';
+import { ApolloConsumer } from 'react-apollo';
import AddToCart, { ADD_TO_CART_MUTATION } from '../components/AddToCart';
-import { fakeCartItem, fakeUser } from '../lib/testUtils';
import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
const mocks = [
{
@@ -21,6 +20,17 @@ const mocks = [
},
},
{
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [fakeCartItem()],
+ },
+ },
+ },
+ },
+ {
request: { query: ADD_TO_CART_MUTATION, variables: { id: 'abc123' } },
result: {
data: {
@@ -33,8 +43,8 @@ const mocks = [
},
];
-describe('<AddtoCart/>', () => {
- it('renders and matches snapshot', async () => {
+describe('<AddToCart/>', () => {
+ it('renders and matches the snap shot', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
<AddToCart id="abc123" />
@@ -42,14 +52,11 @@ describe('<AddtoCart/>', () => {
);
await wait();
wrapper.update();
-
expect(toJSON(wrapper.find('button'))).toMatchSnapshot();
});
- it('adds an item to the cart when clicked', async () => {
- // 1. Grab a copy of the current client
+ it('adds an item to cart when clicked', async () => {
let apolloClient;
- // const wrapper = mountWithApollo(<RemoveFromCart id="abc123" />);
const wrapper = mount(
<MockedProvider mocks={mocks}>
<ApolloConsumer>
@@ -62,22 +69,20 @@ describe('<AddtoCart/>', () => {
);
await wait();
wrapper.update();
-
- const { me } = apolloClient.readQuery({ query: CURRENT_USER_QUERY });
+ const { data: { me } } = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ // console.log(me);
expect(me.cart).toHaveLength(0);
-
- // add to cart
+ // add an item to the cart
wrapper.find('button').simulate('click');
await wait();
// check if the item is in the cart
- const { me: me2 } = apolloClient.readQuery({ query: CURRENT_USER_QUERY });
-
+ const { data: { me: me2 } } = await apolloClient.query({ query: CURRENT_USER_QUERY });
expect(me2.cart).toHaveLength(1);
expect(me2.cart[0].id).toBe('omg123');
- expect(me2.cart[0].quantity).toBe(1);
+ expect(me2.cart[0].quantity).toBe(3);
});
- it('changes to adding when clicked', async () => {
+ it('changes from add to adding when clicked', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
<AddToCart id="abc123" />
@@ -85,8 +90,8 @@ describe('<AddtoCart/>', () => {
);
await wait();
wrapper.update();
- expect(wrapper.text()).toContain('🛒 Add To Cart');
+ expect(wrapper.text()).toContain('Add To Cart');
wrapper.find('button').simulate('click');
- expect(wrapper.text()).toContain('🛒 Adding To Cart');
+ expect(wrapper.text()).toContain('Adding To Cart');
});
});
diff --git a/finished-application/frontend/__tests__/Cart.test.js b/stepped-solutions/65/frontend/__tests__/Cart.test.js
index 0b5baf3..b8afc88 100644..100755
--- a/finished-application/frontend/__tests__/Cart.test.js
+++ b/stepped-solutions/65/frontend/__tests__/Cart.test.js
@@ -1,11 +1,10 @@
import { mount } from 'enzyme';
-import toJSON from 'enzyme-to-json';
import wait from 'waait';
+import toJSON from 'enzyme-to-json';
import { MockedProvider } from 'react-apollo/test-utils';
-import Cart from '../components/Cart';
-import { fakeCartItem, fakeUser } from '../lib/testUtils';
+import Cart, { LOCAL_STATE_QUERY } from '../components/Cart';
import { CURRENT_USER_QUERY } from '../components/User';
-import { LOCAL_STATE_QUERY } from '../components/Cart';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
const mocks = [
{
@@ -21,16 +20,12 @@ const mocks = [
},
{
request: { query: LOCAL_STATE_QUERY },
- result: {
- data: {
- cartOpen: true,
- },
- },
+ result: { data: { cartOpen: true } },
},
];
describe('<Cart/>', () => {
- it('renders', async () => {
+ it('renders and matches snappy', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
<Cart />
diff --git a/finished-application/frontend/__tests__/RemoveFromCart.test.js b/stepped-solutions/65/frontend/__tests__/RemoveFromCart.test.js
index 34229a5..faacc91 100644..100755
--- a/finished-application/frontend/__tests__/RemoveFromCart.test.js
+++ b/stepped-solutions/65/frontend/__tests__/RemoveFromCart.test.js
@@ -1,12 +1,13 @@
-import React from 'react';
import { mount } from 'enzyme';
+import wait from 'waait';
import toJSON from 'enzyme-to-json';
-import { ApolloConsumer } from 'react-apollo';
import { MockedProvider } from 'react-apollo/test-utils';
-import wait from 'waait';
+import { ApolloConsumer } from 'react-apollo';
import RemoveFromCart, { REMOVE_FROM_CART_MUTATION } from '../components/RemoveFromCart';
-import { fakeCartItem, fakeUser } from '../lib/testUtils';
import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
+
+global.alert = console.log;
const mocks = [
{
@@ -16,17 +17,12 @@ const mocks = [
me: {
...fakeUser(),
cart: [fakeCartItem({ id: 'abc123' })],
- orders: [],
},
},
},
},
{
- request: {
- // This is the mutation
- query: REMOVE_FROM_CART_MUTATION,
- variables: { id: 'abc123' },
- },
+ request: { query: REMOVE_FROM_CART_MUTATION, variables: { id: 'abc123' } },
result: {
data: {
removeFromCart: {
@@ -39,19 +35,17 @@ const mocks = [
];
describe('<RemoveFromCart/>', () => {
- it('renders and matches snapshot', () => {
+ it('renders and matches snapshot', async () => {
const wrapper = mount(
- <MockedProvider mocks={mocks}>
+ <MockedProvider>
<RemoveFromCart id="abc123" />
</MockedProvider>
);
expect(toJSON(wrapper.find('button'))).toMatchSnapshot();
});
- it('removes an item from the cart', async () => {
- // 1. Grab a copy of the current client
+ it('removes the item from cart', async () => {
let apolloClient;
- // const wrapper = mountWithApollo(<RemoveFromCart id="abc123" />);
const wrapper = mount(
<MockedProvider mocks={mocks}>
<ApolloConsumer>
@@ -62,17 +56,12 @@ describe('<RemoveFromCart/>', () => {
</ApolloConsumer>
</MockedProvider>
);
- // Fire Off that first mock
- await apolloClient.query({ query: CURRENT_USER_QUERY });
- // check if it worked
- const { me } = apolloClient.readQuery({ query: CURRENT_USER_QUERY });
- expect(me.cart).toHaveLength(1);
- expect(me.cart[0].item.price).toBe(5000);
-
- // simulate a click, which will fire REMOVE_FROM_CART mock
+ const res = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ expect(res.data.me.cart).toHaveLength(1);
+ expect(res.data.me.cart[0].item.price).toBe(5000);
wrapper.find('button').simulate('click');
await wait();
- const { me: me2 } = apolloClient.readQuery({ query: CURRENT_USER_QUERY });
- expect(me2.cart).toHaveLength(0);
+ const res2 = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ expect(res2.data.me.cart).toHaveLength(0);
});
});
diff --git a/stepped-solutions/65/frontend/components/AddToCart.js b/stepped-solutions/65/frontend/components/AddToCart.js
new file mode 100755
index 0000000..8a71cc3
--- /dev/null
+++ b/stepped-solutions/65/frontend/components/AddToCart.js
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Mutation } from 'react-apollo';
+import gql from 'graphql-tag';
+import { CURRENT_USER_QUERY } from './User';
+
+const ADD_TO_CART_MUTATION = gql`
+ mutation addToCart($id: ID!) {
+ addToCart(id: $id) {
+ id
+ quantity
+ }
+ }
+`;
+
+class AddToCart extends React.Component {
+ render() {
+ const { id } = this.props;
+ return (
+ <Mutation
+ mutation={ADD_TO_CART_MUTATION}
+ variables={{
+ id,
+ }}
+ refetchQueries={[{ query: CURRENT_USER_QUERY }]}
+ >
+ {(addToCart, { loading }) => (
+ <button disabled={loading} onClick={addToCart}>
+ Add{loading && 'ing'} To Cart 🛒
+ </button>
+ )}
+ </Mutation>
+ );
+ }
+}
+export default AddToCart;
+export { ADD_TO_CART_MUTATION };
diff --git a/finished-application/frontend/components/RemoveFromCart.js b/stepped-solutions/65/frontend/components/RemoveFromCart.js
index cf5b6fd..025dae5 100644..100755
--- a/finished-application/frontend/components/RemoveFromCart.js
+++ b/stepped-solutions/65/frontend/components/RemoveFromCart.js
@@ -1,4 +1,4 @@
-import { Component } from 'react';
+import React from 'react';
import { Mutation } from 'react-apollo';
import styled from 'styled-components';
import PropTypes from 'prop-types';
@@ -23,29 +23,43 @@ const BigButton = styled.button`
}
`;
-class RemoveFromCart extends Component {
+class RemoveFromCart extends React.Component {
static propTypes = {
id: PropTypes.string.isRequired,
};
-
+ // This gets called as soon as we get a response back from the server after a mutation has been performed
update = (cache, payload) => {
+ // 1. first read the cache
const data = cache.readQuery({ query: CURRENT_USER_QUERY });
- // console.log(data.me.cart[0]);
+ // 2. remove that item from the cart
const cartItemId = payload.data.removeFromCart.id;
data.me.cart = data.me.cart.filter(cartItem => cartItem.id !== cartItemId);
+ // 3. write it back to the cache
cache.writeQuery({ query: CURRENT_USER_QUERY, data });
};
-
render() {
return (
<Mutation
mutation={REMOVE_FROM_CART_MUTATION}
variables={{ id: this.props.id }}
update={this.update}
+ optimisticResponse={{
+ __typename: 'Mutation',
+ removeFromCart: {
+ __typename: 'CartItem',
+ id: this.props.id,
+ },
+ }}
>
- {(removeFromCart, { loading }) => (
- <BigButton disabled={loading} title="Remove From Cart" onClick={removeFromCart}>
- ×
+ {(removeFromCart, { loading, error }) => (
+ <BigButton
+ disabled={loading}
+ onClick={() => {
+ removeFromCart().catch(err => alert(err.message));
+ }}
+ title="Delete Item"
+ >
+ &times;
</BigButton>
)}
</Mutation>
diff --git a/stepped-solutions/66/backend/prisma.yml b/stepped-solutions/66/backend/prisma.yml
new file mode 100755
index 0000000..58b7a3b
--- /dev/null
+++ b/stepped-solutions/66/backend/prisma.yml
@@ -0,0 +1,7 @@
+#endpoint: ${env:PRISMA_ENDPOINT}
+endpoint: https://sick-fits-production.herokuapp.com/sick-fits-prod/prod
+datamodel: datamodel.graphql
+secret: ${env:PRISMA_SECRET}
+hooks:
+ post-deploy:
+ - graphql get-schema -p prisma
diff --git a/finished-application/backend/src/generated/prisma.graphql b/stepped-solutions/66/backend/src/generated/prisma.graphql
index 64f39a4..cc13ecf 100644..100755
--- a/finished-application/backend/src/generated/prisma.graphql
+++ b/stepped-solutions/66/backend/src/generated/prisma.graphql
@@ -1,5 +1,5 @@
-# source: https://us1.prisma.sh/wesbos/sick-fits/dev
-# timestamp: Thu Jun 21 2018 15:13:13 GMT-0400 (EDT)
+# source: https://us1.prisma.sh/wesbos/siccccccccck-fits/dev
+# timestamp: Tue Sep 11 2018 16:26:22 GMT-0400 (EDT)
type AggregateCartItem {
count: Int!
@@ -31,8 +31,6 @@ type CartItem implements Node {
quantity: Int!
item(where: ItemWhereInput): Item
user(where: UserWhereInput): User!
- createdAt: DateTime!
- updatedAt: DateTime!
}
"""A connection to a list of items."""
@@ -75,17 +73,15 @@ enum CartItemOrderByInput {
id_DESC
quantity_ASC
quantity_DESC
- createdAt_ASC
- createdAt_DESC
updatedAt_ASC
updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
}
type CartItemPreviousValues {
id: ID!
quantity: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
}
type CartItemSubscriptionPayload {
@@ -130,7 +126,7 @@ input CartItemSubscriptionWhereInput {
input CartItemUpdateInput {
quantity: Int
item: ItemUpdateOneInput
- user: UserUpdateOneWithoutCartInput
+ user: UserUpdateOneRequiredWithoutCartInput
}
input CartItemUpdateManyWithoutUserInput {
@@ -229,50 +225,6 @@ input CartItemWhereInput {
"""All values greater than or equal the given value."""
quantity_gte: Int
- createdAt: DateTime
-
- """All values that are not equal to given value."""
- createdAt_not: DateTime
-
- """All values that are contained in given list."""
- createdAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- createdAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- createdAt_lt: DateTime
-
- """All values less than or equal the given value."""
- createdAt_lte: DateTime
-
- """All values greater than the given value."""
- createdAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- createdAt_gte: DateTime
- updatedAt: DateTime
-
- """All values that are not equal to given value."""
- updatedAt_not: DateTime
-
- """All values that are contained in given list."""
- updatedAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- updatedAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- updatedAt_lt: DateTime
-
- """All values less than or equal the given value."""
- updatedAt_lte: DateTime
-
- """All values greater than the given value."""
- updatedAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- updatedAt_gte: DateTime
item: ItemWhereInput
user: UserWhereInput
}
@@ -290,8 +242,6 @@ type Item implements Node {
image: String
largeImage: String
price: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
user(where: UserWhereInput): User!
}
@@ -341,10 +291,10 @@ enum ItemOrderByInput {
largeImage_DESC
price_ASC
price_DESC
- createdAt_ASC
- createdAt_DESC
updatedAt_ASC
updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
}
type ItemPreviousValues {
@@ -354,8 +304,6 @@ type ItemPreviousValues {
image: String
largeImage: String
price: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
}
type ItemSubscriptionPayload {
@@ -403,7 +351,7 @@ input ItemUpdateDataInput {
image: String
largeImage: String
price: Int
- user: UserUpdateOneInput
+ user: UserUpdateOneRequiredInput
}
input ItemUpdateInput {
@@ -412,7 +360,7 @@ input ItemUpdateInput {
image: String
largeImage: String
price: Int
- user: UserUpdateOneInput
+ user: UserUpdateOneRequiredInput
}
input ItemUpdateOneInput {
@@ -660,54 +608,7 @@ input ItemWhereInput {
"""All values greater than or equal the given value."""
price_gte: Int
- createdAt: DateTime
-
- """All values that are not equal to given value."""
- createdAt_not: DateTime
-
- """All values that are contained in given list."""
- createdAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- createdAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- createdAt_lt: DateTime
-
- """All values less than or equal the given value."""
- createdAt_lte: DateTime
-
- """All values greater than the given value."""
- createdAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- createdAt_gte: DateTime
- updatedAt: DateTime
-
- """All values that are not equal to given value."""
- updatedAt_not: DateTime
-
- """All values that are contained in given list."""
- updatedAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- updatedAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- updatedAt_lt: DateTime
-
- """All values less than or equal the given value."""
- updatedAt_lte: DateTime
-
- """All values greater than the given value."""
- updatedAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- updatedAt_gte: DateTime
user: UserWhereInput
- _MagicalBackRelation_CartItemToItem_every: CartItemWhereInput
- _MagicalBackRelation_CartItemToItem_some: CartItemWhereInput
- _MagicalBackRelation_CartItemToItem_none: CartItemWhereInput
}
input ItemWhereUniqueInput {
@@ -723,34 +624,34 @@ scalar Long
type Mutation {
createCartItem(data: CartItemCreateInput!): CartItem!
createOrder(data: OrderCreateInput!): Order!
- createUser(data: UserCreateInput!): User!
createItem(data: ItemCreateInput!): Item!
createOrderItem(data: OrderItemCreateInput!): OrderItem!
+ createUser(data: UserCreateInput!): User!
updateCartItem(data: CartItemUpdateInput!, where: CartItemWhereUniqueInput!): CartItem
updateOrder(data: OrderUpdateInput!, where: OrderWhereUniqueInput!): Order
- updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
updateItem(data: ItemUpdateInput!, where: ItemWhereUniqueInput!): Item
updateOrderItem(data: OrderItemUpdateInput!, where: OrderItemWhereUniqueInput!): OrderItem
+ updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
deleteCartItem(where: CartItemWhereUniqueInput!): CartItem
deleteOrder(where: OrderWhereUniqueInput!): Order
- deleteUser(where: UserWhereUniqueInput!): User
deleteItem(where: ItemWhereUniqueInput!): Item
deleteOrderItem(where: OrderItemWhereUniqueInput!): OrderItem
+ deleteUser(where: UserWhereUniqueInput!): User
upsertCartItem(where: CartItemWhereUniqueInput!, create: CartItemCreateInput!, update: CartItemUpdateInput!): CartItem!
upsertOrder(where: OrderWhereUniqueInput!, create: OrderCreateInput!, update: OrderUpdateInput!): Order!
- upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
upsertItem(where: ItemWhereUniqueInput!, create: ItemCreateInput!, update: ItemUpdateInput!): Item!
upsertOrderItem(where: OrderItemWhereUniqueInput!, create: OrderItemCreateInput!, update: OrderItemUpdateInput!): OrderItem!
+ upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
updateManyCartItems(data: CartItemUpdateInput!, where: CartItemWhereInput): BatchPayload!
updateManyOrders(data: OrderUpdateInput!, where: OrderWhereInput): BatchPayload!
- updateManyUsers(data: UserUpdateInput!, where: UserWhereInput): BatchPayload!
updateManyItems(data: ItemUpdateInput!, where: ItemWhereInput): BatchPayload!
updateManyOrderItems(data: OrderItemUpdateInput!, where: OrderItemWhereInput): BatchPayload!
+ updateManyUsers(data: UserUpdateInput!, where: UserWhereInput): BatchPayload!
deleteManyCartItems(where: CartItemWhereInput): BatchPayload!
deleteManyOrders(where: OrderWhereInput): BatchPayload!
- deleteManyUsers(where: UserWhereInput): BatchPayload!
deleteManyItems(where: ItemWhereInput): BatchPayload!
deleteManyOrderItems(where: OrderItemWhereInput): BatchPayload!
+ deleteManyUsers(where: UserWhereInput): BatchPayload!
}
enum MutationType {
@@ -770,9 +671,9 @@ type Order implements Node {
items(where: OrderItemWhereInput, orderBy: OrderItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [OrderItem!]
total: Int!
user(where: UserWhereInput): User!
+ charge: String!
createdAt: DateTime!
updatedAt: DateTime!
- charge: String!
}
"""A connection to a list of items."""
@@ -789,18 +690,7 @@ input OrderCreateInput {
total: Int!
charge: String!
items: OrderItemCreateManyInput
- user: UserCreateOneWithoutOrdersInput!
-}
-
-input OrderCreateManyWithoutUserInput {
- create: [OrderCreateWithoutUserInput!]
- connect: [OrderWhereUniqueInput!]
-}
-
-input OrderCreateWithoutUserInput {
- total: Int!
- charge: String!
- items: OrderItemCreateManyInput
+ user: UserCreateOneInput!
}
"""An edge in a connection."""
@@ -816,11 +706,9 @@ type OrderItem implements Node {
id: ID!
title: String!
description: String!
- image: String
- largeImage: String
+ image: String!
+ largeImage: String!
price: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
quantity: Int!
user(where: UserWhereInput): User
}
@@ -838,8 +726,8 @@ type OrderItemConnection {
input OrderItemCreateInput {
title: String!
description: String!
- image: String
- largeImage: String
+ image: String!
+ largeImage: String!
price: Int!
quantity: Int
user: UserCreateOneInput
@@ -872,23 +760,21 @@ enum OrderItemOrderByInput {
largeImage_DESC
price_ASC
price_DESC
- createdAt_ASC
- createdAt_DESC
- updatedAt_ASC
- updatedAt_DESC
quantity_ASC
quantity_DESC
+ updatedAt_ASC
+ updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
}
type OrderItemPreviousValues {
id: ID!
title: String!
description: String!
- image: String
- largeImage: String
+ image: String!
+ largeImage: String!
price: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
quantity: Int!
}
@@ -1202,50 +1088,6 @@ input OrderItemWhereInput {
"""All values greater than or equal the given value."""
price_gte: Int
- createdAt: DateTime
-
- """All values that are not equal to given value."""
- createdAt_not: DateTime
-
- """All values that are contained in given list."""
- createdAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- createdAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- createdAt_lt: DateTime
-
- """All values less than or equal the given value."""
- createdAt_lte: DateTime
-
- """All values greater than the given value."""
- createdAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- createdAt_gte: DateTime
- updatedAt: DateTime
-
- """All values that are not equal to given value."""
- updatedAt_not: DateTime
-
- """All values that are contained in given list."""
- updatedAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- updatedAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- updatedAt_lt: DateTime
-
- """All values less than or equal the given value."""
- updatedAt_lte: DateTime
-
- """All values greater than the given value."""
- updatedAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- updatedAt_gte: DateTime
quantity: Int
"""All values that are not equal to given value."""
@@ -1269,9 +1111,6 @@ input OrderItemWhereInput {
"""All values greater than or equal the given value."""
quantity_gte: Int
user: UserWhereInput
- _MagicalBackRelation_OrderToOrderItem_every: OrderWhereInput
- _MagicalBackRelation_OrderToOrderItem_some: OrderWhereInput
- _MagicalBackRelation_OrderToOrderItem_none: OrderWhereInput
}
input OrderItemWhereUniqueInput {
@@ -1283,20 +1122,20 @@ enum OrderOrderByInput {
id_DESC
total_ASC
total_DESC
+ charge_ASC
+ charge_DESC
createdAt_ASC
createdAt_DESC
updatedAt_ASC
updatedAt_DESC
- charge_ASC
- charge_DESC
}
type OrderPreviousValues {
id: ID!
total: Int!
+ charge: String!
createdAt: DateTime!
updatedAt: DateTime!
- charge: String!
}
type OrderSubscriptionPayload {
@@ -1342,33 +1181,7 @@ input OrderUpdateInput {
total: Int
charge: String
items: OrderItemUpdateManyInput
- user: UserUpdateOneWithoutOrdersInput
-}
-
-input OrderUpdateManyWithoutUserInput {
- create: [OrderCreateWithoutUserInput!]
- connect: [OrderWhereUniqueInput!]
- disconnect: [OrderWhereUniqueInput!]
- delete: [OrderWhereUniqueInput!]
- update: [OrderUpdateWithWhereUniqueWithoutUserInput!]
- upsert: [OrderUpsertWithWhereUniqueWithoutUserInput!]
-}
-
-input OrderUpdateWithoutUserDataInput {
- total: Int
- charge: String
- items: OrderItemUpdateManyInput
-}
-
-input OrderUpdateWithWhereUniqueWithoutUserInput {
- where: OrderWhereUniqueInput!
- data: OrderUpdateWithoutUserDataInput!
-}
-
-input OrderUpsertWithWhereUniqueWithoutUserInput {
- where: OrderWhereUniqueInput!
- update: OrderUpdateWithoutUserDataInput!
- create: OrderCreateWithoutUserInput!
+ user: UserUpdateOneRequiredInput
}
input OrderWhereInput {
@@ -1442,6 +1255,46 @@ input OrderWhereInput {
"""All values greater than or equal the given value."""
total_gte: Int
+ charge: String
+
+ """All values that are not equal to given value."""
+ charge_not: String
+
+ """All values that are contained in given list."""
+ charge_in: [String!]
+
+ """All values that are not contained in given list."""
+ charge_not_in: [String!]
+
+ """All values less than the given value."""
+ charge_lt: String
+
+ """All values less than or equal the given value."""
+ charge_lte: String
+
+ """All values greater than the given value."""
+ charge_gt: String
+
+ """All values greater than or equal the given value."""
+ charge_gte: String
+
+ """All values containing the given string."""
+ charge_contains: String
+
+ """All values not containing the given string."""
+ charge_not_contains: String
+
+ """All values starting with the given string."""
+ charge_starts_with: String
+
+ """All values not starting with the given string."""
+ charge_not_starts_with: String
+
+ """All values ending with the given string."""
+ charge_ends_with: String
+
+ """All values not ending with the given string."""
+ charge_not_ends_with: String
createdAt: DateTime
"""All values that are not equal to given value."""
@@ -1486,46 +1339,6 @@ input OrderWhereInput {
"""All values greater than or equal the given value."""
updatedAt_gte: DateTime
- charge: String
-
- """All values that are not equal to given value."""
- charge_not: String
-
- """All values that are contained in given list."""
- charge_in: [String!]
-
- """All values that are not contained in given list."""
- charge_not_in: [String!]
-
- """All values less than the given value."""
- charge_lt: String
-
- """All values less than or equal the given value."""
- charge_lte: String
-
- """All values greater than the given value."""
- charge_gt: String
-
- """All values greater than or equal the given value."""
- charge_gte: String
-
- """All values containing the given string."""
- charge_contains: String
-
- """All values not containing the given string."""
- charge_not_contains: String
-
- """All values starting with the given string."""
- charge_starts_with: String
-
- """All values not starting with the given string."""
- charge_not_starts_with: String
-
- """All values ending with the given string."""
- charge_ends_with: String
-
- """All values not ending with the given string."""
- charge_not_ends_with: String
items_every: OrderItemWhereInput
items_some: OrderItemWhereInput
items_none: OrderItemWhereInput
@@ -1563,19 +1376,19 @@ enum Permission {
type Query {
cartItems(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [CartItem]!
orders(where: OrderWhereInput, orderBy: OrderOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Order]!
- users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
items(where: ItemWhereInput, orderBy: ItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Item]!
orderItems(where: OrderItemWhereInput, orderBy: OrderItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [OrderItem]!
+ users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
cartItem(where: CartItemWhereUniqueInput!): CartItem
order(where: OrderWhereUniqueInput!): Order
- user(where: UserWhereUniqueInput!): User
item(where: ItemWhereUniqueInput!): Item
orderItem(where: OrderItemWhereUniqueInput!): OrderItem
+ user(where: UserWhereUniqueInput!): User
cartItemsConnection(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): CartItemConnection!
ordersConnection(where: OrderWhereInput, orderBy: OrderOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): OrderConnection!
- usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!
itemsConnection(where: ItemWhereInput, orderBy: ItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): ItemConnection!
orderItemsConnection(where: OrderItemWhereInput, orderBy: OrderItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): OrderItemConnection!
+ usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!
"""Fetches an object given its ID"""
node(
@@ -1587,23 +1400,20 @@ type Query {
type Subscription {
cartItem(where: CartItemSubscriptionWhereInput): CartItemSubscriptionPayload
order(where: OrderSubscriptionWhereInput): OrderSubscriptionPayload
- user(where: UserSubscriptionWhereInput): UserSubscriptionPayload
item(where: ItemSubscriptionWhereInput): ItemSubscriptionPayload
orderItem(where: OrderItemSubscriptionWhereInput): OrderItemSubscriptionPayload
+ user(where: UserSubscriptionWhereInput): UserSubscriptionPayload
}
type User implements Node {
id: ID!
+ name: String!
email: String!
password: String!
- name: String!
- orders(where: OrderWhereInput, orderBy: OrderOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Order!]
resetToken: String
resetTokenExpiry: String
- cart(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [CartItem!]
- createdAt: DateTime!
- updatedAt: DateTime!
permissions: [Permission!]!
+ cart(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [CartItem!]
}
"""A connection to a list of items."""
@@ -1617,13 +1427,12 @@ type UserConnection {
}
input UserCreateInput {
+ name: String!
email: String!
password: String!
- name: String!
resetToken: String
resetTokenExpiry: String
permissions: UserCreatepermissionsInput
- orders: OrderCreateManyWithoutUserInput
cart: CartItemCreateManyWithoutUserInput
}
@@ -1637,33 +1446,17 @@ input UserCreateOneWithoutCartInput {
connect: UserWhereUniqueInput
}
-input UserCreateOneWithoutOrdersInput {
- create: UserCreateWithoutOrdersInput
- connect: UserWhereUniqueInput
-}
-
input UserCreatepermissionsInput {
set: [Permission!]
}
input UserCreateWithoutCartInput {
- email: String!
- password: String!
name: String!
- resetToken: String
- resetTokenExpiry: String
- permissions: UserCreatepermissionsInput
- orders: OrderCreateManyWithoutUserInput
-}
-
-input UserCreateWithoutOrdersInput {
email: String!
password: String!
- name: String!
resetToken: String
resetTokenExpiry: String
permissions: UserCreatepermissionsInput
- cart: CartItemCreateManyWithoutUserInput
}
"""An edge in a connection."""
@@ -1678,31 +1471,29 @@ type UserEdge {
enum UserOrderByInput {
id_ASC
id_DESC
+ name_ASC
+ name_DESC
email_ASC
email_DESC
password_ASC
password_DESC
- name_ASC
- name_DESC
resetToken_ASC
resetToken_DESC
resetTokenExpiry_ASC
resetTokenExpiry_DESC
- createdAt_ASC
- createdAt_DESC
updatedAt_ASC
updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
}
type UserPreviousValues {
id: ID!
+ name: String!
email: String!
password: String!
- name: String!
resetToken: String
resetTokenExpiry: String
- createdAt: DateTime!
- updatedAt: DateTime!
permissions: [Permission!]!
}
@@ -1746,49 +1537,46 @@ input UserSubscriptionWhereInput {
}
input UserUpdateDataInput {
+ name: String
email: String
password: String
- name: String
resetToken: String
resetTokenExpiry: String
permissions: UserUpdatepermissionsInput
- orders: OrderUpdateManyWithoutUserInput
cart: CartItemUpdateManyWithoutUserInput
}
input UserUpdateInput {
+ name: String
email: String
password: String
- name: String
resetToken: String
resetTokenExpiry: String
permissions: UserUpdatepermissionsInput
- orders: OrderUpdateManyWithoutUserInput
cart: CartItemUpdateManyWithoutUserInput
}
input UserUpdateOneInput {
create: UserCreateInput
connect: UserWhereUniqueInput
+ disconnect: Boolean
delete: Boolean
update: UserUpdateDataInput
upsert: UserUpsertNestedInput
}
-input UserUpdateOneWithoutCartInput {
- create: UserCreateWithoutCartInput
+input UserUpdateOneRequiredInput {
+ create: UserCreateInput
connect: UserWhereUniqueInput
- delete: Boolean
- update: UserUpdateWithoutCartDataInput
- upsert: UserUpsertWithoutCartInput
+ update: UserUpdateDataInput
+ upsert: UserUpsertNestedInput
}
-input UserUpdateOneWithoutOrdersInput {
- create: UserCreateWithoutOrdersInput
+input UserUpdateOneRequiredWithoutCartInput {
+ create: UserCreateWithoutCartInput
connect: UserWhereUniqueInput
- delete: Boolean
- update: UserUpdateWithoutOrdersDataInput
- upsert: UserUpsertWithoutOrdersInput
+ update: UserUpdateWithoutCartDataInput
+ upsert: UserUpsertWithoutCartInput
}
input UserUpdatepermissionsInput {
@@ -1796,23 +1584,12 @@ input UserUpdatepermissionsInput {
}
input UserUpdateWithoutCartDataInput {
- email: String
- password: String
name: String
- resetToken: String
- resetTokenExpiry: String
- permissions: UserUpdatepermissionsInput
- orders: OrderUpdateManyWithoutUserInput
-}
-
-input UserUpdateWithoutOrdersDataInput {
email: String
password: String
- name: String
resetToken: String
resetTokenExpiry: String
permissions: UserUpdatepermissionsInput
- cart: CartItemUpdateManyWithoutUserInput
}
input UserUpsertNestedInput {
@@ -1825,11 +1602,6 @@ input UserUpsertWithoutCartInput {
create: UserCreateWithoutCartInput!
}
-input UserUpsertWithoutOrdersInput {
- update: UserUpdateWithoutOrdersDataInput!
- create: UserCreateWithoutOrdersInput!
-}
-
input UserWhereInput {
"""Logical AND on all given filters."""
AND: [UserWhereInput!]
@@ -1879,6 +1651,46 @@ input UserWhereInput {
"""All values not ending with the given string."""
id_not_ends_with: ID
+ name: String
+
+ """All values that are not equal to given value."""
+ name_not: String
+
+ """All values that are contained in given list."""
+ name_in: [String!]
+
+ """All values that are not contained in given list."""
+ name_not_in: [String!]
+
+ """All values less than the given value."""
+ name_lt: String
+
+ """All values less than or equal the given value."""
+ name_lte: String
+
+ """All values greater than the given value."""
+ name_gt: String
+
+ """All values greater than or equal the given value."""
+ name_gte: String
+
+ """All values containing the given string."""
+ name_contains: String
+
+ """All values not containing the given string."""
+ name_not_contains: String
+
+ """All values starting with the given string."""
+ name_starts_with: String
+
+ """All values not starting with the given string."""
+ name_not_starts_with: String
+
+ """All values ending with the given string."""
+ name_ends_with: String
+
+ """All values not ending with the given string."""
+ name_not_ends_with: String
email: String
"""All values that are not equal to given value."""
@@ -1959,46 +1771,6 @@ input UserWhereInput {
"""All values not ending with the given string."""
password_not_ends_with: String
- name: String
-
- """All values that are not equal to given value."""
- name_not: String
-
- """All values that are contained in given list."""
- name_in: [String!]
-
- """All values that are not contained in given list."""
- name_not_in: [String!]
-
- """All values less than the given value."""
- name_lt: String
-
- """All values less than or equal the given value."""
- name_lte: String
-
- """All values greater than the given value."""
- name_gt: String
-
- """All values greater than or equal the given value."""
- name_gte: String
-
- """All values containing the given string."""
- name_contains: String
-
- """All values not containing the given string."""
- name_not_contains: String
-
- """All values starting with the given string."""
- name_starts_with: String
-
- """All values not starting with the given string."""
- name_not_starts_with: String
-
- """All values ending with the given string."""
- name_ends_with: String
-
- """All values not ending with the given string."""
- name_not_ends_with: String
resetToken: String
"""All values that are not equal to given value."""
@@ -2079,62 +1851,9 @@ input UserWhereInput {
"""All values not ending with the given string."""
resetTokenExpiry_not_ends_with: String
- createdAt: DateTime
-
- """All values that are not equal to given value."""
- createdAt_not: DateTime
-
- """All values that are contained in given list."""
- createdAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- createdAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- createdAt_lt: DateTime
-
- """All values less than or equal the given value."""
- createdAt_lte: DateTime
-
- """All values greater than the given value."""
- createdAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- createdAt_gte: DateTime
- updatedAt: DateTime
-
- """All values that are not equal to given value."""
- updatedAt_not: DateTime
-
- """All values that are contained in given list."""
- updatedAt_in: [DateTime!]
-
- """All values that are not contained in given list."""
- updatedAt_not_in: [DateTime!]
-
- """All values less than the given value."""
- updatedAt_lt: DateTime
-
- """All values less than or equal the given value."""
- updatedAt_lte: DateTime
-
- """All values greater than the given value."""
- updatedAt_gt: DateTime
-
- """All values greater than or equal the given value."""
- updatedAt_gte: DateTime
- orders_every: OrderWhereInput
- orders_some: OrderWhereInput
- orders_none: OrderWhereInput
cart_every: CartItemWhereInput
cart_some: CartItemWhereInput
cart_none: CartItemWhereInput
- _MagicalBackRelation_OrderItemToUser_every: OrderItemWhereInput
- _MagicalBackRelation_OrderItemToUser_some: OrderItemWhereInput
- _MagicalBackRelation_OrderItemToUser_none: OrderItemWhereInput
- _MagicalBackRelation_ItemToUser_every: ItemWhereInput
- _MagicalBackRelation_ItemToUser_some: ItemWhereInput
- _MagicalBackRelation_ItemToUser_none: ItemWhereInput
}
input UserWhereUniqueInput {
diff --git a/finished-application/frontend/__tests__/Order.test.js b/stepped-solutions/66/frontend/__tests__/Order.test.js
index f3a4f06..71accfa 100644..100755
--- a/finished-application/frontend/__tests__/Order.test.js
+++ b/stepped-solutions/66/frontend/__tests__/Order.test.js
@@ -1,4 +1,3 @@
-import React from 'react';
import { mount } from 'enzyme';
import toJSON from 'enzyme-to-json';
import wait from 'waait';
@@ -8,32 +7,19 @@ import { fakeOrder } from '../lib/testUtils';
const mocks = [
{
- request: { query: SINGLE_ORDER_QUERY, variables: { id: '123' } },
- result: {
- data: {
- order: fakeOrder(),
- },
- },
+ request: { query: SINGLE_ORDER_QUERY, variables: { id: 'ord123' } },
+ result: { data: { order: fakeOrder() } },
},
];
describe('<Order/>', () => {
- it('Renders loading state', async () => {
+ it('renders the order', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
- <Order id="123" />
+ <Order id="ord123" />
</MockedProvider>
);
- expect(wrapper.text()).toContain('Loading...');
- });
-
- it('Renders the order', async () => {
- const wrapper = mount(
- <MockedProvider mocks={mocks}>
- <Order id="123" />
- </MockedProvider>
- );
- await wait(50);
+ await wait();
wrapper.update();
const order = wrapper.find('div[data-test="order"]');
expect(toJSON(order)).toMatchSnapshot();
diff --git a/finished-application/frontend/__tests__/TakeMyMoney.test.js b/stepped-solutions/66/frontend/__tests__/TakeMyMoney.test.js
index 1c41410..3d68502 100644..100755
--- a/finished-application/frontend/__tests__/TakeMyMoney.test.js
+++ b/stepped-solutions/66/frontend/__tests__/TakeMyMoney.test.js
@@ -1,12 +1,13 @@
import { mount } from 'enzyme';
+import wait from 'waait';
import toJSON from 'enzyme-to-json';
import NProgress from 'nprogress';
import Router from 'next/router';
-import wait from 'waait';
import { MockedProvider } from 'react-apollo/test-utils';
-import TakeMyMoney from '../components/TakeMyMoney';
-import { fakeUser, fakeCartItem } from '../lib/testUtils';
+import { ApolloConsumer } from 'react-apollo';
+import TakeMyMoney, { CREATE_ORDER_MUTATION } from '../components/TakeMyMoney';
import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
Router.router = { push() {} };
@@ -23,34 +24,33 @@ const mocks = [
},
},
];
-describe('<TakeMyMoney />', () => {
- it('renders', async () => {
+
+describe('<TakeMyMoney/>', () => {
+ it('renders and matches snapshot', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
<TakeMyMoney />
</MockedProvider>
);
- // wait for it to load
await wait();
wrapper.update();
- // find the button
const checkoutButton = wrapper.find('ReactStripeCheckout');
expect(toJSON(checkoutButton)).toMatchSnapshot();
});
-
- it('creates an order onToken', async () => {
- const createOrderSpy = jest.fn().mockResolvedValue({ data: { createOrder: { id: 'xyz789' } } });
-
+ it('creates an order ontoken', async () => {
+ const createOrderMock = jest.fn().mockResolvedValue({
+ data: { createOrder: { id: 'xyz789' } },
+ });
const wrapper = mount(
<MockedProvider mocks={mocks}>
<TakeMyMoney />
</MockedProvider>
);
- const component = wrapper.find('TakeMyMoney');
- component.instance().onToken({ id: 'abc123' }, createOrderSpy);
- // check it
- expect(createOrderSpy).toBeCalled();
- expect(createOrderSpy).toBeCalledWith({ variables: { token: 'abc123' } });
+ const component = wrapper.find('TakeMyMoney').instance();
+ // manully call that onToken method
+ component.onToken({ id: 'abc123' }, createOrderMock);
+ expect(createOrderMock).toHaveBeenCalled();
+ expect(createOrderMock).toHaveBeenCalledWith({ variables: { token: 'abc123' } });
});
it('turns the progress bar on', async () => {
@@ -62,16 +62,16 @@ describe('<TakeMyMoney />', () => {
await wait();
wrapper.update();
NProgress.start = jest.fn();
-
- const createOrderSpy = jest.fn().mockResolvedValue({ data: { createOrder: { id: 'xyz789' } } });
- const component = wrapper.find('TakeMyMoney');
- component.instance().onToken({ id: 'abc123' }, createOrderSpy);
- wrapper.find('button').simulate('click');
+ const createOrderMock = jest.fn().mockResolvedValue({
+ data: { createOrder: { id: 'xyz789' } },
+ });
+ const component = wrapper.find('TakeMyMoney').instance();
+ // manully call that onToken method
+ component.onToken({ id: 'abc123' }, createOrderMock);
expect(NProgress.start).toHaveBeenCalled();
});
it('routes to the order page when completed', async () => {
- // Mount the wrapper
const wrapper = mount(
<MockedProvider mocks={mocks}>
<TakeMyMoney />
@@ -79,20 +79,20 @@ describe('<TakeMyMoney />', () => {
);
await wait();
wrapper.update();
-
- // Spy on Router Push
+ const createOrderMock = jest.fn().mockResolvedValue({
+ data: { createOrder: { id: 'xyz789' } },
+ });
+ const component = wrapper.find('TakeMyMoney').instance();
Router.router.push = jest.fn();
- const createOrderSpy = jest.fn().mockResolvedValue({ data: { createOrder: { id: 'xyz789' } } });
-
- const component = wrapper.find('TakeMyMoney');
- component.instance().onToken({ id: 'abc123' }, createOrderSpy);
-
- // submit the form
- wrapper.find('button').simulate('click');
+ // manully call that onToken method
+ component.onToken({ id: 'abc123' }, createOrderMock);
await wait();
+ expect(Router.router.push).toHaveBeenCalled();
expect(Router.router.push).toHaveBeenCalledWith({
pathname: '/order',
- query: { id: 'xyz789' },
+ query: {
+ id: 'xyz789',
+ },
});
});
});
diff --git a/finished-application/frontend/__tests__/__snapshots__/Order.test.js.snap b/stepped-solutions/66/frontend/__tests__/__snapshots__/Order.test.js.snap
index 8e76546..9dce80b 100644..100755
--- a/finished-application/frontend/__tests__/__snapshots__/Order.test.js.snap
+++ b/stepped-solutions/66/frontend/__tests__/__snapshots__/Order.test.js.snap
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Order/> Renders the order 1`] = `
+exports[`<Order/> renders the order 1`] = `
<div
- className="sc-bwzfXH wJijb"
+ className="OrderStyles-sc-4oqalm-0 eDzsVm"
data-test="order"
>
<SideEffect(Head)>
@@ -10,7 +10,7 @@ exports[`<Order/> Renders the order 1`] = `
</SideEffect(Head)>
<p>
<span>
- Order Id:
+ Order ID:
</span>
<span>
ord123
@@ -29,7 +29,7 @@ exports[`<Order/> Renders the order 1`] = `
Date
</span>
<span>
- March 90, 2018 8:00 A
+ March 31, 2018 8:00 PM
</span>
</p>
<p>
@@ -63,9 +63,7 @@ exports[`<Order/> Renders the order 1`] = `
className="item-details"
>
<h2>
-
soluta non omnis consequatur enim quia autem
-
</h2>
<p>
Qty:
@@ -76,12 +74,8 @@ exports[`<Order/> Renders the order 1`] = `
$42.34
</p>
<p>
- Subtotal:
- $42.34
- </p>
- <p>
SubTotal:
- et modi tenetur amet modi reprehenderit omnis
+ $42.34
</p>
<p>
et modi tenetur amet modi reprehenderit omnis
@@ -100,9 +94,7 @@ exports[`<Order/> Renders the order 1`] = `
className="item-details"
>
<h2>
-
quia sed exercitationem omnis laborum exercitationem est
-
</h2>
<p>
Qty:
@@ -113,12 +105,8 @@ exports[`<Order/> Renders the order 1`] = `
$42.34
</p>
<p>
- Subtotal:
- $42.34
- </p>
- <p>
SubTotal:
- sapiente laudantium molestias assumenda quasi adipisci mollitia
+ $42.34
</p>
<p>
sapiente laudantium molestias assumenda quasi adipisci mollitia
diff --git a/finished-application/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap b/stepped-solutions/66/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap
index 00863d3..02a112e 100644..100755
--- a/finished-application/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap
+++ b/stepped-solutions/66/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap
@@ -1,19 +1,19 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<TakeMyMoney /> renders 1`] = `
+exports[`<TakeMyMoney/> renders and matches snapshot 1`] = `
<ReactStripeCheckout
ComponentClass="span"
amount={15000}
className="StripeCheckout"
currency="USD"
- description="Order of 3 Items From Sick Fits"
+ description="Order of 3 items!"
email="Delmer.Smith@yahoo.com"
image="dog-small.jpg"
label="Pay With Card"
locale="auto"
- name="Sick Fits Haul"
+ name="Sick Fits"
reconfigureOnUpdate={false}
- stripeKey="pk_lclTtThFp8CnO3QtEZSd8HA9mFUps"
+ stripeKey="pk_test_Vtknn6vSdcZWSG2JWvEiWSqC"
token={[Function]}
triggerEvent="onClick"
>
diff --git a/finished-application/frontend/components/Order.js b/stepped-solutions/66/frontend/components/Order.js
index b4a0a0e..5177c0a 100644..100755
--- a/finished-application/frontend/components/Order.js
+++ b/stepped-solutions/66/frontend/components/Order.js
@@ -1,8 +1,8 @@
-import { Component } from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import { Query } from 'react-apollo';
import { format } from 'date-fns';
import Head from 'next/head';
-import PropTypes from 'prop-types';
import gql from 'graphql-tag';
import formatMoney from '../lib/formatMoney';
import Error from './ErrorMessage';
@@ -21,8 +21,8 @@ const SINGLE_ORDER_QUERY = gql`
items {
id
title
- price
description
+ price
image
quantity
}
@@ -30,21 +30,16 @@ const SINGLE_ORDER_QUERY = gql`
}
`;
-class Order extends Component {
+class Order extends React.Component {
static propTypes = {
id: PropTypes.string.isRequired,
};
-
render() {
return (
- <Query
- query={SINGLE_ORDER_QUERY}
- variables={{ id: this.props.id }}
- fetchPolicy="network-only"
- >
- {({ data, error, loading, refetch }) => {
+ <Query query={SINGLE_ORDER_QUERY} variables={{ id: this.props.id }}>
+ {({ data, error, loading }) => {
+ if (error) return <Error error={error} />;
if (loading) return <p>Loading...</p>;
- if (error) return <Error error={error} refetch={refetch} />;
const order = data.order;
return (
<OrderStyles data-test="order">
@@ -52,8 +47,8 @@ class Order extends Component {
<title>Sick Fits - Order {order.id}</title>
</Head>
<p>
- <span>Order Id:</span>
- <span>{order.id}</span>
+ <span>Order ID:</span>
+ <span>{this.props.id}</span>
</p>
<p>
<span>Charge</span>
@@ -61,7 +56,7 @@ class Order extends Component {
</p>
<p>
<span>Date</span>
- <span>{format(order.createdAt, 'MMMM D, YYYY h:mm A')}</span>
+ <span>{format(order.createdAt, 'MMMM d, YYYY h:mm a')}</span>
</p>
<p>
<span>Order Total</span>
@@ -76,11 +71,10 @@ class Order extends Component {
<div className="order-item" key={item.id}>
<img src={item.image} alt={item.title} />
<div className="item-details">
- <h2> {item.title} </h2>
+ <h2>{item.title}</h2>
<p>Qty: {item.quantity}</p>
<p>Each: {formatMoney(item.price)}</p>
- <p>Subtotal: {formatMoney(item.price * item.quantity)}</p>
- <p>SubTotal: {item.description}</p>
+ <p>SubTotal: {formatMoney(item.price * item.quantity)}</p>
<p>{item.description}</p>
</div>
</div>
diff --git a/finished-application/frontend/components/TakeMyMoney.js b/stepped-solutions/66/frontend/components/TakeMyMoney.js
index b9e42ea..ca87832 100644..100755
--- a/finished-application/frontend/components/TakeMyMoney.js
+++ b/stepped-solutions/66/frontend/components/TakeMyMoney.js
@@ -1,6 +1,6 @@
-import { Component } from 'react';
+import React from 'react';
import StripeCheckout from 'react-stripe-checkout';
-import { Mutation, Query } from 'react-apollo';
+import { Mutation } from 'react-apollo';
import Router from 'next/router';
import NProgress from 'nprogress';
import PropTypes from 'prop-types';
@@ -27,28 +27,27 @@ function totalItems(cart) {
return cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0);
}
-class TakeMyMoney extends Component {
+class TakeMyMoney extends React.Component {
onToken = async (res, createOrder) => {
NProgress.start();
+ // manually call the mutation once we have the stripe token
const order = await createOrder({
variables: {
token: res.id,
},
+ }).catch(err => {
+ alert(err.message);
});
- console.log(order);
- // Route them to that order page
- const { id } = order.data.createOrder;
Router.push({
- pathname: `/order`,
- query: { id },
+ pathname: '/order',
+ query: { id: order.data.createOrder.id },
});
};
render() {
return (
<User>
- {({ data: { me }, error }) => {
- if (!me || !me.cart.length) return null;
- if (error) return <Error error={error} />;
+ {({ data: { me }, loading }) => {
+ if (loading) return null;
return (
<Mutation
mutation={CREATE_ORDER_MUTATION}
@@ -57,13 +56,13 @@ class TakeMyMoney extends Component {
{createOrder => (
<StripeCheckout
amount={calcTotalPrice(me.cart)}
- name="Sick Fits Haul"
- description={`Order of ${totalItems(me.cart)} Items From Sick Fits`}
- image={me.cart[0].item && me.cart[0].item.image}
- token={res => this.onToken(res, createOrder)}
- stripeKey="pk_lclTtThFp8CnO3QtEZSd8HA9mFUps"
+ name="Sick Fits"
+ description={`Order of ${totalItems(me.cart)} items!`}
+ image={me.cart.length && me.cart[0].item && me.cart[0].item.image}
+ stripeKey="pk_test_Vtknn6vSdcZWSG2JWvEiWSqC"
currency="USD"
email={me.email}
+ token={res => this.onToken(res, createOrder)}
>
{this.props.children}
</StripeCheckout>
@@ -76,8 +75,5 @@ class TakeMyMoney extends Component {
}
}
-TakeMyMoney.propTypes = {
- children: PropTypes.any,
-};
-
export default TakeMyMoney;
+export { CREATE_ORDER_MUTATION };
diff --git a/finished-application/backend/.graphqlconfig.yml b/stepped-solutions/FINISHED/backend/.graphqlconfig.yml
index 2f01155..2f01155 100644
--- a/finished-application/backend/.graphqlconfig.yml
+++ b/stepped-solutions/FINISHED/backend/.graphqlconfig.yml
diff --git a/finished-application/backend/prisma/datamodel.graphql b/stepped-solutions/FINISHED/backend/datamodel.graphql
index 8b19125..ce9ae38 100644
--- a/finished-application/backend/prisma/datamodel.graphql
+++ b/stepped-solutions/FINISHED/backend/datamodel.graphql
@@ -9,25 +9,13 @@ enum Permission {
type User {
id: ID! @unique
+ name: String!
email: String! @unique
password: String!
- name: String!
- orders: [Order!]!
resetToken: String
resetTokenExpiry: String
+ permissions: [Permission]
cart: [CartItem!]!
- createdAt: DateTime!
- updatedAt: DateTime!
- permissions: [Permission!]!
-}
-
-type CartItem {
- id: ID! @unique
- quantity: Int! @default(value: 1)
- item: Item! # Relationship to an Item
- user: User! # Relationship to a user
- createdAt: DateTime!
- updatedAt: DateTime!
}
type Item {
@@ -37,20 +25,23 @@ type Item {
image: String
largeImage: String
price: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
- user: User! # Relationship to a user
+ user: User!
+}
+
+type CartItem {
+ id: ID! @unique
+ quantity: Int! @default(value: 1)
+ item: Item # relationship to Item
+ user: User! # relationship to User
}
type OrderItem {
id: ID! @unique
title: String!
description: String!
- image: String
- largeImage: String
+ image: String!
+ largeImage: String!
price: Int!
- createdAt: DateTime!
- updatedAt: DateTime!
quantity: Int! @default(value: 1)
user: User
}
@@ -60,7 +51,7 @@ type Order {
items: [OrderItem!]!
total: Int!
user: User!
+ charge: String!
createdAt: DateTime!
updatedAt: DateTime!
- charge: String!
}
diff --git a/finished-application/backend/package-lock.json b/stepped-solutions/FINISHED/backend/package-lock.json
index 9e84a8d..5558352 100644
--- a/finished-application/backend/package-lock.json
+++ b/stepped-solutions/FINISHED/backend/package-lock.json
@@ -1,15 +1,15 @@
{
- "name": "my-own",
+ "name": "sick-backend",
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"@babel/code-frame": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
- "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"dev": true,
"requires": {
- "@babel/highlight": "7.0.0-beta.51"
+ "@babel/highlight": "^7.0.0"
}
},
"@babel/generator": {
@@ -40,23 +40,30 @@
}
},
"@babel/highlight": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
- "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
+ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
- "js-tokens": "^3.0.0"
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ }
}
},
"@babel/runtime": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.51.tgz",
- "integrity": "sha1-SLjtGDBwNMZiD2Q1FGUMoszAFlo=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz",
+ "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==",
"requires": {
- "core-js": "^2.5.7",
- "regenerator-runtime": "^0.11.1"
+ "regenerator-runtime": "^0.12.0"
}
},
"@babel/types": {
@@ -232,9 +239,9 @@
}
},
"@types/graphql": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.13.1.tgz",
- "integrity": "sha512-a6vRcP4M6+7Lqev1JeF3hGFmC3FNBIJ5cRnaSN/z1LtGVr/CaY6nqSlQbnFr2j8ucDlUAQU43LCnJrz6uLUyHg=="
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.13.4.tgz",
+ "integrity": "sha512-B4yel4ro2nTb3v0pYO8vO6SjgvFJSrwUY+IO6TUSLdOSB+gQFslylrhRCHxvXMIhxB71mv5PEE9dAX+24S8sew=="
},
"@types/graphql-deduplicator": {
"version": "2.0.0",
@@ -247,9 +254,9 @@
"integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
},
"@types/node": {
- "version": "10.3.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.3.tgz",
- "integrity": "sha512-/gwCgiI2e9RzzZTKbl+am3vgNqOt7a9fJ/uxv4SqYKxenoEDNVU3KZEadlpusWhQI0A0dOrZ0T68JYKVjzmgdQ=="
+ "version": "10.9.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz",
+ "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw=="
},
"@types/range-parser": {
"version": "1.2.2",
@@ -271,9 +278,9 @@
"integrity": "sha512-sW6xN96wUak4tgc89d0tbTg7QDGYhGv5hvQIS6h4mRCd8h2btiZ80loPU8cyLwsBbA4ZeQt0FjvUhJ4rNhdsGg=="
},
"abab": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
- "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
+ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
"dev": true
},
"abbrev": {
@@ -292,9 +299,9 @@
}
},
"acorn": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
- "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
"dev": true
},
"acorn-globals": {
@@ -313,9 +320,9 @@
"dev": true
},
"agent-base": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz",
- "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"dev": true,
"requires": {
"es6-promisify": "^5.0.0"
@@ -339,23 +346,6 @@
"integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
"dev": true
},
- "align-text": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
- "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
- },
"ansi-align": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
@@ -400,6 +390,253 @@
"normalize-path": "^2.1.1"
},
"dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -458,6 +695,15 @@
"yargs": "^10.0.3"
},
"dependencies": {
+ "graphql": {
+ "version": "0.13.2",
+ "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+ "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "dev": true,
+ "requires": {
+ "iterall": "^1.2.1"
+ }
+ },
"graphql-config": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-1.2.1.tgz",
@@ -480,24 +726,24 @@
"requires": {
"iterall": "1.1.3"
}
+ },
+ "iterall": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz",
+ "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==",
+ "dev": true
}
}
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
"lodash": "^4.17.4"
}
},
- "iterall": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz",
- "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==",
- "dev": true
- },
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
@@ -540,19 +786,19 @@
}
},
"apollo-link": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz",
- "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz",
+ "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==",
"requires": {
- "@types/node": "^9.4.6",
+ "@types/graphql": "0.12.6",
"apollo-utilities": "^1.0.0",
- "zen-observable-ts": "^0.8.6"
+ "zen-observable-ts": "^0.8.9"
},
"dependencies": {
- "@types/node": {
- "version": "9.6.22",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.22.tgz",
- "integrity": "sha512-RIg9EkxzVMkNH0M4sLRngK23f5QiigJC0iODQmu4nopzstt8AjegYund3r82iMrd2BNCjcZVnklaItvKHaGfBA=="
+ "@types/graphql": {
+ "version": "0.12.6",
+ "resolved": "http://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz",
+ "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ=="
}
}
},
@@ -562,23 +808,6 @@
"integrity": "sha512-82qgIH0UC039kcvcFDJkY8GuUOgPFrkYe/0zNFkA0AXvuvL4RHxWb8SWRiPwtP8jKaKEOedyjopfyH84aLiu7Q==",
"requires": {
"apollo-link": "^1.2.2"
- },
- "dependencies": {
- "@types/graphql": {
- "version": "0.12.6",
- "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz",
- "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ=="
- },
- "apollo-link": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz",
- "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==",
- "requires": {
- "@types/graphql": "0.12.6",
- "apollo-utilities": "^1.0.0",
- "zen-observable-ts": "^0.8.9"
- }
- }
}
},
"apollo-link-ws": {
@@ -587,29 +816,12 @@
"integrity": "sha512-ucuGvr8CBBwCHl/Rbtyuv9Fn0FN5Qoyvy84KHtuMl2Uux2Sq+jt3bUum+pZ+hZntEd9k8M1OjrrXqRJ4PtEpyA==",
"requires": {
"apollo-link": "^1.2.2"
- },
- "dependencies": {
- "@types/graphql": {
- "version": "0.12.6",
- "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz",
- "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ=="
- },
- "apollo-link": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz",
- "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==",
- "requires": {
- "@types/graphql": "0.12.6",
- "apollo-utilities": "^1.0.0",
- "zen-observable-ts": "^0.8.9"
- }
- }
}
},
"apollo-server-core": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.3.6.tgz",
- "integrity": "sha1-CGNiQ8LeVvqMJn1o3WAssfvTI+M=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.4.0.tgz",
+ "integrity": "sha512-BP1Vh39krgEjkQxbjTdBURUjLHbFq1zeOChDJgaRsMxGtlhzuLWwwC6lLdPatN8jEPbeHq8Tndp9QZ3iQZOKKA==",
"requires": {
"apollo-cache-control": "^0.1.0",
"apollo-tracing": "^0.1.0",
@@ -617,12 +829,12 @@
}
},
"apollo-server-express": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.3.6.tgz",
- "integrity": "sha1-ISCwUCGofe9E+v2EbooOKjKFLbc=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.4.0.tgz",
+ "integrity": "sha512-zkH00nxhLnJfO0HgnNPBTfZw8qI5ILaPZ5TecMCI9+Y9Ssr2b0bFr9pBRsXy9eudPhI+/O4yqegSUsnLdF/CPw==",
"requires": {
- "apollo-server-core": "^1.3.6",
- "apollo-server-module-graphiql": "^1.3.4"
+ "apollo-server-core": "^1.4.0",
+ "apollo-server-module-graphiql": "^1.4.0"
}
},
"apollo-server-lambda": {
@@ -635,13 +847,13 @@
}
},
"apollo-server-module-graphiql": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.3.4.tgz",
- "integrity": "sha1-UDmbfFG3Jn0MhBUp9Rc+X8cwTeQ="
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz",
+ "integrity": "sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA=="
},
"apollo-tracing": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.4.tgz",
+ "resolved": "http://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.4.tgz",
"integrity": "sha512-Uv+1nh5AsNmC3m130i2u3IqbS+nrxyVV3KYimH5QKsdPjxxIQB3JAT+jJmpeDxBel8gDVstNmCh82QSLxLSIdQ==",
"requires": {
"graphql-extensions": "~0.0.9"
@@ -649,7 +861,7 @@
},
"apollo-upload-server": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz",
+ "resolved": "http://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz",
"integrity": "sha512-CzbHvMo/6TO5XrovzmV/ojTft17s9Cd+vKLGngChpB0UW1ObxKlNLlcXRLD+yt6Nec32/Kt209HmA31hnwxB/g==",
"requires": {
"@babel/runtime": "^7.0.0-beta.40",
@@ -658,20 +870,20 @@
}
},
"apollo-utilities": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.15.tgz",
- "integrity": "sha512-74/oBQhIfWKgkwNJZoBVOLfmAZQlwUSCb4fEzd4sNFOkJL1CscmBge+YHhmTyKRQnwz0BYjWfLx4T99/jhF7CA==",
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.20.tgz",
+ "integrity": "sha512-2M4BJCyX/9UXGJFoV4sTnVTZ4Q29aM18Z1avDrwvlCGGwoRTz50sGBAfTiWnUnnNQyPIIJEYElScw46DgIu0Rg==",
"requires": {
"fast-json-stable-stringify": "^2.0.0"
}
},
"append-transform": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
- "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
+ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
"dev": true,
"requires": {
- "default-require-extensions": "^2.0.0"
+ "default-require-extensions": "^1.0.0"
}
},
"archiver": {
@@ -698,7 +910,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -744,7 +956,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -777,10 +989,13 @@
}
},
"arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.0.1"
+ }
},
"arr-flatten": {
"version": "1.1.0",
@@ -842,9 +1057,9 @@
"dev": true
},
"array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
"dev": true
},
"arrify": {
@@ -853,10 +1068,13 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
},
"asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
- "dev": true
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
},
"assert-plus": {
"version": "1.0.0",
@@ -903,9 +1121,9 @@
"dev": true
},
"atob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
- "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
"aws-lambda": {
@@ -926,9 +1144,9 @@
}
},
"aws-sdk": {
- "version": "2.259.1",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.259.1.tgz",
- "integrity": "sha512-z2/t30caHNadSKeasUTS8trgIoHuWtmOKEhQK72Bqtbbgviqw2++sDG1Gkbj7n7yRihmg+yPNUE6i+JG3vfDrA==",
+ "version": "2.313.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.313.0.tgz",
+ "integrity": "sha512-Hh1UhQV7PNv220cEH/lElWxjKMpcHBpLVhVDuOmEM5I92ndhkM0R4owDpDjbvz8eBu6+7ZrtvAQwZlBjbCLWGA==",
"requires": {
"buffer": "4.9.1",
"events": "1.1.1",
@@ -938,7 +1156,7 @@
"sax": "1.2.1",
"url": "0.10.3",
"uuid": "3.1.0",
- "xml2js": "0.4.17"
+ "xml2js": "0.4.19"
}
},
"aws-sign2": {
@@ -948,9 +1166,9 @@
"dev": true
},
"aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"babel-code-frame": {
@@ -978,7 +1196,7 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
@@ -1209,13 +1427,13 @@
}
},
"babel-jest": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.0.1.tgz",
- "integrity": "sha1-u6079SP7IC2gXtCmVAtIyE7tE6Y=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz",
+ "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==",
"dev": true,
"requires": {
"babel-plugin-istanbul": "^4.1.6",
- "babel-preset-jest": "^23.0.1"
+ "babel-preset-jest": "^23.2.0"
}
},
"babel-messages": {
@@ -1238,7 +1456,7 @@
},
"babel-plugin-istanbul": {
"version": "4.1.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz",
"integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==",
"dev": true,
"requires": {
@@ -1249,26 +1467,26 @@
}
},
"babel-plugin-jest-hoist": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.1.tgz",
- "integrity": "sha1-6qEclkVjrqnCG+zvK994U/fzwUg=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
+ "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
"dev": true
},
"babel-plugin-syntax-async-functions": {
"version": "6.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
"integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
"dev": true
},
"babel-plugin-syntax-exponentiation-operator": {
"version": "6.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
"integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
"dev": true
},
"babel-plugin-syntax-object-rest-spread": {
"version": "6.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
"integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
"dev": true
},
@@ -1592,12 +1810,12 @@
}
},
"babel-preset-jest": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.0.1.tgz",
- "integrity": "sha1-YxzFRcbPAhlDATvK8i9F2H/mIZg=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
+ "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
"dev": true,
"requires": {
- "babel-plugin-jest-hoist": "^23.0.1",
+ "babel-plugin-jest-hoist": "^23.2.0",
"babel-plugin-syntax-object-rest-spread": "^6.13.0"
}
},
@@ -1641,6 +1859,14 @@
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ }
}
},
"babel-template": {
@@ -1754,6 +1980,12 @@
"kind-of": "^6.0.2"
}
},
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -1768,9 +2000,9 @@
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
},
"bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"optional": true,
"requires": {
@@ -1806,7 +2038,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -1831,9 +2063,9 @@
}
},
"bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
+ "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==",
"dev": true
},
"body-parser": {
@@ -1886,32 +2118,14 @@
}
},
"braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
}
},
"browser-process-hrtime": {
@@ -1921,9 +2135,9 @@
"dev": true
},
"browser-resolve": {
- "version": "1.11.2",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
- "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
"dev": true,
"requires": {
"resolve": "1.1.7"
@@ -1950,7 +2164,7 @@
},
"buffer": {
"version": "4.9.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"requires": {
"base64-js": "^1.0.2",
@@ -1999,9 +2213,9 @@
"dev": true
},
"buffer-from": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
- "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"buffer-writer": {
"version": "1.0.1",
@@ -2043,6 +2257,14 @@
"to-object-path": "^0.3.0",
"union-value": "^1.0.0",
"unset-value": "^1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
"cache-require-paths": {
@@ -2079,9 +2301,9 @@
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
},
"caniuse-lite": {
- "version": "1.0.30000856",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz",
- "integrity": "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==",
+ "version": "1.0.30000885",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz",
+ "integrity": "sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ==",
"dev": true
},
"capture-exit": {
@@ -2094,9 +2316,9 @@
}
},
"capture-stack-trace": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
- "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
+ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
"dev": true
},
"cardinal": {
@@ -2115,6 +2337,15 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
+ "casual": {
+ "version": "1.5.19",
+ "resolved": "https://registry.npmjs.org/casual/-/casual-1.5.19.tgz",
+ "integrity": "sha512-zMWzIs7y4grU0mkb6ZAWyHVJFHRZ2V/zi9GTrVv9v9PcS4Ur3AHaKocl4DLjhLR0J5LnMhMsMiAjGooqYo2t1Q==",
+ "requires": {
+ "mersenne-twister": "^1.0.1",
+ "moment": "^2.15.2"
+ }
+ },
"caw": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz",
@@ -2127,17 +2358,6 @@
"url-to-options": "^1.0.1"
}
},
- "center-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
- "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
- }
- },
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
@@ -2210,6 +2430,51 @@
"upath": "^1.0.5"
},
"dependencies": {
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ }
+ },
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -2245,13 +2510,28 @@
"requires": {
"is-extglob": "^2.1.1"
}
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
"ci-info": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
- "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.5.1.tgz",
+ "integrity": "sha512-fKFIKXaYiL1exImwJ0AhR/6jxFPSKQBk2ayV5NiNoruUs2+rxC2kNw0EG+1Z9dugZRdCrppskQ8DN2cyaUM1Hw==",
"dev": true
},
"class-utils": {
@@ -2274,6 +2554,12 @@
"requires": {
"is-descriptor": "^0.1.0"
}
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -2351,17 +2637,17 @@
}
},
"color-convert": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
- "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
- "color-name": "1.1.1"
+ "color-name": "1.1.3"
}
},
"color-name": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
- "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"colors": {
"version": "1.0.3",
@@ -2406,15 +2692,15 @@
}
},
"command-exists": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz",
- "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.7.tgz",
+ "integrity": "sha512-doWDvhXCcW5LK0cIUWrOQ8oMFXJv3lEQCkJpGVjM8v9SV0uhqYXB943538tEA2CiaWqSyuYUGAm5ezDwEx9xlw==",
"dev": true
},
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
+ "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ=="
},
"common-tags": {
"version": "1.8.0",
@@ -2422,12 +2708,6 @@
"integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==",
"dev": true
},
- "compare-versions": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.0.tgz",
- "integrity": "sha512-MAAAIOdi2s4Gl6rZ76PNcUa9IOYB+5ICdT41o5uMRf09aEu/F9RK+qhe8RjXNPwcTjGV7KU7h2P/fljThFVqyQ==",
- "dev": true
- },
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
@@ -2454,7 +2734,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -2484,9 +2764,9 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"config-chain": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz",
- "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=",
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
"dev": true,
"requires": {
"ini": "^1.3.4",
@@ -2528,10 +2808,13 @@
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"convert-source-map": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
- "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
- "dev": true
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
},
"cookie": {
"version": "0.3.1",
@@ -2611,10 +2894,25 @@
}
},
"crc": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
- "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
- "dev": true
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "dev": true,
+ "requires": {
+ "buffer": "^5.1.0"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
+ "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4"
+ }
+ }
+ }
},
"crc32-stream": {
"version": "2.0.0",
@@ -2634,7 +2932,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -2668,12 +2966,12 @@
}
},
"cross-fetch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.0.0.tgz",
- "integrity": "sha512-gnx0GnDyW73iDq6DpqceL8i4GGn55PPKDzNwZkopJ3mKPcfJ0BUIXBsnYfJBVw+jFDB+hzIp2ELNRdqoxN6M3w==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz",
+ "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=",
"requires": {
- "node-fetch": "2.0.0",
- "whatwg-fetch": "2.0.3"
+ "node-fetch": "2.1.2",
+ "whatwg-fetch": "2.0.4"
}
},
"cross-spawn": {
@@ -2695,15 +2993,15 @@
"dev": true
},
"cssom": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
- "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
"dev": true
},
"cssstyle": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz",
- "integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz",
+ "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==",
"dev": true,
"requires": {
"cssom": "0.3.x"
@@ -2755,14 +3053,27 @@
}
},
"data-urls": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz",
- "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz",
+ "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==",
"dev": true,
"requires": {
- "abab": "^1.0.4",
- "whatwg-mimetype": "^2.0.0",
- "whatwg-url": "^6.4.0"
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.1.0",
+ "whatwg-url": "^7.0.0"
+ },
+ "dependencies": {
+ "whatwg-url": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
+ "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
}
},
"dataloader": {
@@ -2914,12 +3225,23 @@
"dev": true
},
"default-require-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
- "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
+ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
"dev": true,
"requires": {
- "strip-bom": "^3.0.0"
+ "strip-bom": "^2.0.0"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ }
}
},
"defaults": {
@@ -2932,12 +3254,11 @@
}
},
"define-properties": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
- "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"requires": {
- "foreach": "^2.0.5",
- "object-keys": "^1.0.8"
+ "object-keys": "^1.0.12"
}
},
"define-property": {
@@ -2979,6 +3300,12 @@
"kind-of": "^6.0.2"
}
},
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -3154,7 +3481,7 @@
},
"duplexer": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
"integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
},
"duplexer3": {
@@ -3164,13 +3491,14 @@
"dev": true
},
"ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"optional": true,
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
}
},
"ecdsa-sig-formatter": {
@@ -3187,9 +3515,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.48",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
- "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=",
+ "version": "1.3.65",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.65.tgz",
+ "integrity": "sha512-tyGr+wh2c/JYBVMeflKpZ3ricwtBPyVBMtRNxYGObl7TP5bAeupgz4VZnBzQSFleZViXYTws1yZtKKFQYZyiYw==",
"dev": true
},
"encodeurl": {
@@ -3225,9 +3553,9 @@
}
},
"error-ex": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"requires": {
"is-arrayish": "^0.2.1"
}
@@ -3255,9 +3583,9 @@
}
},
"es6-promise": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
- "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
+ "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
"dev": true
},
"es6-promisify": {
@@ -3280,9 +3608,9 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"escodegen": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
- "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
+ "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
"dev": true,
"requires": {
"esprima": "^3.1.3",
@@ -3301,9 +3629,9 @@
}
},
"esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"estraverse": {
"version": "4.2.0",
@@ -3323,17 +3651,18 @@
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"event-stream": {
- "version": "3.3.4",
- "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
- "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz",
+ "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==",
"requires": {
- "duplexer": "~0.1.1",
- "from": "~0",
- "map-stream": "~0.1.0",
- "pause-stream": "0.0.11",
- "split": "0.3",
- "stream-combiner": "~0.0.4",
- "through": "~2.3.1"
+ "duplexer": "^0.1.1",
+ "flatmap-stream": "^0.1.0",
+ "from": "^0.1.7",
+ "map-stream": "0.0.7",
+ "pause-stream": "^0.0.11",
+ "split": "^1.0.1",
+ "stream-combiner": "^0.2.2",
+ "through": "^2.3.8"
}
},
"eventemitter3": {
@@ -3347,12 +3676,12 @@
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
},
"exec-sh": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz",
- "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz",
+ "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==",
"dev": true,
"requires": {
- "merge": "^1.1.3"
+ "merge": "^1.2.0"
}
},
"execa": {
@@ -3388,38 +3717,12 @@
"dev": true
},
"expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
"requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "is-posix-bracket": "^0.1.0"
}
},
"expand-range": {
@@ -3429,45 +3732,6 @@
"dev": true,
"requires": {
"fill-range": "^2.1.0"
- },
- "dependencies": {
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "dev": true,
- "requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
- }
- },
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
}
},
"expand-tilde": {
@@ -3480,22 +3744,22 @@
}
},
"expect": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-23.1.0.tgz",
- "integrity": "sha1-v9/VeiogFw2HWZnul4fMcfAcIF8=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz",
+ "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
- "jest-diff": "^23.0.1",
+ "jest-diff": "^23.6.0",
"jest-get-type": "^22.1.0",
- "jest-matcher-utils": "^23.0.1",
- "jest-message-util": "^23.1.0",
- "jest-regex-util": "^23.0.0"
+ "jest-matcher-utils": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-regex-util": "^23.3.0"
}
},
"express": {
"version": "4.16.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+ "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
"requires": {
"accepts": "~1.3.5",
@@ -3599,9 +3863,9 @@
}
},
"express-request-proxy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/express-request-proxy/-/express-request-proxy-2.1.0.tgz",
- "integrity": "sha512-71Q2pLHGvpBI6PkEVuNgu/+9xWcfLcau73Q1CMNHlwj+BD6/StDbtilmt2ol9Di5WVPpbaDlPlPRcpQRA8N7MQ==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/express-request-proxy/-/express-request-proxy-2.2.2.tgz",
+ "integrity": "sha512-0Dzn6LQG0ohd2S+zJVMhsntwcDakEzm/uKJSZxH7B66ZBvTsB5LU/HvfO1dHG+RRiKuCg0aWfUa66PljnDjEdw==",
"dev": true,
"requires": {
"async": "^2.6.1",
@@ -3619,14 +3883,20 @@
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
"path-to-regexp": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
@@ -3658,9 +3928,9 @@
}
},
"extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extend-shallow": {
@@ -3686,7 +3956,7 @@
},
"external-editor": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
"dev": true,
"requires": {
@@ -3696,74 +3966,12 @@
}
},
"extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
+ "is-extglob": "^1.0.0"
}
},
"extsprintf": {
@@ -3862,26 +4070,16 @@
}
},
"fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^3.0.0",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
}
},
"finalhandler": {
@@ -3922,6 +4120,11 @@
"locate-path": "^2.0.0"
}
},
+ "flatmap-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz",
+ "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA=="
+ },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -3937,11 +4140,6 @@
"for-in": "^1.0.1"
}
},
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
- },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -4553,9 +4751,9 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
},
"get-proxy": {
"version": "2.1.0",
@@ -4587,9 +4785,9 @@
}
},
"glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -4681,7 +4879,7 @@
},
"got": {
"version": "6.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz",
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
@@ -4760,12 +4958,12 @@
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"dotenv": {
@@ -4784,24 +4982,30 @@
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
}
}
},
"graphql": {
- "version": "0.13.2",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
- "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.0.2.tgz",
+ "integrity": "sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw==",
"requires": {
- "iterall": "^1.2.1"
+ "iterall": "^1.2.2"
}
},
"graphql-binding": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.1.1.tgz",
- "integrity": "sha512-Bx70DaG0LVUKIle0N5anQ97T9bIq6RfUsPB5wa10vYbytp0kscLoh9pMlVtxtQ6KwrfkRp1QhV8pa2fMHxBeLw==",
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.4.tgz",
+ "integrity": "sha512-HgMEZEFiMUVAlcbjEGdPizLfh5T2LfrxFw42SApurh88sIo31+LfLb5rpW+W9wGdmRGA6WXdQjBZS/Q2Nsk0QA==",
"requires": {
"graphql-import": "^0.5.2",
- "graphql-tools": "3.0.1",
+ "graphql-tools": "3.1.0",
"iterall": "1.2.2",
"object-path-immutable": "^1.0.1",
"resolve-cwd": "^2.0.0",
@@ -4818,23 +5022,42 @@
}
},
"graphql-tools": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.1.tgz",
- "integrity": "sha512-E7OjLQt+T/ASJTIyX7uX6EnUiTh7qpfg5O1E/sMTLnT0IHLNzTVy1oDsQP8gezTFnsAopjEBozhRDRLStG7D1Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.0.tgz",
+ "integrity": "sha512-PlWq66vMQ/Lcwz68BHCk9wBtqr6k3DOU280td2Hb742nY1PgHqW/2dVPwyRdSMwLDLlSM3jT0z8gcOk9cNCvwg==",
"requires": {
- "apollo-link": "1.2.1",
+ "apollo-link": "^1.2.2",
"apollo-utilities": "^1.0.1",
+ "casual": "^1.5.19",
"deprecated-decorator": "^0.1.6",
- "iterall": "^1.1.3",
- "uuid": "^3.1.0"
+ "iterall": "^1.1.3"
+ }
+ },
+ "yargs": {
+ "version": "11.1.0",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
}
}
}
},
"graphql-cli": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/graphql-cli/-/graphql-cli-2.16.3.tgz",
- "integrity": "sha512-mpAUpGPtYefyN9X+ApLjCSYqaELIUzf4Xej7VMc57T0XQ7LheSKM7OrO0ezcwBfMky6xgppQK2N3Of6KMN9rXw==",
+ "version": "2.16.7",
+ "resolved": "https://registry.npmjs.org/graphql-cli/-/graphql-cli-2.16.7.tgz",
+ "integrity": "sha512-I1kkJ9mqgctjOHDTo3bg7CLpZDeuLrOhKeNmohWhka2bWb0jf5T9IspHLDDTIEsOB56KEnvW2fUwRsTFHJK2HQ==",
"dev": true,
"requires": {
"adm-zip": "0.4.7",
@@ -4851,7 +5074,7 @@
"graphql-config": "2.0.1",
"graphql-config-extension-graphcool": "1.0.8",
"graphql-config-extension-openapi": "1.0.6",
- "graphql-config-extension-prisma": "0.0.11",
+ "graphql-config-extension-prisma": "0.2.1",
"graphql-playground-middleware-express": "1.6.2",
"graphql-schema-linter": "0.1.1",
"inquirer": "5.1.0",
@@ -4878,6 +5101,15 @@
"integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==",
"dev": true
},
+ "graphql": {
+ "version": "0.13.2",
+ "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+ "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "dev": true,
+ "requires": {
+ "iterall": "^1.2.1"
+ }
+ },
"graphql-config": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz",
@@ -4893,13 +5125,37 @@
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
"lodash": "^4.17.4"
}
},
+ "graphql-playground-html": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.5.5.tgz",
+ "integrity": "sha512-PzSywpEKcjbDUkV6e3ivEixvAuUJGyYmBUvuittzySe/RgwHRo0xKLD7HouUCTbpFfWMw8kRKhAUVtt7Ys97uw==",
+ "dev": true,
+ "requires": {
+ "graphql-config": "2.0.0"
+ },
+ "dependencies": {
+ "graphql-config": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.0.tgz",
+ "integrity": "sha512-//hZmROEk79zzPlH6SVTQeXd8NVV65rquz1zxZeO6oEuX5KNnii8+oznLu7d897EfJ+NShTZtsY9FMmxxkWmJw==",
+ "dev": true,
+ "requires": {
+ "graphql-import": "^0.4.0",
+ "graphql-request": "^1.4.0",
+ "js-yaml": "^3.10.0",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.4"
+ }
+ }
+ }
+ },
"graphql-playground-middleware-express": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.6.2.tgz",
@@ -4908,6 +5164,26 @@
"requires": {
"graphql-playground-html": "1.5.5"
}
+ },
+ "yargs": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
+ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
+ }
}
}
},
@@ -4926,7 +5202,7 @@
"dependencies": {
"chalk": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz",
"integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==",
"dev": true,
"requires": {
@@ -4937,7 +5213,7 @@
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
@@ -4966,7 +5242,7 @@
"dependencies": {
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"requires": {
"lodash": "^4.17.4"
@@ -4985,9 +5261,9 @@
},
"dependencies": {
"graphql-config": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz",
- "integrity": "sha512-eb4FzlODifHE/Q+91QptAmkGw39wL5ToinJ2556UUsGt2drPc4tzifL+HSnHSaxiIbH8EUhc/Fa6+neinF04qA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.1.0.tgz",
+ "integrity": "sha512-LWpkME3x+KSFMVuMpRmDHTIZLyQQsBoKtMXJrT4RgXk6y0GRf0lsJ81R3S2FmT1CKZQOJfFsOpUfPpAcfmoN/A==",
"dev": true,
"requires": {
"graphql-import": "^0.4.4",
@@ -4999,7 +5275,7 @@
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
@@ -5033,7 +5309,7 @@
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
@@ -5043,19 +5319,19 @@
}
},
"graphql-config-extension-prisma": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/graphql-config-extension-prisma/-/graphql-config-extension-prisma-0.0.11.tgz",
- "integrity": "sha512-Mlj/VYshHbwDrVHgNyNAl2cBU7+Rh503S43UYXcBtR9Am2KNvmPPPccXEeP6yist0yY2WM0WTwL8JoIGrWeFOw==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/graphql-config-extension-prisma/-/graphql-config-extension-prisma-0.2.1.tgz",
+ "integrity": "sha512-OIqa5hjX3bqHR5x2uPE5ssdaI6DEr/P/+utAaqdM6ZEAi8vgupye4AT5AOyDzwK5iDmbJAkShgwQlHiAm4Srvg==",
"dev": true,
"requires": {
"graphql-config": "^2.0.1",
- "prisma-yml": "1.0.50"
+ "prisma-yml": "1.0.93"
},
"dependencies": {
"graphql-config": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz",
- "integrity": "sha512-eb4FzlODifHE/Q+91QptAmkGw39wL5ToinJ2556UUsGt2drPc4tzifL+HSnHSaxiIbH8EUhc/Fa6+neinF04qA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.1.0.tgz",
+ "integrity": "sha512-LWpkME3x+KSFMVuMpRmDHTIZLyQQsBoKtMXJrT4RgXk6y0GRf0lsJ81R3S2FmT1CKZQOJfFsOpUfPpAcfmoN/A==",
"dev": true,
"requires": {
"graphql-import": "^0.4.4",
@@ -5067,7 +5343,7 @@
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
@@ -5083,7 +5359,7 @@
},
"graphql-extensions": {
"version": "0.0.10",
- "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.10.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.10.tgz",
"integrity": "sha512-TnQueqUDCYzOSrpQb3q1ngDSP2otJSF+9yNLrQGPzkMsvnQ+v6e2d5tl+B35D4y+XpmvVnAn4T3ZK28mkILveA==",
"requires": {
"core-js": "^2.5.3",
@@ -5099,41 +5375,27 @@
}
},
"graphql-middleware": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/graphql-middleware/-/graphql-middleware-1.2.5.tgz",
- "integrity": "sha512-0Bxu/UedUsQ7fR23XrBo03oAIeHX1FjUaGzjniasCauyjubN91XEjpPR8BIoAA/eg4Aqf9dTPbNQQZkNUM/D5Q==",
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/graphql-middleware/-/graphql-middleware-1.6.6.tgz",
+ "integrity": "sha512-1rSSPEJOhBMwNCBCp5CCh3YZFvo8qN/pzQM8k50pd/w2hBsBvOx0AVU9Or6JQbTXxYrKFXvKFUxC5Lp+2oeUtw==",
"requires": {
- "graphql-tools": "^3.0.2"
- },
- "dependencies": {
- "graphql-tools": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.2.tgz",
- "integrity": "sha512-bhDGrvmSgcJBFX3EZEYagmKPk/EJ9vZIcF1WtSFveWfvSsh7crMFSQ9ldftuIXC9UeRwfutpGf3A1q4UpVLaRg==",
- "requires": {
- "apollo-link": "1.2.1",
- "apollo-utilities": "^1.0.1",
- "deprecated-decorator": "^0.1.6",
- "iterall": "^1.1.3",
- "uuid": "^3.1.0"
- }
- }
+ "graphql-tools": "^3.0.5"
}
},
"graphql-playground-html": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.5.5.tgz",
- "integrity": "sha512-PzSywpEKcjbDUkV6e3ivEixvAuUJGyYmBUvuittzySe/RgwHRo0xKLD7HouUCTbpFfWMw8kRKhAUVtt7Ys97uw==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.0.tgz",
+ "integrity": "sha512-et3huQFEuAZgAiUfs9a+1Wo/JDX94k7XqNRc8LhpGT8k2NwIhMAbZKqudVF/Ww4+XDoEB4LUTSFGRPBYvKrcKQ==",
"requires": {
"graphql-config": "2.0.0"
}
},
"graphql-playground-middleware-express": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.6.3.tgz",
- "integrity": "sha512-r94jhaSTmRa6novyj+bEnZYq7vcw7DbWEatpR49t8Nf/FJFQ54dwU5MD1KLEqERunwUgNy54RD4M/0/jb1s69A==",
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.2.tgz",
+ "integrity": "sha512-JvKsVOR/U5QguBtEvTt0ozQ49uh1C6cW8O1xR6krQpJZIxjLYqpgusLUddTiVkka6Q/A4/AXBohY85jPudxYDg==",
"requires": {
- "graphql-playground-html": "1.5.5"
+ "graphql-playground-html": "1.6.0"
}
},
"graphql-playground-middleware-lambda": {
@@ -5142,14 +5404,24 @@
"integrity": "sha512-FO6XG9QRs+0AkwfAnL80u8A02xTg1rPUH+Ay13ASTs0nEePav5GkrWfL59ZY+sK4ZzFvz72aImuXAs3Ajn8VtA==",
"requires": {
"graphql-playground-html": "1.5.5"
+ },
+ "dependencies": {
+ "graphql-playground-html": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.5.5.tgz",
+ "integrity": "sha512-PzSywpEKcjbDUkV6e3ivEixvAuUJGyYmBUvuittzySe/RgwHRo0xKLD7HouUCTbpFfWMw8kRKhAUVtt7Ys97uw==",
+ "requires": {
+ "graphql-config": "2.0.0"
+ }
+ }
}
},
"graphql-request": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.6.0.tgz",
- "integrity": "sha512-qqAPLZuaGlwZDsMQ2FfgEyZMcXFMsPPDl6bQQlmwP/xCnk1TqxkE1S644LsHTXAHYPvmRWsIimfdcnys5+o+fQ==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz",
+ "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==",
"requires": {
- "cross-fetch": "2.0.0"
+ "cross-fetch": "2.2.2"
}
},
"graphql-schema-linter": {
@@ -5166,6 +5438,17 @@
"glob": "^7.1.2",
"graphql": "^0.13.0",
"lodash": "^4.17.4"
+ },
+ "dependencies": {
+ "graphql": {
+ "version": "0.13.2",
+ "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+ "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "dev": true,
+ "requires": {
+ "iterall": "^1.2.1"
+ }
+ }
}
},
"graphql-static-binding": {
@@ -5186,11 +5469,11 @@
}
},
"graphql-tools": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-2.24.0.tgz",
- "integrity": "sha512-Mz9I7jyizrd+RafC/5EogJKTVzBbIddDCrW0sP5QLmsVVM3ujfhqVYu2lEXOaJW8Sy18f3ZICHirmKcn6oMAcA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.1.tgz",
+ "integrity": "sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg==",
"requires": {
- "apollo-link": "^1.2.1",
+ "apollo-link": "^1.2.2",
"apollo-utilities": "^1.0.1",
"deprecated-decorator": "^0.1.6",
"iterall": "^1.1.3",
@@ -5198,9 +5481,9 @@
}
},
"graphql-yoga": {
- "version": "1.14.8",
- "resolved": "https://registry.npmjs.org/graphql-yoga/-/graphql-yoga-1.14.8.tgz",
- "integrity": "sha512-bctEzmhbrhmtJFePc9dfE01W9OsFBM3ujnUsz3Sa7VccJDFhUloaDrpCfWH++tbTVwt/1FCBzXp6vrUNvKJ9WA==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/graphql-yoga/-/graphql-yoga-1.16.2.tgz",
+ "integrity": "sha512-dV7uEUm/tzl3K/gkHPBt718N+F0gmhZKsg8HJpj35SEniGyXVI3VjDWd7Na3bWdue4p8Sxb+/JguuK8jpe8dWg==",
"requires": {
"@types/cors": "^2.8.4",
"@types/express": "^4.11.1",
@@ -5217,12 +5500,22 @@
"graphql": "^0.11.0 || ^0.12.0 || ^0.13.0",
"graphql-deduplicator": "^2.0.1",
"graphql-import": "^0.6.0",
- "graphql-middleware": "1.2.5",
- "graphql-playground-middleware-express": "1.6.3",
+ "graphql-middleware": "1.6.6",
+ "graphql-playground-middleware-express": "1.7.2",
"graphql-playground-middleware-lambda": "1.6.1",
"graphql-subscriptions": "^0.5.8",
- "graphql-tools": "^2.23.1",
+ "graphql-tools": "^3.0.0",
"subscriptions-transport-ws": "^0.9.8"
+ },
+ "dependencies": {
+ "graphql": {
+ "version": "0.13.2",
+ "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+ "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "requires": {
+ "iterall": "^1.2.1"
+ }
+ }
}
},
"growly": {
@@ -5232,32 +5525,15 @@
"dev": true
},
"handlebars": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
- "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
+ "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
"dev": true,
"requires": {
- "async": "^1.4.0",
+ "async": "^2.5.0",
"optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
- },
- "dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
}
},
"har-schema": {
@@ -5267,12 +5543,12 @@
"dev": true
},
"har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
- "ajv": "^5.1.0",
+ "ajv": "^5.3.0",
"har-schema": "^2.0.0"
}
},
@@ -5330,6 +5606,14 @@
"get-value": "^2.0.6",
"has-values": "^1.0.0",
"isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
"has-values": {
@@ -5342,6 +5626,26 @@
"kind-of": "^4.0.0"
},
"dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
"kind-of": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
@@ -5383,9 +5687,9 @@
}
},
"hosted-git-info": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
- "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw=="
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
},
"html-encoding-sniffer": {
"version": "1.0.2",
@@ -5398,7 +5702,7 @@
},
"http-errors": {
"version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"requires": {
"depd": "~1.1.2",
@@ -5408,12 +5712,12 @@
}
},
"http-link-dataloader": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/http-link-dataloader/-/http-link-dataloader-0.1.3.tgz",
- "integrity": "sha512-CU3xoiXYEvqADdnjZqbXbJBhesBSix2EsjysRim5i9KfRYvBOhSFKxvH4mWiV6DW4hFtP3mISoL6SGqeBbbOQg==",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/http-link-dataloader/-/http-link-dataloader-0.1.5.tgz",
+ "integrity": "sha512-vWWFbuuABBxu27pTIrPXZJpwWpv4JM/u0DQRslNcPQNg+uA94Yqf175sJfdpepWn9GOvgPEEROy4dZB53v65LQ==",
"requires": {
"apollo-link": "^1.2.1",
- "cross-fetch": "2.0.0",
+ "cross-fetch": "2.2.2",
"dataloader": "^1.4.0"
}
},
@@ -5460,13 +5764,19 @@
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
}
}
},
@@ -5580,9 +5890,9 @@
"dev": true
},
"ipaddr.js": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
- "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
},
"is-accessor-descriptor": {
"version": "0.1.6",
@@ -5622,17 +5932,17 @@
}
},
"is-callable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
- "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
},
"is-ci": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
- "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
"dev": true,
"requires": {
- "ci-info": "^1.0.0"
+ "ci-info": "^1.5.0"
}
},
"is-data-descriptor": {
@@ -5762,9 +6072,9 @@
"dev": true
},
"is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
@@ -5782,23 +6092,6 @@
"integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=",
"dev": true
},
- "is-odd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
- "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
- "dev": true,
- "requires": {
- "is-number": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
- }
- },
"is-path-inside": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
@@ -5821,6 +6114,14 @@
"dev": true,
"requires": {
"isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
"is-posix-bracket": {
@@ -5924,10 +6225,21 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
},
"isomorphic-fetch": {
"version": "2.2.1",
@@ -5958,44 +6270,43 @@
"dev": true
},
"istanbul-api": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz",
- "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==",
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz",
+ "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==",
"dev": true,
"requires": {
"async": "^2.1.4",
- "compare-versions": "^3.1.0",
"fileset": "^2.0.2",
- "istanbul-lib-coverage": "^1.2.0",
- "istanbul-lib-hook": "^1.2.0",
- "istanbul-lib-instrument": "^1.10.1",
- "istanbul-lib-report": "^1.1.4",
- "istanbul-lib-source-maps": "^1.2.4",
- "istanbul-reports": "^1.3.0",
+ "istanbul-lib-coverage": "^1.2.1",
+ "istanbul-lib-hook": "^1.2.2",
+ "istanbul-lib-instrument": "^1.10.2",
+ "istanbul-lib-report": "^1.1.5",
+ "istanbul-lib-source-maps": "^1.2.6",
+ "istanbul-reports": "^1.5.1",
"js-yaml": "^3.7.0",
"mkdirp": "^0.5.1",
"once": "^1.4.0"
}
},
"istanbul-lib-coverage": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz",
- "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz",
+ "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==",
"dev": true
},
"istanbul-lib-hook": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz",
- "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz",
+ "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==",
"dev": true,
"requires": {
- "append-transform": "^1.0.0"
+ "append-transform": "^0.4.0"
}
},
"istanbul-lib-instrument": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz",
- "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz",
+ "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==",
"dev": true,
"requires": {
"babel-generator": "^6.18.0",
@@ -6003,17 +6314,17 @@
"babel-traverse": "^6.18.0",
"babel-types": "^6.18.0",
"babylon": "^6.18.0",
- "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-coverage": "^1.2.1",
"semver": "^5.3.0"
}
},
"istanbul-lib-report": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz",
- "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz",
+ "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==",
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-coverage": "^1.2.1",
"mkdirp": "^0.5.1",
"path-parse": "^1.0.5",
"supports-color": "^3.1.2"
@@ -6037,27 +6348,33 @@
}
},
"istanbul-lib-source-maps": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz",
- "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz",
+ "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==",
"dev": true,
"requires": {
"debug": "^3.1.0",
- "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-coverage": "^1.2.1",
"mkdirp": "^0.5.1",
"rimraf": "^2.6.1",
"source-map": "^0.5.3"
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -6067,9 +6384,9 @@
}
},
"istanbul-reports": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz",
- "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz",
+ "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==",
"dev": true,
"requires": {
"handlebars": "^4.0.3"
@@ -6091,18 +6408,18 @@
"integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
},
"jest-changed-files": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.0.1.tgz",
- "integrity": "sha1-95Vy0HIIROpd+EwqRI6GLCJU9gw=",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz",
+ "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==",
"dev": true,
"requires": {
"throat": "^4.0.0"
}
},
"jest-cli": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.1.0.tgz",
- "integrity": "sha1-64vdTODRUlCJLjGtm2m8mdKo9r8=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz",
+ "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==",
"dev": true,
"requires": {
"ansi-escapes": "^3.0.0",
@@ -6116,23 +6433,24 @@
"istanbul-lib-coverage": "^1.2.0",
"istanbul-lib-instrument": "^1.10.1",
"istanbul-lib-source-maps": "^1.2.4",
- "jest-changed-files": "^23.0.1",
- "jest-config": "^23.1.0",
- "jest-environment-jsdom": "^23.1.0",
+ "jest-changed-files": "^23.4.2",
+ "jest-config": "^23.6.0",
+ "jest-environment-jsdom": "^23.4.0",
"jest-get-type": "^22.1.0",
- "jest-haste-map": "^23.1.0",
- "jest-message-util": "^23.1.0",
- "jest-regex-util": "^23.0.0",
- "jest-resolve-dependencies": "^23.0.1",
- "jest-runner": "^23.1.0",
- "jest-runtime": "^23.1.0",
- "jest-snapshot": "^23.0.1",
- "jest-util": "^23.1.0",
- "jest-validate": "^23.0.1",
- "jest-watcher": "^23.1.0",
- "jest-worker": "^23.0.1",
+ "jest-haste-map": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-regex-util": "^23.3.0",
+ "jest-resolve-dependencies": "^23.6.0",
+ "jest-runner": "^23.6.0",
+ "jest-runtime": "^23.6.0",
+ "jest-snapshot": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-validate": "^23.6.0",
+ "jest-watcher": "^23.4.0",
+ "jest-worker": "^23.2.0",
"micromatch": "^2.3.11",
"node-notifier": "^5.2.1",
+ "prompts": "^0.1.9",
"realpath-native": "^1.0.0",
"rimraf": "^2.5.4",
"slash": "^1.0.0",
@@ -6140,79 +6458,102 @@
"strip-ansi": "^4.0.0",
"which": "^1.2.12",
"yargs": "^11.0.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "11.1.0",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
+ }
+ }
}
},
"jest-config": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.1.0.tgz",
- "integrity": "sha1-cIyg9DHTVu5CT7SJXTMIAGvdgkE=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz",
+ "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==",
"dev": true,
"requires": {
"babel-core": "^6.0.0",
- "babel-jest": "^23.0.1",
+ "babel-jest": "^23.6.0",
"chalk": "^2.0.1",
"glob": "^7.1.1",
- "jest-environment-jsdom": "^23.1.0",
- "jest-environment-node": "^23.1.0",
+ "jest-environment-jsdom": "^23.4.0",
+ "jest-environment-node": "^23.4.0",
"jest-get-type": "^22.1.0",
- "jest-jasmine2": "^23.1.0",
- "jest-regex-util": "^23.0.0",
- "jest-resolve": "^23.1.0",
- "jest-util": "^23.1.0",
- "jest-validate": "^23.0.1",
- "pretty-format": "^23.0.1"
+ "jest-jasmine2": "^23.6.0",
+ "jest-regex-util": "^23.3.0",
+ "jest-resolve": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-validate": "^23.6.0",
+ "micromatch": "^2.3.11",
+ "pretty-format": "^23.6.0"
}
},
"jest-diff": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.0.1.tgz",
- "integrity": "sha1-PUkTfO4SwyCktNK0pvpugtSRoWo=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz",
+ "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
"diff": "^3.2.0",
"jest-get-type": "^22.1.0",
- "pretty-format": "^23.0.1"
+ "pretty-format": "^23.6.0"
}
},
"jest-docblock": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.0.1.tgz",
- "integrity": "sha1-3t3RgzO+XcJBUmCgTvP86SdrVyU=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz",
+ "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=",
"dev": true,
"requires": {
"detect-newline": "^2.1.0"
}
},
"jest-each": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.1.0.tgz",
- "integrity": "sha1-FhRrWSw1SGelrl4TzfFcbGW2lsY=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz",
+ "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
- "pretty-format": "^23.0.1"
+ "pretty-format": "^23.6.0"
}
},
"jest-environment-jsdom": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.1.0.tgz",
- "integrity": "sha1-hZKZFOI77TV32sl1X0EG0Gl8R5w=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz",
+ "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=",
"dev": true,
"requires": {
- "jest-mock": "^23.1.0",
- "jest-util": "^23.1.0",
+ "jest-mock": "^23.2.0",
+ "jest-util": "^23.4.0",
"jsdom": "^11.5.1"
}
},
"jest-environment-node": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.1.0.tgz",
- "integrity": "sha1-RSwL+UnPy7rNoeF2Lu7XC8eEx9U=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz",
+ "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=",
"dev": true,
"requires": {
- "jest-mock": "^23.1.0",
- "jest-util": "^23.1.0"
+ "jest-mock": "^23.2.0",
+ "jest-util": "^23.4.0"
}
},
"jest-get-type": {
@@ -6222,63 +6563,65 @@
"dev": true
},
"jest-haste-map": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.1.0.tgz",
- "integrity": "sha1-GObH1ajScTb5G32YUvhd4McHTEk=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz",
+ "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==",
"dev": true,
"requires": {
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.1.11",
- "jest-docblock": "^23.0.1",
+ "invariant": "^2.2.4",
+ "jest-docblock": "^23.2.0",
"jest-serializer": "^23.0.1",
- "jest-worker": "^23.0.1",
+ "jest-worker": "^23.2.0",
"micromatch": "^2.3.11",
"sane": "^2.0.0"
}
},
"jest-jasmine2": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.1.0.tgz",
- "integrity": "sha1-SvqzFym2VN3NKwdK3YSTlvE7MLg=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz",
+ "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==",
"dev": true,
"requires": {
+ "babel-traverse": "^6.0.0",
"chalk": "^2.0.1",
"co": "^4.6.0",
- "expect": "^23.1.0",
+ "expect": "^23.6.0",
"is-generator-fn": "^1.0.0",
- "jest-diff": "^23.0.1",
- "jest-each": "^23.1.0",
- "jest-matcher-utils": "^23.0.1",
- "jest-message-util": "^23.1.0",
- "jest-snapshot": "^23.0.1",
- "jest-util": "^23.1.0",
- "pretty-format": "^23.0.1"
+ "jest-diff": "^23.6.0",
+ "jest-each": "^23.6.0",
+ "jest-matcher-utils": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-snapshot": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "pretty-format": "^23.6.0"
}
},
"jest-leak-detector": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.0.1.tgz",
- "integrity": "sha1-nboHUFrDSVw50+wJrB5WRZnoYaA=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz",
+ "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==",
"dev": true,
"requires": {
- "pretty-format": "^23.0.1"
+ "pretty-format": "^23.6.0"
}
},
"jest-matcher-utils": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.0.1.tgz",
- "integrity": "sha1-DGwNrt+YM8Kn82I2Bp7+y0w/bl8=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz",
+ "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
"jest-get-type": "^22.1.0",
- "pretty-format": "^23.0.1"
+ "pretty-format": "^23.6.0"
}
},
"jest-message-util": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.1.0.tgz",
- "integrity": "sha1-moCbpIfsrFzlEdTmmO47XuJGHqk=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz",
+ "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0-beta.35",
@@ -6289,63 +6632,63 @@
}
},
"jest-mock": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.1.0.tgz",
- "integrity": "sha1-o4HDGxIasfYMRiotrbe4bczKxIc=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz",
+ "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=",
"dev": true
},
"jest-regex-util": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.0.0.tgz",
- "integrity": "sha1-3Vwf3gxG9DcTFM8Q96dRoj9Oj3Y=",
+ "version": "23.3.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz",
+ "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=",
"dev": true
},
"jest-resolve": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.1.0.tgz",
- "integrity": "sha1-ueMW7s69bwC8UKOWDRUnuuZXktI=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz",
+ "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==",
"dev": true,
"requires": {
- "browser-resolve": "^1.11.2",
+ "browser-resolve": "^1.11.3",
"chalk": "^2.0.1",
"realpath-native": "^1.0.0"
}
},
"jest-resolve-dependencies": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.1.tgz",
- "integrity": "sha1-0BoQ3a2RUsTOzfXqwriFccS2pk0=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz",
+ "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==",
"dev": true,
"requires": {
- "jest-regex-util": "^23.0.0",
- "jest-snapshot": "^23.0.1"
+ "jest-regex-util": "^23.3.0",
+ "jest-snapshot": "^23.6.0"
}
},
"jest-runner": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.1.0.tgz",
- "integrity": "sha1-+iCpM//3MaVDKzVh5/ZCZZT6KbU=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz",
+ "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==",
"dev": true,
"requires": {
"exit": "^0.1.2",
"graceful-fs": "^4.1.11",
- "jest-config": "^23.1.0",
- "jest-docblock": "^23.0.1",
- "jest-haste-map": "^23.1.0",
- "jest-jasmine2": "^23.1.0",
- "jest-leak-detector": "^23.0.1",
- "jest-message-util": "^23.1.0",
- "jest-runtime": "^23.1.0",
- "jest-util": "^23.1.0",
- "jest-worker": "^23.0.1",
+ "jest-config": "^23.6.0",
+ "jest-docblock": "^23.2.0",
+ "jest-haste-map": "^23.6.0",
+ "jest-jasmine2": "^23.6.0",
+ "jest-leak-detector": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-runtime": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-worker": "^23.2.0",
"source-map-support": "^0.5.6",
"throat": "^4.0.0"
}
},
"jest-runtime": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.1.0.tgz",
- "integrity": "sha1-tK4OhyWeys/UqIS2OdsHz03WIK8=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz",
+ "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==",
"dev": true,
"requires": {
"babel-core": "^6.0.0",
@@ -6355,20 +6698,42 @@
"exit": "^0.1.2",
"fast-json-stable-stringify": "^2.0.0",
"graceful-fs": "^4.1.11",
- "jest-config": "^23.1.0",
- "jest-haste-map": "^23.1.0",
- "jest-message-util": "^23.1.0",
- "jest-regex-util": "^23.0.0",
- "jest-resolve": "^23.1.0",
- "jest-snapshot": "^23.0.1",
- "jest-util": "^23.1.0",
- "jest-validate": "^23.0.1",
+ "jest-config": "^23.6.0",
+ "jest-haste-map": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-regex-util": "^23.3.0",
+ "jest-resolve": "^23.6.0",
+ "jest-snapshot": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-validate": "^23.6.0",
"micromatch": "^2.3.11",
"realpath-native": "^1.0.0",
"slash": "^1.0.0",
"strip-bom": "3.0.0",
"write-file-atomic": "^2.1.0",
"yargs": "^11.0.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "11.1.0",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
+ }
+ }
}
},
"jest-serializer": {
@@ -6378,51 +6743,55 @@
"dev": true
},
"jest-snapshot": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.0.1.tgz",
- "integrity": "sha1-ZnT6Gbnraamcq+zUFb3cQtavPn4=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz",
+ "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==",
"dev": true,
"requires": {
+ "babel-types": "^6.0.0",
"chalk": "^2.0.1",
- "jest-diff": "^23.0.1",
- "jest-matcher-utils": "^23.0.1",
+ "jest-diff": "^23.6.0",
+ "jest-matcher-utils": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-resolve": "^23.6.0",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^23.0.1"
+ "pretty-format": "^23.6.0",
+ "semver": "^5.5.0"
}
},
"jest-util": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.1.0.tgz",
- "integrity": "sha1-wCUbrzRkTG3S/qeKli9CY6xVdy0=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz",
+ "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=",
"dev": true,
"requires": {
"callsites": "^2.0.0",
"chalk": "^2.0.1",
"graceful-fs": "^4.1.11",
"is-ci": "^1.0.10",
- "jest-message-util": "^23.1.0",
+ "jest-message-util": "^23.4.0",
"mkdirp": "^0.5.1",
"slash": "^1.0.0",
"source-map": "^0.6.0"
}
},
"jest-validate": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.0.1.tgz",
- "integrity": "sha1-zZ8BqJ0mu4hfEqhmdxXpyGWldU8=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz",
+ "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
"jest-get-type": "^22.1.0",
"leven": "^2.1.0",
- "pretty-format": "^23.0.1"
+ "pretty-format": "^23.6.0"
}
},
"jest-watcher": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.1.0.tgz",
- "integrity": "sha1-qNWELjjZ+0r/+CPfartCpYrmzb0=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz",
+ "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=",
"dev": true,
"requires": {
"ansi-escapes": "^3.0.0",
@@ -6431,9 +6800,9 @@
}
},
"jest-worker": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.0.1.tgz",
- "integrity": "sha1-nmSd2WP/QEYCb5HEAX8Dmmqkp7w=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz",
+ "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=",
"dev": true,
"requires": {
"merge-stream": "^1.0.1"
@@ -6445,9 +6814,9 @@
"integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
},
"js-base64": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
- "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz",
+ "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==",
"dev": true
},
"js-tokens": {
@@ -6473,36 +6842,36 @@
"optional": true
},
"jsdom": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz",
- "integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
"dev": true,
"requires": {
- "abab": "^1.0.4",
- "acorn": "^5.3.0",
+ "abab": "^2.0.0",
+ "acorn": "^5.5.3",
"acorn-globals": "^4.1.0",
"array-equal": "^1.0.0",
"cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": ">= 0.3.1 < 0.4.0",
+ "cssstyle": "^1.0.0",
"data-urls": "^1.0.0",
- "domexception": "^1.0.0",
- "escodegen": "^1.9.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.9.1",
"html-encoding-sniffer": "^1.0.2",
- "left-pad": "^1.2.0",
- "nwsapi": "^2.0.0",
+ "left-pad": "^1.3.0",
+ "nwsapi": "^2.0.7",
"parse5": "4.0.0",
"pn": "^1.1.0",
- "request": "^2.83.0",
+ "request": "^2.87.0",
"request-promise-native": "^1.0.5",
"sax": "^1.2.4",
"symbol-tree": "^3.2.2",
- "tough-cookie": "^2.3.3",
+ "tough-cookie": "^2.3.4",
"w3c-hr-time": "^1.0.1",
"webidl-conversions": "^4.0.2",
"whatwg-encoding": "^1.0.3",
"whatwg-mimetype": "^2.1.0",
"whatwg-url": "^6.4.1",
- "ws": "^4.0.0",
+ "ws": "^5.2.0",
"xml-name-validator": "^3.0.0"
},
"dependencies": {
@@ -6511,16 +6880,6 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
- },
- "ws": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
- "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
- "dev": true,
- "requires": {
- "async-limiter": "~1.0.0",
- "safe-buffer": "~5.1.0"
- }
}
}
},
@@ -6556,13 +6915,19 @@
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
}
}
},
@@ -6685,6 +7050,12 @@
"graceful-fs": "^4.1.11"
}
},
+ "kleur": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz",
+ "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==",
+ "dev": true
+ },
"latest-version": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
@@ -6694,13 +7065,6 @@
"package-json": "^4.0.0"
}
},
- "lazy-cache": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
- "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
- "dev": true,
- "optional": true
- },
"lazystream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
@@ -6718,7 +7082,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -6826,12 +7190,30 @@
"integrity": "sha1-z9WelDU69d5R2l0wLKTr/zP6rFc=",
"dev": true
},
+ "lodash.every": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz",
+ "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=",
+ "dev": true
+ },
"lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
"dev": true
},
+ "lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "dev": true
+ },
+ "lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=",
+ "dev": true
+ },
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
@@ -6897,6 +7279,12 @@
"integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=",
"dev": true
},
+ "lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
+ "dev": true
+ },
"lodash.maxby": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz",
@@ -6959,19 +7347,13 @@
"chalk": "^2.0.1"
}
},
- "longest": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
- "dev": true
- },
"loose-envify": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
- "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dev": true,
"requires": {
- "js-tokens": "^3.0.0"
+ "js-tokens": "^3.0.0 || ^4.0.0"
}
},
"lower-case": {
@@ -7020,9 +7402,9 @@
}
},
"make-error": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz",
- "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g=="
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
+ "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g=="
},
"makeerror": {
"version": "1.0.11",
@@ -7040,9 +7422,9 @@
"dev": true
},
"map-stream": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
- "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ="
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
+ "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg="
},
"map-visit": {
"version": "1.0.0",
@@ -7086,7 +7468,7 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
@@ -7134,9 +7516,9 @@
}
},
"memfs": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-2.9.0.tgz",
- "integrity": "sha512-vgfeOslWG9COzKUE3GXi1QTY+ExmxEiqKdEqOieiIE5i4C8iEWYFv5UBLX1d1L/P5t3KBUIxsvT60ppY1yJRXw==",
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-2.9.4.tgz",
+ "integrity": "sha512-wstvgqSTBGf9rQHoaRpX3wJiGzB/sj649XaO+byuHiPZQaR3Y/mOgU6n9iMFLtAHlR4BwwBWFgA4hobiU6EcCg==",
"dev": true,
"requires": {
"fast-extend": "0.0.2",
@@ -7176,7 +7558,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -7200,6 +7582,11 @@
}
}
},
+ "mersenne-twister": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mersenne-twister/-/mersenne-twister-1.1.0.tgz",
+ "integrity": "sha1-+RZhjuQ9cXnvz2Qb7EUx65Zwl4o="
+ },
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -7224,52 +7611,6 @@
"object.omit": "^2.0.0",
"parse-glob": "^3.0.4",
"regex-cache": "^0.4.2"
- },
- "dependencies": {
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "^0.1.0"
- }
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
}
},
"mime": {
@@ -7278,16 +7619,16 @@
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
},
"mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
+ "version": "1.36.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
+ "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
},
"mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "version": "2.1.20",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
+ "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"requires": {
- "mime-db": "~1.33.0"
+ "mime-db": "~1.36.0"
}
},
"mimic-fn": {
@@ -7296,9 +7637,9 @@
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
},
"mimic-response": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz",
- "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
"dev": true
},
"minimatch": {
@@ -7311,7 +7652,7 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"mixin-deep": {
@@ -7337,7 +7678,7 @@
},
"mkdirp": {
"version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
@@ -7345,11 +7686,16 @@
"dependencies": {
"minimist": {
"version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
}
},
+ "moment": {
+ "version": "2.22.2",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
+ "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -7374,16 +7720,16 @@
"dev": true
},
"nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz",
+ "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==",
"dev": true,
"optional": true
},
"nanomatch": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
- "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
@@ -7391,7 +7737,6 @@
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"fragment-cache": "^0.2.1",
- "is-odd": "^2.0.0",
"is-windows": "^1.0.2",
"kind-of": "^6.0.2",
"object.pick": "^1.3.0",
@@ -7400,6 +7745,18 @@
"to-regex": "^3.0.1"
},
"dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -7420,9 +7777,9 @@
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
},
"nice-try": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz",
- "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA=="
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"no-case": {
"version": "2.3.2",
@@ -7443,14 +7800,14 @@
}
},
"node-fetch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.0.0.tgz",
- "integrity": "sha1-mCu6Q+zU8pIqKcwYamu7C7c/y6Y="
+ "version": "2.1.2",
+ "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
+ "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
},
"node-forge": {
- "version": "0.7.5",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
- "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
+ "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==",
"dev": true
},
"node-int64": {
@@ -7478,14 +7835,14 @@
"dev": true
},
"nodemailer": {
- "version": "4.6.7",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.6.7.tgz",
- "integrity": "sha512-GIAAYvs9XIP1fBa8wR89ukUh3yjL44pom5LKY5nTZcL+Zp9sRkqL8wgskyBQECQg9CPsDX/fjTZx8MNz20t0jA=="
+ "version": "4.6.8",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.6.8.tgz",
+ "integrity": "sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA=="
},
"nodemon": {
- "version": "1.17.5",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.5.tgz",
- "integrity": "sha512-FG2mWJU1Y58a9ktgMJ/RZpsiPz3b7ge77t/okZHEa4NbrlXGKZ8s1A6Q+C7+JPXohAfcPALRwvxcAn8S874pmw==",
+ "version": "1.18.4",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.4.tgz",
+ "integrity": "sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg==",
"dev": true,
"requires": {
"chokidar": "^2.0.2",
@@ -7501,13 +7858,19 @@
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
}
}
},
@@ -7637,15 +8000,15 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"nwsapi": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz",
- "integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz",
+ "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==",
"dev": true
},
"oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
@@ -7676,9 +8039,9 @@
}
},
"object-keys": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
- "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag=="
},
"object-path": {
"version": "0.11.4",
@@ -7686,9 +8049,9 @@
"integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
},
"object-path-immutable": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/object-path-immutable/-/object-path-immutable-1.0.2.tgz",
- "integrity": "sha512-47XliJBzj3/EG8IhzzaovC8fUsAq8m1sA6+mcO2bbdnMhunG7eKFV4qqD8apSSqidEN0W0XHWo09STdmW+alxQ=="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object-path-immutable/-/object-path-immutable-1.0.3.tgz",
+ "integrity": "sha512-9kH4QknY9w7FtX2I7U5z3a+S06eZW0PHPD1XKa2KLhsbkz3xyFUEX3rkyNzU34XkTGhIka70EiYbmOxyRfN3Cw=="
},
"object-visit": {
"version": "1.0.1",
@@ -7697,6 +8060,14 @@
"dev": true,
"requires": {
"isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
"object.getownpropertydescriptors": {
@@ -7726,6 +8097,14 @@
"dev": true,
"requires": {
"isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
"on-finished": {
@@ -7755,9 +8134,9 @@
}
},
"ono": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.5.tgz",
- "integrity": "sha512-ZVNuV9kJbr/2tWs83I2snrYo+WIS0DISF/xUfX9p9b6GyDD6F5N9PzHjW+p/dep6IGwSYylf1HCub5I/nM0R5Q==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.7.tgz",
+ "integrity": "sha512-FJiGEETwfSVyOwVTwQZD7XN69FRekvgtlobtvPwtilc7PxIHg3gKUykdNP7E9mC/VTF2cxqKZxUZfNKA3MuQLA==",
"dev": true,
"requires": {
"format-util": "^1.0.3"
@@ -7790,7 +8169,7 @@
"dependencies": {
"minimist": {
"version": "0.0.10",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
}
@@ -8027,9 +8406,9 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
},
"path-parse": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"path-to-regexp": {
@@ -8053,7 +8432,7 @@
},
"pause-stream": {
"version": "0.0.11",
- "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
"integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
"requires": {
"through": "~2.3"
@@ -8125,17 +8504,6 @@
"dev": true,
"requires": {
"split": "^1.0.0"
- },
- "dependencies": {
- "split": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
- "dev": true,
- "requires": {
- "through": "2"
- }
- }
}
},
"pify": {
@@ -8167,6 +8535,12 @@
"find-up": "^2.1.0"
}
},
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
"pn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
@@ -8174,9 +8548,9 @@
"dev": true
},
"portfinder": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
- "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
+ "version": "1.0.17",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz",
+ "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==",
"dev": true,
"requires": {
"async": "^1.5.2",
@@ -8217,9 +8591,9 @@
"dev": true
},
"postgres-interval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.1.1.tgz",
- "integrity": "sha512-OkuCi9t/3CZmeQreutGgx/OVNv9MKHGIT5jH8KldQ4NLYXkvmT9nDVxEuCENlNwhlGPE374oA/xMqn05G49pHA==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.1.2.tgz",
+ "integrity": "sha512-fC3xNHeTskCxL1dC8KOtxXt7YeFmlbTYtn7ul8MkVERuTmf7pI4DrkAxcw3kh1fQ9uz4wQmd03a1mRiXUZChfQ==",
"dev": true,
"requires": {
"xtend": "^4.0.0"
@@ -8244,9 +8618,9 @@
"dev": true
},
"pretty-format": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.0.1.tgz",
- "integrity": "sha1-1h0GUmjkx1kIO8y8onoBrXx2AfQ=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz",
+ "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0",
@@ -8254,14 +8628,14 @@
}
},
"prisma": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-1.9.0.tgz",
- "integrity": "sha512-gCCZxz6fvs99Oaz+uUtvFrXRHhD5Ny1hFocltbz+o/Va1HGMiNWnOcaGIZYIN1kbZrhGVxk4UvNoy0urq3IoTA==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-1.16.0.tgz",
+ "integrity": "sha512-8jZYCrkd1xjy+JJbQi81f8PBOLe8LLWwSu0fK0cqekm3FeafBd8xk5b0RWcIsHyVd6ypKCQt3tnZEMVzmbKrdQ==",
"dev": true,
"requires": {
"fs-extra": "^5.0.0",
- "prisma-cli-core": "1.0.46",
- "prisma-cli-engine": "1.0.48",
+ "prisma-cli-core": "1.0.76",
+ "prisma-cli-engine": "1.0.79",
"semver": "^5.4.1",
"source-map-support": "^0.4.18"
},
@@ -8284,42 +8658,23 @@
}
},
"prisma-binding": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/prisma-binding/-/prisma-binding-2.1.0.tgz",
- "integrity": "sha512-8gH9r/G6vT9A3tWdacRJ0LjRGMP8gxRQJIl4pC4X0OIpbk1xfuPYaw6/TE5nml0hLDvkNEv5t0CIOrjClYZ8+w==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/prisma-binding/-/prisma-binding-2.1.5.tgz",
+ "integrity": "sha512-CkePhR01UAY4OCAeUbb0UIRFGPcP5usk+H3axayoJsQXru/DHt4HpPoizzJB/gH1XwLAMHLZQwr2S1OFIiaEWQ==",
"requires": {
"apollo-link": "1.2.2",
"apollo-link-error": "1.0.9",
"apollo-link-ws": "1.0.8",
"cross-fetch": "2.1.1",
- "graphql-binding": "2.1.1",
+ "graphql-binding": "2.2.4",
"graphql-import": "0.5.2",
- "graphql-tools": "3.0.1",
+ "graphql-tools": "3.1.0",
"http-link-dataloader": "^0.1.2",
"jsonwebtoken": "8.2.1",
- "subscriptions-transport-ws": "0.9.8"
+ "subscriptions-transport-ws": "0.9.8",
+ "yargs": "12.0.1"
},
"dependencies": {
- "@types/graphql": {
- "version": "0.12.6",
- "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz",
- "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ=="
- },
- "@types/node": {
- "version": "9.6.22",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.22.tgz",
- "integrity": "sha512-RIg9EkxzVMkNH0M4sLRngK23f5QiigJC0iODQmu4nopzstt8AjegYund3r82iMrd2BNCjcZVnklaItvKHaGfBA=="
- },
- "apollo-link": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz",
- "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==",
- "requires": {
- "@types/graphql": "0.12.6",
- "apollo-utilities": "^1.0.0",
- "zen-observable-ts": "^0.8.9"
- }
- },
"cross-fetch": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.1.1.tgz",
@@ -8343,32 +8698,20 @@
}
},
"graphql-tools": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.1.tgz",
- "integrity": "sha512-E7OjLQt+T/ASJTIyX7uX6EnUiTh7qpfg5O1E/sMTLnT0IHLNzTVy1oDsQP8gezTFnsAopjEBozhRDRLStG7D1Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.0.tgz",
+ "integrity": "sha512-PlWq66vMQ/Lcwz68BHCk9wBtqr6k3DOU280td2Hb742nY1PgHqW/2dVPwyRdSMwLDLlSM3jT0z8gcOk9cNCvwg==",
"requires": {
- "apollo-link": "1.2.1",
+ "apollo-link": "^1.2.2",
"apollo-utilities": "^1.0.1",
+ "casual": "^1.5.19",
"deprecated-decorator": "^0.1.6",
- "iterall": "^1.1.3",
- "uuid": "^3.1.0"
- },
- "dependencies": {
- "apollo-link": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz",
- "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==",
- "requires": {
- "@types/node": "^9.4.6",
- "apollo-utilities": "^1.0.0",
- "zen-observable-ts": "^0.8.6"
- }
- }
+ "iterall": "^1.1.3"
}
},
"jsonwebtoken": {
"version": "8.2.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz",
+ "resolved": "http://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz",
"integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==",
"requires": {
"jws": "^3.1.4",
@@ -8388,11 +8731,6 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
- "node-fetch": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
- "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
- },
"subscriptions-transport-ws": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.8.tgz",
@@ -8408,11 +8746,6 @@
"ws": "^3.0.0"
}
},
- "whatwg-fetch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
- "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
- },
"ws": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
@@ -8426,9 +8759,9 @@
}
},
"prisma-cli-core": {
- "version": "1.0.46",
- "resolved": "https://registry.npmjs.org/prisma-cli-core/-/prisma-cli-core-1.0.46.tgz",
- "integrity": "sha512-w1vD8A8/3+uGxI1des/Ee6auGM2vdWWuOrBSTtEOfM/959wNPAn9b/PJEue0NoEhOFHF2DN2Ra8IUZJGehB1JA==",
+ "version": "1.0.76",
+ "resolved": "https://registry.npmjs.org/prisma-cli-core/-/prisma-cli-core-1.0.76.tgz",
+ "integrity": "sha512-HtHn/RM2GlJi23KoIXHoboP97aC54SYDqr7B4uT/80JP6A6nQp5HLt4sJgNfKapaHFZVzXYM7M3LEfGq3tgQbw==",
"dev": true,
"requires": {
"adm-zip": "^0.4.7",
@@ -8462,9 +8795,9 @@
"opn": "^5.1.0",
"pause": "^0.1.0",
"portfinder": "^1.0.13",
- "prisma-db-introspection": "0.0.14",
+ "prisma-db-introspection": "0.0.46",
"prisma-json-schema": "0.0.4",
- "prisma-yml": "1.0.59",
+ "prisma-yml": "1.0.96",
"scuid": "^1.0.2",
"semver": "^5.4.1",
"sillyname": "^0.1.0",
@@ -8513,12 +8846,12 @@
}
},
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"dotenv": {
@@ -8527,10 +8860,19 @@
"integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
"dev": true
},
+ "graphql": {
+ "version": "0.13.2",
+ "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+ "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "dev": true,
+ "requires": {
+ "iterall": "^1.2.1"
+ }
+ },
"graphql-config": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz",
- "integrity": "sha512-eb4FzlODifHE/Q+91QptAmkGw39wL5ToinJ2556UUsGt2drPc4tzifL+HSnHSaxiIbH8EUhc/Fa6+neinF04qA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.1.0.tgz",
+ "integrity": "sha512-LWpkME3x+KSFMVuMpRmDHTIZLyQQsBoKtMXJrT4RgXk6y0GRf0lsJ81R3S2FmT1CKZQOJfFsOpUfPpAcfmoN/A==",
"dev": true,
"requires": {
"graphql-import": "^0.4.4",
@@ -8580,7 +8922,7 @@
},
"graphql-import": {
"version": "0.4.5",
- "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
+ "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz",
"integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==",
"dev": true,
"requires": {
@@ -8608,10 +8950,22 @@
"through": "^2.3.6"
}
},
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "prisma-json-schema": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/prisma-json-schema/-/prisma-json-schema-0.0.4.tgz",
+ "integrity": "sha512-NTbourUhkmhM18rrcnp+IdxTdWftUsepZcNX2QntOqkOOwccYADmmZJpTr9tuvCYsW3i48B8LVEwvm0v1pAhxQ==",
+ "dev": true
+ },
"prisma-yml": {
- "version": "1.0.59",
- "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.0.59.tgz",
- "integrity": "sha512-C1CCvObZwAU49hHSjQVvNOWYjiH7OJK3KoXemgRKNdQptp1z54gqJycwYYDq6YMyK4FZyn4MYunXA7R7sFcdiA==",
+ "version": "1.0.96",
+ "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.0.96.tgz",
+ "integrity": "sha512-w3XGzJHUq5pwBoFy/amkGOcTDj4XoHh8UFUUUZcHo5fSyoF8AWeRTu1yWINaPVGxbcmpwKNetntAW4ijiq7M5g==",
"dev": true,
"requires": {
"ajv": "5",
@@ -8658,9 +9012,9 @@
}
},
"prisma-cli-engine": {
- "version": "1.0.48",
- "resolved": "https://registry.npmjs.org/prisma-cli-engine/-/prisma-cli-engine-1.0.48.tgz",
- "integrity": "sha512-8UWqaIb96osl+gKUHFfEQ39TVxxHXNu5DneDtX0/4TXbv5C1J/rx9U3O8Ddoqab00+I1idFv4Mrbm/gllQuGyA==",
+ "version": "1.0.79",
+ "resolved": "https://registry.npmjs.org/prisma-cli-engine/-/prisma-cli-engine-1.0.79.tgz",
+ "integrity": "sha512-CdEIJs4ld1IiQQt2CFFPmeDypN4Ct4sTgmFODVjJix790mpEtxMagzCcA+mhfnRL65P6xiHn76Gdxbz60GyYBA==",
"dev": true,
"requires": {
"@heroku/linewrap": "^1.0.0",
@@ -8703,7 +9057,7 @@
"memfs": "^2.5.3",
"opn": "^5.1.0",
"prisma-json-schema": "0.0.4",
- "prisma-yml": "1.0.59",
+ "prisma-yml": "1.0.96",
"raven": "2.3.0",
"replaceall": "^0.1.6",
"rwlockfile": "^1.4.8",
@@ -8720,12 +9074,12 @@
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"dotenv": {
@@ -8761,10 +9115,22 @@
"through": "^2.3.6"
}
},
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "prisma-json-schema": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/prisma-json-schema/-/prisma-json-schema-0.0.4.tgz",
+ "integrity": "sha512-NTbourUhkmhM18rrcnp+IdxTdWftUsepZcNX2QntOqkOOwccYADmmZJpTr9tuvCYsW3i48B8LVEwvm0v1pAhxQ==",
+ "dev": true
+ },
"prisma-yml": {
- "version": "1.0.59",
- "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.0.59.tgz",
- "integrity": "sha512-C1CCvObZwAU49hHSjQVvNOWYjiH7OJK3KoXemgRKNdQptp1z54gqJycwYYDq6YMyK4FZyn4MYunXA7R7sFcdiA==",
+ "version": "1.0.96",
+ "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.0.96.tgz",
+ "integrity": "sha512-w3XGzJHUq5pwBoFy/amkGOcTDj4XoHh8UFUUUZcHo5fSyoF8AWeRTu1yWINaPVGxbcmpwKNetntAW4ijiq7M5g==",
"dev": true,
"requires": {
"ajv": "5",
@@ -8820,9 +9186,9 @@
}
},
"prisma-db-introspection": {
- "version": "0.0.14",
- "resolved": "https://registry.npmjs.org/prisma-db-introspection/-/prisma-db-introspection-0.0.14.tgz",
- "integrity": "sha512-2j29oRcachYTHE8qep81gvH3Dwgpy760x1+7QWdIhi+VQwslN1oEWFjBVUIuXJMnAEpIRK1rPvYYf9ruHacUdg==",
+ "version": "0.0.46",
+ "resolved": "https://registry.npmjs.org/prisma-db-introspection/-/prisma-db-introspection-0.0.46.tgz",
+ "integrity": "sha512-/b7evS9b5xKS7UrcOERkCmV+IWC6OAgFtInFsvdwn4MeLEaVbkOfzRakdOo+t2gb+N7Yy8Eey9eKYgB5jiJAbA==",
"dev": true,
"requires": {
"ajv": "5",
@@ -8838,19 +9204,21 @@
"jsonwebtoken": "^8.1.0",
"lodash": "^4.17.4",
"pg": "^7.4.1",
+ "pluralize": "^7.0.0",
"prisma-json-schema": "^0.0.1",
"replaceall": "^0.1.6",
"scuid": "^1.0.2",
+ "uppercamelcase": "^3.0.0",
"yaml-ast-parser": "^0.0.40"
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"dotenv": {
@@ -8859,6 +9227,12 @@
"integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
"dev": true
},
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
"prisma-json-schema": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/prisma-json-schema/-/prisma-json-schema-0.0.1.tgz",
@@ -8868,15 +9242,15 @@
}
},
"prisma-json-schema": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/prisma-json-schema/-/prisma-json-schema-0.0.4.tgz",
- "integrity": "sha512-NTbourUhkmhM18rrcnp+IdxTdWftUsepZcNX2QntOqkOOwccYADmmZJpTr9tuvCYsW3i48B8LVEwvm0v1pAhxQ==",
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/prisma-json-schema/-/prisma-json-schema-0.1.1.tgz",
+ "integrity": "sha512-epi2cDTQu/xk//H79dqRIzqk9ZEEqgcvHR7M/UhG/9UcSYY3OP/tJKDj5AYk86Xt2p5muDp3+y8ZGVNGZVQgNw==",
"dev": true
},
"prisma-yml": {
- "version": "1.0.50",
- "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.0.50.tgz",
- "integrity": "sha512-Vpt6q+YzS6yozMnIPU75hlHzmDR1Hj4Z3FXaazJrOXUyeQx/xDqeEwRJ+ii4xl/GRYiFnMEVSLfsPzjLehA1Zw==",
+ "version": "1.0.93",
+ "resolved": "https://registry.npmjs.org/prisma-yml/-/prisma-yml-1.0.93.tgz",
+ "integrity": "sha512-np7VXqA4t+qhmn2GXGIOL19IMWSyrI1T8uJH8Lrla9uslvSxch6bzarYcQgKsc+sTL/g1zbvNgRl19cr/CUuNQ==",
"dev": true,
"requires": {
"ajv": "5",
@@ -8893,19 +9267,19 @@
"json-stable-stringify": "^1.0.1",
"jsonwebtoken": "^8.1.0",
"lodash": "^4.17.4",
- "prisma-json-schema": "0.0.4",
+ "prisma-json-schema": "0.1.1",
"replaceall": "^0.1.6",
"scuid": "^1.0.2",
"yaml-ast-parser": "^0.0.40"
},
"dependencies": {
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"dotenv": {
@@ -8913,6 +9287,12 @@
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz",
"integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
"dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
}
}
},
@@ -8928,6 +9308,16 @@
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
+ "prompts": {
+ "version": "0.1.14",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz",
+ "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==",
+ "dev": true,
+ "requires": {
+ "kleur": "^2.0.1",
+ "sisteransi": "^0.1.1"
+ }
+ },
"proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@@ -8941,12 +9331,12 @@
"dev": true
},
"proxy-addr": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
- "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+ "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"requires": {
"forwarded": "~0.1.2",
- "ipaddr.js": "1.6.0"
+ "ipaddr.js": "1.8.0"
}
},
"prr": {
@@ -8968,6 +9358,12 @@
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
"pstree.remy": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz",
@@ -8993,9 +9389,9 @@
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
},
"randomatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
- "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
+ "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
"dev": true,
"requires": {
"is-number": "^4.0.0",
@@ -9137,7 +9533,7 @@
},
"readable-stream": {
"version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
"core-util-is": "~1.0.0",
@@ -9166,7 +9562,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -9191,9 +9587,9 @@
}
},
"realpath-native": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz",
- "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz",
+ "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==",
"dev": true,
"requires": {
"util.promisify": "^1.0.0"
@@ -9223,9 +9619,9 @@
"dev": true
},
"regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
},
"regenerator-transform": {
"version": "0.10.1",
@@ -9309,9 +9705,9 @@
"dev": true
},
"repeat-element": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
- "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
"dev": true
},
"repeat-string": {
@@ -9336,31 +9732,45 @@
"dev": true
},
"request": {
- "version": "2.87.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
- "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
- "aws4": "^1.6.0",
+ "aws4": "^1.8.0",
"caseless": "~0.12.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.1",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
"forever-agent": "~0.6.1",
- "form-data": "~2.3.1",
- "har-validator": "~5.0.3",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
"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",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
- "qs": "~6.5.1",
- "safe-buffer": "^5.1.1",
- "tough-cookie": "~2.3.3",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
- "uuid": "^3.1.0"
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ }
}
},
"request-promise": {
@@ -9462,16 +9872,6 @@
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
- "right-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
- "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.1"
- }
- },
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
@@ -9521,9 +9921,9 @@
}
},
"rxjs": {
- "version": "5.5.11",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz",
- "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==",
+ "version": "5.5.12",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
+ "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
@@ -9573,6 +9973,253 @@
"watch": "~0.18.0"
},
"dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -9604,7 +10251,7 @@
},
"sax": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
+ "resolved": "http://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
},
"scuid": {
@@ -9624,7 +10271,7 @@
"dependencies": {
"commander": {
"version": "2.8.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
+ "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
"dev": true,
"requires": {
@@ -9634,9 +10281,9 @@
}
},
"semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
+ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
},
"semver-diff": {
"version": "2.1.0",
@@ -9799,6 +10446,12 @@
"errno": "^0.1.1"
}
},
+ "sisteransi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz",
+ "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==",
+ "dev": true
+ },
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -9914,6 +10567,12 @@
"kind-of": "^6.0.2"
}
},
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -9968,9 +10627,9 @@
}
},
"source-map-support": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
- "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+ "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -10006,14 +10665,14 @@
}
},
"spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
+ "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w=="
},
"split": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
- "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"requires": {
"through": "2"
}
@@ -10094,11 +10753,12 @@
"dev": true
},
"stream-combiner": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
- "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "version": "0.2.2",
+ "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz",
+ "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
"requires": {
- "duplexer": "~0.1.1"
+ "duplexer": "~0.1.1",
+ "through": "~2.3.4"
}
},
"streamsearch": {
@@ -10123,12 +10783,16 @@
}
},
"string-similarity": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.0.tgz",
- "integrity": "sha1-11FTyzg4RjGLejmo2SkrtNtOnDA=",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.1.tgz",
+ "integrity": "sha512-XqC6lRZF3UIYdxBRHjIfJwU2nYzPm+E8udKFHjIplnRQflkXP1A1Ie3HoEv04W/zY1wGnV6TQpklM2WwZO3gIA==",
"dev": true,
"requires": {
- "lodash": "^4.13.1"
+ "lodash.every": "^4.6.0",
+ "lodash.flattendeep": "^4.4.0",
+ "lodash.foreach": "^4.5.0",
+ "lodash.map": "^4.6.0",
+ "lodash.maxby": "^4.6.0"
}
},
"string-width": {
@@ -10198,9 +10862,9 @@
}
},
"stripe": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/stripe/-/stripe-6.1.1.tgz",
- "integrity": "sha512-57+/1ZAeUipF9ZPdcFyIOUaNETIBfkY88Q3tZsM/HXuK2e60qGEfuSTKwqAVx5ebvVMvA8s6aFDHwnS+6R3erQ==",
+ "version": "6.10.0",
+ "resolved": "https://registry.npmjs.org/stripe/-/stripe-6.10.0.tgz",
+ "integrity": "sha512-QWNHswItKeCJ8Qb03fJgHkQ01+f3p7PpRk+lxmC4yC6Bd8kUHh/lXoKKoVakhjmwfGd2R0thXRqv1zCwWzyc9w==",
"requires": {
"lodash.isplainobject": "^4.0.6",
"qs": "~6.5.1",
@@ -10208,24 +10872,21 @@
}
},
"subscriptions-transport-ws": {
- "version": "0.9.11",
- "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.11.tgz",
- "integrity": "sha512-B8fwTIJy2buUcBXM6Ffbax30XcEqvCqL8RXwbivBAiB3X9ezrTcF5nYMmNGZ47sxrDYA1XfQ5W3aTgJEm8BFJA==",
+ "version": "0.9.14",
+ "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.14.tgz",
+ "integrity": "sha512-n1+mgupVdJn1MIls1ZhSJurJjc+islp7Tv9EIaEJ3HAd9DaINneKq0KRqOYNOrvUI7orVWGomEnlIxoudjfbeA==",
"requires": {
"backo2": "^1.0.2",
"eventemitter3": "^3.1.0",
"iterall": "^1.2.1",
- "lodash.assign": "^4.2.0",
- "lodash.isobject": "^3.0.2",
- "lodash.isstring": "^4.0.1",
"symbol-observable": "^1.0.4",
"ws": "^5.2.0"
}
},
"supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
@@ -10259,7 +10920,7 @@
},
"table": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz",
+ "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz",
"integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
"dev": true,
"requires": {
@@ -10272,15 +10933,15 @@
},
"dependencies": {
"ajv": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz",
- "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==",
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.1"
+ "uri-js": "^4.2.2"
}
},
"fast-deep-equal": {
@@ -10320,7 +10981,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -10354,13 +11015,13 @@
}
},
"test-exclude": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz",
- "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz",
+ "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==",
"dev": true,
"requires": {
"arrify": "^1.0.1",
- "micromatch": "^3.1.8",
+ "micromatch": "^2.3.11",
"object-assign": "^4.1.0",
"read-pkg-up": "^1.0.1",
"require-main-filename": "^1.0.1"
@@ -10376,12 +11037,6 @@
"pinkie-promise": "^2.0.0"
}
},
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -10395,27 +11050,6 @@
"strip-bom": "^2.0.0"
}
},
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
@@ -10512,7 +11146,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -10608,6 +11242,17 @@
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
}
},
"touch": {
@@ -10620,11 +11265,12 @@
}
},
"tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
+ "psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
@@ -10681,11 +11327,12 @@
"dev": true
},
"ts-node": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.1.1.tgz",
- "integrity": "sha512-79FnymLGDBd/nXoiak1L6w6fd9Zz9Ge/x8/Aglaeh31KkqRLDzbfT1vBGlO5dqc76WzufTlW4IYl7e01CVUF5A==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz",
+ "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==",
"requires": {
"arrify": "^1.0.0",
+ "buffer-from": "^1.1.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"minimist": "^1.2.0",
@@ -10729,72 +11376,25 @@
}
},
"uglify-js": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "version": "3.4.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
"dev": true,
"optional": true,
"requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
+ "commander": "~2.17.1",
+ "source-map": "~0.6.1"
},
"dependencies": {
- "camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true,
- "optional": true
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "optional": true,
- "requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
- "wordwrap": "0.0.2"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "optional": true
- },
- "wordwrap": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true,
"optional": true
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
- }
}
}
},
- "uglify-to-browserify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
- "dev": true,
- "optional": true
- },
"ultron": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
@@ -10818,7 +11418,7 @@
},
"buffer": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz",
+ "resolved": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz",
"integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=",
"dev": true,
"requires": {
@@ -10889,9 +11489,9 @@
}
},
"universalify": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
- "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true
},
"unpipe": {
@@ -10942,6 +11542,12 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -10990,6 +11596,15 @@
"upper-case": "^1.1.1"
}
},
+ "uppercamelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/uppercamelcase/-/uppercamelcase-3.0.0.tgz",
+ "integrity": "sha1-OAsyG41zy6Fv7E11KldRUtHvcxc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -11053,21 +11668,10 @@
"dev": true
},
"use": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
- "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
},
"util-deprecate": {
"version": "1.0.2",
@@ -11096,18 +11700,18 @@
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
},
"validate-npm-package-license": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
- "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"validator": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-10.3.0.tgz",
- "integrity": "sha512-bn7dcJcdkpSjcujYlf8lrY9VL660h5njEkFzQzQOFMQgJ3Id1C4+MkazHKgHE45NoGsyQYEPmo4dCIbDQ7eTdw==",
+ "version": "10.7.1",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-10.7.1.tgz",
+ "integrity": "sha512-tbB5JrTczfeHKLw3PnFRzGFlF1xUAwSgXEDb66EuX1ffCirspYpDEZo3Vc9j38gPdL4JKrDc5UPFfgYiw1IWRQ==",
"dev": true
},
"vary": {
@@ -11170,26 +11774,18 @@
"dev": true
},
"whatwg-encoding": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz",
- "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz",
+ "integrity": "sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg==",
"dev": true,
"requires": {
- "iconv-lite": "0.4.19"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
- }
+ "iconv-lite": "0.4.23"
}
},
"whatwg-fetch": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz",
- "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="
+ "version": "2.0.4",
+ "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
+ "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
},
"whatwg-mimetype": {
"version": "2.1.0",
@@ -11230,13 +11826,6 @@
"string-width": "^2.1.1"
}
},
- "window-size": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
- "dev": true,
- "optional": true
- },
"wordwrap": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
@@ -11245,7 +11834,7 @@
},
"wrap-ansi": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"requires": {
"string-width": "^1.0.1",
@@ -11303,9 +11892,9 @@
}
},
"ws": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.0.tgz",
- "integrity": "sha512-c18dMeW+PEQdDFzkhDsnBAlS4Z8KGStBQQUcQ5mf7Nf689jyGk0594L+i9RaQuf4gog6SvWLJorz2NfSaqxZ7w==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"requires": {
"async-limiter": "~1.0.0"
}
@@ -11323,21 +11912,23 @@
"dev": true
},
"xml2js": {
- "version": "0.4.17",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz",
- "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=",
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"requires": {
"sax": ">=0.6.0",
- "xmlbuilder": "^4.1.0"
+ "xmlbuilder": "~9.0.1"
}
},
"xmlbuilder": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz",
- "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=",
- "requires": {
- "lodash": "^4.0.0"
- }
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ },
+ "xregexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
+ "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg=="
},
"xtend": {
"version": "4.0.1",
@@ -11361,13 +11952,13 @@
"dev": true
},
"yargs": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
- "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz",
+ "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==",
"requires": {
"cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
+ "decamelize": "^2.0.0",
+ "find-up": "^3.0.0",
"get-caller-file": "^1.0.1",
"os-locale": "^2.0.0",
"require-directory": "^2.1.1",
@@ -11375,8 +11966,64 @@
"set-blocking": "^2.0.0",
"string-width": "^2.0.0",
"which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^10.1.0"
+ },
+ "dependencies": {
+ "decamelize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
+ "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+ "requires": {
+ "xregexp": "4.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
}
},
"yargs-parser": {
@@ -11388,9 +12035,9 @@
}
},
"yauzl": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz",
- "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
"requires": {
"buffer-crc32": "~0.2.3",
@@ -11403,9 +12050,9 @@
"integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo="
},
"z-schema": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.22.0.tgz",
- "integrity": "sha512-Oq82unxX2PTcJ031gFGcksDHE5PNBs5CbcQ1tbre0Sl4Mu5habZTVmEAkuZS4cK//VgIdNg9UG9PMgMlN6KmiA==",
+ "version": "3.23.0",
+ "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.23.0.tgz",
+ "integrity": "sha512-D8XV0BiHuQbWNEgu68RpjFZJ0C7jt+WYoszXKOohe54TdoTTauUvBQx+lsYCdalGIjGTFdQs5dxKvCUonUERzQ==",
"dev": true,
"requires": {
"commander": "^2.7.1",
@@ -11415,9 +12062,9 @@
}
},
"zen-observable": {
- "version": "0.8.8",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.8.tgz",
- "integrity": "sha512-HnhhyNnwTFzS48nihkCZIJGsWGFcYUz+XPDlPK5W84Ifji8SksC6m7sQWOf8zdCGhzQ4tDYuMYGu5B0N1dXTtg=="
+ "version": "0.8.9",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.9.tgz",
+ "integrity": "sha512-Y9kPzjGvIZ5jchSlqlCpBW3I82zBBL4z+ulXDRVA1NwsKzjt5kwAi+gOYIy0htNkfuehGZZtP5mRXHRV6TjDWw=="
},
"zen-observable-ts": {
"version": "0.8.9",
@@ -11447,7 +12094,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
diff --git a/finished-application/backend/package.json b/stepped-solutions/FINISHED/backend/package.json
index 2b45310..a8bd30d 100644
--- a/finished-application/backend/package.json
+++ b/stepped-solutions/FINISHED/backend/package.json
@@ -1,5 +1,5 @@
{
- "name": "my-own",
+ "name": "sick-fits-backend",
"scripts": {
"start": "nodemon -e js,graphql -x node src/index.js",
"debug": "nodemon -e js,graphql -x node --inspect src/index.js",
@@ -11,21 +11,21 @@
"dependencies": {
"bcryptjs": "2.4.3",
"cookie-parser": "^1.4.3",
- "graphql": "^0.13.2",
- "graphql-yoga": "1.14.8",
+ "graphql": "^14.0.2",
+ "graphql-yoga": "1.16.2",
"jsonwebtoken": "8.3.0",
- "nodemailer": "^4.6.7",
+ "nodemailer": "^4.6.6",
"npm-run-all": "^4.1.3",
- "prisma-binding": "2.1.0",
- "stripe": "^6.1.1"
+ "prisma-binding": "2.1.5",
+ "stripe": "^6.1.1",
+ "dotenv": "6.0.0",
+ "prisma": "1.16.0",
+ "babel-preset-env": "^1.7.0",
+ "nodemon": "1.18.4"
},
"devDependencies": {
- "babel-preset-env": "^1.7.0",
- "dotenv": "6.0.0",
- "graphql-cli": "^2.16.3",
- "jest-cli": "^23.1.0",
- "nodemon": "1.17.5",
- "prisma": "1.9.0"
+ "graphql-cli": "^2.16.2",
+ "jest-cli": "^23.1.0"
},
"license": "MIT",
"repository": {
diff --git a/stepped-solutions/FINISHED/backend/prisma.yml b/stepped-solutions/FINISHED/backend/prisma.yml
new file mode 100644
index 0000000..58b7a3b
--- /dev/null
+++ b/stepped-solutions/FINISHED/backend/prisma.yml
@@ -0,0 +1,7 @@
+#endpoint: ${env:PRISMA_ENDPOINT}
+endpoint: https://sick-fits-production.herokuapp.com/sick-fits-prod/prod
+datamodel: datamodel.graphql
+secret: ${env:PRISMA_SECRET}
+hooks:
+ post-deploy:
+ - graphql get-schema -p prisma
diff --git a/stepped-solutions/FINISHED/backend/prisma/datamodel.graphql b/stepped-solutions/FINISHED/backend/prisma/datamodel.graphql
new file mode 100644
index 0000000..e95965d
--- /dev/null
+++ b/stepped-solutions/FINISHED/backend/prisma/datamodel.graphql
@@ -0,0 +1 @@
+# Here we will write the datamodel!
diff --git a/finished-application/backend/prisma/prisma.yml b/stepped-solutions/FINISHED/backend/prisma/prisma.yml
index 2940bab..2940bab 100644
--- a/finished-application/backend/prisma/prisma.yml
+++ b/stepped-solutions/FINISHED/backend/prisma/prisma.yml
diff --git a/finished-application/backend/src/createServer.js b/stepped-solutions/FINISHED/backend/src/createServer.js
index 036d15a..c552b02 100644
--- a/finished-application/backend/src/createServer.js
+++ b/stepped-solutions/FINISHED/backend/src/createServer.js
@@ -3,16 +3,18 @@ const Mutation = require('./resolvers/Mutation');
const Query = require('./resolvers/Query');
const db = require('./db');
+// Create the GraphQL Yoga Server
+
function createServer() {
return new GraphQLServer({
typeDefs: 'src/schema.graphql',
- resolverValidationOptions: {
- requireResolversForResolveType: false,
- },
resolvers: {
Mutation,
Query,
},
+ resolverValidationOptions: {
+ requireResolversForResolveType: false,
+ },
context: req => ({ ...req, db }),
});
}
diff --git a/stepped-solutions/FINISHED/backend/src/db.js b/stepped-solutions/FINISHED/backend/src/db.js
new file mode 100644
index 0000000..8f66240
--- /dev/null
+++ b/stepped-solutions/FINISHED/backend/src/db.js
@@ -0,0 +1,11 @@
+// This file connects to the remote prisma DB and gives us the ability to query it with JS
+const { Prisma } = require('prisma-binding');
+
+const db = new Prisma({
+ typeDefs: 'src/generated/prisma.graphql',
+ endpoint: process.env.PRISMA_ENDPOINT,
+ secret: process.env.PRISMA_SECRET,
+ debug: false,
+});
+
+module.exports = db;
diff --git a/stepped-solutions/FINISHED/backend/src/generated/prisma.graphql b/stepped-solutions/FINISHED/backend/src/generated/prisma.graphql
new file mode 100644
index 0000000..cc13ecf
--- /dev/null
+++ b/stepped-solutions/FINISHED/backend/src/generated/prisma.graphql
@@ -0,0 +1,1862 @@
+# source: https://us1.prisma.sh/wesbos/siccccccccck-fits/dev
+# timestamp: Tue Sep 11 2018 16:26:22 GMT-0400 (EDT)
+
+type AggregateCartItem {
+ count: Int!
+}
+
+type AggregateItem {
+ count: Int!
+}
+
+type AggregateOrder {
+ count: Int!
+}
+
+type AggregateOrderItem {
+ count: Int!
+}
+
+type AggregateUser {
+ count: Int!
+}
+
+type BatchPayload {
+ """The number of nodes that have been affected by the Batch operation."""
+ count: Long!
+}
+
+type CartItem implements Node {
+ id: ID!
+ quantity: Int!
+ item(where: ItemWhereInput): Item
+ user(where: UserWhereInput): User!
+}
+
+"""A connection to a list of items."""
+type CartItemConnection {
+ """Information to aid in pagination."""
+ pageInfo: PageInfo!
+
+ """A list of edges."""
+ edges: [CartItemEdge]!
+ aggregate: AggregateCartItem!
+}
+
+input CartItemCreateInput {
+ quantity: Int
+ item: ItemCreateOneInput
+ user: UserCreateOneWithoutCartInput!
+}
+
+input CartItemCreateManyWithoutUserInput {
+ create: [CartItemCreateWithoutUserInput!]
+ connect: [CartItemWhereUniqueInput!]
+}
+
+input CartItemCreateWithoutUserInput {
+ quantity: Int
+ item: ItemCreateOneInput
+}
+
+"""An edge in a connection."""
+type CartItemEdge {
+ """The item at the end of the edge."""
+ node: CartItem!
+
+ """A cursor for use in pagination."""
+ cursor: String!
+}
+
+enum CartItemOrderByInput {
+ id_ASC
+ id_DESC
+ quantity_ASC
+ quantity_DESC
+ updatedAt_ASC
+ updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
+}
+
+type CartItemPreviousValues {
+ id: ID!
+ quantity: Int!
+}
+
+type CartItemSubscriptionPayload {
+ mutation: MutationType!
+ node: CartItem
+ updatedFields: [String!]
+ previousValues: CartItemPreviousValues
+}
+
+input CartItemSubscriptionWhereInput {
+ """Logical AND on all given filters."""
+ AND: [CartItemSubscriptionWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [CartItemSubscriptionWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [CartItemSubscriptionWhereInput!]
+
+ """
+ The subscription event gets dispatched when it's listed in mutation_in
+ """
+ mutation_in: [MutationType!]
+
+ """
+ The subscription event gets only dispatched when one of the updated fields names is included in this list
+ """
+ updatedFields_contains: String
+
+ """
+ The subscription event gets only dispatched when all of the field names included in this list have been updated
+ """
+ updatedFields_contains_every: [String!]
+
+ """
+ The subscription event gets only dispatched when some of the field names included in this list have been updated
+ """
+ updatedFields_contains_some: [String!]
+ node: CartItemWhereInput
+}
+
+input CartItemUpdateInput {
+ quantity: Int
+ item: ItemUpdateOneInput
+ user: UserUpdateOneRequiredWithoutCartInput
+}
+
+input CartItemUpdateManyWithoutUserInput {
+ create: [CartItemCreateWithoutUserInput!]
+ connect: [CartItemWhereUniqueInput!]
+ disconnect: [CartItemWhereUniqueInput!]
+ delete: [CartItemWhereUniqueInput!]
+ update: [CartItemUpdateWithWhereUniqueWithoutUserInput!]
+ upsert: [CartItemUpsertWithWhereUniqueWithoutUserInput!]
+}
+
+input CartItemUpdateWithoutUserDataInput {
+ quantity: Int
+ item: ItemUpdateOneInput
+}
+
+input CartItemUpdateWithWhereUniqueWithoutUserInput {
+ where: CartItemWhereUniqueInput!
+ data: CartItemUpdateWithoutUserDataInput!
+}
+
+input CartItemUpsertWithWhereUniqueWithoutUserInput {
+ where: CartItemWhereUniqueInput!
+ update: CartItemUpdateWithoutUserDataInput!
+ create: CartItemCreateWithoutUserInput!
+}
+
+input CartItemWhereInput {
+ """Logical AND on all given filters."""
+ AND: [CartItemWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [CartItemWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [CartItemWhereInput!]
+ id: ID
+
+ """All values that are not equal to given value."""
+ id_not: ID
+
+ """All values that are contained in given list."""
+ id_in: [ID!]
+
+ """All values that are not contained in given list."""
+ id_not_in: [ID!]
+
+ """All values less than the given value."""
+ id_lt: ID
+
+ """All values less than or equal the given value."""
+ id_lte: ID
+
+ """All values greater than the given value."""
+ id_gt: ID
+
+ """All values greater than or equal the given value."""
+ id_gte: ID
+
+ """All values containing the given string."""
+ id_contains: ID
+
+ """All values not containing the given string."""
+ id_not_contains: ID
+
+ """All values starting with the given string."""
+ id_starts_with: ID
+
+ """All values not starting with the given string."""
+ id_not_starts_with: ID
+
+ """All values ending with the given string."""
+ id_ends_with: ID
+
+ """All values not ending with the given string."""
+ id_not_ends_with: ID
+ quantity: Int
+
+ """All values that are not equal to given value."""
+ quantity_not: Int
+
+ """All values that are contained in given list."""
+ quantity_in: [Int!]
+
+ """All values that are not contained in given list."""
+ quantity_not_in: [Int!]
+
+ """All values less than the given value."""
+ quantity_lt: Int
+
+ """All values less than or equal the given value."""
+ quantity_lte: Int
+
+ """All values greater than the given value."""
+ quantity_gt: Int
+
+ """All values greater than or equal the given value."""
+ quantity_gte: Int
+ item: ItemWhereInput
+ user: UserWhereInput
+}
+
+input CartItemWhereUniqueInput {
+ id: ID
+}
+
+scalar DateTime
+
+type Item implements Node {
+ id: ID!
+ title: String!
+ description: String!
+ image: String
+ largeImage: String
+ price: Int!
+ user(where: UserWhereInput): User!
+}
+
+"""A connection to a list of items."""
+type ItemConnection {
+ """Information to aid in pagination."""
+ pageInfo: PageInfo!
+
+ """A list of edges."""
+ edges: [ItemEdge]!
+ aggregate: AggregateItem!
+}
+
+input ItemCreateInput {
+ title: String!
+ description: String!
+ image: String
+ largeImage: String
+ price: Int!
+ user: UserCreateOneInput!
+}
+
+input ItemCreateOneInput {
+ create: ItemCreateInput
+ connect: ItemWhereUniqueInput
+}
+
+"""An edge in a connection."""
+type ItemEdge {
+ """The item at the end of the edge."""
+ node: Item!
+
+ """A cursor for use in pagination."""
+ cursor: String!
+}
+
+enum ItemOrderByInput {
+ id_ASC
+ id_DESC
+ title_ASC
+ title_DESC
+ description_ASC
+ description_DESC
+ image_ASC
+ image_DESC
+ largeImage_ASC
+ largeImage_DESC
+ price_ASC
+ price_DESC
+ updatedAt_ASC
+ updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
+}
+
+type ItemPreviousValues {
+ id: ID!
+ title: String!
+ description: String!
+ image: String
+ largeImage: String
+ price: Int!
+}
+
+type ItemSubscriptionPayload {
+ mutation: MutationType!
+ node: Item
+ updatedFields: [String!]
+ previousValues: ItemPreviousValues
+}
+
+input ItemSubscriptionWhereInput {
+ """Logical AND on all given filters."""
+ AND: [ItemSubscriptionWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [ItemSubscriptionWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [ItemSubscriptionWhereInput!]
+
+ """
+ The subscription event gets dispatched when it's listed in mutation_in
+ """
+ mutation_in: [MutationType!]
+
+ """
+ The subscription event gets only dispatched when one of the updated fields names is included in this list
+ """
+ updatedFields_contains: String
+
+ """
+ The subscription event gets only dispatched when all of the field names included in this list have been updated
+ """
+ updatedFields_contains_every: [String!]
+
+ """
+ The subscription event gets only dispatched when some of the field names included in this list have been updated
+ """
+ updatedFields_contains_some: [String!]
+ node: ItemWhereInput
+}
+
+input ItemUpdateDataInput {
+ title: String
+ description: String
+ image: String
+ largeImage: String
+ price: Int
+ user: UserUpdateOneRequiredInput
+}
+
+input ItemUpdateInput {
+ title: String
+ description: String
+ image: String
+ largeImage: String
+ price: Int
+ user: UserUpdateOneRequiredInput
+}
+
+input ItemUpdateOneInput {
+ create: ItemCreateInput
+ connect: ItemWhereUniqueInput
+ disconnect: Boolean
+ delete: Boolean
+ update: ItemUpdateDataInput
+ upsert: ItemUpsertNestedInput
+}
+
+input ItemUpsertNestedInput {
+ update: ItemUpdateDataInput!
+ create: ItemCreateInput!
+}
+
+input ItemWhereInput {
+ """Logical AND on all given filters."""
+ AND: [ItemWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [ItemWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [ItemWhereInput!]
+ id: ID
+
+ """All values that are not equal to given value."""
+ id_not: ID
+
+ """All values that are contained in given list."""
+ id_in: [ID!]
+
+ """All values that are not contained in given list."""
+ id_not_in: [ID!]
+
+ """All values less than the given value."""
+ id_lt: ID
+
+ """All values less than or equal the given value."""
+ id_lte: ID
+
+ """All values greater than the given value."""
+ id_gt: ID
+
+ """All values greater than or equal the given value."""
+ id_gte: ID
+
+ """All values containing the given string."""
+ id_contains: ID
+
+ """All values not containing the given string."""
+ id_not_contains: ID
+
+ """All values starting with the given string."""
+ id_starts_with: ID
+
+ """All values not starting with the given string."""
+ id_not_starts_with: ID
+
+ """All values ending with the given string."""
+ id_ends_with: ID
+
+ """All values not ending with the given string."""
+ id_not_ends_with: ID
+ title: String
+
+ """All values that are not equal to given value."""
+ title_not: String
+
+ """All values that are contained in given list."""
+ title_in: [String!]
+
+ """All values that are not contained in given list."""
+ title_not_in: [String!]
+
+ """All values less than the given value."""
+ title_lt: String
+
+ """All values less than or equal the given value."""
+ title_lte: String
+
+ """All values greater than the given value."""
+ title_gt: String
+
+ """All values greater than or equal the given value."""
+ title_gte: String
+
+ """All values containing the given string."""
+ title_contains: String
+
+ """All values not containing the given string."""
+ title_not_contains: String
+
+ """All values starting with the given string."""
+ title_starts_with: String
+
+ """All values not starting with the given string."""
+ title_not_starts_with: String
+
+ """All values ending with the given string."""
+ title_ends_with: String
+
+ """All values not ending with the given string."""
+ title_not_ends_with: String
+ description: String
+
+ """All values that are not equal to given value."""
+ description_not: String
+
+ """All values that are contained in given list."""
+ description_in: [String!]
+
+ """All values that are not contained in given list."""
+ description_not_in: [String!]
+
+ """All values less than the given value."""
+ description_lt: String
+
+ """All values less than or equal the given value."""
+ description_lte: String
+
+ """All values greater than the given value."""
+ description_gt: String
+
+ """All values greater than or equal the given value."""
+ description_gte: String
+
+ """All values containing the given string."""
+ description_contains: String
+
+ """All values not containing the given string."""
+ description_not_contains: String
+
+ """All values starting with the given string."""
+ description_starts_with: String
+
+ """All values not starting with the given string."""
+ description_not_starts_with: String
+
+ """All values ending with the given string."""
+ description_ends_with: String
+
+ """All values not ending with the given string."""
+ description_not_ends_with: String
+ image: String
+
+ """All values that are not equal to given value."""
+ image_not: String
+
+ """All values that are contained in given list."""
+ image_in: [String!]
+
+ """All values that are not contained in given list."""
+ image_not_in: [String!]
+
+ """All values less than the given value."""
+ image_lt: String
+
+ """All values less than or equal the given value."""
+ image_lte: String
+
+ """All values greater than the given value."""
+ image_gt: String
+
+ """All values greater than or equal the given value."""
+ image_gte: String
+
+ """All values containing the given string."""
+ image_contains: String
+
+ """All values not containing the given string."""
+ image_not_contains: String
+
+ """All values starting with the given string."""
+ image_starts_with: String
+
+ """All values not starting with the given string."""
+ image_not_starts_with: String
+
+ """All values ending with the given string."""
+ image_ends_with: String
+
+ """All values not ending with the given string."""
+ image_not_ends_with: String
+ largeImage: String
+
+ """All values that are not equal to given value."""
+ largeImage_not: String
+
+ """All values that are contained in given list."""
+ largeImage_in: [String!]
+
+ """All values that are not contained in given list."""
+ largeImage_not_in: [String!]
+
+ """All values less than the given value."""
+ largeImage_lt: String
+
+ """All values less than or equal the given value."""
+ largeImage_lte: String
+
+ """All values greater than the given value."""
+ largeImage_gt: String
+
+ """All values greater than or equal the given value."""
+ largeImage_gte: String
+
+ """All values containing the given string."""
+ largeImage_contains: String
+
+ """All values not containing the given string."""
+ largeImage_not_contains: String
+
+ """All values starting with the given string."""
+ largeImage_starts_with: String
+
+ """All values not starting with the given string."""
+ largeImage_not_starts_with: String
+
+ """All values ending with the given string."""
+ largeImage_ends_with: String
+
+ """All values not ending with the given string."""
+ largeImage_not_ends_with: String
+ price: Int
+
+ """All values that are not equal to given value."""
+ price_not: Int
+
+ """All values that are contained in given list."""
+ price_in: [Int!]
+
+ """All values that are not contained in given list."""
+ price_not_in: [Int!]
+
+ """All values less than the given value."""
+ price_lt: Int
+
+ """All values less than or equal the given value."""
+ price_lte: Int
+
+ """All values greater than the given value."""
+ price_gt: Int
+
+ """All values greater than or equal the given value."""
+ price_gte: Int
+ user: UserWhereInput
+}
+
+input ItemWhereUniqueInput {
+ id: ID
+}
+
+"""
+The `Long` scalar type represents non-fractional signed whole numeric values.
+Long can represent values between -(2^63) and 2^63 - 1.
+"""
+scalar Long
+
+type Mutation {
+ createCartItem(data: CartItemCreateInput!): CartItem!
+ createOrder(data: OrderCreateInput!): Order!
+ createItem(data: ItemCreateInput!): Item!
+ createOrderItem(data: OrderItemCreateInput!): OrderItem!
+ createUser(data: UserCreateInput!): User!
+ updateCartItem(data: CartItemUpdateInput!, where: CartItemWhereUniqueInput!): CartItem
+ updateOrder(data: OrderUpdateInput!, where: OrderWhereUniqueInput!): Order
+ updateItem(data: ItemUpdateInput!, where: ItemWhereUniqueInput!): Item
+ updateOrderItem(data: OrderItemUpdateInput!, where: OrderItemWhereUniqueInput!): OrderItem
+ updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
+ deleteCartItem(where: CartItemWhereUniqueInput!): CartItem
+ deleteOrder(where: OrderWhereUniqueInput!): Order
+ deleteItem(where: ItemWhereUniqueInput!): Item
+ deleteOrderItem(where: OrderItemWhereUniqueInput!): OrderItem
+ deleteUser(where: UserWhereUniqueInput!): User
+ upsertCartItem(where: CartItemWhereUniqueInput!, create: CartItemCreateInput!, update: CartItemUpdateInput!): CartItem!
+ upsertOrder(where: OrderWhereUniqueInput!, create: OrderCreateInput!, update: OrderUpdateInput!): Order!
+ upsertItem(where: ItemWhereUniqueInput!, create: ItemCreateInput!, update: ItemUpdateInput!): Item!
+ upsertOrderItem(where: OrderItemWhereUniqueInput!, create: OrderItemCreateInput!, update: OrderItemUpdateInput!): OrderItem!
+ upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
+ updateManyCartItems(data: CartItemUpdateInput!, where: CartItemWhereInput): BatchPayload!
+ updateManyOrders(data: OrderUpdateInput!, where: OrderWhereInput): BatchPayload!
+ updateManyItems(data: ItemUpdateInput!, where: ItemWhereInput): BatchPayload!
+ updateManyOrderItems(data: OrderItemUpdateInput!, where: OrderItemWhereInput): BatchPayload!
+ updateManyUsers(data: UserUpdateInput!, where: UserWhereInput): BatchPayload!
+ deleteManyCartItems(where: CartItemWhereInput): BatchPayload!
+ deleteManyOrders(where: OrderWhereInput): BatchPayload!
+ deleteManyItems(where: ItemWhereInput): BatchPayload!
+ deleteManyOrderItems(where: OrderItemWhereInput): BatchPayload!
+ deleteManyUsers(where: UserWhereInput): BatchPayload!
+}
+
+enum MutationType {
+ CREATED
+ UPDATED
+ DELETED
+}
+
+"""An object with an ID"""
+interface Node {
+ """The id of the object."""
+ id: ID!
+}
+
+type Order implements Node {
+ id: ID!
+ items(where: OrderItemWhereInput, orderBy: OrderItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [OrderItem!]
+ total: Int!
+ user(where: UserWhereInput): User!
+ charge: String!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+
+"""A connection to a list of items."""
+type OrderConnection {
+ """Information to aid in pagination."""
+ pageInfo: PageInfo!
+
+ """A list of edges."""
+ edges: [OrderEdge]!
+ aggregate: AggregateOrder!
+}
+
+input OrderCreateInput {
+ total: Int!
+ charge: String!
+ items: OrderItemCreateManyInput
+ user: UserCreateOneInput!
+}
+
+"""An edge in a connection."""
+type OrderEdge {
+ """The item at the end of the edge."""
+ node: Order!
+
+ """A cursor for use in pagination."""
+ cursor: String!
+}
+
+type OrderItem implements Node {
+ id: ID!
+ title: String!
+ description: String!
+ image: String!
+ largeImage: String!
+ price: Int!
+ quantity: Int!
+ user(where: UserWhereInput): User
+}
+
+"""A connection to a list of items."""
+type OrderItemConnection {
+ """Information to aid in pagination."""
+ pageInfo: PageInfo!
+
+ """A list of edges."""
+ edges: [OrderItemEdge]!
+ aggregate: AggregateOrderItem!
+}
+
+input OrderItemCreateInput {
+ title: String!
+ description: String!
+ image: String!
+ largeImage: String!
+ price: Int!
+ quantity: Int
+ user: UserCreateOneInput
+}
+
+input OrderItemCreateManyInput {
+ create: [OrderItemCreateInput!]
+ connect: [OrderItemWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type OrderItemEdge {
+ """The item at the end of the edge."""
+ node: OrderItem!
+
+ """A cursor for use in pagination."""
+ cursor: String!
+}
+
+enum OrderItemOrderByInput {
+ id_ASC
+ id_DESC
+ title_ASC
+ title_DESC
+ description_ASC
+ description_DESC
+ image_ASC
+ image_DESC
+ largeImage_ASC
+ largeImage_DESC
+ price_ASC
+ price_DESC
+ quantity_ASC
+ quantity_DESC
+ updatedAt_ASC
+ updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
+}
+
+type OrderItemPreviousValues {
+ id: ID!
+ title: String!
+ description: String!
+ image: String!
+ largeImage: String!
+ price: Int!
+ quantity: Int!
+}
+
+type OrderItemSubscriptionPayload {
+ mutation: MutationType!
+ node: OrderItem
+ updatedFields: [String!]
+ previousValues: OrderItemPreviousValues
+}
+
+input OrderItemSubscriptionWhereInput {
+ """Logical AND on all given filters."""
+ AND: [OrderItemSubscriptionWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [OrderItemSubscriptionWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [OrderItemSubscriptionWhereInput!]
+
+ """
+ The subscription event gets dispatched when it's listed in mutation_in
+ """
+ mutation_in: [MutationType!]
+
+ """
+ The subscription event gets only dispatched when one of the updated fields names is included in this list
+ """
+ updatedFields_contains: String
+
+ """
+ The subscription event gets only dispatched when all of the field names included in this list have been updated
+ """
+ updatedFields_contains_every: [String!]
+
+ """
+ The subscription event gets only dispatched when some of the field names included in this list have been updated
+ """
+ updatedFields_contains_some: [String!]
+ node: OrderItemWhereInput
+}
+
+input OrderItemUpdateDataInput {
+ title: String
+ description: String
+ image: String
+ largeImage: String
+ price: Int
+ quantity: Int
+ user: UserUpdateOneInput
+}
+
+input OrderItemUpdateInput {
+ title: String
+ description: String
+ image: String
+ largeImage: String
+ price: Int
+ quantity: Int
+ user: UserUpdateOneInput
+}
+
+input OrderItemUpdateManyInput {
+ create: [OrderItemCreateInput!]
+ connect: [OrderItemWhereUniqueInput!]
+ disconnect: [OrderItemWhereUniqueInput!]
+ delete: [OrderItemWhereUniqueInput!]
+ update: [OrderItemUpdateWithWhereUniqueNestedInput!]
+ upsert: [OrderItemUpsertWithWhereUniqueNestedInput!]
+}
+
+input OrderItemUpdateWithWhereUniqueNestedInput {
+ where: OrderItemWhereUniqueInput!
+ data: OrderItemUpdateDataInput!
+}
+
+input OrderItemUpsertWithWhereUniqueNestedInput {
+ where: OrderItemWhereUniqueInput!
+ update: OrderItemUpdateDataInput!
+ create: OrderItemCreateInput!
+}
+
+input OrderItemWhereInput {
+ """Logical AND on all given filters."""
+ AND: [OrderItemWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [OrderItemWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [OrderItemWhereInput!]
+ id: ID
+
+ """All values that are not equal to given value."""
+ id_not: ID
+
+ """All values that are contained in given list."""
+ id_in: [ID!]
+
+ """All values that are not contained in given list."""
+ id_not_in: [ID!]
+
+ """All values less than the given value."""
+ id_lt: ID
+
+ """All values less than or equal the given value."""
+ id_lte: ID
+
+ """All values greater than the given value."""
+ id_gt: ID
+
+ """All values greater than or equal the given value."""
+ id_gte: ID
+
+ """All values containing the given string."""
+ id_contains: ID
+
+ """All values not containing the given string."""
+ id_not_contains: ID
+
+ """All values starting with the given string."""
+ id_starts_with: ID
+
+ """All values not starting with the given string."""
+ id_not_starts_with: ID
+
+ """All values ending with the given string."""
+ id_ends_with: ID
+
+ """All values not ending with the given string."""
+ id_not_ends_with: ID
+ title: String
+
+ """All values that are not equal to given value."""
+ title_not: String
+
+ """All values that are contained in given list."""
+ title_in: [String!]
+
+ """All values that are not contained in given list."""
+ title_not_in: [String!]
+
+ """All values less than the given value."""
+ title_lt: String
+
+ """All values less than or equal the given value."""
+ title_lte: String
+
+ """All values greater than the given value."""
+ title_gt: String
+
+ """All values greater than or equal the given value."""
+ title_gte: String
+
+ """All values containing the given string."""
+ title_contains: String
+
+ """All values not containing the given string."""
+ title_not_contains: String
+
+ """All values starting with the given string."""
+ title_starts_with: String
+
+ """All values not starting with the given string."""
+ title_not_starts_with: String
+
+ """All values ending with the given string."""
+ title_ends_with: String
+
+ """All values not ending with the given string."""
+ title_not_ends_with: String
+ description: String
+
+ """All values that are not equal to given value."""
+ description_not: String
+
+ """All values that are contained in given list."""
+ description_in: [String!]
+
+ """All values that are not contained in given list."""
+ description_not_in: [String!]
+
+ """All values less than the given value."""
+ description_lt: String
+
+ """All values less than or equal the given value."""
+ description_lte: String
+
+ """All values greater than the given value."""
+ description_gt: String
+
+ """All values greater than or equal the given value."""
+ description_gte: String
+
+ """All values containing the given string."""
+ description_contains: String
+
+ """All values not containing the given string."""
+ description_not_contains: String
+
+ """All values starting with the given string."""
+ description_starts_with: String
+
+ """All values not starting with the given string."""
+ description_not_starts_with: String
+
+ """All values ending with the given string."""
+ description_ends_with: String
+
+ """All values not ending with the given string."""
+ description_not_ends_with: String
+ image: String
+
+ """All values that are not equal to given value."""
+ image_not: String
+
+ """All values that are contained in given list."""
+ image_in: [String!]
+
+ """All values that are not contained in given list."""
+ image_not_in: [String!]
+
+ """All values less than the given value."""
+ image_lt: String
+
+ """All values less than or equal the given value."""
+ image_lte: String
+
+ """All values greater than the given value."""
+ image_gt: String
+
+ """All values greater than or equal the given value."""
+ image_gte: String
+
+ """All values containing the given string."""
+ image_contains: String
+
+ """All values not containing the given string."""
+ image_not_contains: String
+
+ """All values starting with the given string."""
+ image_starts_with: String
+
+ """All values not starting with the given string."""
+ image_not_starts_with: String
+
+ """All values ending with the given string."""
+ image_ends_with: String
+
+ """All values not ending with the given string."""
+ image_not_ends_with: String
+ largeImage: String
+
+ """All values that are not equal to given value."""
+ largeImage_not: String
+
+ """All values that are contained in given list."""
+ largeImage_in: [String!]
+
+ """All values that are not contained in given list."""
+ largeImage_not_in: [String!]
+
+ """All values less than the given value."""
+ largeImage_lt: String
+
+ """All values less than or equal the given value."""
+ largeImage_lte: String
+
+ """All values greater than the given value."""
+ largeImage_gt: String
+
+ """All values greater than or equal the given value."""
+ largeImage_gte: String
+
+ """All values containing the given string."""
+ largeImage_contains: String
+
+ """All values not containing the given string."""
+ largeImage_not_contains: String
+
+ """All values starting with the given string."""
+ largeImage_starts_with: String
+
+ """All values not starting with the given string."""
+ largeImage_not_starts_with: String
+
+ """All values ending with the given string."""
+ largeImage_ends_with: String
+
+ """All values not ending with the given string."""
+ largeImage_not_ends_with: String
+ price: Int
+
+ """All values that are not equal to given value."""
+ price_not: Int
+
+ """All values that are contained in given list."""
+ price_in: [Int!]
+
+ """All values that are not contained in given list."""
+ price_not_in: [Int!]
+
+ """All values less than the given value."""
+ price_lt: Int
+
+ """All values less than or equal the given value."""
+ price_lte: Int
+
+ """All values greater than the given value."""
+ price_gt: Int
+
+ """All values greater than or equal the given value."""
+ price_gte: Int
+ quantity: Int
+
+ """All values that are not equal to given value."""
+ quantity_not: Int
+
+ """All values that are contained in given list."""
+ quantity_in: [Int!]
+
+ """All values that are not contained in given list."""
+ quantity_not_in: [Int!]
+
+ """All values less than the given value."""
+ quantity_lt: Int
+
+ """All values less than or equal the given value."""
+ quantity_lte: Int
+
+ """All values greater than the given value."""
+ quantity_gt: Int
+
+ """All values greater than or equal the given value."""
+ quantity_gte: Int
+ user: UserWhereInput
+}
+
+input OrderItemWhereUniqueInput {
+ id: ID
+}
+
+enum OrderOrderByInput {
+ id_ASC
+ id_DESC
+ total_ASC
+ total_DESC
+ charge_ASC
+ charge_DESC
+ createdAt_ASC
+ createdAt_DESC
+ updatedAt_ASC
+ updatedAt_DESC
+}
+
+type OrderPreviousValues {
+ id: ID!
+ total: Int!
+ charge: String!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+
+type OrderSubscriptionPayload {
+ mutation: MutationType!
+ node: Order
+ updatedFields: [String!]
+ previousValues: OrderPreviousValues
+}
+
+input OrderSubscriptionWhereInput {
+ """Logical AND on all given filters."""
+ AND: [OrderSubscriptionWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [OrderSubscriptionWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [OrderSubscriptionWhereInput!]
+
+ """
+ The subscription event gets dispatched when it's listed in mutation_in
+ """
+ mutation_in: [MutationType!]
+
+ """
+ The subscription event gets only dispatched when one of the updated fields names is included in this list
+ """
+ updatedFields_contains: String
+
+ """
+ The subscription event gets only dispatched when all of the field names included in this list have been updated
+ """
+ updatedFields_contains_every: [String!]
+
+ """
+ The subscription event gets only dispatched when some of the field names included in this list have been updated
+ """
+ updatedFields_contains_some: [String!]
+ node: OrderWhereInput
+}
+
+input OrderUpdateInput {
+ total: Int
+ charge: String
+ items: OrderItemUpdateManyInput
+ user: UserUpdateOneRequiredInput
+}
+
+input OrderWhereInput {
+ """Logical AND on all given filters."""
+ AND: [OrderWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [OrderWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [OrderWhereInput!]
+ id: ID
+
+ """All values that are not equal to given value."""
+ id_not: ID
+
+ """All values that are contained in given list."""
+ id_in: [ID!]
+
+ """All values that are not contained in given list."""
+ id_not_in: [ID!]
+
+ """All values less than the given value."""
+ id_lt: ID
+
+ """All values less than or equal the given value."""
+ id_lte: ID
+
+ """All values greater than the given value."""
+ id_gt: ID
+
+ """All values greater than or equal the given value."""
+ id_gte: ID
+
+ """All values containing the given string."""
+ id_contains: ID
+
+ """All values not containing the given string."""
+ id_not_contains: ID
+
+ """All values starting with the given string."""
+ id_starts_with: ID
+
+ """All values not starting with the given string."""
+ id_not_starts_with: ID
+
+ """All values ending with the given string."""
+ id_ends_with: ID
+
+ """All values not ending with the given string."""
+ id_not_ends_with: ID
+ total: Int
+
+ """All values that are not equal to given value."""
+ total_not: Int
+
+ """All values that are contained in given list."""
+ total_in: [Int!]
+
+ """All values that are not contained in given list."""
+ total_not_in: [Int!]
+
+ """All values less than the given value."""
+ total_lt: Int
+
+ """All values less than or equal the given value."""
+ total_lte: Int
+
+ """All values greater than the given value."""
+ total_gt: Int
+
+ """All values greater than or equal the given value."""
+ total_gte: Int
+ charge: String
+
+ """All values that are not equal to given value."""
+ charge_not: String
+
+ """All values that are contained in given list."""
+ charge_in: [String!]
+
+ """All values that are not contained in given list."""
+ charge_not_in: [String!]
+
+ """All values less than the given value."""
+ charge_lt: String
+
+ """All values less than or equal the given value."""
+ charge_lte: String
+
+ """All values greater than the given value."""
+ charge_gt: String
+
+ """All values greater than or equal the given value."""
+ charge_gte: String
+
+ """All values containing the given string."""
+ charge_contains: String
+
+ """All values not containing the given string."""
+ charge_not_contains: String
+
+ """All values starting with the given string."""
+ charge_starts_with: String
+
+ """All values not starting with the given string."""
+ charge_not_starts_with: String
+
+ """All values ending with the given string."""
+ charge_ends_with: String
+
+ """All values not ending with the given string."""
+ charge_not_ends_with: String
+ createdAt: DateTime
+
+ """All values that are not equal to given value."""
+ createdAt_not: DateTime
+
+ """All values that are contained in given list."""
+ createdAt_in: [DateTime!]
+
+ """All values that are not contained in given list."""
+ createdAt_not_in: [DateTime!]
+
+ """All values less than the given value."""
+ createdAt_lt: DateTime
+
+ """All values less than or equal the given value."""
+ createdAt_lte: DateTime
+
+ """All values greater than the given value."""
+ createdAt_gt: DateTime
+
+ """All values greater than or equal the given value."""
+ createdAt_gte: DateTime
+ updatedAt: DateTime
+
+ """All values that are not equal to given value."""
+ updatedAt_not: DateTime
+
+ """All values that are contained in given list."""
+ updatedAt_in: [DateTime!]
+
+ """All values that are not contained in given list."""
+ updatedAt_not_in: [DateTime!]
+
+ """All values less than the given value."""
+ updatedAt_lt: DateTime
+
+ """All values less than or equal the given value."""
+ updatedAt_lte: DateTime
+
+ """All values greater than the given value."""
+ updatedAt_gt: DateTime
+
+ """All values greater than or equal the given value."""
+ updatedAt_gte: DateTime
+ items_every: OrderItemWhereInput
+ items_some: OrderItemWhereInput
+ items_none: OrderItemWhereInput
+ user: UserWhereInput
+}
+
+input OrderWhereUniqueInput {
+ id: ID
+}
+
+"""Information about pagination in a connection."""
+type PageInfo {
+ """When paginating forwards, are there more items?"""
+ hasNextPage: Boolean!
+
+ """When paginating backwards, are there more items?"""
+ hasPreviousPage: Boolean!
+
+ """When paginating backwards, the cursor to continue."""
+ startCursor: String
+
+ """When paginating forwards, the cursor to continue."""
+ endCursor: String
+}
+
+enum Permission {
+ ADMIN
+ USER
+ ITEMCREATE
+ ITEMUPDATE
+ ITEMDELETE
+ PERMISSIONUPDATE
+}
+
+type Query {
+ cartItems(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [CartItem]!
+ orders(where: OrderWhereInput, orderBy: OrderOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Order]!
+ items(where: ItemWhereInput, orderBy: ItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Item]!
+ orderItems(where: OrderItemWhereInput, orderBy: OrderItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [OrderItem]!
+ users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
+ cartItem(where: CartItemWhereUniqueInput!): CartItem
+ order(where: OrderWhereUniqueInput!): Order
+ item(where: ItemWhereUniqueInput!): Item
+ orderItem(where: OrderItemWhereUniqueInput!): OrderItem
+ user(where: UserWhereUniqueInput!): User
+ cartItemsConnection(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): CartItemConnection!
+ ordersConnection(where: OrderWhereInput, orderBy: OrderOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): OrderConnection!
+ itemsConnection(where: ItemWhereInput, orderBy: ItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): ItemConnection!
+ orderItemsConnection(where: OrderItemWhereInput, orderBy: OrderItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): OrderItemConnection!
+ usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!
+
+ """Fetches an object given its ID"""
+ node(
+ """The ID of an object"""
+ id: ID!
+ ): Node
+}
+
+type Subscription {
+ cartItem(where: CartItemSubscriptionWhereInput): CartItemSubscriptionPayload
+ order(where: OrderSubscriptionWhereInput): OrderSubscriptionPayload
+ item(where: ItemSubscriptionWhereInput): ItemSubscriptionPayload
+ orderItem(where: OrderItemSubscriptionWhereInput): OrderItemSubscriptionPayload
+ user(where: UserSubscriptionWhereInput): UserSubscriptionPayload
+}
+
+type User implements Node {
+ id: ID!
+ name: String!
+ email: String!
+ password: String!
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: [Permission!]!
+ cart(where: CartItemWhereInput, orderBy: CartItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [CartItem!]
+}
+
+"""A connection to a list of items."""
+type UserConnection {
+ """Information to aid in pagination."""
+ pageInfo: PageInfo!
+
+ """A list of edges."""
+ edges: [UserEdge]!
+ aggregate: AggregateUser!
+}
+
+input UserCreateInput {
+ name: String!
+ email: String!
+ password: String!
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: UserCreatepermissionsInput
+ cart: CartItemCreateManyWithoutUserInput
+}
+
+input UserCreateOneInput {
+ create: UserCreateInput
+ connect: UserWhereUniqueInput
+}
+
+input UserCreateOneWithoutCartInput {
+ create: UserCreateWithoutCartInput
+ connect: UserWhereUniqueInput
+}
+
+input UserCreatepermissionsInput {
+ set: [Permission!]
+}
+
+input UserCreateWithoutCartInput {
+ name: String!
+ email: String!
+ password: String!
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: UserCreatepermissionsInput
+}
+
+"""An edge in a connection."""
+type UserEdge {
+ """The item at the end of the edge."""
+ node: User!
+
+ """A cursor for use in pagination."""
+ cursor: String!
+}
+
+enum UserOrderByInput {
+ id_ASC
+ id_DESC
+ name_ASC
+ name_DESC
+ email_ASC
+ email_DESC
+ password_ASC
+ password_DESC
+ resetToken_ASC
+ resetToken_DESC
+ resetTokenExpiry_ASC
+ resetTokenExpiry_DESC
+ updatedAt_ASC
+ updatedAt_DESC
+ createdAt_ASC
+ createdAt_DESC
+}
+
+type UserPreviousValues {
+ id: ID!
+ name: String!
+ email: String!
+ password: String!
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: [Permission!]!
+}
+
+type UserSubscriptionPayload {
+ mutation: MutationType!
+ node: User
+ updatedFields: [String!]
+ previousValues: UserPreviousValues
+}
+
+input UserSubscriptionWhereInput {
+ """Logical AND on all given filters."""
+ AND: [UserSubscriptionWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [UserSubscriptionWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [UserSubscriptionWhereInput!]
+
+ """
+ The subscription event gets dispatched when it's listed in mutation_in
+ """
+ mutation_in: [MutationType!]
+
+ """
+ The subscription event gets only dispatched when one of the updated fields names is included in this list
+ """
+ updatedFields_contains: String
+
+ """
+ The subscription event gets only dispatched when all of the field names included in this list have been updated
+ """
+ updatedFields_contains_every: [String!]
+
+ """
+ The subscription event gets only dispatched when some of the field names included in this list have been updated
+ """
+ updatedFields_contains_some: [String!]
+ node: UserWhereInput
+}
+
+input UserUpdateDataInput {
+ name: String
+ email: String
+ password: String
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: UserUpdatepermissionsInput
+ cart: CartItemUpdateManyWithoutUserInput
+}
+
+input UserUpdateInput {
+ name: String
+ email: String
+ password: String
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: UserUpdatepermissionsInput
+ cart: CartItemUpdateManyWithoutUserInput
+}
+
+input UserUpdateOneInput {
+ create: UserCreateInput
+ connect: UserWhereUniqueInput
+ disconnect: Boolean
+ delete: Boolean
+ update: UserUpdateDataInput
+ upsert: UserUpsertNestedInput
+}
+
+input UserUpdateOneRequiredInput {
+ create: UserCreateInput
+ connect: UserWhereUniqueInput
+ update: UserUpdateDataInput
+ upsert: UserUpsertNestedInput
+}
+
+input UserUpdateOneRequiredWithoutCartInput {
+ create: UserCreateWithoutCartInput
+ connect: UserWhereUniqueInput
+ update: UserUpdateWithoutCartDataInput
+ upsert: UserUpsertWithoutCartInput
+}
+
+input UserUpdatepermissionsInput {
+ set: [Permission!]
+}
+
+input UserUpdateWithoutCartDataInput {
+ name: String
+ email: String
+ password: String
+ resetToken: String
+ resetTokenExpiry: String
+ permissions: UserUpdatepermissionsInput
+}
+
+input UserUpsertNestedInput {
+ update: UserUpdateDataInput!
+ create: UserCreateInput!
+}
+
+input UserUpsertWithoutCartInput {
+ update: UserUpdateWithoutCartDataInput!
+ create: UserCreateWithoutCartInput!
+}
+
+input UserWhereInput {
+ """Logical AND on all given filters."""
+ AND: [UserWhereInput!]
+
+ """Logical OR on all given filters."""
+ OR: [UserWhereInput!]
+
+ """Logical NOT on all given filters combined by AND."""
+ NOT: [UserWhereInput!]
+ id: ID
+
+ """All values that are not equal to given value."""
+ id_not: ID
+
+ """All values that are contained in given list."""
+ id_in: [ID!]
+
+ """All values that are not contained in given list."""
+ id_not_in: [ID!]
+
+ """All values less than the given value."""
+ id_lt: ID
+
+ """All values less than or equal the given value."""
+ id_lte: ID
+
+ """All values greater than the given value."""
+ id_gt: ID
+
+ """All values greater than or equal the given value."""
+ id_gte: ID
+
+ """All values containing the given string."""
+ id_contains: ID
+
+ """All values not containing the given string."""
+ id_not_contains: ID
+
+ """All values starting with the given string."""
+ id_starts_with: ID
+
+ """All values not starting with the given string."""
+ id_not_starts_with: ID
+
+ """All values ending with the given string."""
+ id_ends_with: ID
+
+ """All values not ending with the given string."""
+ id_not_ends_with: ID
+ name: String
+
+ """All values that are not equal to given value."""
+ name_not: String
+
+ """All values that are contained in given list."""
+ name_in: [String!]
+
+ """All values that are not contained in given list."""
+ name_not_in: [String!]
+
+ """All values less than the given value."""
+ name_lt: String
+
+ """All values less than or equal the given value."""
+ name_lte: String
+
+ """All values greater than the given value."""
+ name_gt: String
+
+ """All values greater than or equal the given value."""
+ name_gte: String
+
+ """All values containing the given string."""
+ name_contains: String
+
+ """All values not containing the given string."""
+ name_not_contains: String
+
+ """All values starting with the given string."""
+ name_starts_with: String
+
+ """All values not starting with the given string."""
+ name_not_starts_with: String
+
+ """All values ending with the given string."""
+ name_ends_with: String
+
+ """All values not ending with the given string."""
+ name_not_ends_with: String
+ email: String
+
+ """All values that are not equal to given value."""
+ email_not: String
+
+ """All values that are contained in given list."""
+ email_in: [String!]
+
+ """All values that are not contained in given list."""
+ email_not_in: [String!]
+
+ """All values less than the given value."""
+ email_lt: String
+
+ """All values less than or equal the given value."""
+ email_lte: String
+
+ """All values greater than the given value."""
+ email_gt: String
+
+ """All values greater than or equal the given value."""
+ email_gte: String
+
+ """All values containing the given string."""
+ email_contains: String
+
+ """All values not containing the given string."""
+ email_not_contains: String
+
+ """All values starting with the given string."""
+ email_starts_with: String
+
+ """All values not starting with the given string."""
+ email_not_starts_with: String
+
+ """All values ending with the given string."""
+ email_ends_with: String
+
+ """All values not ending with the given string."""
+ email_not_ends_with: String
+ password: String
+
+ """All values that are not equal to given value."""
+ password_not: String
+
+ """All values that are contained in given list."""
+ password_in: [String!]
+
+ """All values that are not contained in given list."""
+ password_not_in: [String!]
+
+ """All values less than the given value."""
+ password_lt: String
+
+ """All values less than or equal the given value."""
+ password_lte: String
+
+ """All values greater than the given value."""
+ password_gt: String
+
+ """All values greater than or equal the given value."""
+ password_gte: String
+
+ """All values containing the given string."""
+ password_contains: String
+
+ """All values not containing the given string."""
+ password_not_contains: String
+
+ """All values starting with the given string."""
+ password_starts_with: String
+
+ """All values not starting with the given string."""
+ password_not_starts_with: String
+
+ """All values ending with the given string."""
+ password_ends_with: String
+
+ """All values not ending with the given string."""
+ password_not_ends_with: String
+ resetToken: String
+
+ """All values that are not equal to given value."""
+ resetToken_not: String
+
+ """All values that are contained in given list."""
+ resetToken_in: [String!]
+
+ """All values that are not contained in given list."""
+ resetToken_not_in: [String!]
+
+ """All values less than the given value."""
+ resetToken_lt: String
+
+ """All values less than or equal the given value."""
+ resetToken_lte: String
+
+ """All values greater than the given value."""
+ resetToken_gt: String
+
+ """All values greater than or equal the given value."""
+ resetToken_gte: String
+
+ """All values containing the given string."""
+ resetToken_contains: String
+
+ """All values not containing the given string."""
+ resetToken_not_contains: String
+
+ """All values starting with the given string."""
+ resetToken_starts_with: String
+
+ """All values not starting with the given string."""
+ resetToken_not_starts_with: String
+
+ """All values ending with the given string."""
+ resetToken_ends_with: String
+
+ """All values not ending with the given string."""
+ resetToken_not_ends_with: String
+ resetTokenExpiry: String
+
+ """All values that are not equal to given value."""
+ resetTokenExpiry_not: String
+
+ """All values that are contained in given list."""
+ resetTokenExpiry_in: [String!]
+
+ """All values that are not contained in given list."""
+ resetTokenExpiry_not_in: [String!]
+
+ """All values less than the given value."""
+ resetTokenExpiry_lt: String
+
+ """All values less than or equal the given value."""
+ resetTokenExpiry_lte: String
+
+ """All values greater than the given value."""
+ resetTokenExpiry_gt: String
+
+ """All values greater than or equal the given value."""
+ resetTokenExpiry_gte: String
+
+ """All values containing the given string."""
+ resetTokenExpiry_contains: String
+
+ """All values not containing the given string."""
+ resetTokenExpiry_not_contains: String
+
+ """All values starting with the given string."""
+ resetTokenExpiry_starts_with: String
+
+ """All values not starting with the given string."""
+ resetTokenExpiry_not_starts_with: String
+
+ """All values ending with the given string."""
+ resetTokenExpiry_ends_with: String
+
+ """All values not ending with the given string."""
+ resetTokenExpiry_not_ends_with: String
+ cart_every: CartItemWhereInput
+ cart_some: CartItemWhereInput
+ cart_none: CartItemWhereInput
+}
+
+input UserWhereUniqueInput {
+ id: ID
+ email: String
+}
diff --git a/finished-application/backend/src/index.js b/stepped-solutions/FINISHED/backend/src/index.js
index 2a1b433..804d6d6 100644
--- a/finished-application/backend/src/index.js
+++ b/stepped-solutions/FINISHED/backend/src/index.js
@@ -1,30 +1,33 @@
-/* eslint-disable */
-require('dotenv').config({ path: 'variables.env' });
-/* eslint-enable */
+const cookieParser = require('cookie-parser');
const jwt = require('jsonwebtoken');
+
+require('dotenv').config({ path: 'variables.env' });
const createServer = require('./createServer');
const db = require('./db');
-const cookieParser = require('cookie-parser');
const server = createServer();
server.express.use(cookieParser());
+// decode the JWT so we can get the user Id on each request
server.express.use((req, res, next) => {
const { token } = req.cookies;
if (token) {
const { userId } = jwt.verify(token, process.env.APP_SECRET);
+ // put the userId onto the req for future requests to access
req.userId = userId;
}
next();
});
-// 2. Get User from their ID
+// 2. Create a middleware that populates the user on each request
+
server.express.use(async (req, res, next) => {
+ // if they aren't logged in, skip this
if (!req.userId) return next();
const user = await db.query.user(
{ where: { id: req.userId } },
- `{ id, permissions, email, name }`
+ '{ id, permissions, email, name }'
);
req.user = user;
next();
@@ -36,9 +39,8 @@ server.start(
credentials: true,
origin: process.env.FRONTEND_URL,
},
- port: process.env.PORT,
},
deets => {
- console.log(`Server is running on http://localhost:${deets.port}`);
+ console.log(`Server is now running on port http://localhost:${deets.port}`);
}
);
diff --git a/finished-application/backend/src/mail.js b/stepped-solutions/FINISHED/backend/src/mail.js
index fc4a47b..5274310 100644
--- a/finished-application/backend/src/mail.js
+++ b/stepped-solutions/FINISHED/backend/src/mail.js
@@ -1,26 +1,26 @@
const nodemailer = require('nodemailer');
const transport = nodemailer.createTransport({
- host: 'smtp.mailtrap.io',
- port: 2525,
+ host: process.env.MAIL_HOST,
+ port: process.env.MAIL_PORT,
auth: {
- user: 'c41bab08214808',
- pass: '04992d4af4bdcf',
+ user: process.env.MAIL_USER,
+ pass: process.env.MAIL_PASS,
},
});
const makeANiceEmail = text => `
<div className="email" style="
- border:1px solid black;
+ border: 1px solid black;
padding: 20px;
font-family: sans-serif;
line-height: 2;
font-size: 20px;
">
- <h2>Hello There</h2>
+ <h2>Hello There!</h2>
<p>${text}</p>
- <p>😘 Wes Bos</p>
+ <p>😘, Wes Bos</p>
</div>
`;
diff --git a/finished-application/backend/src/resolvers/Mutation.js b/stepped-solutions/FINISHED/backend/src/resolvers/Mutation.js
index 3c11245..f0ea6a8 100644
--- a/finished-application/backend/src/resolvers/Mutation.js
+++ b/stepped-solutions/FINISHED/backend/src/resolvers/Mutation.js
@@ -1,16 +1,75 @@
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
-const { hasPermission } = require('../utils');
const { randomBytes } = require('crypto');
const { promisify } = require('util');
-const mail = require('../mail');
+const { transport, makeANiceEmail } = require('../mail');
+const { hasPermission } = require('../utils');
const stripe = require('../stripe');
-const mutations = {
- // Signup Mutations
+const Mutations = {
+ async createItem(parent, args, ctx, info) {
+ if (!ctx.request.userId) {
+ throw new Error('You must be logged in to do that!');
+ }
+
+ const item = await ctx.db.mutation.createItem(
+ {
+ data: {
+ // This is how to create a relationship between the Item and the User
+ user: {
+ connect: {
+ id: ctx.request.userId,
+ },
+ },
+ ...args,
+ },
+ },
+ info
+ );
+
+ console.log(item);
+
+ return item;
+ },
+ updateItem(parent, args, ctx, info) {
+ // first take a copy of the updates
+ const updates = { ...args };
+ // remove the ID from the updates
+ delete updates.id;
+ // run the update method
+ return ctx.db.mutation.updateItem(
+ {
+ data: updates,
+ where: {
+ id: args.id,
+ },
+ },
+ info
+ );
+ },
+ async deleteItem(parent, args, ctx, info) {
+ const where = { id: args.id };
+ // 1. find the item
+ const item = await ctx.db.query.item({ where }, `{ id title user { id }}`);
+ // 2. Check if they own that item, or have the permissions
+ const ownsItem = item.user.id === ctx.request.userId;
+ const hasPermissions = ctx.request.user.permissions.some(permission =>
+ ['ADMIN', 'ITEMDELETE'].includes(permission)
+ );
+
+ if (!ownsItem && hasPermissions) {
+ throw new Error("You don't have permission to do that!");
+ }
+
+ // 3. Delete it!
+ return ctx.db.mutation.deleteItem({ where }, info);
+ },
async signup(parent, args, ctx, info) {
+ // lowercase their email
args.email = args.email.toLowerCase();
+ // hash their password
const password = await bcrypt.hash(args.password, 10);
+ // create the user in the database
const user = await ctx.db.mutation.createUser(
{
data: {
@@ -21,154 +80,88 @@ const mutations = {
},
info
);
+ // create the JWT token for them
const token = jwt.sign({ userId: user.id }, process.env.APP_SECRET);
+ // We set the jwt as a cookie on the response
ctx.response.cookie('token', token, {
- maxAge: 1000 * 60 * 60 * 24 * 365,
httpOnly: true,
+ maxAge: 1000 * 60 * 60 * 24 * 365, // 1 year cookie
});
+ // Finalllllly we return the user to the browser
return user;
},
-
- async signout(parent, args, ctx, info) {
- ctx.response.clearCookie('token');
- return { message: 'goodbye!' };
- },
-
async signin(parent, { email, password }, ctx, info) {
+ // 1. check if there is a user with that email
const user = await ctx.db.query.user({ where: { email } });
if (!user) {
- throw new Error(`No such user found for email: ${email}`);
+ throw new Error(`No such user found for email ${email}`);
}
-
+ // 2. Check if their password is correct
const valid = await bcrypt.compare(password, user.password);
if (!valid) {
- throw new Error('Invalid password');
+ throw new Error('Invalid Password!');
}
- // set the cookie
+ // 3. generate the JWT Token
const token = jwt.sign({ userId: user.id }, process.env.APP_SECRET);
+ // 4. Set the cookie with the token
ctx.response.cookie('token', token, {
- maxAge: 1000 * 60 * 60 * 24 * 365,
httpOnly: true,
+ maxAge: 1000 * 60 * 60 * 24 * 365,
});
+ // 5. Return the user
return user;
},
-
- // Create An Item
- async createItem(parent, args, ctx, info) {
- if (!ctx.request.userId) {
- throw new Error('You must be logged in to create an item');
- }
-
- const item = await ctx.db.mutation.createItem(
- {
- data: {
- user: {
- connect: {
- id: ctx.request.userId,
- },
- },
- ...args,
- },
- },
- info
- );
- return item;
- },
-
- async deleteItem(parent, args, ctx, info) {
- const where = {
- id: args.id,
- };
- // 1. find the item
- const item = await ctx.db.query.item({ where }, `{ user {id}, title, id, description }`);
- // 2. if they 1. Don't own it AND 2. aren't an admin
- if (item.user.id !== ctx.request.user.id && !ctx.request.user.permissions.includes('ADMIN')) {
- throw new Error("You aren't allowed to delete that item!");
- }
-
- // 3. remove any orderItems this item is in
-
- return ctx.db.mutation.deleteItem({ where }, info);
- },
-
- async updateItem(parent, args, ctx, info) {
- const user = ctx.request.user;
- const item = await ctx.db.query.item({ where: { id: args.id } }, `{ user { id } }`);
-
- if (item.user.id !== user.id || !hasPermission(user, ['ADMIN'])) {
- throw new Error('You are not allowed to update that item!');
- }
-
- const updates = { ...args };
- // remove the ID because you can't update that
- delete updates.id;
- return ctx.db.mutation.updateItem(
- {
- where: { id: args.id },
- data: {
- ...updates,
- },
- },
- info
- );
+ signout(parent, args, ctx, info) {
+ ctx.response.clearCookie('token');
+ return { message: 'Goodbye!' };
},
-
- // Send password request
async requestReset(parent, args, ctx, info) {
- // 1. find if there is a user with that email
+ // 1. Check if this is a real user
const user = await ctx.db.query.user({ where: { email: args.email } });
-
if (!user) {
- throw new Error(`No user with the email ${args.email}`);
+ throw new Error(`No such user found for email ${args.email}`);
}
- // 2. Set a reset token, and a reset date
- const resetToken = (await promisify(randomBytes)(20)).toString('hex');
+ // 2. Set a reset token and expiry on that user
+ const randomBytesPromiseified = promisify(randomBytes);
+ const resetToken = (await randomBytesPromiseified(20)).toString('hex');
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 },
});
-
- // 3. Send them their token via email
- const mailRes = await mail.transport.sendMail({
- from: 'wesbos@gmail.com',
+ // 3. Email them that reset token
+ const mailRes = await transport.sendMail({
+ from: 'wes@wesbos.com',
to: user.email,
- subject: 'Your password reset token',
- html: mail.makeANiceEmail(
- `Your password reset link is here! \n\n<a href="${process.env
- .FRONTEND_URL}/reset?resetToken=${resetToken}">Click Here to reset</a>`
- ),
+ subject: 'Your Password Reset Token',
+ html: makeANiceEmail(`Your Password Reset Token is here!
+ \n\n
+ <a href="${process.env
+ .FRONTEND_URL}/reset?resetToken=${resetToken}">Click Here to Reset</a>`),
});
- return res.updateUser;
+ // 4. Return the message
+ return { message: 'Thanks!' };
},
-
async resetPassword(parent, args, ctx, info) {
- // 1. Check that the passwords match
+ // 1. check if the passwords match
if (args.password !== args.confirmPassword) {
- throw new Error('Passwords do not match');
+ throw new Error("Yo Passwords don't match!");
}
-
- // 2. Check that this is a legit resetToken
- // 3. Check that it's not expired
- // Note: If we didn't need the user here, we could also use db.exists()
+ // 2. check if its a legit reset token
+ // 3. Check if its expired
const [user] = await ctx.db.query.users({
where: {
resetToken: args.resetToken,
- resetTokenExpiry_gte: Date.now() - 3600000, // within the last hour
+ resetTokenExpiry_gte: Date.now() - 3600000,
},
});
-
if (!user) {
- throw new Error('This token is either invalid or expired.');
+ throw new Error('This token is either invalid or expired!');
}
-
- // 4. Hash the password
+ // 4. Hash their new password
const password = await bcrypt.hash(args.password, 10);
-
- // 5. Update the users password
- // clean up the resetToken fields at the same time
+ // 5. Save the new password to the user and remove old resetToken fields
const updatedUser = await ctx.db.mutation.updateUser({
where: { email: user.email },
data: {
@@ -177,35 +170,63 @@ const mutations = {
resetTokenExpiry: null,
},
});
+ // 6. Generate JWT
const token = jwt.sign({ userId: updatedUser.id }, process.env.APP_SECRET);
+ // 7. Set the JWT cookie
ctx.response.cookie('token', token, {
- maxAge: 1000 * 60 * 60 * 24 * 365,
httpOnly: true,
+ maxAge: 1000 * 60 * 60 * 24 * 365,
});
-
- // 6. send back the User for the GraphQL request on the client
+ // 8. return the new user
return updatedUser;
},
- /*
- Add to cart
- */
+ async updatePermissions(parent, args, ctx, info) {
+ // 1. Check if they are logged in
+ if (!ctx.request.userId) {
+ throw new Error('You must be logged in!');
+ }
+ // 2. Query the current user
+ const currentUser = await ctx.db.query.user(
+ {
+ where: {
+ id: ctx.request.userId,
+ },
+ },
+ info
+ );
+ // 3. Check if they have permissions to do this
+ hasPermission(currentUser, ['ADMIN', 'PERMISSIONUPDATE']);
+ // 4. Update the permissions
+ return ctx.db.mutation.updateUser(
+ {
+ data: {
+ permissions: {
+ set: args.permissions,
+ },
+ },
+ where: {
+ id: args.userId,
+ },
+ },
+ info
+ );
+ },
async addToCart(parent, args, ctx, info) {
- const userId = ctx.request.userId;
-
+ // 1. Make sure they are signed in
+ const { userId } = ctx.request;
if (!userId) {
- throw new Error('You must be signed in to add to cart!');
+ throw new Error('You must be signed in soooon');
}
-
- // 1. Check if there is a CartItem for this user and item already
+ // 2. Query the users current cart
const [existingCartItem] = await ctx.db.query.cartItems({
where: {
user: { id: userId },
item: { id: args.id },
},
});
-
- // 2. If there is a cart item, increment it by 1
+ // 3. Check if that item is already in their cart and increment by 1 if it is
if (existingCartItem) {
+ console.log('This item is already in their cart');
return ctx.db.mutation.updateCartItem(
{
where: { id: existingCartItem.id },
@@ -214,15 +235,12 @@ const mutations = {
info
);
}
-
- // 3. Otherwise create a new cartItem
+ // 4. If its not, create a fresh CartItem for that user!
return ctx.db.mutation.createCartItem(
{
data: {
user: {
- connect: {
- id: userId,
- },
+ connect: { id: userId },
},
item: {
connect: { id: args.id },
@@ -232,126 +250,88 @@ const mutations = {
info
);
},
-
- // delete that cart item
async removeFromCart(parent, args, ctx, info) {
- console.log(args.id);
- // 1. Find the CartItem
+ // 1. Find the cart item
const cartItem = await ctx.db.query.cartItem(
{
- where: { id: args.id },
+ where: {
+ id: args.id,
+ },
},
- `{ id, user { id, permissions }}`
+ `{ id, user { id }}`
);
- // 2. Check they own it
+ // 1.5 Make sure we found an item
+ if (!cartItem) throw new Error('No CartItem Found!');
+ // 2. Make sure they own that cart item
if (cartItem.user.id !== ctx.request.userId) {
- throw new Error("Cheatin' huh");
+ throw new Error('Cheatin huhhhh');
}
- // 3. Delete it
+ // 3. Delete that cart item
return ctx.db.mutation.deleteCartItem(
{
- where: {
- id: args.id,
- },
+ where: { id: args.id },
},
info
);
},
-
async createOrder(parent, args, ctx, info) {
- const userId = ctx.request.userId;
+ // 1. Query the current user and make sure they are signed in
+ const { userId } = ctx.request;
+ if (!userId) throw new Error('You must be signed in to complete this order.');
const user = await ctx.db.query.user(
{ where: { id: userId } },
- '{ id, name, email, cart { id, quantity, item { title, price, id, description, image } }}'
+ `{
+ id
+ name
+ email
+ cart {
+ id
+ quantity
+ item { title price id description image largeImage }
+ }}`
);
- // 1. Recalculate the total for the price
+ // 2. recalculate the total for the price
const amount = user.cart.reduce(
(tally, cartItem) => tally + cartItem.item.price * cartItem.quantity,
0
);
- // 2. Create a stripe charge
+ console.log(`Going to charge for a total of ${amount}`);
+ // 3. Create the stripe charge (turn token into $$$)
const charge = await stripe.charges.create({
amount,
- currency: 'usd',
+ currency: 'USD',
source: args.token,
});
-
- // 3. convert the items they want to OrderItems
+ // 4. Convert the CartItems to OrderItems
const orderItems = user.cart.map(cartItem => {
- console.log(cartItem);
const orderItem = {
- quantity: cartItem.quantity,
- // copy all the item details so it's there forever
...cartItem.item,
- // item: {
- // // relationship to the Item incase we need it
- // connect: { id: cartItem.item.id },
- // },
- user: { connect: { id: user.id } },
+ quantity: cartItem.quantity,
+ user: { connect: { id: userId } },
};
- // scrub the ID from it because the orderItem will have it's own ID
delete orderItem.id;
return orderItem;
});
- // 4. Create the Order
+ // 5. create the Order
const order = await ctx.db.mutation.createOrder({
data: {
total: charge.amount,
charge: charge.id,
- items: {
- create: orderItems,
- },
- user: {
- connect: {
- id: user.id,
- },
- },
+ items: { create: orderItems },
+ user: { connect: { id: userId } },
},
});
-
- // 5. Clean up, clear the users cart and send back { user, order }
- // Delete the users current cart items
+ // 6. Clean up - clear the users cart, delete cartItems
const cartItemIds = user.cart.map(cartItem => cartItem.id);
await ctx.db.mutation.deleteManyCartItems({
where: {
id_in: cartItemIds,
},
});
-
- // 6. Send the order back to the client
+ // 7. Return the Order to the client
return order;
},
-
- async updateUser(parent, args, ctx, info) {
- const userId = ctx.request.userId;
- const updatedUser = await ctx.db.mutation.updateUser(
- {
- data: args,
- where: { id: userId },
- },
- info
- );
- return updatedUser;
- },
-
- async updatePermissions(parent, args, ctx, info) {
- const userId = ctx.request.userId;
- const currentUser = await ctx.db.query.user({ where: { id: userId } }, info);
- if (!currentUser) throw new Error('You Must be logged in to updat permissions!');
- hasPermission(currentUser, ['ADMIN', 'PERMISSIONUPDATE']);
- return ctx.db.mutation.updateUser(
- {
- data: {
- permissions: {
- set: args.permissions,
- },
- },
- where: { id: args.userId },
- },
- info
- );
- },
};
-module.exports = mutations;
+module.exports = Mutations;
diff --git a/stepped-solutions/FINISHED/backend/src/resolvers/Query.js b/stepped-solutions/FINISHED/backend/src/resolvers/Query.js
new file mode 100644
index 0000000..22a6414
--- /dev/null
+++ b/stepped-solutions/FINISHED/backend/src/resolvers/Query.js
@@ -0,0 +1,69 @@
+const { forwardTo } = require('prisma-binding');
+const { hasPermission } = require('../utils');
+
+const Query = {
+ items: forwardTo('db'),
+ item: forwardTo('db'),
+ itemsConnection: forwardTo('db'),
+ me(parent, args, ctx, info) {
+ // check if there is a current user ID
+ if (!ctx.request.userId) {
+ return null;
+ }
+ return ctx.db.query.user(
+ {
+ where: { id: ctx.request.userId },
+ },
+ info
+ );
+ },
+ async users(parent, args, ctx, info) {
+ // 1. Check if they are logged in
+ if (!ctx.request.userId) {
+ throw new Error('You must be logged in!');
+ }
+ console.log(ctx.request.userId);
+ // 2. Check if the user has the permissions to query all the users
+ hasPermission(ctx.request.user, ['ADMIN', 'PERMISSIONUPDATE']);
+
+ // 2. if they do, query all the users!
+ return ctx.db.query.users({}, info);
+ },
+ async order(parent, args, ctx, info) {
+ // 1. Make sure they are logged in
+ if (!ctx.request.userId) {
+ throw new Error('You arent logged in!');
+ }
+ // 2. Query the current order
+ const order = await ctx.db.query.order(
+ {
+ where: { id: args.id },
+ },
+ info
+ );
+ // 3. Check if the have the permissions to see this order
+ const ownsOrder = order.user.id === ctx.request.userId;
+ const hasPermissionToSeeOrder = ctx.request.user.permissions.includes('ADMIN');
+ if (!ownsOrder || !hasPermission) {
+ throw new Error('You cant see this buddd');
+ }
+ // 4. Return the order
+ return order;
+ },
+ async orders(parent, args, ctx, info) {
+ const { userId } = ctx.request;
+ if (!userId) {
+ throw new Error('you must be signed in!');
+ }
+ return ctx.db.query.orders(
+ {
+ where: {
+ user: { id: userId },
+ },
+ },
+ info
+ );
+ },
+};
+
+module.exports = Query;
diff --git a/finished-application/backend/src/schema.graphql b/stepped-solutions/FINISHED/backend/src/schema.graphql
index 9c4a200..8a8eeeb 100644
--- a/finished-application/backend/src/schema.graphql
+++ b/stepped-solutions/FINISHED/backend/src/schema.graphql
@@ -1,40 +1,39 @@
-# The Below line looks like a comment, but it's not!
# import * from './generated/prisma.graphql'
-type Query {
- me: User
- users: [User]!
- order(id: ID!): Order!
- orders(where: OrderWhereInput, orderBy: OrderOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Order]!
- items(where: ItemWhereInput, orderBy: ItemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Item]!
- itemsConnection(where: ItemWhereInput, orderBy: ItemOrderByInput, first: Int, last: Int, skip: Int): ItemConnection!
+type SuccessMessage {
+ message: String
}
type Mutation {
+ createItem(title: String, description: String, price: Int, image: String, largeImage: String): Item!
+ updateItem(id: ID!, title: String, description: String, price: Int): Item!
+ deleteItem(id: ID!): Item
signup(email: String!, password: String!, name: String!): User!
signin(email: String!, password: String!): User!
- requestReset(email: String!): User
+ signout: SuccessMessage
+ requestReset(email: String!): SuccessMessage
resetPassword(resetToken: String!, password: String!, confirmPassword: String!): User!
- createItem(title: String, description: String, price: Int, image: String, largeImage: String): Item!
- deleteItem(id: ID!): Item!
- updateItem(id: ID!, title: String, description: String, price: Int): Item!
+ updatePermissions(permissions: [Permission], userId: ID!): User
addToCart(id: ID!): CartItem
removeFromCart(id: ID!): CartItem
createOrder(token: String!): Order!
- updateUser(name: String): User
- signout: SuccessMessage
- updatePermissions(permissions: [Permission], userId: ID!): User
}
-type SuccessMessage {
- message: String
+type Query {
+ items(where: ItemWhereInput, orderBy: ItemOrderByInput, skip: Int, first: Int): [Item]!
+ item(where: ItemWhereUniqueInput!): Item
+ itemsConnection(where: ItemWhereInput): ItemConnection!
+ me: User
+ users: [User]!
+ order(id: ID!): Order
+ orders(orderBy: OrderOrderByInput): [Order]!
}
-type User {
+type User{
id: ID!
- email: String!
name: String!
- orders: [Order!]!
+ email: String!
+ permissions: [Permission!]!
cart: [CartItem!]!
- permissions: [Permission]!
+ orders: [OrderItem]
}
diff --git a/finished-application/backend/src/stripe.js b/stepped-solutions/FINISHED/backend/src/stripe.js
index c6be8ca..c6be8ca 100644
--- a/finished-application/backend/src/stripe.js
+++ b/stepped-solutions/FINISHED/backend/src/stripe.js
diff --git a/finished-application/backend/src/utils.js b/stepped-solutions/FINISHED/backend/src/utils.js
index faf028b..faf028b 100644
--- a/finished-application/backend/src/utils.js
+++ b/stepped-solutions/FINISHED/backend/src/utils.js
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/AddToCart.test.js b/stepped-solutions/FINISHED/frontend/__tests__/AddToCart.test.js
new file mode 100644
index 0000000..cfc2e3e
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/AddToCart.test.js
@@ -0,0 +1,97 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import toJSON from 'enzyme-to-json';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { ApolloConsumer } from 'react-apollo';
+import AddToCart, { ADD_TO_CART_MUTATION } from '../components/AddToCart';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
+
+const mocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [],
+ },
+ },
+ },
+ },
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [fakeCartItem()],
+ },
+ },
+ },
+ },
+ {
+ request: { query: ADD_TO_CART_MUTATION, variables: { id: 'abc123' } },
+ result: {
+ data: {
+ addToCart: {
+ ...fakeCartItem(),
+ quantity: 1,
+ },
+ },
+ },
+ },
+];
+
+describe('<AddToCart/>', () => {
+ it('renders and matches the snap shot', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <AddToCart id="abc123" />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ expect(toJSON(wrapper.find('button'))).toMatchSnapshot();
+ });
+
+ it('adds an item to cart when clicked', async () => {
+ let apolloClient;
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <ApolloConsumer>
+ {client => {
+ apolloClient = client;
+ return <AddToCart id="abc123" />;
+ }}
+ </ApolloConsumer>
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const { data: { me } } = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ // console.log(me);
+ expect(me.cart).toHaveLength(0);
+ // add an item to the cart
+ wrapper.find('button').simulate('click');
+ await wait();
+ // check if the item is in the cart
+ const { data: { me: me2 } } = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ expect(me2.cart).toHaveLength(1);
+ expect(me2.cart[0].id).toBe('omg123');
+ expect(me2.cart[0].quantity).toBe(3);
+ });
+
+ it('changes from add to adding when clicked', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <AddToCart id="abc123" />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ expect(wrapper.text()).toContain('Add To Cart');
+ wrapper.find('button').simulate('click');
+ expect(wrapper.text()).toContain('Adding To Cart');
+ });
+});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/Cart.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Cart.test.js
new file mode 100644
index 0000000..b8afc88
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Cart.test.js
@@ -0,0 +1,39 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import toJSON from 'enzyme-to-json';
+import { MockedProvider } from 'react-apollo/test-utils';
+import Cart, { LOCAL_STATE_QUERY } from '../components/Cart';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
+
+const mocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [fakeCartItem()],
+ },
+ },
+ },
+ },
+ {
+ request: { query: LOCAL_STATE_QUERY },
+ result: { data: { cartOpen: true } },
+ },
+];
+
+describe('<Cart/>', () => {
+ it('renders and matches snappy', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <Cart />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ expect(toJSON(wrapper.find('header'))).toMatchSnapshot();
+ expect(wrapper.find('CartItem')).toHaveLength(1);
+ });
+});
diff --git a/finished-application/frontend/__tests__/CartCount.test.js b/stepped-solutions/FINISHED/frontend/__tests__/CartCount.test.js
index dcb9ca8..8ace3da 100644
--- a/finished-application/frontend/__tests__/CartCount.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/CartCount.test.js
@@ -1,19 +1,19 @@
-import React from 'react';
import { shallow, mount } from 'enzyme';
import toJSON from 'enzyme-to-json';
import CartCount from '../components/CartCount';
-describe('<CartCount></CartCount>', () => {
- it('renders okay', () => {
+describe('<CartCount/>', () => {
+ it('renders', () => {
shallow(<CartCount count={10} />);
});
- it('matches snapshot', () => {
- const wrapper = shallow(<CartCount count={10} />);
+ it('matches the snapshot', () => {
+ const wrapper = shallow(<CartCount count={11} />);
expect(toJSON(wrapper)).toMatchSnapshot();
});
+
it('updates via props', () => {
- const wrapper = mount(<CartCount count={50} />);
+ const wrapper = shallow(<CartCount count={50} />);
expect(toJSON(wrapper)).toMatchSnapshot();
wrapper.setProps({ count: 10 });
expect(toJSON(wrapper)).toMatchSnapshot();
diff --git a/finished-application/frontend/__tests__/CreateItem.test.js b/stepped-solutions/FINISHED/frontend/__tests__/CreateItem.test.js
index 56c3f10..6e88d94 100644
--- a/finished-application/frontend/__tests__/CreateItem.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/CreateItem.test.js
@@ -1,15 +1,14 @@
-import React from 'react';
import { mount } from 'enzyme';
+import wait from 'waait';
import toJSON from 'enzyme-to-json';
import Router from 'next/router';
import { MockedProvider } from 'react-apollo/test-utils';
import CreateItem, { CREATE_ITEM_MUTATION } from '../components/CreateItem';
-import wait from 'waait';
import { fakeItem } from '../lib/testUtils';
const dogImage = 'https://dog.com/dog.jpg';
-// Mock fetch to resolve data
+// mock the global fetch API
global.fetch = jest.fn().mockResolvedValue({
json: () => ({
secure_url: dogImage,
@@ -17,14 +16,14 @@ global.fetch = jest.fn().mockResolvedValue({
}),
});
-describe('<Createitem/>', () => {
- it('renders and matches snapshot', () => {
+describe('<CreateItem/>', () => {
+ it('renders and matches snapshot', async () => {
const wrapper = mount(
<MockedProvider>
<CreateItem />
</MockedProvider>
);
- const form = wrapper.find('form[data-test]');
+ const form = wrapper.find('form[data-test="form"]');
expect(toJSON(form)).toMatchSnapshot();
});
@@ -34,14 +33,14 @@ describe('<Createitem/>', () => {
<CreateItem />
</MockedProvider>
);
- const component = wrapper.find('CreateItem').instance();
-
const input = wrapper.find('input[type="file"]');
- // internally this does some setState() calls
- input.simulate('change', { currentTarget: { files: ['fakedog.jpg'] } });
- await wait(0);
+ input.simulate('change', { target: { files: ['fakedog.jpg'] } });
+ await wait();
+ const component = wrapper.find('CreateItem').instance();
expect(component.state.image).toEqual(dogImage);
expect(component.state.largeImage).toEqual(dogImage);
+ expect(global.fetch).toHaveBeenCalled();
+ global.fetch.mockReset();
});
it('handles state updating', async () => {
@@ -50,32 +49,21 @@ describe('<Createitem/>', () => {
<CreateItem />
</MockedProvider>
);
-
wrapper.find('#title').simulate('change', { target: { value: 'Testing', name: 'title' } });
- wrapper.find('#price').simulate('change', {
- target: {
- value: 50000,
- name: 'price',
- type: 'number',
- },
- });
- wrapper.find('#description').simulate('change', {
- target: {
- value: 'This is a really nice item',
- name: 'description',
- },
- });
- const component = wrapper.find('CreateItem').instance();
- expect(component.state).toMatchObject({
+ wrapper
+ .find('#price')
+ .simulate('change', { target: { value: 50000, name: 'price', type: 'number' } });
+ wrapper
+ .find('#description')
+ .simulate('change', { target: { value: 'This is a really nice item', name: 'description' } });
+
+ expect(wrapper.find('CreateItem').instance().state).toMatchObject({
title: 'Testing',
- description: 'This is a really nice item',
- image: '',
- largeImage: '',
price: 50000,
+ description: 'This is a really nice item',
});
});
-
- it('creates an item when form is submitted', async () => {
+ it('creates an item when the form is submitted', async () => {
const item = fakeItem();
const mocks = [
{
@@ -92,8 +80,9 @@ describe('<Createitem/>', () => {
result: {
data: {
createItem: {
- ...fakeItem(),
- __typeName: 'Item',
+ ...fakeItem,
+ id: 'abc123',
+ __typename: 'Item',
},
},
},
@@ -105,28 +94,19 @@ describe('<Createitem/>', () => {
<CreateItem />
</MockedProvider>
);
-
+ // simulate someone filling out the form
wrapper.find('#title').simulate('change', { target: { value: item.title, name: 'title' } });
- wrapper.find('#price').simulate('change', {
- target: {
- value: item.price,
- name: 'price',
- type: 'number',
- },
- });
- wrapper.find('#description').simulate('change', {
- target: {
- value: item.description,
- name: 'description',
- },
- });
-
+ wrapper
+ .find('#price')
+ .simulate('change', { target: { value: item.price, name: 'price', type: 'number' } });
+ wrapper
+ .find('#description')
+ .simulate('change', { target: { value: item.description, name: 'description' } });
+ // mock the router
Router.router = { push: jest.fn() };
- // it submits and matches the mocks
wrapper.find('form').simulate('submit');
- // it routes to the item page
await wait(50);
expect(Router.router.push).toHaveBeenCalled();
- expect(Router.router.push).toHaveBeenCalledWith({ pathname: '/item', query: { id: '123' } });
+ expect(Router.router.push).toHaveBeenCalledWith({ pathname: '/item', query: { id: 'abc123' } });
});
});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/Item.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Item.test.js
new file mode 100644
index 0000000..692b913
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Item.test.js
@@ -0,0 +1,39 @@
+import ItemComponent from '../components/Item';
+import { shallow, mount } from 'enzyme';
+import toJSON from 'enzyme-to-json';
+
+const fakeItem = {
+ id: 'ABC123',
+ title: 'A Cool Item',
+ price: 4000,
+ description: 'This item is really cool!',
+ image: 'dog.jpg',
+ largeImage: 'largedog.jpg',
+};
+
+describe('<Item/>', () => {
+ it('renders and matches the snapshot', () => {
+ const wrapper = shallow(<ItemComponent item={fakeItem} />);
+ expect(toJSON(wrapper)).toMatchSnapshot();
+ });
+ // it('renders the image properly', () => {
+ // const wrapper = shallow(<ItemComponent item={fakeItem} />);
+ // const img = wrapper.find('img');
+ // expect(img.props().src).toBe(fakeItem.image);
+ // expect(img.props().alt).toBe(fakeItem.title);
+ // });
+ // it('renders the pricetag and title', () => {
+ // const wrapper = shallow(<ItemComponent item={fakeItem} />);
+ // const PriceTag = wrapper.find('PriceTag');
+ // expect(PriceTag.children().text()).toBe('$50');
+ // expect(wrapper.find('Title a').text()).toBe(fakeItem.title);
+ // });
+ // it('renders out the buttons properly', () => {
+ // const wrapper = shallow(<ItemComponent item={fakeItem} />);
+ // const buttonList = wrapper.find('.buttonList');
+ // expect(buttonList.children()).toHaveLength(3);
+ // expect(buttonList.find('Link')).toHaveLength(1);
+ // expect(buttonList.find('AddToCart').exists()).toBe(true);
+ // expect(buttonList.find('DeleteItem').exists()).toBe(true);
+ // });
+});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/Nav.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Nav.test.js
new file mode 100644
index 0000000..d30cb39
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Nav.test.js
@@ -0,0 +1,76 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import toJSON from 'enzyme-to-json';
+import Nav from '../components/Nav';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
+
+const notSignedInMocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: { data: { me: null } },
+ },
+];
+
+const signedInMocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: { data: { me: fakeUser() } },
+ },
+];
+
+const signedInMocksWithCartItems = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [fakeCartItem(), fakeCartItem(), fakeCartItem()],
+ },
+ },
+ },
+ },
+];
+
+describe('<Nav/>', () => {
+ it('renders a minimal nav when signed out', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={notSignedInMocks}>
+ <Nav />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ // console.log(wrapper.debug());
+ const nav = wrapper.find('ul[data-test="nav"]');
+ expect(toJSON(nav)).toMatchSnapshot();
+ });
+
+ it('renders full nav when signed in', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={signedInMocks}>
+ <Nav />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const nav = wrapper.find('ul[data-test="nav"]');
+ expect(nav.children().length).toBe(6);
+ expect(nav.text()).toContain('Sign Out');
+ });
+
+ it('renders the amount of items in the cart', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={signedInMocksWithCartItems}>
+ <Nav />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const nav = wrapper.find('[data-test="nav"]');
+ const count = nav.find('div.count');
+ expect(toJSON(count)).toMatchSnapshot();
+ });
+});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/Order.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Order.test.js
new file mode 100644
index 0000000..71accfa
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Order.test.js
@@ -0,0 +1,27 @@
+import { mount } from 'enzyme';
+import toJSON from 'enzyme-to-json';
+import wait from 'waait';
+import { MockedProvider } from 'react-apollo/test-utils';
+import Order, { SINGLE_ORDER_QUERY } from '../components/Order';
+import { fakeOrder } from '../lib/testUtils';
+
+const mocks = [
+ {
+ request: { query: SINGLE_ORDER_QUERY, variables: { id: 'ord123' } },
+ result: { data: { order: fakeOrder() } },
+ },
+];
+
+describe('<Order/>', () => {
+ it('renders the order', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <Order id="ord123" />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const order = wrapper.find('div[data-test="order"]');
+ expect(toJSON(order)).toMatchSnapshot();
+ });
+});
diff --git a/finished-application/frontend/__tests__/Pagination.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Pagination.test.js
index 29a57f9..7117db8 100644
--- a/finished-application/frontend/__tests__/Pagination.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Pagination.test.js
@@ -1,20 +1,19 @@
-import React from 'react';
-import { shallow, mount } from 'enzyme';
+import { mount } from 'enzyme';
+import wait from 'waait';
import toJSON from 'enzyme-to-json';
+import Router from 'next/router';
import Pagination, { PAGINATION_QUERY } from '../components/Pagination';
import { MockedProvider } from 'react-apollo/test-utils';
-import wait from 'waait';
-import { fakeItem } from '../lib/testUtils';
-
-import Router from 'next/router';
-// mock the router because there isn't really a router instance
-Router.router = { push() {}, prefetch() {} };
+Router.router = {
+ push() {},
+ prefetch() {},
+};
function makeMocksFor(length) {
return [
{
- request: { query: PAGINATION_QUERY, variables: { skip: 0, first: 4 } },
+ request: { query: PAGINATION_QUERY },
result: {
data: {
itemsConnection: {
@@ -31,15 +30,14 @@ function makeMocksFor(length) {
}
describe('<Pagination/>', () => {
- it('displays loading message', async () => {
+ it('displays a loading message', () => {
const wrapper = mount(
<MockedProvider mocks={makeMocksFor(1)}>
<Pagination page={1} />
</MockedProvider>
);
- await wait();
- wrapper.update();
- expect(toJSON(wrapper.find('div[data-test="pagination"]'))).toMatchSnapshot();
+ const pagination = wrapper.find('[data-test="pagination"]');
+ expect(wrapper.text()).toContain('Loading...');
});
it('renders pagination for 18 items', async () => {
@@ -51,6 +49,8 @@ describe('<Pagination/>', () => {
await wait();
wrapper.update();
expect(wrapper.find('.totalPages').text()).toEqual('5');
+ const pagination = wrapper.find('div[data-test="pagination"]');
+ expect(toJSON(pagination)).toMatchSnapshot();
});
it('disables prev button on first page', async () => {
@@ -61,11 +61,9 @@ describe('<Pagination/>', () => {
);
await wait();
wrapper.update();
- // first page
expect(wrapper.find('a.prev').prop('aria-disabled')).toEqual(true);
expect(wrapper.find('a.next').prop('aria-disabled')).toEqual(false);
});
-
it('disables next button on last page', async () => {
const wrapper = mount(
<MockedProvider mocks={makeMocksFor(18)}>
@@ -74,20 +72,17 @@ describe('<Pagination/>', () => {
);
await wait();
wrapper.update();
- // first page
expect(wrapper.find('a.prev').prop('aria-disabled')).toEqual(false);
expect(wrapper.find('a.next').prop('aria-disabled')).toEqual(true);
});
-
it('enables all buttons on a middle page', async () => {
const wrapper = mount(
<MockedProvider mocks={makeMocksFor(18)}>
- <Pagination page={2} />
+ <Pagination page={3} />
</MockedProvider>
);
await wait();
wrapper.update();
- // first page
expect(wrapper.find('a.prev').prop('aria-disabled')).toEqual(false);
expect(wrapper.find('a.next').prop('aria-disabled')).toEqual(false);
});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/PleaseSignIn.test.js b/stepped-solutions/FINISHED/frontend/__tests__/PleaseSignIn.test.js
new file mode 100644
index 0000000..7d476b4
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/PleaseSignIn.test.js
@@ -0,0 +1,51 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import PleaseSignIn from '../components/PleaseSignIn';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { fakeUser } from '../lib/testUtils';
+
+const notSignedInMocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: { data: { me: null } },
+ },
+];
+
+const signedInMocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: { data: { me: fakeUser() } },
+ },
+];
+
+describe('<PleaseSignIn/>', () => {
+ it('renders the sign in dialog to logged out users', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={notSignedInMocks}>
+ <PleaseSignIn />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ expect(wrapper.text()).toContain('Please Sign In before Continuing');
+ const SignIn = wrapper.find('Signin');
+ expect(SignIn.exists()).toBe(true);
+ });
+
+ it('renders the child component when the user is signed in', async () => {
+ const Hey = () => <p>Hey!</p>;
+ const wrapper = mount(
+ <MockedProvider mocks={signedInMocks}>
+ <PleaseSignIn>
+ <Hey />
+ </PleaseSignIn>
+ </MockedProvider>
+ );
+
+ await wait();
+ wrapper.update();
+ // expect(wrapper.find('Hey').exists()).toBe(true);
+ expect(wrapper.contains(<Hey />)).toBe(true);
+ });
+});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/RemoveFromCart.test.js b/stepped-solutions/FINISHED/frontend/__tests__/RemoveFromCart.test.js
new file mode 100644
index 0000000..faacc91
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/RemoveFromCart.test.js
@@ -0,0 +1,67 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import toJSON from 'enzyme-to-json';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { ApolloConsumer } from 'react-apollo';
+import RemoveFromCart, { REMOVE_FROM_CART_MUTATION } from '../components/RemoveFromCart';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
+
+global.alert = console.log;
+
+const mocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [fakeCartItem({ id: 'abc123' })],
+ },
+ },
+ },
+ },
+ {
+ request: { query: REMOVE_FROM_CART_MUTATION, variables: { id: 'abc123' } },
+ result: {
+ data: {
+ removeFromCart: {
+ __typename: 'CartItem',
+ id: 'abc123',
+ },
+ },
+ },
+ },
+];
+
+describe('<RemoveFromCart/>', () => {
+ it('renders and matches snapshot', async () => {
+ const wrapper = mount(
+ <MockedProvider>
+ <RemoveFromCart id="abc123" />
+ </MockedProvider>
+ );
+ expect(toJSON(wrapper.find('button'))).toMatchSnapshot();
+ });
+
+ it('removes the item from cart', async () => {
+ let apolloClient;
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <ApolloConsumer>
+ {client => {
+ apolloClient = client;
+ return <RemoveFromCart id="abc123" />;
+ }}
+ </ApolloConsumer>
+ </MockedProvider>
+ );
+ const res = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ expect(res.data.me.cart).toHaveLength(1);
+ expect(res.data.me.cart[0].item.price).toBe(5000);
+ wrapper.find('button').simulate('click');
+ await wait();
+ const res2 = await apolloClient.query({ query: CURRENT_USER_QUERY });
+ expect(res2.data.me.cart).toHaveLength(0);
+ });
+});
diff --git a/finished-application/frontend/__tests__/ResetRequest.test.js b/stepped-solutions/FINISHED/frontend/__tests__/RequestReset.test.js
index 22a9508..345b365 100644
--- a/finished-application/frontend/__tests__/ResetRequest.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/RequestReset.test.js
@@ -1,54 +1,46 @@
import { mount } from 'enzyme';
+import wait from 'waait';
import toJSON from 'enzyme-to-json';
import { MockedProvider } from 'react-apollo/test-utils';
-import wait from 'waait';
-import ResetRequest, { REQUEST_RESET_MUTATION } from '../components/ResetRequest';
+import RequestReset, { REQUEST_RESET_MUTATION } from '../components/RequestReset';
const mocks = [
{
request: {
query: REQUEST_RESET_MUTATION,
- variables: {
- email: 'wesbos@gmail.com',
- },
+ variables: { email: 'wesbos@gmail.com' },
},
result: {
- data: {
- requestReset: { id: 'abc123', __typename: 'User' },
- },
+ data: { requestReset: { message: 'success', __typename: 'Message' } },
},
},
];
-describe('<ResetRequest/>', () => {
+describe('<RequestReset/>', () => {
it('renders and matches snapshot', async () => {
const wrapper = mount(
<MockedProvider>
- <ResetRequest />
+ <RequestReset />
</MockedProvider>
);
- const form = wrapper.find("form[data-test='ResetRequest']");
+ const form = wrapper.find('form[data-test="form"]');
expect(toJSON(form)).toMatchSnapshot();
});
it('calls the mutation', async () => {
const wrapper = mount(
<MockedProvider mocks={mocks}>
- <ResetRequest />
+ <RequestReset />
</MockedProvider>
);
-
- wrapper.find('input').simulate('change', {
- target: { value: 'wesbos@gmail.com' },
- });
-
+ // simulate typing an email
+ wrapper
+ .find('input')
+ .simulate('change', { target: { name: 'email', value: 'wesbos@gmail.com' } });
// submit the form
- const form = wrapper.find('form');
- console.log(form);
- form.simulate('submit');
-
+ wrapper.find('form').simulate('submit');
await wait();
wrapper.update();
- expect(wrapper.find('p').text()).toContain('Success! Check Your Email!');
+ expect(wrapper.find('p').text()).toContain('Success! Check your email for a reset link!');
});
});
diff --git a/finished-application/frontend/__tests__/Signup.test.js b/stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js
index 2a668a6..e18bdee 100644
--- a/finished-application/frontend/__tests__/Signup.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/Signup.test.js
@@ -1,29 +1,27 @@
-import React from 'react';
import { mount } from 'enzyme';
-import toJSON from 'enzyme-to-json';
import wait from 'waait';
-import { ApolloConsumer } from 'react-apollo';
+import toJSON from 'enzyme-to-json';
import { MockedProvider } from 'react-apollo/test-utils';
+import { ApolloConsumer } from 'react-apollo';
import Signup, { SIGNUP_MUTATION } from '../components/Signup';
-import { fakeUser } from '../lib/testUtils';
import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser } from '../lib/testUtils';
function type(wrapper, name, value) {
wrapper.find(`input[name="${name}"]`).simulate('change', {
- target: {
- name,
- value,
- },
+ target: { name, value },
});
}
+
const me = fakeUser();
const mocks = [
+ // signup mock mutation
{
request: {
query: SIGNUP_MUTATION,
variables: {
- email: me.email,
name: me.name,
+ email: me.email,
password: 'wes',
},
},
@@ -38,22 +36,15 @@ const mocks = [
},
},
},
+ // current user query mock
{
request: { query: CURRENT_USER_QUERY },
- result: {
- data: {
- me: {
- __typename: 'User',
- ...me,
- cart: [],
- },
- },
- },
+ result: { data: { me } },
},
];
describe('<Signup/>', () => {
- it('renders and matches snapshot', () => {
+ it('renders and matches snapshot', async () => {
const wrapper = mount(
<MockedProvider>
<Signup />
@@ -62,7 +53,7 @@ describe('<Signup/>', () => {
expect(toJSON(wrapper.find('form'))).toMatchSnapshot();
});
- it('calls mutation with correct data', async () => {
+ it('calls the mutation properly', async () => {
let apolloClient;
const wrapper = mount(
<MockedProvider mocks={mocks}>
@@ -74,17 +65,15 @@ describe('<Signup/>', () => {
</ApolloConsumer>
</MockedProvider>
);
-
await wait();
wrapper.update();
-
type(wrapper, 'name', me.name);
type(wrapper, 'email', me.email);
type(wrapper, 'password', 'wes');
-
wrapper.update();
wrapper.find('form').simulate('submit');
-
+ await wait();
+ // query the user out of the apollo client
const user = await apolloClient.query({ query: CURRENT_USER_QUERY });
expect(user.data.me).toMatchObject(me);
});
diff --git a/finished-application/frontend/__tests__/SingleItem.test.js b/stepped-solutions/FINISHED/frontend/__tests__/SingleItem.test.js
index 4e9f2b2..2963bde 100644
--- a/finished-application/frontend/__tests__/SingleItem.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/SingleItem.test.js
@@ -1,54 +1,45 @@
-import React from 'react';
import { mount } from 'enzyme';
-import wait from 'waait';
import toJSON from 'enzyme-to-json';
+import wait from 'waait';
import SingleItem, { SINGLE_ITEM_QUERY } from '../components/SingleItem';
import { MockedProvider } from 'react-apollo/test-utils';
-import { fakeItem, fakeUser } from '../lib/testUtils';
-import { CURRENT_USER_QUERY } from '../components/User';
-
-const data = {
- items: [fakeItem()],
-};
+import { fakeItem } from '../lib/testUtils';
describe('<SingleItem/>', () => {
- it('Renders with Proper Data', async () => {
+ it('renders with proper data', async () => {
const mocks = [
{
+ // when someone makes a request with this query and variable combo
request: { query: SINGLE_ITEM_QUERY, variables: { id: '123' } },
- result: { data },
+ // return this fake data (mocked data)
+ result: {
+ data: {
+ item: fakeItem(),
+ },
+ },
},
- // {
- // request: { query: CURRENT_USER_QUERY },
- // result: { data: { me: fakeUser() } },
- // },
];
const wrapper = mount(
<MockedProvider mocks={mocks}>
<SingleItem id="123" />
</MockedProvider>
);
- // Check for loading state
expect(wrapper.text()).toContain('Loading...');
-
- // wait for response and refresh
- await wait(55);
+ await wait();
wrapper.update();
- // Grab the piece we want
+ // console.log(wrapper.debug());
expect(toJSON(wrapper.find('h2'))).toMatchSnapshot();
expect(toJSON(wrapper.find('img'))).toMatchSnapshot();
expect(toJSON(wrapper.find('p'))).toMatchSnapshot();
});
- it('Errors with a not found Item', async () => {
+ it('Errors with a not found item', async () => {
const mocks = [
{
request: { query: SINGLE_ITEM_QUERY, variables: { id: '123' } },
- delay: 50,
- // we can return data and an error
- result: { data, errors: [{ message: 'Item not found!' }] },
- // or just an error!
- // error: new Error('offline!'),
+ result: {
+ errors: [{ message: 'Items Not Found!' }],
+ },
},
];
const wrapper = mount(
@@ -56,12 +47,11 @@ describe('<SingleItem/>', () => {
<SingleItem id="123" />
</MockedProvider>
);
-
- // wait for response
- await wait(55);
+ await wait();
wrapper.update();
-
- const Item = wrapper.find('[data-test="graphql-error"]');
- expect(toJSON(Item)).toMatchSnapshot();
+ console.log(wrapper.debug());
+ const item = wrapper.find('[data-test="graphql-error"]');
+ expect(item.text()).toContain('Items Not Found!');
+ expect(toJSON(item)).toMatchSnapshot();
});
});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/TakeMyMoney.test.js b/stepped-solutions/FINISHED/frontend/__tests__/TakeMyMoney.test.js
new file mode 100644
index 0000000..3d68502
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/TakeMyMoney.test.js
@@ -0,0 +1,98 @@
+import { mount } from 'enzyme';
+import wait from 'waait';
+import toJSON from 'enzyme-to-json';
+import NProgress from 'nprogress';
+import Router from 'next/router';
+import { MockedProvider } from 'react-apollo/test-utils';
+import { ApolloConsumer } from 'react-apollo';
+import TakeMyMoney, { CREATE_ORDER_MUTATION } from '../components/TakeMyMoney';
+import { CURRENT_USER_QUERY } from '../components/User';
+import { fakeUser, fakeCartItem } from '../lib/testUtils';
+
+Router.router = { push() {} };
+
+const mocks = [
+ {
+ request: { query: CURRENT_USER_QUERY },
+ result: {
+ data: {
+ me: {
+ ...fakeUser(),
+ cart: [fakeCartItem()],
+ },
+ },
+ },
+ },
+];
+
+describe('<TakeMyMoney/>', () => {
+ it('renders and matches snapshot', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <TakeMyMoney />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const checkoutButton = wrapper.find('ReactStripeCheckout');
+ expect(toJSON(checkoutButton)).toMatchSnapshot();
+ });
+ it('creates an order ontoken', async () => {
+ const createOrderMock = jest.fn().mockResolvedValue({
+ data: { createOrder: { id: 'xyz789' } },
+ });
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <TakeMyMoney />
+ </MockedProvider>
+ );
+ const component = wrapper.find('TakeMyMoney').instance();
+ // manully call that onToken method
+ component.onToken({ id: 'abc123' }, createOrderMock);
+ expect(createOrderMock).toHaveBeenCalled();
+ expect(createOrderMock).toHaveBeenCalledWith({ variables: { token: 'abc123' } });
+ });
+
+ it('turns the progress bar on', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <TakeMyMoney />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ NProgress.start = jest.fn();
+ const createOrderMock = jest.fn().mockResolvedValue({
+ data: { createOrder: { id: 'xyz789' } },
+ });
+ const component = wrapper.find('TakeMyMoney').instance();
+ // manully call that onToken method
+ component.onToken({ id: 'abc123' }, createOrderMock);
+ expect(NProgress.start).toHaveBeenCalled();
+ });
+
+ it('routes to the order page when completed', async () => {
+ const wrapper = mount(
+ <MockedProvider mocks={mocks}>
+ <TakeMyMoney />
+ </MockedProvider>
+ );
+ await wait();
+ wrapper.update();
+ const createOrderMock = jest.fn().mockResolvedValue({
+ data: { createOrder: { id: 'xyz789' } },
+ });
+ const component = wrapper.find('TakeMyMoney').instance();
+ Router.router.push = jest.fn();
+ // manully call that onToken method
+ component.onToken({ id: 'abc123' }, createOrderMock);
+ await wait();
+ expect(Router.router.push).toHaveBeenCalled();
+ expect(Router.router.push).toHaveBeenCalledWith({
+ pathname: '/order',
+ query: {
+ id: 'xyz789',
+ },
+ });
+ });
+});
diff --git a/finished-application/frontend/__tests__/__snapshots__/AddToCart.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/AddToCart.test.js.snap
index e3f8229..2f489d4 100644
--- a/finished-application/frontend/__tests__/__snapshots__/AddToCart.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/AddToCart.test.js.snap
@@ -1,11 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<AddtoCart/> renders and matches snapshot 1`] = `
+exports[`<AddToCart/> renders and matches the snap shot 1`] = `
<button
disabled={false}
onClick={[Function]}
>
- 🛒 Add
- To Cart
+ Add
+ To Cart 🛒
</button>
`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/Cart.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Cart.test.js.snap
index 9aeedfd..d5c0d92 100644
--- a/finished-application/frontend/__tests__/__snapshots__/Cart.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Cart.test.js.snap
@@ -1,31 +1,31 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Cart/> renders 1`] = `
+exports[`<Cart/> renders and matches snappy 1`] = `
<header>
- <styled.button
+ <CloseButton
onClick={[Function]}
title="close"
>
<button
- className="sc-EHOje jytiuo"
+ className="CloseButton-sc-1seb878-0 lbNKfp"
onClick={[Function]}
title="close"
>
×
</button>
- </styled.button>
- <styled.h3>
+ </CloseButton>
+ <Supreme>
<h3
- className="sc-ifAKCX imryuh"
+ className="Supreme-xv30qb-0 hpaXsq"
>
Miss Coleman Berge
- 's Cart.
+ 's Cart
</h3>
- </styled.h3>
+ </Supreme>
<p>
- You have
+ You Have
1
- item
+ Item
in your cart.
</p>
</header>
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CartCount.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CartCount.test.js.snap
new file mode 100644
index 0000000..92ee89a
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CartCount.test.js.snap
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`<CartCount/> matches the snapshot 1`] = `
+<CartCount__AnimationStyles>
+ <TransitionGroup
+ childFactory={[Function]}
+ component="div"
+ >
+ <CSSTransition
+ className="count"
+ classNames="count"
+ key="11"
+ timeout={
+ Object {
+ "enter": 400,
+ "exit": 400,
+ }
+ }
+ unmountOnExit={true}
+ >
+ <CartCount__Dot>
+ 11
+ </CartCount__Dot>
+ </CSSTransition>
+ </TransitionGroup>
+</CartCount__AnimationStyles>
+`;
+
+exports[`<CartCount/> updates via props 1`] = `
+<CartCount__AnimationStyles>
+ <TransitionGroup
+ childFactory={[Function]}
+ component="div"
+ >
+ <CSSTransition
+ className="count"
+ classNames="count"
+ key="50"
+ timeout={
+ Object {
+ "enter": 400,
+ "exit": 400,
+ }
+ }
+ unmountOnExit={true}
+ >
+ <CartCount__Dot>
+ 50
+ </CartCount__Dot>
+ </CSSTransition>
+ </TransitionGroup>
+</CartCount__AnimationStyles>
+`;
+
+exports[`<CartCount/> updates via props 2`] = `
+<CartCount__AnimationStyles>
+ <TransitionGroup
+ childFactory={[Function]}
+ component="div"
+ >
+ <CSSTransition
+ className="count"
+ classNames="count"
+ key="10"
+ timeout={
+ Object {
+ "enter": 400,
+ "exit": 400,
+ }
+ }
+ unmountOnExit={true}
+ >
+ <CartCount__Dot>
+ 10
+ </CartCount__Dot>
+ </CSSTransition>
+ </TransitionGroup>
+</CartCount__AnimationStyles>
+`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/CreateItem.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CreateItem.test.js.snap
index 89dbcd2..59d8557 100644
--- a/finished-application/frontend/__tests__/__snapshots__/CreateItem.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/CreateItem.test.js.snap
@@ -1,14 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Createitem/> renders and matches snapshot 1`] = `
+exports[`<CreateItem/> renders and matches snapshot 1`] = `
<form
- className="sc-bwzfXH ikCwBB"
- data-test={true}
+ className="Form-sc-1xszr8q-0 krRxky"
+ data-test="form"
onSubmit={[Function]}
>
- <h2>
- Sell an Item.
- </h2>
<DisplayError
error={Object {}}
/>
@@ -21,9 +18,10 @@ exports[`<Createitem/> renders and matches snapshot 1`] = `
>
Image
<input
- accept=".png, .jpg, .jpeg"
id="file"
+ name="file"
onChange={[Function]}
+ placeholder="Upload an image"
required={true}
type="file"
/>
@@ -45,26 +43,30 @@ exports[`<Createitem/> renders and matches snapshot 1`] = `
<label
htmlFor="price"
>
- Price
- 0
+ Price
<input
id="price"
- min="0"
name="price"
onChange={[Function]}
+ placeholder="Price"
required={true}
type="number"
value={0}
/>
</label>
- <textarea
- id="description"
- name="description"
- onChange={[Function]}
- placeholder="The desc for this item"
- required={true}
- value=""
- />
+ <label
+ htmlFor="description"
+ >
+ Description
+ <textarea
+ id="description"
+ name="description"
+ onChange={[Function]}
+ placeholder="Enter A Description"
+ required={true}
+ value=""
+ />
+ </label>
<button
type="submit"
>
diff --git a/finished-application/frontend/__tests__/__snapshots__/Item.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Item.test.js.snap
index 930c7a9..70e4aa8 100644
--- a/finished-application/frontend/__tests__/__snapshots__/Item.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Item.test.js.snap
@@ -1,14 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Item/> Renders and matches snapshot 1`] = `
-<styled.div
- key="ABC123"
->
+exports[`<Item/> renders and matches the snapshot 1`] = `
+<ItemStyles__Item>
<img
alt="A Cool Item"
src="dog.jpg"
/>
- <styled.h3>
+ <Title>
<Link
href={
Object {
@@ -23,10 +21,10 @@ exports[`<Item/> Renders and matches snapshot 1`] = `
A Cool Item
</a>
</Link>
- </styled.h3>
- <styled.span>
- $50
- </styled.span>
+ </Title>
+ <PriceTag>
+ $40
+ </PriceTag>
<p>
This item is really cool!
</p>
@@ -36,7 +34,7 @@ exports[`<Item/> Renders and matches snapshot 1`] = `
<Link
href={
Object {
- "pathname": "/update",
+ "pathname": "update",
"query": Object {
"id": "ABC123",
},
@@ -52,7 +50,9 @@ exports[`<Item/> Renders and matches snapshot 1`] = `
/>
<DeleteItem
id="ABC123"
- />
+ >
+ Delete This Item
+ </DeleteItem>
</div>
-</styled.div>
+</ItemStyles__Item>
`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/Nav.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Nav.test.js.snap
index 354fbc1..c3155a9 100644
--- a/finished-application/frontend/__tests__/__snapshots__/Nav.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Nav.test.js.snap
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Nav></Nav> Renders minimal nav when logged out 1`] = `
+exports[`<Nav/> renders a minimal nav when signed out 1`] = `
<ul
- className="sc-dnqmqq kxZizK"
+ className="NavStyles-sc-11c0d2g-0 YVEeD"
data-test="nav"
>
<Link
@@ -16,16 +16,6 @@ exports[`<Nav></Nav> Renders minimal nav when logged out 1`] = `
</a>
</Link>
<Link
- href="/sell"
- >
- <a
- href="/sell"
- onClick={[Function]}
- >
- Sell
- </a>
- </Link>
- <Link
href="/signup"
>
<a
@@ -37,3 +27,11 @@ exports[`<Nav></Nav> Renders minimal nav when logged out 1`] = `
</Link>
</ul>
`;
+
+exports[`<Nav/> renders the amount of items in the cart 1`] = `
+<div
+ className="count CartCount__Dot-xxvp4g-1 fJsVOg"
+>
+ 9
+</div>
+`;
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Order.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Order.test.js.snap
new file mode 100644
index 0000000..9dce80b
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Order.test.js.snap
@@ -0,0 +1,118 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`<Order/> renders the order 1`] = `
+<div
+ className="OrderStyles-sc-4oqalm-0 eDzsVm"
+ data-test="order"
+>
+ <SideEffect(Head)>
+ <Head />
+ </SideEffect(Head)>
+ <p>
+ <span>
+ Order ID:
+ </span>
+ <span>
+ ord123
+ </span>
+ </p>
+ <p>
+ <span>
+ Charge
+ </span>
+ <span>
+ ch_123
+ </span>
+ </p>
+ <p>
+ <span>
+ Date
+ </span>
+ <span>
+ March 31, 2018 8:00 PM
+ </span>
+ </p>
+ <p>
+ <span>
+ Order Total
+ </span>
+ <span>
+ $400
+ </span>
+ </p>
+ <p>
+ <span>
+ Item Count
+ </span>
+ <span>
+ 2
+ </span>
+ </p>
+ <div
+ className="items"
+ >
+ <div
+ className="order-item"
+ key="3a430a73-c9e9-4bcc-b46a-41618965ffea"
+ >
+ <img
+ alt="soluta non omnis consequatur enim quia autem"
+ src="reprehenderit.jpg"
+ />
+ <div
+ className="item-details"
+ >
+ <h2>
+ soluta non omnis consequatur enim quia autem
+ </h2>
+ <p>
+ Qty:
+ 1
+ </p>
+ <p>
+ Each:
+ $42.34
+ </p>
+ <p>
+ SubTotal:
+ $42.34
+ </p>
+ <p>
+ et modi tenetur amet modi reprehenderit omnis
+ </p>
+ </div>
+ </div>
+ <div
+ className="order-item"
+ key="2393e090-592f-4d03-b808-c9d81098deec"
+ >
+ <img
+ alt="quia sed exercitationem omnis laborum exercitationem est"
+ src="sint.jpg"
+ />
+ <div
+ className="item-details"
+ >
+ <h2>
+ quia sed exercitationem omnis laborum exercitationem est
+ </h2>
+ <p>
+ Qty:
+ 1
+ </p>
+ <p>
+ Each:
+ $42.34
+ </p>
+ <p>
+ SubTotal:
+ $42.34
+ </p>
+ <p>
+ sapiente laudantium molestias assumenda quasi adipisci mollitia
+ </p>
+ </div>
+ </div>
+ </div>
+</div>
+`;
diff --git a/finished-application/frontend/__tests__/__snapshots__/Pagination.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Pagination.test.js.snap
index c757968..110f59d 100644
--- a/finished-application/frontend/__tests__/__snapshots__/Pagination.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Pagination.test.js.snap
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<Pagination/> displays loading message 1`] = `
+exports[`<Pagination/> renders pagination for 18 items 1`] = `
<div
- className="sc-bdVaJa ijYKGd"
+ className="PaginationStyles-aduuar-0 ewJsCc"
data-test="pagination"
>
<SideEffect(Head)>
@@ -25,26 +25,22 @@ exports[`<Pagination/> displays loading message 1`] = `
href="items?page=0"
onClick={[Function]}
>
- ←Prev
+ ← Prev
</a>
</Link>
<p>
Page
- <strong>
- 1
-
- </strong>
- of
- <strong
+ 1
+ of
+ <span
className="totalPages"
>
- 1
- </strong>
+ 5
+ </span>
+ !
</p>
<p>
- <strong>
- 1
- </strong>
+ 18
Items Total
</p>
<Link
@@ -59,7 +55,7 @@ exports[`<Pagination/> displays loading message 1`] = `
prefetch={true}
>
<a
- aria-disabled={true}
+ aria-disabled={false}
className="next"
href="items?page=2"
onClick={[Function]}
diff --git a/finished-application/frontend/__tests__/__snapshots__/RemoveFromCart.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/RemoveFromCart.test.js.snap
index a80b678..db8687b 100644
--- a/finished-application/frontend/__tests__/__snapshots__/RemoveFromCart.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/RemoveFromCart.test.js.snap
@@ -2,10 +2,10 @@
exports[`<RemoveFromCart/> renders and matches snapshot 1`] = `
<button
- className="sc-bdVaJa fXnNqM"
+ className="RemoveFromCart__BigButton-emvtd6-0 gPWNSn"
disabled={false}
onClick={[Function]}
- title="Remove From Cart"
+ title="Delete Item"
>
×
</button>
diff --git a/finished-application/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/RequestReset.test.js.snap
index a6a0375..c0de705 100644
--- a/finished-application/frontend/__tests__/__snapshots__/ResetRequest.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/RequestReset.test.js.snap
@@ -1,18 +1,22 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`<ResetRequest/> renders and matches snapshot 1`] = `
+exports[`<RequestReset/> renders and matches snapshot 1`] = `
<form
- className="sc-bdVaJa LHejR"
- data-test="ResetRequest"
+ className="Form-sc-1xszr8q-0 krRxky"
+ data-test="form"
+ method="post"
onSubmit={[Function]}
>
- <DisplayError
- error={Object {}}
- />
<fieldset
aria-busy={false}
disabled={false}
>
+ <h2>
+ Request a password reset
+ </h2>
+ <DisplayError
+ error={Object {}}
+ />
<label
htmlFor="email"
>
@@ -21,7 +25,7 @@ exports[`<ResetRequest/> renders and matches snapshot 1`] = `
name="email"
onChange={[Function]}
placeholder="email"
- type="text"
+ type="email"
value=""
/>
</label>
diff --git a/finished-application/frontend/__tests__/__snapshots__/Signup.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Signup.test.js.snap
index b3c057e..bb61ff1 100644
--- a/finished-application/frontend/__tests__/__snapshots__/Signup.test.js.snap
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/Signup.test.js.snap
@@ -2,7 +2,7 @@
exports[`<Signup/> renders and matches snapshot 1`] = `
<form
- className="sc-bdVaJa LHejR"
+ className="Form-sc-1xszr8q-0 krRxky"
method="post"
onSubmit={[Function]}
>
@@ -10,12 +10,12 @@ exports[`<Signup/> renders and matches snapshot 1`] = `
aria-busy={false}
disabled={false}
>
+ <h2>
+ Sign Up for An Account
+ </h2>
<DisplayError
error={Object {}}
/>
- <h2>
- Sign Up for an Account
- </h2>
<label
htmlFor="email"
>
@@ -24,7 +24,7 @@ exports[`<Signup/> renders and matches snapshot 1`] = `
name="email"
onChange={[Function]}
placeholder="email"
- type="text"
+ type="email"
value=""
/>
</label>
@@ -41,12 +41,10 @@ exports[`<Signup/> renders and matches snapshot 1`] = `
/>
</label>
<label
- htmlFor="signupPassword"
+ htmlFor="password"
>
Password
<input
- className="password"
- id="signupPassword"
name="password"
onChange={[Function]}
placeholder="password"
@@ -57,7 +55,7 @@ exports[`<Signup/> renders and matches snapshot 1`] = `
<button
type="submit"
>
- Submit
+ Sign Up!
</button>
</fieldset>
</form>
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/SingleItem.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/SingleItem.test.js.snap
new file mode 100644
index 0000000..2f41d4c
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/SingleItem.test.js.snap
@@ -0,0 +1,32 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`<SingleItem/> Errors with a not found item 1`] = `
+<p
+ data-test="graphql-error"
+>
+ <strong>
+ Shoot!
+ </strong>
+ Items Not Found!
+</p>
+`;
+
+exports[`<SingleItem/> renders with proper data 1`] = `
+<h2>
+ Viewing
+ dogs are best
+</h2>
+`;
+
+exports[`<SingleItem/> renders with proper data 2`] = `
+<img
+ alt="dogs are best"
+ src="dog.jpg"
+/>
+`;
+
+exports[`<SingleItem/> renders with proper data 3`] = `
+<p>
+ dogs
+</p>
+`;
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap
new file mode 100644
index 0000000..02a112e
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/__snapshots__/TakeMyMoney.test.js.snap
@@ -0,0 +1,67 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`<TakeMyMoney/> renders and matches snapshot 1`] = `
+<ReactStripeCheckout
+ ComponentClass="span"
+ amount={15000}
+ className="StripeCheckout"
+ currency="USD"
+ description="Order of 3 items!"
+ email="Delmer.Smith@yahoo.com"
+ image="dog-small.jpg"
+ label="Pay With Card"
+ locale="auto"
+ name="Sick Fits"
+ reconfigureOnUpdate={false}
+ stripeKey="pk_test_Vtknn6vSdcZWSG2JWvEiWSqC"
+ token={[Function]}
+ triggerEvent="onClick"
+>
+ <button
+ className="StripeCheckout"
+ onBlur={[Function]}
+ onClick={[Function]}
+ onFocus={[Function]}
+ onMouseDown={[Function]}
+ onMouseOut={[Function]}
+ onMouseUp={[Function]}
+ style={
+ Object {
+ "background": "linear-gradient(#28a0e5,#015e94)",
+ "border": 0,
+ "borderRadius": 5,
+ "boxShadow": "0 1px 0 rgba(0,0,0,0.2)",
+ "cursor": "pointer",
+ "display": "inline-block",
+ "overflow": "hidden",
+ "padding": 1,
+ "textDecoration": "none",
+ "userSelect": "none",
+ "visibility": "visible",
+ }
+ }
+ >
+ <span
+ style={
+ Object {
+ "backgroundImage": "linear-gradient(#7dc5ee,#008cdd 85%,#30a2e4)",
+ "borderRadius": 4,
+ "boxShadow": "inset 0 1px 0 rgba(255,255,255,0.25)",
+ "color": "#fff",
+ "display": "block",
+ "fontFamily": "\\"Helvetica Neue\\",Helvetica,Arial,sans-serif",
+ "fontSize": 14,
+ "fontWeight": "bold",
+ "height": 30,
+ "lineHeight": "30px",
+ "padding": "0 12px",
+ "position": "relative",
+ "textShadow": "0 -1px 0 rgba(0,0,0,0.25)",
+ }
+ }
+ >
+ Pay With Card
+ </span>
+ </button>
+</ReactStripeCheckout>
+`;
diff --git a/finished-application/frontend/__tests__/formatMoney.test.js b/stepped-solutions/FINISHED/frontend/__tests__/formatMoney.test.js
index c5c79b6..23d8183 100644
--- a/finished-application/frontend/__tests__/formatMoney.test.js
+++ b/stepped-solutions/FINISHED/frontend/__tests__/formatMoney.test.js
@@ -1,9 +1,11 @@
import formatMoney from '../lib/formatMoney';
-describe('formatMoney', () => {
+describe('formatMoney Function', () => {
it('works with fractional dollars', () => {
expect(formatMoney(1)).toEqual('$0.01');
expect(formatMoney(10)).toEqual('$0.10');
+ expect(formatMoney(9)).toEqual('$0.09');
+ expect(formatMoney(40)).toEqual('$0.40');
});
it('leaves cents off for whole dollars', () => {
@@ -16,6 +18,6 @@ describe('formatMoney', () => {
expect(formatMoney(5012)).toEqual('$50.12');
expect(formatMoney(101)).toEqual('$1.01');
expect(formatMoney(110)).toEqual('$1.10');
- expect(formatMoney(54345345)).toEqual('$543,453.45');
+ expect(formatMoney(20893749823749823749)).toEqual('$208,937,498,237,498,240.00');
});
});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/mocking.test.js b/stepped-solutions/FINISHED/frontend/__tests__/mocking.test.js
new file mode 100644
index 0000000..d0a05bf
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/mocking.test.js
@@ -0,0 +1,36 @@
+function Person(name, foods) {
+ this.name = name;
+ this.foods = foods;
+}
+
+Person.prototype.fetchFavFoods = function() {
+ return new Promise((resolve, reject) => {
+ // Simulate an API
+ setTimeout(() => resolve(this.foods), 2000);
+ });
+};
+
+describe('mocking learning', () => {
+ it('mocks a reg function', () => {
+ const fetchDogs = jest.fn();
+ fetchDogs('snickers');
+ expect(fetchDogs).toHaveBeenCalled();
+ expect(fetchDogs).toHaveBeenCalledWith('snickers');
+ fetchDogs('hugo');
+ expect(fetchDogs).toHaveBeenCalledTimes(2);
+ });
+
+ it('can create a person', () => {
+ const me = new Person('Wes', ['pizza', 'burgs']);
+ expect(me.name).toBe('Wes');
+ });
+
+ it('can fetch foods', async () => {
+ const me = new Person('Wes', ['pizza', 'burgs']);
+ // mock the favFoods function
+ me.fetchFavFoods = jest.fn().mockResolvedValue(['sushi', 'ramen']);
+ const favFoods = await me.fetchFavFoods();
+ console.log(favFoods);
+ expect(favFoods).toContain('sushi');
+ });
+});
diff --git a/stepped-solutions/FINISHED/frontend/__tests__/sample.test.js b/stepped-solutions/FINISHED/frontend/__tests__/sample.test.js
new file mode 100644
index 0000000..dbed94f
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/__tests__/sample.test.js
@@ -0,0 +1,19 @@
+describe('sample test 101', () => {
+ it('works as expected', () => {
+ const age = 100;
+ expect(1).toEqual(1);
+ expect(age).toEqual(100);
+ });
+
+ it('handles ranges just fine', () => {
+ const age = 200;
+ expect(age).toBeGreaterThan(100);
+ });
+
+ it('makes a list of dog names', () => {
+ const dogs = ['snickers', 'hugo'];
+ expect(dogs).toEqual(dogs);
+ expect(dogs).toContain('snickers');
+ expect(dogs).toContain('snickers');
+ });
+});
diff --git a/stepped-solutions/FINISHED/frontend/components/AddToCart.js b/stepped-solutions/FINISHED/frontend/components/AddToCart.js
new file mode 100644
index 0000000..8a71cc3
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/AddToCart.js
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Mutation } from 'react-apollo';
+import gql from 'graphql-tag';
+import { CURRENT_USER_QUERY } from './User';
+
+const ADD_TO_CART_MUTATION = gql`
+ mutation addToCart($id: ID!) {
+ addToCart(id: $id) {
+ id
+ quantity
+ }
+ }
+`;
+
+class AddToCart extends React.Component {
+ render() {
+ const { id } = this.props;
+ return (
+ <Mutation
+ mutation={ADD_TO_CART_MUTATION}
+ variables={{
+ id,
+ }}
+ refetchQueries={[{ query: CURRENT_USER_QUERY }]}
+ >
+ {(addToCart, { loading }) => (
+ <button disabled={loading} onClick={addToCart}>
+ Add{loading && 'ing'} To Cart 🛒
+ </button>
+ )}
+ </Mutation>
+ );
+ }
+}
+export default AddToCart;
+export { ADD_TO_CART_MUTATION };
diff --git a/finished-application/frontend/components/Cart.js b/stepped-solutions/FINISHED/frontend/components/Cart.js
index 7e8a9c5..2a72b38 100644
--- a/finished-application/frontend/components/Cart.js
+++ b/stepped-solutions/FINISHED/frontend/components/Cart.js
@@ -1,17 +1,16 @@
import React from 'react';
-import { Mutation, Query } from 'react-apollo';
-import { adopt } from 'react-adopt';
+import { Query, Mutation } from 'react-apollo';
import gql from 'graphql-tag';
-import TakeMyMoney from './TakeMyMoney';
-import formatMoney from '../lib/formatMoney';
-import CartItem from './CartItem';
-import { CURRENT_USER_QUERY } from './User';
-import calcTotalPrice from '../lib/calcTotalPrice';
-import Error from './ErrorMessage';
+import { adopt } from 'react-adopt';
+import User from './User';
import CartStyles from './styles/CartStyles';
import Supreme from './styles/Supreme';
import CloseButton from './styles/CloseButton';
import SickButton from './styles/SickButton';
+import CartItem from './CartItem';
+import calcTotalPrice from '../lib/calcTotalPrice';
+import formatMoney from '../lib/formatMoney';
+import TakeMyMoney from './TakeMyMoney';
const LOCAL_STATE_QUERY = gql`
query {
@@ -24,45 +23,38 @@ const TOGGLE_CART_MUTATION = gql`
toggleCart @client
}
`;
-
+/* eslint-disable */
const Composed = adopt({
- toggleCart: ({ render }) => (
- <Mutation mutation={TOGGLE_CART_MUTATION}>
- {(mutate, result) => render({ mutate, result })}
- </Mutation>
- ),
- localState: ({ render }) => <Query query={LOCAL_STATE_QUERY} children={render} />,
- currentUser: ({ render }) => (
- <Query children={render} query={CURRENT_USER_QUERY} data-test="cart" />
- ),
+ user: ({ render }) => <User>{render}</User>,
+ toggleCart: ({ render }) => <Mutation mutation={TOGGLE_CART_MUTATION}>{render}</Mutation>,
+ localState: ({ render }) => <Query query={LOCAL_STATE_QUERY}>{render}</Query>,
});
+/* eslint-enable */
const Cart = () => (
<Composed>
- {({ toggleCart, localState, currentUser }) => {
- const { data: { me }, error, loading } = currentUser;
- if (loading) return <p>Loading...</p>;
- if (error) return <Error error={error} />;
+ {({ user, toggleCart, localState }) => {
+ const me = user.data.me;
if (!me) return null;
return (
<CartStyles open={localState.data.cartOpen}>
<header>
- <CloseButton title="close" onClick={toggleCart.mutate}>
+ <CloseButton onClick={toggleCart} title="close">
&times;
</CloseButton>
-
- <Supreme>{me.name}'s Cart.</Supreme>
+ <Supreme>{me.name}'s Cart</Supreme>
<p>
- You have {me.cart.length} item{me.cart.length === 1 ? '' : 's'} in your cart.
+ You Have {me.cart.length} Item{me.cart.length === 1 ? '' : 's'} in your cart.
</p>
</header>
-
<ul>{me.cart.map(cartItem => <CartItem key={cartItem.id} cartItem={cartItem} />)}</ul>
<footer>
<p>{formatMoney(calcTotalPrice(me.cart))}</p>
- <TakeMyMoney>
- <SickButton>Checkout</SickButton>
- </TakeMyMoney>
+ {me.cart.length && (
+ <TakeMyMoney>
+ <SickButton>Checkout</SickButton>
+ </TakeMyMoney>
+ )}
</footer>
</CartStyles>
);
diff --git a/finished-application/frontend/components/CartCount.js b/stepped-solutions/FINISHED/frontend/components/CartCount.js
index ae51f20..c202d74 100644
--- a/finished-application/frontend/components/CartCount.js
+++ b/stepped-solutions/FINISHED/frontend/components/CartCount.js
@@ -1,19 +1,7 @@
-import styled from 'styled-components';
-import { TransitionGroup, CSSTransition } from 'react-transition-group';
+import React from 'react';
import PropTypes from 'prop-types';
-
-const Dot = styled.div`
- background: ${props => props.theme.red};
- color: white;
- border-radius: 50%;
- padding: 0.5rem;
- line-height: 2rem;
- min-width: 3rem;
- margin-left: 1rem;
- font-weight: 100;
- font-feature-settings: 'tnum';
- font-variant-numeric: tabular-nums;
-`;
+import { TransitionGroup, CSSTransition } from 'react-transition-group';
+import styled from 'styled-components';
const AnimationStyles = styled.span`
position: relative;
@@ -23,25 +11,36 @@ const AnimationStyles = styled.span`
transition: all 0.4s;
backface-visibility: hidden;
}
+ /* Intial State of the entered Dot */
.count-enter {
- transform: rotateX(0.5turn);
+ transform: scale(4) rotateX(0.5turn);
}
-
.count-enter-active {
transform: rotateX(0);
}
-
.count-exit {
top: 0;
position: absolute;
transform: rotateX(0);
}
-
.count-exit-active {
- transform: rotateX(0.5turn);
+ transform: scale(4) rotateX(0.5turn);
}
`;
+const Dot = styled.div`
+ background: ${props => props.theme.red};
+ color: white;
+ border-radius: 50%;
+ padding: 0.5rem;
+ line-height: 2rem;
+ min-width: 3rem;
+ margin-left: 1rem;
+ font-weight: 100;
+ font-feature-settings: 'tnum';
+ font-variant-numeric: tabular-nums;
+`;
+
const CartCount = ({ count }) => (
<AnimationStyles>
<TransitionGroup>
@@ -58,7 +57,4 @@ const CartCount = ({ count }) => (
</AnimationStyles>
);
-CartCount.propTypes = {
- count: PropTypes.number.isRequired,
-};
export default CartCount;
diff --git a/finished-application/frontend/components/CartItem.js b/stepped-solutions/FINISHED/frontend/components/CartItem.js
index 6c6d575..b0ce62e 100644
--- a/finished-application/frontend/components/CartItem.js
+++ b/stepped-solutions/FINISHED/frontend/components/CartItem.js
@@ -1,3 +1,4 @@
+import React from 'react';
import styled from 'styled-components';
import PropTypes from 'prop-types';
import formatMoney from '../lib/formatMoney';
@@ -12,30 +13,29 @@ const CartItemStyles = styled.li`
img {
margin-right: 10px;
}
- h3 {
- margin: 0;
- }
+ h3,
p {
margin: 0;
}
`;
const CartItem = ({ cartItem }) => {
+ // first check if that item exists
if (!cartItem.item)
return (
- <CartItemStyles key={cartItem.id}>
- <p>Ack! That Item is gone!</p>
+ <CartItemStyles>
+ <p>This Item has been removed</p>
<RemoveFromCart id={cartItem.id} />
</CartItemStyles>
);
return (
- <CartItemStyles key={cartItem.id}>
+ <CartItemStyles>
<img width="100" src={cartItem.item.image} alt={cartItem.item.title} />
<div className="cart-item-details">
<h3>{cartItem.item.title}</h3>
<p>
- {formatMoney(cartItem.quantity * cartItem.item.price)}
- {' — '}
+ {formatMoney(cartItem.item.price * cartItem.quantity)}
+ {' - '}
<em>
{cartItem.quantity} &times; {formatMoney(cartItem.item.price)} each
</em>
diff --git a/finished-application/frontend/components/CreateItem.js b/stepped-solutions/FINISHED/frontend/components/CreateItem.js
index 503b3cb..c115eac 100644
--- a/finished-application/frontend/components/CreateItem.js
+++ b/stepped-solutions/FINISHED/frontend/components/CreateItem.js
@@ -1,25 +1,22 @@
import React, { Component } from 'react';
import { Mutation } from 'react-apollo';
-import Router from 'next/router';
-import wait from 'waait';
import gql from 'graphql-tag';
-import Error from './ErrorMessage';
+import Router from 'next/router';
import Form from './styles/Form';
import formatMoney from '../lib/formatMoney';
-import { ALL_ITEMS_QUERY } from './Items';
-import { PAGINATION_QUERY } from './Pagination';
+import Error from './ErrorMessage';
const CREATE_ITEM_MUTATION = gql`
mutation CREATE_ITEM_MUTATION(
- $description: String!
$title: String!
+ $description: String!
$price: Int!
$image: String
$largeImage: String
) {
createItem(
- description: $description
title: $title
+ description: $description
price: $price
image: $image
largeImage: $largeImage
@@ -37,22 +34,19 @@ class CreateItem extends Component {
largeImage: '',
price: 0,
};
-
handleChange = e => {
- const { name, value, type } = e.target;
+ const { name, type, value } = e.target;
const val = type === 'number' ? parseFloat(value) : value;
this.setState({ [name]: val });
};
uploadFile = async e => {
- this.setState({ loading: true });
- const files = e.currentTarget.files;
+ const files = e.target.files;
const data = new FormData();
data.append('file', files[0]);
data.append('upload_preset', 'sickfits');
- // use the file endpoint
- const res = await fetch('https://api.cloudinary.com/v1_1/wesbos/image/upload', {
+ const res = await fetch('https://api.cloudinary.com/v1_1/wesbostutorial/image/upload', {
method: 'POST',
body: data,
});
@@ -60,82 +54,82 @@ class CreateItem extends Component {
this.setState({
image: file.secure_url,
largeImage: file.eager[0].secure_url,
- loading: false,
});
};
-
render() {
return (
- <Mutation
- mutation={CREATE_ITEM_MUTATION}
- variables={this.state}
- refetchQueries={[{ query: ALL_ITEMS_QUERY }, { query: PAGINATION_QUERY }]}
- >
+ <Mutation mutation={CREATE_ITEM_MUTATION} variables={this.state}>
{(createItem, { loading, error }) => (
<Form
- data-test
+ data-test="form"
onSubmit={async e => {
+ // Stop the form from submitting
e.preventDefault();
- const { data: { createItem: item } } = await createItem();
- // we wait 0 ms so it puts the router push at the end of the call stack. This ensures that refetchQueries runs before we unmount the component :)
- await wait();
+ // call the mutation
+ const res = await createItem();
+ // change them to the single item page
+ console.log(res);
Router.push({
- pathname: `/item`,
- query: { id: item.id },
+ pathname: '/item',
+ query: { id: res.data.createItem.id },
});
}}
>
- <h2>Sell an Item.</h2>
<Error error={error} />
<fieldset disabled={loading} aria-busy={loading}>
<label htmlFor="file">
Image
<input
- required
+ type="file"
id="file"
+ name="file"
+ placeholder="Upload an image"
+ required
onChange={this.uploadFile}
- type="file"
- accept=".png, .jpg, .jpeg"
/>
- {this.state.image ? (
- <img src={this.state.image} width="100" alt={this.state.title} />
- ) : null}
+ {this.state.image && (
+ <img width="200" src={this.state.image} alt="Upload Preview" />
+ )}
</label>
+
<label htmlFor="title">
Title
<input
- required
- value={this.state.title}
- onChange={this.handleChange}
type="text"
- name="title"
id="title"
+ name="title"
placeholder="Title"
+ required
+ value={this.state.title}
+ onChange={this.handleChange}
/>
</label>
+
<label htmlFor="price">
- Price {this.state.price && formatMoney(this.state.price)}
+ Price
<input
- required
type="number"
id="price"
name="price"
- min="0"
+ placeholder="Price"
+ required
value={this.state.price}
onChange={this.handleChange}
/>
</label>
- <textarea
- id="description"
- required
- name="description"
- value={this.state.description}
- onChange={this.handleChange}
- placeholder="The desc for this item"
- />
- <button disabled={this.state.loading} type="submit">
- Submit
- </button>
+
+ <label htmlFor="description">
+ Description
+ <textarea
+ id="description"
+ name="description"
+ placeholder="Enter A Description"
+ required
+ value={this.state.description}
+ onChange={this.handleChange}
+ />
+ </label>
+ <button type="submit">Submit</button>
</fieldset>
</Form>
)}
diff --git a/stepped-solutions/FINISHED/frontend/components/DeleteItem.js b/stepped-solutions/FINISHED/frontend/components/DeleteItem.js
new file mode 100644
index 0000000..e5e4752
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/DeleteItem.js
@@ -0,0 +1,50 @@
+import React, { Component } from 'react';
+import { Mutation } from 'react-apollo';
+import gql from 'graphql-tag';
+import { ALL_ITEMS_QUERY } from './Items';
+
+const DELETE_ITEM_MUTATION = gql`
+ mutation DELETE_ITEM_MUTATION($id: ID!) {
+ deleteItem(id: $id) {
+ id
+ }
+ }
+`;
+
+class DeleteItem extends Component {
+ update = (cache, payload) => {
+ // manually update the cache on the client, so it matches the server
+ // 1. Read the cache for the items we want
+ const data = cache.readQuery({ query: ALL_ITEMS_QUERY });
+ console.log(data, payload);
+ // 2. Filter the deleted itemout of the page
+ data.items = data.items.filter(item => item.id !== payload.data.deleteItem.id);
+ // 3. Put the items back!
+ cache.writeQuery({ query: ALL_ITEMS_QUERY, data });
+ };
+ render() {
+ return (
+ <Mutation
+ mutation={DELETE_ITEM_MUTATION}
+ variables={{ id: this.props.id }}
+ update={this.update}
+ >
+ {(deleteItem, { error }) => (
+ <button
+ onClick={() => {
+ if (confirm('Are you sure you want to delete this item?')) {
+ deleteItem().catch(err => {
+ alert(err.message);
+ });
+ }
+ }}
+ >
+ {this.props.children}
+ </button>
+ )}
+ </Mutation>
+ );
+ }
+}
+
+export default DeleteItem;
diff --git a/finished-application/frontend/components/ErrorMessage.js b/stepped-solutions/FINISHED/frontend/components/ErrorMessage.js
index 52d59a8..52d59a8 100644
--- a/finished-application/frontend/components/ErrorMessage.js
+++ b/stepped-solutions/FINISHED/frontend/components/ErrorMessage.js
diff --git a/finished-application/frontend/components/Header.js b/stepped-solutions/FINISHED/frontend/components/Header.js
index bb05c34..797eb8e 100644
--- a/finished-application/frontend/components/Header.js
+++ b/stepped-solutions/FINISHED/frontend/components/Header.js
@@ -1,36 +1,21 @@
-import React from 'react';
+import Link from 'next/link';
+import styled from 'styled-components';
import NProgress from 'nprogress';
import Router from 'next/router';
-import styled from 'styled-components';
-import Link from 'next/link';
+import Nav from './Nav';
import Cart from './Cart';
import Search from './Search';
-import Nav from './Nav';
Router.onRouteChangeStart = () => {
NProgress.start();
};
-Router.onRouteChangeComplete = () => NProgress.done();
-Router.onRouteChangeError = () => NProgress.done();
+Router.onRouteChangeComplete = () => {
+ NProgress.done();
+};
-const StyledHeader = styled.header`
- .bar {
- border-bottom: 10px solid ${props => props.theme.black};
- display: grid;
- grid-template-columns: auto 1fr;
- justify-content: space-between;
- align-items: stretch;
- @media (max-width: 1300px) {
- grid-template-columns: 1fr;
- justify-content: center;
- }
- }
- .sub-bar {
- display: grid;
- grid-template-columns: 1fr auto;
- border-bottom: 1px solid ${props => props.theme.lightgrey};
- }
-`;
+Router.onRouteChangeError = () => {
+ NProgress.done();
+};
const Logo = styled.h1`
font-size: 4rem;
@@ -42,8 +27,8 @@ const Logo = styled.h1`
padding: 0.5rem 1rem;
background: ${props => props.theme.red};
color: white;
- letter-spacing: -2px;
text-transform: uppercase;
+ text-decoration: none;
}
@media (max-width: 1300px) {
margin: 0;
@@ -51,12 +36,31 @@ const Logo = styled.h1`
}
`;
+const StyledHeader = styled.header`
+ .bar {
+ border-bottom: 10px solid ${props => props.theme.black};
+ display: grid;
+ grid-template-columns: auto 1fr;
+ justify-content: space-between;
+ align-items: stretch;
+ @media (max-width: 1300px) {
+ grid-template-columns: 1fr;
+ justify-content: center;
+ }
+ }
+ .sub-bar {
+ display: grid;
+ grid-template-columns: 1fr auto;
+ border-bottom: 1px solid ${props => props.theme.lightgrey};
+ }
+`;
+
const Header = () => (
<StyledHeader>
<div className="bar">
<Logo>
<Link href="/">
- <a>Sick&nbsp;Fits!</a>
+ <a>Sick Fits</a>
</Link>
</Logo>
<Nav />
diff --git a/finished-application/frontend/components/Item.js b/stepped-solutions/FINISHED/frontend/components/Item.js
index d6b339e..2741dcf 100644
--- a/finished-application/frontend/components/Item.js
+++ b/stepped-solutions/FINISHED/frontend/components/Item.js
@@ -1,23 +1,24 @@
-import React from 'react';
+import React, { Component } from 'react';
import PropTypes from 'prop-types';
import Link from 'next/link';
import Title from './styles/Title';
-import AddToCart from './AddToCart';
-import DeleteItem from './DeleteItem';
-import formatMoney from '../lib/formatMoney';
import ItemStyles from './styles/ItemStyles';
import PriceTag from './styles/PriceTag';
+import formatMoney from '../lib/formatMoney';
+import DeleteItem from './DeleteItem';
+import AddToCart from './AddToCart';
-class Item extends React.Component {
+export default class Item extends Component {
static propTypes = {
item: PropTypes.object.isRequired,
};
render() {
- const item = this.props.item;
+ const { item } = this.props;
return (
- <ItemStyles key={item.id}>
+ <ItemStyles>
{item.image && <img src={item.image} alt={item.title} />}
+
<Title>
<Link
href={{
@@ -28,26 +29,22 @@ class Item extends React.Component {
<a>{item.title}</a>
</Link>
</Title>
-
<PriceTag>{formatMoney(item.price)}</PriceTag>
-
<p>{item.description}</p>
<div className="buttonList">
<Link
href={{
- pathname: '/update',
+ pathname: 'update',
query: { id: item.id },
}}
>
<a>Edit ✏️</a>
</Link>
<AddToCart id={item.id} />
- <DeleteItem id={item.id} />
+ <DeleteItem id={item.id}>Delete This Item</DeleteItem>
</div>
</ItemStyles>
);
}
}
-
-export default Item;
diff --git a/finished-application/frontend/components/Items.js b/stepped-solutions/FINISHED/frontend/components/Items.js
index 5694d0b..9b5426c 100644
--- a/finished-application/frontend/components/Items.js
+++ b/stepped-solutions/FINISHED/frontend/components/Items.js
@@ -1,17 +1,14 @@
-import React from 'react';
+import React, { Component } from 'react';
import { Query } from 'react-apollo';
-import styled from 'styled-components';
-import PropTypes from 'prop-types';
import gql from 'graphql-tag';
-import Pagination from './Pagination';
+import styled from 'styled-components';
import Item from './Item';
-import LoadingItem from './LoadingItem';
+import Pagination from './Pagination';
import { perPage } from '../config';
const ALL_ITEMS_QUERY = gql`
query ALL_ITEMS_QUERY($skip: Int = 0, $first: Int = ${perPage}) {
- items(orderBy: createdAt_DESC, first: $first, skip: $skip) {
- __typename
+ items(first: $first, skip: $skip, orderBy: createdAt_DESC) {
id
title
price
@@ -22,7 +19,11 @@ const ALL_ITEMS_QUERY = gql`
}
`;
-const Items = styled.div`
+const Center = styled.div`
+ text-align: center;
+`;
+
+const ItemsList = styled.div`
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 60px;
@@ -30,38 +31,24 @@ const Items = styled.div`
margin: 0 auto;
`;
-const Center = styled.div`
- text-align: center;
-`;
-
-class ItemList extends React.Component {
- static propTypes = {
- page: PropTypes.number.isRequired,
- };
+class Items extends Component {
render() {
return (
- <Center key={this.props.page}>
+ <Center>
<Pagination page={this.props.page} />
<Query
query={ALL_ITEMS_QUERY}
+ // fetchPolicy="network-only"
variables={{
skip: this.props.page * perPage - perPage,
- first: perPage,
}}
- // fetchPolicy="network-only"
>
{({ data, error, loading }) => {
- if (loading) {
- return (
- <Items>
- {Array.from({ length: 4 })
- .map((x, id) => ({ id }))
- .map(x => <LoadingItem key={x.id} />)}
- </Items>
- );
- }
- if (error) return <div>Error</div>;
- return <Items>{data.items.map(item => <Item key={item.id} item={item} />)}</Items>;
+ if (loading) return <p>Loading...</p>;
+ if (error) return <p>Error: {error.message}</p>;
+ return (
+ <ItemsList>{data.items.map(item => <Item item={item} key={item.id} />)}</ItemsList>
+ );
}}
</Query>
<Pagination page={this.props.page} />
@@ -70,5 +57,5 @@ class ItemList extends React.Component {
}
}
-export default ItemList;
+export default Items;
export { ALL_ITEMS_QUERY };
diff --git a/stepped-solutions/FINISHED/frontend/components/Meta.js b/stepped-solutions/FINISHED/frontend/components/Meta.js
new file mode 100644
index 0000000..2b98f92
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/Meta.js
@@ -0,0 +1,13 @@
+import Head from 'next/head';
+
+const Meta = () => (
+ <Head>
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <meta charSet="utf-8" />
+ <link rel="shortcut icon" href="/static/favicon.png" />
+ <link rel="stylesheet" type="text/css" href="/static/nprogress.css" />
+ <title>Sick Fits!</title>
+ </Head>
+);
+
+export default Meta;
diff --git a/stepped-solutions/FINISHED/frontend/components/Nav.js b/stepped-solutions/FINISHED/frontend/components/Nav.js
new file mode 100644
index 0000000..118db5a
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/Nav.js
@@ -0,0 +1,49 @@
+import Link from 'next/link';
+import { Mutation } from 'react-apollo';
+import { TOGGLE_CART_MUTATION } from './Cart';
+import NavStyles from './styles/NavStyles';
+import User from './User';
+import CartCount from './CartCount';
+import Signout from './Signout';
+
+const Nav = () => (
+ <User>
+ {({ data: { me } }) => (
+ <NavStyles data-test="nav">
+ <Link href="/items">
+ <a>Shop</a>
+ </Link>
+ {me && (
+ <>
+ <Link href="/sell">
+ <a>Sell</a>
+ </Link>
+ <Link href="/orders">
+ <a>Orders</a>
+ </Link>
+ <Link href="/me">
+ <a>Account</a>
+ </Link>
+ <Signout />
+ <Mutation mutation={TOGGLE_CART_MUTATION}>
+ {(toggleCart) => (
+ <button onClick={toggleCart}>
+ My Cart
+ <CartCount count={me.cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0)}></CartCount>
+ </button>
+ )}
+ </Mutation>
+ </>
+ )}
+ {!me && (
+ <Link href="/signup">
+ <a>Sign In</a>
+ </Link>
+
+ )}
+ </NavStyles>
+ )}
+ </User>
+);
+
+export default Nav;
diff --git a/stepped-solutions/FINISHED/frontend/components/Order.js b/stepped-solutions/FINISHED/frontend/components/Order.js
new file mode 100644
index 0000000..5177c0a
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/Order.js
@@ -0,0 +1,92 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { Query } from 'react-apollo';
+import { format } from 'date-fns';
+import Head from 'next/head';
+import gql from 'graphql-tag';
+import formatMoney from '../lib/formatMoney';
+import Error from './ErrorMessage';
+import OrderStyles from './styles/OrderStyles';
+
+const SINGLE_ORDER_QUERY = gql`
+ query SINGLE_ORDER_QUERY($id: ID!) {
+ order(id: $id) {
+ id
+ charge
+ total
+ createdAt
+ user {
+ id
+ }
+ items {
+ id
+ title
+ description
+ price
+ image
+ quantity
+ }
+ }
+ }
+`;
+
+class Order extends React.Component {
+ static propTypes = {
+ id: PropTypes.string.isRequired,
+ };
+ render() {
+ return (
+ <Query query={SINGLE_ORDER_QUERY} variables={{ id: this.props.id }}>
+ {({ data, error, loading }) => {
+ if (error) return <Error error={error} />;
+ if (loading) return <p>Loading...</p>;
+ const order = data.order;
+ return (
+ <OrderStyles data-test="order">
+ <Head>
+ <title>Sick Fits - Order {order.id}</title>
+ </Head>
+ <p>
+ <span>Order ID:</span>
+ <span>{this.props.id}</span>
+ </p>
+ <p>
+ <span>Charge</span>
+ <span>{order.charge}</span>
+ </p>
+ <p>
+ <span>Date</span>
+ <span>{format(order.createdAt, 'MMMM d, YYYY h:mm a')}</span>
+ </p>
+ <p>
+ <span>Order Total</span>
+ <span>{formatMoney(order.total)}</span>
+ </p>
+ <p>
+ <span>Item Count</span>
+ <span>{order.items.length}</span>
+ </p>
+ <div className="items">
+ {order.items.map(item => (
+ <div className="order-item" key={item.id}>
+ <img src={item.image} alt={item.title} />
+ <div className="item-details">
+ <h2>{item.title}</h2>
+ <p>Qty: {item.quantity}</p>
+ <p>Each: {formatMoney(item.price)}</p>
+ <p>SubTotal: {formatMoney(item.price * item.quantity)}</p>
+ <p>{item.description}</p>
+ </div>
+ </div>
+ ))}
+ </div>
+ </OrderStyles>
+ );
+ }}
+ </Query>
+ );
+ }
+}
+
+export default Order;
+export { SINGLE_ORDER_QUERY };
diff --git a/finished-application/frontend/components/OrderList.js b/stepped-solutions/FINISHED/frontend/components/OrderList.js
index 5886ad7..e2e22ff 100644
--- a/finished-application/frontend/components/OrderList.js
+++ b/stepped-solutions/FINISHED/frontend/components/OrderList.js
@@ -4,16 +4,16 @@ import { formatDistance } from 'date-fns';
import Link from 'next/link';
import styled from 'styled-components';
import gql from 'graphql-tag';
+import Error from './ErrorMessage';
import formatMoney from '../lib/formatMoney';
import OrderItemStyles from './styles/OrderItemStyles';
const USER_ORDERS_QUERY = gql`
- query orders {
+ query USER_ORDERS_QUERY {
orders(orderBy: createdAt_DESC) {
id
total
createdAt
- updatedAt
items {
id
title
@@ -26,7 +26,7 @@ const USER_ORDERS_QUERY = gql`
}
`;
-const OrderUl = styled.ul`
+const orderUl = styled.ul`
display: grid;
grid-gap: 4rem;
grid-template-columns: repeat(auto-fit, minmax(40%, 1fr));
@@ -37,13 +37,13 @@ class OrderList extends React.Component {
return (
<Query query={USER_ORDERS_QUERY}>
{({ data: { orders }, loading, error }) => {
- if (loading) return <p>Loading...</p>;
- if (error) return <p>Error...</p>;
- if (!orders || !orders.length) return <p>No Orders Yet!</p>;
+ if (loading) return <p>loading...</p>;
+ if (error) return <Error erorr={error} />;
+ console.log(orders);
return (
<div>
- <h2>You have {orders.length} Orders</h2>
- <OrderUl>
+ <h2>You have {orders.length} orders</h2>
+ <orderUl>
{orders.map(order => (
<OrderItemStyles key={order.id}>
<Link
@@ -54,22 +54,10 @@ class OrderList extends React.Component {
>
<a>
<div className="order-meta">
- <p>
- <strong>{order.items.reduce((a, b) => a + b.quantity, 0)}</strong>
- Items
- </p>
- <p>
- <strong>{order.items.length}</strong>
- Products
- </p>
- <p>
- <strong>{formatDistance(order.createdAt, new Date())}</strong>
- ago
- </p>
- <p>
- <strong>{formatMoney(order.total)}</strong>
- Total
- </p>
+ <p>{order.items.reduce((a, b) => a + b.quantity, 0)} Items</p>
+ <p>{order.items.length} Products</p>
+ <p>{formatDistance(order.createdAt, new Date())}</p>
+ <p>{formatMoney(order.total)}</p>
</div>
<div className="images">
{order.items.map(item => (
@@ -80,7 +68,7 @@ class OrderList extends React.Component {
</Link>
</OrderItemStyles>
))}
- </OrderUl>
+ </orderUl>
</div>
);
}}
@@ -90,4 +78,3 @@ class OrderList extends React.Component {
}
export default OrderList;
-export { USER_ORDERS_QUERY };
diff --git a/finished-application/frontend/components/Page.js b/stepped-solutions/FINISHED/frontend/components/Page.js
index c3e04ac..75ab84a 100644
--- a/finished-application/frontend/components/Page.js
+++ b/stepped-solutions/FINISHED/frontend/components/Page.js
@@ -1,8 +1,7 @@
-import React from 'react';
+import React, { Component } from 'react';
import styled, { ThemeProvider, injectGlobal } from 'styled-components';
-import PropTypes from 'prop-types';
-import Header from './Header';
-import Meta from './Meta';
+import Header from '../components/Header';
+import Meta from '../components/Meta';
const theme = {
red: '#FF0000',
@@ -10,47 +9,49 @@ const theme = {
grey: '#3A3A3A',
lightgrey: '#E1E1E1',
offWhite: '#EDEDED',
- maxWidth: '1300px',
+ maxWidth: '1000px',
bs: '0 12px 24px 0 rgba(0, 0, 0, 0.09)',
};
+const StyledPage = styled.div`
+ background: white;
+ color: ${props => props.theme.black};
+`;
+
+const Inner = styled.div`
+ max-width: ${props => props.theme.maxWidth};
+ margin: 0 auto;
+ padding: 2rem;
+`;
+
injectGlobal`
- html {
- box-sizing: border-box;
- font-size: 10px;
+ @font-face {
+ font-family: 'radnika_next';
+ src: url('/static/radnikanext-medium-webfont.woff2') format('woff2');
+ font-weight: normal;
+ font-style: normal;
}
- body {
- font-family: 'radnika next', sans-serif;
- padding: 0;
- background-color: #ffffff;
- margin: 0;
- font-size: 1.5rem;
- line-height: 2;
+ html {
+ box-sizing: border-box;
+ font-size: 10px;
}
*, *:before, *:after {
box-sizing: inherit;
}
+ body {
+ padding: 0;
+ margin: 0;
+ font-size: 1.5rem;
+ line-height: 2;
+ font-family: 'radnika_next';
+ }
a {
- color: ${theme.black};
text-decoration: none;
+ color: ${theme.black};
}
`;
-const Inner = styled.div`
- max-width: 1000px;
- margin: 0 auto;
- padding: 2rem;
-`;
-
-const StyledPage = styled.div`
- color: ${props => props.theme.black};
- background: white;
-`;
-
-class Page extends React.Component {
- static propTypes = {
- children: PropTypes.node.isRequired,
- };
+class Page extends Component {
render() {
return (
<ThemeProvider theme={theme}>
diff --git a/finished-application/frontend/components/Pagination.js b/stepped-solutions/FINISHED/frontend/components/Pagination.js
index f684840..b84af76 100644
--- a/finished-application/frontend/components/Pagination.js
+++ b/stepped-solutions/FINISHED/frontend/components/Pagination.js
@@ -1,18 +1,14 @@
import React from 'react';
-import { Query } from 'react-apollo';
-import styled from 'styled-components';
-import Link from 'next/link';
-import PropTypes from 'prop-types';
import gql from 'graphql-tag';
+import { Query } from 'react-apollo';
import Head from 'next/head';
-import { perPage } from '../config';
+import Link from 'next/link';
import PaginationStyles from './styles/PaginationStyles';
-
-
+import { perPage } from '../config';
const PAGINATION_QUERY = gql`
- query itemsConnection($skip: Int = 0, $first: Int = 4) {
- itemsConnection(orderBy: createdAt_DESC, first: $first, skip: $skip) {
+ query PAGINATION_QUERY {
+ itemsConnection {
aggregate {
count
}
@@ -23,10 +19,10 @@ const PAGINATION_QUERY = gql`
const Pagination = props => (
<Query query={PAGINATION_QUERY}>
{({ data, loading, error }) => {
- if (loading || error) return null;
- const { aggregate } = data.itemsConnection;
- const { page } = props;
- const pages = Math.ceil(aggregate.count / perPage);
+ if (loading) return <p>Loading...</p>;
+ const count = data.itemsConnection.aggregate.count;
+ const pages = Math.ceil(count / perPage);
+ const page = props.page;
return (
<PaginationStyles data-test="pagination">
<Head>
@@ -42,15 +38,14 @@ const Pagination = props => (
}}
>
<a className="prev" aria-disabled={page <= 1}>
- ←Prev
+ ← Prev
</a>
</Link>
<p>
- Page <strong>{page} </strong> of <strong className="totalPages">{pages}</strong>
- </p>
- <p>
- <strong>{aggregate.count}</strong> Items Total
+ Page {props.page} of
+ <span className="totalPages">{pages}</span>!
</p>
+ <p>{count} Items Total</p>
<Link
prefetch
href={{
@@ -68,9 +63,5 @@ const Pagination = props => (
</Query>
);
-Pagination.propTypes = {
- page: PropTypes.number.isRequired,
-};
-
export default Pagination;
export { PAGINATION_QUERY };
diff --git a/stepped-solutions/FINISHED/frontend/components/Permissions.js b/stepped-solutions/FINISHED/frontend/components/Permissions.js
new file mode 100644
index 0000000..4b08c39
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/Permissions.js
@@ -0,0 +1,131 @@
+import { Query, Mutation } from 'react-apollo';
+import Error from './ErrorMessage';
+import gql from 'graphql-tag';
+import Table from './styles/Table';
+import SickButton from './styles/SickButton';
+import PropTypes from 'prop-types';
+
+const possiblePermissions = [
+ 'ADMIN',
+ 'USER',
+ 'ITEMCREATE',
+ 'ITEMUPDATE',
+ 'ITEMDELETE',
+ 'PERMISSIONUPDATE',
+];
+
+const UPDATE_PERMISSIONS_MUTATION = gql`
+ mutation updatePermissions($permissions: [Permission], $userId: ID!) {
+ updatePermissions(permissions: $permissions, userId: $userId) {
+ id
+ permissions
+ name
+ email
+ }
+ }
+`;
+
+const ALL_USERS_QUERY = gql`
+ query {
+ users {
+ id
+ name
+ email
+ permissions
+ }
+ }
+`;
+
+const Permissions = props => (
+ <Query query={ALL_USERS_QUERY}>
+ {({ data, loading, error }) => (
+ <div>
+ <Error error={error} />
+ <div>
+ <h2>Manage Permissions</h2>
+ <Table>
+ <thead>
+ <tr>
+ <th>Name</th>
+ <th>Email</th>
+ {possiblePermissions.map(permission => <th key={permission}>{permission}</th>)}
+ <th>👇🏻</th>
+ </tr>
+ </thead>
+ <tbody>{data.users.map(user => <UserPermissions user={user} key={user.id} />)}</tbody>
+ </Table>
+ </div>
+ </div>
+ )}
+ </Query>
+);
+
+class UserPermissions extends React.Component {
+ static propTypes = {
+ user: PropTypes.shape({
+ name: PropTypes.string,
+ email: PropTypes.string,
+ id: PropTypes.string,
+ permissions: PropTypes.array,
+ }).isRequired,
+ };
+ state = {
+ permissions: this.props.user.permissions,
+ };
+ handlePermissionChange = (e) => {
+ const checkbox = e.target;
+ // take a copy of the current permissions
+ let updatedPermissions = [...this.state.permissions];
+ // figure out if we need to remove or add this permission
+ if (checkbox.checked) {
+ // add it in!
+ updatedPermissions.push(checkbox.value);
+ } else {
+ updatedPermissions = updatedPermissions.filter(permission => permission !== checkbox.value);
+ }
+ this.setState({ permissions: updatedPermissions });
+ };
+ render() {
+ const user = this.props.user;
+ return (
+ <Mutation
+ mutation={UPDATE_PERMISSIONS_MUTATION}
+ variables={{
+ permissions: this.state.permissions,
+ userId: this.props.user.id,
+ }}
+ >
+ {(updatePermissions, { loading, error }) => (
+ <>
+ {error && <tr><td colspan="8"><Error error={error} /></td></tr>}
+ < tr >
+ <td>{user.name}</td>
+ <td>{user.email}</td>
+ {possiblePermissions.map(permission => (
+ <td key={permission}>
+ <label htmlFor={`${user.id}-permission-${permission}`}>
+ <input
+ id={`${user.id}-permission-${permission}`}
+ type="checkbox"
+ checked={this.state.permissions.includes(permission)}
+ value={permission}
+ onChange={this.handlePermissionChange}
+ />
+ </label>
+ </td>
+ ))}
+ <td>
+ <SickButton type="button" disabled={loading} onClick={updatePermissions}>
+ Updat{loading ? 'ing' : 'e'}
+ </SickButton>
+ </td>
+ </tr>
+ </>
+ )
+ }
+ </Mutation>
+ );
+ }
+}
+
+export default Permissions;
diff --git a/stepped-solutions/FINISHED/frontend/components/PleaseSignIn.js b/stepped-solutions/FINISHED/frontend/components/PleaseSignIn.js
new file mode 100644
index 0000000..80cfdbf
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/PleaseSignIn.js
@@ -0,0 +1,22 @@
+import { Query } from 'react-apollo';
+import { CURRENT_USER_QUERY } from './User';
+import Signin from './Signin';
+
+const PleaseSignIn = props => (
+ <Query query={CURRENT_USER_QUERY}>
+ {({ data, loading }) => {
+ if (loading) return <p>Loading...</p>;
+ if (!data.me) {
+ return (
+ <div>
+ <p>Please Sign In before Continuing</p>
+ <Signin />
+ </div>
+ );
+ }
+ return props.children;
+ }}
+ </Query>
+);
+
+export default PleaseSignIn;
diff --git a/stepped-solutions/FINISHED/frontend/components/RemoveFromCart.js b/stepped-solutions/FINISHED/frontend/components/RemoveFromCart.js
new file mode 100644
index 0000000..025dae5
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/RemoveFromCart.js
@@ -0,0 +1,71 @@
+import React from 'react';
+import { Mutation } from 'react-apollo';
+import styled from 'styled-components';
+import PropTypes from 'prop-types';
+import gql from 'graphql-tag';
+import { CURRENT_USER_QUERY } from './User';
+
+const REMOVE_FROM_CART_MUTATION = gql`
+ mutation removeFromCart($id: ID!) {
+ removeFromCart(id: $id) {
+ id
+ }
+ }
+`;
+
+const BigButton = styled.button`
+ font-size: 3rem;
+ background: none;
+ border: 0;
+ &:hover {
+ color: ${props => props.theme.red};
+ cursor: pointer;
+ }
+`;
+
+class RemoveFromCart extends React.Component {
+ static propTypes = {
+ id: PropTypes.string.isRequired,
+ };
+ // This gets called as soon as we get a response back from the server after a mutation has been performed
+ update = (cache, payload) => {
+ // 1. first read the cache
+ const data = cache.readQuery({ query: CURRENT_USER_QUERY });
+ // 2. remove that item from the cart
+ const cartItemId = payload.data.removeFromCart.id;
+ data.me.cart = data.me.cart.filter(cartItem => cartItem.id !== cartItemId);
+ // 3. write it back to the cache
+ cache.writeQuery({ query: CURRENT_USER_QUERY, data });
+ };
+ render() {
+ return (
+ <Mutation
+ mutation={REMOVE_FROM_CART_MUTATION}
+ variables={{ id: this.props.id }}
+ update={this.update}
+ optimisticResponse={{
+ __typename: 'Mutation',
+ removeFromCart: {
+ __typename: 'CartItem',
+ id: this.props.id,
+ },
+ }}
+ >
+ {(removeFromCart, { loading, error }) => (
+ <BigButton
+ disabled={loading}
+ onClick={() => {
+ removeFromCart().catch(err => alert(err.message));
+ }}
+ title="Delete Item"
+ >
+ &times;
+ </BigButton>
+ )}
+ </Mutation>
+ );
+ }
+}
+
+export default RemoveFromCart;
+export { REMOVE_FROM_CART_MUTATION };
diff --git a/finished-application/frontend/components/ResetRequest.js b/stepped-solutions/FINISHED/frontend/components/RequestReset.js
index 6aedcc1..be21639 100644
--- a/finished-application/frontend/components/ResetRequest.js
+++ b/stepped-solutions/FINISHED/frontend/components/RequestReset.js
@@ -1,44 +1,49 @@
-import React from 'react';
+import React, { Component } from 'react';
import { Mutation } from 'react-apollo';
import gql from 'graphql-tag';
import Form from './styles/Form';
import Error from './ErrorMessage';
const REQUEST_RESET_MUTATION = gql`
- mutation requestReset($email: String!) {
+ mutation REQUEST_RESET_MUTATION($email: String!) {
requestReset(email: $email) {
- id
+ message
}
}
`;
-class ResetRequest extends React.Component {
+class RequestReset extends Component {
state = {
email: '',
};
-
+ saveToState = e => {
+ this.setState({ [e.target.name]: e.target.value });
+ };
render() {
return (
<Mutation mutation={REQUEST_RESET_MUTATION} variables={this.state}>
- {(resetMutation, { loading, error, called }) => (
+ {(reset, { error, loading, called }) => (
<Form
+ method="post"
+ data-test="form"
onSubmit={async e => {
e.preventDefault();
- await resetMutation();
+ await reset();
+ this.setState({ email: '' });
}}
- data-test="ResetRequest"
>
- <Error error={error} />
- {!error && called && !loading && <p>Success! Check Your Email!</p>}
<fieldset disabled={loading} aria-busy={loading}>
+ <h2>Request a password reset</h2>
+ <Error error={error} />
+ {!error && !loading && called && <p>Success! Check your email for a reset link!</p>}
<label htmlFor="email">
Email
<input
- value={this.state.email}
- onChange={e => this.setState({ email: e.target.value })}
+ type="email"
name="email"
- type="text"
placeholder="email"
+ value={this.state.email}
+ onChange={this.saveToState}
/>
</label>
@@ -51,5 +56,5 @@ class ResetRequest extends React.Component {
}
}
-export default ResetRequest;
+export default RequestReset;
export { REQUEST_RESET_MUTATION };
diff --git a/finished-application/frontend/components/Reset.js b/stepped-solutions/FINISHED/frontend/components/Reset.js
index bb2ece0..a132f03 100644
--- a/finished-application/frontend/components/Reset.js
+++ b/stepped-solutions/FINISHED/frontend/components/Reset.js
@@ -1,7 +1,7 @@
-import React from 'react';
+import React, { Component } from 'react';
import { Mutation } from 'react-apollo';
-import PropTypes from 'prop-types';
import gql from 'graphql-tag';
+import PropTypes from 'prop-types';
import Form from './styles/Form';
import Error from './ErrorMessage';
import { CURRENT_USER_QUERY } from './User';
@@ -16,26 +16,17 @@ const RESET_MUTATION = gql`
}
`;
-class Reset extends React.Component {
+class Reset extends Component {
static propTypes = {
resetToken: PropTypes.string.isRequired,
};
-
state = {
- confirmPassword: '',
password: '',
+ confirmPassword: '',
};
-
saveToState = e => {
- const { name, value } = e.target;
- this.setState({ [name]: value });
- };
-
- resetPassword = async (e, resetMutation) => {
- e.preventDefault();
- await resetMutation();
+ this.setState({ [e.target.name]: e.target.value });
};
-
render() {
return (
<Mutation
@@ -47,32 +38,41 @@ class Reset extends React.Component {
}}
refetchQueries={[{ query: CURRENT_USER_QUERY }]}
>
- {(resetMutation, { error, loading }) => (
- <Form onSubmit={e => this.resetPassword(e, resetMutation)}>
- <Error error={error} />
+ {(reset, { error, loading, called }) => (
+ <Form
+ method="post"
+ onSubmit={async e => {
+ e.preventDefault();
+ await reset();
+ this.setState({ password: '', confirmPassword: '' });
+ }}
+ >
<fieldset disabled={loading} aria-busy={loading}>
+ <h2>Reset Your Password</h2>
+ <Error error={error} />
<label htmlFor="password">
- password
+ Password
<input
+ type="password"
+ name="password"
+ placeholder="password"
value={this.state.password}
onChange={this.saveToState}
- name="password"
- type="password"
- id="password"
/>
</label>
- <label htmlFor="confirm">
- Confirm:
+
+ <label htmlFor="confirmPassword">
+ Confirm Your Password
<input
+ type="password"
+ name="confirmPassword"
+ placeholder="confirmPassword"
value={this.state.confirmPassword}
onChange={this.saveToState}
- name="confirmPassword"
- type="password"
- id="confirmPassword"
/>
</label>
- <button type="submit">Request Reset!</button>
+ <button type="submit">Reset Your Password!</button>
</fieldset>
</Form>
)}
@@ -82,4 +82,3 @@ class Reset extends React.Component {
}
export default Reset;
-export { RESET_MUTATION };
diff --git a/finished-application/frontend/components/Search.js b/stepped-solutions/FINISHED/frontend/components/Search.js
index dc1bfea..c29f93e 100644
--- a/finished-application/frontend/components/Search.js
+++ b/stepped-solutions/FINISHED/frontend/components/Search.js
@@ -1,5 +1,5 @@
import React from 'react';
-import Downshift from 'downshift';
+import Downshift, { resetIdCounter } from 'downshift';
import Router from 'next/router';
import { ApolloConsumer } from 'react-apollo';
import gql from 'graphql-tag';
@@ -15,6 +15,7 @@ const SEARCH_ITEMS_QUERY = gql`
}
}
`;
+
function routeToItem(item) {
Router.push({
pathname: '/item',
@@ -29,34 +30,33 @@ class AutoComplete extends React.Component {
items: [],
loading: false,
};
- onChange = async (e, client) => {
- if (!e.target.value) {
- return this.setState({ items: [] });
- }
+ onChange = debounce(async (e, client) => {
+ console.log('Searching...');
+ // turn loading on
this.setState({ loading: true });
- this.search(client, e.target.value);
- };
-
- search = debounce(async (client, searchTerm) => {
+ // Manually query apollo client
const res = await client.query({
query: SEARCH_ITEMS_QUERY,
- variables: { searchTerm },
+ variables: { searchTerm: e.target.value },
+ });
+ this.setState({
+ items: res.data.items,
+ loading: false,
});
- this.setState({ items: res.data.items, loading: false });
}, 350);
-
render() {
+ resetIdCounter();
return (
<SearchStyles>
- <Downshift onChange={routeToItem} itemToString={i => (i === null ? '' : i.title)}>
+ <Downshift onChange={routeToItem} itemToString={item => (item === null ? '' : item.title)}>
{({ getInputProps, getItemProps, isOpen, inputValue, highlightedIndex }) => (
<div>
- {/* This is the searchInput */}
<ApolloConsumer>
{client => (
<input
{...getInputProps({
- placeholder: 'Search For Item',
+ type: 'search',
+ placeholder: 'Search For An Item',
id: 'search',
className: this.state.loading ? 'loading' : '',
onChange: e => {
@@ -67,24 +67,20 @@ class AutoComplete extends React.Component {
/>
)}
</ApolloConsumer>
- {/* This is the Dropdown */}
{isOpen && (
<DropDown>
{this.state.items.map((item, index) => (
<DropDownItem
{...getItemProps({ item })}
key={item.id}
- highlighted={highlightedIndex === index}
+ highlighted={index === highlightedIndex}
>
<img width="50" src={item.image} alt={item.title} />
{item.title}
</DropDownItem>
))}
- {/* Found Nothing State */}
{!this.state.items.length &&
- !this.state.loading && (
- <DropDownItem>Nothing Found for {inputValue}...</DropDownItem>
- )}
+ !this.state.loading && <DropDownItem> Nothing Found {inputValue}</DropDownItem>}
</DropDown>
)}
</div>
@@ -96,4 +92,3 @@ class AutoComplete extends React.Component {
}
export default AutoComplete;
-export { SEARCH_ITEMS_QUERY };
diff --git a/finished-application/frontend/components/Signin.js b/stepped-solutions/FINISHED/frontend/components/Signin.js
index 53cdb76..4fd3013 100644
--- a/finished-application/frontend/components/Signin.js
+++ b/stepped-solutions/FINISHED/frontend/components/Signin.js
@@ -1,9 +1,9 @@
import React, { Component } from 'react';
import { Mutation } from 'react-apollo';
import gql from 'graphql-tag';
-import { CURRENT_USER_QUERY } from './User';
-import Error from './ErrorMessage';
import Form from './styles/Form';
+import Error from './ErrorMessage';
+import { CURRENT_USER_QUERY } from './User';
const SIGNIN_MUTATION = gql`
mutation SIGNIN_MUTATION($email: String!, $password: String!) {
@@ -17,15 +17,13 @@ const SIGNIN_MUTATION = gql`
class Signin extends Component {
state = {
- email: '',
+ name: '',
password: '',
+ email: '',
};
-
saveToState = e => {
- const { name, value } = e.target;
- this.setState({ [name]: value });
+ this.setState({ [e.target.name]: e.target.value });
};
-
render() {
return (
<Mutation
@@ -33,33 +31,33 @@ class Signin extends Component {
variables={this.state}
refetchQueries={[{ query: CURRENT_USER_QUERY }]}
>
- {(signin, { loading, error }) => (
+ {(signup, { error, loading }) => (
<Form
- onSubmit={e => {
+ method="post"
+ onSubmit={async e => {
e.preventDefault();
- signin();
+ await signup();
+ this.setState({ name: '', email: '', password: '' });
}}
>
- <Error error={error} />
<fieldset disabled={loading} aria-busy={loading}>
+ <h2>Sign into your account</h2>
+ <Error error={error} />
<label htmlFor="email">
Email
<input
- value={this.state.email}
- onChange={this.saveToState}
+ type="email"
name="email"
- type="text"
placeholder="email"
+ value={this.state.email}
+ onChange={this.saveToState}
/>
</label>
-
<label htmlFor="password">
Password
<input
type="password"
name="password"
- id="password"
- className="password"
placeholder="password"
value={this.state.password}
onChange={this.saveToState}
@@ -76,4 +74,3 @@ class Signin extends Component {
}
export default Signin;
-export { SIGNIN_MUTATION };
diff --git a/finished-application/frontend/components/Signout.js b/stepped-solutions/FINISHED/frontend/components/Signout.js
index ae87631..f852531 100644
--- a/finished-application/frontend/components/Signout.js
+++ b/stepped-solutions/FINISHED/frontend/components/Signout.js
@@ -11,15 +11,9 @@ const SIGN_OUT_MUTATION = gql`
}
`;
-class Signout extends Component {
- render() {
- return (
- <Mutation mutation={SIGN_OUT_MUTATION} refetchQueries={[{ query: CURRENT_USER_QUERY }]}>
- {signout => <button onClick={signout}>Sign Out</button>}
- </Mutation>
- );
- }
-}
-
+const Signout = props => (
+ <Mutation mutation={SIGN_OUT_MUTATION} refetchQueries={[{ query: CURRENT_USER_QUERY }]}>
+ {signout => <button onClick={signout}>Sign Out</button>}
+ </Mutation>
+);
export default Signout;
-export { SIGN_OUT_MUTATION };
diff --git a/finished-application/frontend/components/Signup.js b/stepped-solutions/FINISHED/frontend/components/Signup.js
index 9164e67..e2f1a3f 100644
--- a/finished-application/frontend/components/Signup.js
+++ b/stepped-solutions/FINISHED/frontend/components/Signup.js
@@ -1,9 +1,9 @@
import React, { Component } from 'react';
import { Mutation } from 'react-apollo';
import gql from 'graphql-tag';
-import { CURRENT_USER_QUERY } from './User';
import Form from './styles/Form';
import Error from './ErrorMessage';
+import { CURRENT_USER_QUERY } from './User';
const SIGNUP_MUTATION = gql`
mutation SIGNUP_MUTATION($email: String!, $name: String!, $password: String!) {
@@ -17,16 +17,13 @@ const SIGNUP_MUTATION = gql`
class Signup extends Component {
state = {
- email: '',
name: '',
+ email: '',
password: '',
};
-
saveToState = e => {
- const { name, value } = e.target;
- this.setState({ [name]: value });
+ this.setState({ [e.target.name]: e.target.value });
};
-
render() {
return (
<Mutation
@@ -34,28 +31,28 @@ class Signup extends Component {
variables={this.state}
refetchQueries={[{ query: CURRENT_USER_QUERY }]}
>
- {(signup, { loading, error }) => (
+ {(signup, { error, loading }) => (
<Form
method="post"
onSubmit={async e => {
e.preventDefault();
- const res = await signup();
+ await signup();
+ this.setState({ name: '', email: '', password: '' });
}}
>
<fieldset disabled={loading} aria-busy={loading}>
+ <h2>Sign Up for An Account</h2>
<Error error={error} />
- <h2>Sign Up for an Account</h2>
<label htmlFor="email">
Email
<input
- value={this.state.email}
- onChange={this.saveToState}
+ type="email"
name="email"
- type="text"
placeholder="email"
+ value={this.state.email}
+ onChange={this.saveToState}
/>
</label>
-
<label htmlFor="name">
Name
<input
@@ -66,21 +63,18 @@ class Signup extends Component {
onChange={this.saveToState}
/>
</label>
-
- <label htmlFor="signupPassword">
+ <label htmlFor="password">
Password
<input
type="password"
name="password"
- id="signupPassword"
- className="password"
placeholder="password"
value={this.state.password}
onChange={this.saveToState}
/>
</label>
- <button type="submit">Submit</button>
+ <button type="submit">Sign Up!</button>
</fieldset>
</Form>
)}
diff --git a/stepped-solutions/FINISHED/frontend/components/SingleItem.js b/stepped-solutions/FINISHED/frontend/components/SingleItem.js
new file mode 100644
index 0000000..145b5ae
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/SingleItem.js
@@ -0,0 +1,70 @@
+import React, { Component } from 'react';
+import gql from 'graphql-tag';
+import { Query } from 'react-apollo';
+import Error from './ErrorMessage';
+import styled from 'styled-components';
+import Head from 'next/head';
+
+const SingleItemStyles = styled.div`
+ max-width: 1200px;
+ margin: 2rem auto;
+ box-shadow: ${props => props.theme.bs};
+ display: grid;
+ grid-auto-columns: 1fr;
+ grid-auto-flow: column;
+ min-height: 800px;
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+ }
+ .details {
+ margin: 3rem;
+ font-size: 2rem;
+ }
+`;
+
+const SINGLE_ITEM_QUERY = gql`
+ query SINGLE_ITEM_QUERY($id: ID!) {
+ item(where: { id: $id }) {
+ id
+ title
+ description
+ largeImage
+ }
+ }
+`;
+class SingleItem extends Component {
+ render() {
+ return (
+ <Query
+ query={SINGLE_ITEM_QUERY}
+ variables={{
+ id: this.props.id,
+ }}
+ >
+ {({ error, loading, data }) => {
+ if (error) return <Error error={error} />;
+ if (loading) return <p>Loading...</p>;
+ if (!data.item) return <p>No Item Found for {this.props.id}</p>;
+ const item = data.item;
+ return (
+ <SingleItemStyles>
+ <Head>
+ <title>Sick Fits | {item.title}</title>
+ </Head>
+ <img src={item.largeImage} alt={item.title} />
+ <div className="details">
+ <h2>Viewing {item.title}</h2>
+ <p>{item.description}</p>
+ </div>
+ </SingleItemStyles>
+ );
+ }}
+ </Query>
+ );
+ }
+}
+
+export default SingleItem;
+export { SINGLE_ITEM_QUERY };
diff --git a/stepped-solutions/FINISHED/frontend/components/TakeMyMoney.js b/stepped-solutions/FINISHED/frontend/components/TakeMyMoney.js
new file mode 100644
index 0000000..ca87832
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/TakeMyMoney.js
@@ -0,0 +1,79 @@
+import React from 'react';
+import StripeCheckout from 'react-stripe-checkout';
+import { Mutation } from 'react-apollo';
+import Router from 'next/router';
+import NProgress from 'nprogress';
+import PropTypes from 'prop-types';
+import gql from 'graphql-tag';
+import calcTotalPrice from '../lib/calcTotalPrice';
+import Error from './ErrorMessage';
+import User, { CURRENT_USER_QUERY } from './User';
+
+const CREATE_ORDER_MUTATION = gql`
+ mutation createOrder($token: String!) {
+ createOrder(token: $token) {
+ id
+ charge
+ total
+ items {
+ id
+ title
+ }
+ }
+ }
+`;
+
+function totalItems(cart) {
+ return cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0);
+}
+
+class TakeMyMoney extends React.Component {
+ onToken = async (res, createOrder) => {
+ NProgress.start();
+ // manually call the mutation once we have the stripe token
+ const order = await createOrder({
+ variables: {
+ token: res.id,
+ },
+ }).catch(err => {
+ alert(err.message);
+ });
+ Router.push({
+ pathname: '/order',
+ query: { id: order.data.createOrder.id },
+ });
+ };
+ render() {
+ return (
+ <User>
+ {({ data: { me }, loading }) => {
+ if (loading) return null;
+ return (
+ <Mutation
+ mutation={CREATE_ORDER_MUTATION}
+ refetchQueries={[{ query: CURRENT_USER_QUERY }]}
+ >
+ {createOrder => (
+ <StripeCheckout
+ amount={calcTotalPrice(me.cart)}
+ name="Sick Fits"
+ description={`Order of ${totalItems(me.cart)} items!`}
+ image={me.cart.length && me.cart[0].item && me.cart[0].item.image}
+ stripeKey="pk_test_Vtknn6vSdcZWSG2JWvEiWSqC"
+ currency="USD"
+ email={me.email}
+ token={res => this.onToken(res, createOrder)}
+ >
+ {this.props.children}
+ </StripeCheckout>
+ )}
+ </Mutation>
+ );
+ }}
+ </User>
+ );
+ }
+}
+
+export default TakeMyMoney;
+export { CREATE_ORDER_MUTATION };
diff --git a/stepped-solutions/FINISHED/frontend/components/UpdateItem.js b/stepped-solutions/FINISHED/frontend/components/UpdateItem.js
new file mode 100644
index 0000000..11aef32
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/components/UpdateItem.js
@@ -0,0 +1,117 @@
+import React, { Component } from 'react';
+import { Mutation, Query } from 'react-apollo';
+import gql from 'graphql-tag';
+import Router from 'next/router';
+import Form from './styles/Form';
+import formatMoney from '../lib/formatMoney';
+import Error from './ErrorMessage';
+
+const SINGLE_ITEM_QUERY = gql`
+ query SINGLE_ITEM_QUERY($id: ID!) {
+ item(where: { id: $id }) {
+ id
+ title
+ description
+ price
+ }
+ }
+`;
+const UPDATE_ITEM_MUTATION = gql`
+ mutation UPDATE_ITEM_MUTATION($id: ID!, $title: String, $description: String, $price: Int) {
+ updateItem(id: $id, title: $title, description: $description, price: $price) {
+ id
+ title
+ description
+ price
+ }
+ }
+`;
+
+class UpdateItem extends Component {
+ state = {};
+ handleChange = e => {
+ const { name, type, value } = e.target;
+ const val = type === 'number' ? parseFloat(value) : value;
+ this.setState({ [name]: val });
+ };
+ updateItem = async (e, updateItemMutation) => {
+ e.preventDefault();
+ console.log('Updating Item!!');
+ console.log(this.state);
+ const res = await updateItemMutation({
+ variables: {
+ id: this.props.id,
+ ...this.state,
+ },
+ });
+ console.log('Updated!!');
+ };
+
+ render() {
+ return (
+ <Query
+ query={SINGLE_ITEM_QUERY}
+ variables={{
+ id: this.props.id,
+ }}
+ >
+ {({ data, loading }) => {
+ if (loading) return <p>Loading...</p>;
+ if (!data.item) return <p>No Item Found for ID {this.props.id}</p>;
+ return (
+ <Mutation mutation={UPDATE_ITEM_MUTATION} variables={this.state}>
+ {(updateItem, { loading, error }) => (
+ <Form onSubmit={e => this.updateItem(e, updateItem)}>
+ <Error error={error} />
+ <fieldset disabled={loading} aria-busy={loading}>
+ <label htmlFor="title">
+ Title
+ <input
+ type="text"
+ id="title"
+ name="title"
+ placeholder="Title"
+ required
+ defaultValue={data.item.title}
+ onChange={this.handleChange}
+ />
+ </label>
+
+ <label htmlFor="price">
+ Price
+ <input
+ type="number"
+ id="price"
+ name="price"
+ placeholder="Price"
+ required
+ defaultValue={data.item.price}
+ onChange={this.handleChange}
+ />
+ </label>
+
+ <label htmlFor="description">
+ Description
+ <textarea
+ id="description"
+ name="description"
+ placeholder="Enter A Description"
+ required
+ defaultValue={data.item.description}
+ onChange={this.handleChange}
+ />
+ </label>
+ <button type="submit">Sav{loading ? 'ing' : 'e'} Changes</button>
+ </fieldset>
+ </Form>
+ )}
+ </Mutation>
+ );
+ }}
+ </Query>
+ );
+ }
+}
+
+export default UpdateItem;
+export { UPDATE_ITEM_MUTATION };
diff --git a/finished-application/frontend/components/User.js b/stepped-solutions/FINISHED/frontend/components/User.js
index 19c568d..6f8a4fb 100644
--- a/finished-application/frontend/components/User.js
+++ b/stepped-solutions/FINISHED/frontend/components/User.js
@@ -11,20 +11,16 @@ const CURRENT_USER_QUERY = gql`
permissions
orders {
id
- charge
- total
}
cart {
id
quantity
item {
- __typename
id
- title
price
- description
image
- largeImage
+ title
+ description
}
}
}
@@ -33,7 +29,7 @@ const CURRENT_USER_QUERY = gql`
const User = props => (
<Query {...props} query={CURRENT_USER_QUERY}>
- {result => props.children(result)}
+ {payload => props.children(payload)}
</Query>
);
diff --git a/finished-application/frontend/components/styles/CartStyles.js b/stepped-solutions/FINISHED/frontend/components/styles/CartStyles.js
index d5ee93a..d5ee93a 100644
--- a/finished-application/frontend/components/styles/CartStyles.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/CartStyles.js
diff --git a/finished-application/frontend/components/styles/CloseButton.js b/stepped-solutions/FINISHED/frontend/components/styles/CloseButton.js
index 69fd55c..69fd55c 100644
--- a/finished-application/frontend/components/styles/CloseButton.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/CloseButton.js
diff --git a/finished-application/frontend/components/styles/DropDown.js b/stepped-solutions/FINISHED/frontend/components/styles/DropDown.js
index df86aee..df86aee 100644
--- a/finished-application/frontend/components/styles/DropDown.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/DropDown.js
diff --git a/finished-application/frontend/components/styles/Form.js b/stepped-solutions/FINISHED/frontend/components/styles/Form.js
index 5717130..5717130 100644
--- a/finished-application/frontend/components/styles/Form.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/Form.js
diff --git a/finished-application/frontend/components/styles/ItemStyles.js b/stepped-solutions/FINISHED/frontend/components/styles/ItemStyles.js
index b117d5f..b117d5f 100644
--- a/finished-application/frontend/components/styles/ItemStyles.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/ItemStyles.js
diff --git a/finished-application/frontend/components/styles/NavStyles.js b/stepped-solutions/FINISHED/frontend/components/styles/NavStyles.js
index 41523df..fe4abda 100644
--- a/finished-application/frontend/components/styles/NavStyles.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/NavStyles.js
@@ -18,6 +18,8 @@ const NavStyles = styled.ul`
background: none;
border: 0;
cursor: pointer;
+ color: ${props => props.theme.black};
+ font-weight: 800;
@media (max-width: 700px) {
font-size: 10px;
padding: 0 10px;
diff --git a/finished-application/frontend/components/styles/OrderItemStyles.js b/stepped-solutions/FINISHED/frontend/components/styles/OrderItemStyles.js
index 292c75d..292c75d 100644
--- a/finished-application/frontend/components/styles/OrderItemStyles.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/OrderItemStyles.js
diff --git a/finished-application/frontend/components/styles/OrderStyles.js b/stepped-solutions/FINISHED/frontend/components/styles/OrderStyles.js
index 4a2d804..f461b70 100644
--- a/finished-application/frontend/components/styles/OrderStyles.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/OrderStyles.js
@@ -30,7 +30,6 @@ const OrderStyles = styled.div`
padding-bottom: 2rem;
img {
width: 100%;
- height: 100%;
object-fit: cover;
}
}
diff --git a/finished-application/frontend/components/styles/PaginationStyles.js b/stepped-solutions/FINISHED/frontend/components/styles/PaginationStyles.js
index 30753af..30753af 100644
--- a/finished-application/frontend/components/styles/PaginationStyles.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/PaginationStyles.js
diff --git a/finished-application/frontend/components/styles/PriceTag.js b/stepped-solutions/FINISHED/frontend/components/styles/PriceTag.js
index 9116681..9116681 100644
--- a/finished-application/frontend/components/styles/PriceTag.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/PriceTag.js
diff --git a/finished-application/frontend/components/styles/SickButton.js b/stepped-solutions/FINISHED/frontend/components/styles/SickButton.js
index 5b5352e..5b5352e 100644
--- a/finished-application/frontend/components/styles/SickButton.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/SickButton.js
diff --git a/finished-application/frontend/components/styles/Supreme.js b/stepped-solutions/FINISHED/frontend/components/styles/Supreme.js
index d946ccd..d946ccd 100644
--- a/finished-application/frontend/components/styles/Supreme.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/Supreme.js
diff --git a/finished-application/frontend/components/styles/Table.js b/stepped-solutions/FINISHED/frontend/components/styles/Table.js
index e9d0673..b2cd6c4 100644
--- a/finished-application/frontend/components/styles/Table.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/Table.js
@@ -11,7 +11,7 @@ const Table = styled.table`
th {
border-bottom: 1px solid ${props => props.theme.offWhite};
border-right: 1px solid ${props => props.theme.offWhite};
- padding: 10px 5px;
+ padding: 5px;
position: relative;
&:last-child {
border-right: none;
@@ -20,6 +20,10 @@ const Table = styled.table`
width: 100%;
}
}
+ label {
+ padding: 10px 5px;
+ display: block;
+ }
}
tr {
&:hover {
diff --git a/finished-application/frontend/components/styles/Title.js b/stepped-solutions/FINISHED/frontend/components/styles/Title.js
index e1901ec..e1901ec 100644
--- a/finished-application/frontend/components/styles/Title.js
+++ b/stepped-solutions/FINISHED/frontend/components/styles/Title.js
diff --git a/stepped-solutions/FINISHED/frontend/config.js b/stepped-solutions/FINISHED/frontend/config.js
new file mode 100644
index 0000000..ae41c54
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/config.js
@@ -0,0 +1,4 @@
+// This is client side config only - don't put anything in here that shouldn't be public!
+export const endpoint = `http://localhost:4444`;
+export const prodEndpoint = `https://sickfits-yoga-prod.herokuapp.com/`;
+export const perPage = 4;
diff --git a/finished-application/frontend/jest.setup.js b/stepped-solutions/FINISHED/frontend/jest.setup.js
index 82edfc9..82edfc9 100644
--- a/finished-application/frontend/jest.setup.js
+++ b/stepped-solutions/FINISHED/frontend/jest.setup.js
diff --git a/finished-application/frontend/lib/calcTotalPrice.js b/stepped-solutions/FINISHED/frontend/lib/calcTotalPrice.js
index 4822468..4822468 100644
--- a/finished-application/frontend/lib/calcTotalPrice.js
+++ b/stepped-solutions/FINISHED/frontend/lib/calcTotalPrice.js
diff --git a/finished-application/frontend/lib/formatMoney.js b/stepped-solutions/FINISHED/frontend/lib/formatMoney.js
index c001aee..c001aee 100644
--- a/finished-application/frontend/lib/formatMoney.js
+++ b/stepped-solutions/FINISHED/frontend/lib/formatMoney.js
diff --git a/finished-application/frontend/lib/testUtils.js b/stepped-solutions/FINISHED/frontend/lib/testUtils.js
index 42739e9..42739e9 100644
--- a/finished-application/frontend/lib/testUtils.js
+++ b/stepped-solutions/FINISHED/frontend/lib/testUtils.js
diff --git a/finished-application/frontend/lib/withData.js b/stepped-solutions/FINISHED/frontend/lib/withData.js
index 0256ba9..c5cce8d 100644
--- a/finished-application/frontend/lib/withData.js
+++ b/stepped-solutions/FINISHED/frontend/lib/withData.js
@@ -1,11 +1,11 @@
import withApollo from 'next-with-apollo';
import ApolloClient from 'apollo-boost';
+import { endpoint, prodEndpoint } from '../config';
import { LOCAL_STATE_QUERY } from '../components/Cart';
-import { endpoint } from '../config';
function createClient({ headers }) {
return new ApolloClient({
- uri: process.env.NODE_ENV === 'development' ? endpoint : endpoint,
+ uri: process.env.NODE_ENV === 'development' ? endpoint : prodEndpoint,
request: operation => {
operation.setContext({
fetchOptions: {
@@ -14,12 +14,19 @@ function createClient({ headers }) {
headers,
});
},
+ // local data
clientState: {
resolvers: {
Mutation: {
toggleCart(_, variables, { cache }) {
- const { cartOpen } = cache.readQuery({ query: LOCAL_STATE_QUERY });
- const data = { data: { cartOpen: !cartOpen } };
+ // read the cartOpen value from the cache
+ const { cartOpen } = cache.readQuery({
+ query: LOCAL_STATE_QUERY,
+ });
+ // Write the cart State to the opposite
+ const data = {
+ data: { cartOpen: !cartOpen },
+ };
cache.writeData(data);
return data;
},
diff --git a/finished-application/frontend/notes.md b/stepped-solutions/FINISHED/frontend/notes.md
index 9ea38ef..9ea38ef 100644
--- a/finished-application/frontend/notes.md
+++ b/stepped-solutions/FINISHED/frontend/notes.md
diff --git a/finished-application/frontend/package-lock.json b/stepped-solutions/FINISHED/frontend/package-lock.json
index aba4448..592eccb 100644
--- a/finished-application/frontend/package-lock.json
+++ b/stepped-solutions/FINISHED/frontend/package-lock.json
@@ -6,7 +6,7 @@
"dependencies": {
"@babel/code-frame": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.42.tgz",
"integrity": "sha512-L8i94FLSyaLQpRfDo/qqSm8Ndb44zMtXParXo0MebJICG1zoCCL4+GkzUOlB4BNTRSXXQdb3feam/qw7bKPipQ==",
"requires": {
"@babel/highlight": "7.0.0-beta.42"
@@ -14,7 +14,7 @@
},
"@babel/core": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.42.tgz",
"integrity": "sha512-jcjZRewF/xqROfbk8EGyWlykaIR3IwrcefjWHu8xh4QnULSv3nfkjPM35v1itDgAT4/Jj5b4mPf4eZSC2HoRQA==",
"requires": {
"@babel/code-frame": "7.0.0-beta.42",
@@ -32,23 +32,11 @@
"resolve": "^1.3.2",
"semver": "^5.4.1",
"source-map": "^0.5.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/generator": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.42.tgz",
"integrity": "sha512-9x3zS4nG/6GAvJWB8fAK+5g/Di36xdubB43dMNSucNJTwPvmyfCippir/0I8zyG+ID66hLCLi8V9bomlWRYaHA==",
"requires": {
"@babel/types": "7.0.0-beta.42",
@@ -56,221 +44,101 @@
"lodash": "^4.2.0",
"source-map": "^0.5.0",
"trim-right": "^1.0.1"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-annotate-as-pure": {
- "version": "7.0.0-beta.47",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.47.tgz",
- "integrity": "sha512-Pjxb/PrxyKWc7jcAXlawvNAQMxxY+tSSNC5wxJstJjpO10mocmGzBOqNYjxdvVhMb3d0BEPQ8mR+D65fFpZ+TA==",
+ "version": "7.0.0-beta.42",
+ "resolved": "http://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.42.tgz",
+ "integrity": "sha512-2lmcB7mHRSXZjDV9fdnWGRco+5fbI0PdUtsL7mNA2GtJs0GPoKdV3sCx0N4cpzG2YRR4dNCiB2riYIrzWjmQ1Q==",
"requires": {
- "@babel/types": "7.0.0-beta.47"
+ "@babel/types": "7.0.0-beta.42"
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.42.tgz",
"integrity": "sha512-lI14OS85dMAvsjTNTLrk3qqqvmy4CNxgXGpWkjMuKlYzwnC7LQvdrdH7wf3CBl8C0GSZHbgvADMUtrKiNjxJ5w==",
"requires": {
"@babel/helper-explode-assignable-expression": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-builder-react-jsx": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-beta.42.tgz",
"integrity": "sha512-pgy7el3TV5u4SdWB9w1No5X0fooc8pWcVujbOzey+b9CQU5cf64CGct01bs+k7vGoKwoTYWizZD9MeFk2JLawg==",
"requires": {
"@babel/types": "7.0.0-beta.42",
"esutils": "^2.0.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-call-delegate": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.42.tgz",
"integrity": "sha512-iGZJrRSKIvla9m8VJNv8wlbPReOLmVqFTpefl07v6e5cMPvP2XOgVWR2B4HZ9UwVo7Lx8rPAQ8/UZgjvq+pJ+A==",
"requires": {
"@babel/helper-hoist-variables": "7.0.0-beta.42",
"@babel/traverse": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-define-map": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.42.tgz",
"integrity": "sha512-MKaHNaciAiPc7q4AS2XRqk+I0d2ADryuIxd6r0EykkQ57w2nQxFx/CTWWQEnob9OSAP5dPO1stWIZ9j/VeKtIQ==",
"requires": {
"@babel/helper-function-name": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42",
"lodash": "^4.2.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-explode-assignable-expression": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.42.tgz",
"integrity": "sha512-fT1kVF2PoogggBT9QBgb4IXjbpC3VzFh1sJ6p/k3fZhOXbyqqco7oQ6lzvcIAO6rA7b15/iaIyLj0E+SLCHbwQ==",
"requires": {
"@babel/traverse": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-function-name": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.42.tgz",
"integrity": "sha512-6IZ+kkPypwJrnmNzI3y31qAps2kXoPtCE241SvBva2YzB0n/YORWx2YM0jHPYOJBU9Xx5KkUhOKuWkeXZQgtTA==",
"requires": {
"@babel/helper-get-function-arity": "7.0.0-beta.42",
"@babel/template": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-get-function-arity": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.42.tgz",
"integrity": "sha512-hF5KKcn+V/5PwU7KZ1aVwo535woLC9eV+djaoyNPZeMMJ2s+8bZlEa66Tarei0T68VRL5LXIs1Ao4hSabSkpBg==",
"requires": {
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-hoist-variables": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.42.tgz",
"integrity": "sha512-07NJrcvE2a5oOYiQUzSzih21R6nOpfoIe9saelKxORKXr9cOXcpoLXDi9XIAbRJoww8hqp57JbQxRK09FltZhQ==",
"requires": {
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-module-imports": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.42.tgz",
"integrity": "sha512-0kTX0cjuVKUKDJmHjmAb504kNrwae0Ja32hGii7zSHDKm0tVZvvpT8Cc1yYHo6UsIkUmzEvfGwIrNYemx1jTtQ==",
"requires": {
"@babel/types": "7.0.0-beta.42",
"lodash": "^4.2.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-module-transforms": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.42.tgz",
"integrity": "sha512-XfCGsf6ijExiXw+oKL1Cp7VJttvgq8qalTGRqz4pviVNEjHU89Pfjsi1K/shdy5x4x+PiTSqn4zZ2PKfVp+vgg==",
"requires": {
"@babel/helper-module-imports": "7.0.0-beta.42",
@@ -279,48 +147,24 @@
"@babel/template": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42",
"lodash": "^4.2.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-optimise-call-expression": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.42.tgz",
"integrity": "sha512-4Sssg3iFnLH/1fZQFCPNJ7ISZzrRwq/X8/T5OaURGP3NMVTR4mnEUqrc3v8/SfL3pfa57q3Fe4zIC2h7FuPkww==",
"requires": {
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-plugin-utils": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.42.tgz",
"integrity": "sha512-hZLw8Iz9/YOxI9mgWyPOP1S84OcdQo1WFkZrS1sSf45g16sEb4dVslds2uvZgmx9BiG94PoWyABGf48Py6D6CA=="
},
"@babel/helper-regex": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.42.tgz",
"integrity": "sha512-QdwTsTPjJ63StltU6cEtqmB0Lc+L/OkK9Pz2bL9rylDF3UloyXinBA+SI/FkVyXi5HhDbBRf4T/OeVhWrsK68A==",
"requires": {
"lodash": "^4.2.0"
@@ -328,7 +172,7 @@
},
"@babel/helper-remap-async-to-generator": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.42.tgz",
"integrity": "sha512-At+ipbHRYoN0AaafqPvTPqyVYi+beantKZ2orCYSb/AzP2+JywaWlOPH0wyXLOGzjkJX548Is4cV2wGbEG7++Q==",
"requires": {
"@babel/helper-annotate-as-pure": "7.0.0-beta.42",
@@ -336,151 +180,78 @@
"@babel/template": "7.0.0-beta.42",
"@babel/traverse": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/helper-annotate-as-pure": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.42.tgz",
- "integrity": "sha512-2lmcB7mHRSXZjDV9fdnWGRco+5fbI0PdUtsL7mNA2GtJs0GPoKdV3sCx0N4cpzG2YRR4dNCiB2riYIrzWjmQ1Q==",
- "requires": {
- "@babel/types": "7.0.0-beta.42"
- }
- },
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-replace-supers": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.42.tgz",
"integrity": "sha512-5OwdkTm7TaEBiBMOUV97j8a2goD3+avek9EOl/UdE/CYdtdQ/8RPdUPqtqXApay30aZ/EjIpBItcNlBtt29WBw==",
"requires": {
"@babel/helper-optimise-call-expression": "7.0.0-beta.42",
"@babel/template": "7.0.0-beta.42",
"@babel/traverse": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-simple-access": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.42.tgz",
"integrity": "sha512-SK1nb/sx+Q/0N8USPR+/5G1D1U9tCo82MzJknmK7X4yexDacHmDHtqNP7xqUlSSo3xfMfyHgT7mAH17Cwik/gA==",
"requires": {
"@babel/template": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42",
"lodash": "^4.2.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-split-export-declaration": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.42.tgz",
"integrity": "sha512-2r8pZG6SAJTTaI2OhxCmz5PKlMUPY5adOHrHtb1gM3ibJPDOzPAeOQNzItdxNnM33jjRakEGitXX6iYg7Sz73w==",
"requires": {
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helper-wrap-function": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.42.tgz",
"integrity": "sha512-jpZDbZROEw2HfmlImLXDB7BFoyo6M/Wn8jOOc1+JfCpg2uaZ+n6Q0C3sA6mCN6o7ZgpJkgT7IHQwdB3RMV6KLA==",
"requires": {
"@babel/helper-function-name": "7.0.0-beta.42",
"@babel/template": "7.0.0-beta.42",
"@babel/traverse": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/helpers": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.42.tgz",
"integrity": "sha512-att9SiG9GxOUdjai87LqjSstgNsdo1nXiGu+Eh078zwRiN8bM5Ww8vrbYkAm9PF4HaW6OzOKqyKxv595RT79bA==",
"requires": {
"@babel/template": "7.0.0-beta.42",
"@babel/traverse": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/highlight": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.42.tgz",
"integrity": "sha512-X3Ur/A/lIbbP8W0pmwgqtDXIxhQmxPaiwY9SKP7kF9wvZfjZRwMvbJE92ozUhF3UDK3DCKaV7oGqmI1rP/zqWA==",
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^3.0.0"
+ },
+ "dependencies": {
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ }
}
},
"@babel/plugin-proposal-async-generator-functions": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.42.tgz",
"integrity": "sha512-fPPsSCajWzefDSb49JEeZfd/UeMK3xEQSRAz/H3BZ1uaRatwNNZoOJq4/WRH/xDeISmYUdkLRtqs39VPWLKYVg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -490,7 +261,7 @@
},
"@babel/plugin-proposal-class-properties": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.42.tgz",
"integrity": "sha512-VXRmo/t2nAVciXxEgPTAfcUBXj0UXNPIvX2aj3lzHL51N+uh+rtgsIF0nuZwGE4u89WvBDH66yjAu60Ra674kw==",
"requires": {
"@babel/helper-function-name": "7.0.0-beta.42",
@@ -500,7 +271,7 @@
},
"@babel/plugin-proposal-object-rest-spread": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.42.tgz",
"integrity": "sha512-L4z5R8k3GxQKVYE2zGwftQ9K/IIIXMZKnY4C0lDyyMJAVk+H+cFUD0NfD4KTyZACc8DPqjkw6aEtC/AKCKUvEA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -509,7 +280,7 @@
},
"@babel/plugin-proposal-optional-catch-binding": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.42.tgz",
"integrity": "sha512-hD8HTOKzLqMXwKkqX+Qiig8aqsCoZ9k9Y0I3zLjkpYh7HBPoPhUhlN6McxtPHGRjM/qBCNcLCwtWuJetK/cNZg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -518,7 +289,7 @@
},
"@babel/plugin-proposal-unicode-property-regex": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.42.tgz",
"integrity": "sha512-aUEpQFuQydhs20dQSkz7edWkRaNHt8rVfcqHy5ykR4dqflq7+EclnuljuzIS+MJ3V8i5cyLMEXv/W1uWWf7UGg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -528,7 +299,7 @@
},
"@babel/plugin-syntax-async-generators": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.42.tgz",
"integrity": "sha512-k6oVMsmY/mcp+rPRcK4dJL/J1ahtIRucXtNHNvAVRV9WFc7G3r1rrb1GlM4iNHareXBNdRlf7mkxyVaVpyJ3TQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -536,7 +307,7 @@
},
"@babel/plugin-syntax-class-properties": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.42.tgz",
"integrity": "sha512-nG0XCeuni6GgjxOqtxVtnfSoRFeXdqY6cja83cmFpC1klw8f6XShbeDmK7xX1mUYBHkEqLTDurlX+fuua9siCg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -544,7 +315,7 @@
},
"@babel/plugin-syntax-dynamic-import": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.42.tgz",
"integrity": "sha512-N+XpzyZviWu+MJA7Cgi+LtMj1CMLkZyjuy4qbSZauqm6gIrNioMtirLDt4+NrCFx7kZG/T4ic6jLUpWdH5SlXg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -552,7 +323,7 @@
},
"@babel/plugin-syntax-jsx": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.42.tgz",
"integrity": "sha512-NWlawLcYkxMpH2QK4CbYg1ctTuFaKYRVBZGiGkgcO7xD59bNUu2HTG/BXynuaheQiGX96ItoK1igV6vuS9BK/w==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -560,7 +331,7 @@
},
"@babel/plugin-syntax-object-rest-spread": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.42.tgz",
"integrity": "sha512-Zhz6MdSpEviY3UFh/DUlrvf/Tn4wWosHXrnR52PBRtP/8ESWVaFuk57xWcBon3jJh0z5hYyRUr+D0wR7W7ZmnQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -568,7 +339,7 @@
},
"@babel/plugin-syntax-optional-catch-binding": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.42.tgz",
"integrity": "sha512-TXJpGMX/M9r0tkJPgZtoaBCdrhFMeAZtOiwNtVf5dWoA6TOmDwnnnbaUqynbBZm16jE7quWW5VhfFjDlOP1vMA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -576,7 +347,7 @@
},
"@babel/plugin-transform-arrow-functions": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.42.tgz",
"integrity": "sha512-/tpAo2Ur8m32U9pBcGQ6JKplWNEh462zxCnwVKL9yVwG02lttC4QSYBvreRK1wBidDz8JgRZFGGeB9N4l23/Sg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -584,7 +355,7 @@
},
"@babel/plugin-transform-async-to-generator": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.42.tgz",
"integrity": "sha512-TTu8z0xz/mS8H98nCVw3wp86RSzdvUhtM4hX32sItrauJX1X8shVZDKbDtG8ZdA1FMKLgfvmn/hxtPOqjOkkpw==",
"requires": {
"@babel/helper-module-imports": "7.0.0-beta.42",
@@ -594,7 +365,7 @@
},
"@babel/plugin-transform-block-scoped-functions": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.42.tgz",
"integrity": "sha512-Ib3bSf7pYLbqe+46RrJFJae1DrNYvIrGleYjzaN/MFYNaG9ePaOevSBmFHPxuW1SM5l2tTloeu5a7mhs9h0oxg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -602,7 +373,7 @@
},
"@babel/plugin-transform-block-scoping": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.42.tgz",
"integrity": "sha512-qvlAR1L7gZ1gqdj81a2AEfuar3lFsr7FSad4JrN5CJinQlVn/1eJe8oB1DQ7U8ocAzDDjn3tGit9lN7uKBWZsQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -611,7 +382,7 @@
},
"@babel/plugin-transform-classes": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.42.tgz",
"integrity": "sha512-0GCv1wNyfMXKuaulype6+TF02Bxq/zQZ4NUbn2w9aQxzIZviAe1jcA7IRrNN2eVQL9L4oi8N6B26Wf8xFoBNrQ==",
"requires": {
"@babel/helper-annotate-as-pure": "7.0.0-beta.42",
@@ -622,31 +393,11 @@
"@babel/helper-replace-supers": "7.0.0-beta.42",
"@babel/helper-split-export-declaration": "7.0.0-beta.42",
"globals": "^11.1.0"
- },
- "dependencies": {
- "@babel/helper-annotate-as-pure": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.42.tgz",
- "integrity": "sha512-2lmcB7mHRSXZjDV9fdnWGRco+5fbI0PdUtsL7mNA2GtJs0GPoKdV3sCx0N4cpzG2YRR4dNCiB2riYIrzWjmQ1Q==",
- "requires": {
- "@babel/types": "7.0.0-beta.42"
- }
- },
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/plugin-transform-computed-properties": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.42.tgz",
"integrity": "sha512-WYGXfe2uo2FdACubMhwV6Oq1Zx3SNSeBUHRe2X53WKbIKLMZlxRR5GfoLv4V2CeDGHL3mb97wYhmXSb56bIXeg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -654,7 +405,7 @@
},
"@babel/plugin-transform-destructuring": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.42.tgz",
"integrity": "sha512-G3hwLdgeKCZ8EWqwMqeOEoXxRBc5aJthMUD5kN7sAIko+lvwIVQ0do9Op/+DAGVnrvC+g0Ool2Mihcej2NsCPQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -662,7 +413,7 @@
},
"@babel/plugin-transform-dotall-regex": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.42.tgz",
"integrity": "sha512-g/XbJzib6qmbHOJv/2n/bVKLcfJUBRSo9zO73O7lvJEYh8JvHWM/oVU829ztVPpdPT3xgHMiTVhnV/O5r5dYNA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -672,7 +423,7 @@
},
"@babel/plugin-transform-duplicate-keys": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.42.tgz",
"integrity": "sha512-Nze+na6pnoZdrMtQv5Ct/i3031ib+kctDwt8KgcrtnOr52qUlbogPe1jY2WxpwSMtiowdPY93XsRFZeq6ogMTA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -680,7 +431,7 @@
},
"@babel/plugin-transform-exponentiation-operator": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.42.tgz",
"integrity": "sha512-ylnAziSEho282hxQROK5tbNtxm0sSoQaQS74OCSE52eFeDNqSNGapyiNiWMZ71gqs8q5aqYsPgfa/vTccLT7uA==",
"requires": {
"@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.42",
@@ -689,7 +440,7 @@
},
"@babel/plugin-transform-for-of": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.42.tgz",
"integrity": "sha512-pn+fmrr6pfXeEUMyx7JrKAOG/XCiABvXFOmQYqLoCl0POcW8sE75r8w/Lu2wHFayrNgDqR7/RCb7RW4h/U2u1Q==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -697,7 +448,7 @@
},
"@babel/plugin-transform-function-name": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.42.tgz",
"integrity": "sha512-OopJXZQAgBsPUAHr49Z4S4X24XJa9Iu0zPUPCML9weHloyFnkw5SGQIDLC6BxxPOmqfiB49gfIuHjbtJfUsOJw==",
"requires": {
"@babel/helper-function-name": "7.0.0-beta.42",
@@ -706,7 +457,7 @@
},
"@babel/plugin-transform-literals": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.42.tgz",
"integrity": "sha512-mWEayRwUCY3/u8LZpcdR96TiWqofP60jjfVZUJ6agK6ifwEBgamv1Db8syIwUCjaZww5bjyZqX61AmP4fx3dvQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -714,7 +465,7 @@
},
"@babel/plugin-transform-modules-amd": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.42.tgz",
"integrity": "sha512-JCNM+WPKImpNHVLZG6x9F87AyX+K8KpMCkuCqyE7YgxAJWB+5FHVnpkdF6lprDilE/LXGwplmNb9OrWulMss2g==",
"requires": {
"@babel/helper-module-transforms": "7.0.0-beta.42",
@@ -723,7 +474,7 @@
},
"@babel/plugin-transform-modules-commonjs": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.42.tgz",
"integrity": "sha512-tCN0FFdTHaXpuJokvW8iWtbDpjKDNDO2dIyb8rr0GMQxsA62914e8oclcDUPEbC5iF5SCDEF0CmVHXbxnvANfQ==",
"requires": {
"@babel/helper-module-transforms": "7.0.0-beta.42",
@@ -733,7 +484,7 @@
},
"@babel/plugin-transform-modules-systemjs": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.42.tgz",
"integrity": "sha512-IEN3HVHpMPWrnI2EAEHg0248+Axkg2nrdspajefIyeZMlrN0dUt0gDgVsZtza5PK/1a+RZlpli7dDgcA7heTMg==",
"requires": {
"@babel/helper-hoist-variables": "7.0.0-beta.42",
@@ -742,7 +493,7 @@
},
"@babel/plugin-transform-modules-umd": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.42.tgz",
"integrity": "sha512-yOA2qnk4snRxkdgKDp6xN+by3V3z8q14cDf/aB0j36Jv2YqpDWUWMMWLQjabCEE/l7ptePBS4qbFH8dffCm4Tg==",
"requires": {
"@babel/helper-module-transforms": "7.0.0-beta.42",
@@ -751,7 +502,7 @@
},
"@babel/plugin-transform-new-target": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.42.tgz",
"integrity": "sha512-P2zwIIeTOev0Xjo//4p7ugtsWazIsycbs/T6I/ghiV2lREFxo9s93fygbXNXt5ALRPRWDthiAYIDA9n1vrgkVg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -759,7 +510,7 @@
},
"@babel/plugin-transform-object-super": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.42.tgz",
"integrity": "sha512-d+gki0bYQtlleX4LnvpwjIkjmZScKQuHhDsD3N3nHLpwxbANp3YGtIfuf8dbY/PIbUKtd55/ErCvdsyuGlxAlw==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -768,7 +519,7 @@
},
"@babel/plugin-transform-parameters": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.42.tgz",
"integrity": "sha512-z2iXwael/zMHkOvvkJSirg1jIxGA00JOIwdERB+x+VGxLfLb+1IdyiytVw9+w5RTNSVAGYt6R4jhvUdAeQwMiQ==",
"requires": {
"@babel/helper-call-delegate": "7.0.0-beta.42",
@@ -778,7 +529,7 @@
},
"@babel/plugin-transform-react-display-name": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0-beta.42.tgz",
"integrity": "sha512-0oyVkjXLkxXSt21mPdfRNwKZ/sIEjcDx5/LqMS+KtMUxsCcB2BFhtzaESd8xLdXb7Zi2otMjt2DsDK+IUeitxA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -786,7 +537,7 @@
},
"@babel/plugin-transform-react-jsx": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-beta.42.tgz",
"integrity": "sha512-XT8M4cZmr/Gaw6Cp2UELhYajB/PT6xNERtv8d+Eu08fULfAbtZJBFVxmm68T9LT+JZkcI35O1gTP17yJz5PJrA==",
"requires": {
"@babel/helper-builder-react-jsx": "7.0.0-beta.42",
@@ -796,7 +547,7 @@
},
"@babel/plugin-transform-react-jsx-self": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0-beta.42.tgz",
"integrity": "sha512-bpG/Z6D8RtckyYPbqMfU/DaV7H/xHaTNAJLzYLHqQhtQT70pwmLVQ8E6ara18yp7k+6OJytrrmJm9F6ClT4pnA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -805,7 +556,7 @@
},
"@babel/plugin-transform-react-jsx-source": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0-beta.42.tgz",
"integrity": "sha512-vLKqNyFDx4bESdy7dTWLmAhCTk8zszsxhYGKL/0FaFacksSQye5conP68j8jMEMn9M/JBGgxfFqL6tPbOn2uVw==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -814,7 +565,7 @@
},
"@babel/plugin-transform-regenerator": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.42.tgz",
"integrity": "sha512-E1s/MBk8ztbXqxbeUvFH26x8vAWq/7qX3UdbB8fKoN3EX2Wg9+yXWyuI50jOhXOq7jfmbOrVe0BWoUOjCOqWPQ==",
"requires": {
"regenerator-transform": "^0.12.3"
@@ -822,7 +573,7 @@
},
"@babel/plugin-transform-runtime": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0-beta.42.tgz",
"integrity": "sha512-4LcNdjMvKzCwK/eqfbUiXFAZht8OTx0Gv2Ok42o+zhb8DvNUaYUndgW9AU4Q6nbpxzw2vTWNUXSIRvdGsxpgQQ==",
"requires": {
"@babel/helper-module-imports": "7.0.0-beta.42",
@@ -831,7 +582,7 @@
},
"@babel/plugin-transform-shorthand-properties": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.42.tgz",
"integrity": "sha512-GID8z2s6R/XOHgaoxrKBH+zdBOBqFJTDYDS91w30fJGiHxVM4qFVOpYDNIMxmsjqW6bKVHyLeHBezp0OHv+9QQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -839,7 +590,7 @@
},
"@babel/plugin-transform-spread": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.42.tgz",
"integrity": "sha512-ZzWt7RvGcV+9DcOTBwE6ArNqDpUMpzZhCToj3UNtULol9gGBbrGgUK/LdGwGInj+Z2aIdOjbAMFtEuC6626lJg==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -847,7 +598,7 @@
},
"@babel/plugin-transform-sticky-regex": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.42.tgz",
"integrity": "sha512-zQI5NhVfnSNNFiG8JhoXXzTV89aLTfHW22inWefATRmtqe64iHZ4bivBTkDbxt6X/St1yH0aZB+4XtBDZjzcKQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -856,36 +607,16 @@
},
"@babel/plugin-transform-template-literals": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.42.tgz",
"integrity": "sha512-sCQmaa8fd3uPdy/J/qOkvPtxo3RtiH6SyW5bzdnUSOQ3+ND3Bj4OfJNziZxJwZZ8Y40lHrM0dKxZ8YnihlCETQ==",
"requires": {
"@babel/helper-annotate-as-pure": "7.0.0-beta.42",
"@babel/helper-plugin-utils": "7.0.0-beta.42"
- },
- "dependencies": {
- "@babel/helper-annotate-as-pure": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.42.tgz",
- "integrity": "sha512-2lmcB7mHRSXZjDV9fdnWGRco+5fbI0PdUtsL7mNA2GtJs0GPoKdV3sCx0N4cpzG2YRR4dNCiB2riYIrzWjmQ1Q==",
- "requires": {
- "@babel/types": "7.0.0-beta.42"
- }
- },
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/plugin-transform-typeof-symbol": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.42.tgz",
"integrity": "sha512-cuDOzCv7kpMqaLypTEN90ErVmKUV3vjTuO8qzCGlmJMZwCcteTpxCiwISJLnAxcGtj++fMVY0vntbcj4nXf9XQ==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42"
@@ -893,7 +624,7 @@
},
"@babel/plugin-transform-unicode-regex": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.42.tgz",
"integrity": "sha512-iqQ8bhkRPZE2Vl5gR7GF0x4xUVlkncMxr7ve7Rjp/TMzNbO3S2XLr+1SPu+B+U3fIPDDA4I97enw5YL5V7QFOA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -903,7 +634,7 @@
},
"@babel/preset-env": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.42.tgz",
"integrity": "sha512-DawmnYYDbOpMqq0H64iwtZJ7C1xjdwqJXBvAjRKv9WVnKPqZbMMli4JhwO30WnPELzOMGRwtLFAchPcEeyyCpQ==",
"requires": {
"@babel/helper-module-imports": "7.0.0-beta.42",
@@ -949,7 +680,7 @@
},
"@babel/preset-react": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0-beta.42.tgz",
"integrity": "sha512-2o+5MXAzGMnjlZlxsYv08Joh+T4IDd2NIrpeVB+5GgeboU6k0964pObdZxMjB9A2dOweLSCOHwP21JwO6bDUbA==",
"requires": {
"@babel/helper-plugin-utils": "7.0.0-beta.42",
@@ -962,7 +693,7 @@
},
"@babel/runtime": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.42.tgz",
"integrity": "sha512-iOGRzUoONLOtmCvjUsZv3mZzgCT6ljHQY5fr1qG1QIiJQwtM7zbPWGGpa3QWETq+UqwWyJnoi5XZDZRwZDFciQ==",
"requires": {
"core-js": "^2.5.3",
@@ -971,30 +702,18 @@
},
"@babel/template": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.42.tgz",
"integrity": "sha512-EK7YdTe47j4VxlwNvz5bnlk5Jx/wWublnqfgOY2IuSNdxCQgXrLD34PfTnabGxywNSkJkcSo6jwr2JGT+S48dA==",
"requires": {
"@babel/code-frame": "7.0.0-beta.42",
"@babel/types": "7.0.0-beta.42",
"babylon": "7.0.0-beta.42",
"lodash": "^4.2.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/traverse": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.42.tgz",
"integrity": "sha512-DZwMuZBfYVIn/cxpXZzHDgKmarW/MWqplLv1k7QJYhK5r5l6GAac/DkKl75A0CjPYrD3VGco6H6ZQp12QaYKSw==",
"requires": {
"@babel/code-frame": "7.0.0-beta.42",
@@ -1007,27 +726,15 @@
"globals": "^11.1.0",
"invariant": "^2.2.0",
"lodash": "^4.2.0"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
- "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.2.0",
- "to-fast-properties": "^2.0.0"
- }
- }
}
},
"@babel/types": {
- "version": "7.0.0-beta.47",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.47.tgz",
- "integrity": "sha512-MOP5pOosg7JETrVGg8OQyzmUmbyoSopT5j2HlblHsto89mPz3cmxzn1IA4UNUmnWKgeticSwfhS+Gdy25IIlBQ==",
+ "version": "7.0.0-beta.42",
+ "resolved": "http://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.42.tgz",
+ "integrity": "sha512-+pmpISmTHQqMMpHHtDLxcvtRhmn53bAxy8goJfHipS/uy/r3PLcuSdPizLW7DhtBWbtgIKZufLObfnIMoyMNsw==",
"requires": {
"esutils": "^2.0.2",
- "lodash": "^4.17.5",
+ "lodash": "^4.2.0",
"to-fast-properties": "^2.0.0"
}
},
@@ -1039,45 +746,58 @@
},
"@types/graphql": {
"version": "0.12.6",
- "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz",
+ "resolved": "http://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz",
"integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ=="
},
"@types/next": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/@types/next/-/next-2.4.11.tgz",
- "integrity": "sha512-+CvydrdSxS8QCFL1SnkilS6z3sNvDrTny/jHNQnH3nrpsKKEwuDf3ygdnA9E58u6nqvwZiAmieGt8fTrTPm3mA==",
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@types/next/-/next-6.1.4.tgz",
+ "integrity": "sha512-F1BjAghnDlDMJ4X96E+Ft63d7EqJgN6IBOvALG26yv0P+gZsRa/M9trsHzfPbEZKXs08QwVTeoQcjI7Cnci5yg==",
"requires": {
"@types/node": "*",
+ "@types/node-fetch": "*",
"@types/react": "*"
}
},
"@types/node": {
- "version": "9.6.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.18.tgz",
- "integrity": "sha512-lywCnJQRSsu0kitHQ5nkb7Ay/ScdJPQjhWRtuf+G1DmNKJnPcdVyP0pYvdiDFKjzReC6NLWLgSyimno3kKfIig=="
+ "version": "10.9.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz",
+ "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw=="
+ },
+ "@types/node-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.1.2.tgz",
+ "integrity": "sha512-XroxUzLpKuL+CVkQqXlffRkEPi4Gh3Oui/mWyS7ztKiyqVxiU+h3imCW5I2NQmde5jK+3q++36/Q96cyRWsweg==",
+ "requires": {
+ "@types/node": "*"
+ }
},
"@types/prop-types": {
- "version": "15.5.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.3.tgz",
- "integrity": "sha512-sfjHrNF4zWRv3fJUGyZW46wVxhYJ/GeWIPdKxbnLIhY3bWR0Ncl2kIhZI7rpjY9KtUQAkDP8jWEmaGQGFFvruA=="
+ "version": "15.5.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.5.tgz",
+ "integrity": "sha512-mOrlCEdwX3seT3n0AXNt4KNPAZZxcsABUHwBgFXOt+nvFUXkxCAO6UBJHPrDxWEa2KDMil86355fjo8jbZ+K0Q==",
+ "requires": {
+ "@types/react": "*"
+ }
},
"@types/react": {
- "version": "16.3.14",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.14.tgz",
- "integrity": "sha512-wNUGm49fPl7eE2fnYdF0v5vSOrUMdKMQD/4NwtQRnb6mnPwtkhabmuFz37eq90+hhyfz0pWd38jkZHOcaZ6LGw==",
+ "version": "16.4.14",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.4.14.tgz",
+ "integrity": "sha512-Gh8irag2dbZ2K6vPn+S8+LNrULuG3zlCgJjVUrvuiUK7waw9d9CFk2A/tZFyGhcMDUyO7tznbx1ZasqlAGjHxA==",
"requires": {
+ "@types/prop-types": "*",
"csstype": "^2.2.0"
}
},
"@types/zen-observable": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.3.tgz",
- "integrity": "sha512-aDvGDAHcVfUqNmd8q4//cHAP+HGxsbChbBbuk3+kMVk5TTxfWLpQWvVN3+UPjohLnwMYN7jr6BWNn2cYNqdm7g=="
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz",
+ "integrity": "sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg=="
},
"abab": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
- "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
+ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
"dev": true
},
"abbrev": {
@@ -1086,9 +806,9 @@
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"acorn": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
- "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ=="
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
},
"acorn-dynamic-import": {
"version": "2.0.2",
@@ -1115,14 +835,14 @@
}
},
"ajv": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz",
- "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==",
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0",
- "uri-js": "^4.2.1"
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
}
},
"ajv-keywords": {
@@ -1140,12 +860,6 @@
"repeat-string": "^1.5.2"
}
},
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
- },
"ansi-escapes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
@@ -1443,12 +1157,13 @@
}
},
"apollo-boost": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.1.6.tgz",
- "integrity": "sha512-z29fxgaNV7HLCcjgS7MgqPKdMc9is1pf4gaVk2ma9JvMZEwq7d5mAc1sBSq+u6de/oUdElES6f1wc1v1HruU+A==",
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.1.15.tgz",
+ "integrity": "sha512-cKKr//5MERno1+ZdPcppGwLVMoRWyvoiTe1YC/kJqfciHgBGIb89w9EjAPnUfyvXpmpNhAk4WWb52FcMETRrcA==",
"requires": {
- "apollo-cache-inmemory": "^1.2.1",
- "apollo-client": "^2.3.1",
+ "apollo-cache": "^1.1.16",
+ "apollo-cache-inmemory": "^1.2.9",
+ "apollo-client": "^2.4.1",
"apollo-link": "^1.0.6",
"apollo-link-error": "^1.0.3",
"apollo-link-http": "^1.3.1",
@@ -1457,34 +1172,34 @@
}
},
"apollo-cache": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.8.tgz",
- "integrity": "sha512-w2dzVVxosPK+9HQUBJ/P0fQMdAslWr/a1NHPubtN/Guwe93/k56IV0jDcJedMxXWzICuuI/gjZSYNAdb91WNWw==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.16.tgz",
+ "integrity": "sha512-gVWKYyXF0SlpMyZ/i//AthzyPjjmAVYciEjwepLqMzIf0+7bzIwekpHDuzME8jf4XQepXcNNY571+BRyYHysmg==",
"requires": {
- "apollo-utilities": "^1.0.12"
+ "apollo-utilities": "^1.0.20"
}
},
"apollo-cache-inmemory": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.2.1.tgz",
- "integrity": "sha512-WZ5EGmJqellVX+PPmq0QeqeQJiZCjjfmkp3x+MV3DRMwTzT2jeJYQAYGIzJuq8PjG4V0vljVJK/Ad93PHqzgdQ==",
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.2.9.tgz",
+ "integrity": "sha512-Z4m4NpT2eboM4qUww/46CsjOyITavxrKPBrsCugDlmwSzonqMLZmAyZEQgnYXCj8L5q5epnOuf0sqyYK/6sGIQ==",
"requires": {
- "apollo-cache": "^1.1.8",
- "apollo-utilities": "^1.0.12",
- "graphql-anywhere": "^4.1.10"
+ "apollo-cache": "^1.1.16",
+ "apollo-utilities": "^1.0.20",
+ "graphql-anywhere": "^4.1.18"
}
},
"apollo-client": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.3.1.tgz",
- "integrity": "sha512-f+692AEAY0XYUPAO4nuSOIAy7jgqNw94bXuvMvKmFYdMwJLRIr5gOPUXgOwCYwwVo+NqWF6cy20dkZ4gkCWZ+Q==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.4.1.tgz",
+ "integrity": "sha512-E6pQD+BwI1zboM9oX83yzH9BmBjJWU5pL36CpGC2+XaaBDc6UvrPtacxQsg/h7Fq5T5IKJoIhuBEWtefJIb9xg==",
"requires": {
"@types/async": "2.0.49",
- "@types/zen-observable": "^0.5.3",
- "apollo-cache": "^1.1.8",
+ "@types/zen-observable": "^0.8.0",
+ "apollo-cache": "1.1.16",
"apollo-link": "^1.0.0",
"apollo-link-dedup": "^1.0.0",
- "apollo-utilities": "^1.0.12",
+ "apollo-utilities": "1.0.20",
"symbol-observable": "^1.0.2",
"zen-observable": "^0.8.0"
}
@@ -1508,9 +1223,9 @@
}
},
"apollo-link-error": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.0.9.tgz",
- "integrity": "sha512-82qgIH0UC039kcvcFDJkY8GuUOgPFrkYe/0zNFkA0AXvuvL4RHxWb8SWRiPwtP8jKaKEOedyjopfyH84aLiu7Q==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.0.tgz",
+ "integrity": "sha512-4Vu/IUn6Kn6+Fthym4iuqypCKcLdwTg3MaCvtLdaLbt9X2hNCq3y8mv6vuWIlAY51X8wKhCgYghQSOs5R/embQ==",
"requires": {
"apollo-link": "^1.2.2"
}
@@ -1542,9 +1257,12 @@
}
},
"apollo-utilities": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.12.tgz",
- "integrity": "sha512-3mSen+NLouRwhmzCSHbMICfLBa6J+QJOc+M8zzLyo10jAYsOK+A2VgR63q4mcQJmAp8LumC5VAyah1zw6enMcg=="
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.20.tgz",
+ "integrity": "sha512-2M4BJCyX/9UXGJFoV4sTnVTZ4Q29aM18Z1avDrwvlCGGwoRTz50sGBAfTiWnUnnNQyPIIJEYElScw46DgIu0Rg==",
+ "requires": {
+ "fast-json-stable-stringify": "^2.0.0"
+ }
},
"append-transform": {
"version": "0.4.0",
@@ -1616,6 +1334,16 @@
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
},
+ "array.prototype.flat": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz",
+ "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.10.0",
+ "function-bind": "^1.1.1"
+ }
+ },
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
@@ -1627,10 +1355,13 @@
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
- "dev": true
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
},
"asn1.js": {
"version": "4.10.1",
@@ -1648,6 +1379,21 @@
"integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
"requires": {
"util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
}
},
"assert-plus": {
@@ -1693,9 +1439,9 @@
"dev": true
},
"atob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
- "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio="
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"aws-sign2": {
"version": "0.7.0",
@@ -1704,9 +1450,9 @@
"dev": true
},
"aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"babel-code-frame": {
@@ -1728,7 +1474,7 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
@@ -1739,6 +1485,12 @@
"supports-color": "^2.0.0"
}
},
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -1787,23 +1539,24 @@
}
},
"babel-jest": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.0.0.tgz",
- "integrity": "sha1-Djg6KqazU14ZfbKSlXCiGCvQhOg=",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz",
+ "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==",
"dev": true,
"requires": {
"babel-plugin-istanbul": "^4.1.6",
- "babel-preset-jest": "^23.0.0"
+ "babel-preset-jest": "^23.2.0"
}
},
"babel-loader": {
- "version": "8.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.2.tgz",
- "integrity": "sha512-P1zch1DvQy3RGmp/1CH78uPg5gTPQQ01S9r6ipCOWVamO0UIC8gnrx7m7LsUsXa470yB6IOZxhtEEwIUclRLNw==",
+ "version": "8.0.0-beta.3",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.3.tgz",
+ "integrity": "sha512-yvaAx7cBEjh+R2oGL2vIPmveO6daS5TYP2FSPq4b6CUYjU/ilD4HHyfLIa9KUj6OKBcR9fQcl1NvUOTWNaJ6mw==",
"requires": {
"find-cache-dir": "^1.0.0",
"loader-utils": "^1.0.2",
- "mkdirp": "^0.5.1"
+ "mkdirp": "^0.5.1",
+ "util.promisify": "^1.0.0"
}
},
"babel-messages": {
@@ -1817,7 +1570,7 @@
},
"babel-plugin-istanbul": {
"version": "4.1.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz",
"integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==",
"dev": true,
"requires": {
@@ -1828,9 +1581,9 @@
}
},
"babel-plugin-jest-hoist": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.0.tgz",
- "integrity": "sha1-5h5oeZ90M5Gh5jBu4nBHeqz5Rsg=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
+ "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
"dev": true
},
"babel-plugin-module-resolver": {
@@ -1852,23 +1605,21 @@
"integrity": "sha1-Lk57RJa5OmVKHIAEInbeTk7rIOM="
},
"babel-plugin-styled-components": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.5.1.tgz",
- "integrity": "sha1-MdvraW0TVNFYXmDWbHkF9eR0r80=",
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.6.4.tgz",
+ "integrity": "sha512-WRbUn/3aDlyE0+pQ4k9oaXoCytZxSuAW1zieNUKFMO+g89giwv1soV3TsK9RgeBIZ1mmtNEPwwUuQwIlowUhxg==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.0.0-beta.37",
- "babel-types": "^6.26.0",
- "stylis": "^3.0.0"
+ "lodash": "^4.17.10"
}
},
"babel-plugin-syntax-jsx": {
"version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
"integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
},
"babel-plugin-syntax-object-rest-spread": {
"version": "6.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
"integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
"dev": true
},
@@ -1878,12 +1629,12 @@
"integrity": "sha1-Mxz8BQmagII4MR14MZwnRg1IEYk="
},
"babel-preset-jest": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.0.0.tgz",
- "integrity": "sha1-Sd4DA/G2h13K1hY+qn64Mw1Ugk0=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
+ "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
"dev": true,
"requires": {
- "babel-plugin-jest-hoist": "^23.0.0",
+ "babel-plugin-jest-hoist": "^23.2.0",
"babel-plugin-syntax-object-rest-spread": "^6.13.0"
}
},
@@ -1943,15 +1694,6 @@
"requires": {
"ms": "2.0.0"
}
- },
- "source-map-support": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
- "dev": true,
- "requires": {
- "source-map": "^0.5.6"
- }
}
}
},
@@ -2045,7 +1787,7 @@
},
"babylon": {
"version": "7.0.0-beta.42",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.42.tgz",
+ "resolved": "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.42.tgz",
"integrity": "sha512-h6E/OkkvcBw/JimbL0p8dIaxrcuQn3QmIYGC/GtJlRYif5LTKBYPHXYwqluJpfS/kOXoz0go+9mkmOVC0M+zWw=="
},
"balanced-match": {
@@ -2119,9 +1861,9 @@
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
},
"bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"optional": true,
"requires": {
@@ -2139,9 +1881,9 @@
"integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU="
},
"bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
+ "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg=="
},
"bn.js": {
"version": "4.11.8",
@@ -2151,8 +1893,7 @@
"boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
- "dev": true
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
"brace-expansion": {
"version": "1.1.11",
@@ -2185,9 +1926,9 @@
"dev": true
},
"browser-resolve": {
- "version": "1.11.2",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
- "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
"dev": true,
"requires": {
"resolve": "1.1.7"
@@ -2225,13 +1966,14 @@
}
},
"browserify-des": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
- "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
"requires": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
- "inherits": "^2.0.1"
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
}
},
"browserify-rsa": {
@@ -2285,7 +2027,7 @@
},
"buffer": {
"version": "4.9.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"requires": {
"base64-js": "^1.0.2",
@@ -2294,9 +2036,9 @@
}
},
"buffer-from": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
- "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"buffer-xor": {
"version": "1.0.3",
@@ -2368,9 +2110,9 @@
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
},
"caniuse-lite": {
- "version": "1.0.30000844",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000844.tgz",
- "integrity": "sha512-UpKQE7y6dLHhlv75UyBCRiun34Q+bmxyX3zS+ve9M07YG52tRafOvop9N9d5jC+sikKuG7UMweJKJNts4FVehA=="
+ "version": "1.0.30000885",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz",
+ "integrity": "sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ=="
},
"capture-exit": {
"version": "1.2.0",
@@ -2425,7 +2167,6 @@
"version": "1.0.0-rc.2",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz",
"integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=",
- "dev": true,
"requires": {
"css-select": "~1.2.0",
"dom-serializer": "~0.1.0",
@@ -2436,22 +2177,23 @@
}
},
"chokidar": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz",
- "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
"requires": {
"anymatch": "^2.0.0",
"async-each": "^1.0.0",
"braces": "^2.3.0",
- "fsevents": "^1.1.2",
+ "fsevents": "^1.2.2",
"glob-parent": "^3.1.0",
"inherits": "^2.0.1",
"is-binary-path": "^1.0.0",
"is-glob": "^4.0.0",
+ "lodash.debounce": "^4.0.8",
"normalize-path": "^2.1.1",
"path-is-absolute": "^1.0.0",
"readdirp": "^2.0.0",
- "upath": "^1.0.0"
+ "upath": "^1.0.5"
},
"dependencies": {
"array-unique": {
@@ -2548,9 +2290,9 @@
"integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
},
"ci-info": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
- "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.5.1.tgz",
+ "integrity": "sha512-fKFIKXaYiL1exImwJ0AhR/6jxFPSKQBk2ayV5NiNoruUs2+rxC2kNw0EG+1Z9dugZRdCrppskQ8DN2cyaUM1Hw==",
"dev": true
},
"cipher-base": {
@@ -2618,11 +2360,11 @@
}
},
"color-convert": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
- "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
- "color-name": "^1.1.1"
+ "color-name": "1.1.3"
}
},
"color-name": {
@@ -2633,8 +2375,7 @@
"colors": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
- "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=",
- "dev": true
+ "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q="
},
"combined-stream": {
"version": "1.0.6",
@@ -2655,17 +2396,16 @@
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
},
- "compare-versions": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.2.1.tgz",
- "integrity": "sha512-2y2nHcopMG/NAyk6vWXlLs86XeM9sik4jmx1tKIgzMi9/RQ2eo758RGpxQO3ErihHmg0RlQITPqgz73y6s7quA==",
- "dev": true
- },
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
},
+ "compute-scroll-into-view": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.8.tgz",
+ "integrity": "sha512-iAUjocygqXSGQb3zUHvAHwcf3BiMihlnphNSKCAqS6v9wNHlFe7260zNqoFjS/YBKJjbbvrXwY6/Wdg5mJ91Lw=="
+ },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2696,9 +2436,12 @@
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
},
"convert-source-map": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
- "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
},
"copy-concurrently": {
"version": "1.0.5",
@@ -2719,9 +2462,9 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
},
"core-js": {
- "version": "2.5.6",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
- "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ=="
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
},
"core-util-is": {
"version": "1.0.2",
@@ -2799,7 +2542,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
- "dev": true,
"requires": {
"boolbase": "~1.0.0",
"css-what": "2.1",
@@ -2808,9 +2550,9 @@
}
},
"css-to-react-native": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.2.0.tgz",
- "integrity": "sha512-SWG8+tsVRBHpxn1cSDmx7B95DJCiKwUecBbboGpm2znDCnJDMGkcoYR73w1p2IZMab6iNqVms8VC+4TrSqoFeQ==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.2.1.tgz",
+ "integrity": "sha512-v++LRcf633phJiYZBDqtmGPj3+BVof0isd2jgwYLWZJ5YSuhCkrfYtDsNhM6oJthiEco0f9tDVJ1vUkDJNgGEA==",
"requires": {
"css-color-keywords": "^1.0.0",
"fbjs": "^0.8.5",
@@ -2820,28 +2562,27 @@
"css-what": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
- "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
- "dev": true
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0="
},
"cssom": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
- "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
"dev": true
},
"cssstyle": {
- "version": "0.2.37",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
- "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz",
+ "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==",
"dev": true,
"requires": {
"cssom": "0.3.x"
}
},
"csstype": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.2.tgz",
- "integrity": "sha512-epoHrKPywwUhFTXadQNA5PPx4GChtkM03SkBeFZTaFtJcn6QfXpBkX2IAc4J9Oe18nha5NrTOo2OMOge+qH1mw=="
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.6.tgz",
+ "integrity": "sha512-tKPyhy0FmfYD2KQYXD5GzkvAYLYj96cMLXr648CKGd3wBe0QqoPipImjGiLze9c8leJK8J3n7ap90tpk3E6HGQ=="
},
"cyclist": {
"version": "0.2.2",
@@ -2866,20 +2607,33 @@
}
},
"data-urls": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz",
- "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz",
+ "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==",
"dev": true,
"requires": {
- "abab": "^1.0.4",
- "whatwg-mimetype": "^2.0.0",
- "whatwg-url": "^6.4.0"
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.1.0",
+ "whatwg-url": "^7.0.0"
+ },
+ "dependencies": {
+ "whatwg-url": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
+ "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
}
},
"date-fns": {
- "version": "2.0.0-alpha.8",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.0.0-alpha.8.tgz",
- "integrity": "sha1-pivXao844BlLKQMkXpy5Yrm75iQ="
+ "version": "2.0.0-alpha.16",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.0.0-alpha.16.tgz",
+ "integrity": "sha1-0kmmybeZJSZS+54/JUYOr53oasc="
},
"date-now": {
"version": "0.1.4",
@@ -2905,9 +2659,9 @@
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
},
"deep-extend": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
- "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w=="
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"deep-is": {
"version": "0.1.3",
@@ -2936,12 +2690,11 @@
}
},
"define-properties": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
- "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"requires": {
- "foreach": "^2.0.5",
- "object-keys": "^1.0.8"
+ "object-keys": "^1.0.12"
}
},
"define-property": {
@@ -3069,8 +2822,7 @@
"discontinuous-range": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
- "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=",
- "dev": true
+ "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo="
},
"dom-helpers": {
"version": "3.3.1",
@@ -3081,7 +2833,6 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
- "dev": true,
"requires": {
"domelementtype": "~1.1.1",
"entities": "~1.1.1"
@@ -3090,16 +2841,10 @@
"domelementtype": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
- "dev": true
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
}
}
},
- "dom-walk": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
- "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
- },
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
@@ -3108,8 +2853,7 @@
"domelementtype": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
- "dev": true
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
},
"domexception": {
"version": "1.0.1",
@@ -3124,7 +2868,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
"integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
- "dev": true,
"requires": {
"domelementtype": "1"
}
@@ -3133,16 +2876,19 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "dev": true,
"requires": {
"dom-serializer": "0",
"domelementtype": "1"
}
},
"downshift": {
- "version": "1.31.14",
- "resolved": "https://registry.npmjs.org/downshift/-/downshift-1.31.14.tgz",
- "integrity": "sha512-KguEqOCAykRVkBG8kB1YMOf4RWolupoUMW3cv6VLVBQw+yOB1BrROX4MbUoCqDaj9vBZS7DNqz7VBqfM4x3dsg=="
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/downshift/-/downshift-2.2.2.tgz",
+ "integrity": "sha512-vdt1AYiiD490PcPyscuX5Cqgv26jFiKD2fcjXdqoDgvbnKn4/Z48ccUmXIcGagzwEfYRrk3CxTuciIDG6+addA==",
+ "requires": {
+ "compute-scroll-into-view": "^1.0.2",
+ "prop-types": "^15.6.0"
+ }
},
"duplexify": {
"version": "3.6.0",
@@ -3156,13 +2902,14 @@
}
},
"ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"optional": true,
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
}
},
"ee-first": {
@@ -3171,14 +2918,14 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.48",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
- "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA="
+ "version": "1.3.65",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.65.tgz",
+ "integrity": "sha512-tyGr+wh2c/JYBVMeflKpZ3ricwtBPyVBMtRNxYGObl7TP5bAeupgz4VZnBzQSFleZViXYTws1yZtKKFQYZyiYw=="
},
"elliptic": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
- "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
@@ -3234,57 +2981,56 @@
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
- "dev": true
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
},
"enzyme": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz",
- "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==",
- "dev": true,
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.6.0.tgz",
+ "integrity": "sha512-onsINzVLGqKIapTVfWkkw6bYvm1o4CyJ9s8POExtQhAkVa4qFDW6DGCQGRy/5bfZYk+gmUbMNyayXiWDzTkHFQ==",
"requires": {
+ "array.prototype.flat": "^1.2.1",
"cheerio": "^1.0.0-rc.2",
- "function.prototype.name": "^1.0.3",
- "has": "^1.0.1",
+ "function.prototype.name": "^1.1.0",
+ "has": "^1.0.3",
"is-boolean-object": "^1.0.0",
- "is-callable": "^1.1.3",
+ "is-callable": "^1.1.4",
"is-number-object": "^1.0.3",
"is-string": "^1.0.4",
"is-subset": "^0.1.1",
- "lodash": "^4.17.4",
- "object-inspect": "^1.5.0",
+ "lodash.escape": "^4.0.1",
+ "lodash.isequal": "^4.5.0",
+ "object-inspect": "^1.6.0",
"object-is": "^1.0.1",
"object.assign": "^4.1.0",
"object.entries": "^1.0.4",
"object.values": "^1.0.4",
"raf": "^3.4.0",
- "rst-selector-parser": "^2.2.3"
+ "rst-selector-parser": "^2.2.3",
+ "string.prototype.trim": "^1.1.2"
}
},
"enzyme-adapter-react-16": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz",
- "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==",
- "dev": true,
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.5.0.tgz",
+ "integrity": "sha512-R2LcVvMB2UwPH763d5jDtVedAIcEj+uZjOnq0nd1sOUs6z8TDbyHDvt8VwfrS4wMt7CawoyPmH0XzC8MtEqqDw==",
"requires": {
- "enzyme-adapter-utils": "^1.3.0",
- "lodash": "^4.17.4",
- "object.assign": "^4.0.4",
+ "enzyme-adapter-utils": "^1.8.0",
+ "function.prototype.name": "^1.1.0",
+ "object.assign": "^4.1.0",
"object.values": "^1.0.4",
- "prop-types": "^15.6.0",
- "react-reconciler": "^0.7.0",
+ "prop-types": "^15.6.2",
+ "react-is": "^16.4.2",
"react-test-renderer": "^16.0.0-0"
}
},
"enzyme-adapter-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz",
- "integrity": "sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA==",
- "dev": true,
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.8.0.tgz",
+ "integrity": "sha512-K9U2RGr1pvWPGEAIRQRVH4UdlqzpfLsKonuHyAK6lxu46yfGsMDVlO3+YvQwQpVjVw8eviEVIOmlFAnMbIhv/w==",
"requires": {
- "lodash": "^4.17.4",
- "object.assign": "^4.0.4",
- "prop-types": "^15.6.0"
+ "function.prototype.name": "^1.1.0",
+ "object.assign": "^4.1.0",
+ "prop-types": "^15.6.2"
}
},
"enzyme-to-json": {
@@ -3305,26 +3051,25 @@
}
},
"error-ex": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"requires": {
"is-arrayish": "^0.2.1"
}
},
"error-stack-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz",
- "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz",
+ "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==",
"requires": {
- "stackframe": "^1.0.3"
+ "stackframe": "^1.0.4"
}
},
"es-abstract": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz",
- "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==",
- "dev": true,
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
+ "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
"requires": {
"es-to-primitive": "^1.1.1",
"function-bind": "^1.1.1",
@@ -3337,7 +3082,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
"integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
- "dev": true,
"requires": {
"is-callable": "^1.1.1",
"is-date-object": "^1.0.1",
@@ -3345,9 +3089,9 @@
}
},
"es5-ext": {
- "version": "0.10.42",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz",
- "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==",
+ "version": "0.10.46",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
+ "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -3420,9 +3164,9 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"escodegen": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz",
- "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
+ "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
"dev": true,
"requires": {
"esprima": "^3.1.3",
@@ -3459,9 +3203,9 @@
}
},
"esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
},
"esrecurse": {
@@ -3516,12 +3260,12 @@
}
},
"exec-sh": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz",
- "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz",
+ "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==",
"dev": true,
"requires": {
- "merge": "^1.1.3"
+ "merge": "^1.2.0"
}
},
"execa": {
@@ -3561,23 +3305,23 @@
}
},
"expect": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz",
- "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz",
+ "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
- "jest-diff": "^22.4.3",
- "jest-get-type": "^22.4.3",
- "jest-matcher-utils": "^22.4.3",
- "jest-message-util": "^22.4.3",
- "jest-regex-util": "^22.4.3"
+ "jest-diff": "^23.6.0",
+ "jest-get-type": "^22.1.0",
+ "jest-matcher-utils": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-regex-util": "^23.3.0"
}
},
"extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extend-shallow": {
@@ -3626,7 +3370,8 @@
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
},
"fb-watchman": {
"version": "2.0.0",
@@ -3638,9 +3383,9 @@
}
},
"fbjs": {
- "version": "0.8.16",
- "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz",
- "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=",
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+ "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
"requires": {
"core-js": "^1.0.0",
"isomorphic-fetch": "^2.1.1",
@@ -3648,7 +3393,7 @@
"object-assign": "^4.1.0",
"promise": "^7.1.1",
"setimmediate": "^1.0.5",
- "ua-parser-js": "^0.7.9"
+ "ua-parser-js": "^0.7.18"
},
"dependencies": {
"core-js": {
@@ -3740,11 +3485,6 @@
"for-in": "^1.0.1"
}
},
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
- },
"foreachasync": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz",
@@ -3797,7 +3537,7 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "^2.2.1",
@@ -4310,7 +4050,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz",
"integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==",
- "dev": true,
"requires": {
"define-properties": "^1.1.2",
"function-bind": "^1.1.1",
@@ -4318,9 +4057,9 @@
}
},
"get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
},
"get-stream": {
"version": "3.0.0",
@@ -4371,19 +4110,10 @@
"is-glob": "^2.0.0"
}
},
- "global": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
- "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
- "requires": {
- "min-document": "^2.19.0",
- "process": "~0.5.1"
- }
- },
"globals": {
- "version": "11.5.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz",
- "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ=="
+ "version": "11.7.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
+ "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg=="
},
"globby": {
"version": "6.1.0",
@@ -4410,19 +4140,19 @@
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
},
"graphql": {
- "version": "0.13.2",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
- "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.0.2.tgz",
+ "integrity": "sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw==",
"requires": {
- "iterall": "^1.2.1"
+ "iterall": "^1.2.2"
}
},
"graphql-anywhere": {
- "version": "4.1.10",
- "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.1.10.tgz",
- "integrity": "sha512-ab1O4mOkjlk+17ye5a7DxUuWafKP8aoH+xmc6SsPNZlrQ7spbArqyLIf2JdbwpzsVLXOyRvQpD6tcc0GtnxBfw==",
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.1.18.tgz",
+ "integrity": "sha512-n0jsAEpGpQxsF0RDaxSjtEQdIP3tx2C3q++QuHYFyUl+4Npl5t64zFjWwO3ZhotxmTgs8zaSbZPVFpydn6k0dQ==",
"requires": {
- "apollo-utilities": "^1.0.12"
+ "apollo-utilities": "^1.0.20"
}
},
"graphql-tag": {
@@ -4431,29 +4161,16 @@
"integrity": "sha512-qnNmof9pAqj/LUzs3lStP0Gw1qhdVCUS7Ab7+SUB6KD5aX1uqxWQRwMnOGTkhKuLvLNIs1TvNz+iS9kUGl1MhA=="
},
"graphql-tools": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.2.tgz",
- "integrity": "sha512-bhDGrvmSgcJBFX3EZEYagmKPk/EJ9vZIcF1WtSFveWfvSsh7crMFSQ9ldftuIXC9UeRwfutpGf3A1q4UpVLaRg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.1.tgz",
+ "integrity": "sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg==",
"dev": true,
"requires": {
- "apollo-link": "1.2.1",
+ "apollo-link": "^1.2.2",
"apollo-utilities": "^1.0.1",
"deprecated-decorator": "^0.1.6",
"iterall": "^1.1.3",
"uuid": "^3.1.0"
- },
- "dependencies": {
- "apollo-link": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz",
- "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==",
- "dev": true,
- "requires": {
- "@types/node": "^9.4.6",
- "apollo-utilities": "^1.0.0",
- "zen-observable-ts": "^0.8.6"
- }
- }
}
},
"growly": {
@@ -4463,64 +4180,39 @@
"dev": true
},
"handlebars": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
- "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
+ "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
"dev": true,
"requires": {
- "async": "^1.4.0",
+ "async": "^2.5.0",
"optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
},
"dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true,
+ "optional": true
},
"source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
},
"uglify-js": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "version": "3.4.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
"dev": true,
"optional": true,
"requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "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=",
- "dev": true,
- "optional": true
- }
- }
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
+ "commander": "~2.17.1",
+ "source-map": "~0.6.1"
}
}
}
@@ -4532,12 +4224,12 @@
"dev": true
},
"har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
- "ajv": "^5.1.0",
+ "ajv": "^5.3.0",
"har-schema": "^2.0.0"
},
"dependencies": {
@@ -4558,15 +4250,21 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
"dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
}
}
},
"has": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
- "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
- "function-bind": "^1.0.2"
+ "function-bind": "^1.1.1"
}
},
"has-ansi": {
@@ -4651,12 +4349,12 @@
}
},
"hash.js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
- "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
+ "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
"requires": {
"inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.0"
+ "minimalistic-assert": "^1.0.1"
}
},
"hmac-drbg": {
@@ -4670,9 +4368,9 @@
}
},
"hoist-non-react-statics": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz",
- "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w=="
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
},
"home-or-tmp": {
"version": "2.0.0",
@@ -4685,9 +4383,9 @@
}
},
"hosted-git-info": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
- "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw=="
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
},
"html-encoding-sniffer": {
"version": "1.0.2",
@@ -4712,7 +4410,6 @@
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
"integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
- "dev": true,
"requires": {
"domelementtype": "^1.3.0",
"domhandler": "^2.3.0",
@@ -4755,17 +4452,17 @@
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
},
"iconv-lite": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ieee754": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz",
- "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg=="
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
+ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA=="
},
"iferr": {
"version": "0.1.5",
@@ -4853,8 +4550,7 @@
"is-boolean-object": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz",
- "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=",
- "dev": true
+ "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M="
},
"is-buffer": {
"version": "1.1.6",
@@ -4870,18 +4566,17 @@
}
},
"is-callable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
- "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
- "dev": true
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
},
"is-ci": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
- "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
"dev": true,
"requires": {
- "ci-info": "^1.0.0"
+ "ci-info": "^1.5.0"
}
},
"is-data-descriptor": {
@@ -4895,8 +4590,7 @@
"is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
- "dev": true
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
},
"is-descriptor": {
"version": "0.1.6",
@@ -4980,23 +4674,7 @@
"is-number-object": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz",
- "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=",
- "dev": true
- },
- "is-odd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
- "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
- "requires": {
- "is-number": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
- }
- }
+ "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k="
},
"is-path-cwd": {
"version": "1.0.0",
@@ -5048,7 +4726,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
- "dev": true,
"requires": {
"has": "^1.0.1"
}
@@ -5061,20 +4738,17 @@
"is-string": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz",
- "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=",
- "dev": true
+ "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ="
},
"is-subset": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
- "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
- "dev": true
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY="
},
"is-symbol": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
- "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
- "dev": true
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI="
},
"is-typedarray": {
"version": "1.0.0",
@@ -5121,12 +4795,24 @@
}
},
"isomorphic-unfetch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-2.0.0.tgz",
- "integrity": "sha1-9QFApMFj11grXzfxWRloxPgJpkU=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-2.1.1.tgz",
+ "integrity": "sha512-nd8AULy4i2rA8dv0nOBT9xieIegd3xi7NDxTQ9+iNXDTyaG6VbUYW3F+TdMRqxqXhDFWM2k7fttKx9W2Wd8JpQ==",
"requires": {
- "node-fetch": "^1.7.1",
- "unfetch": "^3.0.0"
+ "node-fetch": "^2.1.2",
+ "unfetch": "^3.1.0"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz",
+ "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA=="
+ },
+ "unfetch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.1.1.tgz",
+ "integrity": "sha512-syDl3htvM56w0HC0PTVA5jEEknOCJ3dWgWGDuaEtQUno8ORDCfZQbm12RzfWO3AC3YhWDoP61dlgmo8Z05Y97g=="
+ }
}
},
"isstream": {
@@ -5136,59 +4822,43 @@
"dev": true
},
"istanbul-api": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz",
- "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==",
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz",
+ "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==",
"dev": true,
"requires": {
"async": "^2.1.4",
- "compare-versions": "^3.1.0",
"fileset": "^2.0.2",
- "istanbul-lib-coverage": "^1.2.0",
- "istanbul-lib-hook": "^1.2.0",
- "istanbul-lib-instrument": "^1.10.1",
- "istanbul-lib-report": "^1.1.4",
- "istanbul-lib-source-maps": "^1.2.4",
- "istanbul-reports": "^1.3.0",
+ "istanbul-lib-coverage": "^1.2.1",
+ "istanbul-lib-hook": "^1.2.2",
+ "istanbul-lib-instrument": "^1.10.2",
+ "istanbul-lib-report": "^1.1.5",
+ "istanbul-lib-source-maps": "^1.2.6",
+ "istanbul-reports": "^1.5.1",
"js-yaml": "^3.7.0",
"mkdirp": "^0.5.1",
"once": "^1.4.0"
- },
- "dependencies": {
- "istanbul-lib-source-maps": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz",
- "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==",
- "dev": true,
- "requires": {
- "debug": "^3.1.0",
- "istanbul-lib-coverage": "^1.2.0",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.6.1",
- "source-map": "^0.5.3"
- }
- }
}
},
"istanbul-lib-coverage": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz",
- "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz",
+ "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==",
"dev": true
},
"istanbul-lib-hook": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz",
- "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz",
+ "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==",
"dev": true,
"requires": {
"append-transform": "^0.4.0"
}
},
"istanbul-lib-instrument": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz",
- "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz",
+ "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==",
"dev": true,
"requires": {
"babel-generator": "^6.18.0",
@@ -5196,7 +4866,7 @@
"babel-traverse": "^6.18.0",
"babel-types": "^6.18.0",
"babylon": "^6.18.0",
- "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-coverage": "^1.2.1",
"semver": "^5.3.0"
},
"dependencies": {
@@ -5209,12 +4879,12 @@
}
},
"istanbul-lib-report": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz",
- "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz",
+ "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==",
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-coverage": "^1.2.1",
"mkdirp": "^0.5.1",
"path-parse": "^1.0.5",
"supports-color": "^3.1.2"
@@ -5238,22 +4908,22 @@
}
},
"istanbul-lib-source-maps": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz",
- "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz",
+ "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==",
"dev": true,
"requires": {
"debug": "^3.1.0",
- "istanbul-lib-coverage": "^1.1.2",
+ "istanbul-lib-coverage": "^1.2.1",
"mkdirp": "^0.5.1",
"rimraf": "^2.6.1",
"source-map": "^0.5.3"
}
},
"istanbul-reports": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz",
- "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz",
+ "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==",
"dev": true,
"requires": {
"handlebars": "^4.0.3"
@@ -5265,13 +4935,13 @@
"integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
},
"jest": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest/-/jest-22.4.4.tgz",
- "integrity": "sha512-eBhhW8OS/UuX3HxgzNBSVEVhSuRDh39Z1kdYkQVWna+scpgsrD7vSeBI7tmEvsguPDMnfJodW28YBnhv/BzSew==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz",
+ "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==",
"dev": true,
"requires": {
"import-local": "^1.0.0",
- "jest-cli": "^22.4.4"
+ "jest-cli": "^23.6.0"
},
"dependencies": {
"ansi-regex": {
@@ -5298,9 +4968,9 @@
}
},
"jest-cli": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.4.4.tgz",
- "integrity": "sha512-I9dsgkeyjVEEZj9wrGrqlH+8OlNob9Iptyl+6L5+ToOLJmHm4JwOPatin1b2Bzp5R5YRQJ+oiedx7o1H7wJzhA==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz",
+ "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==",
"dev": true,
"requires": {
"ansi-escapes": "^3.0.0",
@@ -5310,33 +4980,35 @@
"graceful-fs": "^4.1.11",
"import-local": "^1.0.0",
"is-ci": "^1.0.10",
- "istanbul-api": "^1.1.14",
- "istanbul-lib-coverage": "^1.1.1",
- "istanbul-lib-instrument": "^1.8.0",
- "istanbul-lib-source-maps": "^1.2.1",
- "jest-changed-files": "^22.2.0",
- "jest-config": "^22.4.4",
- "jest-environment-jsdom": "^22.4.1",
+ "istanbul-api": "^1.3.1",
+ "istanbul-lib-coverage": "^1.2.0",
+ "istanbul-lib-instrument": "^1.10.1",
+ "istanbul-lib-source-maps": "^1.2.4",
+ "jest-changed-files": "^23.4.2",
+ "jest-config": "^23.6.0",
+ "jest-environment-jsdom": "^23.4.0",
"jest-get-type": "^22.1.0",
- "jest-haste-map": "^22.4.2",
- "jest-message-util": "^22.4.0",
- "jest-regex-util": "^22.1.0",
- "jest-resolve-dependencies": "^22.1.0",
- "jest-runner": "^22.4.4",
- "jest-runtime": "^22.4.4",
- "jest-snapshot": "^22.4.0",
- "jest-util": "^22.4.1",
- "jest-validate": "^22.4.4",
- "jest-worker": "^22.2.2",
+ "jest-haste-map": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-regex-util": "^23.3.0",
+ "jest-resolve-dependencies": "^23.6.0",
+ "jest-runner": "^23.6.0",
+ "jest-runtime": "^23.6.0",
+ "jest-snapshot": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-validate": "^23.6.0",
+ "jest-watcher": "^23.4.0",
+ "jest-worker": "^23.2.0",
"micromatch": "^2.3.11",
"node-notifier": "^5.2.1",
+ "prompts": "^0.1.9",
"realpath-native": "^1.0.0",
"rimraf": "^2.5.4",
"slash": "^1.0.0",
"string-length": "^2.0.0",
"strip-ansi": "^4.0.0",
"which": "^1.2.12",
- "yargs": "^10.0.3"
+ "yargs": "^11.0.0"
}
},
"string-length": {
@@ -5365,9 +5037,9 @@
"dev": true
},
"yargs": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz",
- "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==",
+ "version": "11.1.0",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
@@ -5381,13 +5053,13 @@
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1",
- "yargs-parser": "^8.1.0"
+ "yargs-parser": "^9.0.2"
}
},
"yargs-parser": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
- "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
"dev": true,
"requires": {
"camelcase": "^4.1.0"
@@ -5396,73 +5068,130 @@
}
},
"jest-changed-files": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz",
- "integrity": "sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz",
+ "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==",
"dev": true,
"requires": {
"throat": "^4.0.0"
}
},
"jest-config": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.4.tgz",
- "integrity": "sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz",
+ "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==",
"dev": true,
"requires": {
+ "babel-core": "^6.0.0",
+ "babel-jest": "^23.6.0",
"chalk": "^2.0.1",
"glob": "^7.1.1",
- "jest-environment-jsdom": "^22.4.1",
- "jest-environment-node": "^22.4.1",
+ "jest-environment-jsdom": "^23.4.0",
+ "jest-environment-node": "^23.4.0",
"jest-get-type": "^22.1.0",
- "jest-jasmine2": "^22.4.4",
- "jest-regex-util": "^22.1.0",
- "jest-resolve": "^22.4.2",
- "jest-util": "^22.4.1",
- "jest-validate": "^22.4.4",
- "pretty-format": "^22.4.0"
+ "jest-jasmine2": "^23.6.0",
+ "jest-regex-util": "^23.3.0",
+ "jest-resolve": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-validate": "^23.6.0",
+ "micromatch": "^2.3.11",
+ "pretty-format": "^23.6.0"
+ },
+ "dependencies": {
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "babel-generator": "^6.26.0",
+ "babel-helpers": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-register": "^6.26.0",
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "convert-source-map": "^1.5.1",
+ "debug": "^2.6.9",
+ "json5": "^0.5.1",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.4",
+ "path-is-absolute": "^1.0.1",
+ "private": "^0.1.8",
+ "slash": "^1.0.0",
+ "source-map": "^0.5.7"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
}
},
"jest-diff": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz",
- "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz",
+ "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
"diff": "^3.2.0",
- "jest-get-type": "^22.4.3",
- "pretty-format": "^22.4.3"
+ "jest-get-type": "^22.1.0",
+ "pretty-format": "^23.6.0"
}
},
"jest-docblock": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz",
- "integrity": "sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg==",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz",
+ "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=",
"dev": true,
"requires": {
"detect-newline": "^2.1.0"
}
},
+ "jest-each": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz",
+ "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "pretty-format": "^23.6.0"
+ }
+ },
"jest-environment-jsdom": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz",
- "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz",
+ "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=",
"dev": true,
"requires": {
- "jest-mock": "^22.4.3",
- "jest-util": "^22.4.3",
+ "jest-mock": "^23.2.0",
+ "jest-util": "^23.4.0",
"jsdom": "^11.5.1"
}
},
"jest-environment-node": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz",
- "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz",
+ "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=",
"dev": true,
"requires": {
- "jest-mock": "^22.4.3",
- "jest-util": "^22.4.3"
+ "jest-mock": "^23.2.0",
+ "jest-util": "^23.4.0"
}
},
"jest-get-type": {
@@ -5472,63 +5201,65 @@
"dev": true
},
"jest-haste-map": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.4.3.tgz",
- "integrity": "sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz",
+ "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==",
"dev": true,
"requires": {
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.1.11",
- "jest-docblock": "^22.4.3",
- "jest-serializer": "^22.4.3",
- "jest-worker": "^22.4.3",
+ "invariant": "^2.2.4",
+ "jest-docblock": "^23.2.0",
+ "jest-serializer": "^23.0.1",
+ "jest-worker": "^23.2.0",
"micromatch": "^2.3.11",
"sane": "^2.0.0"
}
},
"jest-jasmine2": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz",
- "integrity": "sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz",
+ "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==",
"dev": true,
"requires": {
+ "babel-traverse": "^6.0.0",
"chalk": "^2.0.1",
"co": "^4.6.0",
- "expect": "^22.4.0",
- "graceful-fs": "^4.1.11",
+ "expect": "^23.6.0",
"is-generator-fn": "^1.0.0",
- "jest-diff": "^22.4.0",
- "jest-matcher-utils": "^22.4.0",
- "jest-message-util": "^22.4.0",
- "jest-snapshot": "^22.4.0",
- "jest-util": "^22.4.1",
- "source-map-support": "^0.5.0"
+ "jest-diff": "^23.6.0",
+ "jest-each": "^23.6.0",
+ "jest-matcher-utils": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-snapshot": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "pretty-format": "^23.6.0"
}
},
"jest-leak-detector": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz",
- "integrity": "sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz",
+ "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==",
"dev": true,
"requires": {
- "pretty-format": "^22.4.3"
+ "pretty-format": "^23.6.0"
}
},
"jest-matcher-utils": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz",
- "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz",
+ "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
- "jest-get-type": "^22.4.3",
- "pretty-format": "^22.4.3"
+ "jest-get-type": "^22.1.0",
+ "pretty-format": "^23.6.0"
}
},
"jest-message-util": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz",
- "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz",
+ "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0-beta.35",
@@ -5539,81 +5270,104 @@
}
},
"jest-mock": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz",
- "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz",
+ "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=",
"dev": true
},
"jest-regex-util": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz",
- "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==",
+ "version": "23.3.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz",
+ "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=",
"dev": true
},
"jest-resolve": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz",
- "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz",
+ "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==",
"dev": true,
"requires": {
- "browser-resolve": "^1.11.2",
- "chalk": "^2.0.1"
+ "browser-resolve": "^1.11.3",
+ "chalk": "^2.0.1",
+ "realpath-native": "^1.0.0"
}
},
"jest-resolve-dependencies": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz",
- "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz",
+ "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==",
"dev": true,
"requires": {
- "jest-regex-util": "^22.4.3"
+ "jest-regex-util": "^23.3.0",
+ "jest-snapshot": "^23.6.0"
}
},
"jest-runner": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.4.tgz",
- "integrity": "sha512-5S/OpB51igQW9xnkM5Tgd/7ZjiAuIoiJAVtvVTBcEBiXBIFzWM3BAMPBM19FX68gRV0KWyFuGKj0EY3M3aceeQ==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz",
+ "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==",
"dev": true,
"requires": {
"exit": "^0.1.2",
- "jest-config": "^22.4.4",
- "jest-docblock": "^22.4.0",
- "jest-haste-map": "^22.4.2",
- "jest-jasmine2": "^22.4.4",
- "jest-leak-detector": "^22.4.0",
- "jest-message-util": "^22.4.0",
- "jest-runtime": "^22.4.4",
- "jest-util": "^22.4.1",
- "jest-worker": "^22.2.2",
+ "graceful-fs": "^4.1.11",
+ "jest-config": "^23.6.0",
+ "jest-docblock": "^23.2.0",
+ "jest-haste-map": "^23.6.0",
+ "jest-jasmine2": "^23.6.0",
+ "jest-leak-detector": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-runtime": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-worker": "^23.2.0",
+ "source-map-support": "^0.5.6",
"throat": "^4.0.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+ "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ }
}
},
"jest-runtime": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.4.4.tgz",
- "integrity": "sha512-WRTj9m///npte1YjuphCYX7GRY/c2YvJImU9t7qOwFcqHr4YMzmX6evP/3Sehz5DKW2Vi8ONYPCFWe36JVXxfw==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz",
+ "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==",
"dev": true,
"requires": {
"babel-core": "^6.0.0",
- "babel-jest": "^22.4.4",
- "babel-plugin-istanbul": "^4.1.5",
+ "babel-plugin-istanbul": "^4.1.6",
"chalk": "^2.0.1",
"convert-source-map": "^1.4.0",
"exit": "^0.1.2",
+ "fast-json-stable-stringify": "^2.0.0",
"graceful-fs": "^4.1.11",
- "jest-config": "^22.4.4",
- "jest-haste-map": "^22.4.2",
- "jest-regex-util": "^22.1.0",
- "jest-resolve": "^22.4.2",
- "jest-util": "^22.4.1",
- "jest-validate": "^22.4.4",
- "json-stable-stringify": "^1.0.1",
+ "jest-config": "^23.6.0",
+ "jest-haste-map": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-regex-util": "^23.3.0",
+ "jest-resolve": "^23.6.0",
+ "jest-snapshot": "^23.6.0",
+ "jest-util": "^23.4.0",
+ "jest-validate": "^23.6.0",
"micromatch": "^2.3.11",
"realpath-native": "^1.0.0",
"slash": "^1.0.0",
"strip-bom": "3.0.0",
"write-file-atomic": "^2.1.0",
- "yargs": "^10.0.3"
+ "yargs": "^11.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -5649,32 +5403,6 @@
"source-map": "^0.5.7"
}
},
- "babel-jest": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz",
- "integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==",
- "dev": true,
- "requires": {
- "babel-plugin-istanbul": "^4.1.5",
- "babel-preset-jest": "^22.4.4"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz",
- "integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==",
- "dev": true
- },
- "babel-preset-jest": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz",
- "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^22.4.4",
- "babel-plugin-syntax-object-rest-spread": "^6.13.0"
- }
- },
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
@@ -5723,9 +5451,9 @@
"dev": true
},
"yargs": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz",
- "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==",
+ "version": "11.1.0",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
@@ -5739,13 +5467,13 @@
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1",
- "yargs-parser": "^8.1.0"
+ "yargs-parser": "^9.0.2"
}
},
"yargs-parser": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
- "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
"dev": true,
"requires": {
"camelcase": "^4.1.0"
@@ -5754,23 +5482,27 @@
}
},
"jest-serializer": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-22.4.3.tgz",
- "integrity": "sha512-uPaUAppx4VUfJ0QDerpNdF43F68eqKWCzzhUlKNDsUPhjOon7ZehR4C809GCqh765FoMRtTVUVnGvIoskkYHiw==",
+ "version": "23.0.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz",
+ "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=",
"dev": true
},
"jest-snapshot": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz",
- "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz",
+ "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==",
"dev": true,
"requires": {
+ "babel-types": "^6.0.0",
"chalk": "^2.0.1",
- "jest-diff": "^22.4.3",
- "jest-matcher-utils": "^22.4.3",
+ "jest-diff": "^23.6.0",
+ "jest-matcher-utils": "^23.6.0",
+ "jest-message-util": "^23.4.0",
+ "jest-resolve": "^23.6.0",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^22.4.3"
+ "pretty-format": "^23.6.0",
+ "semver": "^5.5.0"
}
},
"jest-transform-graphql": {
@@ -5780,17 +5512,18 @@
"dev": true
},
"jest-util": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz",
- "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz",
+ "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=",
"dev": true,
"requires": {
"callsites": "^2.0.0",
"chalk": "^2.0.1",
"graceful-fs": "^4.1.11",
"is-ci": "^1.0.10",
- "jest-message-util": "^22.4.3",
+ "jest-message-util": "^23.4.0",
"mkdirp": "^0.5.1",
+ "slash": "^1.0.0",
"source-map": "^0.6.0"
},
"dependencies": {
@@ -5803,36 +5536,73 @@
}
},
"jest-validate": {
- "version": "22.4.4",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.4.tgz",
- "integrity": "sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz",
+ "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
- "jest-config": "^22.4.4",
"jest-get-type": "^22.1.0",
"leven": "^2.1.0",
- "pretty-format": "^22.4.0"
+ "pretty-format": "^23.6.0"
+ }
+ },
+ "jest-watcher": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz",
+ "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "string-length": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "string-length": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
+ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+ "dev": true,
+ "requires": {
+ "astral-regex": "^1.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
}
},
"jest-worker": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.4.3.tgz",
- "integrity": "sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ==",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz",
+ "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=",
"dev": true,
"requires": {
"merge-stream": "^1.0.1"
}
},
"js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -5847,36 +5617,36 @@
"optional": true
},
"jsdom": {
- "version": "11.10.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.10.0.tgz",
- "integrity": "sha512-x5No5FpJgBg3j5aBwA8ka6eGuS5IxbC8FOkmyccKvObtFT0bDMict/LOxINZsZGZSfGdNomLZ/qRV9Bpq/GIBA==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
"dev": true,
"requires": {
- "abab": "^1.0.4",
- "acorn": "^5.3.0",
+ "abab": "^2.0.0",
+ "acorn": "^5.5.3",
"acorn-globals": "^4.1.0",
"array-equal": "^1.0.0",
"cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": ">= 0.2.37 < 0.3.0",
+ "cssstyle": "^1.0.0",
"data-urls": "^1.0.0",
- "domexception": "^1.0.0",
- "escodegen": "^1.9.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.9.1",
"html-encoding-sniffer": "^1.0.2",
- "left-pad": "^1.2.0",
- "nwmatcher": "^1.4.3",
+ "left-pad": "^1.3.0",
+ "nwsapi": "^2.0.7",
"parse5": "4.0.0",
"pn": "^1.1.0",
- "request": "^2.83.0",
+ "request": "^2.87.0",
"request-promise-native": "^1.0.5",
"sax": "^1.2.4",
"symbol-tree": "^3.2.2",
- "tough-cookie": "^2.3.3",
+ "tough-cookie": "^2.3.4",
"w3c-hr-time": "^1.0.1",
"webidl-conversions": "^4.0.2",
"whatwg-encoding": "^1.0.3",
"whatwg-mimetype": "^2.1.0",
- "whatwg-url": "^6.4.0",
- "ws": "^4.0.0",
+ "whatwg-url": "^6.4.1",
+ "ws": "^5.2.0",
"xml-name-validator": "^3.0.0"
},
"dependencies": {
@@ -5905,18 +5675,9 @@
"dev": true
},
"json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
- "dev": true,
- "requires": {
- "jsonify": "~0.0.0"
- }
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stringify-safe": {
"version": "5.0.1",
@@ -5929,12 +5690,6 @@
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
},
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -5960,6 +5715,12 @@
"is-buffer": "^1.1.5"
}
},
+ "kleur": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz",
+ "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==",
+ "dev": true
+ },
"lazy-cache": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
@@ -6047,11 +5808,20 @@
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
},
+ "lodash.escape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
+ "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg="
+ },
"lodash.flattendeep": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
- "dev": true
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI="
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
},
"lodash.sortby": {
"version": "4.7.0",
@@ -6065,11 +5835,11 @@
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
},
"loose-envify": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
- "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
- "js-tokens": "^3.0.0"
+ "js-tokens": "^3.0.0 || ^4.0.0"
}
},
"lru-cache": {
@@ -6209,18 +5979,18 @@
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
},
"mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "version": "1.36.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
+ "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
"dev": true
},
"mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "version": "2.1.20",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
+ "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"dev": true,
"requires": {
- "mime-db": "~1.33.0"
+ "mime-db": "~1.36.0"
}
},
"mimic-fn": {
@@ -6228,14 +5998,6 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
},
- "min-document": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
- "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
- "requires": {
- "dom-walk": "^0.1.0"
- }
- },
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -6256,7 +6018,7 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"mississippi": {
@@ -6297,7 +6059,7 @@
},
"mkdirp": {
"version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
@@ -6305,7 +6067,7 @@
"dependencies": {
"minimist": {
"version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
}
@@ -6320,9 +6082,14 @@
}
},
"moment": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz",
- "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ=="
+ "version": "2.22.2",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
+ "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
+ },
+ "moo": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz",
+ "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw=="
},
"move-concurrently": {
"version": "1.0.1",
@@ -6343,22 +6110,21 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz",
+ "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==",
"optional": true
},
"nanomatch": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
- "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"fragment-cache": "^0.2.1",
- "is-odd": "^2.0.0",
"is-windows": "^1.0.2",
"kind-of": "^6.0.2",
"object.pick": "^1.3.0",
@@ -6391,11 +6157,11 @@
"dev": true
},
"nearley": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.13.0.tgz",
- "integrity": "sha512-ioYYogSaZhFlCpRizQgY3UT3G1qFXmHGY/5ozoFE3dMfiCRAeJfh+IPE3/eh9gCZvqLhPCWb4bLt7Bqzo+1mLQ==",
- "dev": true,
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.15.1.tgz",
+ "integrity": "sha512-8IUY/rUrKz2mIynUGh8k+tul1awMKEjeHHC5G3FHvvyAW6oq4mQfNp2c0BMea+sYZJvYcrrM6GmZVIle/GRXGw==",
"requires": {
+ "moo": "^0.4.3",
"nomnom": "~1.6.2",
"railroad-diagrams": "^1.0.0",
"randexp": "0.4.6",
@@ -6403,14 +6169,14 @@
}
},
"neo-async": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz",
- "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA=="
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz",
+ "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw=="
},
"next": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/next/-/next-6.0.3.tgz",
- "integrity": "sha1-t1n94uxIZPkhFs7k/NgFqvKFE2w=",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/next/-/next-6.1.2.tgz",
+ "integrity": "sha512-/l0YNpHlph0l2VthNSzeADKZQJrF2Bq7a3OB0Cl91yeLYn+1y3oV9hQX/H6pj5lORai9fHGjooTwpqCOFfcnxg==",
"requires": {
"@babel/core": "7.0.0-beta.42",
"@babel/plugin-proposal-class-properties": "7.0.0-beta.42",
@@ -6424,7 +6190,7 @@
"@babel/template": "7.0.0-beta.42",
"ansi-html": "0.0.7",
"babel-core": "7.0.0-bridge.0",
- "babel-loader": "8.0.0-beta.2",
+ "babel-loader": "8.0.0-beta.3",
"babel-plugin-react-require": "3.0.0",
"babel-plugin-transform-react-remove-prop-types": "0.4.13",
"case-sensitive-paths-webpack-plugin": "2.1.1",
@@ -6436,7 +6202,7 @@
"fresh": "0.5.2",
"friendly-errors-webpack-plugin": "1.6.1",
"glob": "7.1.2",
- "hoist-non-react-statics": "2.5.0",
+ "hoist-non-react-statics": "2.5.5",
"htmlescape": "1.1.1",
"http-errors": "1.6.2",
"http-status": "1.0.1",
@@ -6446,7 +6212,7 @@
"path-to-regexp": "2.1.0",
"prop-types": "15.6.0",
"prop-types-exact": "1.1.1",
- "react-hot-loader": "4.1.3",
+ "react-lifecycles-compat": "3.0.4",
"recursive-copy": "2.0.6",
"resolve": "1.5.0",
"send": "0.16.1",
@@ -6456,7 +6222,7 @@
"touch": "3.1.0",
"uglifyjs-webpack-plugin": "1.1.6",
"unfetch": "3.0.0",
- "update-check": "1.4.0",
+ "update-check": "1.5.2",
"url": "0.11.0",
"uuid": "3.1.0",
"walk": "2.3.9",
@@ -6476,11 +6242,6 @@
"loose-envify": "^1.3.1",
"object-assign": "^4.1.1"
}
- },
- "uuid": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
- "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
}
}
},
@@ -6490,21 +6251,36 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"next-with-apollo": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/next-with-apollo/-/next-with-apollo-3.0.2.tgz",
- "integrity": "sha512-MC3fyk+BdkBAYyQJiLSn/oqj5qKZvBQ7VchpUiNu69RK9FMjSBGSMvWwRuJc5AKfptOWyZmFZ/XcKsi60ExgdQ==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/next-with-apollo/-/next-with-apollo-3.1.3.tgz",
+ "integrity": "sha512-F2HiJo/z9wixXITyro0KOE1nzQe6GYc11xq+FoD1c5YOXtbxezUhOOquey7pCVnGvNxfufJOpqj3on75i7lfIQ==",
"requires": {
- "@types/graphql": "0.12.6",
- "@types/next": "^2.4.10",
+ "@types/graphql": "0.12.7",
+ "@types/next": "^6.0.4",
"@types/prop-types": "^15.5.2",
"@types/react": "^16.3.14",
- "apollo-client": "^2.3.1",
+ "apollo-client": "^2.4.1",
"graphql": "0.13.2",
"isomorphic-unfetch": "^2.0.0",
"next": "^6.0.0",
- "prop-types": "^15.6.1",
- "react-apollo": "^2.1.4",
+ "prop-types": "^15.6.2",
+ "react-apollo": "^2.1.9",
"react-dom": "^16.3.2"
+ },
+ "dependencies": {
+ "@types/graphql": {
+ "version": "0.12.7",
+ "resolved": "http://registry.npmjs.org/@types/graphql/-/graphql-0.12.7.tgz",
+ "integrity": "sha512-xuf/9ShwOOlxoV+J5ts4vAoPbL3nmcFU3z/Ad6jrsiB99hB/Wrs2fl3qJga5XJ1euAasMN/FsNPdHMV6+OV5vw=="
+ },
+ "graphql": {
+ "version": "0.13.2",
+ "resolved": "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+ "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
+ "requires": {
+ "iterall": "^1.2.1"
+ }
+ }
}
},
"node-fetch": {
@@ -6552,11 +6328,6 @@
"vm-browserify": "0.0.4"
},
"dependencies": {
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
- },
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@@ -6580,7 +6351,6 @@
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz",
"integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=",
- "dev": true,
"requires": {
"colors": "0.5.x",
"underscore": "~1.4.4"
@@ -6630,7 +6400,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
"integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
- "dev": true,
"requires": {
"boolbase": "~1.0.0"
}
@@ -6640,16 +6409,16 @@
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
- "nwmatcher": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
- "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
+ "nwsapi": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz",
+ "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==",
"dev": true
},
"oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
@@ -6680,19 +6449,17 @@
"object-inspect": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
- "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
- "dev": true
+ "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ=="
},
"object-is": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz",
- "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=",
- "dev": true
+ "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY="
},
"object-keys": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
- "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag=="
},
"object-visit": {
"version": "1.0.1",
@@ -6724,7 +6491,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz",
"integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=",
- "dev": true,
"requires": {
"define-properties": "^1.1.2",
"es-abstract": "^1.6.1",
@@ -6736,7 +6502,6 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
"integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
- "dev": true,
"requires": {
"define-properties": "^1.1.2",
"es-abstract": "^1.5.1"
@@ -6770,7 +6535,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz",
"integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=",
- "dev": true,
"requires": {
"define-properties": "^1.1.2",
"es-abstract": "^1.6.1",
@@ -6806,7 +6570,7 @@
"dependencies": {
"minimist": {
"version": "0.0.10",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
}
@@ -6867,9 +6631,9 @@
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
},
"p-limit": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
- "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"requires": {
"p-try": "^1.0.0"
}
@@ -6942,7 +6706,6 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
"integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
- "dev": true,
"requires": {
"@types/node": "*"
}
@@ -6983,9 +6746,9 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
},
"path-parse": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
"path-to-regexp": {
"version": "2.1.0",
@@ -7022,8 +6785,7 @@
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"pify": {
"version": "3.0.0",
@@ -7088,9 +6850,9 @@
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
},
"pretty-format": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz",
- "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==",
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz",
+ "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0",
@@ -7111,9 +6873,9 @@
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
},
"process": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
- "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
},
"process-nextick-args": {
"version": "2.0.0",
@@ -7133,12 +6895,21 @@
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
},
+ "prompts": {
+ "version": "0.1.14",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz",
+ "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==",
+ "dev": true,
+ "requires": {
+ "kleur": "^2.0.1",
+ "sisteransi": "^0.1.1"
+ }
+ },
"prop-types": {
- "version": "15.6.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz",
- "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==",
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"requires": {
- "fbjs": "^0.8.16",
"loose-envify": "^1.3.1",
"object-assign": "^4.1.1"
}
@@ -7162,6 +6933,12 @@
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
"public-encrypt": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
@@ -7194,9 +6971,9 @@
}
},
"punycode": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
- "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0="
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.5.2",
@@ -7218,7 +6995,6 @@
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
"integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==",
- "dev": true,
"requires": {
"performance-now": "^2.1.0"
}
@@ -7226,23 +7002,21 @@
"railroad-diagrams": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
- "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=",
- "dev": true
+ "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234="
},
"randexp": {
"version": "0.4.6",
"resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
"integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
- "dev": true,
"requires": {
"discontinuous-range": "1.0.0",
"ret": "~0.1.10"
}
},
"randomatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
- "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
+ "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
"requires": {
"is-number": "^4.0.0",
"kind-of": "^6.0.0",
@@ -7284,25 +7058,25 @@
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
},
"rc": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
- "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"requires": {
- "deep-extend": "^0.5.1",
+ "deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
}
},
"react": {
- "version": "16.3.2",
- "resolved": "https://registry.npmjs.org/react/-/react-16.3.2.tgz",
- "integrity": "sha512-o5GPdkhciQ3cEph6qgvYB7LTOHw/GB0qRI6ZFNugj49qJCFfgHwVNjZ5u+b7nif4vOeMIOuYj3CeYe2IBD74lg==",
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.5.0.tgz",
+ "integrity": "sha512-nw/yB/L51kA9PsAy17T1JrzzGRk+BlFCJwFF7p+pwVxgqwPjYNeZEkkH7LXn9dmflolrYMXLWMTkQ77suKPTNQ==",
"requires": {
- "fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.0"
+ "prop-types": "^15.6.2",
+ "schedule": "^0.3.0"
}
},
"react-adopt": {
@@ -7316,22 +7090,15 @@
}
},
"react-apollo": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.1.4.tgz",
- "integrity": "sha512-KVDoRdGxUJYOAuWbYmsl4mvJXBvlJFDDDd43V0ey2gxWrNloGK/JVjnET6/PApj142FCcWz42Nvc4oW27f9acA==",
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.1.11.tgz",
+ "integrity": "sha512-WRoSOuZiQYgieXTgep4v3YwtVlxRnPHdcLEJBLX5+zq2atLmonvEkuFLJNjhAAOW/mYM8XhbLrbaC5NPrFrn0w==",
"requires": {
"fbjs": "^0.8.16",
"hoist-non-react-statics": "^2.5.0",
"invariant": "^2.2.2",
- "lodash": "4.17.5",
+ "lodash": "^4.17.10",
"prop-types": "^15.6.0"
- },
- "dependencies": {
- "lodash": {
- "version": "4.17.5",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
- "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
- }
}
},
"react-display-name": {
@@ -7340,76 +7107,51 @@
"integrity": "sha512-zvU6iouW+SWwHTyThwxGICjJYCMZFk/6r/+jmOdC7ntQoPlS/Pqb81MkxaMf2bHTSq9TN3K3zX2/ayMW/jCtyA=="
},
"react-dom": {
- "version": "16.3.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.2.tgz",
- "integrity": "sha512-MMPko3zYncNrz/7gG17wJWUREZDvskZHXOwbttzl0F0L3wDmToyuETuo/r8Y5yvDejwYcRyWI1lvVBjLJWFwKA==",
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.5.0.tgz",
+ "integrity": "sha512-qgsQdjFH54pQ1AGLCBKsqjPxib4Pnp+cOsNxGPlkHn5YnsSt43sBvHSif6FheY7NMMS6HPeSJOxXf6ECanjacA==",
"requires": {
- "fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.0"
- }
- },
- "react-hot-loader": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.1.3.tgz",
- "integrity": "sha512-CF3Y/qUfL1PkM6TPrELNsSiHGKJFRnpyLdzsk+HV4IIuQAY2g1aZXQmK4L/O8WOaldoOujxAYfRfpzrWTvmvtg==",
- "requires": {
- "fast-levenshtein": "^2.0.6",
- "global": "^4.3.0",
- "hoist-non-react-statics": "^2.5.0",
- "prop-types": "^15.6.1",
- "react-lifecycles-compat": "^3.0.2",
- "shallowequal": "^1.0.2"
+ "prop-types": "^15.6.2",
+ "schedule": "^0.3.0"
}
},
"react-is": {
- "version": "16.3.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.3.2.tgz",
- "integrity": "sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q=="
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.5.0.tgz",
+ "integrity": "sha512-kpkCGLsChXTEQJVmowQqHpCjHKJFwB4SIChYaaaiAkq8OtE2aBg5pQe8/xnFlGmz9KmMx1H4oQRUyxP7qC9v5A=="
},
"react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
- "react-reconciler": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz",
- "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==",
- "dev": true,
- "requires": {
- "fbjs": "^0.8.16",
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.0"
- }
- },
"react-stripe-checkout": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/react-stripe-checkout/-/react-stripe-checkout-2.6.3.tgz",
"integrity": "sha1-MXOocLBOWjwyGgbSTNU8YDARHEU="
},
"react-test-renderer": {
- "version": "16.3.2",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.3.2.tgz",
- "integrity": "sha512-lL8WHIpCTMdSe+CRkt0rfMxBkJFyhVrpdQ54BaJRIrXf9aVmbeHbRA8GFRpTvohPN5tPzMabmrzW2PUfWCfWwQ==",
- "dev": true,
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.5.0.tgz",
+ "integrity": "sha512-cuN9BoZ1p6T3oxrjxN7pQDSmgWzAxWBi8gtCHcViMYcw/1xqOIyatt2YFhiCWg7115TPQqkTKEu+F44YjFE4ig==",
"requires": {
- "fbjs": "^0.8.16",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.0",
- "react-is": "^16.3.2"
+ "prop-types": "^15.6.2",
+ "react-is": "^16.5.0",
+ "schedule": "^0.3.0"
}
},
"react-transition-group": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.3.1.tgz",
- "integrity": "sha512-hu4/LAOFSKjWt1+1hgnOv3ldxmt6lvZGTWz4KUkFrqzXrNDIVSu6txIcPszw7PNduR8en9YTN55JLRyd/L1ZiQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.4.0.tgz",
+ "integrity": "sha512-Xv5d55NkJUxUzLCImGSanK8Cl/30sgpOEMGc5m86t8+kZwrPxPCPcFqyx83kkr+5Lz5gs6djuvE5By+gce+VjA==",
"requires": {
"dom-helpers": "^3.3.1",
"loose-envify": "^1.3.1",
- "prop-types": "^15.6.1"
+ "prop-types": "^15.6.2",
+ "react-lifecycles-compat": "^3.0.4"
}
},
"read-pkg": {
@@ -7433,7 +7175,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
@@ -7457,9 +7199,9 @@
}
},
"realpath-native": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz",
- "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz",
+ "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==",
"dev": true,
"requires": {
"util.promisify": "^1.0.0"
@@ -7522,11 +7264,11 @@
"integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg=="
},
"regenerate-unicode-properties": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-6.0.0.tgz",
- "integrity": "sha512-BvXxRS7RfVWxtm7vrq+0I0j7sqZ1zeSC+yzf5HS0qLnKcZPX541gFEGB39LvGuKHrkyKXrzXug+oC7xkM1Zovw==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz",
+ "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==",
"requires": {
- "regenerate": "^1.3.3"
+ "regenerate": "^1.4.0"
}
},
"regenerator-runtime": {
@@ -7535,9 +7277,9 @@
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"regenerator-transform": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz",
- "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==",
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.4.tgz",
+ "integrity": "sha512-p2I0fY+TbSLD2/VFTFb/ypEHxs3e3AjU0DzttdPqk2bSmDhfSh5E54b86Yc6XhUa5KykK1tgbvZ4Nr82oCJWkQ==",
"requires": {
"private": "^0.1.6"
}
@@ -7560,16 +7302,16 @@
}
},
"regexpu-core": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.5.tgz",
- "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz",
+ "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==",
"requires": {
"regenerate": "^1.4.0",
- "regenerate-unicode-properties": "^6.0.0",
+ "regenerate-unicode-properties": "^7.0.0",
"regjsgen": "^0.4.0",
"regjsparser": "^0.3.0",
- "unicode-match-property-ecmascript": "^1.0.3",
- "unicode-match-property-value-ecmascript": "^1.0.1"
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.0.2"
}
},
"registry-auth-token": {
@@ -7615,9 +7357,9 @@
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
},
"repeat-element": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
- "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
},
"repeat-string": {
"version": "1.6.1",
@@ -7634,31 +7376,39 @@
}
},
"request": {
- "version": "2.87.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
- "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
- "aws4": "^1.6.0",
+ "aws4": "^1.8.0",
"caseless": "~0.12.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.1",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
"forever-agent": "~0.6.1",
- "form-data": "~2.3.1",
- "har-validator": "~5.0.3",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
"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",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
- "qs": "~6.5.1",
- "safe-buffer": "^5.1.1",
- "tough-cookie": "~2.3.3",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
- "uuid": "^3.1.0"
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ }
}
},
"request-promise-core": {
@@ -7759,7 +7509,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
"integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
- "dev": true,
"requires": {
"lodash.flattendeep": "^4.4.0",
"nearley": "^2.7.10"
@@ -8105,19 +7854,27 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
},
+ "schedule": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/schedule/-/schedule-0.3.0.tgz",
+ "integrity": "sha512-20+1KVo517sR7Nt+bYBN8a+bEJDKLPEx7Ohtts1kX05E4/HY53YUNuhfkVNItmWAnBYHcpG9vsd2/CJxG+aPCQ==",
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
+ },
"schema-utils": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
- "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
"requires": {
"ajv": "^6.1.0",
"ajv-keywords": "^3.1.0"
}
},
"semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
+ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
},
"send": {
"version": "0.16.1",
@@ -8209,11 +7966,6 @@
"safe-buffer": "^5.0.1"
}
},
- "shallowequal": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz",
- "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw=="
- },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -8238,6 +7990,12 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
+ "sisteransi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz",
+ "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==",
+ "dev": true
+ },
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -8371,21 +8129,12 @@
}
},
"source-map-support": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
- "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "source-map": "^0.5.6"
}
},
"source-map-url": {
@@ -8417,9 +8166,9 @@
}
},
"spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
+ "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w=="
},
"split-string": {
"version": "3.1.0",
@@ -8436,9 +8185,9 @@
"dev": true
},
"sshpk": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
- "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+ "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
"dev": true,
"requires": {
"asn1": "~0.2.3",
@@ -8448,6 +8197,7 @@
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
@@ -8510,18 +8260,18 @@
}
},
"stream-each": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz",
- "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
"requires": {
"end-of-stream": "^1.1.0",
"stream-shift": "^1.0.0"
}
},
"stream-http": {
- "version": "2.8.2",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz",
- "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
"requires": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.1",
@@ -8577,6 +8327,16 @@
}
}
},
+ "string.prototype.trim": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
+ "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.0",
+ "function-bind": "^1.0.2"
+ }
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -8609,15 +8369,14 @@
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"styled-components": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.2.6.tgz",
- "integrity": "sha1-mebnWnRr3t0pWhfgPdFJMFWhzDs=",
+ "version": "3.4.6",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.4.6.tgz",
+ "integrity": "sha512-HiEVVY93oH/PuekPuIE7ownn2wmO708rS8MM1yS20i0TCyFgPs3mbop8fJqKLRtC2/npVn2fO5Je6azaL6T2tg==",
"requires": {
"buffer": "^5.0.3",
"css-to-react-native": "^2.0.3",
"fbjs": "^0.8.16",
"hoist-non-react-statics": "^2.5.0",
- "is-plain-object": "^2.0.1",
"prop-types": "^15.5.4",
"react-is": "^16.3.1",
"stylis": "^3.5.0",
@@ -8626,9 +8385,9 @@
},
"dependencies": {
"buffer": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz",
- "integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
+ "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
@@ -8639,6 +8398,11 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
"integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
},
+ "stylis": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.3.tgz",
+ "integrity": "sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ=="
+ },
"stylis-rule-sheet": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz",
@@ -8656,7 +8420,7 @@
},
"styled-jsx": {
"version": "2.2.6",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-2.2.6.tgz",
+ "resolved": "http://registry.npmjs.org/styled-jsx/-/styled-jsx-2.2.6.tgz",
"integrity": "sha512-lx678TbNf56I7W4JezJqbLdSiTOpuKvixaZTCjHapFbuJQV3b3dByza6u8+cPRtG/PAmBHeA61croO77rp5auw==",
"requires": {
"babel-plugin-syntax-jsx": "6.18.0",
@@ -8668,22 +8432,22 @@
"stylis-rule-sheet": "0.0.8"
},
"dependencies": {
+ "convert-source-map": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
+ },
"source-map": {
"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.10",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.4.10.tgz",
- "integrity": "sha512-J7CXAfeyhjdgvdQMz2yy0gTDccq0nVmatx6IlX1je1kCqdNgk3npGOzX6qprEd2oHVv7IF5HXO08i6XFQs/JRA=="
}
}
},
"stylis": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.0.tgz",
- "integrity": "sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw=="
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.4.10.tgz",
+ "integrity": "sha512-J7CXAfeyhjdgvdQMz2yy0gTDccq0nVmatx6IlX1je1kCqdNgk3npGOzX6qprEd2oHVv7IF5HXO08i6XFQs/JRA=="
},
"stylis-rule-sheet": {
"version": "0.0.8",
@@ -8691,9 +8455,9 @@
"integrity": "sha512-UgR/mJxew0tbNFXzkm60G26bkyYAnzf8OqB9pX2okFYxwEUpuxQ6E5lKhHH23Fs4F5aU6axCtNZRaB8ZdVrWvQ=="
},
"supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
@@ -8715,219 +8479,18 @@
"integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI="
},
"test-exclude": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz",
- "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz",
+ "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==",
"dev": true,
"requires": {
"arrify": "^1.0.1",
- "micromatch": "^3.1.8",
+ "micromatch": "^2.3.11",
"object-assign": "^4.1.0",
"read-pkg-up": "^1.0.1",
"require-main-filename": "^1.0.1"
},
"dependencies": {
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
"find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
@@ -8938,67 +8501,6 @@
"pinkie-promise": "^2.0.0"
}
},
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -9012,27 +8514,6 @@
"strip-bom": "^2.0.0"
}
},
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
@@ -9107,9 +8588,9 @@
}
},
"time-stamp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
- "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.1.0.tgz",
+ "integrity": "sha512-lJbq6KsFhZJtN3fPUVje1tq/hHsJOKUUcUj/MGCiQR6qWBDcyi5kxL9J7/RnaEChCn0+L/DUN2WvemDrkk4i3Q=="
},
"timers-browserify": {
"version": "2.0.10",
@@ -9182,11 +8663,12 @@
}
},
"tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
+ "psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
@@ -9299,8 +8781,7 @@
"underscore": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
- "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=",
- "dev": true
+ "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
},
"unfetch": {
"version": "3.0.0",
@@ -9308,28 +8789,28 @@
"integrity": "sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII="
},
"unicode-canonical-property-names-ecmascript": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz",
- "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA=="
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ=="
},
"unicode-match-property-ecmascript": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz",
- "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
"requires": {
- "unicode-canonical-property-names-ecmascript": "^1.0.2",
- "unicode-property-aliases-ecmascript": "^1.0.3"
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
}
},
"unicode-match-property-value-ecmascript": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz",
- "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog=="
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz",
+ "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ=="
},
"unicode-property-aliases-ecmascript": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz",
- "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w=="
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg=="
},
"union-value": {
"version": "1.0.0",
@@ -9426,18 +8907,18 @@
"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw=="
},
"update-check": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.4.0.tgz",
- "integrity": "sha512-KSPgYhsCqS78LnMmJIcsh1BIOaOvSRPDo8x7Qcz0LF5ZsaioDyiVon5o0wqZgzkrU4jgrm5yuu9Ec/B84N6TZg==",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz",
+ "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==",
"requires": {
"registry-auth-token": "3.3.2",
"registry-url": "3.1.0"
}
},
"uri-js": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz",
- "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"requires": {
"punycode": "^2.1.0"
}
@@ -9464,33 +8945,16 @@
}
},
"use": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
- "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
- "requires": {
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
- }
- }
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
},
"util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"requires": {
- "inherits": "2.0.1"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
- }
+ "inherits": "2.0.3"
}
},
"util-deprecate": {
@@ -9502,22 +8966,20 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
"integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "dev": true,
"requires": {
"define-properties": "^1.1.2",
"object.getownpropertydescriptors": "^2.0.3"
}
},
"uuid": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
- "dev": true
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
},
"validate-npm-package-license": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
- "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -9654,6 +9116,11 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
},
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+ },
"supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
@@ -9674,7 +9141,7 @@
"dependencies": {
"yargs": {
"version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"requires": {
"camelcase": "^1.0.2",
@@ -9737,26 +9204,29 @@
}
},
"whatwg-encoding": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz",
- "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz",
+ "integrity": "sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg==",
"dev": true,
"requires": {
- "iconv-lite": "0.4.19"
+ "iconv-lite": "0.4.23"
},
"dependencies": {
"iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
}
}
},
"whatwg-fetch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
- "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
+ "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
},
"whatwg-mimetype": {
"version": "2.1.0",
@@ -9765,9 +9235,9 @@
"dev": true
},
"whatwg-url": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz",
- "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
+ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
"dev": true,
"requires": {
"lodash.sortby": "^4.7.0",
@@ -9776,9 +9246,9 @@
}
},
"which": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
- "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"requires": {
"isexe": "^2.0.0"
}
@@ -9808,7 +9278,7 @@
},
"wrap-ansi": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"requires": {
"string-width": "^1.0.1",
@@ -9863,7 +9333,7 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "^2.2.1",
@@ -9889,13 +9359,12 @@
}
},
"ws": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
- "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"dev": true,
"requires": {
- "async-limiter": "~1.0.0",
- "safe-buffer": "~5.1.0"
+ "async-limiter": "~1.0.0"
}
},
"xml-name-validator": {
@@ -9989,9 +9458,9 @@
}
},
"zen-observable": {
- "version": "0.8.8",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.8.tgz",
- "integrity": "sha512-HnhhyNnwTFzS48nihkCZIJGsWGFcYUz+XPDlPK5W84Ifji8SksC6m7sQWOf8zdCGhzQ4tDYuMYGu5B0N1dXTtg=="
+ "version": "0.8.9",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.9.tgz",
+ "integrity": "sha512-Y9kPzjGvIZ5jchSlqlCpBW3I82zBBL4z+ulXDRVA1NwsKzjt5kwAi+gOYIy0htNkfuehGZZtP5mRXHRV6TjDWw=="
},
"zen-observable-ts": {
"version": "0.8.9",
diff --git a/finished-application/frontend/package.json b/stepped-solutions/FINISHED/frontend/package.json
index e75435b..4578192 100644
--- a/finished-application/frontend/package.json
+++ b/stepped-solutions/FINISHED/frontend/package.json
@@ -4,45 +4,46 @@
"description": "Sick Fits! An example React, GraphQL, Next and Apollo",
"main": "index.js",
"scripts": {
- "dev": "next -p 8888",
+ "dev": "next -p 7777",
"build": "next build",
"start": "next start",
- "test": "NODE_ENV=test jest --watch"
+ "test": "NODE_ENV=test jest --watch",
+ "heroku-postbuild": "next build"
},
"author": "",
"license": "ISC",
"dependencies": {
- "apollo-boost": "^0.1.6",
- "apollo-client": "^2.3.1",
+ "apollo-boost": "^0.1.15",
+ "apollo-client": "^2.4.1",
"babel-core": "^7.0.0-bridge.0",
- "babel-plugin-styled-components": "^1.5.1",
+ "babel-plugin-styled-components": "^1.6.4",
"date-fns": "^2.0.0-alpha.7",
- "downshift": "^1.31.14",
- "graphql": "^0.13.2",
+ "downshift": "^2.2.2",
+ "enzyme": "^3.6.0",
+ "enzyme-adapter-react-16": "^1.5.0",
+ "graphql": "^14.0.2",
"graphql-tag": "^2.9.2",
"lodash.debounce": "^4.0.8",
- "next": "^6.0.3",
- "next-with-apollo": "^3.0.2",
+ "next": "^6.1.2",
+ "next-with-apollo": "^3.1.3",
"nprogress": "^0.2.0",
- "prop-types": "^15.6.1",
- "react": "^16.3.2",
+ "prop-types": "^15.6.2",
+ "react": "^16.5.0",
"react-adopt": "^0.6.0",
- "react-apollo": "^2.1.4",
- "react-dom": "^16.3.2",
+ "react-apollo": "^2.1.11",
+ "react-dom": "^16.5.0",
"react-stripe-checkout": "^2.6.3",
- "react-transition-group": "^2.3.1",
- "styled-components": "^3.2.6",
+ "react-transition-group": "^2.4.0",
+ "styled-components": "^3.4.6",
"waait": "^1.0.2"
},
"devDependencies": {
- "babel-jest": "^23.0.0",
+ "babel-jest": "^23.6.0",
"babel-plugin-module-resolver": "^3.1.1",
"casual": "^1.5.19",
- "enzyme": "^3.3.0",
- "enzyme-adapter-react-16": "^1.1.1",
"enzyme-to-json": "^3.3.4",
- "graphql-tools": "^3.0.2",
- "jest": "^22.4.4",
+ "graphql-tools": "^3.1.1",
+ "jest": "^23.6.0",
"jest-transform-graphql": "^2.1.0"
},
"jest": {
@@ -56,7 +57,7 @@
".*": "babel-jest"
}
},
- "//": "This is our babel config, I prefer this over a .babelrc file",
+ "//": "This is out babel config, I prefer this over a .babelrc file",
"babel": {
"env": {
"development": {
@@ -97,6 +98,15 @@
}
}
]
+ ],
+ "plugins": [
+ [
+ "styled-components",
+ {
+ "ssr": true,
+ "displayName": true
+ }
+ ]
]
}
}
diff --git a/stepped-solutions/FINISHED/frontend/pages/.gitkeep b/stepped-solutions/FINISHED/frontend/pages/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/.gitkeep
diff --git a/finished-application/frontend/pages/_app.js b/stepped-solutions/FINISHED/frontend/pages/_app.js
index 4e9af74..fc03876 100644
--- a/finished-application/frontend/pages/_app.js
+++ b/stepped-solutions/FINISHED/frontend/pages/_app.js
@@ -1,11 +1,7 @@
import App, { Container } from 'next/app';
+import Page from '../components/Page';
import { ApolloProvider } from 'react-apollo';
import withData from '../lib/withData';
-import Page from '../components/Page';
-
-// Next.js wraps each Page in an <App></App> component. This is handy for when you want to persist anything from page to page, or just access a component that is 1 level higher than each page.
-
-// here we use App from next/app and wrap it with withData so we can get Apollo and SSR
class MyApp extends App {
static async getInitialProps({ Component, ctx }) {
@@ -13,13 +9,12 @@ class MyApp extends App {
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx);
}
-
+ // this exposes the query to the user
pageProps.query = ctx.query;
-
return { pageProps };
}
render() {
- const { Component, pageProps, apollo } = this.props;
+ const { Component, apollo, pageProps } = this.props;
return (
<Container>
diff --git a/finished-application/frontend/pages/_document.js b/stepped-solutions/FINISHED/frontend/pages/_document.js
index a5a28cc..0ac8935 100644
--- a/finished-application/frontend/pages/_document.js
+++ b/stepped-solutions/FINISHED/frontend/pages/_document.js
@@ -1,7 +1,7 @@
import Document, { Head, Main, NextScript } from 'next/document';
import { ServerStyleSheet } from 'styled-components';
-class MyDocument extends Document {
+export default class MyDocument extends Document {
static getInitialProps({ renderPage }) {
const sheet = new ServerStyleSheet();
const page = renderPage(App => props => sheet.collectStyles(<App {...props} />));
@@ -21,5 +21,3 @@ class MyDocument extends Document {
);
}
}
-
-export default MyDocument;
diff --git a/finished-application/frontend/pages/index.js b/stepped-solutions/FINISHED/frontend/pages/index.js
index d316108..edb45ab 100644
--- a/finished-application/frontend/pages/index.js
+++ b/stepped-solutions/FINISHED/frontend/pages/index.js
@@ -1,7 +1,9 @@
import Items from '../components/Items';
const Home = props => (
- <Items page={parseInt(props.query.page) || 1} />
-)
+ <div>
+ <Items page={parseFloat(props.query.page) || 1} />
+ </div>
+);
export default Home;
diff --git a/stepped-solutions/FINISHED/frontend/pages/item.js b/stepped-solutions/FINISHED/frontend/pages/item.js
new file mode 100644
index 0000000..e58b220
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/item.js
@@ -0,0 +1,9 @@
+import SingleItem from '../components/SingleItem';
+
+const Item = props => (
+ <div>
+ <SingleItem id={props.query.id} />
+ </div>
+);
+
+export default Item;
diff --git a/stepped-solutions/FINISHED/frontend/pages/items.js b/stepped-solutions/FINISHED/frontend/pages/items.js
new file mode 100644
index 0000000..c95ff45
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/items.js
@@ -0,0 +1,3 @@
+import Items from './index';
+
+export default Items;
diff --git a/stepped-solutions/FINISHED/frontend/pages/order.js b/stepped-solutions/FINISHED/frontend/pages/order.js
new file mode 100644
index 0000000..0fea0c6
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/order.js
@@ -0,0 +1,12 @@
+import PleaseSignIn from '../components/PleaseSignIn';
+import Order from '../components/Order';
+
+const OrderPage = props => (
+ <div>
+ <PleaseSignIn>
+ <Order id={props.query.id} />
+ </PleaseSignIn>
+ </div>
+);
+
+export default OrderPage;
diff --git a/stepped-solutions/FINISHED/frontend/pages/orders.js b/stepped-solutions/FINISHED/frontend/pages/orders.js
new file mode 100644
index 0000000..c65d80d
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/orders.js
@@ -0,0 +1,12 @@
+import PleaseSignIn from '../components/PleaseSignIn';
+import OrderList from '../components/OrderList';
+
+const OrderPage = props => (
+ <div>
+ <PleaseSignIn>
+ <OrderList />
+ </PleaseSignIn>
+ </div>
+);
+
+export default OrderPage;
diff --git a/stepped-solutions/FINISHED/frontend/pages/permissions.js b/stepped-solutions/FINISHED/frontend/pages/permissions.js
new file mode 100644
index 0000000..de58c51
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/permissions.js
@@ -0,0 +1,12 @@
+import PleaseSignIn from '../components/PleaseSignIn';
+import Permissions from '../components/Permissions';
+
+const PermissionsPage = props => (
+ <div>
+ <PleaseSignIn>
+ <Permissions />
+ </PleaseSignIn>
+ </div>
+);
+
+export default PermissionsPage;
diff --git a/stepped-solutions/FINISHED/frontend/pages/reset.js b/stepped-solutions/FINISHED/frontend/pages/reset.js
new file mode 100644
index 0000000..118ba72
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/reset.js
@@ -0,0 +1,10 @@
+import Reset from '../components/Reset';
+
+const Sell = props => (
+ <div>
+ <p>Reset Your Password {props.query.resetToken}</p>
+ <Reset resetToken={props.query.resetToken} />
+ </div>
+);
+
+export default Sell;
diff --git a/finished-application/frontend/pages/add.js b/stepped-solutions/FINISHED/frontend/pages/sell.js
index 57a327d..b60ae80 100644
--- a/finished-application/frontend/pages/add.js
+++ b/stepped-solutions/FINISHED/frontend/pages/sell.js
@@ -1,10 +1,12 @@
import CreateItem from '../components/CreateItem';
import PleaseSignIn from '../components/PleaseSignIn';
-const Sell = () => (
- <PleaseSignIn>
- <CreateItem />
- </PleaseSignIn>
+const Sell = props => (
+ <div>
+ <PleaseSignIn>
+ <CreateItem />
+ </PleaseSignIn>
+ </div>
);
export default Sell;
diff --git a/finished-application/frontend/pages/signup.js b/stepped-solutions/FINISHED/frontend/pages/signup.js
index cd522f8..342cfea 100644
--- a/finished-application/frontend/pages/signup.js
+++ b/stepped-solutions/FINISHED/frontend/pages/signup.js
@@ -1,7 +1,7 @@
-import styled from 'styled-components';
import Signup from '../components/Signup';
import Signin from '../components/Signin';
-import ResetRequest from '../components/ResetRequest';
+import RequestReset from '../components/RequestReset';
+import styled from 'styled-components';
const Columns = styled.div`
display: grid;
@@ -9,12 +9,12 @@ const Columns = styled.div`
grid-gap: 20px;
`;
-const SignUpPage = () => (
+const SignupPage = props => (
<Columns>
<Signup />
<Signin />
- <ResetRequest />
+ <RequestReset />
</Columns>
);
-export default SignUpPage;
+export default SignupPage;
diff --git a/stepped-solutions/FINISHED/frontend/pages/update.js b/stepped-solutions/FINISHED/frontend/pages/update.js
new file mode 100644
index 0000000..ba9d525
--- /dev/null
+++ b/stepped-solutions/FINISHED/frontend/pages/update.js
@@ -0,0 +1,9 @@
+import UpdateItem from '../components/UpdateItem';
+
+const Sell = ({ query }) => (
+ <div>
+ <UpdateItem id={query.id} />
+ </div>
+);
+
+export default Sell;
diff --git a/finished-application/frontend/static/favicon.png b/stepped-solutions/FINISHED/frontend/static/favicon.png
index 0601ad6..0601ad6 100644
--- a/finished-application/frontend/static/favicon.png
+++ b/stepped-solutions/FINISHED/frontend/static/favicon.png
Binary files differ
diff --git a/finished-application/frontend/static/nprogress.css b/stepped-solutions/FINISHED/frontend/static/nprogress.css
index 544ce01..544ce01 100644
--- a/finished-application/frontend/static/nprogress.css
+++ b/stepped-solutions/FINISHED/frontend/static/nprogress.css
diff --git a/finished-application/frontend/static/radnikanext-medium-webfont.woff2 b/stepped-solutions/FINISHED/frontend/static/radnikanext-medium-webfont.woff2
index 04129fb..04129fb 100755
--- a/finished-application/frontend/static/radnikanext-medium-webfont.woff2
+++ b/stepped-solutions/FINISHED/frontend/static/radnikanext-medium-webfont.woff2
Binary files differ