├── node
├── Dockerfile.prod
├── package.json
├── Dockerfile
├── index.js
└── package-lock.json
├── nginx
├── nginx-node.conf
├── Dockerfile
├── Dockerfile.prod
└── nginx.conf
├── laravel
├── Dockerfile
└── Dockerfile.prod
├── docker-compose.laravel.yaml
└── docker-compose.yaml
/node/Dockerfile.prod:
--------------------------------------------------------------------------------
1 | FROM node:15
2 |
3 | WORKDIR /usr/src/app
4 |
5 | COPY . .
6 |
7 | EXPOSE 3000
8 |
9 | CMD ["node","index.js"]
--------------------------------------------------------------------------------
/nginx/nginx-node.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 |
4 | location / {
5 | proxy_pass http://nome-do-seu-servico-node:porta-do-servico-node;
6 | }
7 | }
--------------------------------------------------------------------------------
/nginx/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx:latest
2 |
3 | COPY html /usr/share/nginx/html
4 |
5 | ENTRYPOINT ["/docker-entrypoint.sh"]
6 | CMD ["nginx", "-g", "daemon off;"]
--------------------------------------------------------------------------------
/nginx/Dockerfile.prod:
--------------------------------------------------------------------------------
1 | FROM nginx:1.15.0-alpine
2 |
3 | RUN rm /etc/nginx/conf.d/default.conf
4 | COPY nginx.conf /etc/nginx/conf.d
5 |
6 | RUN mkdir /var/www/html -p && touch /var/www/html/index.php
7 |
--------------------------------------------------------------------------------
/node/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "app",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.17.1",
13 | "mysql": "^2.18.1"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/node/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:15
2 |
3 | WORKDIR /usr/src/app
4 |
5 | RUN apt-get update && apt-get install -y wget
6 |
7 | ENV DOCKERIZE_VERSION v0.6.1
8 | RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
9 | && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
10 | && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
11 |
12 | EXPOSE 3000
13 |
14 | # CMD ["node","index.js"]
--------------------------------------------------------------------------------
/laravel/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM php:7.4-cli
2 |
3 | WORKDIR /var/www
4 |
5 | RUN apt-get update && \
6 | apt-get install libzip-dev -y && \
7 | docker-php-ext-install zip
8 |
9 | RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
10 | php composer-setup.php && \
11 | php -r "unlink('composer-setup.php');"
12 |
13 | RUN php composer.phar create-project --prefer-dist laravel/laravel laravel
14 |
15 | ENTRYPOINT [ "php","laravel/artisan","serve" ]
16 | CMD [ "--host=0.0.0.0" ]
17 |
18 |
--------------------------------------------------------------------------------
/docker-compose.laravel.yaml:
--------------------------------------------------------------------------------
1 | version: '3'
2 |
3 | services:
4 |
5 | laravel:
6 | build:
7 | context: ./laravel
8 | dockerfile: Dockerfile.prod
9 | image: wesleywillians/laravel:prod
10 | container_name: laravel
11 | networks:
12 | - laranet
13 |
14 | nginx:
15 | build:
16 | context: ./nginx
17 | dockerfile: Dockerfile.prod
18 | image: wesleywillians/nginx:prod
19 | container_name: nginx
20 | networks:
21 | - laranet
22 | ports:
23 | - "8080:80"
24 |
25 | networks:
26 | laranet:
27 | driver: bridge
--------------------------------------------------------------------------------
/node/index.js:
--------------------------------------------------------------------------------
1 | const express = require('express')
2 | const app = express()
3 | const port = 3000
4 | const config = {
5 | host: 'db',
6 | user: 'root',
7 | password: 'root',
8 | database:'nodedb'
9 | };
10 | const mysql = require('mysql')
11 | const connection = mysql.createConnection(config)
12 |
13 | const sql = `INSERT INTO people(name) values('Wesley')`
14 | connection.query(sql)
15 | connection.end()
16 |
17 |
18 | app.get('/', (req,res) => {
19 | res.send('
Full Cycle
')
20 | })
21 |
22 | app.listen(port, ()=> {
23 | console.log('Rodando na porta ' + port)
24 | })
--------------------------------------------------------------------------------
/laravel/Dockerfile.prod:
--------------------------------------------------------------------------------
1 | FROM php:7.4-cli AS builder
2 |
3 | WORKDIR /var/www
4 |
5 | RUN apt-get update && \
6 | apt-get install libzip-dev -y && \
7 | docker-php-ext-install zip
8 |
9 | RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
10 | php composer-setup.php && \
11 | php -r "unlink('composer-setup.php');"
12 |
13 | RUN php composer.phar create-project --prefer-dist laravel/laravel laravel
14 |
15 | FROM php:7.4-fpm-alpine
16 | WORKDIR /var/www
17 | RUN rm -rf /var/www/html
18 | COPY --from=builder /var/www/laravel .
19 | RUN ln -s public html
20 | RUN chown -R www-data:www-data /var/www
21 | EXPOSE 9000
22 | CMD [ "php-fpm" ]
--------------------------------------------------------------------------------
/docker-compose.yaml:
--------------------------------------------------------------------------------
1 | version: '3'
2 |
3 | services:
4 |
5 | app:
6 | build:
7 | context: node
8 | container_name: app
9 | entrypoint: dockerize -wait tcp://db:3306 -timeout 20s docker-entrypoint.sh
10 | networks:
11 | - node-network
12 | volumes:
13 | - ./node:/usr/src/app
14 | tty: true
15 | ports:
16 | - "3000:3000"
17 | depends_on:
18 | - db
19 |
20 | db:
21 | image: mysql:5.7
22 | command: --innodb-use-native-aio=0
23 | container_name: db
24 | restart: always
25 | tty: true
26 | volumes:
27 | - ./mysql:/var/lib/mysql
28 | environment:
29 | - MYSQL_DATABASE=nodedb
30 | - MYSQL_ROOT_PASSWORD=root
31 | networks:
32 | - node-network
33 |
34 |
35 |
36 | networks:
37 | node-network:
38 | driver: bridge
39 |
--------------------------------------------------------------------------------
/nginx/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | index index.php index.html;
4 | root /var/www/html;
5 |
6 | add_header X-Frame-Options "SAMEORIGIN";
7 | add_header X-XSS-Protection "1; mode=block";
8 | add_header X-Content-Type-Options "nosniff";
9 |
10 | charset utf-8;
11 |
12 | location ~ \.php$ {
13 | fastcgi_split_path_info ^(.+\.php)(/.+)$;
14 | fastcgi_pass laravel:9000;
15 | fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
16 | include fastcgi_params;
17 | }
18 |
19 | location / {
20 | try_files $uri $uri/ /index.php?$query_string;
21 | }
22 |
23 | location = /favicon.ico { access_log off; log_not_found off; }
24 | location = /robots.txt { access_log off; log_not_found off; }
25 |
26 | error_page 404 /index.php;
27 |
28 | location ~ /\.(?!well-known).* {
29 | deny all;
30 | }
31 | }
--------------------------------------------------------------------------------
/node/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "app",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "version": "1.0.0",
9 | "license": "ISC",
10 | "dependencies": {
11 | "express": "^4.17.1",
12 | "mysql": "^2.18.1"
13 | }
14 | },
15 | "node_modules/accepts": {
16 | "version": "1.3.7",
17 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
18 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
19 | "dependencies": {
20 | "mime-types": "~2.1.24",
21 | "negotiator": "0.6.2"
22 | },
23 | "engines": {
24 | "node": ">= 0.6"
25 | }
26 | },
27 | "node_modules/array-flatten": {
28 | "version": "1.1.1",
29 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
30 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
31 | },
32 | "node_modules/bignumber.js": {
33 | "version": "9.0.0",
34 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
35 | "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==",
36 | "engines": {
37 | "node": "*"
38 | }
39 | },
40 | "node_modules/body-parser": {
41 | "version": "1.19.0",
42 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
43 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
44 | "dependencies": {
45 | "bytes": "3.1.0",
46 | "content-type": "~1.0.4",
47 | "debug": "2.6.9",
48 | "depd": "~1.1.2",
49 | "http-errors": "1.7.2",
50 | "iconv-lite": "0.4.24",
51 | "on-finished": "~2.3.0",
52 | "qs": "6.7.0",
53 | "raw-body": "2.4.0",
54 | "type-is": "~1.6.17"
55 | },
56 | "engines": {
57 | "node": ">= 0.8"
58 | }
59 | },
60 | "node_modules/bytes": {
61 | "version": "3.1.0",
62 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
63 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
64 | "engines": {
65 | "node": ">= 0.8"
66 | }
67 | },
68 | "node_modules/content-disposition": {
69 | "version": "0.5.3",
70 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
71 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
72 | "dependencies": {
73 | "safe-buffer": "5.1.2"
74 | },
75 | "engines": {
76 | "node": ">= 0.6"
77 | }
78 | },
79 | "node_modules/content-type": {
80 | "version": "1.0.4",
81 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
82 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
83 | "engines": {
84 | "node": ">= 0.6"
85 | }
86 | },
87 | "node_modules/cookie": {
88 | "version": "0.4.0",
89 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
90 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
91 | "engines": {
92 | "node": ">= 0.6"
93 | }
94 | },
95 | "node_modules/cookie-signature": {
96 | "version": "1.0.6",
97 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
98 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
99 | },
100 | "node_modules/core-util-is": {
101 | "version": "1.0.2",
102 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
103 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
104 | },
105 | "node_modules/debug": {
106 | "version": "2.6.9",
107 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
108 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
109 | "dependencies": {
110 | "ms": "2.0.0"
111 | }
112 | },
113 | "node_modules/depd": {
114 | "version": "1.1.2",
115 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
116 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
117 | "engines": {
118 | "node": ">= 0.6"
119 | }
120 | },
121 | "node_modules/destroy": {
122 | "version": "1.0.4",
123 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
124 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
125 | },
126 | "node_modules/ee-first": {
127 | "version": "1.1.1",
128 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
129 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
130 | },
131 | "node_modules/encodeurl": {
132 | "version": "1.0.2",
133 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
134 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
135 | "engines": {
136 | "node": ">= 0.8"
137 | }
138 | },
139 | "node_modules/escape-html": {
140 | "version": "1.0.3",
141 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
142 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
143 | },
144 | "node_modules/etag": {
145 | "version": "1.8.1",
146 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
147 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
148 | "engines": {
149 | "node": ">= 0.6"
150 | }
151 | },
152 | "node_modules/express": {
153 | "version": "4.17.1",
154 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
155 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
156 | "dependencies": {
157 | "accepts": "~1.3.7",
158 | "array-flatten": "1.1.1",
159 | "body-parser": "1.19.0",
160 | "content-disposition": "0.5.3",
161 | "content-type": "~1.0.4",
162 | "cookie": "0.4.0",
163 | "cookie-signature": "1.0.6",
164 | "debug": "2.6.9",
165 | "depd": "~1.1.2",
166 | "encodeurl": "~1.0.2",
167 | "escape-html": "~1.0.3",
168 | "etag": "~1.8.1",
169 | "finalhandler": "~1.1.2",
170 | "fresh": "0.5.2",
171 | "merge-descriptors": "1.0.1",
172 | "methods": "~1.1.2",
173 | "on-finished": "~2.3.0",
174 | "parseurl": "~1.3.3",
175 | "path-to-regexp": "0.1.7",
176 | "proxy-addr": "~2.0.5",
177 | "qs": "6.7.0",
178 | "range-parser": "~1.2.1",
179 | "safe-buffer": "5.1.2",
180 | "send": "0.17.1",
181 | "serve-static": "1.14.1",
182 | "setprototypeof": "1.1.1",
183 | "statuses": "~1.5.0",
184 | "type-is": "~1.6.18",
185 | "utils-merge": "1.0.1",
186 | "vary": "~1.1.2"
187 | },
188 | "engines": {
189 | "node": ">= 0.10.0"
190 | }
191 | },
192 | "node_modules/finalhandler": {
193 | "version": "1.1.2",
194 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
195 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
196 | "dependencies": {
197 | "debug": "2.6.9",
198 | "encodeurl": "~1.0.2",
199 | "escape-html": "~1.0.3",
200 | "on-finished": "~2.3.0",
201 | "parseurl": "~1.3.3",
202 | "statuses": "~1.5.0",
203 | "unpipe": "~1.0.0"
204 | },
205 | "engines": {
206 | "node": ">= 0.8"
207 | }
208 | },
209 | "node_modules/forwarded": {
210 | "version": "0.1.2",
211 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
212 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
213 | "engines": {
214 | "node": ">= 0.6"
215 | }
216 | },
217 | "node_modules/fresh": {
218 | "version": "0.5.2",
219 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
220 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
221 | "engines": {
222 | "node": ">= 0.6"
223 | }
224 | },
225 | "node_modules/http-errors": {
226 | "version": "1.7.2",
227 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
228 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
229 | "dependencies": {
230 | "depd": "~1.1.2",
231 | "inherits": "2.0.3",
232 | "setprototypeof": "1.1.1",
233 | "statuses": ">= 1.5.0 < 2",
234 | "toidentifier": "1.0.0"
235 | },
236 | "engines": {
237 | "node": ">= 0.6"
238 | }
239 | },
240 | "node_modules/iconv-lite": {
241 | "version": "0.4.24",
242 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
243 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
244 | "dependencies": {
245 | "safer-buffer": ">= 2.1.2 < 3"
246 | },
247 | "engines": {
248 | "node": ">=0.10.0"
249 | }
250 | },
251 | "node_modules/inherits": {
252 | "version": "2.0.3",
253 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
254 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
255 | },
256 | "node_modules/ipaddr.js": {
257 | "version": "1.9.1",
258 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
259 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
260 | "engines": {
261 | "node": ">= 0.10"
262 | }
263 | },
264 | "node_modules/isarray": {
265 | "version": "1.0.0",
266 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
267 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
268 | },
269 | "node_modules/media-typer": {
270 | "version": "0.3.0",
271 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
272 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
273 | "engines": {
274 | "node": ">= 0.6"
275 | }
276 | },
277 | "node_modules/merge-descriptors": {
278 | "version": "1.0.1",
279 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
280 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
281 | },
282 | "node_modules/methods": {
283 | "version": "1.1.2",
284 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
285 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
286 | "engines": {
287 | "node": ">= 0.6"
288 | }
289 | },
290 | "node_modules/mime": {
291 | "version": "1.6.0",
292 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
293 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
294 | "bin": {
295 | "mime": "cli.js"
296 | },
297 | "engines": {
298 | "node": ">=4"
299 | }
300 | },
301 | "node_modules/mime-db": {
302 | "version": "1.44.0",
303 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
304 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
305 | "engines": {
306 | "node": ">= 0.6"
307 | }
308 | },
309 | "node_modules/mime-types": {
310 | "version": "2.1.27",
311 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
312 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
313 | "dependencies": {
314 | "mime-db": "1.44.0"
315 | },
316 | "engines": {
317 | "node": ">= 0.6"
318 | }
319 | },
320 | "node_modules/ms": {
321 | "version": "2.0.0",
322 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
323 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
324 | },
325 | "node_modules/mysql": {
326 | "version": "2.18.1",
327 | "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
328 | "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
329 | "dependencies": {
330 | "bignumber.js": "9.0.0",
331 | "readable-stream": "2.3.7",
332 | "safe-buffer": "5.1.2",
333 | "sqlstring": "2.3.1"
334 | },
335 | "engines": {
336 | "node": ">= 0.6"
337 | }
338 | },
339 | "node_modules/negotiator": {
340 | "version": "0.6.2",
341 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
342 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
343 | "engines": {
344 | "node": ">= 0.6"
345 | }
346 | },
347 | "node_modules/on-finished": {
348 | "version": "2.3.0",
349 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
350 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
351 | "dependencies": {
352 | "ee-first": "1.1.1"
353 | },
354 | "engines": {
355 | "node": ">= 0.8"
356 | }
357 | },
358 | "node_modules/parseurl": {
359 | "version": "1.3.3",
360 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
361 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
362 | "engines": {
363 | "node": ">= 0.8"
364 | }
365 | },
366 | "node_modules/path-to-regexp": {
367 | "version": "0.1.7",
368 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
369 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
370 | },
371 | "node_modules/process-nextick-args": {
372 | "version": "2.0.1",
373 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
374 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
375 | },
376 | "node_modules/proxy-addr": {
377 | "version": "2.0.6",
378 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
379 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
380 | "dependencies": {
381 | "forwarded": "~0.1.2",
382 | "ipaddr.js": "1.9.1"
383 | },
384 | "engines": {
385 | "node": ">= 0.10"
386 | }
387 | },
388 | "node_modules/qs": {
389 | "version": "6.7.0",
390 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
391 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
392 | "engines": {
393 | "node": ">=0.6"
394 | }
395 | },
396 | "node_modules/range-parser": {
397 | "version": "1.2.1",
398 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
399 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
400 | "engines": {
401 | "node": ">= 0.6"
402 | }
403 | },
404 | "node_modules/raw-body": {
405 | "version": "2.4.0",
406 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
407 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
408 | "dependencies": {
409 | "bytes": "3.1.0",
410 | "http-errors": "1.7.2",
411 | "iconv-lite": "0.4.24",
412 | "unpipe": "1.0.0"
413 | },
414 | "engines": {
415 | "node": ">= 0.8"
416 | }
417 | },
418 | "node_modules/readable-stream": {
419 | "version": "2.3.7",
420 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
421 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
422 | "dependencies": {
423 | "core-util-is": "~1.0.0",
424 | "inherits": "~2.0.3",
425 | "isarray": "~1.0.0",
426 | "process-nextick-args": "~2.0.0",
427 | "safe-buffer": "~5.1.1",
428 | "string_decoder": "~1.1.1",
429 | "util-deprecate": "~1.0.1"
430 | }
431 | },
432 | "node_modules/safe-buffer": {
433 | "version": "5.1.2",
434 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
435 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
436 | },
437 | "node_modules/safer-buffer": {
438 | "version": "2.1.2",
439 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
440 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
441 | },
442 | "node_modules/send": {
443 | "version": "0.17.1",
444 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
445 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
446 | "dependencies": {
447 | "debug": "2.6.9",
448 | "depd": "~1.1.2",
449 | "destroy": "~1.0.4",
450 | "encodeurl": "~1.0.2",
451 | "escape-html": "~1.0.3",
452 | "etag": "~1.8.1",
453 | "fresh": "0.5.2",
454 | "http-errors": "~1.7.2",
455 | "mime": "1.6.0",
456 | "ms": "2.1.1",
457 | "on-finished": "~2.3.0",
458 | "range-parser": "~1.2.1",
459 | "statuses": "~1.5.0"
460 | },
461 | "engines": {
462 | "node": ">= 0.8.0"
463 | }
464 | },
465 | "node_modules/send/node_modules/ms": {
466 | "version": "2.1.1",
467 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
468 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
469 | },
470 | "node_modules/serve-static": {
471 | "version": "1.14.1",
472 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
473 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
474 | "dependencies": {
475 | "encodeurl": "~1.0.2",
476 | "escape-html": "~1.0.3",
477 | "parseurl": "~1.3.3",
478 | "send": "0.17.1"
479 | },
480 | "engines": {
481 | "node": ">= 0.8.0"
482 | }
483 | },
484 | "node_modules/setprototypeof": {
485 | "version": "1.1.1",
486 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
487 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
488 | },
489 | "node_modules/sqlstring": {
490 | "version": "2.3.1",
491 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
492 | "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=",
493 | "engines": {
494 | "node": ">= 0.6"
495 | }
496 | },
497 | "node_modules/statuses": {
498 | "version": "1.5.0",
499 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
500 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
501 | "engines": {
502 | "node": ">= 0.6"
503 | }
504 | },
505 | "node_modules/string_decoder": {
506 | "version": "1.1.1",
507 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
508 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
509 | "dependencies": {
510 | "safe-buffer": "~5.1.0"
511 | }
512 | },
513 | "node_modules/toidentifier": {
514 | "version": "1.0.0",
515 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
516 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
517 | "engines": {
518 | "node": ">=0.6"
519 | }
520 | },
521 | "node_modules/type-is": {
522 | "version": "1.6.18",
523 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
524 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
525 | "dependencies": {
526 | "media-typer": "0.3.0",
527 | "mime-types": "~2.1.24"
528 | },
529 | "engines": {
530 | "node": ">= 0.6"
531 | }
532 | },
533 | "node_modules/unpipe": {
534 | "version": "1.0.0",
535 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
536 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
537 | "engines": {
538 | "node": ">= 0.8"
539 | }
540 | },
541 | "node_modules/util-deprecate": {
542 | "version": "1.0.2",
543 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
544 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
545 | },
546 | "node_modules/utils-merge": {
547 | "version": "1.0.1",
548 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
549 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
550 | "engines": {
551 | "node": ">= 0.4.0"
552 | }
553 | },
554 | "node_modules/vary": {
555 | "version": "1.1.2",
556 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
557 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
558 | "engines": {
559 | "node": ">= 0.8"
560 | }
561 | }
562 | },
563 | "dependencies": {
564 | "accepts": {
565 | "version": "1.3.7",
566 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
567 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
568 | "requires": {
569 | "mime-types": "~2.1.24",
570 | "negotiator": "0.6.2"
571 | }
572 | },
573 | "array-flatten": {
574 | "version": "1.1.1",
575 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
576 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
577 | },
578 | "bignumber.js": {
579 | "version": "9.0.0",
580 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
581 | "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
582 | },
583 | "body-parser": {
584 | "version": "1.19.0",
585 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
586 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
587 | "requires": {
588 | "bytes": "3.1.0",
589 | "content-type": "~1.0.4",
590 | "debug": "2.6.9",
591 | "depd": "~1.1.2",
592 | "http-errors": "1.7.2",
593 | "iconv-lite": "0.4.24",
594 | "on-finished": "~2.3.0",
595 | "qs": "6.7.0",
596 | "raw-body": "2.4.0",
597 | "type-is": "~1.6.17"
598 | }
599 | },
600 | "bytes": {
601 | "version": "3.1.0",
602 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
603 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
604 | },
605 | "content-disposition": {
606 | "version": "0.5.3",
607 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
608 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
609 | "requires": {
610 | "safe-buffer": "5.1.2"
611 | }
612 | },
613 | "content-type": {
614 | "version": "1.0.4",
615 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
616 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
617 | },
618 | "cookie": {
619 | "version": "0.4.0",
620 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
621 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
622 | },
623 | "cookie-signature": {
624 | "version": "1.0.6",
625 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
626 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
627 | },
628 | "core-util-is": {
629 | "version": "1.0.2",
630 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
631 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
632 | },
633 | "debug": {
634 | "version": "2.6.9",
635 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
636 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
637 | "requires": {
638 | "ms": "2.0.0"
639 | }
640 | },
641 | "depd": {
642 | "version": "1.1.2",
643 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
644 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
645 | },
646 | "destroy": {
647 | "version": "1.0.4",
648 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
649 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
650 | },
651 | "ee-first": {
652 | "version": "1.1.1",
653 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
654 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
655 | },
656 | "encodeurl": {
657 | "version": "1.0.2",
658 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
659 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
660 | },
661 | "escape-html": {
662 | "version": "1.0.3",
663 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
664 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
665 | },
666 | "etag": {
667 | "version": "1.8.1",
668 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
669 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
670 | },
671 | "express": {
672 | "version": "4.17.1",
673 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
674 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
675 | "requires": {
676 | "accepts": "~1.3.7",
677 | "array-flatten": "1.1.1",
678 | "body-parser": "1.19.0",
679 | "content-disposition": "0.5.3",
680 | "content-type": "~1.0.4",
681 | "cookie": "0.4.0",
682 | "cookie-signature": "1.0.6",
683 | "debug": "2.6.9",
684 | "depd": "~1.1.2",
685 | "encodeurl": "~1.0.2",
686 | "escape-html": "~1.0.3",
687 | "etag": "~1.8.1",
688 | "finalhandler": "~1.1.2",
689 | "fresh": "0.5.2",
690 | "merge-descriptors": "1.0.1",
691 | "methods": "~1.1.2",
692 | "on-finished": "~2.3.0",
693 | "parseurl": "~1.3.3",
694 | "path-to-regexp": "0.1.7",
695 | "proxy-addr": "~2.0.5",
696 | "qs": "6.7.0",
697 | "range-parser": "~1.2.1",
698 | "safe-buffer": "5.1.2",
699 | "send": "0.17.1",
700 | "serve-static": "1.14.1",
701 | "setprototypeof": "1.1.1",
702 | "statuses": "~1.5.0",
703 | "type-is": "~1.6.18",
704 | "utils-merge": "1.0.1",
705 | "vary": "~1.1.2"
706 | }
707 | },
708 | "finalhandler": {
709 | "version": "1.1.2",
710 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
711 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
712 | "requires": {
713 | "debug": "2.6.9",
714 | "encodeurl": "~1.0.2",
715 | "escape-html": "~1.0.3",
716 | "on-finished": "~2.3.0",
717 | "parseurl": "~1.3.3",
718 | "statuses": "~1.5.0",
719 | "unpipe": "~1.0.0"
720 | }
721 | },
722 | "forwarded": {
723 | "version": "0.1.2",
724 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
725 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
726 | },
727 | "fresh": {
728 | "version": "0.5.2",
729 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
730 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
731 | },
732 | "http-errors": {
733 | "version": "1.7.2",
734 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
735 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
736 | "requires": {
737 | "depd": "~1.1.2",
738 | "inherits": "2.0.3",
739 | "setprototypeof": "1.1.1",
740 | "statuses": ">= 1.5.0 < 2",
741 | "toidentifier": "1.0.0"
742 | }
743 | },
744 | "iconv-lite": {
745 | "version": "0.4.24",
746 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
747 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
748 | "requires": {
749 | "safer-buffer": ">= 2.1.2 < 3"
750 | }
751 | },
752 | "inherits": {
753 | "version": "2.0.3",
754 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
755 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
756 | },
757 | "ipaddr.js": {
758 | "version": "1.9.1",
759 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
760 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
761 | },
762 | "isarray": {
763 | "version": "1.0.0",
764 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
765 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
766 | },
767 | "media-typer": {
768 | "version": "0.3.0",
769 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
770 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
771 | },
772 | "merge-descriptors": {
773 | "version": "1.0.1",
774 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
775 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
776 | },
777 | "methods": {
778 | "version": "1.1.2",
779 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
780 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
781 | },
782 | "mime": {
783 | "version": "1.6.0",
784 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
785 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
786 | },
787 | "mime-db": {
788 | "version": "1.44.0",
789 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
790 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
791 | },
792 | "mime-types": {
793 | "version": "2.1.27",
794 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
795 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
796 | "requires": {
797 | "mime-db": "1.44.0"
798 | }
799 | },
800 | "ms": {
801 | "version": "2.0.0",
802 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
803 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
804 | },
805 | "mysql": {
806 | "version": "2.18.1",
807 | "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
808 | "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
809 | "requires": {
810 | "bignumber.js": "9.0.0",
811 | "readable-stream": "2.3.7",
812 | "safe-buffer": "5.1.2",
813 | "sqlstring": "2.3.1"
814 | }
815 | },
816 | "negotiator": {
817 | "version": "0.6.2",
818 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
819 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
820 | },
821 | "on-finished": {
822 | "version": "2.3.0",
823 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
824 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
825 | "requires": {
826 | "ee-first": "1.1.1"
827 | }
828 | },
829 | "parseurl": {
830 | "version": "1.3.3",
831 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
832 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
833 | },
834 | "path-to-regexp": {
835 | "version": "0.1.7",
836 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
837 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
838 | },
839 | "process-nextick-args": {
840 | "version": "2.0.1",
841 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
842 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
843 | },
844 | "proxy-addr": {
845 | "version": "2.0.6",
846 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
847 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
848 | "requires": {
849 | "forwarded": "~0.1.2",
850 | "ipaddr.js": "1.9.1"
851 | }
852 | },
853 | "qs": {
854 | "version": "6.7.0",
855 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
856 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
857 | },
858 | "range-parser": {
859 | "version": "1.2.1",
860 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
861 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
862 | },
863 | "raw-body": {
864 | "version": "2.4.0",
865 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
866 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
867 | "requires": {
868 | "bytes": "3.1.0",
869 | "http-errors": "1.7.2",
870 | "iconv-lite": "0.4.24",
871 | "unpipe": "1.0.0"
872 | }
873 | },
874 | "readable-stream": {
875 | "version": "2.3.7",
876 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
877 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
878 | "requires": {
879 | "core-util-is": "~1.0.0",
880 | "inherits": "~2.0.3",
881 | "isarray": "~1.0.0",
882 | "process-nextick-args": "~2.0.0",
883 | "safe-buffer": "~5.1.1",
884 | "string_decoder": "~1.1.1",
885 | "util-deprecate": "~1.0.1"
886 | }
887 | },
888 | "safe-buffer": {
889 | "version": "5.1.2",
890 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
891 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
892 | },
893 | "safer-buffer": {
894 | "version": "2.1.2",
895 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
896 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
897 | },
898 | "send": {
899 | "version": "0.17.1",
900 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
901 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
902 | "requires": {
903 | "debug": "2.6.9",
904 | "depd": "~1.1.2",
905 | "destroy": "~1.0.4",
906 | "encodeurl": "~1.0.2",
907 | "escape-html": "~1.0.3",
908 | "etag": "~1.8.1",
909 | "fresh": "0.5.2",
910 | "http-errors": "~1.7.2",
911 | "mime": "1.6.0",
912 | "ms": "2.1.1",
913 | "on-finished": "~2.3.0",
914 | "range-parser": "~1.2.1",
915 | "statuses": "~1.5.0"
916 | },
917 | "dependencies": {
918 | "ms": {
919 | "version": "2.1.1",
920 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
921 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
922 | }
923 | }
924 | },
925 | "serve-static": {
926 | "version": "1.14.1",
927 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
928 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
929 | "requires": {
930 | "encodeurl": "~1.0.2",
931 | "escape-html": "~1.0.3",
932 | "parseurl": "~1.3.3",
933 | "send": "0.17.1"
934 | }
935 | },
936 | "setprototypeof": {
937 | "version": "1.1.1",
938 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
939 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
940 | },
941 | "sqlstring": {
942 | "version": "2.3.1",
943 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
944 | "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
945 | },
946 | "statuses": {
947 | "version": "1.5.0",
948 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
949 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
950 | },
951 | "string_decoder": {
952 | "version": "1.1.1",
953 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
954 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
955 | "requires": {
956 | "safe-buffer": "~5.1.0"
957 | }
958 | },
959 | "toidentifier": {
960 | "version": "1.0.0",
961 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
962 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
963 | },
964 | "type-is": {
965 | "version": "1.6.18",
966 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
967 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
968 | "requires": {
969 | "media-typer": "0.3.0",
970 | "mime-types": "~2.1.24"
971 | }
972 | },
973 | "unpipe": {
974 | "version": "1.0.0",
975 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
976 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
977 | },
978 | "util-deprecate": {
979 | "version": "1.0.2",
980 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
981 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
982 | },
983 | "utils-merge": {
984 | "version": "1.0.1",
985 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
986 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
987 | },
988 | "vary": {
989 | "version": "1.1.2",
990 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
991 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
992 | }
993 | }
994 | }
995 |
--------------------------------------------------------------------------------