├── public
├── favicon.ico
└── index.html
├── src
├── assets
│ └── logo.png
├── main.js
├── views
│ ├── New.vue
│ ├── Edit.vue
│ ├── Show.vue
│ └── Tasks.vue
├── router.js
├── App.vue
├── helpers
│ └── helpers.js
└── components
│ ├── TaskForm.vue
│ └── HelloWorld.vue
├── babel.config.js
├── vuecrudappapi
├── api
│ ├── routes
│ │ └── taskRoutes.js
│ ├── models
│ │ └── taskModel.js
│ └── controllers
│ │ └── taskController.js
├── package.json
├── server.js
└── package-lock.json
├── README.md
└── package.json
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dunebook/Vuecrudapp/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dunebook/Vuecrudapp/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 |
4 | import 'semantic-ui-css/semantic.css';
5 | import router from './router'
6 |
7 |
8 | new Vue({
9 | router,
10 | render: h => h(App),
11 | }).$mount('#app')
12 |
--------------------------------------------------------------------------------
/vuecrudappapi/api/routes/taskRoutes.js:
--------------------------------------------------------------------------------
1 | const taskBuilder = require('../controllers/taskController');
2 |
3 | module.exports = app => {
4 | app
5 | .route('/tasks')
6 | .get(taskBuilder.list_all_tasks)
7 | .post(taskBuilder.create_a_task);
8 |
9 | app
10 | .route('/tasks/:taskId')
11 | .get(taskBuilder.read_a_task)
12 | .put(taskBuilder.update_a_task)
13 | .delete(taskBuilder.delete_a_task);
14 | };
--------------------------------------------------------------------------------
/vuecrudappapi/api/models/taskModel.js:
--------------------------------------------------------------------------------
1 | const mongoose = require('mongoose');
2 |
3 | const { Schema } = mongoose;
4 |
5 | const taskSchema = new Schema(
6 | {
7 | task1: {
8 | type: String,
9 | required: 'task1 cannot be blank'
10 | },
11 | task2: {
12 | type: String,
13 | required: 'task2 cannot be blank'
14 | }
15 | },
16 | { collection: 'task' }
17 | );
18 |
19 | module.exports = mongoose.model('task', taskSchema);
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vuecrudapp
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
26 | Tutorial link - https://codesource.io/create-a-crud-application-using-vue-node-and-mongodb/
27 |
--------------------------------------------------------------------------------
/vuecrudappapi/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vuecrudappapi",
3 | "version": "1.0.0",
4 | "description": "vuecrudapi",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "nodemon server.js"
9 | },
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "body-parser": "^1.19.0",
14 | "cors": "^2.8.5",
15 | "express": "^4.17.1",
16 | "mongoose": "^5.7.12"
17 | },
18 | "devDependencies": {
19 | "nodemon": "^2.0.1"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | vuecrudapp
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/views/New.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
New task
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/views/Edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Edit task
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/vuecrudappapi/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const cors = require('cors');
3 | const mongoose = require('mongoose');
4 | const bodyParser = require('body-parser');
5 |
6 | global.Task = require('./api/models/taskModel');
7 | const routes = require('./api/routes/taskRoutes');
8 |
9 | mongoose.Promise = global.Promise;
10 | mongoose.set('useFindAndModify', false);
11 | mongoose.connect(
12 | 'mongodb://localhost/Vuecrudapp',
13 | { useNewUrlParser: true }
14 | );
15 |
16 | const port = process.env.PORT || 3000;
17 | const app = express();
18 |
19 | app.use(cors());
20 | app.use(bodyParser.urlencoded({ extended: true }));
21 | app.use(bodyParser.json());
22 |
23 | routes(app);
24 | app.listen(port);
25 |
26 | app.use((req, res) => {
27 | res.status(404).send({ url: `${req.originalUrl} not found` });
28 | });
29 |
30 | console.log(`Server started on port ${port}`);
--------------------------------------------------------------------------------
/src/router.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Router from 'vue-router';
3 | import Tasks from './views/Tasks.vue';
4 | import New from './views/New.vue';
5 | import Show from './views/Show.vue';
6 | import Edit from './views/Edit.vue';
7 |
8 | Vue.use(Router);
9 |
10 | export default new Router({
11 | mode: 'history',
12 | base: process.env.BASE_URL,
13 | linkActiveClass: 'active',
14 | routes: [
15 | {
16 | path: '/',
17 | redirect: '/tasks'
18 | },
19 | {
20 | path: '/tasks',
21 | name: 'tasks',
22 | component: Tasks
23 | },
24 | {
25 | path: '/tasks/new',
26 | name: 'new-task',
27 | component: New
28 | },
29 | {
30 | path: '/tasks/:id',
31 | name: 'show',
32 | component: Show
33 | },
34 | {
35 | path: '/tasks/:id/edit',
36 | name: 'edit',
37 | component: Edit
38 | }
39 |
40 | ]
41 | });
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vuecrudapp",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "axios": "^0.19.0",
12 | "core-js": "^3.4.3",
13 | "semantic-ui-css": "^2.4.1",
14 | "vue": "^2.6.10",
15 | "vue-flash-message": "^0.7.2",
16 | "vue-router": "^3.1.3"
17 | },
18 | "devDependencies": {
19 | "@vue/cli-plugin-babel": "^4.1.0",
20 | "@vue/cli-plugin-eslint": "^4.1.0",
21 | "@vue/cli-service": "^4.1.0",
22 | "babel-eslint": "^10.0.3",
23 | "eslint": "^5.16.0",
24 | "eslint-plugin-vue": "^5.0.0",
25 | "vue-template-compiler": "^2.6.10"
26 | },
27 | "eslintConfig": {
28 | "root": true,
29 | "env": {
30 | "node": true
31 | },
32 | "extends": [
33 | "plugin:vue/essential",
34 | "eslint:recommended"
35 | ],
36 | "rules": {},
37 | "parserOptions": {
38 | "parser": "babel-eslint"
39 | }
40 | },
41 | "browserslist": [
42 | "> 1%",
43 | "last 2 versions"
44 | ]
45 | }
46 |
--------------------------------------------------------------------------------
/src/views/Show.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Show task
4 |
5 |
6 |
12 |
13 |
19 |
20 |
21 | Edit task
22 |
23 |
24 |
25 |
26 |
27 |
41 |
42 |
--------------------------------------------------------------------------------
/vuecrudappapi/api/controllers/taskController.js:
--------------------------------------------------------------------------------
1 | const mongoose = require('mongoose');
2 | const task = mongoose.model('task');
3 |
4 | exports.list_all_tasks = (req, res) => {
5 | task.find({}, (err, tasks) => {
6 | if (err) res.send(err);
7 | res.json(tasks);
8 | });
9 | };
10 |
11 | exports.create_a_task = (req, res) => {
12 | const newTask = new task(req.body);
13 | newTask.save((err, task) => {
14 | if (err) res.send(err);
15 | res.json(task);
16 | });
17 | };
18 |
19 | exports.read_a_task = (req, res) => {
20 | task.findById(req.params.taskId, (err, task) => {
21 | if (err) res.send(err);
22 | res.json(task);
23 | });
24 | };
25 |
26 | exports.update_a_task = (req, res) => {
27 | task.findOneAndUpdate(
28 | { _id: req.params.taskId },
29 | req.body,
30 | { new: true },
31 | (err, task) => {
32 | if (err) res.send(err);
33 | res.json(task);
34 | }
35 | );
36 | };
37 |
38 | exports.delete_a_task = (req, res) => {
39 | task.deleteOne({ _id: req.params.taskId }, err => {
40 | if (err) res.send(err);
41 | res.json({
42 | message: 'task successfully deleted',
43 | _id: req.params.taskId
44 | });
45 | });
46 | };
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
25 |
26 |
27 |
32 |
33 |
--------------------------------------------------------------------------------
/src/helpers/helpers.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import Vue from 'vue';
3 | import VueFlashMessage from 'vue-flash-message';
4 | import 'vue-flash-message/dist/vue-flash-message.min.css';
5 |
6 | Vue.use(VueFlashMessage, {
7 | messageOptions: {
8 | timeout: 3000,
9 | pauseOnInteract: true
10 | }
11 | });
12 |
13 | const vm = new Vue();
14 | const baseURL = 'http://localhost:3000/tasks/';
15 |
16 | const handleError = fn => (...params) =>
17 | fn(...params).catch(error => {
18 | vm.flash(`${error.response.status}: ${error.response.statusText}`, 'error');
19 | });
20 |
21 | export const api = {
22 | gettask: handleError(async id => {
23 | const res = await axios.get(baseURL + id);
24 | return res.data;
25 | }),
26 | gettasks: handleError(async () => {
27 | const res = await axios.get(baseURL);
28 | return res.data;
29 | }),
30 | deletetask: handleError(async id => {
31 | const res = await axios.delete(baseURL + id);
32 | return res.data;
33 | }),
34 | createtask: handleError(async payload => {
35 | const res = await axios.post(baseURL, payload);
36 | return res.data;
37 | }),
38 | updatetask: handleError(async payload => {
39 | const res = await axios.put(baseURL + payload._id, payload);
40 | return res.data;
41 | })
42 | };
--------------------------------------------------------------------------------
/src/components/TaskForm.vue:
--------------------------------------------------------------------------------
1 |
2 |
24 |
25 |
26 |
57 |
58 |
--------------------------------------------------------------------------------
/src/views/Tasks.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
tasks
4 |
5 |
6 |
7 | | Task |
8 | Detail |
9 | |
10 | |
11 | |
12 |
13 |
14 |
15 | |
16 |
17 |
18 |
19 | | {{ task.task1 }} |
20 | {{ task.task2 }} |
21 |
22 | Show
23 | |
24 |
25 | Edit
26 | |
27 |
28 | Delete
29 | |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
5 | For a guide and recipes on how to configure / customize this project,
6 | check out the
7 | vue-cli documentation.
8 |
9 |
Installed CLI Plugins
10 |
14 |
Essential Links
15 |
22 |
Ecosystem
23 |
30 |
31 |
32 |
33 |
41 |
42 |
43 |
59 |
--------------------------------------------------------------------------------
/vuecrudappapi/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vuecrudappapi",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "abbrev": {
8 | "version": "1.1.1",
9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
10 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
11 | "dev": true
12 | },
13 | "accepts": {
14 | "version": "1.3.7",
15 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
16 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
17 | "requires": {
18 | "mime-types": "~2.1.24",
19 | "negotiator": "0.6.2"
20 | }
21 | },
22 | "ansi-align": {
23 | "version": "2.0.0",
24 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
25 | "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
26 | "dev": true,
27 | "requires": {
28 | "string-width": "^2.0.0"
29 | }
30 | },
31 | "ansi-regex": {
32 | "version": "3.0.0",
33 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
34 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
35 | "dev": true
36 | },
37 | "ansi-styles": {
38 | "version": "3.2.1",
39 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
40 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
41 | "dev": true,
42 | "requires": {
43 | "color-convert": "^1.9.0"
44 | }
45 | },
46 | "anymatch": {
47 | "version": "3.1.1",
48 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
49 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
50 | "dev": true,
51 | "requires": {
52 | "normalize-path": "^3.0.0",
53 | "picomatch": "^2.0.4"
54 | }
55 | },
56 | "array-flatten": {
57 | "version": "1.1.1",
58 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
59 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
60 | },
61 | "balanced-match": {
62 | "version": "1.0.0",
63 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
64 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
65 | "dev": true
66 | },
67 | "binary-extensions": {
68 | "version": "2.0.0",
69 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
70 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
71 | "dev": true
72 | },
73 | "bluebird": {
74 | "version": "3.5.1",
75 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
76 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
77 | },
78 | "body-parser": {
79 | "version": "1.19.0",
80 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
81 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
82 | "requires": {
83 | "bytes": "3.1.0",
84 | "content-type": "~1.0.4",
85 | "debug": "2.6.9",
86 | "depd": "~1.1.2",
87 | "http-errors": "1.7.2",
88 | "iconv-lite": "0.4.24",
89 | "on-finished": "~2.3.0",
90 | "qs": "6.7.0",
91 | "raw-body": "2.4.0",
92 | "type-is": "~1.6.17"
93 | }
94 | },
95 | "boxen": {
96 | "version": "1.3.0",
97 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
98 | "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
99 | "dev": true,
100 | "requires": {
101 | "ansi-align": "^2.0.0",
102 | "camelcase": "^4.0.0",
103 | "chalk": "^2.0.1",
104 | "cli-boxes": "^1.0.0",
105 | "string-width": "^2.0.0",
106 | "term-size": "^1.2.0",
107 | "widest-line": "^2.0.0"
108 | }
109 | },
110 | "brace-expansion": {
111 | "version": "1.1.11",
112 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
113 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
114 | "dev": true,
115 | "requires": {
116 | "balanced-match": "^1.0.0",
117 | "concat-map": "0.0.1"
118 | }
119 | },
120 | "braces": {
121 | "version": "3.0.2",
122 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
123 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
124 | "dev": true,
125 | "requires": {
126 | "fill-range": "^7.0.1"
127 | }
128 | },
129 | "bson": {
130 | "version": "1.1.3",
131 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.3.tgz",
132 | "integrity": "sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg=="
133 | },
134 | "bytes": {
135 | "version": "3.1.0",
136 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
137 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
138 | },
139 | "camelcase": {
140 | "version": "4.1.0",
141 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
142 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
143 | "dev": true
144 | },
145 | "capture-stack-trace": {
146 | "version": "1.0.1",
147 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
148 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
149 | "dev": true
150 | },
151 | "chalk": {
152 | "version": "2.4.2",
153 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
154 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
155 | "dev": true,
156 | "requires": {
157 | "ansi-styles": "^3.2.1",
158 | "escape-string-regexp": "^1.0.5",
159 | "supports-color": "^5.3.0"
160 | }
161 | },
162 | "chokidar": {
163 | "version": "3.3.0",
164 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz",
165 | "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==",
166 | "dev": true,
167 | "requires": {
168 | "anymatch": "~3.1.1",
169 | "braces": "~3.0.2",
170 | "fsevents": "~2.1.1",
171 | "glob-parent": "~5.1.0",
172 | "is-binary-path": "~2.1.0",
173 | "is-glob": "~4.0.1",
174 | "normalize-path": "~3.0.0",
175 | "readdirp": "~3.2.0"
176 | }
177 | },
178 | "ci-info": {
179 | "version": "1.6.0",
180 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
181 | "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
182 | "dev": true
183 | },
184 | "cli-boxes": {
185 | "version": "1.0.0",
186 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
187 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
188 | "dev": true
189 | },
190 | "color-convert": {
191 | "version": "1.9.3",
192 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
193 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
194 | "dev": true,
195 | "requires": {
196 | "color-name": "1.1.3"
197 | }
198 | },
199 | "color-name": {
200 | "version": "1.1.3",
201 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
202 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
203 | "dev": true
204 | },
205 | "concat-map": {
206 | "version": "0.0.1",
207 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
208 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
209 | "dev": true
210 | },
211 | "configstore": {
212 | "version": "3.1.2",
213 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
214 | "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
215 | "dev": true,
216 | "requires": {
217 | "dot-prop": "^4.1.0",
218 | "graceful-fs": "^4.1.2",
219 | "make-dir": "^1.0.0",
220 | "unique-string": "^1.0.0",
221 | "write-file-atomic": "^2.0.0",
222 | "xdg-basedir": "^3.0.0"
223 | }
224 | },
225 | "content-disposition": {
226 | "version": "0.5.3",
227 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
228 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
229 | "requires": {
230 | "safe-buffer": "5.1.2"
231 | }
232 | },
233 | "content-type": {
234 | "version": "1.0.4",
235 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
236 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
237 | },
238 | "cookie": {
239 | "version": "0.4.0",
240 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
241 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
242 | },
243 | "cookie-signature": {
244 | "version": "1.0.6",
245 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
246 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
247 | },
248 | "cors": {
249 | "version": "2.8.5",
250 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
251 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
252 | "requires": {
253 | "object-assign": "^4",
254 | "vary": "^1"
255 | }
256 | },
257 | "create-error-class": {
258 | "version": "3.0.2",
259 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
260 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
261 | "dev": true,
262 | "requires": {
263 | "capture-stack-trace": "^1.0.0"
264 | }
265 | },
266 | "cross-spawn": {
267 | "version": "5.1.0",
268 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
269 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
270 | "dev": true,
271 | "requires": {
272 | "lru-cache": "^4.0.1",
273 | "shebang-command": "^1.2.0",
274 | "which": "^1.2.9"
275 | }
276 | },
277 | "crypto-random-string": {
278 | "version": "1.0.0",
279 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
280 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
281 | "dev": true
282 | },
283 | "debug": {
284 | "version": "2.6.9",
285 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
286 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
287 | "requires": {
288 | "ms": "2.0.0"
289 | }
290 | },
291 | "deep-extend": {
292 | "version": "0.6.0",
293 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
294 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
295 | "dev": true
296 | },
297 | "depd": {
298 | "version": "1.1.2",
299 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
300 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
301 | },
302 | "destroy": {
303 | "version": "1.0.4",
304 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
305 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
306 | },
307 | "dot-prop": {
308 | "version": "4.2.0",
309 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
310 | "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
311 | "dev": true,
312 | "requires": {
313 | "is-obj": "^1.0.0"
314 | }
315 | },
316 | "duplexer3": {
317 | "version": "0.1.4",
318 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
319 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
320 | "dev": true
321 | },
322 | "ee-first": {
323 | "version": "1.1.1",
324 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
325 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
326 | },
327 | "encodeurl": {
328 | "version": "1.0.2",
329 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
330 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
331 | },
332 | "escape-html": {
333 | "version": "1.0.3",
334 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
335 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
336 | },
337 | "escape-string-regexp": {
338 | "version": "1.0.5",
339 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
340 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
341 | "dev": true
342 | },
343 | "etag": {
344 | "version": "1.8.1",
345 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
346 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
347 | },
348 | "execa": {
349 | "version": "0.7.0",
350 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
351 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
352 | "dev": true,
353 | "requires": {
354 | "cross-spawn": "^5.0.1",
355 | "get-stream": "^3.0.0",
356 | "is-stream": "^1.1.0",
357 | "npm-run-path": "^2.0.0",
358 | "p-finally": "^1.0.0",
359 | "signal-exit": "^3.0.0",
360 | "strip-eof": "^1.0.0"
361 | }
362 | },
363 | "express": {
364 | "version": "4.17.1",
365 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
366 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
367 | "requires": {
368 | "accepts": "~1.3.7",
369 | "array-flatten": "1.1.1",
370 | "body-parser": "1.19.0",
371 | "content-disposition": "0.5.3",
372 | "content-type": "~1.0.4",
373 | "cookie": "0.4.0",
374 | "cookie-signature": "1.0.6",
375 | "debug": "2.6.9",
376 | "depd": "~1.1.2",
377 | "encodeurl": "~1.0.2",
378 | "escape-html": "~1.0.3",
379 | "etag": "~1.8.1",
380 | "finalhandler": "~1.1.2",
381 | "fresh": "0.5.2",
382 | "merge-descriptors": "1.0.1",
383 | "methods": "~1.1.2",
384 | "on-finished": "~2.3.0",
385 | "parseurl": "~1.3.3",
386 | "path-to-regexp": "0.1.7",
387 | "proxy-addr": "~2.0.5",
388 | "qs": "6.7.0",
389 | "range-parser": "~1.2.1",
390 | "safe-buffer": "5.1.2",
391 | "send": "0.17.1",
392 | "serve-static": "1.14.1",
393 | "setprototypeof": "1.1.1",
394 | "statuses": "~1.5.0",
395 | "type-is": "~1.6.18",
396 | "utils-merge": "1.0.1",
397 | "vary": "~1.1.2"
398 | }
399 | },
400 | "fill-range": {
401 | "version": "7.0.1",
402 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
403 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
404 | "dev": true,
405 | "requires": {
406 | "to-regex-range": "^5.0.1"
407 | }
408 | },
409 | "finalhandler": {
410 | "version": "1.1.2",
411 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
412 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
413 | "requires": {
414 | "debug": "2.6.9",
415 | "encodeurl": "~1.0.2",
416 | "escape-html": "~1.0.3",
417 | "on-finished": "~2.3.0",
418 | "parseurl": "~1.3.3",
419 | "statuses": "~1.5.0",
420 | "unpipe": "~1.0.0"
421 | }
422 | },
423 | "forwarded": {
424 | "version": "0.1.2",
425 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
426 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
427 | },
428 | "fresh": {
429 | "version": "0.5.2",
430 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
431 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
432 | },
433 | "fsevents": {
434 | "version": "2.1.2",
435 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
436 | "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
437 | "dev": true,
438 | "optional": true
439 | },
440 | "get-stream": {
441 | "version": "3.0.0",
442 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
443 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
444 | "dev": true
445 | },
446 | "glob-parent": {
447 | "version": "5.1.0",
448 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
449 | "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
450 | "dev": true,
451 | "requires": {
452 | "is-glob": "^4.0.1"
453 | }
454 | },
455 | "global-dirs": {
456 | "version": "0.1.1",
457 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
458 | "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
459 | "dev": true,
460 | "requires": {
461 | "ini": "^1.3.4"
462 | }
463 | },
464 | "got": {
465 | "version": "6.7.1",
466 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
467 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
468 | "dev": true,
469 | "requires": {
470 | "create-error-class": "^3.0.0",
471 | "duplexer3": "^0.1.4",
472 | "get-stream": "^3.0.0",
473 | "is-redirect": "^1.0.0",
474 | "is-retry-allowed": "^1.0.0",
475 | "is-stream": "^1.0.0",
476 | "lowercase-keys": "^1.0.0",
477 | "safe-buffer": "^5.0.1",
478 | "timed-out": "^4.0.0",
479 | "unzip-response": "^2.0.1",
480 | "url-parse-lax": "^1.0.0"
481 | }
482 | },
483 | "graceful-fs": {
484 | "version": "4.2.3",
485 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
486 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
487 | "dev": true
488 | },
489 | "has-flag": {
490 | "version": "3.0.0",
491 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
492 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
493 | "dev": true
494 | },
495 | "http-errors": {
496 | "version": "1.7.2",
497 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
498 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
499 | "requires": {
500 | "depd": "~1.1.2",
501 | "inherits": "2.0.3",
502 | "setprototypeof": "1.1.1",
503 | "statuses": ">= 1.5.0 < 2",
504 | "toidentifier": "1.0.0"
505 | }
506 | },
507 | "iconv-lite": {
508 | "version": "0.4.24",
509 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
510 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
511 | "requires": {
512 | "safer-buffer": ">= 2.1.2 < 3"
513 | }
514 | },
515 | "ignore-by-default": {
516 | "version": "1.0.1",
517 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
518 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
519 | "dev": true
520 | },
521 | "import-lazy": {
522 | "version": "2.1.0",
523 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
524 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
525 | "dev": true
526 | },
527 | "imurmurhash": {
528 | "version": "0.1.4",
529 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
530 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
531 | "dev": true
532 | },
533 | "inherits": {
534 | "version": "2.0.3",
535 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
536 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
537 | },
538 | "ini": {
539 | "version": "1.3.5",
540 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
541 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
542 | "dev": true
543 | },
544 | "ipaddr.js": {
545 | "version": "1.9.0",
546 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
547 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
548 | },
549 | "is-binary-path": {
550 | "version": "2.1.0",
551 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
552 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
553 | "dev": true,
554 | "requires": {
555 | "binary-extensions": "^2.0.0"
556 | }
557 | },
558 | "is-ci": {
559 | "version": "1.2.1",
560 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
561 | "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
562 | "dev": true,
563 | "requires": {
564 | "ci-info": "^1.5.0"
565 | }
566 | },
567 | "is-extglob": {
568 | "version": "2.1.1",
569 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
570 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
571 | "dev": true
572 | },
573 | "is-fullwidth-code-point": {
574 | "version": "2.0.0",
575 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
576 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
577 | "dev": true
578 | },
579 | "is-glob": {
580 | "version": "4.0.1",
581 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
582 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
583 | "dev": true,
584 | "requires": {
585 | "is-extglob": "^2.1.1"
586 | }
587 | },
588 | "is-installed-globally": {
589 | "version": "0.1.0",
590 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
591 | "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
592 | "dev": true,
593 | "requires": {
594 | "global-dirs": "^0.1.0",
595 | "is-path-inside": "^1.0.0"
596 | }
597 | },
598 | "is-npm": {
599 | "version": "1.0.0",
600 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
601 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
602 | "dev": true
603 | },
604 | "is-number": {
605 | "version": "7.0.0",
606 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
607 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
608 | "dev": true
609 | },
610 | "is-obj": {
611 | "version": "1.0.1",
612 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
613 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
614 | "dev": true
615 | },
616 | "is-path-inside": {
617 | "version": "1.0.1",
618 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
619 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
620 | "dev": true,
621 | "requires": {
622 | "path-is-inside": "^1.0.1"
623 | }
624 | },
625 | "is-redirect": {
626 | "version": "1.0.0",
627 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
628 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
629 | "dev": true
630 | },
631 | "is-retry-allowed": {
632 | "version": "1.2.0",
633 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
634 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
635 | "dev": true
636 | },
637 | "is-stream": {
638 | "version": "1.1.0",
639 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
640 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
641 | "dev": true
642 | },
643 | "isexe": {
644 | "version": "2.0.0",
645 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
646 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
647 | "dev": true
648 | },
649 | "kareem": {
650 | "version": "2.3.1",
651 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
652 | "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
653 | },
654 | "latest-version": {
655 | "version": "3.1.0",
656 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
657 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
658 | "dev": true,
659 | "requires": {
660 | "package-json": "^4.0.0"
661 | }
662 | },
663 | "lowercase-keys": {
664 | "version": "1.0.1",
665 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
666 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
667 | "dev": true
668 | },
669 | "lru-cache": {
670 | "version": "4.1.5",
671 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
672 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
673 | "dev": true,
674 | "requires": {
675 | "pseudomap": "^1.0.2",
676 | "yallist": "^2.1.2"
677 | }
678 | },
679 | "make-dir": {
680 | "version": "1.3.0",
681 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
682 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
683 | "dev": true,
684 | "requires": {
685 | "pify": "^3.0.0"
686 | }
687 | },
688 | "media-typer": {
689 | "version": "0.3.0",
690 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
691 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
692 | },
693 | "memory-pager": {
694 | "version": "1.5.0",
695 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
696 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
697 | "optional": true
698 | },
699 | "merge-descriptors": {
700 | "version": "1.0.1",
701 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
702 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
703 | },
704 | "methods": {
705 | "version": "1.1.2",
706 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
707 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
708 | },
709 | "mime": {
710 | "version": "1.6.0",
711 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
712 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
713 | },
714 | "mime-db": {
715 | "version": "1.42.0",
716 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
717 | "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ=="
718 | },
719 | "mime-types": {
720 | "version": "2.1.25",
721 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
722 | "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
723 | "requires": {
724 | "mime-db": "1.42.0"
725 | }
726 | },
727 | "minimatch": {
728 | "version": "3.0.4",
729 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
730 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
731 | "dev": true,
732 | "requires": {
733 | "brace-expansion": "^1.1.7"
734 | }
735 | },
736 | "minimist": {
737 | "version": "1.2.0",
738 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
739 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
740 | "dev": true
741 | },
742 | "mongodb": {
743 | "version": "3.3.4",
744 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.3.4.tgz",
745 | "integrity": "sha512-6fmHu3FJTpeZxacJcfjUGIP3BSteG0l2cxLkSrf1nnnS1OrlnVGiP9P/wAC4aB6dM6H4vQ2io8YDjkuPkje7AA==",
746 | "requires": {
747 | "bson": "^1.1.1",
748 | "require_optional": "^1.0.1",
749 | "safe-buffer": "^5.1.2",
750 | "saslprep": "^1.0.0"
751 | }
752 | },
753 | "mongoose": {
754 | "version": "5.7.12",
755 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.7.12.tgz",
756 | "integrity": "sha512-TqRiJPUeHN1u7Xs/zQmiMHcrzEb1/uKjK3uGzZhyqw25RKQiMV2vSBeBTMt5HXoYlUuDEWXE75FMjpK9X9kD0w==",
757 | "requires": {
758 | "bson": "~1.1.1",
759 | "kareem": "2.3.1",
760 | "mongodb": "3.3.4",
761 | "mongoose-legacy-pluralize": "1.0.2",
762 | "mpath": "0.6.0",
763 | "mquery": "3.2.2",
764 | "ms": "2.1.2",
765 | "regexp-clone": "1.0.0",
766 | "safe-buffer": "5.1.2",
767 | "sift": "7.0.1",
768 | "sliced": "1.0.1"
769 | },
770 | "dependencies": {
771 | "ms": {
772 | "version": "2.1.2",
773 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
774 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
775 | }
776 | }
777 | },
778 | "mongoose-legacy-pluralize": {
779 | "version": "1.0.2",
780 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
781 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
782 | },
783 | "mpath": {
784 | "version": "0.6.0",
785 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz",
786 | "integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw=="
787 | },
788 | "mquery": {
789 | "version": "3.2.2",
790 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz",
791 | "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==",
792 | "requires": {
793 | "bluebird": "3.5.1",
794 | "debug": "3.1.0",
795 | "regexp-clone": "^1.0.0",
796 | "safe-buffer": "5.1.2",
797 | "sliced": "1.0.1"
798 | },
799 | "dependencies": {
800 | "debug": {
801 | "version": "3.1.0",
802 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
803 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
804 | "requires": {
805 | "ms": "2.0.0"
806 | }
807 | }
808 | }
809 | },
810 | "ms": {
811 | "version": "2.0.0",
812 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
813 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
814 | },
815 | "negotiator": {
816 | "version": "0.6.2",
817 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
818 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
819 | },
820 | "nodemon": {
821 | "version": "2.0.1",
822 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.1.tgz",
823 | "integrity": "sha512-UC6FVhNLXjbbV4UzaXA3wUdbEkUZzLGgMGzmxvWAex5nzib/jhcSHVFlQODdbuUHq8SnnZ4/EABBAbC3RplvPg==",
824 | "dev": true,
825 | "requires": {
826 | "chokidar": "^3.2.2",
827 | "debug": "^3.2.6",
828 | "ignore-by-default": "^1.0.1",
829 | "minimatch": "^3.0.4",
830 | "pstree.remy": "^1.1.7",
831 | "semver": "^5.7.1",
832 | "supports-color": "^5.5.0",
833 | "touch": "^3.1.0",
834 | "undefsafe": "^2.0.2",
835 | "update-notifier": "^2.5.0"
836 | },
837 | "dependencies": {
838 | "debug": {
839 | "version": "3.2.6",
840 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
841 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
842 | "dev": true,
843 | "requires": {
844 | "ms": "^2.1.1"
845 | }
846 | },
847 | "ms": {
848 | "version": "2.1.2",
849 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
850 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
851 | "dev": true
852 | }
853 | }
854 | },
855 | "nopt": {
856 | "version": "1.0.10",
857 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
858 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
859 | "dev": true,
860 | "requires": {
861 | "abbrev": "1"
862 | }
863 | },
864 | "normalize-path": {
865 | "version": "3.0.0",
866 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
867 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
868 | "dev": true
869 | },
870 | "npm-run-path": {
871 | "version": "2.0.2",
872 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
873 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
874 | "dev": true,
875 | "requires": {
876 | "path-key": "^2.0.0"
877 | }
878 | },
879 | "object-assign": {
880 | "version": "4.1.1",
881 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
882 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
883 | },
884 | "on-finished": {
885 | "version": "2.3.0",
886 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
887 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
888 | "requires": {
889 | "ee-first": "1.1.1"
890 | }
891 | },
892 | "p-finally": {
893 | "version": "1.0.0",
894 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
895 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
896 | "dev": true
897 | },
898 | "package-json": {
899 | "version": "4.0.1",
900 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
901 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
902 | "dev": true,
903 | "requires": {
904 | "got": "^6.7.1",
905 | "registry-auth-token": "^3.0.1",
906 | "registry-url": "^3.0.3",
907 | "semver": "^5.1.0"
908 | }
909 | },
910 | "parseurl": {
911 | "version": "1.3.3",
912 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
913 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
914 | },
915 | "path-is-inside": {
916 | "version": "1.0.2",
917 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
918 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
919 | "dev": true
920 | },
921 | "path-key": {
922 | "version": "2.0.1",
923 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
924 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
925 | "dev": true
926 | },
927 | "path-to-regexp": {
928 | "version": "0.1.7",
929 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
930 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
931 | },
932 | "picomatch": {
933 | "version": "2.1.1",
934 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz",
935 | "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==",
936 | "dev": true
937 | },
938 | "pify": {
939 | "version": "3.0.0",
940 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
941 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
942 | "dev": true
943 | },
944 | "prepend-http": {
945 | "version": "1.0.4",
946 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
947 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
948 | "dev": true
949 | },
950 | "proxy-addr": {
951 | "version": "2.0.5",
952 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
953 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
954 | "requires": {
955 | "forwarded": "~0.1.2",
956 | "ipaddr.js": "1.9.0"
957 | }
958 | },
959 | "pseudomap": {
960 | "version": "1.0.2",
961 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
962 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
963 | "dev": true
964 | },
965 | "pstree.remy": {
966 | "version": "1.1.7",
967 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz",
968 | "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A==",
969 | "dev": true
970 | },
971 | "qs": {
972 | "version": "6.7.0",
973 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
974 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
975 | },
976 | "range-parser": {
977 | "version": "1.2.1",
978 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
979 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
980 | },
981 | "raw-body": {
982 | "version": "2.4.0",
983 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
984 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
985 | "requires": {
986 | "bytes": "3.1.0",
987 | "http-errors": "1.7.2",
988 | "iconv-lite": "0.4.24",
989 | "unpipe": "1.0.0"
990 | }
991 | },
992 | "rc": {
993 | "version": "1.2.8",
994 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
995 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
996 | "dev": true,
997 | "requires": {
998 | "deep-extend": "^0.6.0",
999 | "ini": "~1.3.0",
1000 | "minimist": "^1.2.0",
1001 | "strip-json-comments": "~2.0.1"
1002 | }
1003 | },
1004 | "readdirp": {
1005 | "version": "3.2.0",
1006 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
1007 | "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
1008 | "dev": true,
1009 | "requires": {
1010 | "picomatch": "^2.0.4"
1011 | }
1012 | },
1013 | "regexp-clone": {
1014 | "version": "1.0.0",
1015 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
1016 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
1017 | },
1018 | "registry-auth-token": {
1019 | "version": "3.4.0",
1020 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
1021 | "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
1022 | "dev": true,
1023 | "requires": {
1024 | "rc": "^1.1.6",
1025 | "safe-buffer": "^5.0.1"
1026 | }
1027 | },
1028 | "registry-url": {
1029 | "version": "3.1.0",
1030 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
1031 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
1032 | "dev": true,
1033 | "requires": {
1034 | "rc": "^1.0.1"
1035 | }
1036 | },
1037 | "require_optional": {
1038 | "version": "1.0.1",
1039 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
1040 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
1041 | "requires": {
1042 | "resolve-from": "^2.0.0",
1043 | "semver": "^5.1.0"
1044 | }
1045 | },
1046 | "resolve-from": {
1047 | "version": "2.0.0",
1048 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
1049 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
1050 | },
1051 | "safe-buffer": {
1052 | "version": "5.1.2",
1053 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1054 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1055 | },
1056 | "safer-buffer": {
1057 | "version": "2.1.2",
1058 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1059 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1060 | },
1061 | "saslprep": {
1062 | "version": "1.0.3",
1063 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
1064 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
1065 | "optional": true,
1066 | "requires": {
1067 | "sparse-bitfield": "^3.0.3"
1068 | }
1069 | },
1070 | "semver": {
1071 | "version": "5.7.1",
1072 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1073 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
1074 | },
1075 | "semver-diff": {
1076 | "version": "2.1.0",
1077 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
1078 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
1079 | "dev": true,
1080 | "requires": {
1081 | "semver": "^5.0.3"
1082 | }
1083 | },
1084 | "send": {
1085 | "version": "0.17.1",
1086 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1087 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1088 | "requires": {
1089 | "debug": "2.6.9",
1090 | "depd": "~1.1.2",
1091 | "destroy": "~1.0.4",
1092 | "encodeurl": "~1.0.2",
1093 | "escape-html": "~1.0.3",
1094 | "etag": "~1.8.1",
1095 | "fresh": "0.5.2",
1096 | "http-errors": "~1.7.2",
1097 | "mime": "1.6.0",
1098 | "ms": "2.1.1",
1099 | "on-finished": "~2.3.0",
1100 | "range-parser": "~1.2.1",
1101 | "statuses": "~1.5.0"
1102 | },
1103 | "dependencies": {
1104 | "ms": {
1105 | "version": "2.1.1",
1106 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1107 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1108 | }
1109 | }
1110 | },
1111 | "serve-static": {
1112 | "version": "1.14.1",
1113 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1114 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1115 | "requires": {
1116 | "encodeurl": "~1.0.2",
1117 | "escape-html": "~1.0.3",
1118 | "parseurl": "~1.3.3",
1119 | "send": "0.17.1"
1120 | }
1121 | },
1122 | "setprototypeof": {
1123 | "version": "1.1.1",
1124 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1125 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1126 | },
1127 | "shebang-command": {
1128 | "version": "1.2.0",
1129 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1130 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1131 | "dev": true,
1132 | "requires": {
1133 | "shebang-regex": "^1.0.0"
1134 | }
1135 | },
1136 | "shebang-regex": {
1137 | "version": "1.0.0",
1138 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1139 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1140 | "dev": true
1141 | },
1142 | "sift": {
1143 | "version": "7.0.1",
1144 | "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
1145 | "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
1146 | },
1147 | "signal-exit": {
1148 | "version": "3.0.2",
1149 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1150 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1151 | "dev": true
1152 | },
1153 | "sliced": {
1154 | "version": "1.0.1",
1155 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
1156 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
1157 | },
1158 | "sparse-bitfield": {
1159 | "version": "3.0.3",
1160 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1161 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
1162 | "optional": true,
1163 | "requires": {
1164 | "memory-pager": "^1.0.2"
1165 | }
1166 | },
1167 | "statuses": {
1168 | "version": "1.5.0",
1169 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1170 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1171 | },
1172 | "string-width": {
1173 | "version": "2.1.1",
1174 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1175 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1176 | "dev": true,
1177 | "requires": {
1178 | "is-fullwidth-code-point": "^2.0.0",
1179 | "strip-ansi": "^4.0.0"
1180 | }
1181 | },
1182 | "strip-ansi": {
1183 | "version": "4.0.0",
1184 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1185 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1186 | "dev": true,
1187 | "requires": {
1188 | "ansi-regex": "^3.0.0"
1189 | }
1190 | },
1191 | "strip-eof": {
1192 | "version": "1.0.0",
1193 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
1194 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
1195 | "dev": true
1196 | },
1197 | "strip-json-comments": {
1198 | "version": "2.0.1",
1199 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1200 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
1201 | "dev": true
1202 | },
1203 | "supports-color": {
1204 | "version": "5.5.0",
1205 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1206 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1207 | "dev": true,
1208 | "requires": {
1209 | "has-flag": "^3.0.0"
1210 | }
1211 | },
1212 | "term-size": {
1213 | "version": "1.2.0",
1214 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
1215 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
1216 | "dev": true,
1217 | "requires": {
1218 | "execa": "^0.7.0"
1219 | }
1220 | },
1221 | "timed-out": {
1222 | "version": "4.0.1",
1223 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
1224 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
1225 | "dev": true
1226 | },
1227 | "to-regex-range": {
1228 | "version": "5.0.1",
1229 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1230 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1231 | "dev": true,
1232 | "requires": {
1233 | "is-number": "^7.0.0"
1234 | }
1235 | },
1236 | "toidentifier": {
1237 | "version": "1.0.0",
1238 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1239 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1240 | },
1241 | "touch": {
1242 | "version": "3.1.0",
1243 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1244 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1245 | "dev": true,
1246 | "requires": {
1247 | "nopt": "~1.0.10"
1248 | }
1249 | },
1250 | "type-is": {
1251 | "version": "1.6.18",
1252 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1253 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1254 | "requires": {
1255 | "media-typer": "0.3.0",
1256 | "mime-types": "~2.1.24"
1257 | }
1258 | },
1259 | "undefsafe": {
1260 | "version": "2.0.2",
1261 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz",
1262 | "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=",
1263 | "dev": true,
1264 | "requires": {
1265 | "debug": "^2.2.0"
1266 | }
1267 | },
1268 | "unique-string": {
1269 | "version": "1.0.0",
1270 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
1271 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
1272 | "dev": true,
1273 | "requires": {
1274 | "crypto-random-string": "^1.0.0"
1275 | }
1276 | },
1277 | "unpipe": {
1278 | "version": "1.0.0",
1279 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1280 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1281 | },
1282 | "unzip-response": {
1283 | "version": "2.0.1",
1284 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
1285 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
1286 | "dev": true
1287 | },
1288 | "update-notifier": {
1289 | "version": "2.5.0",
1290 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
1291 | "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
1292 | "dev": true,
1293 | "requires": {
1294 | "boxen": "^1.2.1",
1295 | "chalk": "^2.0.1",
1296 | "configstore": "^3.0.0",
1297 | "import-lazy": "^2.1.0",
1298 | "is-ci": "^1.0.10",
1299 | "is-installed-globally": "^0.1.0",
1300 | "is-npm": "^1.0.0",
1301 | "latest-version": "^3.0.0",
1302 | "semver-diff": "^2.0.0",
1303 | "xdg-basedir": "^3.0.0"
1304 | }
1305 | },
1306 | "url-parse-lax": {
1307 | "version": "1.0.0",
1308 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
1309 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
1310 | "dev": true,
1311 | "requires": {
1312 | "prepend-http": "^1.0.1"
1313 | }
1314 | },
1315 | "utils-merge": {
1316 | "version": "1.0.1",
1317 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1318 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1319 | },
1320 | "vary": {
1321 | "version": "1.1.2",
1322 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1323 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1324 | },
1325 | "which": {
1326 | "version": "1.3.1",
1327 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1328 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1329 | "dev": true,
1330 | "requires": {
1331 | "isexe": "^2.0.0"
1332 | }
1333 | },
1334 | "widest-line": {
1335 | "version": "2.0.1",
1336 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
1337 | "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
1338 | "dev": true,
1339 | "requires": {
1340 | "string-width": "^2.1.1"
1341 | }
1342 | },
1343 | "write-file-atomic": {
1344 | "version": "2.4.3",
1345 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
1346 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
1347 | "dev": true,
1348 | "requires": {
1349 | "graceful-fs": "^4.1.11",
1350 | "imurmurhash": "^0.1.4",
1351 | "signal-exit": "^3.0.2"
1352 | }
1353 | },
1354 | "xdg-basedir": {
1355 | "version": "3.0.0",
1356 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
1357 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
1358 | "dev": true
1359 | },
1360 | "yallist": {
1361 | "version": "2.1.2",
1362 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1363 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
1364 | "dev": true
1365 | }
1366 | }
1367 | }
1368 |
--------------------------------------------------------------------------------