박권수

Merge branch 'server' into web

...@@ -8,6 +8,7 @@ const Mongoose = require('mongoose'); ...@@ -8,6 +8,7 @@ const Mongoose = require('mongoose');
8 const api = require('./src/api'); 8 const api = require('./src/api');
9 const MqttServer = require('./src/util/MqttServer'); 9 const MqttServer = require('./src/util/MqttServer');
10 const BatchSystem = require('./src/util/Batch'); 10 const BatchSystem = require('./src/util/Batch');
11 +const FCM = require('./src/util/FCM');
11 12
12 require('dotenv').config(); 13 require('dotenv').config();
13 // eslint-disable-next-line no-undef 14 // eslint-disable-next-line no-undef
...@@ -37,5 +38,7 @@ app.use(router.routes()).use(router.allowedMethods()); ...@@ -37,5 +38,7 @@ app.use(router.routes()).use(router.allowedMethods());
37 app.listen(SERVER_PORT, () => { 38 app.listen(SERVER_PORT, () => {
38 console.log('\x1b[1;36mPORT : ', SERVER_PORT, 'is connected\x1b[0m'); 39 console.log('\x1b[1;36mPORT : ', SERVER_PORT, 'is connected\x1b[0m');
39 MqttServer.on(); 40 MqttServer.on();
40 - BatchSystem.PushNotifyByDosage(); 41 + FCM.initializeFCM();
42 + BatchSystem.removeQrCode();
43 + BatchSystem.pushNotifyByDosage();
41 }); 44 });
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -11,11 +11,13 @@ ...@@ -11,11 +11,13 @@
11 "dependencies": { 11 "dependencies": {
12 "@google-cloud/storage": "^5.14.2", 12 "@google-cloud/storage": "^5.14.2",
13 "@koa/cors": "^3.1.0", 13 "@koa/cors": "^3.1.0",
14 + "firebase-admin": "^9.11.1",
14 "koa-body": "^4.2.0", 15 "koa-body": "^4.2.0",
15 "moment": "^2.29.1", 16 "moment": "^2.29.1",
16 "moment-timezone": "^0.5.33", 17 "moment-timezone": "^0.5.33",
17 "mqtt": "^4.2.6", 18 "mqtt": "^4.2.6",
18 - "node-cron": "^3.0.0" 19 + "node-cron": "^3.0.0",
20 + "qrcode": "^1.4.4"
19 }, 21 },
20 "devDependencies": { 22 "devDependencies": {
21 "eslint": "^7.32.0" 23 "eslint": "^7.32.0"
...@@ -144,6 +146,70 @@ ...@@ -144,6 +146,70 @@
144 "node": "^10.12.0 || >=12.0.0" 146 "node": "^10.12.0 || >=12.0.0"
145 } 147 }
146 }, 148 },
149 + "node_modules/@firebase/app-types": {
150 + "version": "0.7.0",
151 + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz",
152 + "integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==",
153 + "peer": true
154 + },
155 + "node_modules/@firebase/auth-interop-types": {
156 + "version": "0.1.6",
157 + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz",
158 + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==",
159 + "peerDependencies": {
160 + "@firebase/app-types": "0.x",
161 + "@firebase/util": "1.x"
162 + }
163 + },
164 + "node_modules/@firebase/component": {
165 + "version": "0.5.5",
166 + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.5.tgz",
167 + "integrity": "sha512-L41SdS/4a164jx2iGfakJgaBUPPBI3DI+RrUlmh3oHSUljTeCwfj/Nhcv3S7e2lyXsGFJtAyepfPUx4IQ05crw==",
168 + "dependencies": {
169 + "@firebase/util": "1.2.0",
170 + "tslib": "^2.1.0"
171 + }
172 + },
173 + "node_modules/@firebase/database": {
174 + "version": "0.10.9",
175 + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.10.9.tgz",
176 + "integrity": "sha512-Jxi9SiE4cNOftO9YKlG71ccyWFw4kSM9AG/xYu6vWXUGBr39Uw1TvYougANOcU21Q0TP4J08VPGnOnpXk/FGbQ==",
177 + "dependencies": {
178 + "@firebase/auth-interop-types": "0.1.6",
179 + "@firebase/component": "0.5.5",
180 + "@firebase/database-types": "0.7.3",
181 + "@firebase/logger": "0.2.6",
182 + "@firebase/util": "1.2.0",
183 + "faye-websocket": "0.11.3",
184 + "tslib": "^2.1.0"
185 + }
186 + },
187 + "node_modules/@firebase/database-types": {
188 + "version": "0.7.3",
189 + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.3.tgz",
190 + "integrity": "sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A==",
191 + "dependencies": {
192 + "@firebase/app-types": "0.6.3"
193 + }
194 + },
195 + "node_modules/@firebase/database-types/node_modules/@firebase/app-types": {
196 + "version": "0.6.3",
197 + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz",
198 + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw=="
199 + },
200 + "node_modules/@firebase/logger": {
201 + "version": "0.2.6",
202 + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz",
203 + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
204 + },
205 + "node_modules/@firebase/util": {
206 + "version": "1.2.0",
207 + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.2.0.tgz",
208 + "integrity": "sha512-8W9TTGImXr9cu+oyjBJ7yjoEd/IVAv0pBZA4c1uIuKrpGZi2ee38m+8xlZOBRmsAaOU/tR9DXz1WF/oeM6Fb7Q==",
209 + "dependencies": {
210 + "tslib": "^2.1.0"
211 + }
212 + },
147 "node_modules/@google-cloud/common": { 213 "node_modules/@google-cloud/common": {
148 "version": "3.7.2", 214 "version": "3.7.2",
149 "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.2.tgz", 215 "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.2.tgz",
...@@ -174,6 +240,21 @@ ...@@ -174,6 +240,21 @@
174 "stream-shift": "^1.0.0" 240 "stream-shift": "^1.0.0"
175 } 241 }
176 }, 242 },
243 + "node_modules/@google-cloud/firestore": {
244 + "version": "4.15.1",
245 + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.15.1.tgz",
246 + "integrity": "sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA==",
247 + "optional": true,
248 + "dependencies": {
249 + "fast-deep-equal": "^3.1.1",
250 + "functional-red-black-tree": "^1.0.1",
251 + "google-gax": "^2.24.1",
252 + "protobufjs": "^6.8.6"
253 + },
254 + "engines": {
255 + "node": ">=10.10.0"
256 + }
257 + },
177 "node_modules/@google-cloud/paginator": { 258 "node_modules/@google-cloud/paginator": {
178 "version": "3.0.6", 259 "version": "3.0.6",
179 "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.6.tgz", 260 "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.6.tgz",
...@@ -252,6 +333,37 @@ ...@@ -252,6 +333,37 @@
252 "pump": "^3.0.0" 333 "pump": "^3.0.0"
253 } 334 }
254 }, 335 },
336 + "node_modules/@grpc/grpc-js": {
337 + "version": "1.3.7",
338 + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.3.7.tgz",
339 + "integrity": "sha512-CKQVuwuSPh40tgOkR7c0ZisxYRiN05PcKPW72mQL5y++qd7CwBRoaJZvU5xfXnCJDFBmS3qZGQ71Frx6Ofo2XA==",
340 + "optional": true,
341 + "dependencies": {
342 + "@types/node": ">=12.12.47"
343 + },
344 + "engines": {
345 + "node": "^8.13.0 || >=10.10.0"
346 + }
347 + },
348 + "node_modules/@grpc/proto-loader": {
349 + "version": "0.6.5",
350 + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.5.tgz",
351 + "integrity": "sha512-GZdzyVQI1Bln/kCzIYgTKu+rQJ5dno0gVrfmLe4jqQu7T2e7svSwJzpCBqVU5hhBSJP3peuPjOMWsj5GR61YmQ==",
352 + "optional": true,
353 + "dependencies": {
354 + "@types/long": "^4.0.1",
355 + "lodash.camelcase": "^4.3.0",
356 + "long": "^4.0.0",
357 + "protobufjs": "^6.10.0",
358 + "yargs": "^16.1.1"
359 + },
360 + "bin": {
361 + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
362 + },
363 + "engines": {
364 + "node": ">=6"
365 + }
366 + },
255 "node_modules/@humanwhocodes/config-array": { 367 "node_modules/@humanwhocodes/config-array": {
256 "version": "0.5.0", 368 "version": "0.5.0",
257 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 369 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
...@@ -283,6 +395,78 @@ ...@@ -283,6 +395,78 @@
283 "node": ">= 8.0.0" 395 "node": ">= 8.0.0"
284 } 396 }
285 }, 397 },
398 + "node_modules/@panva/asn1.js": {
399 + "version": "1.0.0",
400 + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz",
401 + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==",
402 + "engines": {
403 + "node": ">=10.13.0"
404 + }
405 + },
406 + "node_modules/@protobufjs/aspromise": {
407 + "version": "1.1.2",
408 + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
409 + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=",
410 + "optional": true
411 + },
412 + "node_modules/@protobufjs/base64": {
413 + "version": "1.1.2",
414 + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
415 + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
416 + "optional": true
417 + },
418 + "node_modules/@protobufjs/codegen": {
419 + "version": "2.0.4",
420 + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
421 + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
422 + "optional": true
423 + },
424 + "node_modules/@protobufjs/eventemitter": {
425 + "version": "1.1.0",
426 + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
427 + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=",
428 + "optional": true
429 + },
430 + "node_modules/@protobufjs/fetch": {
431 + "version": "1.1.0",
432 + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
433 + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
434 + "optional": true,
435 + "dependencies": {
436 + "@protobufjs/aspromise": "^1.1.1",
437 + "@protobufjs/inquire": "^1.1.0"
438 + }
439 + },
440 + "node_modules/@protobufjs/float": {
441 + "version": "1.0.2",
442 + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
443 + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=",
444 + "optional": true
445 + },
446 + "node_modules/@protobufjs/inquire": {
447 + "version": "1.1.0",
448 + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
449 + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=",
450 + "optional": true
451 + },
452 + "node_modules/@protobufjs/path": {
453 + "version": "1.1.2",
454 + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
455 + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=",
456 + "optional": true
457 + },
458 + "node_modules/@protobufjs/pool": {
459 + "version": "1.1.0",
460 + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
461 + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=",
462 + "optional": true
463 + },
464 + "node_modules/@protobufjs/utf8": {
465 + "version": "1.1.0",
466 + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
467 + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=",
468 + "optional": true
469 + },
286 "node_modules/@tootallnate/once": { 470 "node_modules/@tootallnate/once": {
287 "version": "1.1.2", 471 "version": "1.1.2",
288 "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 472 "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
...@@ -291,6 +475,61 @@ ...@@ -291,6 +475,61 @@
291 "node": ">= 6" 475 "node": ">= 6"
292 } 476 }
293 }, 477 },
478 + "node_modules/@types/body-parser": {
479 + "version": "1.19.1",
480 + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz",
481 + "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==",
482 + "dependencies": {
483 + "@types/connect": "*",
484 + "@types/node": "*"
485 + }
486 + },
487 + "node_modules/@types/connect": {
488 + "version": "3.4.35",
489 + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
490 + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
491 + "dependencies": {
492 + "@types/node": "*"
493 + }
494 + },
495 + "node_modules/@types/express": {
496 + "version": "4.17.13",
497 + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz",
498 + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
499 + "dependencies": {
500 + "@types/body-parser": "*",
501 + "@types/express-serve-static-core": "^4.17.18",
502 + "@types/qs": "*",
503 + "@types/serve-static": "*"
504 + }
505 + },
506 + "node_modules/@types/express-jwt": {
507 + "version": "0.0.42",
508 + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz",
509 + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==",
510 + "dependencies": {
511 + "@types/express": "*",
512 + "@types/express-unless": "*"
513 + }
514 + },
515 + "node_modules/@types/express-serve-static-core": {
516 + "version": "4.17.24",
517 + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz",
518 + "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==",
519 + "dependencies": {
520 + "@types/node": "*",
521 + "@types/qs": "*",
522 + "@types/range-parser": "*"
523 + }
524 + },
525 + "node_modules/@types/express-unless": {
526 + "version": "0.5.2",
527 + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.2.tgz",
528 + "integrity": "sha512-Q74UyYRX/zIgl1HSp9tUX2PlG8glkVm+59r7aK4KGKzC5jqKIOX6rrVLRQrzpZUQ84VukHtRoeAuon2nIssHPQ==",
529 + "dependencies": {
530 + "@types/express": "*"
531 + }
532 + },
294 "node_modules/@types/formidable": { 533 "node_modules/@types/formidable": {
295 "version": "1.2.4", 534 "version": "1.2.4",
296 "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.4.tgz", 535 "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.4.tgz",
...@@ -299,11 +538,41 @@ ...@@ -299,11 +538,41 @@
299 "@types/node": "*" 538 "@types/node": "*"
300 } 539 }
301 }, 540 },
541 + "node_modules/@types/long": {
542 + "version": "4.0.1",
543 + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
544 + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==",
545 + "optional": true
546 + },
547 + "node_modules/@types/mime": {
548 + "version": "1.3.2",
549 + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
550 + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
551 + },
302 "node_modules/@types/node": { 552 "node_modules/@types/node": {
303 "version": "16.9.2", 553 "version": "16.9.2",
304 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.2.tgz", 554 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.2.tgz",
305 "integrity": "sha512-ZHty/hKoOLZvSz6BtP1g7tc7nUeJhoCf3flLjh8ZEv1vFKBWHXcnMbJMyN/pftSljNyy0kNW/UqI3DccnBnZ8w==" 555 "integrity": "sha512-ZHty/hKoOLZvSz6BtP1g7tc7nUeJhoCf3flLjh8ZEv1vFKBWHXcnMbJMyN/pftSljNyy0kNW/UqI3DccnBnZ8w=="
306 }, 556 },
557 + "node_modules/@types/qs": {
558 + "version": "6.9.7",
559 + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
560 + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
561 + },
562 + "node_modules/@types/range-parser": {
563 + "version": "1.2.4",
564 + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
565 + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
566 + },
567 + "node_modules/@types/serve-static": {
568 + "version": "1.13.10",
569 + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz",
570 + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
571 + "dependencies": {
572 + "@types/mime": "^1",
573 + "@types/node": "*"
574 + }
575 + },
307 "node_modules/abort-controller": { 576 "node_modules/abort-controller": {
308 "version": "3.0.0", 577 "version": "3.0.0",
309 "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 578 "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
...@@ -504,11 +773,30 @@ ...@@ -504,11 +773,30 @@
504 "ieee754": "^1.1.13" 773 "ieee754": "^1.1.13"
505 } 774 }
506 }, 775 },
776 + "node_modules/buffer-alloc": {
777 + "version": "1.2.0",
778 + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
779 + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
780 + "dependencies": {
781 + "buffer-alloc-unsafe": "^1.1.0",
782 + "buffer-fill": "^1.0.0"
783 + }
784 + },
785 + "node_modules/buffer-alloc-unsafe": {
786 + "version": "1.1.0",
787 + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
788 + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
789 + },
507 "node_modules/buffer-equal-constant-time": { 790 "node_modules/buffer-equal-constant-time": {
508 "version": "1.0.1", 791 "version": "1.0.1",
509 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 792 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
510 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 793 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
511 }, 794 },
795 + "node_modules/buffer-fill": {
796 + "version": "1.0.0",
797 + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
798 + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
799 + },
512 "node_modules/buffer-from": { 800 "node_modules/buffer-from": {
513 "version": "1.1.1", 801 "version": "1.1.1",
514 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 802 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
...@@ -579,6 +867,14 @@ ...@@ -579,6 +867,14 @@
579 "node": ">=6" 867 "node": ">=6"
580 } 868 }
581 }, 869 },
870 + "node_modules/camelcase": {
871 + "version": "5.3.1",
872 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
873 + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
874 + "engines": {
875 + "node": ">=6"
876 + }
877 + },
582 "node_modules/chalk": { 878 "node_modules/chalk": {
583 "version": "4.1.2", 879 "version": "4.1.2",
584 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 880 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
...@@ -595,6 +891,17 @@ ...@@ -595,6 +891,17 @@
595 "url": "https://github.com/chalk/chalk?sponsor=1" 891 "url": "https://github.com/chalk/chalk?sponsor=1"
596 } 892 }
597 }, 893 },
894 + "node_modules/cliui": {
895 + "version": "7.0.4",
896 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
897 + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
898 + "optional": true,
899 + "dependencies": {
900 + "string-width": "^4.2.0",
901 + "strip-ansi": "^6.0.0",
902 + "wrap-ansi": "^7.0.0"
903 + }
904 + },
598 "node_modules/co-body": { 905 "node_modules/co-body": {
599 "version": "5.2.0", 906 "version": "5.2.0",
600 "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", 907 "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz",
...@@ -727,6 +1034,14 @@ ...@@ -727,6 +1034,14 @@
727 } 1034 }
728 } 1035 }
729 }, 1036 },
1037 + "node_modules/decamelize": {
1038 + "version": "1.2.0",
1039 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
1040 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
1041 + "engines": {
1042 + "node": ">=0.10.0"
1043 + }
1044 + },
730 "node_modules/deep-is": { 1045 "node_modules/deep-is": {
731 "version": "0.1.3", 1046 "version": "0.1.3",
732 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1047 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
...@@ -741,6 +1056,22 @@ ...@@ -741,6 +1056,22 @@
741 "node": ">= 0.6" 1056 "node": ">= 0.6"
742 } 1057 }
743 }, 1058 },
1059 + "node_modules/dicer": {
1060 + "version": "0.3.0",
1061 + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
1062 + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
1063 + "dependencies": {
1064 + "streamsearch": "0.1.2"
1065 + },
1066 + "engines": {
1067 + "node": ">=4.5.0"
1068 + }
1069 + },
1070 + "node_modules/dijkstrajs": {
1071 + "version": "1.0.2",
1072 + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
1073 + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
1074 + },
744 "node_modules/doctrine": { 1075 "node_modules/doctrine": {
745 "version": "3.0.0", 1076 "version": "3.0.0",
746 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1077 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
...@@ -841,6 +1172,15 @@ ...@@ -841,6 +1172,15 @@
841 "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 1172 "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
842 "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" 1173 "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
843 }, 1174 },
1175 + "node_modules/escalade": {
1176 + "version": "3.1.1",
1177 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1178 + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1179 + "optional": true,
1180 + "engines": {
1181 + "node": ">=6"
1182 + }
1183 + },
844 "node_modules/escape-string-regexp": { 1184 "node_modules/escape-string-regexp": {
845 "version": "4.0.0", 1185 "version": "4.0.0",
846 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1186 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
...@@ -1112,6 +1452,17 @@ ...@@ -1112,6 +1452,17 @@
1112 "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", 1452 "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
1113 "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" 1453 "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
1114 }, 1454 },
1455 + "node_modules/faye-websocket": {
1456 + "version": "0.11.3",
1457 + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
1458 + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
1459 + "dependencies": {
1460 + "websocket-driver": ">=0.5.1"
1461 + },
1462 + "engines": {
1463 + "node": ">=0.8.0"
1464 + }
1465 + },
1115 "node_modules/file-entry-cache": { 1466 "node_modules/file-entry-cache": {
1116 "version": "6.0.1", 1467 "version": "6.0.1",
1117 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1468 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
...@@ -1124,6 +1475,17 @@ ...@@ -1124,6 +1475,17 @@
1124 "node": "^10.12.0 || >=12.0.0" 1475 "node": "^10.12.0 || >=12.0.0"
1125 } 1476 }
1126 }, 1477 },
1478 + "node_modules/find-up": {
1479 + "version": "3.0.0",
1480 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
1481 + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
1482 + "dependencies": {
1483 + "locate-path": "^3.0.0"
1484 + },
1485 + "engines": {
1486 + "node": ">=6"
1487 + }
1488 + },
1127 "node_modules/firebase-admin": { 1489 "node_modules/firebase-admin": {
1128 "version": "9.11.1", 1490 "version": "9.11.1",
1129 "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.11.1.tgz", 1491 "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.11.1.tgz",
...@@ -1350,6 +1712,14 @@ ...@@ -1350,6 +1712,14 @@
1350 "pump": "^3.0.0" 1712 "pump": "^3.0.0"
1351 } 1713 }
1352 }, 1714 },
1715 + "node_modules/get-caller-file": {
1716 + "version": "2.0.5",
1717 + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1718 + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1719 + "engines": {
1720 + "node": "6.* || 8.* || >= 10.*"
1721 + }
1722 + },
1353 "node_modules/get-intrinsic": { 1723 "node_modules/get-intrinsic": {
1354 "version": "1.1.1", 1724 "version": "1.1.1",
1355 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1725 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
...@@ -1483,6 +1853,45 @@ ...@@ -1483,6 +1853,45 @@
1483 "node": ">=10" 1853 "node": ">=10"
1484 } 1854 }
1485 }, 1855 },
1856 + "node_modules/google-gax": {
1857 + "version": "2.25.4",
1858 + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.25.4.tgz",
1859 + "integrity": "sha512-+Jd0FFOWyb8ieX53e6Sl5OYvHXoA1sWKfQ24ykR502NKgBTvPAh/RFcITihGePBJZ1E8pfh4MKWU0Sf+f1CK+A==",
1860 + "optional": true,
1861 + "dependencies": {
1862 + "@grpc/grpc-js": "~1.3.0",
1863 + "@grpc/proto-loader": "^0.6.1",
1864 + "@types/long": "^4.0.0",
1865 + "abort-controller": "^3.0.0",
1866 + "duplexify": "^4.0.0",
1867 + "fast-text-encoding": "^1.0.3",
1868 + "google-auth-library": "^7.6.1",
1869 + "is-stream-ended": "^0.1.4",
1870 + "node-fetch": "^2.6.1",
1871 + "object-hash": "^2.1.1",
1872 + "proto3-json-serializer": "^0.1.1",
1873 + "protobufjs": "6.11.2",
1874 + "retry-request": "^4.0.0"
1875 + },
1876 + "bin": {
1877 + "compileProtos": "build/tools/compileProtos.js"
1878 + },
1879 + "engines": {
1880 + "node": ">=10"
1881 + }
1882 + },
1883 + "node_modules/google-gax/node_modules/duplexify": {
1884 + "version": "4.1.2",
1885 + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
1886 + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
1887 + "optional": true,
1888 + "dependencies": {
1889 + "end-of-stream": "^1.4.1",
1890 + "inherits": "^2.0.3",
1891 + "readable-stream": "^3.1.1",
1892 + "stream-shift": "^1.0.0"
1893 + }
1894 + },
1486 "node_modules/google-p12-pem": { 1895 "node_modules/google-p12-pem": {
1487 "version": "3.1.2", 1896 "version": "3.1.2",
1488 "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", 1897 "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz",
...@@ -1577,6 +1986,11 @@ ...@@ -1577,6 +1986,11 @@
1577 "node": ">= 0.6" 1986 "node": ">= 0.6"
1578 } 1987 }
1579 }, 1988 },
1989 + "node_modules/http-parser-js": {
1990 + "version": "0.5.3",
1991 + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
1992 + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg=="
1993 + },
1580 "node_modules/http-proxy-agent": { 1994 "node_modules/http-proxy-agent": {
1581 "version": "4.0.1", 1995 "version": "4.0.1",
1582 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 1996 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
...@@ -1765,6 +2179,12 @@ ...@@ -1765,6 +2179,12 @@
1765 "url": "https://github.com/sponsors/sindresorhus" 2179 "url": "https://github.com/sponsors/sindresorhus"
1766 } 2180 }
1767 }, 2181 },
2182 + "node_modules/is-stream-ended": {
2183 + "version": "0.1.4",
2184 + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
2185 + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
2186 + "optional": true
2187 + },
1768 "node_modules/is-typedarray": { 2188 "node_modules/is-typedarray": {
1769 "version": "1.0.0", 2189 "version": "1.0.0",
1770 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2190 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
...@@ -1852,6 +2272,54 @@ ...@@ -1852,6 +2272,54 @@
1852 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2272 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1853 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" 2273 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
1854 }, 2274 },
2275 + "node_modules/jsonwebtoken": {
2276 + "version": "8.5.1",
2277 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
2278 + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
2279 + "dependencies": {
2280 + "jws": "^3.2.2",
2281 + "lodash.includes": "^4.3.0",
2282 + "lodash.isboolean": "^3.0.3",
2283 + "lodash.isinteger": "^4.0.4",
2284 + "lodash.isnumber": "^3.0.3",
2285 + "lodash.isplainobject": "^4.0.6",
2286 + "lodash.isstring": "^4.0.1",
2287 + "lodash.once": "^4.0.0",
2288 + "ms": "^2.1.1",
2289 + "semver": "^5.6.0"
2290 + },
2291 + "engines": {
2292 + "node": ">=4",
2293 + "npm": ">=1.4.28"
2294 + }
2295 + },
2296 + "node_modules/jsonwebtoken/node_modules/jwa": {
2297 + "version": "1.4.1",
2298 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
2299 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
2300 + "dependencies": {
2301 + "buffer-equal-constant-time": "1.0.1",
2302 + "ecdsa-sig-formatter": "1.0.11",
2303 + "safe-buffer": "^5.0.1"
2304 + }
2305 + },
2306 + "node_modules/jsonwebtoken/node_modules/jws": {
2307 + "version": "3.2.2",
2308 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
2309 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
2310 + "dependencies": {
2311 + "jwa": "^1.4.1",
2312 + "safe-buffer": "^5.0.1"
2313 + }
2314 + },
2315 + "node_modules/jsonwebtoken/node_modules/semver": {
2316 + "version": "5.7.1",
2317 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2318 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
2319 + "bin": {
2320 + "semver": "bin/semver"
2321 + }
2322 + },
1855 "node_modules/jwa": { 2323 "node_modules/jwa": {
1856 "version": "2.0.0", 2324 "version": "2.0.0",
1857 "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", 2325 "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
...@@ -1862,6 +2330,21 @@ ...@@ -1862,6 +2330,21 @@
1862 "safe-buffer": "^5.0.1" 2330 "safe-buffer": "^5.0.1"
1863 } 2331 }
1864 }, 2332 },
2333 + "node_modules/jwks-rsa": {
2334 + "version": "2.0.4",
2335 + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.0.4.tgz",
2336 + "integrity": "sha512-iJqVCECYZZ+3oPmY1qXv3Fq+3ywDtuNEVBvG41pPlaR0zyGxa12nC0beAOBBUhETJmc05puS50mRQN4NkCGhmg==",
2337 + "dependencies": {
2338 + "@types/express-jwt": "0.0.42",
2339 + "debug": "^4.3.2",
2340 + "jose": "^2.0.5",
2341 + "limiter": "^1.1.5",
2342 + "lru-memoizer": "^2.1.4"
2343 + },
2344 + "engines": {
2345 + "node": ">=10 < 13 || >=14"
2346 + }
2347 + },
1865 "node_modules/jws": { 2348 "node_modules/jws": {
1866 "version": "4.0.0", 2349 "version": "4.0.0",
1867 "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", 2350 "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
...@@ -1907,6 +2390,18 @@ ...@@ -1907,6 +2390,18 @@
1907 "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", 2390 "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
1908 "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" 2391 "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
1909 }, 2392 },
2393 + "node_modules/locate-path": {
2394 + "version": "3.0.0",
2395 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
2396 + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
2397 + "dependencies": {
2398 + "p-locate": "^3.0.0",
2399 + "path-exists": "^3.0.0"
2400 + },
2401 + "engines": {
2402 + "node": ">=6"
2403 + }
2404 + },
1910 "node_modules/lodash.camelcase": { 2405 "node_modules/lodash.camelcase": {
1911 "version": "4.3.0", 2406 "version": "4.3.0",
1912 "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 2407 "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
...@@ -2010,7 +2505,6 @@ ...@@ -2010,7 +2505,6 @@
2010 "version": "3.1.0", 2505 "version": "3.1.0",
2011 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 2506 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
2012 "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 2507 "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
2013 - "optional": true,
2014 "dependencies": { 2508 "dependencies": {
2015 "semver": "^6.0.0" 2509 "semver": "^6.0.0"
2016 }, 2510 },
...@@ -2025,16 +2519,22 @@ ...@@ -2025,16 +2519,22 @@
2025 "version": "6.3.0", 2519 "version": "6.3.0",
2026 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2520 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2027 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2521 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2028 - "optional": true,
2029 "bin": { 2522 "bin": {
2030 "semver": "bin/semver.js" 2523 "semver": "bin/semver.js"
2031 } 2524 }
2032 }, 2525 },
2526 + "node_modules/media-typer": {
2527 + "version": "0.3.0",
2528 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2529 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
2530 + "engines": {
2531 + "node": ">= 0.6"
2532 + }
2533 + },
2033 "node_modules/mime": { 2534 "node_modules/mime": {
2034 "version": "2.5.2", 2535 "version": "2.5.2",
2035 "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", 2536 "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
2036 "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", 2537 "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
2037 - "optional": true,
2038 "bin": { 2538 "bin": {
2039 "mime": "cli.js" 2539 "mime": "cli.js"
2040 }, 2540 },
...@@ -2046,75 +2546,14 @@ ...@@ -2046,75 +2546,14 @@
2046 "version": "1.49.0", 2546 "version": "1.49.0",
2047 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", 2547 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
2048 "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", 2548 "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
2049 - "optional": true,
2050 "engines": { 2549 "engines": {
2051 "node": ">= 0.6" 2550 "node": ">= 0.6"
2052 } 2551 }
2053 }, 2552 },
2054 - "node_modules/lru-cache": { 2553 + "node_modules/mime-types": {
2055 - "version": "6.0.0", 2554 + "version": "2.1.32",
2056 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2555 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
2057 - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2556 + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
2058 - "dependencies": {
2059 - "mime-db": "1.49.0"
2060 - },
2061 - "engines": {
2062 - "node": ">= 0.6"
2063 - }
2064 - },
2065 - "node_modules/make-dir": {
2066 - "version": "3.1.0",
2067 - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
2068 - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
2069 - "dependencies": {
2070 - "semver": "^6.0.0"
2071 - },
2072 - "engines": {
2073 - "node": ">=8"
2074 - },
2075 - "funding": {
2076 - "url": "https://github.com/sponsors/sindresorhus"
2077 - }
2078 - },
2079 - "node_modules/make-dir/node_modules/semver": {
2080 - "version": "6.3.0",
2081 - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2082 - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2083 - "bin": {
2084 - "semver": "bin/semver.js"
2085 - }
2086 - },
2087 - "node_modules/media-typer": {
2088 - "version": "0.3.0",
2089 - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2090 - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
2091 - "engines": {
2092 - "node": ">= 0.6"
2093 - }
2094 - },
2095 - "node_modules/mime": {
2096 - "version": "2.5.2",
2097 - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
2098 - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
2099 - "bin": {
2100 - "mime": "cli.js"
2101 - },
2102 - "engines": {
2103 - "node": ">=4.0.0"
2104 - }
2105 - },
2106 - "node_modules/mime-db": {
2107 - "version": "1.49.0",
2108 - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
2109 - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
2110 - "engines": {
2111 - "node": ">= 0.6"
2112 - }
2113 - },
2114 - "node_modules/mime-types": {
2115 - "version": "2.1.32",
2116 - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
2117 - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
2118 "dependencies": { 2557 "dependencies": {
2119 "mime-db": "1.49.0" 2558 "mime-db": "1.49.0"
2120 }, 2559 },
...@@ -2233,6 +2672,15 @@ ...@@ -2233,6 +2672,15 @@
2233 "node": ">= 6.0.0" 2672 "node": ">= 6.0.0"
2234 } 2673 }
2235 }, 2674 },
2675 + "node_modules/object-hash": {
2676 + "version": "2.2.0",
2677 + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
2678 + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
2679 + "optional": true,
2680 + "engines": {
2681 + "node": ">= 6"
2682 + }
2683 + },
2236 "node_modules/object-inspect": { 2684 "node_modules/object-inspect": {
2237 "version": "1.11.0", 2685 "version": "1.11.0",
2238 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", 2686 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
...@@ -2315,6 +2763,39 @@ ...@@ -2315,6 +2763,39 @@
2315 "url": "https://github.com/sponsors/sindresorhus" 2763 "url": "https://github.com/sponsors/sindresorhus"
2316 } 2764 }
2317 }, 2765 },
2766 + "node_modules/p-locate": {
2767 + "version": "3.0.0",
2768 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
2769 + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
2770 + "dependencies": {
2771 + "p-limit": "^2.0.0"
2772 + },
2773 + "engines": {
2774 + "node": ">=6"
2775 + }
2776 + },
2777 + "node_modules/p-locate/node_modules/p-limit": {
2778 + "version": "2.3.0",
2779 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
2780 + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
2781 + "dependencies": {
2782 + "p-try": "^2.0.0"
2783 + },
2784 + "engines": {
2785 + "node": ">=6"
2786 + },
2787 + "funding": {
2788 + "url": "https://github.com/sponsors/sindresorhus"
2789 + }
2790 + },
2791 + "node_modules/p-try": {
2792 + "version": "2.2.0",
2793 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
2794 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
2795 + "engines": {
2796 + "node": ">=6"
2797 + }
2798 + },
2318 "node_modules/parent-module": { 2799 "node_modules/parent-module": {
2319 "version": "1.0.1", 2800 "version": "1.0.1",
2320 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2801 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
...@@ -2332,6 +2813,14 @@ ...@@ -2332,6 +2813,14 @@
2332 "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2813 "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
2333 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" 2814 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
2334 }, 2815 },
2816 + "node_modules/path-exists": {
2817 + "version": "3.0.0",
2818 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2819 + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2820 + "engines": {
2821 + "node": ">=4"
2822 + }
2823 + },
2335 "node_modules/path-is-absolute": { 2824 "node_modules/path-is-absolute": {
2336 "version": "1.0.1", 2825 "version": "1.0.1",
2337 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2826 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
...@@ -2349,6 +2838,14 @@ ...@@ -2349,6 +2838,14 @@
2349 "node": ">=8" 2838 "node": ">=8"
2350 } 2839 }
2351 }, 2840 },
2841 + "node_modules/pngjs": {
2842 + "version": "3.4.0",
2843 + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
2844 + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
2845 + "engines": {
2846 + "node": ">=4.0.0"
2847 + }
2848 + },
2352 "node_modules/prelude-ls": { 2849 "node_modules/prelude-ls": {
2353 "version": "1.2.1", 2850 "version": "1.2.1",
2354 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2851 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
...@@ -2446,6 +2943,154 @@ ...@@ -2446,6 +2943,154 @@
2446 "node": ">=6" 2943 "node": ">=6"
2447 } 2944 }
2448 }, 2945 },
2946 + "node_modules/qrcode": {
2947 + "version": "1.4.4",
2948 + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
2949 + "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
2950 + "dependencies": {
2951 + "buffer": "^5.4.3",
2952 + "buffer-alloc": "^1.2.0",
2953 + "buffer-from": "^1.1.1",
2954 + "dijkstrajs": "^1.0.1",
2955 + "isarray": "^2.0.1",
2956 + "pngjs": "^3.3.0",
2957 + "yargs": "^13.2.4"
2958 + },
2959 + "bin": {
2960 + "qrcode": "bin/qrcode"
2961 + },
2962 + "engines": {
2963 + "node": ">=4"
2964 + }
2965 + },
2966 + "node_modules/qrcode/node_modules/ansi-regex": {
2967 + "version": "4.1.0",
2968 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2969 + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2970 + "engines": {
2971 + "node": ">=6"
2972 + }
2973 + },
2974 + "node_modules/qrcode/node_modules/ansi-styles": {
2975 + "version": "3.2.1",
2976 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2977 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2978 + "dependencies": {
2979 + "color-convert": "^1.9.0"
2980 + },
2981 + "engines": {
2982 + "node": ">=4"
2983 + }
2984 + },
2985 + "node_modules/qrcode/node_modules/cliui": {
2986 + "version": "5.0.0",
2987 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
2988 + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
2989 + "dependencies": {
2990 + "string-width": "^3.1.0",
2991 + "strip-ansi": "^5.2.0",
2992 + "wrap-ansi": "^5.1.0"
2993 + }
2994 + },
2995 + "node_modules/qrcode/node_modules/color-convert": {
2996 + "version": "1.9.3",
2997 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2998 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2999 + "dependencies": {
3000 + "color-name": "1.1.3"
3001 + }
3002 + },
3003 + "node_modules/qrcode/node_modules/color-name": {
3004 + "version": "1.1.3",
3005 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
3006 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
3007 + },
3008 + "node_modules/qrcode/node_modules/emoji-regex": {
3009 + "version": "7.0.3",
3010 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
3011 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
3012 + },
3013 + "node_modules/qrcode/node_modules/is-fullwidth-code-point": {
3014 + "version": "2.0.0",
3015 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3016 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3017 + "engines": {
3018 + "node": ">=4"
3019 + }
3020 + },
3021 + "node_modules/qrcode/node_modules/isarray": {
3022 + "version": "2.0.5",
3023 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
3024 + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
3025 + },
3026 + "node_modules/qrcode/node_modules/string-width": {
3027 + "version": "3.1.0",
3028 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
3029 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
3030 + "dependencies": {
3031 + "emoji-regex": "^7.0.1",
3032 + "is-fullwidth-code-point": "^2.0.0",
3033 + "strip-ansi": "^5.1.0"
3034 + },
3035 + "engines": {
3036 + "node": ">=6"
3037 + }
3038 + },
3039 + "node_modules/qrcode/node_modules/strip-ansi": {
3040 + "version": "5.2.0",
3041 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
3042 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
3043 + "dependencies": {
3044 + "ansi-regex": "^4.1.0"
3045 + },
3046 + "engines": {
3047 + "node": ">=6"
3048 + }
3049 + },
3050 + "node_modules/qrcode/node_modules/wrap-ansi": {
3051 + "version": "5.1.0",
3052 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
3053 + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
3054 + "dependencies": {
3055 + "ansi-styles": "^3.2.0",
3056 + "string-width": "^3.0.0",
3057 + "strip-ansi": "^5.0.0"
3058 + },
3059 + "engines": {
3060 + "node": ">=6"
3061 + }
3062 + },
3063 + "node_modules/qrcode/node_modules/y18n": {
3064 + "version": "4.0.3",
3065 + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
3066 + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
3067 + },
3068 + "node_modules/qrcode/node_modules/yargs": {
3069 + "version": "13.3.2",
3070 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
3071 + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
3072 + "dependencies": {
3073 + "cliui": "^5.0.0",
3074 + "find-up": "^3.0.0",
3075 + "get-caller-file": "^2.0.1",
3076 + "require-directory": "^2.1.1",
3077 + "require-main-filename": "^2.0.0",
3078 + "set-blocking": "^2.0.0",
3079 + "string-width": "^3.0.0",
3080 + "which-module": "^2.0.0",
3081 + "y18n": "^4.0.0",
3082 + "yargs-parser": "^13.1.2"
3083 + }
3084 + },
3085 + "node_modules/qrcode/node_modules/yargs-parser": {
3086 + "version": "13.1.2",
3087 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
3088 + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
3089 + "dependencies": {
3090 + "camelcase": "^5.0.0",
3091 + "decamelize": "^1.2.0"
3092 + }
3093 + },
2449 "node_modules/qs": { 3094 "node_modules/qs": {
2450 "version": "6.10.1", 3095 "version": "6.10.1",
2451 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", 3096 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
...@@ -2513,7 +3158,6 @@ ...@@ -2513,7 +3158,6 @@
2513 "version": "2.1.1", 3158 "version": "2.1.1",
2514 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3159 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2515 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3160 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
2516 - "optional": true,
2517 "engines": { 3161 "engines": {
2518 "node": ">=0.10.0" 3162 "node": ">=0.10.0"
2519 } 3163 }
...@@ -2527,6 +3171,11 @@ ...@@ -2527,6 +3171,11 @@
2527 "node": ">=0.10.0" 3171 "node": ">=0.10.0"
2528 } 3172 }
2529 }, 3173 },
3174 + "node_modules/require-main-filename": {
3175 + "version": "2.0.0",
3176 + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
3177 + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
3178 + },
2530 "node_modules/resolve-from": { 3179 "node_modules/resolve-from": {
2531 "version": "4.0.0", 3180 "version": "4.0.0",
2532 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3181 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
...@@ -2610,6 +3259,11 @@ ...@@ -2610,6 +3259,11 @@
2610 "node": ">=10" 3259 "node": ">=10"
2611 } 3260 }
2612 }, 3261 },
3262 + "node_modules/set-blocking": {
3263 + "version": "2.0.0",
3264 + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
3265 + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
3266 + },
2613 "node_modules/setprototypeof": { 3267 "node_modules/setprototypeof": {
2614 "version": "1.1.1", 3268 "version": "1.1.1",
2615 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 3269 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
...@@ -2907,6 +3561,11 @@ ...@@ -2907,6 +3561,11 @@
2907 "node": ">=0.6" 3561 "node": ">=0.6"
2908 } 3562 }
2909 }, 3563 },
3564 + "node_modules/tslib": {
3565 + "version": "2.3.1",
3566 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
3567 + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
3568 + },
2910 "node_modules/type-check": { 3569 "node_modules/type-check": {
2911 "version": "0.4.0", 3570 "version": "0.4.0",
2912 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3571 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
...@@ -3028,6 +3687,27 @@ ...@@ -3028,6 +3687,27 @@
3028 "node": ">= 0.8" 3687 "node": ">= 0.8"
3029 } 3688 }
3030 }, 3689 },
3690 + "node_modules/websocket-driver": {
3691 + "version": "0.7.4",
3692 + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
3693 + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
3694 + "dependencies": {
3695 + "http-parser-js": ">=0.5.1",
3696 + "safe-buffer": ">=5.1.0",
3697 + "websocket-extensions": ">=0.1.1"
3698 + },
3699 + "engines": {
3700 + "node": ">=0.8.0"
3701 + }
3702 + },
3703 + "node_modules/websocket-extensions": {
3704 + "version": "0.1.4",
3705 + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
3706 + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
3707 + "engines": {
3708 + "node": ">=0.8.0"
3709 + }
3710 + },
3031 "node_modules/which": { 3711 "node_modules/which": {
3032 "version": "2.0.2", 3712 "version": "2.0.2",
3033 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3713 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
...@@ -3043,6 +3723,11 @@ ...@@ -3043,6 +3723,11 @@
3043 "node": ">= 8" 3723 "node": ">= 8"
3044 } 3724 }
3045 }, 3725 },
3726 + "node_modules/which-module": {
3727 + "version": "2.0.0",
3728 + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
3729 + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
3730 + },
3046 "node_modules/word-wrap": { 3731 "node_modules/word-wrap": {
3047 "version": "1.2.3", 3732 "version": "1.2.3",
3048 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3733 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
...@@ -3121,11 +3806,47 @@ ...@@ -3121,11 +3806,47 @@
3121 "node": ">=0.4" 3806 "node": ">=0.4"
3122 } 3807 }
3123 }, 3808 },
3809 + "node_modules/y18n": {
3810 + "version": "5.0.8",
3811 + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
3812 + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
3813 + "optional": true,
3814 + "engines": {
3815 + "node": ">=10"
3816 + }
3817 + },
3124 "node_modules/yallist": { 3818 "node_modules/yallist": {
3125 "version": "4.0.0", 3819 "version": "4.0.0",
3126 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3820 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3127 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 3821 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
3128 }, 3822 },
3823 + "node_modules/yargs": {
3824 + "version": "16.2.0",
3825 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
3826 + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
3827 + "optional": true,
3828 + "dependencies": {
3829 + "cliui": "^7.0.2",
3830 + "escalade": "^3.1.1",
3831 + "get-caller-file": "^2.0.5",
3832 + "require-directory": "^2.1.1",
3833 + "string-width": "^4.2.0",
3834 + "y18n": "^5.0.5",
3835 + "yargs-parser": "^20.2.2"
3836 + },
3837 + "engines": {
3838 + "node": ">=10"
3839 + }
3840 + },
3841 + "node_modules/yargs-parser": {
3842 + "version": "20.2.9",
3843 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
3844 + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
3845 + "optional": true,
3846 + "engines": {
3847 + "node": ">=10"
3848 + }
3849 + },
3129 "node_modules/yocto-queue": { 3850 "node_modules/yocto-queue": {
3130 "version": "0.1.0", 3851 "version": "0.1.0",
3131 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3852 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
...@@ -3240,6 +3961,69 @@ ...@@ -3240,6 +3961,69 @@
3240 "strip-json-comments": "^3.1.1" 3961 "strip-json-comments": "^3.1.1"
3241 } 3962 }
3242 }, 3963 },
3964 + "@firebase/app-types": {
3965 + "version": "0.7.0",
3966 + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz",
3967 + "integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==",
3968 + "peer": true
3969 + },
3970 + "@firebase/auth-interop-types": {
3971 + "version": "0.1.6",
3972 + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz",
3973 + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==",
3974 + "requires": {}
3975 + },
3976 + "@firebase/component": {
3977 + "version": "0.5.5",
3978 + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.5.tgz",
3979 + "integrity": "sha512-L41SdS/4a164jx2iGfakJgaBUPPBI3DI+RrUlmh3oHSUljTeCwfj/Nhcv3S7e2lyXsGFJtAyepfPUx4IQ05crw==",
3980 + "requires": {
3981 + "@firebase/util": "1.2.0",
3982 + "tslib": "^2.1.0"
3983 + }
3984 + },
3985 + "@firebase/database": {
3986 + "version": "0.10.9",
3987 + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.10.9.tgz",
3988 + "integrity": "sha512-Jxi9SiE4cNOftO9YKlG71ccyWFw4kSM9AG/xYu6vWXUGBr39Uw1TvYougANOcU21Q0TP4J08VPGnOnpXk/FGbQ==",
3989 + "requires": {
3990 + "@firebase/auth-interop-types": "0.1.6",
3991 + "@firebase/component": "0.5.5",
3992 + "@firebase/database-types": "0.7.3",
3993 + "@firebase/logger": "0.2.6",
3994 + "@firebase/util": "1.2.0",
3995 + "faye-websocket": "0.11.3",
3996 + "tslib": "^2.1.0"
3997 + }
3998 + },
3999 + "@firebase/database-types": {
4000 + "version": "0.7.3",
4001 + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.3.tgz",
4002 + "integrity": "sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A==",
4003 + "requires": {
4004 + "@firebase/app-types": "0.6.3"
4005 + },
4006 + "dependencies": {
4007 + "@firebase/app-types": {
4008 + "version": "0.6.3",
4009 + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz",
4010 + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw=="
4011 + }
4012 + }
4013 + },
4014 + "@firebase/logger": {
4015 + "version": "0.2.6",
4016 + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz",
4017 + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
4018 + },
4019 + "@firebase/util": {
4020 + "version": "1.2.0",
4021 + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.2.0.tgz",
4022 + "integrity": "sha512-8W9TTGImXr9cu+oyjBJ7yjoEd/IVAv0pBZA4c1uIuKrpGZi2ee38m+8xlZOBRmsAaOU/tR9DXz1WF/oeM6Fb7Q==",
4023 + "requires": {
4024 + "tslib": "^2.1.0"
4025 + }
4026 + },
3243 "@google-cloud/common": { 4027 "@google-cloud/common": {
3244 "version": "3.7.2", 4028 "version": "3.7.2",
3245 "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.2.tgz", 4029 "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.2.tgz",
...@@ -3269,6 +4053,18 @@ ...@@ -3269,6 +4053,18 @@
3269 } 4053 }
3270 } 4054 }
3271 }, 4055 },
4056 + "@google-cloud/firestore": {
4057 + "version": "4.15.1",
4058 + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.15.1.tgz",
4059 + "integrity": "sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA==",
4060 + "optional": true,
4061 + "requires": {
4062 + "fast-deep-equal": "^3.1.1",
4063 + "functional-red-black-tree": "^1.0.1",
4064 + "google-gax": "^2.24.1",
4065 + "protobufjs": "^6.8.6"
4066 + }
4067 + },
3272 "@google-cloud/paginator": { 4068 "@google-cloud/paginator": {
3273 "version": "3.0.6", 4069 "version": "3.0.6",
3274 "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.6.tgz", 4070 "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.6.tgz",
...@@ -3337,6 +4133,28 @@ ...@@ -3337,6 +4133,28 @@
3337 } 4133 }
3338 } 4134 }
3339 }, 4135 },
4136 + "@grpc/grpc-js": {
4137 + "version": "1.3.7",
4138 + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.3.7.tgz",
4139 + "integrity": "sha512-CKQVuwuSPh40tgOkR7c0ZisxYRiN05PcKPW72mQL5y++qd7CwBRoaJZvU5xfXnCJDFBmS3qZGQ71Frx6Ofo2XA==",
4140 + "optional": true,
4141 + "requires": {
4142 + "@types/node": ">=12.12.47"
4143 + }
4144 + },
4145 + "@grpc/proto-loader": {
4146 + "version": "0.6.5",
4147 + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.5.tgz",
4148 + "integrity": "sha512-GZdzyVQI1Bln/kCzIYgTKu+rQJ5dno0gVrfmLe4jqQu7T2e7svSwJzpCBqVU5hhBSJP3peuPjOMWsj5GR61YmQ==",
4149 + "optional": true,
4150 + "requires": {
4151 + "@types/long": "^4.0.1",
4152 + "lodash.camelcase": "^4.3.0",
4153 + "long": "^4.0.0",
4154 + "protobufjs": "^6.10.0",
4155 + "yargs": "^16.1.1"
4156 + }
4157 + },
3340 "@humanwhocodes/config-array": { 4158 "@humanwhocodes/config-array": {
3341 "version": "0.5.0", 4159 "version": "0.5.0",
3342 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", 4160 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
...@@ -3362,11 +4180,135 @@ ...@@ -3362,11 +4180,135 @@
3362 "vary": "^1.1.2" 4180 "vary": "^1.1.2"
3363 } 4181 }
3364 }, 4182 },
4183 + "@panva/asn1.js": {
4184 + "version": "1.0.0",
4185 + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz",
4186 + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw=="
4187 + },
4188 + "@protobufjs/aspromise": {
4189 + "version": "1.1.2",
4190 + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
4191 + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=",
4192 + "optional": true
4193 + },
4194 + "@protobufjs/base64": {
4195 + "version": "1.1.2",
4196 + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
4197 + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
4198 + "optional": true
4199 + },
4200 + "@protobufjs/codegen": {
4201 + "version": "2.0.4",
4202 + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
4203 + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
4204 + "optional": true
4205 + },
4206 + "@protobufjs/eventemitter": {
4207 + "version": "1.1.0",
4208 + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
4209 + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=",
4210 + "optional": true
4211 + },
4212 + "@protobufjs/fetch": {
4213 + "version": "1.1.0",
4214 + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
4215 + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
4216 + "optional": true,
4217 + "requires": {
4218 + "@protobufjs/aspromise": "^1.1.1",
4219 + "@protobufjs/inquire": "^1.1.0"
4220 + }
4221 + },
4222 + "@protobufjs/float": {
4223 + "version": "1.0.2",
4224 + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
4225 + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=",
4226 + "optional": true
4227 + },
4228 + "@protobufjs/inquire": {
4229 + "version": "1.1.0",
4230 + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
4231 + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=",
4232 + "optional": true
4233 + },
4234 + "@protobufjs/path": {
4235 + "version": "1.1.2",
4236 + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
4237 + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=",
4238 + "optional": true
4239 + },
4240 + "@protobufjs/pool": {
4241 + "version": "1.1.0",
4242 + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
4243 + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=",
4244 + "optional": true
4245 + },
4246 + "@protobufjs/utf8": {
4247 + "version": "1.1.0",
4248 + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
4249 + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=",
4250 + "optional": true
4251 + },
3365 "@tootallnate/once": { 4252 "@tootallnate/once": {
3366 "version": "1.1.2", 4253 "version": "1.1.2",
3367 "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 4254 "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
3368 "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" 4255 "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
3369 }, 4256 },
4257 + "@types/body-parser": {
4258 + "version": "1.19.1",
4259 + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz",
4260 + "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==",
4261 + "requires": {
4262 + "@types/connect": "*",
4263 + "@types/node": "*"
4264 + }
4265 + },
4266 + "@types/connect": {
4267 + "version": "3.4.35",
4268 + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
4269 + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
4270 + "requires": {
4271 + "@types/node": "*"
4272 + }
4273 + },
4274 + "@types/express": {
4275 + "version": "4.17.13",
4276 + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz",
4277 + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
4278 + "requires": {
4279 + "@types/body-parser": "*",
4280 + "@types/express-serve-static-core": "^4.17.18",
4281 + "@types/qs": "*",
4282 + "@types/serve-static": "*"
4283 + }
4284 + },
4285 + "@types/express-jwt": {
4286 + "version": "0.0.42",
4287 + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz",
4288 + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==",
4289 + "requires": {
4290 + "@types/express": "*",
4291 + "@types/express-unless": "*"
4292 + }
4293 + },
4294 + "@types/express-serve-static-core": {
4295 + "version": "4.17.24",
4296 + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz",
4297 + "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==",
4298 + "requires": {
4299 + "@types/node": "*",
4300 + "@types/qs": "*",
4301 + "@types/range-parser": "*"
4302 + }
4303 + },
4304 + "@types/express-unless": {
4305 + "version": "0.5.2",
4306 + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.2.tgz",
4307 + "integrity": "sha512-Q74UyYRX/zIgl1HSp9tUX2PlG8glkVm+59r7aK4KGKzC5jqKIOX6rrVLRQrzpZUQ84VukHtRoeAuon2nIssHPQ==",
4308 + "requires": {
4309 + "@types/express": "*"
4310 + }
4311 + },
3370 "@types/formidable": { 4312 "@types/formidable": {
3371 "version": "1.2.4", 4313 "version": "1.2.4",
3372 "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.4.tgz", 4314 "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.4.tgz",
...@@ -3375,11 +4317,41 @@ ...@@ -3375,11 +4317,41 @@
3375 "@types/node": "*" 4317 "@types/node": "*"
3376 } 4318 }
3377 }, 4319 },
4320 + "@types/long": {
4321 + "version": "4.0.1",
4322 + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
4323 + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==",
4324 + "optional": true
4325 + },
4326 + "@types/mime": {
4327 + "version": "1.3.2",
4328 + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
4329 + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
4330 + },
3378 "@types/node": { 4331 "@types/node": {
3379 "version": "16.9.2", 4332 "version": "16.9.2",
3380 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.2.tgz", 4333 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.2.tgz",
3381 "integrity": "sha512-ZHty/hKoOLZvSz6BtP1g7tc7nUeJhoCf3flLjh8ZEv1vFKBWHXcnMbJMyN/pftSljNyy0kNW/UqI3DccnBnZ8w==" 4334 "integrity": "sha512-ZHty/hKoOLZvSz6BtP1g7tc7nUeJhoCf3flLjh8ZEv1vFKBWHXcnMbJMyN/pftSljNyy0kNW/UqI3DccnBnZ8w=="
3382 }, 4335 },
4336 + "@types/qs": {
4337 + "version": "6.9.7",
4338 + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
4339 + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
4340 + },
4341 + "@types/range-parser": {
4342 + "version": "1.2.4",
4343 + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
4344 + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
4345 + },
4346 + "@types/serve-static": {
4347 + "version": "1.13.10",
4348 + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz",
4349 + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
4350 + "requires": {
4351 + "@types/mime": "^1",
4352 + "@types/node": "*"
4353 + }
4354 + },
3383 "abort-controller": { 4355 "abort-controller": {
3384 "version": "3.0.0", 4356 "version": "3.0.0",
3385 "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 4357 "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
...@@ -3513,11 +4485,30 @@ ...@@ -3513,11 +4485,30 @@
3513 "ieee754": "^1.1.13" 4485 "ieee754": "^1.1.13"
3514 } 4486 }
3515 }, 4487 },
4488 + "buffer-alloc": {
4489 + "version": "1.2.0",
4490 + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
4491 + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
4492 + "requires": {
4493 + "buffer-alloc-unsafe": "^1.1.0",
4494 + "buffer-fill": "^1.0.0"
4495 + }
4496 + },
4497 + "buffer-alloc-unsafe": {
4498 + "version": "1.1.0",
4499 + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
4500 + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
4501 + },
3516 "buffer-equal-constant-time": { 4502 "buffer-equal-constant-time": {
3517 "version": "1.0.1", 4503 "version": "1.0.1",
3518 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 4504 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
3519 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 4505 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
3520 }, 4506 },
4507 + "buffer-fill": {
4508 + "version": "1.0.0",
4509 + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
4510 + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
4511 + },
3521 "buffer-from": { 4512 "buffer-from": {
3522 "version": "1.1.1", 4513 "version": "1.1.1",
3523 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 4514 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
...@@ -3581,6 +4572,11 @@ ...@@ -3581,6 +4572,11 @@
3581 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 4572 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
3582 "dev": true 4573 "dev": true
3583 }, 4574 },
4575 + "camelcase": {
4576 + "version": "5.3.1",
4577 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
4578 + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
4579 + },
3584 "chalk": { 4580 "chalk": {
3585 "version": "4.1.2", 4581 "version": "4.1.2",
3586 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 4582 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
...@@ -3591,6 +4587,17 @@ ...@@ -3591,6 +4587,17 @@
3591 "supports-color": "^7.1.0" 4587 "supports-color": "^7.1.0"
3592 } 4588 }
3593 }, 4589 },
4590 + "cliui": {
4591 + "version": "7.0.4",
4592 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
4593 + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
4594 + "optional": true,
4595 + "requires": {
4596 + "string-width": "^4.2.0",
4597 + "strip-ansi": "^6.0.0",
4598 + "wrap-ansi": "^7.0.0"
4599 + }
4600 + },
3594 "co-body": { 4601 "co-body": {
3595 "version": "5.2.0", 4602 "version": "5.2.0",
3596 "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", 4603 "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz",
...@@ -3697,6 +4704,11 @@ ...@@ -3697,6 +4704,11 @@
3697 "ms": "2.1.2" 4704 "ms": "2.1.2"
3698 } 4705 }
3699 }, 4706 },
4707 + "decamelize": {
4708 + "version": "1.2.0",
4709 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
4710 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
4711 + },
3700 "deep-is": { 4712 "deep-is": {
3701 "version": "0.1.3", 4713 "version": "0.1.3",
3702 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 4714 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
...@@ -3708,6 +4720,19 @@ ...@@ -3708,6 +4720,19 @@
3708 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 4720 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
3709 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 4721 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
3710 }, 4722 },
4723 + "dicer": {
4724 + "version": "0.3.0",
4725 + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
4726 + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
4727 + "requires": {
4728 + "streamsearch": "0.1.2"
4729 + }
4730 + },
4731 + "dijkstrajs": {
4732 + "version": "1.0.2",
4733 + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
4734 + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
4735 + },
3711 "doctrine": { 4736 "doctrine": {
3712 "version": "3.0.0", 4737 "version": "3.0.0",
3713 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 4738 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
...@@ -3801,6 +4826,12 @@ ...@@ -3801,6 +4826,12 @@
3801 "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 4826 "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
3802 "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" 4827 "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
3803 }, 4828 },
4829 + "escalade": {
4830 + "version": "3.1.1",
4831 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
4832 + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
4833 + "optional": true
4834 + },
3804 "escape-string-regexp": { 4835 "escape-string-regexp": {
3805 "version": "4.0.0", 4836 "version": "4.0.0",
3806 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 4837 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
...@@ -4012,6 +5043,14 @@ ...@@ -4012,6 +5043,14 @@
4012 "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", 5043 "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
4013 "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" 5044 "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
4014 }, 5045 },
5046 + "faye-websocket": {
5047 + "version": "0.11.3",
5048 + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
5049 + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
5050 + "requires": {
5051 + "websocket-driver": ">=0.5.1"
5052 + }
5053 + },
4015 "file-entry-cache": { 5054 "file-entry-cache": {
4016 "version": "6.0.1", 5055 "version": "6.0.1",
4017 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 5056 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
...@@ -4021,6 +5060,14 @@ ...@@ -4021,6 +5060,14 @@
4021 "flat-cache": "^3.0.4" 5060 "flat-cache": "^3.0.4"
4022 } 5061 }
4023 }, 5062 },
5063 + "find-up": {
5064 + "version": "3.0.0",
5065 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
5066 + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
5067 + "requires": {
5068 + "locate-path": "^3.0.0"
5069 + }
5070 + },
4024 "firebase-admin": { 5071 "firebase-admin": {
4025 "version": "9.11.1", 5072 "version": "9.11.1",
4026 "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.11.1.tgz", 5073 "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.11.1.tgz",
...@@ -4075,10 +5122,9 @@ ...@@ -4075,10 +5122,9 @@
4075 "devOptional": true 5122 "devOptional": true
4076 }, 5123 },
4077 "gaxios": { 5124 "gaxios": {
4078 - "version": "4.3.1", 5125 + "version": "4.3.2",
4079 - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.1.tgz", 5126 + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz",
4080 - "integrity": "sha512-9qXV7yrMCGzTrphl9/YGMVH41oSg0rhn1j3wJWed4Oqk45/hXDD2wBT5J1NjQcqTCcv4g3nFnyQ7reSRHNgBgw==", 5127 + "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==",
4081 - "optional": true,
4082 "requires": { 5128 "requires": {
4083 "abort-controller": "^3.0.0", 5129 "abort-controller": "^3.0.0",
4084 "extend": "^3.0.2", 5130 "extend": "^3.0.2",
...@@ -4091,7 +5137,6 @@ ...@@ -4091,7 +5137,6 @@
4091 "version": "4.3.1", 5137 "version": "4.3.1",
4092 "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", 5138 "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz",
4093 "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", 5139 "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==",
4094 - "optional": true,
4095 "requires": { 5140 "requires": {
4096 "gaxios": "^4.0.0", 5141 "gaxios": "^4.0.0",
4097 "json-bigint": "^1.0.0" 5142 "json-bigint": "^1.0.0"
...@@ -4101,7 +5146,6 @@ ...@@ -4101,7 +5146,6 @@
4101 "version": "3.3.1", 5146 "version": "3.3.1",
4102 "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.1.tgz", 5147 "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.1.tgz",
4103 "integrity": "sha512-WyC0i4VkslIdrdmeM5PNuGzANALLXTG5RoHb08OE30gYT+FEvCDPiA8KOjV2s1wOu9ngEW4+IuzBjtP/ni7UdQ==", 5148 "integrity": "sha512-WyC0i4VkslIdrdmeM5PNuGzANALLXTG5RoHb08OE30gYT+FEvCDPiA8KOjV2s1wOu9ngEW4+IuzBjtP/ni7UdQ==",
4104 - "optional": true,
4105 "requires": { 5149 "requires": {
4106 "abort-controller": "^3.0.0", 5150 "abort-controller": "^3.0.0",
4107 "configstore": "^5.0.0", 5151 "configstore": "^5.0.0",
...@@ -4116,7 +5160,6 @@ ...@@ -4116,7 +5160,6 @@
4116 "version": "4.1.2", 5160 "version": "4.1.2",
4117 "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", 5161 "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
4118 "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", 5162 "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
4119 - "optional": true,
4120 "requires": { 5163 "requires": {
4121 "end-of-stream": "^1.4.1", 5164 "end-of-stream": "^1.4.1",
4122 "inherits": "^2.0.3", 5165 "inherits": "^2.0.3",
...@@ -4128,7 +5171,6 @@ ...@@ -4128,7 +5171,6 @@
4128 "version": "2.0.1", 5171 "version": "2.0.1",
4129 "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", 5172 "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
4130 "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", 5173 "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==",
4131 - "optional": true,
4132 "requires": { 5174 "requires": {
4133 "duplexify": "^4.1.1", 5175 "duplexify": "^4.1.1",
4134 "inherits": "^2.0.3", 5176 "inherits": "^2.0.3",
...@@ -4140,72 +5182,7 @@ ...@@ -4140,72 +5182,7 @@
4140 "get-caller-file": { 5182 "get-caller-file": {
4141 "version": "2.0.5", 5183 "version": "2.0.5",
4142 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 5184 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
4143 - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 5185 + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
4144 - "optional": true
4145 - },
4146 - "get-stream": {
4147 - "version": "6.0.1",
4148 - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
4149 - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
4150 - "optional": true
4151 - },
4152 - "gaxios": {
4153 - "version": "4.3.2",
4154 - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz",
4155 - "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==",
4156 - "requires": {
4157 - "abort-controller": "^3.0.0",
4158 - "extend": "^3.0.2",
4159 - "https-proxy-agent": "^5.0.0",
4160 - "is-stream": "^2.0.0",
4161 - "node-fetch": "^2.6.1"
4162 - }
4163 - },
4164 - "gcp-metadata": {
4165 - "version": "4.3.1",
4166 - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz",
4167 - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==",
4168 - "requires": {
4169 - "gaxios": "^4.0.0",
4170 - "json-bigint": "^1.0.0"
4171 - }
4172 - },
4173 - "gcs-resumable-upload": {
4174 - "version": "3.3.1",
4175 - "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.1.tgz",
4176 - "integrity": "sha512-WyC0i4VkslIdrdmeM5PNuGzANALLXTG5RoHb08OE30gYT+FEvCDPiA8KOjV2s1wOu9ngEW4+IuzBjtP/ni7UdQ==",
4177 - "requires": {
4178 - "abort-controller": "^3.0.0",
4179 - "configstore": "^5.0.0",
4180 - "extend": "^3.0.2",
4181 - "gaxios": "^4.0.0",
4182 - "google-auth-library": "^7.0.0",
4183 - "pumpify": "^2.0.0",
4184 - "stream-events": "^1.0.4"
4185 - },
4186 - "dependencies": {
4187 - "duplexify": {
4188 - "version": "4.1.2",
4189 - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
4190 - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
4191 - "requires": {
4192 - "end-of-stream": "^1.4.1",
4193 - "inherits": "^2.0.3",
4194 - "readable-stream": "^3.1.1",
4195 - "stream-shift": "^1.0.0"
4196 - }
4197 - },
4198 - "pumpify": {
4199 - "version": "2.0.1",
4200 - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
4201 - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==",
4202 - "requires": {
4203 - "duplexify": "^4.1.1",
4204 - "inherits": "^2.0.3",
4205 - "pump": "^3.0.0"
4206 - }
4207 - }
4208 - }
4209 }, 5186 },
4210 "get-intrinsic": { 5187 "get-intrinsic": {
4211 "version": "1.1.1", 5188 "version": "1.1.1",
...@@ -4315,6 +5292,41 @@ ...@@ -4315,6 +5292,41 @@
4315 "lru-cache": "^6.0.0" 5292 "lru-cache": "^6.0.0"
4316 } 5293 }
4317 }, 5294 },
5295 + "google-gax": {
5296 + "version": "2.25.4",
5297 + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.25.4.tgz",
5298 + "integrity": "sha512-+Jd0FFOWyb8ieX53e6Sl5OYvHXoA1sWKfQ24ykR502NKgBTvPAh/RFcITihGePBJZ1E8pfh4MKWU0Sf+f1CK+A==",
5299 + "optional": true,
5300 + "requires": {
5301 + "@grpc/grpc-js": "~1.3.0",
5302 + "@grpc/proto-loader": "^0.6.1",
5303 + "@types/long": "^4.0.0",
5304 + "abort-controller": "^3.0.0",
5305 + "duplexify": "^4.0.0",
5306 + "fast-text-encoding": "^1.0.3",
5307 + "google-auth-library": "^7.6.1",
5308 + "is-stream-ended": "^0.1.4",
5309 + "node-fetch": "^2.6.1",
5310 + "object-hash": "^2.1.1",
5311 + "proto3-json-serializer": "^0.1.1",
5312 + "protobufjs": "6.11.2",
5313 + "retry-request": "^4.0.0"
5314 + },
5315 + "dependencies": {
5316 + "duplexify": {
5317 + "version": "4.1.2",
5318 + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
5319 + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
5320 + "optional": true,
5321 + "requires": {
5322 + "end-of-stream": "^1.4.1",
5323 + "inherits": "^2.0.3",
5324 + "readable-stream": "^3.1.1",
5325 + "stream-shift": "^1.0.0"
5326 + }
5327 + }
5328 + }
5329 + },
4318 "google-p12-pem": { 5330 "google-p12-pem": {
4319 "version": "3.1.2", 5331 "version": "3.1.2",
4320 "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", 5332 "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz",
...@@ -4385,6 +5397,11 @@ ...@@ -4385,6 +5397,11 @@
4385 "toidentifier": "1.0.0" 5397 "toidentifier": "1.0.0"
4386 } 5398 }
4387 }, 5399 },
5400 + "http-parser-js": {
5401 + "version": "0.5.3",
5402 + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
5403 + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg=="
5404 + },
4388 "http-proxy-agent": { 5405 "http-proxy-agent": {
4389 "version": "4.0.1", 5406 "version": "4.0.1",
4390 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 5407 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
...@@ -4508,6 +5525,12 @@ ...@@ -4508,6 +5525,12 @@
4508 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 5525 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
4509 "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" 5526 "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
4510 }, 5527 },
5528 + "is-stream-ended": {
5529 + "version": "0.1.4",
5530 + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
5531 + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
5532 + "optional": true
5533 + },
4511 "is-typedarray": { 5534 "is-typedarray": {
4512 "version": "1.0.0", 5535 "version": "1.0.0",
4513 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 5536 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
...@@ -4580,6 +5603,49 @@ ...@@ -4580,6 +5603,49 @@
4580 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 5603 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
4581 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" 5604 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
4582 }, 5605 },
5606 + "jsonwebtoken": {
5607 + "version": "8.5.1",
5608 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
5609 + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
5610 + "requires": {
5611 + "jws": "^3.2.2",
5612 + "lodash.includes": "^4.3.0",
5613 + "lodash.isboolean": "^3.0.3",
5614 + "lodash.isinteger": "^4.0.4",
5615 + "lodash.isnumber": "^3.0.3",
5616 + "lodash.isplainobject": "^4.0.6",
5617 + "lodash.isstring": "^4.0.1",
5618 + "lodash.once": "^4.0.0",
5619 + "ms": "^2.1.1",
5620 + "semver": "^5.6.0"
5621 + },
5622 + "dependencies": {
5623 + "jwa": {
5624 + "version": "1.4.1",
5625 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
5626 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
5627 + "requires": {
5628 + "buffer-equal-constant-time": "1.0.1",
5629 + "ecdsa-sig-formatter": "1.0.11",
5630 + "safe-buffer": "^5.0.1"
5631 + }
5632 + },
5633 + "jws": {
5634 + "version": "3.2.2",
5635 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
5636 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
5637 + "requires": {
5638 + "jwa": "^1.4.1",
5639 + "safe-buffer": "^5.0.1"
5640 + }
5641 + },
5642 + "semver": {
5643 + "version": "5.7.1",
5644 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
5645 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
5646 + }
5647 + }
5648 + },
4583 "jwa": { 5649 "jwa": {
4584 "version": "2.0.0", 5650 "version": "2.0.0",
4585 "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", 5651 "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
...@@ -4590,6 +5656,18 @@ ...@@ -4590,6 +5656,18 @@
4590 "safe-buffer": "^5.0.1" 5656 "safe-buffer": "^5.0.1"
4591 } 5657 }
4592 }, 5658 },
5659 + "jwks-rsa": {
5660 + "version": "2.0.4",
5661 + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.0.4.tgz",
5662 + "integrity": "sha512-iJqVCECYZZ+3oPmY1qXv3Fq+3ywDtuNEVBvG41pPlaR0zyGxa12nC0beAOBBUhETJmc05puS50mRQN4NkCGhmg==",
5663 + "requires": {
5664 + "@types/express-jwt": "0.0.42",
5665 + "debug": "^4.3.2",
5666 + "jose": "^2.0.5",
5667 + "limiter": "^1.1.5",
5668 + "lru-memoizer": "^2.1.4"
5669 + }
5670 + },
4593 "jws": { 5671 "jws": {
4594 "version": "4.0.0", 5672 "version": "4.0.0",
4595 "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", 5673 "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
...@@ -4629,6 +5707,15 @@ ...@@ -4629,6 +5707,15 @@
4629 "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", 5707 "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
4630 "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" 5708 "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
4631 }, 5709 },
5710 + "locate-path": {
5711 + "version": "3.0.0",
5712 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
5713 + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
5714 + "requires": {
5715 + "p-locate": "^3.0.0",
5716 + "path-exists": "^3.0.0"
5717 + }
5718 + },
4632 "lodash.camelcase": { 5719 "lodash.camelcase": {
4633 "version": "4.3.0", 5720 "version": "4.3.0",
4634 "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 5721 "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
...@@ -4701,6 +5788,31 @@ ...@@ -4701,6 +5788,31 @@
4701 "yallist": "^4.0.0" 5788 "yallist": "^4.0.0"
4702 } 5789 }
4703 }, 5790 },
5791 + "lru-memoizer": {
5792 + "version": "2.1.4",
5793 + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz",
5794 + "integrity": "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==",
5795 + "requires": {
5796 + "lodash.clonedeep": "^4.5.0",
5797 + "lru-cache": "~4.0.0"
5798 + },
5799 + "dependencies": {
5800 + "lru-cache": {
5801 + "version": "4.0.2",
5802 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
5803 + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=",
5804 + "requires": {
5805 + "pseudomap": "^1.0.1",
5806 + "yallist": "^2.0.0"
5807 + }
5808 + },
5809 + "yallist": {
5810 + "version": "2.1.2",
5811 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
5812 + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
5813 + }
5814 + }
5815 + },
4704 "make-dir": { 5816 "make-dir": {
4705 "version": "3.1.0", 5817 "version": "3.1.0",
4706 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 5818 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
...@@ -4824,6 +5936,12 @@ ...@@ -4824,6 +5936,12 @@
4824 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", 5936 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
4825 "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" 5937 "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
4826 }, 5938 },
5939 + "object-hash": {
5940 + "version": "2.2.0",
5941 + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
5942 + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
5943 + "optional": true
5944 + },
4827 "object-inspect": { 5945 "object-inspect": {
4828 "version": "1.11.0", 5946 "version": "1.11.0",
4829 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", 5947 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
...@@ -4896,6 +6014,29 @@ ...@@ -4896,6 +6014,29 @@
4896 "yocto-queue": "^0.1.0" 6014 "yocto-queue": "^0.1.0"
4897 } 6015 }
4898 }, 6016 },
6017 + "p-locate": {
6018 + "version": "3.0.0",
6019 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
6020 + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
6021 + "requires": {
6022 + "p-limit": "^2.0.0"
6023 + },
6024 + "dependencies": {
6025 + "p-limit": {
6026 + "version": "2.3.0",
6027 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
6028 + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
6029 + "requires": {
6030 + "p-try": "^2.0.0"
6031 + }
6032 + }
6033 + }
6034 + },
6035 + "p-try": {
6036 + "version": "2.2.0",
6037 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
6038 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
6039 + },
4899 "parent-module": { 6040 "parent-module": {
4900 "version": "1.0.1", 6041 "version": "1.0.1",
4901 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 6042 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
...@@ -4910,6 +6051,11 @@ ...@@ -4910,6 +6051,11 @@
4910 "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 6051 "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
4911 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" 6052 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
4912 }, 6053 },
6054 + "path-exists": {
6055 + "version": "3.0.0",
6056 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
6057 + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
6058 + },
4913 "path-is-absolute": { 6059 "path-is-absolute": {
4914 "version": "1.0.1", 6060 "version": "1.0.1",
4915 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 6061 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
...@@ -4921,6 +6067,11 @@ ...@@ -4921,6 +6067,11 @@
4921 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 6067 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
4922 "dev": true 6068 "dev": true
4923 }, 6069 },
6070 + "pngjs": {
6071 + "version": "3.4.0",
6072 + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
6073 + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
6074 + },
4924 "prelude-ls": { 6075 "prelude-ls": {
4925 "version": "1.2.1", 6076 "version": "1.2.1",
4926 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 6077 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
...@@ -5006,6 +6157,132 @@ ...@@ -5006,6 +6157,132 @@
5006 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 6157 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
5007 "dev": true 6158 "dev": true
5008 }, 6159 },
6160 + "qrcode": {
6161 + "version": "1.4.4",
6162 + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
6163 + "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
6164 + "requires": {
6165 + "buffer": "^5.4.3",
6166 + "buffer-alloc": "^1.2.0",
6167 + "buffer-from": "^1.1.1",
6168 + "dijkstrajs": "^1.0.1",
6169 + "isarray": "^2.0.1",
6170 + "pngjs": "^3.3.0",
6171 + "yargs": "^13.2.4"
6172 + },
6173 + "dependencies": {
6174 + "ansi-regex": {
6175 + "version": "4.1.0",
6176 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
6177 + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
6178 + },
6179 + "ansi-styles": {
6180 + "version": "3.2.1",
6181 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
6182 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
6183 + "requires": {
6184 + "color-convert": "^1.9.0"
6185 + }
6186 + },
6187 + "cliui": {
6188 + "version": "5.0.0",
6189 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
6190 + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
6191 + "requires": {
6192 + "string-width": "^3.1.0",
6193 + "strip-ansi": "^5.2.0",
6194 + "wrap-ansi": "^5.1.0"
6195 + }
6196 + },
6197 + "color-convert": {
6198 + "version": "1.9.3",
6199 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
6200 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
6201 + "requires": {
6202 + "color-name": "1.1.3"
6203 + }
6204 + },
6205 + "color-name": {
6206 + "version": "1.1.3",
6207 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
6208 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
6209 + },
6210 + "emoji-regex": {
6211 + "version": "7.0.3",
6212 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
6213 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
6214 + },
6215 + "is-fullwidth-code-point": {
6216 + "version": "2.0.0",
6217 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
6218 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
6219 + },
6220 + "isarray": {
6221 + "version": "2.0.5",
6222 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
6223 + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
6224 + },
6225 + "string-width": {
6226 + "version": "3.1.0",
6227 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
6228 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
6229 + "requires": {
6230 + "emoji-regex": "^7.0.1",
6231 + "is-fullwidth-code-point": "^2.0.0",
6232 + "strip-ansi": "^5.1.0"
6233 + }
6234 + },
6235 + "strip-ansi": {
6236 + "version": "5.2.0",
6237 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
6238 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
6239 + "requires": {
6240 + "ansi-regex": "^4.1.0"
6241 + }
6242 + },
6243 + "wrap-ansi": {
6244 + "version": "5.1.0",
6245 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
6246 + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
6247 + "requires": {
6248 + "ansi-styles": "^3.2.0",
6249 + "string-width": "^3.0.0",
6250 + "strip-ansi": "^5.0.0"
6251 + }
6252 + },
6253 + "y18n": {
6254 + "version": "4.0.3",
6255 + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
6256 + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
6257 + },
6258 + "yargs": {
6259 + "version": "13.3.2",
6260 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
6261 + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
6262 + "requires": {
6263 + "cliui": "^5.0.0",
6264 + "find-up": "^3.0.0",
6265 + "get-caller-file": "^2.0.1",
6266 + "require-directory": "^2.1.1",
6267 + "require-main-filename": "^2.0.0",
6268 + "set-blocking": "^2.0.0",
6269 + "string-width": "^3.0.0",
6270 + "which-module": "^2.0.0",
6271 + "y18n": "^4.0.0",
6272 + "yargs-parser": "^13.1.2"
6273 + }
6274 + },
6275 + "yargs-parser": {
6276 + "version": "13.1.2",
6277 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
6278 + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
6279 + "requires": {
6280 + "camelcase": "^5.0.0",
6281 + "decamelize": "^1.2.0"
6282 + }
6283 + }
6284 + }
6285 + },
5009 "qs": { 6286 "qs": {
5010 "version": "6.10.1", 6287 "version": "6.10.1",
5011 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", 6288 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
...@@ -5054,8 +6331,7 @@ ...@@ -5054,8 +6331,7 @@
5054 "require-directory": { 6331 "require-directory": {
5055 "version": "2.1.1", 6332 "version": "2.1.1",
5056 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 6333 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
5057 - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 6334 + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
5058 - "optional": true
5059 }, 6335 },
5060 "require-from-string": { 6336 "require-from-string": {
5061 "version": "2.0.2", 6337 "version": "2.0.2",
...@@ -5063,6 +6339,11 @@ ...@@ -5063,6 +6339,11 @@
5063 "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 6339 "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
5064 "dev": true 6340 "dev": true
5065 }, 6341 },
6342 + "require-main-filename": {
6343 + "version": "2.0.0",
6344 + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
6345 + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
6346 + },
5066 "resolve-from": { 6347 "resolve-from": {
5067 "version": "4.0.0", 6348 "version": "4.0.0",
5068 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 6349 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
...@@ -5111,6 +6392,11 @@ ...@@ -5111,6 +6392,11 @@
5111 "lru-cache": "^6.0.0" 6392 "lru-cache": "^6.0.0"
5112 } 6393 }
5113 }, 6394 },
6395 + "set-blocking": {
6396 + "version": "2.0.0",
6397 + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
6398 + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
6399 + },
5114 "setprototypeof": { 6400 "setprototypeof": {
5115 "version": "1.1.1", 6401 "version": "1.1.1",
5116 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 6402 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
...@@ -5360,6 +6646,11 @@ ...@@ -5360,6 +6646,11 @@
5360 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 6646 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
5361 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 6647 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
5362 }, 6648 },
6649 + "tslib": {
6650 + "version": "2.3.1",
6651 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
6652 + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
6653 + },
5363 "type-check": { 6654 "type-check": {
5364 "version": "0.4.0", 6655 "version": "0.4.0",
5365 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 6656 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
...@@ -5454,6 +6745,21 @@ ...@@ -5454,6 +6745,21 @@
5454 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 6745 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
5455 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 6746 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
5456 }, 6747 },
6748 + "websocket-driver": {
6749 + "version": "0.7.4",
6750 + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
6751 + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
6752 + "requires": {
6753 + "http-parser-js": ">=0.5.1",
6754 + "safe-buffer": ">=5.1.0",
6755 + "websocket-extensions": ">=0.1.1"
6756 + }
6757 + },
6758 + "websocket-extensions": {
6759 + "version": "0.1.4",
6760 + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
6761 + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
6762 + },
5457 "which": { 6763 "which": {
5458 "version": "2.0.2", 6764 "version": "2.0.2",
5459 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 6765 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
...@@ -5463,6 +6769,11 @@ ...@@ -5463,6 +6769,11 @@
5463 "isexe": "^2.0.0" 6769 "isexe": "^2.0.0"
5464 } 6770 }
5465 }, 6771 },
6772 + "which-module": {
6773 + "version": "2.0.0",
6774 + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
6775 + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
6776 + },
5466 "word-wrap": { 6777 "word-wrap": {
5467 "version": "1.2.3", 6778 "version": "1.2.3",
5468 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 6779 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
...@@ -5523,6 +6834,27 @@ ...@@ -5523,6 +6834,27 @@
5523 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 6834 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
5524 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 6835 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
5525 }, 6836 },
6837 + "yargs": {
6838 + "version": "16.2.0",
6839 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
6840 + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
6841 + "optional": true,
6842 + "requires": {
6843 + "cliui": "^7.0.2",
6844 + "escalade": "^3.1.1",
6845 + "get-caller-file": "^2.0.5",
6846 + "require-directory": "^2.1.1",
6847 + "string-width": "^4.2.0",
6848 + "y18n": "^5.0.5",
6849 + "yargs-parser": "^20.2.2"
6850 + }
6851 + },
6852 + "yargs-parser": {
6853 + "version": "20.2.9",
6854 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
6855 + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
6856 + "optional": true
6857 + },
5526 "yocto-queue": { 6858 "yocto-queue": {
5527 "version": "0.1.0", 6859 "version": "0.1.0",
5528 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 6860 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
19 "dependencies": { 19 "dependencies": {
20 "@google-cloud/storage": "^5.14.2", 20 "@google-cloud/storage": "^5.14.2",
21 "@koa/cors": "^3.1.0", 21 "@koa/cors": "^3.1.0",
22 + "firebase-admin": "^9.11.1",
22 "koa-body": "^4.2.0", 23 "koa-body": "^4.2.0",
23 "moment": "^2.29.1", 24 "moment": "^2.29.1",
24 "moment-timezone": "^0.5.33", 25 "moment-timezone": "^0.5.33",
......
...@@ -17,6 +17,7 @@ exports.register = async(ctx) => { ...@@ -17,6 +17,7 @@ exports.register = async(ctx) => {
17 userNm, 17 userNm,
18 birth, 18 birth,
19 contact, 19 contact,
20 + deviceToken,
20 } = ctx.request.body; 21 } = ctx.request.body;
21 22
22 const schema = Joi.object().keys({ 23 const schema = Joi.object().keys({
...@@ -58,7 +59,8 @@ exports.register = async(ctx) => { ...@@ -58,7 +59,8 @@ exports.register = async(ctx) => {
58 userId, 59 userId,
59 userNm, 60 userNm,
60 birth, 61 birth,
61 - contact, 62 + contact,
63 + deviceToken,
62 }); 64 });
63 65
64 await user.save(); 66 await user.save();
...@@ -192,7 +194,7 @@ exports.doctorRegister = async ctx => { ...@@ -192,7 +194,7 @@ exports.doctorRegister = async ctx => {
192 } 194 }
193 195
194 exports.login = async(ctx) => { 196 exports.login = async(ctx) => {
195 - const { userId, password } = ctx.request.body; 197 + const { userId, password, deviceToken } = ctx.request.body;
196 198
197 const schema = Joi.object().keys({ 199 const schema = Joi.object().keys({
198 userId : Joi.string().email().max(50).required(), 200 userId : Joi.string().email().max(50).required(),
...@@ -225,7 +227,6 @@ exports.login = async(ctx) => { ...@@ -225,7 +227,6 @@ exports.login = async(ctx) => {
225 }; 227 };
226 return; 228 return;
227 } 229 }
228 -
229 if(user.useYn !== 'Y') { 230 if(user.useYn !== 'Y') {
230 ctx.status = 403; 231 ctx.status = 403;
231 ctx.body = { 232 ctx.body = {
...@@ -234,6 +235,16 @@ exports.login = async(ctx) => { ...@@ -234,6 +235,16 @@ exports.login = async(ctx) => {
234 return; 235 return;
235 } 236 }
236 237
238 + //일반 유저의 deviceToken값이 바뀌면 업데이트한다 = 기기가 바뀌면
239 + if(user.userTypeCd === 'NORMAL') {
240 + const profile = await Profile.findByUserId(user.userId);
241 + if(deviceToken && profile.deviceToken !== deviceToken) {
242 + profile.updateDeviceToken(deviceToken);
243 + await profile.save();
244 + }
245 + }
246 +
247 +
237 const token = await user.generateToken(); 248 const token = await user.generateToken();
238 ctx.cookies.set('access_token', token, { 249 ctx.cookies.set('access_token', token, {
239 httpOnly : true, 250 httpOnly : true,
...@@ -243,7 +254,7 @@ exports.login = async(ctx) => { ...@@ -243,7 +254,7 @@ exports.login = async(ctx) => {
243 ctx.status = 200; 254 ctx.status = 200;
244 ctx.body = { 255 ctx.body = {
245 userTypeCd : user.userTypeCd, 256 userTypeCd : user.userTypeCd,
246 - token 257 + token,
247 }; 258 };
248 259
249 }; 260 };
......
...@@ -6,17 +6,20 @@ ...@@ -6,17 +6,20 @@
6 * 1) Dosage에 따라, Push Notification 발송 6 * 1) Dosage에 따라, Push Notification 발송
7 */ 7 */
8 8
9 - const cron = require('node-cron'); 9 +const cron = require('node-cron');
10 +const fs = require('fs');
10 11
11 - const Profile = require('../models/profile'); 12 +const Profile = require('../models/profile');
12 - const User = require('../models/user'); 13 +const User = require('../models/user');
13 - const Hub = require('../models/hub'); 14 +const Hub = require('../models/hub');
14 - const Bottle = require('../models/bottle'); 15 +const Bottle = require('../models/bottle');
15 - const BottleMedicine = require('../models/bottleMedicine'); 16 +const BottleMedicine = require('../models/bottleMedicine');
17 +const Medicine = require('../models/medicine');
16 18
17 const updateMedicineInfo = require('../lib/UpdatingMedicineInfo'); 19 const updateMedicineInfo = require('../lib/UpdatingMedicineInfo');
18 - 20 +const { sendPushMessage } = require('./FCM');
19 - 21 +
22 +
20 // //매년 1월 1일 00시 00분에 1살씩 추가 23 // //매년 1월 1일 00시 00분에 1살씩 추가
21 // exports.CheckNewYear = () => { 24 // exports.CheckNewYear = () => {
22 // cron.schedule('0 0 0 1 1 *', async () => { 25 // cron.schedule('0 0 0 1 1 *', async () => {
...@@ -25,7 +28,7 @@ const updateMedicineInfo = require('../lib/UpdatingMedicineInfo'); ...@@ -25,7 +28,7 @@ const updateMedicineInfo = require('../lib/UpdatingMedicineInfo');
25 // await profile.updateUserAge(); 28 // await profile.updateUserAge();
26 // profile.save(); 29 // profile.save();
27 // }); 30 // });
28 - 31 +
29 // }, { 32 // }, {
30 // timezone : 'Asia/Tokyo', 33 // timezone : 'Asia/Tokyo',
31 // }); 34 // });
...@@ -35,78 +38,111 @@ const updateMedicineInfo = require('../lib/UpdatingMedicineInfo'); ...@@ -35,78 +38,111 @@ const updateMedicineInfo = require('../lib/UpdatingMedicineInfo');
35 exports.updateMedicineData = async () => { 38 exports.updateMedicineData = async () => {
36 cron.schedule('0 0 0 1 * *', () => { 39 cron.schedule('0 0 0 1 * *', () => {
37 updateMedicineInfo.updateMedicineInfo(); 40 updateMedicineInfo.updateMedicineInfo();
41 + }, {
42 + timezone : 'Asia/Tokyo',
38 }); 43 });
39 }; 44 };
40 - 45 +
46 +//매주 일요일마다 불필요한 qrcode 제거
47 +exports.removeQrCode = () => {
48 + cron.schedule('0 0 0 * * 0', () => {
49 + // eslint-disable-next-line no-undef
50 + const qrDir = process.env.QR_DIR;
51 + fs.rm(qrDir, { recursive : true, force : true, }, () => {
52 + fs.mkdir(qrDir, (err) => { if(err) console.log(err) });
53 + });
54 + }, {
55 + timezone : 'Asia/Tokyo',
56 + });
57 +};
58 +
41 //dosage에 따라, Push Notification을 발송한다. 59 //dosage에 따라, Push Notification을 발송한다.
42 //아침 8시, 점심 12시, 저녁 6시에 한번씩 발송 60 //아침 8시, 점심 12시, 저녁 6시에 한번씩 발송
43 - exports.PushNotifyByDosage = async() => { 61 +exports.pushNotifyByDosage = async() => {
44 - 62 +
45 - //매일 아침 8시 : 복용량 상관 없이 보냄 63 + //매일 아침 8시 : 복용량 상관 없이 보냄
46 - cron.schedule('0 0 8 * * *', async () => { 64 + cron.schedule('0 0 8 * * *', async () => {
47 - const bottleMedicineList = await BottleMedicine.find({ useYn : 'Y', dosage : { $gte : 1 } }); 65 + const bottleMedicineList = await BottleMedicine.find({ useYn : 'Y', dosage : { $gte : 1 } });
48 - bottleMedicineList.forEach(async bottleMedicine => { 66 + bottleMedicineList.forEach(async bottleMedicine => {
49 - const bottle = await Bottle.findOne({ bottleId : bottleMedicine.bottleId }); 67 + const bottle = await Bottle.findOne({ bottleId : bottleMedicine.bottleId });
50 - const hub = await Hub.findOne({ hubId : bottle.hubId }); 68 + const hub = await Hub.findOne({ hubId : bottle.hubId });
51 - const user = await User.findOne({ userId : hub.userId, useYn : 'Y' }); 69 + const user = await User.findOne({ userId : hub.userId, useYn : 'Y' });
52 - 70 +
53 - if(user) { 71 + if(user) {
54 - const profile = await Profile.findOne({ userId : user.userId }); 72 + const profile = await Profile.findOne({ userId : user.userId });
55 - 73 + const { deviceToken } = profile;
56 - const { deviceToken } = profile; 74 +
57 - PushNotify(deviceToken); 75 + if(deviceToken) {
58 - } 76 + const medicine = await Medicine.findOne({ medicineId : bottleMedicine.medicineId });
59 - }); 77 + pushNotify({
60 - }, { 78 + deviceToken,
61 - timezone : 'Asia/Tokyo', 79 + message : medicine.name + '을 복용하셔야 합니다.',
62 - }); 80 + });
63 - 81 + }
64 - 82 + }
65 - //매일 점심 12시 : 복용량이 3인 환자들만 83 + });
66 - cron.schedule('0 0 12 * * *', async () => { 84 + }, {
67 - const bottleMedicineList = await BottleMedicine.find({ useYn : 'Y', dosage : { $gte : 3 } }); 85 + timezone : 'Asia/Tokyo',
68 - bottleMedicineList.forEach(async bottleMedicine => { 86 + });
69 - const bottle = await Bottle.findOne({ bottleId : bottleMedicine.bottleId }); 87 +
70 - const hub = await Hub.findOne({ hubId : bottle.hubId }); 88 +
71 - const user = await User.findOne({ userId : hub.userId, useYn : 'Y' }); 89 + //매일 점심 12시 : 복용량이 3인 환자들만
72 - 90 + cron.schedule('0 0 12 * * *', async () => {
73 - if(user) { 91 + const bottleMedicineList = await BottleMedicine.find({ useYn : 'Y', dosage : { $gte : 3 } });
74 - const profile = await Profile.findOne({ userId : user.userId }); 92 + bottleMedicineList.forEach(async bottleMedicine => {
75 - 93 + const bottle = await Bottle.findOne({ bottleId : bottleMedicine.bottleId });
76 - const { deviceToken } = profile; 94 + const hub = await Hub.findOne({ hubId : bottle.hubId });
77 - PushNotify(deviceToken); 95 + const user = await User.findOne({ userId : hub.userId, useYn : 'Y' });
78 - } 96 +
79 - }); 97 + if(user) {
80 - }, { 98 + const profile = await Profile.findOne({ userId : user.userId });
81 - timezone : 'Asia/Tokyo', 99 + const { deviceToken } = profile;
82 - }); 100 +
83 - 101 + if(deviceToken) {
84 - 102 + const medicine = await Medicine.findOne({ medicineId : bottleMedicine.medicineId });
85 - //매일 저녁 6시 103 + pushNotify({
86 - cron.schedule('0 0 18 * * *', async () => { 104 + deviceToken,
87 - const bottleMedicineList = await BottleMedicine.find({ useYn : 'Y', dosage : { $gte : 2 } }); 105 + message : medicine.name + '을 복용하셔야 합니다.',
88 - bottleMedicineList.forEach(async bottleMedicine => { 106 + });
89 - const bottle = await Bottle.findOne({ bottleId : bottleMedicine.bottleId }); 107 + }
90 - const hub = await Hub.findOne({ hubId : bottle.hubId }); 108 + }
91 - const user = await User.findOne({ userId : hub.userId, useYn : 'Y' }); 109 + });
92 - 110 + }, {
93 - if(user) { 111 + timezone : 'Asia/Tokyo',
94 - const profile = await Profile.findOne({ userId : user.userId }); 112 + });
95 - 113 +
96 - const { deviceToken } = profile; 114 +
97 - PushNotify(deviceToken); 115 + //매일 저녁 6시
98 - } 116 + cron.schedule('0 0 18 * * *', async () => {
99 - }); 117 + const bottleMedicineList = await BottleMedicine.find({ useYn : 'Y', dosage : { $gte : 2 } });
100 - }, { 118 + bottleMedicineList.forEach(async bottleMedicine => {
101 - timezone : 'Asia/Tokyo', 119 + const bottle = await Bottle.findOne({ bottleId : bottleMedicine.bottleId });
102 - }); 120 + const hub = await Hub.findOne({ hubId : bottle.hubId });
103 - 121 + const user = await User.findOne({ userId : hub.userId, useYn : 'Y' });
104 - }; 122 +
105 - 123 + if(user) {
106 - const PushNotify = async(deviceToken) => { 124 + const profile = await Profile.findOne({ userId : user.userId });
125 + const { deviceToken } = profile;
126 +
127 + if(deviceToken) {
128 + const medicine = await Medicine.findOne({ medicineId : bottleMedicine.medicineId });
129 + pushNotify({
130 + deviceToken,
131 + message : medicine.name + '을 복용하셔야 합니다.',
132 + });
133 + }
134 + }
135 + });
136 + }, {
137 + timezone : 'Asia/Tokyo',
138 + });
139 +
140 +};
141 +
142 +const pushNotify = ({ deviceToken, message }) => {
107 //toDo : deviceToken을 받아서 push notification을 발송하는 함수 143 //toDo : deviceToken을 받아서 push notification을 발송하는 함수
108 - if(deviceToken) { 144 + sendPushMessage({
109 - console.log(deviceToken); 145 + deviceToken,
110 - } 146 + message,
111 - }; 147 + });
112 - 148 +};
......
1 +const fcm = require('firebase-admin');
2 +
3 +
4 +exports.initializeFCM = () => {
5 + fcm.initializeApp({
6 + credential : fcm.credential.applicationDefault(),
7 + });
8 +};
9 +
10 +exports.sendPushMessage = async ({ deviceToken, message }) => {
11 + const notifyMessage = {
12 + notification : {
13 + title : '약 먹을 시간입니다',
14 + body : message,
15 + },
16 + token : deviceToken,
17 + };
18 + fcm.messaging().send(notifyMessage);
19 +};
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,14 +3,15 @@ const moment = require('moment'); ...@@ -3,14 +3,15 @@ const moment = require('moment');
3 3
4 4
5 exports.generateQrCode_prescribe = async ({ medicine, dosage, patientId, doctorId }) => { 5 exports.generateQrCode_prescribe = async ({ medicine, dosage, patientId, doctorId }) => {
6 - const directory = "/Users/parkkwonsoo/Desktop/Project/Capstone_Design_1/server/data/"; 6 + // eslint-disable-next-line no-undef
7 + const directory = process.env.QR_DIR;
7 8
8 const now = moment().format('YYYY-MM-DD_HH:mm'); 9 const now = moment().format('YYYY-MM-DD_HH:mm');
9 const qrCodeFileName = `${now}_${doctorId}_${patientId}_${medicine.medicineId}_${dosage}.png`; 10 const qrCodeFileName = `${now}_${doctorId}_${patientId}_${medicine.medicineId}_${dosage}.png`;
10 11
11 try { 12 try {
12 await QrCode.toFile( 13 await QrCode.toFile(
13 - directory + qrCodeFileName, 14 + directory + '/' + qrCodeFileName,
14 `${medicine.name}/${medicine.medicineId}/${dosage}/${patientId}/${doctorId}`, 15 `${medicine.name}/${medicine.medicineId}/${dosage}/${patientId}/${doctorId}`,
15 { 16 {
16 color : { 17 color : {
......
This diff could not be displayed because it is too large.