├── .gitignore
├── README.md
├── api
└── stripe-functions.js
├── app.js
├── package.json
├── styles
├── adminView.css
├── app.css
└── customerView.css
├── utils
└── format-numbers.js
├── views
├── adminView.html
├── base.html
├── createPlan.html
├── createProduct.html
├── customerView.html
└── signUp.html
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | /node_modules
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # stripe-recurring-subscriptions
2 |
3 | ## Important Note 📌
4 |
5 | An updated version of this codebase is available here: [stripe-subscriptions-sca](https://github.com/code-nebula/stripe-subscriptions-sca)
6 |
7 | The updated version shows you how to set up recurring subscriptions that support SCA (Strong Customer Authentication).
8 |
9 | We recommend checking out the following tutorials, which complement the new codebase:
10 |
11 | 🌟[How to Set up a Basic Node Application with Stripe](https://codenebula.io/node.js/stripe/2020/03/03/how-to-set-up-a-basic-node-application-with-stripe/)
12 |
13 | 🌟[How to use Stripe’s new Payment Intents API with Node.js to create subscriptions with built-in SCA](https://codenebula.io/node.js/stripe/sca/2020/03/03/how-to-use-stripes-new-payment-intents-api-with-node-js-to-create-subscriptions-with-built-in-sca/)
14 |
15 |
16 | ## Overview
17 |
18 | This repository shows you how to create recurring subscriptions with Stripe and Node.js.
19 |
20 | It uses Express for creating a simple server, Nunjucks for templating, and the Stripe API.
21 |
22 | It features
23 |
24 | 1. An **Admin View** when you can create Stripe Products and Plans via the Stripe API.
25 | 2. A **Client View** where your users can view and pay for your subscription plans.
26 |
27 |
28 | ## Demo Video
29 |
30 | 
31 |
32 |
33 | ## Tutorial
34 |
35 | We’ve written a detailed, 3-part tutorial about this code on the :star2: CodeNebula blog:
36 | [Creating Monthly Recurring Subscriptions in Stripe using Node.js](https://codenebula.io/stripe/node.js/2019/04/11/creating-monthly-recurring-subscriptions-in-stripe-using-node-js-part-1/)
37 |
38 |
39 | ## Instructions
40 |
41 | 1. Clone this repository
42 | 2. Run `npm install` to install all dependencies
43 | 3. Create a `.env` file to house your Stripe Secret Key (this repo includes `.env` in its `.gitignore`)
44 | 4. In the `.env` file, set your secret key as STRIPE_API_KEY (`STRIPE_API_KEY="sk_test_************************"`)
45 | 5. In the Javascript section of the `views/signUp.html` file, replace `var stripe = Stripe("pk_test_************************")` with your Stripe Publishable Key
46 | 6. Run the app via `npm start`
47 | 7. Navigate to [localhost:3000](localhost:3000)
48 |
--------------------------------------------------------------------------------
/api/stripe-functions.js:
--------------------------------------------------------------------------------
1 | /* Server Side -- Stripe API calls */
2 | require('dotenv').config();
3 | const stripe = require('stripe')(process.env.STRIPE_API_KEY);
4 | const UTILS = require('../utils/format-numbers.js');
5 |
6 | function getAllProductsAndPlans() {
7 | return Promise.all(
8 | [
9 | stripe.products.list({}),
10 | stripe.plans.list({})
11 | ]
12 | ).then(stripeData => {
13 | var products = stripeData[0].data;
14 | var plans = stripeData[1].data;
15 |
16 | plans = plans.sort((a, b) => {
17 | /* Sort plans in ascending order of price (amount)
18 | * Ref: https://www.w3schools.com/js/js_array_sort.asp */
19 | return a.amount - b.amount;
20 | }).map(plan => {
21 | /* Format plan price (amount) */
22 | amount = UTILS.formatUSD(plan.amount)
23 | return {...plan, amount};
24 | });
25 |
26 | products.forEach(product => {
27 | const filteredPlans = plans.filter(plan => {
28 | return plan.product === product.id;
29 | });
30 |
31 | product.plans = filteredPlans;
32 | });
33 |
34 | return products;
35 | });
36 | }
37 |
38 |
39 | function createProduct(requestBody) {
40 | return stripe.products.create({
41 | name: requestBody.productName,
42 | type: 'service'
43 | });
44 | }
45 |
46 |
47 | function createPlan(requestBody) {
48 | return stripe.plans.create({
49 | nickname: requestBody.planName,
50 | amount: UTILS.formatStripeAmount(requestBody.planAmount),
51 | interval: requestBody.planInterval,
52 | interval_count: parseInt(requestBody.planIntervalNumber),
53 | product: requestBody.productId,
54 | currency: 'USD'
55 | });
56 | }
57 |
58 |
59 | function createCustomerAndSubscription(requestBody) {
60 | return stripe.customers.create({
61 | source: requestBody.stripeToken,
62 | email: requestBody.customerEmail
63 | }).then(customer => {
64 | stripe.subscriptions.create({
65 | customer: customer.id,
66 | items: [
67 | {
68 | plan: requestBody.planId
69 | }
70 | ]
71 | });
72 | });
73 | }
74 |
75 |
76 | module.exports = {
77 | getAllProductsAndPlans,
78 | createProduct,
79 | createPlan,
80 | createCustomerAndSubscription
81 | };
82 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const bodyParser = require('body-parser');
3 | const nunjucks = require('nunjucks');
4 |
5 | const app = express();
6 | const port = 3000;
7 | const router = express.Router();
8 |
9 | const STRIPE_API = require('./api/stripe-functions.js');
10 |
11 |
12 | /* Set up Express to serve HTML files using "res.render" with help of Nunjucks */
13 | app.set('view engine', 'html');
14 | app.engine('html', nunjucks.render);
15 | nunjucks.configure('views', { noCache: true });
16 |
17 | app.use(express.static(__dirname));
18 | app.use('/styles', express.static('styles'));
19 | app.use(bodyParser());
20 | app.use('/', router);
21 |
22 |
23 | /* Place all routes here */
24 | router.get('/', (req, res) => {
25 | STRIPE_API.getAllProductsAndPlans().then(products => {
26 | res.render('adminView.html', {products: products});
27 | });
28 | });
29 |
30 |
31 | /* Create Product */
32 | router.get('/createProduct', (req, res) => {
33 | res.render('createProduct.html');
34 | });
35 |
36 |
37 | router.post('/createProduct', (req, res) => {
38 | STRIPE_API.createProduct(req.body).then(() => {
39 | res.render('createProduct.html', { success: true });
40 | });
41 | });
42 |
43 |
44 | /* Create Plan */
45 | router.post('/createPlan', (req, res) => {
46 | res.render('createPlan.html', {
47 | productId: req.body.productId,
48 | productName: req.body.productName
49 | });
50 | });
51 |
52 |
53 | router.post('/createPlanForReal', (req, res) => {
54 | STRIPE_API.createPlan(req.body).then(() => {
55 | res.render('createPlan.html', { success: true });
56 | });
57 | });
58 |
59 | router.get('/customerView', (req, res) => {
60 | STRIPE_API.getAllProductsAndPlans().then(products => {
61 | products = products.filter(product => {
62 | return product.plans.length > 0;
63 | });
64 |
65 | res.render('customerView.html', {products: products});
66 | });
67 | });
68 |
69 |
70 | router.post('/signUp', (req, res) => {
71 | var product = {
72 | name: req.body.productName
73 | };
74 |
75 | var plan = {
76 | id: req.body.planId,
77 | name: req.body.planName,
78 | amount: req.body.planAmount,
79 | interval: req.body.planInterval,
80 | interval_count: req.body.planIntervalCount
81 | }
82 |
83 | res.render('signUp.html', {product: product, plan: plan});
84 | });
85 |
86 |
87 | router.post('/processPayment', (req, res) => {
88 | var product = {
89 | name: req.body.productName
90 | };
91 |
92 | var plan = {
93 | id: req.body.planId,
94 | name: req.body.planName,
95 | amount: req.body.planAmount,
96 | interval: req.body.planInterval,
97 | interval_count: req.body.planIntervalCount
98 | }
99 |
100 | STRIPE_API.createCustomerAndSubscription(req.body).then(() => {
101 | res.render('signup.html', {product: product, plan: plan, success: true});
102 | }).catch(err => {
103 | res.render('signup.html', {product: product, plan: plan, error: true});
104 | });
105 | });
106 |
107 |
108 | /* Start listening on specified port */
109 | app.listen(port, () => {
110 | console.info('Example app listening on port', port)
111 | });
112 |
113 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "stripe-recurring-subscriptions",
3 | "version": "1.0.0",
4 | "description": "A tutorial on setting up recurring subscriptions with Stripe.",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "node app.js"
9 | },
10 | "keywords": [
11 | "stripe",
12 | "recurring",
13 | "billing",
14 | "subscriptions"
15 | ],
16 | "author": "Amy Sitwala",
17 | "license": "ISC",
18 | "dependencies": {
19 | "body-parser": "^1.18.3",
20 | "dotenv": "^6.2.0",
21 | "express": "^4.16.4",
22 | "nunjucks": "^3.1.7",
23 | "stripe": "^6.25.1"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/styles/adminView.css:
--------------------------------------------------------------------------------
1 | /* Admin View */
2 | .admin-view,
3 | .create-product,
4 | .create-plan {
5 | width: 50%;
6 | margin: 0 auto;
7 | min-width: 280px;
8 | }
9 |
10 | .admin-view-title {
11 | display: flex;
12 | align-items: center;
13 | justify-content: space-between;
14 | }
15 |
16 | .admin-view-title h2 {
17 | margin-right: 24px;
18 | }
19 |
20 | .admin-view-product {
21 | padding: 16px;
22 | background-color: #eee;
23 | border-radius: 3px;
24 | width: 100%;
25 | margin-bottom: 24px;
26 | }
27 |
28 | .admin-view-product-title {
29 | display: flex;
30 | align-items: center;
31 | justify-content: space-between;
32 | }
33 |
34 | .admin-view-product-name {
35 | margin: 0 8px 0 0;
36 | }
37 |
38 |
39 | /* Create product */
40 | .create-product-container, .create-plan-container {
41 | padding: 24px;
42 | background-color: #eee;
43 | border-radius: 3px;
44 | }
45 |
--------------------------------------------------------------------------------
/styles/app.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: "Open Sans", "Helvetica", sans-serif;
3 | margin: 0;
4 | padding: 0;
5 | width: 100%;
6 | -webkit-font-smoothing: antialiased;
7 | }
8 |
9 | body * {
10 | box-sizing: border-box
11 | }
12 |
13 | h1, h2, h3, h4, h5, h6 {
14 | font-weight: 600;
15 | }
16 |
17 | .app-container {
18 | padding: 32px;
19 | width: 100%;
20 | }
21 |
22 | .app-header {
23 | display: flex;
24 | align-items: center;
25 | justify-content: center;
26 | }
27 |
28 | .app-header a {
29 | text-decoration: none;
30 | }
31 |
32 | .app-header p {
33 | margin: 0 6px;
34 | font-size: 12px;
35 | cursor: pointer;
36 | padding-bottom: 2px;
37 | border-bottom: 3px solid transparent;
38 | color: #a5a5a5;
39 | }
40 |
41 | .app-header p:hover {
42 | color: #576adb;
43 | }
44 |
45 | .app-header p.active {
46 | color: #576adb;
47 | border-color: #acb6f3;
48 | }
49 |
50 | .app-header span {
51 | display: inline-block;
52 | color: #aaa;
53 | font-size: 16px;
54 | padding-bottom: 2px;
55 | border-bottom: 3px solid transparent;
56 | }
57 |
58 | /* General */
59 | .btn {
60 | background-color: #576adb;
61 | color: #ffffff;
62 | padding: 8px 12px;
63 | border: 0px;
64 | border-radius: 4px;
65 | font-size: 14px;
66 | font-family: "Open Sans", "Helvetica", sans-serif;
67 | cursor: pointer;
68 | text-transform: uppercase;
69 | }
70 |
71 | .btn-small {
72 | font-size: 12px;
73 | padding: 6px 8px;
74 | }
75 |
76 | label {
77 | display: block;
78 | text-transform: uppercase;
79 | font-size: 14px;
80 | margin-bottom: 4px;
81 | font-weight: 600;
82 | }
83 |
84 | input {
85 | border: 0px;
86 | background-color: #fff;
87 | border-radius: 4px;
88 | color: black;
89 | padding: 8px 12px;
90 | font-size: 14px;
91 | margin-bottom: 24px;
92 | font-family: "Open Sans", "Helvetica", sans-serif;
93 | width: 100%;
94 |
95 | box-shadow: 0 1px 3px 0 #e6ebf1;
96 | -webkit-transition: box-shadow 150ms ease;
97 | transition: box-shadow 150ms ease;
98 | }
99 |
100 | input:focus {
101 | outline: 0 !important;
102 | box-shadow: 0 1px 3px 0 #cfd7df;
103 | }
104 |
105 | input::placeholder {
106 | color: #aab7c4;
107 | }
108 |
109 | input.btn {
110 | width: auto;
111 | display: inline-block;
112 | margin-bottom: 0px;
113 | }
114 |
115 | .label-input-container {
116 | position: relative;
117 | }
118 |
119 | .label-left-input {
120 | padding-left: 26px;
121 | }
122 |
123 | .label-currency {
124 | position: absolute;
125 | top: 7px;
126 | left: 12px;
127 | color: #777;
128 | }
129 |
130 | .success-message {
131 |
132 | }
133 |
134 | .error-message {
135 |
136 | }
137 |
--------------------------------------------------------------------------------
/styles/customerView.css:
--------------------------------------------------------------------------------
1 | /* Customer View */
2 | .customer-view h2 {
3 | margin-left: 12px;
4 | }
5 |
6 | .customer-view-plans {
7 | display: flex;
8 | align-items: center;
9 | flex-wrap: wrap;
10 | }
11 |
12 | .customer-view-plan {
13 | background-color: #eee;
14 | padding: 24px;
15 | border-radius: 4px;
16 | flex: 1;
17 | margin: 0 12px 24px;
18 | min-width: 280px;
19 | }
20 |
21 | .customer-view-plan h3 {
22 | margin-top: 0px;
23 | }
24 |
25 | /* Sign Up Page */
26 | .sign-up {
27 | width: 50%;
28 | margin: 0 auto;
29 | min-width: 280px;
30 | }
31 |
32 | .sign-up h2 {
33 | margin-top: 6px;
34 | }
35 |
36 | .sign-up-product {
37 | margin-top: 24px;
38 | }
39 |
40 | .sign-up-container {
41 | padding: 24px;
42 | background-color: #eee;
43 | border-radius: 3px;
44 | }
45 |
46 | .sign-up .btn {
47 | margin-top: 16px;
48 | }
49 |
50 | #card-errors {
51 | margin-top: 6px;
52 | font-size: 14px;
53 | }
54 |
--------------------------------------------------------------------------------
/utils/format-numbers.js:
--------------------------------------------------------------------------------
1 | function formatUSD(stripeAmount) {
2 | return `$${(stripeAmount / 100).toFixed(2)}`;
3 | }
4 |
5 | function formatStripeAmount(USDString) {
6 | return parseFloat(USDString) * 100;
7 | }
8 |
9 | module.exports = {
10 | formatUSD,
11 | formatStripeAmount
12 | };
--------------------------------------------------------------------------------
/views/adminView.html:
--------------------------------------------------------------------------------
1 | {% set title = 'Admin View' %}
2 | {% set admin = true %}
3 | {% extends 'base.html' %}
4 |
5 | {% block content %}
6 |
7 |
11 | {% for product in products %}
12 |
36 | {% endfor %}
37 |
38 | {% endblock %}
39 |
40 |
43 |
--------------------------------------------------------------------------------
/views/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Stripe Made Easy | {{ title }}
5 |
6 |
7 |
8 |
9 | {% if admin %}
10 |
11 | {% else %}
12 |
13 | {% endif %}
14 |
15 |
16 |
17 |
22 | {% block content %}
23 | {% endblock %}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/views/createPlan.html:
--------------------------------------------------------------------------------
1 | {% set title = 'Create Plan' %}
2 | {% set admin = true %}
3 | {% extends 'base.html' %}
4 |
5 | {% block content %}
6 |
7 |
8 |
{{ productName }}: Create New Plan
9 | {% if success %}
10 |
13 | {% elif error %}
14 |
17 | {% else %}
18 |
50 | {% endif %}
51 |
52 |
53 |
66 |
67 | {% endblock %}
--------------------------------------------------------------------------------
/views/createProduct.html:
--------------------------------------------------------------------------------
1 | {% set title = 'Create Product' %}
2 | {% set admin = true %}
3 | {% extends 'base.html' %}
4 |
5 | {% block content %}
6 |
7 |
8 |
Create New Product
9 | {% if success %}
10 |
13 | {% elif error %}
14 |
17 | {% else %}
18 |
35 | {% endif %}
36 |
37 |
38 |
39 | {% endblock %}
--------------------------------------------------------------------------------
/views/customerView.html:
--------------------------------------------------------------------------------
1 | {% set title = 'Customer View' %}
2 | {% set admin = false %}
3 | {% extends 'base.html' %}
4 |
5 |
6 | {% block content %}
7 |
8 |
9 | {% for product in products %}
10 |
11 |
{{product.name}}
12 |
13 | {% for plan in product.plans %}
14 |
15 |
32 |
33 | {% endfor %}
34 |
35 |
36 | {% endfor %}
37 |
38 |
39 | {% endblock %}
40 |
--------------------------------------------------------------------------------
/views/signUp.html:
--------------------------------------------------------------------------------
1 | {% set title = 'Sign Up' %}
2 | {% set admin = false %}
3 | {% extends 'base.html' %}
4 |
5 | {% block content %}
6 |
7 |
10 |
Sign up for {{ plan.name }} — {{ plan.amount }} /
11 | {% if (plan.interval_count > 1) %}
12 | {{ plan.interval_count }} {{ plan.interval }}s
13 |
14 | {% else %}
15 | {{ plan.interval }}
16 | {% endif %}
17 |
18 | {% if success %}
19 |
20 |
Your payment was successful. Congrats, you've successfully signed up!
21 |
22 | {% elif error %}
23 |
24 |
Your payment was unsuccessful. Please try again.
25 |
26 | {% else %}
27 |
55 | {% endif %}
56 |
57 |
58 |
59 |
125 |
126 |
153 |
154 |
155 | {% endblock %}
156 |
157 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | a-sync-waterfall@^1.0.0:
6 | version "1.0.1"
7 | resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7"
8 |
9 | abbrev@1:
10 | version "1.1.1"
11 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
12 |
13 | accepts@~1.3.5:
14 | version "1.3.5"
15 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
16 | dependencies:
17 | mime-types "~2.1.18"
18 | negotiator "0.6.1"
19 |
20 | ansi-regex@^2.0.0:
21 | version "2.1.1"
22 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
23 |
24 | ansi-regex@^3.0.0:
25 | version "3.0.0"
26 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
27 |
28 | anymatch@^2.0.0:
29 | version "2.0.0"
30 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
31 | dependencies:
32 | micromatch "^3.1.4"
33 | normalize-path "^2.1.1"
34 |
35 | aproba@^1.0.3:
36 | version "1.2.0"
37 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
38 |
39 | are-we-there-yet@~1.1.2:
40 | version "1.1.5"
41 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
42 | dependencies:
43 | delegates "^1.0.0"
44 | readable-stream "^2.0.6"
45 |
46 | arr-diff@^4.0.0:
47 | version "4.0.0"
48 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
49 |
50 | arr-flatten@^1.1.0:
51 | version "1.1.0"
52 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
53 |
54 | arr-union@^3.1.0:
55 | version "3.1.0"
56 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
57 |
58 | array-flatten@1.1.1:
59 | version "1.1.1"
60 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
61 |
62 | array-unique@^0.3.2:
63 | version "0.3.2"
64 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
65 |
66 | asap@^2.0.3:
67 | version "2.0.6"
68 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
69 |
70 | assign-symbols@^1.0.0:
71 | version "1.0.0"
72 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
73 |
74 | async-each@^1.0.1:
75 | version "1.0.1"
76 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
77 |
78 | atob@^2.1.1:
79 | version "2.1.2"
80 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
81 |
82 | balanced-match@^1.0.0:
83 | version "1.0.0"
84 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
85 |
86 | base@^0.11.1:
87 | version "0.11.2"
88 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
89 | dependencies:
90 | cache-base "^1.0.1"
91 | class-utils "^0.3.5"
92 | component-emitter "^1.2.1"
93 | define-property "^1.0.0"
94 | isobject "^3.0.1"
95 | mixin-deep "^1.2.0"
96 | pascalcase "^0.1.1"
97 |
98 | binary-extensions@^1.0.0:
99 | version "1.13.0"
100 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1"
101 |
102 | body-parser@1.18.3, body-parser@^1.18.3:
103 | version "1.18.3"
104 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
105 | dependencies:
106 | bytes "3.0.0"
107 | content-type "~1.0.4"
108 | debug "2.6.9"
109 | depd "~1.1.2"
110 | http-errors "~1.6.3"
111 | iconv-lite "0.4.23"
112 | on-finished "~2.3.0"
113 | qs "6.5.2"
114 | raw-body "2.3.3"
115 | type-is "~1.6.16"
116 |
117 | brace-expansion@^1.1.7:
118 | version "1.1.11"
119 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
120 | dependencies:
121 | balanced-match "^1.0.0"
122 | concat-map "0.0.1"
123 |
124 | braces@^2.3.1, braces@^2.3.2:
125 | version "2.3.2"
126 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
127 | dependencies:
128 | arr-flatten "^1.1.0"
129 | array-unique "^0.3.2"
130 | extend-shallow "^2.0.1"
131 | fill-range "^4.0.0"
132 | isobject "^3.0.1"
133 | repeat-element "^1.1.2"
134 | snapdragon "^0.8.1"
135 | snapdragon-node "^2.0.1"
136 | split-string "^3.0.2"
137 | to-regex "^3.0.1"
138 |
139 | bytes@3.0.0:
140 | version "3.0.0"
141 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
142 |
143 | cache-base@^1.0.1:
144 | version "1.0.1"
145 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
146 | dependencies:
147 | collection-visit "^1.0.0"
148 | component-emitter "^1.2.1"
149 | get-value "^2.0.6"
150 | has-value "^1.0.0"
151 | isobject "^3.0.1"
152 | set-value "^2.0.0"
153 | to-object-path "^0.3.0"
154 | union-value "^1.0.0"
155 | unset-value "^1.0.0"
156 |
157 | camelcase@^2.0.1:
158 | version "2.1.1"
159 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
160 |
161 | chokidar@^2.0.0:
162 | version "2.1.1"
163 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.1.tgz#adc39ad55a2adf26548bd2afa048f611091f9184"
164 | dependencies:
165 | anymatch "^2.0.0"
166 | async-each "^1.0.1"
167 | braces "^2.3.2"
168 | glob-parent "^3.1.0"
169 | inherits "^2.0.3"
170 | is-binary-path "^1.0.0"
171 | is-glob "^4.0.0"
172 | normalize-path "^3.0.0"
173 | path-is-absolute "^1.0.0"
174 | readdirp "^2.2.1"
175 | upath "^1.1.0"
176 | optionalDependencies:
177 | fsevents "^1.2.7"
178 |
179 | chownr@^1.1.1:
180 | version "1.1.1"
181 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
182 |
183 | class-utils@^0.3.5:
184 | version "0.3.6"
185 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
186 | dependencies:
187 | arr-union "^3.1.0"
188 | define-property "^0.2.5"
189 | isobject "^3.0.0"
190 | static-extend "^0.1.1"
191 |
192 | cliui@^3.0.3:
193 | version "3.2.0"
194 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
195 | dependencies:
196 | string-width "^1.0.1"
197 | strip-ansi "^3.0.1"
198 | wrap-ansi "^2.0.0"
199 |
200 | code-point-at@^1.0.0:
201 | version "1.1.0"
202 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
203 |
204 | collection-visit@^1.0.0:
205 | version "1.0.0"
206 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
207 | dependencies:
208 | map-visit "^1.0.0"
209 | object-visit "^1.0.0"
210 |
211 | component-emitter@^1.2.1:
212 | version "1.2.1"
213 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
214 |
215 | concat-map@0.0.1:
216 | version "0.0.1"
217 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
218 |
219 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
220 | version "1.1.0"
221 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
222 |
223 | content-disposition@0.5.2:
224 | version "0.5.2"
225 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
226 |
227 | content-type@~1.0.4:
228 | version "1.0.4"
229 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
230 |
231 | cookie-signature@1.0.6:
232 | version "1.0.6"
233 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
234 |
235 | cookie@0.3.1:
236 | version "0.3.1"
237 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
238 |
239 | copy-descriptor@^0.1.0:
240 | version "0.1.1"
241 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
242 |
243 | core-util-is@~1.0.0:
244 | version "1.0.2"
245 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
246 |
247 | debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
248 | version "2.6.9"
249 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
250 | dependencies:
251 | ms "2.0.0"
252 |
253 | decamelize@^1.1.1:
254 | version "1.2.0"
255 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
256 |
257 | decode-uri-component@^0.2.0:
258 | version "0.2.0"
259 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
260 |
261 | deep-extend@^0.6.0:
262 | version "0.6.0"
263 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
264 |
265 | define-property@^0.2.5:
266 | version "0.2.5"
267 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
268 | dependencies:
269 | is-descriptor "^0.1.0"
270 |
271 | define-property@^1.0.0:
272 | version "1.0.0"
273 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
274 | dependencies:
275 | is-descriptor "^1.0.0"
276 |
277 | define-property@^2.0.2:
278 | version "2.0.2"
279 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
280 | dependencies:
281 | is-descriptor "^1.0.2"
282 | isobject "^3.0.1"
283 |
284 | delegates@^1.0.0:
285 | version "1.0.0"
286 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
287 |
288 | depd@~1.1.2:
289 | version "1.1.2"
290 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
291 |
292 | destroy@~1.0.4:
293 | version "1.0.4"
294 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
295 |
296 | detect-libc@^1.0.2:
297 | version "1.0.3"
298 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
299 |
300 | dotenv@^6.2.0:
301 | version "6.2.0"
302 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064"
303 |
304 | ee-first@1.1.1:
305 | version "1.1.1"
306 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
307 |
308 | encodeurl@~1.0.2:
309 | version "1.0.2"
310 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
311 |
312 | escape-html@~1.0.3:
313 | version "1.0.3"
314 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
315 |
316 | etag@~1.8.1:
317 | version "1.8.1"
318 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
319 |
320 | expand-brackets@^2.1.4:
321 | version "2.1.4"
322 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
323 | dependencies:
324 | debug "^2.3.3"
325 | define-property "^0.2.5"
326 | extend-shallow "^2.0.1"
327 | posix-character-classes "^0.1.0"
328 | regex-not "^1.0.0"
329 | snapdragon "^0.8.1"
330 | to-regex "^3.0.1"
331 |
332 | express@^4.16.4:
333 | version "4.16.4"
334 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
335 | dependencies:
336 | accepts "~1.3.5"
337 | array-flatten "1.1.1"
338 | body-parser "1.18.3"
339 | content-disposition "0.5.2"
340 | content-type "~1.0.4"
341 | cookie "0.3.1"
342 | cookie-signature "1.0.6"
343 | debug "2.6.9"
344 | depd "~1.1.2"
345 | encodeurl "~1.0.2"
346 | escape-html "~1.0.3"
347 | etag "~1.8.1"
348 | finalhandler "1.1.1"
349 | fresh "0.5.2"
350 | merge-descriptors "1.0.1"
351 | methods "~1.1.2"
352 | on-finished "~2.3.0"
353 | parseurl "~1.3.2"
354 | path-to-regexp "0.1.7"
355 | proxy-addr "~2.0.4"
356 | qs "6.5.2"
357 | range-parser "~1.2.0"
358 | safe-buffer "5.1.2"
359 | send "0.16.2"
360 | serve-static "1.13.2"
361 | setprototypeof "1.1.0"
362 | statuses "~1.4.0"
363 | type-is "~1.6.16"
364 | utils-merge "1.0.1"
365 | vary "~1.1.2"
366 |
367 | extend-shallow@^2.0.1:
368 | version "2.0.1"
369 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
370 | dependencies:
371 | is-extendable "^0.1.0"
372 |
373 | extend-shallow@^3.0.0, extend-shallow@^3.0.2:
374 | version "3.0.2"
375 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
376 | dependencies:
377 | assign-symbols "^1.0.0"
378 | is-extendable "^1.0.1"
379 |
380 | extglob@^2.0.4:
381 | version "2.0.4"
382 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
383 | dependencies:
384 | array-unique "^0.3.2"
385 | define-property "^1.0.0"
386 | expand-brackets "^2.1.4"
387 | extend-shallow "^2.0.1"
388 | fragment-cache "^0.2.1"
389 | regex-not "^1.0.0"
390 | snapdragon "^0.8.1"
391 | to-regex "^3.0.1"
392 |
393 | fill-range@^4.0.0:
394 | version "4.0.0"
395 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
396 | dependencies:
397 | extend-shallow "^2.0.1"
398 | is-number "^3.0.0"
399 | repeat-string "^1.6.1"
400 | to-regex-range "^2.1.0"
401 |
402 | finalhandler@1.1.1:
403 | version "1.1.1"
404 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
405 | dependencies:
406 | debug "2.6.9"
407 | encodeurl "~1.0.2"
408 | escape-html "~1.0.3"
409 | on-finished "~2.3.0"
410 | parseurl "~1.3.2"
411 | statuses "~1.4.0"
412 | unpipe "~1.0.0"
413 |
414 | for-in@^1.0.2:
415 | version "1.0.2"
416 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
417 |
418 | forwarded@~0.1.2:
419 | version "0.1.2"
420 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
421 |
422 | fragment-cache@^0.2.1:
423 | version "0.2.1"
424 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
425 | dependencies:
426 | map-cache "^0.2.2"
427 |
428 | fresh@0.5.2:
429 | version "0.5.2"
430 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
431 |
432 | fs-minipass@^1.2.5:
433 | version "1.2.5"
434 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
435 | dependencies:
436 | minipass "^2.2.1"
437 |
438 | fs.realpath@^1.0.0:
439 | version "1.0.0"
440 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
441 |
442 | fsevents@^1.2.7:
443 | version "1.2.7"
444 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4"
445 | dependencies:
446 | nan "^2.9.2"
447 | node-pre-gyp "^0.10.0"
448 |
449 | gauge@~2.7.3:
450 | version "2.7.4"
451 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
452 | dependencies:
453 | aproba "^1.0.3"
454 | console-control-strings "^1.0.0"
455 | has-unicode "^2.0.0"
456 | object-assign "^4.1.0"
457 | signal-exit "^3.0.0"
458 | string-width "^1.0.1"
459 | strip-ansi "^3.0.1"
460 | wide-align "^1.1.0"
461 |
462 | get-value@^2.0.3, get-value@^2.0.6:
463 | version "2.0.6"
464 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
465 |
466 | glob-parent@^3.1.0:
467 | version "3.1.0"
468 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
469 | dependencies:
470 | is-glob "^3.1.0"
471 | path-dirname "^1.0.0"
472 |
473 | glob@^7.1.3:
474 | version "7.1.3"
475 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
476 | dependencies:
477 | fs.realpath "^1.0.0"
478 | inflight "^1.0.4"
479 | inherits "2"
480 | minimatch "^3.0.4"
481 | once "^1.3.0"
482 | path-is-absolute "^1.0.0"
483 |
484 | graceful-fs@^4.1.11:
485 | version "4.1.15"
486 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
487 |
488 | has-unicode@^2.0.0:
489 | version "2.0.1"
490 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
491 |
492 | has-value@^0.3.1:
493 | version "0.3.1"
494 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
495 | dependencies:
496 | get-value "^2.0.3"
497 | has-values "^0.1.4"
498 | isobject "^2.0.0"
499 |
500 | has-value@^1.0.0:
501 | version "1.0.0"
502 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
503 | dependencies:
504 | get-value "^2.0.6"
505 | has-values "^1.0.0"
506 | isobject "^3.0.0"
507 |
508 | has-values@^0.1.4:
509 | version "0.1.4"
510 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
511 |
512 | has-values@^1.0.0:
513 | version "1.0.0"
514 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
515 | dependencies:
516 | is-number "^3.0.0"
517 | kind-of "^4.0.0"
518 |
519 | http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
520 | version "1.6.3"
521 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
522 | dependencies:
523 | depd "~1.1.2"
524 | inherits "2.0.3"
525 | setprototypeof "1.1.0"
526 | statuses ">= 1.4.0 < 2"
527 |
528 | iconv-lite@0.4.23:
529 | version "0.4.23"
530 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
531 | dependencies:
532 | safer-buffer ">= 2.1.2 < 3"
533 |
534 | iconv-lite@^0.4.4:
535 | version "0.4.24"
536 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
537 | dependencies:
538 | safer-buffer ">= 2.1.2 < 3"
539 |
540 | ignore-walk@^3.0.1:
541 | version "3.0.1"
542 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
543 | dependencies:
544 | minimatch "^3.0.4"
545 |
546 | inflight@^1.0.4:
547 | version "1.0.6"
548 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
549 | dependencies:
550 | once "^1.3.0"
551 | wrappy "1"
552 |
553 | inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.3:
554 | version "2.0.3"
555 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
556 |
557 | ini@~1.3.0:
558 | version "1.3.5"
559 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
560 |
561 | invert-kv@^1.0.0:
562 | version "1.0.0"
563 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
564 |
565 | ipaddr.js@1.8.0:
566 | version "1.8.0"
567 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
568 |
569 | is-accessor-descriptor@^0.1.6:
570 | version "0.1.6"
571 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
572 | dependencies:
573 | kind-of "^3.0.2"
574 |
575 | is-accessor-descriptor@^1.0.0:
576 | version "1.0.0"
577 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
578 | dependencies:
579 | kind-of "^6.0.0"
580 |
581 | is-binary-path@^1.0.0:
582 | version "1.0.1"
583 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
584 | dependencies:
585 | binary-extensions "^1.0.0"
586 |
587 | is-buffer@^1.1.5:
588 | version "1.1.6"
589 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
590 |
591 | is-data-descriptor@^0.1.4:
592 | version "0.1.4"
593 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
594 | dependencies:
595 | kind-of "^3.0.2"
596 |
597 | is-data-descriptor@^1.0.0:
598 | version "1.0.0"
599 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
600 | dependencies:
601 | kind-of "^6.0.0"
602 |
603 | is-descriptor@^0.1.0:
604 | version "0.1.6"
605 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
606 | dependencies:
607 | is-accessor-descriptor "^0.1.6"
608 | is-data-descriptor "^0.1.4"
609 | kind-of "^5.0.0"
610 |
611 | is-descriptor@^1.0.0, is-descriptor@^1.0.2:
612 | version "1.0.2"
613 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
614 | dependencies:
615 | is-accessor-descriptor "^1.0.0"
616 | is-data-descriptor "^1.0.0"
617 | kind-of "^6.0.2"
618 |
619 | is-extendable@^0.1.0, is-extendable@^0.1.1:
620 | version "0.1.1"
621 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
622 |
623 | is-extendable@^1.0.1:
624 | version "1.0.1"
625 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
626 | dependencies:
627 | is-plain-object "^2.0.4"
628 |
629 | is-extglob@^2.1.0, is-extglob@^2.1.1:
630 | version "2.1.1"
631 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
632 |
633 | is-fullwidth-code-point@^1.0.0:
634 | version "1.0.0"
635 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
636 | dependencies:
637 | number-is-nan "^1.0.0"
638 |
639 | is-fullwidth-code-point@^2.0.0:
640 | version "2.0.0"
641 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
642 |
643 | is-glob@^3.1.0:
644 | version "3.1.0"
645 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
646 | dependencies:
647 | is-extglob "^2.1.0"
648 |
649 | is-glob@^4.0.0:
650 | version "4.0.0"
651 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
652 | dependencies:
653 | is-extglob "^2.1.1"
654 |
655 | is-number@^3.0.0:
656 | version "3.0.0"
657 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
658 | dependencies:
659 | kind-of "^3.0.2"
660 |
661 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
662 | version "2.0.4"
663 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
664 | dependencies:
665 | isobject "^3.0.1"
666 |
667 | is-windows@^1.0.2:
668 | version "1.0.2"
669 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
670 |
671 | isarray@1.0.0, isarray@~1.0.0:
672 | version "1.0.0"
673 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
674 |
675 | isobject@^2.0.0:
676 | version "2.1.0"
677 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
678 | dependencies:
679 | isarray "1.0.0"
680 |
681 | isobject@^3.0.0, isobject@^3.0.1:
682 | version "3.0.1"
683 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
684 |
685 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
686 | version "3.2.2"
687 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
688 | dependencies:
689 | is-buffer "^1.1.5"
690 |
691 | kind-of@^4.0.0:
692 | version "4.0.0"
693 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
694 | dependencies:
695 | is-buffer "^1.1.5"
696 |
697 | kind-of@^5.0.0:
698 | version "5.1.0"
699 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
700 |
701 | kind-of@^6.0.0, kind-of@^6.0.2:
702 | version "6.0.2"
703 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
704 |
705 | lcid@^1.0.0:
706 | version "1.0.0"
707 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
708 | dependencies:
709 | invert-kv "^1.0.0"
710 |
711 | lodash.isplainobject@^4.0.6:
712 | version "4.0.6"
713 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
714 |
715 | map-cache@^0.2.2:
716 | version "0.2.2"
717 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
718 |
719 | map-visit@^1.0.0:
720 | version "1.0.0"
721 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
722 | dependencies:
723 | object-visit "^1.0.0"
724 |
725 | media-typer@0.3.0:
726 | version "0.3.0"
727 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
728 |
729 | merge-descriptors@1.0.1:
730 | version "1.0.1"
731 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
732 |
733 | methods@~1.1.2:
734 | version "1.1.2"
735 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
736 |
737 | micromatch@^3.1.10, micromatch@^3.1.4:
738 | version "3.1.10"
739 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
740 | dependencies:
741 | arr-diff "^4.0.0"
742 | array-unique "^0.3.2"
743 | braces "^2.3.1"
744 | define-property "^2.0.2"
745 | extend-shallow "^3.0.2"
746 | extglob "^2.0.4"
747 | fragment-cache "^0.2.1"
748 | kind-of "^6.0.2"
749 | nanomatch "^1.2.9"
750 | object.pick "^1.3.0"
751 | regex-not "^1.0.0"
752 | snapdragon "^0.8.1"
753 | to-regex "^3.0.2"
754 |
755 | mime-db@~1.38.0:
756 | version "1.38.0"
757 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad"
758 |
759 | mime-types@~2.1.18:
760 | version "2.1.22"
761 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd"
762 | dependencies:
763 | mime-db "~1.38.0"
764 |
765 | mime@1.4.1:
766 | version "1.4.1"
767 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
768 |
769 | minimatch@^3.0.4:
770 | version "3.0.4"
771 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
772 | dependencies:
773 | brace-expansion "^1.1.7"
774 |
775 | minimist@0.0.8:
776 | version "0.0.8"
777 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
778 |
779 | minimist@^1.2.0:
780 | version "1.2.0"
781 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
782 |
783 | minipass@^2.2.1, minipass@^2.3.4:
784 | version "2.3.5"
785 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
786 | dependencies:
787 | safe-buffer "^5.1.2"
788 | yallist "^3.0.0"
789 |
790 | minizlib@^1.1.1:
791 | version "1.2.1"
792 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
793 | dependencies:
794 | minipass "^2.2.1"
795 |
796 | mixin-deep@^1.2.0:
797 | version "1.3.1"
798 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
799 | dependencies:
800 | for-in "^1.0.2"
801 | is-extendable "^1.0.1"
802 |
803 | mkdirp@^0.5.0, mkdirp@^0.5.1:
804 | version "0.5.1"
805 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
806 | dependencies:
807 | minimist "0.0.8"
808 |
809 | ms@2.0.0:
810 | version "2.0.0"
811 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
812 |
813 | nan@^2.9.2:
814 | version "2.12.1"
815 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
816 |
817 | nanomatch@^1.2.9:
818 | version "1.2.13"
819 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
820 | dependencies:
821 | arr-diff "^4.0.0"
822 | array-unique "^0.3.2"
823 | define-property "^2.0.2"
824 | extend-shallow "^3.0.2"
825 | fragment-cache "^0.2.1"
826 | is-windows "^1.0.2"
827 | kind-of "^6.0.2"
828 | object.pick "^1.3.0"
829 | regex-not "^1.0.0"
830 | snapdragon "^0.8.1"
831 | to-regex "^3.0.1"
832 |
833 | needle@^2.2.1:
834 | version "2.2.4"
835 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
836 | dependencies:
837 | debug "^2.1.2"
838 | iconv-lite "^0.4.4"
839 | sax "^1.2.4"
840 |
841 | negotiator@0.6.1:
842 | version "0.6.1"
843 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
844 |
845 | node-pre-gyp@^0.10.0:
846 | version "0.10.3"
847 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
848 | dependencies:
849 | detect-libc "^1.0.2"
850 | mkdirp "^0.5.1"
851 | needle "^2.2.1"
852 | nopt "^4.0.1"
853 | npm-packlist "^1.1.6"
854 | npmlog "^4.0.2"
855 | rc "^1.2.7"
856 | rimraf "^2.6.1"
857 | semver "^5.3.0"
858 | tar "^4"
859 |
860 | nopt@^4.0.1:
861 | version "4.0.1"
862 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
863 | dependencies:
864 | abbrev "1"
865 | osenv "^0.1.4"
866 |
867 | normalize-path@^2.1.1:
868 | version "2.1.1"
869 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
870 | dependencies:
871 | remove-trailing-separator "^1.0.1"
872 |
873 | normalize-path@^3.0.0:
874 | version "3.0.0"
875 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
876 |
877 | npm-bundled@^1.0.1:
878 | version "1.0.6"
879 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
880 |
881 | npm-packlist@^1.1.6:
882 | version "1.3.0"
883 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.3.0.tgz#7f01e8e44408341379ca98cfd756e7b29bd2626c"
884 | dependencies:
885 | ignore-walk "^3.0.1"
886 | npm-bundled "^1.0.1"
887 |
888 | npmlog@^4.0.2:
889 | version "4.1.2"
890 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
891 | dependencies:
892 | are-we-there-yet "~1.1.2"
893 | console-control-strings "~1.1.0"
894 | gauge "~2.7.3"
895 | set-blocking "~2.0.0"
896 |
897 | number-is-nan@^1.0.0:
898 | version "1.0.1"
899 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
900 |
901 | nunjucks@^3.1.7:
902 | version "3.1.7"
903 | resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.1.7.tgz#0bd25f29ef9d11826350e762836286c518c98706"
904 | dependencies:
905 | a-sync-waterfall "^1.0.0"
906 | asap "^2.0.3"
907 | yargs "^3.32.0"
908 | optionalDependencies:
909 | chokidar "^2.0.0"
910 |
911 | object-assign@^4.1.0:
912 | version "4.1.1"
913 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
914 |
915 | object-copy@^0.1.0:
916 | version "0.1.0"
917 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
918 | dependencies:
919 | copy-descriptor "^0.1.0"
920 | define-property "^0.2.5"
921 | kind-of "^3.0.3"
922 |
923 | object-visit@^1.0.0:
924 | version "1.0.1"
925 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
926 | dependencies:
927 | isobject "^3.0.0"
928 |
929 | object.pick@^1.3.0:
930 | version "1.3.0"
931 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
932 | dependencies:
933 | isobject "^3.0.1"
934 |
935 | on-finished@~2.3.0:
936 | version "2.3.0"
937 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
938 | dependencies:
939 | ee-first "1.1.1"
940 |
941 | once@^1.3.0:
942 | version "1.4.0"
943 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
944 | dependencies:
945 | wrappy "1"
946 |
947 | os-homedir@^1.0.0:
948 | version "1.0.2"
949 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
950 |
951 | os-locale@^1.4.0:
952 | version "1.4.0"
953 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
954 | dependencies:
955 | lcid "^1.0.0"
956 |
957 | os-tmpdir@^1.0.0:
958 | version "1.0.2"
959 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
960 |
961 | osenv@^0.1.4:
962 | version "0.1.5"
963 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
964 | dependencies:
965 | os-homedir "^1.0.0"
966 | os-tmpdir "^1.0.0"
967 |
968 | parseurl@~1.3.2:
969 | version "1.3.2"
970 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
971 |
972 | pascalcase@^0.1.1:
973 | version "0.1.1"
974 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
975 |
976 | path-dirname@^1.0.0:
977 | version "1.0.2"
978 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
979 |
980 | path-is-absolute@^1.0.0:
981 | version "1.0.1"
982 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
983 |
984 | path-to-regexp@0.1.7:
985 | version "0.1.7"
986 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
987 |
988 | posix-character-classes@^0.1.0:
989 | version "0.1.1"
990 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
991 |
992 | process-nextick-args@~2.0.0:
993 | version "2.0.0"
994 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
995 |
996 | proxy-addr@~2.0.4:
997 | version "2.0.4"
998 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
999 | dependencies:
1000 | forwarded "~0.1.2"
1001 | ipaddr.js "1.8.0"
1002 |
1003 | qs@6.5.2:
1004 | version "6.5.2"
1005 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1006 |
1007 | qs@^6.6.0:
1008 | version "6.6.0"
1009 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2"
1010 |
1011 | range-parser@~1.2.0:
1012 | version "1.2.0"
1013 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
1014 |
1015 | raw-body@2.3.3:
1016 | version "2.3.3"
1017 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
1018 | dependencies:
1019 | bytes "3.0.0"
1020 | http-errors "1.6.3"
1021 | iconv-lite "0.4.23"
1022 | unpipe "1.0.0"
1023 |
1024 | rc@^1.2.7:
1025 | version "1.2.8"
1026 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
1027 | dependencies:
1028 | deep-extend "^0.6.0"
1029 | ini "~1.3.0"
1030 | minimist "^1.2.0"
1031 | strip-json-comments "~2.0.1"
1032 |
1033 | readable-stream@^2.0.2, readable-stream@^2.0.6:
1034 | version "2.3.6"
1035 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
1036 | dependencies:
1037 | core-util-is "~1.0.0"
1038 | inherits "~2.0.3"
1039 | isarray "~1.0.0"
1040 | process-nextick-args "~2.0.0"
1041 | safe-buffer "~5.1.1"
1042 | string_decoder "~1.1.1"
1043 | util-deprecate "~1.0.1"
1044 |
1045 | readdirp@^2.2.1:
1046 | version "2.2.1"
1047 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
1048 | dependencies:
1049 | graceful-fs "^4.1.11"
1050 | micromatch "^3.1.10"
1051 | readable-stream "^2.0.2"
1052 |
1053 | regex-not@^1.0.0, regex-not@^1.0.2:
1054 | version "1.0.2"
1055 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
1056 | dependencies:
1057 | extend-shallow "^3.0.2"
1058 | safe-regex "^1.1.0"
1059 |
1060 | remove-trailing-separator@^1.0.1:
1061 | version "1.1.0"
1062 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
1063 |
1064 | repeat-element@^1.1.2:
1065 | version "1.1.3"
1066 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
1067 |
1068 | repeat-string@^1.6.1:
1069 | version "1.6.1"
1070 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1071 |
1072 | resolve-url@^0.2.1:
1073 | version "0.2.1"
1074 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
1075 |
1076 | ret@~0.1.10:
1077 | version "0.1.15"
1078 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
1079 |
1080 | rimraf@^2.6.1:
1081 | version "2.6.3"
1082 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
1083 | dependencies:
1084 | glob "^7.1.3"
1085 |
1086 | safe-buffer@5.1.2, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1087 | version "5.1.2"
1088 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1089 |
1090 | safe-regex@^1.1.0:
1091 | version "1.1.0"
1092 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
1093 | dependencies:
1094 | ret "~0.1.10"
1095 |
1096 | "safer-buffer@>= 2.1.2 < 3":
1097 | version "2.1.2"
1098 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1099 |
1100 | sax@^1.2.4:
1101 | version "1.2.4"
1102 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
1103 |
1104 | semver@^5.3.0:
1105 | version "5.6.0"
1106 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
1107 |
1108 | send@0.16.2:
1109 | version "0.16.2"
1110 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
1111 | dependencies:
1112 | debug "2.6.9"
1113 | depd "~1.1.2"
1114 | destroy "~1.0.4"
1115 | encodeurl "~1.0.2"
1116 | escape-html "~1.0.3"
1117 | etag "~1.8.1"
1118 | fresh "0.5.2"
1119 | http-errors "~1.6.2"
1120 | mime "1.4.1"
1121 | ms "2.0.0"
1122 | on-finished "~2.3.0"
1123 | range-parser "~1.2.0"
1124 | statuses "~1.4.0"
1125 |
1126 | serve-static@1.13.2:
1127 | version "1.13.2"
1128 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
1129 | dependencies:
1130 | encodeurl "~1.0.2"
1131 | escape-html "~1.0.3"
1132 | parseurl "~1.3.2"
1133 | send "0.16.2"
1134 |
1135 | set-blocking@~2.0.0:
1136 | version "2.0.0"
1137 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1138 |
1139 | set-value@^0.4.3:
1140 | version "0.4.3"
1141 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
1142 | dependencies:
1143 | extend-shallow "^2.0.1"
1144 | is-extendable "^0.1.1"
1145 | is-plain-object "^2.0.1"
1146 | to-object-path "^0.3.0"
1147 |
1148 | set-value@^2.0.0:
1149 | version "2.0.0"
1150 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
1151 | dependencies:
1152 | extend-shallow "^2.0.1"
1153 | is-extendable "^0.1.1"
1154 | is-plain-object "^2.0.3"
1155 | split-string "^3.0.1"
1156 |
1157 | setprototypeof@1.1.0:
1158 | version "1.1.0"
1159 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
1160 |
1161 | signal-exit@^3.0.0:
1162 | version "3.0.2"
1163 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1164 |
1165 | snapdragon-node@^2.0.1:
1166 | version "2.1.1"
1167 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
1168 | dependencies:
1169 | define-property "^1.0.0"
1170 | isobject "^3.0.0"
1171 | snapdragon-util "^3.0.1"
1172 |
1173 | snapdragon-util@^3.0.1:
1174 | version "3.0.1"
1175 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
1176 | dependencies:
1177 | kind-of "^3.2.0"
1178 |
1179 | snapdragon@^0.8.1:
1180 | version "0.8.2"
1181 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
1182 | dependencies:
1183 | base "^0.11.1"
1184 | debug "^2.2.0"
1185 | define-property "^0.2.5"
1186 | extend-shallow "^2.0.1"
1187 | map-cache "^0.2.2"
1188 | source-map "^0.5.6"
1189 | source-map-resolve "^0.5.0"
1190 | use "^3.1.0"
1191 |
1192 | source-map-resolve@^0.5.0:
1193 | version "0.5.2"
1194 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
1195 | dependencies:
1196 | atob "^2.1.1"
1197 | decode-uri-component "^0.2.0"
1198 | resolve-url "^0.2.1"
1199 | source-map-url "^0.4.0"
1200 | urix "^0.1.0"
1201 |
1202 | source-map-url@^0.4.0:
1203 | version "0.4.0"
1204 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
1205 |
1206 | source-map@^0.5.6:
1207 | version "0.5.7"
1208 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1209 |
1210 | split-string@^3.0.1, split-string@^3.0.2:
1211 | version "3.1.0"
1212 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
1213 | dependencies:
1214 | extend-shallow "^3.0.0"
1215 |
1216 | static-extend@^0.1.1:
1217 | version "0.1.2"
1218 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
1219 | dependencies:
1220 | define-property "^0.2.5"
1221 | object-copy "^0.1.0"
1222 |
1223 | "statuses@>= 1.4.0 < 2":
1224 | version "1.5.0"
1225 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
1226 |
1227 | statuses@~1.4.0:
1228 | version "1.4.0"
1229 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
1230 |
1231 | string-width@^1.0.1:
1232 | version "1.0.2"
1233 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1234 | dependencies:
1235 | code-point-at "^1.0.0"
1236 | is-fullwidth-code-point "^1.0.0"
1237 | strip-ansi "^3.0.0"
1238 |
1239 | "string-width@^1.0.2 || 2":
1240 | version "2.1.1"
1241 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1242 | dependencies:
1243 | is-fullwidth-code-point "^2.0.0"
1244 | strip-ansi "^4.0.0"
1245 |
1246 | string_decoder@~1.1.1:
1247 | version "1.1.1"
1248 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1249 | dependencies:
1250 | safe-buffer "~5.1.0"
1251 |
1252 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1253 | version "3.0.1"
1254 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1255 | dependencies:
1256 | ansi-regex "^2.0.0"
1257 |
1258 | strip-ansi@^4.0.0:
1259 | version "4.0.0"
1260 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1261 | dependencies:
1262 | ansi-regex "^3.0.0"
1263 |
1264 | strip-json-comments@~2.0.1:
1265 | version "2.0.1"
1266 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1267 |
1268 | stripe@^6.25.1:
1269 | version "6.25.1"
1270 | resolved "https://registry.yarnpkg.com/stripe/-/stripe-6.25.1.tgz#b19fce283236107bc52d4a3735d183d1c4957c4c"
1271 | dependencies:
1272 | lodash.isplainobject "^4.0.6"
1273 | qs "^6.6.0"
1274 | safe-buffer "^5.1.1"
1275 | uuid "^3.3.2"
1276 |
1277 | tar@^4:
1278 | version "4.4.8"
1279 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
1280 | dependencies:
1281 | chownr "^1.1.1"
1282 | fs-minipass "^1.2.5"
1283 | minipass "^2.3.4"
1284 | minizlib "^1.1.1"
1285 | mkdirp "^0.5.0"
1286 | safe-buffer "^5.1.2"
1287 | yallist "^3.0.2"
1288 |
1289 | to-object-path@^0.3.0:
1290 | version "0.3.0"
1291 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
1292 | dependencies:
1293 | kind-of "^3.0.2"
1294 |
1295 | to-regex-range@^2.1.0:
1296 | version "2.1.1"
1297 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
1298 | dependencies:
1299 | is-number "^3.0.0"
1300 | repeat-string "^1.6.1"
1301 |
1302 | to-regex@^3.0.1, to-regex@^3.0.2:
1303 | version "3.0.2"
1304 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
1305 | dependencies:
1306 | define-property "^2.0.2"
1307 | extend-shallow "^3.0.2"
1308 | regex-not "^1.0.2"
1309 | safe-regex "^1.1.0"
1310 |
1311 | type-is@~1.6.16:
1312 | version "1.6.16"
1313 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
1314 | dependencies:
1315 | media-typer "0.3.0"
1316 | mime-types "~2.1.18"
1317 |
1318 | union-value@^1.0.0:
1319 | version "1.0.0"
1320 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
1321 | dependencies:
1322 | arr-union "^3.1.0"
1323 | get-value "^2.0.6"
1324 | is-extendable "^0.1.1"
1325 | set-value "^0.4.3"
1326 |
1327 | unpipe@1.0.0, unpipe@~1.0.0:
1328 | version "1.0.0"
1329 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1330 |
1331 | unset-value@^1.0.0:
1332 | version "1.0.0"
1333 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
1334 | dependencies:
1335 | has-value "^0.3.1"
1336 | isobject "^3.0.0"
1337 |
1338 | upath@^1.1.0:
1339 | version "1.1.0"
1340 | resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
1341 |
1342 | urix@^0.1.0:
1343 | version "0.1.0"
1344 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
1345 |
1346 | use@^3.1.0:
1347 | version "3.1.1"
1348 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
1349 |
1350 | util-deprecate@~1.0.1:
1351 | version "1.0.2"
1352 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1353 |
1354 | utils-merge@1.0.1:
1355 | version "1.0.1"
1356 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
1357 |
1358 | uuid@^3.3.2:
1359 | version "3.3.2"
1360 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
1361 |
1362 | vary@~1.1.2:
1363 | version "1.1.2"
1364 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1365 |
1366 | wide-align@^1.1.0:
1367 | version "1.1.3"
1368 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
1369 | dependencies:
1370 | string-width "^1.0.2 || 2"
1371 |
1372 | window-size@^0.1.4:
1373 | version "0.1.4"
1374 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
1375 |
1376 | wrap-ansi@^2.0.0:
1377 | version "2.1.0"
1378 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
1379 | dependencies:
1380 | string-width "^1.0.1"
1381 | strip-ansi "^3.0.1"
1382 |
1383 | wrappy@1:
1384 | version "1.0.2"
1385 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1386 |
1387 | y18n@^3.2.0:
1388 | version "3.2.1"
1389 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
1390 |
1391 | yallist@^3.0.0, yallist@^3.0.2:
1392 | version "3.0.3"
1393 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
1394 |
1395 | yargs@^3.32.0:
1396 | version "3.32.0"
1397 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
1398 | dependencies:
1399 | camelcase "^2.0.1"
1400 | cliui "^3.0.3"
1401 | decamelize "^1.1.1"
1402 | os-locale "^1.4.0"
1403 | string-width "^1.0.1"
1404 | window-size "^0.1.4"
1405 | y18n "^3.2.0"
1406 |
--------------------------------------------------------------------------------