오윤석

Merge branch 'develop'

...@@ -37,7 +37,7 @@ services: ...@@ -37,7 +37,7 @@ services:
37 volumes: 37 volumes:
38 - ./node:/app 38 - ./node:/app
39 - ./config:/app/config 39 - ./config:/app/config
40 - command: bash -c "npm install && node app.js" 40 + command: bash -c "npm install && node_modules/.bin/nodemon app.js"
41 environment: 41 environment:
42 - NODE_ENV=production 42 - NODE_ENV=production
43 restart: on-failure 43 restart: on-failure
......
...@@ -6,6 +6,6 @@ let routes = require('./routes'); ...@@ -6,6 +6,6 @@ let routes = require('./routes');
6 app.use(bodyParser.urlencoded({ extended: false })); 6 app.use(bodyParser.urlencoded({ extended: false }));
7 app.use(bodyParser.json()); 7 app.use(bodyParser.json());
8 8
9 -app.get('/api/home', routes.home); 9 +app.get('/api/character', routes.character.getCharacter);
10 10
11 let server = app.listen(80); 11 let server = app.listen(80);
...\ No newline at end of file ...\ No newline at end of file
......
1 +module.exports = {
2 + default: {
3 + jobConst: 1,
4 + stats: {
5 + passive: { // 데몬슬레이어, 키네시스, 시그너스 링크는 스탯창에 반영되었으므로 제외
6 + major: {
7 + percent: 0, // 제논 링크는 수치가 이상하게 나오기 때문에 제외
8 + added: 200 // 유니온 공격대원 평균
9 + },
10 + damage: {
11 + all: 10 // 데몬어벤져
12 + },
13 + criticalDamage: 0
14 + },
15 + active: {
16 + attackPower: {
17 + percent: 4 // 영웅의메아리
18 + },
19 + damage: {
20 + all: 137, // 아크, 일리움, 모험가마법사, 모험가도적, 카데나, 엔젤릭버스터, 길드노블레스
21 + boss: 22 // 길드노블레스
22 + },
23 + ignoreGuard: 9, // 모험가마법사
24 + criticalDamage: 30 // 길드노블레스
25 + }
26 + }
27 + },
28 + '전사/히어로': {
29 + major: 'STR',
30 + minor: 'DEX',
31 + jobConst: 1.0746,
32 + stats: {
33 + passive: {
34 + major: {
35 + percent: 0
36 + },
37 + attackPower: {
38 + percent: 0
39 + },
40 + damage: {
41 + all: 0
42 + },
43 + finalDamage: 10
44 + },
45 + active: {
46 + major: {
47 + pure: 0,
48 + percent: 15
49 + },
50 + attackPower: {
51 + pure: 50,
52 + percent: 0
53 + },
54 + damage: {
55 + all: 10,
56 + boss: 20
57 + },
58 + ignoreGuard: 15,
59 + criticalDamage: 28
60 + }
61 + }
62 + },
63 + '전사/팔라딘': {
64 + major: 'STR',
65 + minor: 'DEX',
66 + jobConst: 1,
67 + stats: {
68 + passive: {
69 + major: {
70 + percent: 0
71 + },
72 + attackPower: {
73 + percent: 0
74 + },
75 + damage: {
76 + all: 0
77 + },
78 + finalDamage: 72
79 + },
80 + active: {
81 + major: {
82 + pure: 0,
83 + percent: 16
84 + },
85 + attackPower: {
86 + pure: 100,
87 + percent: 0
88 + },
89 + damage: {
90 + all: 35,
91 + boss: 0
92 + },
93 + ignoreGuard: 57.5,
94 + criticalDamage: 8
95 + }
96 + }
97 + },
98 + '전사/다크나이트': {
99 + major: 'STR',
100 + minor: 'DEX',
101 + jobConst: 1,
102 + stats: {
103 + passive: {
104 + major: {
105 + percent: 0
106 + },
107 + attackPower: {
108 + percent: 0
109 + },
110 + damage: {
111 + all: 5
112 + },
113 + finalDamage: 95
114 + },
115 + active: {
116 + major: {
117 + pure: 0,
118 + percent: 15
119 + },
120 + attackPower: {
121 + pure: 70,
122 + percent: 0
123 + },
124 + damage: {
125 + all: 0,
126 + boss: 10
127 + },
128 + ignoreGuard: 10,
129 + criticalDamage: 8
130 + }
131 + }
132 + },
133 + '마법사/비숍': {
134 + major: 'INT',
135 + minor: 'LUK',
136 + jobConst: 1.2,
137 + stats: {
138 + passive: {
139 + major: {
140 + percent: 0
141 + },
142 + attackPower: {
143 + percent: 0
144 + },
145 + damage: {
146 + all: 40 // 벤전스 오브 엔젤 off
147 + },
148 + finalDamage: 0
149 + },
150 + active: {
151 + major: {
152 + pure: 0,
153 + percent: 15
154 + },
155 + attackPower: {
156 + pure: 80,
157 + percent: 0
158 + },
159 + damage: {
160 + all: 10, // 벤전스 오브 엔젤 on -40
161 + boss: 10
162 + },
163 + ignoreGuard: 64,
164 + criticalDamage: 8
165 + }
166 + }
167 + },
168 + '마법사/아크메이지(불,독)': {
169 + major: 'INT',
170 + minor: 'LUK',
171 + jobConst: 1.2,
172 + stats: {
173 + passive: {
174 + major: {
175 + percent: 0
176 + },
177 + attackPower: {
178 + percent: 0
179 + },
180 + damage: {
181 + all: 50
182 + },
183 + finalDamage: 40
184 + },
185 + active: {
186 + major: {
187 + pure: 0,
188 + percent: 15
189 + },
190 + attackPower: {
191 + pure: 30,
192 + percent: 0
193 + },
194 + damage: {
195 + all: 50,
196 + boss: 0
197 + },
198 + ignoreGuard: 20,
199 + criticalDamage: 8
200 + }
201 + }
202 + },
203 + '마법사/아크메이지(썬,콜)': {
204 + major: 'INT',
205 + minor: 'LUK',
206 + jobConst: 1.2,
207 + stats: {
208 + passive: {
209 + major: {
210 + percent: 0
211 + },
212 + attackPower: {
213 + percent: 0
214 + },
215 + damage: {
216 + all: 50
217 + },
218 + finalDamage: 50
219 + },
220 + active: {
221 + major: {
222 + pure: 0,
223 + percent: 15
224 + },
225 + attackPower: {
226 + pure: 30,
227 + percent: 0
228 + },
229 + damage: {
230 + all: 50,
231 + boss: 0
232 + },
233 + ignoreGuard: 32, // 프로즌 브레이크 무시
234 + criticalDamage: 8
235 + }
236 + }
237 + },
238 + '궁수/신궁': {
239 + major: 'DEX',
240 + minor: 'STR',
241 + jobConst: 1,
242 + stats: {
243 + passive: {
244 + major: {
245 + percent: 0
246 + },
247 + attackPower: {
248 + percent: 0
249 + },
250 + damage: {
251 + all: 15
252 + },
253 + finalDamage: 0
254 + },
255 + active: {
256 + major: {
257 + pure: 40,
258 + percent: 15
259 + },
260 + attackPower: {
261 + pure: 30,
262 + percent: 0
263 + },
264 + damage: {
265 + all: 30,
266 + boss: 0
267 + },
268 + ignoreGuard: 60,
269 + criticalDamage: 25
270 + }
271 + }
272 + },
273 + '궁수/보우마스터': {
274 + major: 'DEX',
275 + minor: 'STR',
276 + jobConst: 1,
277 + stats: {
278 + passive: {
279 + major: {
280 + percent: 0
281 + },
282 + attackPower: {
283 + percent: 25
284 + },
285 + damage: {
286 + all: 0
287 + },
288 + finalDamage: 0
289 + },
290 + active: {
291 + major: {
292 + pure: 80,
293 + percent: 15
294 + },
295 + attackPower: {
296 + pure: 120,
297 + percent: 20
298 + },
299 + damage: {
300 + all: 40,
301 + boss: 20
302 + },
303 + ignoreGuard: 0,
304 + criticalDamage: 15
305 + }
306 + }
307 + },
308 + '궁수/패스파인더': {
309 + major: 'DEX',
310 + minor: 'STR',
311 + jobConst: 1,
312 + stats: {
313 + passive: {
314 + major: {
315 + percent: 0
316 + },
317 + attackPower: {
318 + percent: 20
319 + },
320 + damage: {
321 + all: 10
322 + },
323 + finalDamage: 0
324 + },
325 + active: {
326 + major: {
327 + pure: 0,
328 + percent: 15
329 + },
330 + attackPower: {
331 + pure: 0,
332 + percent: 0
333 + },
334 + damage: {
335 + all: 0,
336 + boss: 0
337 + },
338 + ignoreGuard: 0,
339 + criticalDamage: 15
340 + }
341 + }
342 + },
343 + '도적/섀도어': {
344 + major: 'LUK',
345 + minor: 'DEX',
346 + jobConst: 1,
347 + stats: {
348 + passive: {
349 + major: {
350 + percent: 0
351 + },
352 + attackPower: {
353 + percent: 0
354 + },
355 + damage: {
356 + all: 0
357 + },
358 + finalDamage: 25
359 + },
360 + active: {
361 + major: {
362 + pure: 0,
363 + percent: 15
364 + },
365 + attackPower: {
366 + pure: 70,
367 + percent: 0
368 + },
369 + damage: {
370 + all: 35,
371 + boss: 0
372 + },
373 + ignoreGuard: 0,
374 + criticalDamage: 28
375 + }
376 + }
377 + },
378 + '도적/나이트로드': {
379 + major: 'LUK',
380 + minor: 'DEX',
381 + jobConst: 1,
382 + stats: {
383 + passive: {
384 + major: {
385 + percent: 0
386 + },
387 + attackPower: {
388 + percent: 0
389 + },
390 + damage: {
391 + all: 0
392 + },
393 + finalDamage: 25
394 + },
395 + active: {
396 + major: {
397 + pure: 0,
398 + percent: 15
399 + },
400 + attackPower: {
401 + pure: 60,
402 + percent: 0
403 + },
404 + damage: {
405 + all: 10,
406 + boss: 0
407 + },
408 + ignoreGuard: 30,
409 + criticalDamage: 8
410 + }
411 + }
412 + },
413 + '도적/듀얼블레이더': {
414 + major: 'LUK',
415 + minor: 'DEX',
416 + jobConst: 1,
417 + stats: {
418 + passive: {
419 + major: {
420 + percent: 0
421 + },
422 + attackPower: {
423 + percent: 0
424 + },
425 + damage: {
426 + all: 0
427 + },
428 + finalDamage: 20
429 + },
430 + active: {
431 + major: {
432 + pure: 0,
433 + percent: 15
434 + },
435 + attackPower: {
436 + pure: 0,
437 + percent: 0
438 + },
439 + damage: {
440 + all: 20,
441 + boss: 0
442 + },
443 + ignoreGuard: 0,
444 + criticalDamage: 8
445 + }
446 + }
447 + },
448 + '해적/바이퍼': {
449 + major: 'STR',
450 + minor: 'DEX',
451 + jobConst: 1,
452 + stats: {
453 + passive: {
454 + major: {
455 + percent: 0
456 + },
457 + attackPower: {
458 + percent: 0
459 + },
460 + damage: {
461 + all: 0
462 + },
463 + finalDamage: 0
464 + },
465 + active: {
466 + major: {
467 + pure: 0,
468 + percent: 15 // 파이렛 플래그 무시
469 + },
470 + attackPower: {
471 + pure: 50,
472 + percent: 30 // 오버드라이브 무시
473 + },
474 + damage: {
475 + all: 50,
476 + boss: 0
477 + },
478 + ignoreGuard: 55, // 가드 크러쉬 40 적용
479 + criticalDamage: 48
480 + }
481 + }
482 + },
483 + '해적/캡틴': {
484 + major: 'DEX',
485 + minor: 'STR',
486 + jobConst: 1,
487 + stats: {
488 + passive: {
489 + major: {
490 + percent: 0
491 + },
492 + attackPower: {
493 + percent: 0
494 + },
495 + damage: {
496 + all: 0
497 + },
498 + finalDamage: 20
499 + },
500 + active: {
501 + major: {
502 + pure: 0,
503 + percent: 15 // 파이렛 플래그 무시
504 + },
505 + attackPower: {
506 + pure: 45,
507 + percent: 20 // 오버드라이브 무시
508 + },
509 + damage: {
510 + all: 45,
511 + boss: 0
512 + },
513 + ignoreGuard: 25,
514 + criticalDamage: 13
515 + }
516 + }
517 + },
518 + '해적/캐논마스터': {
519 + major: 'STR',
520 + minor: 'DEX',
521 + jobConst: 1,
522 + stats: {
523 + passive: {
524 + major: {
525 + percent: 0
526 + },
527 + attackPower: {
528 + percent: 0
529 + },
530 + damage: {
531 + all: 0
532 + },
533 + finalDamage: 43
534 + },
535 + active: {
536 + major: {
537 + pure: 60,
538 + percent: 15 // 파이렛 플래그 무시
539 + },
540 + attackPower: {
541 + pure: 0,
542 + percent: 0 // 오버드라이브 무시
543 + },
544 + damage: {
545 + all: 70,
546 + boss: 0
547 + },
548 + ignoreGuard: 25,
549 + criticalDamage: 18
550 + }
551 + }
552 + },
553 + '기사단/미하일': {
554 + major: 'STR',
555 + minor: 'DEX',
556 + jobConst: 1,
557 + stats: {
558 + passive: {
559 + major: {
560 + percent: 0
561 + },
562 + attackPower: {
563 + percent: 10
564 + },
565 + damage: {
566 + all: 60
567 + },
568 + finalDamage: 26
569 + },
570 + active: {
571 + major: {
572 + pure: 0,
573 + percent: 15
574 + },
575 + attackPower: {
576 + pure: 75,
577 + percent: 0
578 + },
579 + damage: {
580 + all: 30,
581 + boss: 0
582 + },
583 + ignoreGuard: 15,
584 + criticalDamage: 16
585 + }
586 + }
587 + },
588 + '기사단/소울마스터': {
589 + major: 'STR',
590 +
591 + minor: 'DEX',
592 + jobConst: 1,
593 + stats: {
594 + passive: {
595 + major: {
596 + percent: 0
597 + },
598 + attackPower: {
599 + percent: 10
600 + },
601 + damage: {
602 + all: 0
603 + },
604 + finalDamage: 25
605 + },
606 + active: {
607 + major: {
608 + pure: 0,
609 + percent: 15
610 + },
611 + attackPower: {
612 + pure: 50,
613 + percent: 0
614 + },
615 + damage: {
616 + all: 10,
617 + boss: 0
618 + },
619 + ignoreGuard: 32,
620 + criticalDamage: 8
621 + }
622 + }
623 + },
624 + '기사단/플레임위자드': {
625 + major: 'INT',
626 + minor: 'LUK',
627 + jobConst: 1.2,
628 + stats: {
629 + passive: {
630 + major: {
631 + percent: 0
632 + },
633 + attackPower: {
634 + percent: 10
635 + },
636 + damage: {
637 + all: 0
638 + },
639 + finalDamage: 95
640 + },
641 + active: {
642 + major: {
643 + pure: 0,
644 + percent: 15
645 + },
646 + attackPower: {
647 + pure: 60,
648 + percent: 0
649 + },
650 + damage: {
651 + all: 70,
652 + boss: 0
653 + },
654 + ignoreGuard: 30,
655 + criticalDamage: 8
656 + }
657 + }
658 + },
659 + '기사단/윈드브레이커': {
660 + major: 'DEX',
661 + minor: 'STR',
662 + jobConst: 1,
663 + stats: {
664 + passive: {
665 + major: {
666 + percent: 15
667 + },
668 + attackPower: {
669 + percent: 20
670 + },
671 + damage: {
672 + all: 0
673 + },
674 + finalDamage: 25
675 + },
676 + active: {
677 + major: {
678 + pure: 0,
679 + percent: 15
680 + },
681 + attackPower: {
682 + pure: 85,
683 + percent: 0
684 + },
685 + damage: {
686 + all: 45,
687 + boss: 0
688 + },
689 + ignoreGuard: 15,
690 + criticalDamage: 15
691 + }
692 + }
693 + },
694 + '기사단/나이트워커': {
695 + major: 'LUK',
696 + minor: 'DEX',
697 + jobConst: 1,
698 + stats: {
699 + passive: {
700 + major: {
701 + percent: 0
702 + },
703 + attackPower: {
704 + percent: 10
705 + },
706 + damage: {
707 + all: 30
708 + },
709 + finalDamage: 0
710 + },
711 + active: {
712 + major: {
713 + pure: 0,
714 + percent: 15
715 + },
716 + attackPower: {
717 + pure: 0,
718 + percent: 0
719 + },
720 + damage: {
721 + all: 10,
722 + boss: 0
723 + },
724 + ignoreGuard: 35,
725 + criticalDamage: 8
726 + }
727 + }
728 + },
729 + '기사단/스트라이커': {
730 + major: 'STR',
731 + minor: 'DEX',
732 + jobConst: 1,
733 + stats: {
734 + passive: {
735 + major: {
736 + percent: 0
737 + },
738 + attackPower: {
739 + percent: 10
740 + },
741 + damage: {
742 + all: 5
743 + },
744 + finalDamage: 20
745 + },
746 + active: {
747 + major: {
748 + pure: 0,
749 + percent: 15
750 + },
751 + attackPower: {
752 + pure: 0,
753 + percent: 0 // 오버드라이브 무시
754 + },
755 + damage: {
756 + all: 65,
757 + boss: 0
758 + },
759 + ignoreGuard: 45,
760 + criticalDamage: 8
761 + }
762 + }
763 + },
764 + '아란/아란': {
765 + major: 'STR',
766 + minor: 'DEX',
767 + jobConst: 1,
768 + stats: {
769 + passive: {
770 + major: {
771 + percent: 0
772 + },
773 + attackPower: {
774 + percent: 5
775 + },
776 + damage: {
777 + all: 20
778 + },
779 + finalDamage: 0
780 + },
781 + active: {
782 + major: {
783 + pure: 0,
784 + percent: 15
785 + },
786 + attackPower: {
787 + pure: 70,
788 + percent: 35
789 + },
790 + damage: {
791 + all: 40,
792 + boss: 0
793 + },
794 + ignoreGuard: 15,
795 + criticalDamage: 8
796 + }
797 + }
798 + },
799 + '에반/에반': {
800 + major: 'INT',
801 + minor: 'LUK',
802 + jobConst: 1,
803 + stats: {
804 + passive: {
805 + major: {
806 + percent: 0
807 + },
808 + attackPower: {
809 + percent: 35
810 + },
811 + damage: {
812 + all: 0
813 + },
814 + finalDamage: 50
815 + },
816 + active: {
817 + major: {
818 + pure: 0,
819 + percent: 15
820 + },
821 + attackPower: {
822 + pure: 80,
823 + percent: 0
824 + },
825 + damage: {
826 + all: 10,
827 + boss: 0
828 + },
829 + ignoreGuard: 0,
830 + criticalDamage: 8
831 + }
832 + }
833 + },
834 + '루미너스/루미너스': {
835 + major: 'INT',
836 + minor: 'LUK',
837 + jobConst: 1,
838 + stats: {
839 + passive: {
840 + major: {
841 + percent: 0
842 + },
843 + attackPower: {
844 + percent: 0
845 + },
846 + damage: {
847 + all: 0
848 + },
849 + finalDamage: 82
850 + },
851 + active: {
852 + major: {
853 + pure: 0,
854 + percent: 15
855 + },
856 + attackPower: {
857 + pure: 70,
858 + percent: 0
859 + },
860 + damage: {
861 + all: 40,
862 + boss: 0
863 + },
864 + ignoreGuard: 0,
865 + criticalDamage: 8
866 + }
867 + }
868 + },
869 + '메르세데스/메르세데스': {
870 + major: 'DEX',
871 + minor: 'STR',
872 + jobConst: 1,
873 + stats: {
874 + passive: {
875 + major: {
876 + percent: 0
877 + },
878 + attackPower: {
879 + percent: 0
880 + },
881 + damage: {
882 + all: 50
883 + },
884 + finalDamage: 38
885 + },
886 + active: {
887 + major: {
888 + pure: 0,
889 + percent: 15
890 + },
891 + attackPower: {
892 + pure: 80,
893 + percent: 30
894 + },
895 + damage: {
896 + all: 40,
897 + boss: 0
898 + },
899 + ignoreGuard: 50,
900 + criticalDamage: 8
901 + }
902 + }
903 + },
904 + '팬텀/팬텀': {
905 + major: 'LUK',
906 + minor: 'DEX',
907 + jobConst: 1,
908 + stats: {
909 + passive: {
910 + major: {
911 + percent: 0
912 + },
913 + attackPower: {
914 + percent: 0
915 + },
916 + damage: {
917 + all: 0
918 + },
919 + finalDamage: 63
920 + },
921 + active: {
922 + major: {
923 + pure: 0,
924 + percent: 15
925 + },
926 + attackPower: {
927 + pure: 30, // 분노
928 + percent: 0
929 + },
930 + damage: {
931 + all: 40,
932 + boss: 0
933 + },
934 + ignoreGuard: 44,
935 + criticalDamage: 8
936 + }
937 + }
938 + },
939 + '은월/은월': {
940 + major: 'STR',
941 + minor: 'DEX',
942 + jobConst: 1,
943 + stats: {
944 + passive: {
945 + major: {
946 + percent: 0
947 + },
948 + attackPower: {
949 + percent: 0
950 + },
951 + damage: {
952 + all: 20
953 + },
954 + finalDamage: 26
955 + },
956 + active: {
957 + major: {
958 + pure: 0,
959 + percent: 15
960 + },
961 + attackPower: {
962 + pure: 0,
963 + percent: 0 // 오버드라이브 무시
964 + },
965 + damage: {
966 + all: 65,
967 + boss: 20
968 + },
969 + ignoreGuard: 20,
970 + criticalDamage: 8
971 + }
972 + }
973 + },
974 + '레지스탕스/블래스터': {
975 + major: 'STR',
976 + minor: 'DEX',
977 + jobConst: 1,
978 + stats: {
979 + passive: {
980 + major: {
981 + percent: 0
982 + },
983 + attackPower: {
984 + percent: 15
985 + },
986 + damage: {
987 + all: 20
988 + },
989 + finalDamage: 0
990 + },
991 + active: {
992 + major: {
993 + pure: 0,
994 + percent: 15
995 + },
996 + attackPower: {
997 + pure: 0,
998 + percent: 0
999 + },
1000 + damage: {
1001 + all: 10,
1002 + boss: 0
1003 + },
1004 + ignoreGuard: 15,
1005 + criticalDamage: 8
1006 + }
1007 + }
1008 + },
1009 + '레지스탕스/데몬슬레이어': {
1010 + major: 'STR',
1011 + minor: 'DEX',
1012 + jobConst: 1,
1013 + stats: {
1014 + passive: {
1015 + major: {
1016 + percent: 0
1017 + },
1018 + attackPower: {
1019 + percent: 0
1020 + },
1021 + damage: {
1022 + all: 0
1023 + },
1024 + finalDamage: 25
1025 + },
1026 + active: {
1027 + major: {
1028 + pure: 0,
1029 + percent: 15
1030 + },
1031 + attackPower: {
1032 + pure: 0,
1033 + percent: 0
1034 + },
1035 + damage: {
1036 + all: 45,
1037 + boss: 0
1038 + },
1039 + ignoreGuard: 27,
1040 + criticalDamage: 8
1041 + }
1042 + }
1043 + },
1044 + '레지스탕스/배틀메이지': {
1045 + major: 'INT',
1046 + minor: 'LUK',
1047 + jobConst: 1,
1048 + stats: {
1049 + passive: {
1050 + major: {
1051 + percent: 0
1052 + },
1053 + attackPower: {
1054 + percent: 40
1055 + },
1056 + damage: {
1057 + all: 10
1058 + },
1059 + finalDamage: 15
1060 + },
1061 + active: {
1062 + major: {
1063 + pure: 0,
1064 + percent: 15
1065 + },
1066 + attackPower: {
1067 + pure: 60,
1068 + percent: 0
1069 + },
1070 + damage: {
1071 + all: 50,
1072 + boss: 0
1073 + },
1074 + ignoreGuard: 20,
1075 + criticalDamage: 16
1076 + }
1077 + }
1078 + },
1079 + '레지스탕스/와일드헌터': {
1080 + major: 'DEX',
1081 + minor: 'STR',
1082 + jobConst: 1,
1083 + stats: {
1084 + passive: {
1085 + major: {
1086 + percent: 0
1087 + },
1088 + attackPower: {
1089 + percent: 0
1090 + },
1091 + damage: {
1092 + all: 10
1093 + },
1094 + finalDamage: 20
1095 + },
1096 + active: {
1097 + major: {
1098 + pure: 0,
1099 + percent: 15
1100 + },
1101 + attackPower: {
1102 + pure: 35,
1103 + percent: 20
1104 + },
1105 + damage: {
1106 + all: 10,
1107 + boss: 10
1108 + },
1109 + ignoreGuard: 0,
1110 + criticalDamage: 23
1111 + }
1112 + }
1113 + },
1114 + '레지스탕스/메카닉': {
1115 + major: 'DEX',
1116 + minor: 'STR',
1117 + jobConst: 1,
1118 + stats: {
1119 + passive: {
1120 + major: {
1121 + percent: 0
1122 + },
1123 + attackPower: {
1124 + percent: 0
1125 + },
1126 + damage: {
1127 + all: 10
1128 + },
1129 + finalDamage: 20
1130 + },
1131 + active: {
1132 + major: {
1133 + pure: 0,
1134 + percent: 15
1135 + },
1136 + attackPower: {
1137 + pure: 55,
1138 + percent: 0 // 오버드라이브 무시
1139 + },
1140 + damage: {
1141 + all: 60,
1142 + boss: 0
1143 + },
1144 + ignoreGuard: 10,
1145 + criticalDamage: 8
1146 + }
1147 + }
1148 + },
1149 + '카이저/카이저': {
1150 + major: 'STR',
1151 + minor: 'DEX',
1152 + jobConst: 1,
1153 + stats: {
1154 + passive: {
1155 + major: {
1156 + percent: 0
1157 + },
1158 + attackPower: {
1159 + percent: 30
1160 + },
1161 + damage: {
1162 + all: 0
1163 + },
1164 + finalDamage: 20
1165 + },
1166 + active: {
1167 + major: {
1168 + pure: 0,
1169 + percent: 15
1170 + },
1171 + attackPower: {
1172 + pure: 95,
1173 + percent: 0
1174 + },
1175 + damage: {
1176 + all: 9,
1177 + boss: 0
1178 + },
1179 + ignoreGuard: 15,
1180 + criticalDamage: 8
1181 + }
1182 + }
1183 + },
1184 + '카데나/카데나': {
1185 + major: 'LUK',
1186 + minor: 'DEX',
1187 + jobConst: 1,
1188 + stats: {
1189 + passive: {
1190 + major: {
1191 + percent: 0
1192 + },
1193 + attackPower: {
1194 + percent: 0
1195 + },
1196 + damage: {
1197 + all: 0
1198 + },
1199 + finalDamage: 0
1200 + },
1201 + active: {
1202 + major: {
1203 + pure: 0,
1204 + percent: 15
1205 + },
1206 + attackPower: {
1207 + pure: 0,
1208 + percent: 0
1209 + },
1210 + damage: {
1211 + all: 10,
1212 + boss: 0
1213 + },
1214 + ignoreGuard: 30,
1215 + criticalDamage: 58
1216 + }
1217 + }
1218 + },
1219 + '엔젤릭버스터/엔젤릭버스터': {
1220 + major: 'DEX',
1221 + minor: 'STR',
1222 + jobConst: 1,
1223 + stats: {
1224 + passive: {
1225 + major: {
1226 + percent: 0
1227 + },
1228 + attackPower: {
1229 + percent: 0
1230 + },
1231 + damage: {
1232 + all: 20
1233 + },
1234 + finalDamage: 0
1235 + },
1236 + active: {
1237 + major: {
1238 + pure: 0,
1239 + percent: 15
1240 + },
1241 + attackPower: {
1242 + pure: 50,
1243 + percent: 0
1244 + },
1245 + damage: {
1246 + all: 85, // 소울 컨트랙트 추가치, 어피니티4 1스택
1247 + boss: 20
1248 + },
1249 + ignoreGuard: 30,
1250 + criticalDamage: 53
1251 + }
1252 + }
1253 + },
1254 + '아크/아크': {
1255 + major: 'STR',
1256 + minor: 'DEX',
1257 + jobConst: 1,
1258 + stats: {
1259 + passive: {
1260 + major: {
1261 + percent: 0
1262 + },
1263 + attackPower: {
1264 + percent: 0
1265 + },
1266 + damage: {
1267 + all: 0
1268 + },
1269 + finalDamage: 32
1270 + },
1271 + active: {
1272 + major: {
1273 + pure: 0,
1274 + percent: 15
1275 + },
1276 + attackPower: {
1277 + pure: 90,
1278 + percent: 0 // 오버드라이브 제외
1279 + },
1280 + damage: {
1281 + all: 70,
1282 + boss: 60
1283 + },
1284 + ignoreGuard: 36,
1285 + criticalDamage: 8
1286 + }
1287 + }
1288 + },
1289 + '일리움/일리움': {
1290 + major: 'INT',
1291 + minor: 'LUK',
1292 + jobConst: 1,
1293 + stats: {
1294 + passive: {
1295 + major: {
1296 + percent: 0
1297 + },
1298 + attackPower: {
1299 + percent: 10
1300 + },
1301 + damage: {
1302 + all: 20
1303 + },
1304 + finalDamage: 35
1305 + },
1306 + active: {
1307 + major: {
1308 + pure: 0,
1309 + percent: 15
1310 + },
1311 + attackPower: {
1312 + pure: 46,
1313 + percent: 0
1314 + },
1315 + damage: {
1316 + all: 10,
1317 + boss: 60
1318 + },
1319 + ignoreGuard: 20,
1320 + criticalDamage: 8
1321 + }
1322 + }
1323 + },
1324 + '아델/아델': {
1325 + major: 'STR',
1326 + minor: 'DEX',
1327 + jobConst: 1,
1328 + stats: {
1329 + passive: {
1330 + major: {
1331 + percent: 0
1332 + },
1333 + attackPower: {
1334 + percent: 0
1335 + },
1336 + damage: {
1337 + all: 0
1338 + },
1339 + finalDamage: 50
1340 + },
1341 + active: {
1342 + major: {
1343 + pure: 0,
1344 + percent: 15
1345 + },
1346 + attackPower: {
1347 + pure: 0,
1348 + percent: 0
1349 + },
1350 + damage: {
1351 + all: 105,
1352 + boss: 0
1353 + },
1354 + ignoreGuard: 35,
1355 + criticalDamage: 8
1356 + }
1357 + }
1358 + },
1359 + '제로/제로': {
1360 + major: 'STR',
1361 + minor: 'DEX',
1362 + jobConst: 1,
1363 + stats: {
1364 + passive: {
1365 + major: {
1366 + percent: 0
1367 + },
1368 + attackPower: {
1369 + percent: 0
1370 + },
1371 + damage: {
1372 + all: 0
1373 + },
1374 + finalDamage: 25
1375 + },
1376 + active: {
1377 + major: {
1378 + pure: 0,
1379 + percent: 15
1380 + },
1381 + attackPower: {
1382 + pure: 0,
1383 + percent: 0
1384 + },
1385 + damage: {
1386 + all: 45,
1387 + boss: 0
1388 + },
1389 + ignoreGuard: 50,
1390 + criticalDamage: 8
1391 + }
1392 + }
1393 + },
1394 + '키네시스/키네시스': {
1395 + major: 'INT',
1396 + minor: 'LUK',
1397 + jobConst: 1,
1398 + stats: {
1399 + passive: {
1400 + major: {
1401 + percent: 0
1402 + },
1403 + attackPower: {
1404 + percent: 10
1405 + },
1406 + damage: {
1407 + all: 40
1408 + },
1409 + finalDamage: 25
1410 + },
1411 + active: {
1412 + major: {
1413 + pure: 0,
1414 + percent: 15
1415 + },
1416 + attackPower: {
1417 + pure: 0,
1418 + percent: 0
1419 + },
1420 + damage: {
1421 + all: 10,
1422 + boss: 0
1423 + },
1424 + ignoreGuard: 20,
1425 + criticalDamage: 28
1426 + }
1427 + }
1428 + },
1429 + '호영/호영': {
1430 + major: 'LUK',
1431 + minor: 'DEX',
1432 + jobConst: 1,
1433 + stats: {
1434 + passive: {
1435 + major: {
1436 + percent: 0
1437 + },
1438 + attackPower: {
1439 + percent: 10
1440 + },
1441 + damage: {
1442 + all: 10
1443 + },
1444 + finalDamage: 63
1445 + },
1446 + active: {
1447 + major: {
1448 + pure: 0,
1449 + percent: 15
1450 + },
1451 + attackPower: {
1452 + pure: 0,
1453 + percent: 0
1454 + },
1455 + damage: {
1456 + all: 70,
1457 + boss: 0
1458 + },
1459 + ignoreGuard: 20,
1460 + criticalDamage: 8
1461 + }
1462 + }
1463 + },
1464 +}
...\ No newline at end of file ...\ No newline at end of file
1 +module.exports = {
2 + 'STR': {
3 + 'korean': '힘'
4 + },
5 + 'DEX': {
6 + 'korean': '민첩성'
7 + },
8 + 'INT': {
9 + 'korean': '지력'
10 + },
11 + 'LUK': {
12 + 'korean': '운'
13 + }
14 +}
...\ No newline at end of file ...\ No newline at end of file
1 +module.exports = {
2 + '한손검': 1.2,
3 + '한손도끼': 1.2,
4 + '한손둔기': 1.2,
5 + '스태프': 1,
6 + '완드': 1,
7 + '샤이닝 로드': 1.2,
8 + '단검': 1.3,
9 + '케인': 1.3,
10 + '데스페라도': 1.3,
11 + '에너지소드': 1.5,
12 + '소울 슈터': 1.7,
13 + 'ESP 리미터': 1.2,
14 + '체인': 1.3,
15 + '매직 건틀렛': 1.2,
16 + '부채': 1.3,
17 + '튜너': 1.3,
18 + '두손검': 1.34,
19 + '두손도끼': 1.34,
20 + '두손둔기': 1.34,
21 + '창': 1.34,
22 + '폴암': 1.49,
23 + '태도': 1.34,
24 + '건틀렛 리볼버': 1.7,
25 + '활': 1.3,
26 + '석궁': 1.35,
27 + '듀얼 보우건': 1.3,
28 + '에인션트 보우': 1.3,
29 + '아대': 1.75,
30 + '건': 1.5,
31 + '너클': 1.7,
32 + '핸드캐논': 1.5
33 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -4,6 +4,34 @@ ...@@ -4,6 +4,34 @@
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
7 + "@sindresorhus/is": {
8 + "version": "0.14.0",
9 + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
10 + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ=="
11 + },
12 + "@szmarczak/http-timer": {
13 + "version": "1.1.2",
14 + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
15 + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
16 + "requires": {
17 + "defer-to-connect": "^1.0.1"
18 + }
19 + },
20 + "@types/color-name": {
21 + "version": "1.1.1",
22 + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
23 + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
24 + },
25 + "abab": {
26 + "version": "2.0.3",
27 + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
28 + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg=="
29 + },
30 + "abbrev": {
31 + "version": "1.1.1",
32 + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
33 + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
34 + },
7 "accepts": { 35 "accepts": {
8 "version": "1.3.7", 36 "version": "1.3.7",
9 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 37 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
...@@ -13,11 +41,138 @@ ...@@ -13,11 +41,138 @@
13 "negotiator": "0.6.2" 41 "negotiator": "0.6.2"
14 } 42 }
15 }, 43 },
44 + "acorn": {
45 + "version": "7.2.0",
46 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
47 + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ=="
48 + },
49 + "acorn-globals": {
50 + "version": "6.0.0",
51 + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
52 + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
53 + "requires": {
54 + "acorn": "^7.1.1",
55 + "acorn-walk": "^7.1.1"
56 + }
57 + },
58 + "acorn-walk": {
59 + "version": "7.1.1",
60 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz",
61 + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ=="
62 + },
63 + "ajv": {
64 + "version": "6.12.2",
65 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
66 + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
67 + "requires": {
68 + "fast-deep-equal": "^3.1.1",
69 + "fast-json-stable-stringify": "^2.0.0",
70 + "json-schema-traverse": "^0.4.1",
71 + "uri-js": "^4.2.2"
72 + }
73 + },
74 + "ansi-align": {
75 + "version": "3.0.0",
76 + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
77 + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
78 + "requires": {
79 + "string-width": "^3.0.0"
80 + },
81 + "dependencies": {
82 + "string-width": {
83 + "version": "3.1.0",
84 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
85 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
86 + "requires": {
87 + "emoji-regex": "^7.0.1",
88 + "is-fullwidth-code-point": "^2.0.0",
89 + "strip-ansi": "^5.1.0"
90 + }
91 + }
92 + }
93 + },
94 + "ansi-regex": {
95 + "version": "4.1.0",
96 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
97 + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
98 + },
99 + "ansi-styles": {
100 + "version": "4.2.1",
101 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
102 + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
103 + "requires": {
104 + "@types/color-name": "^1.1.1",
105 + "color-convert": "^2.0.1"
106 + }
107 + },
108 + "anymatch": {
109 + "version": "3.1.1",
110 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
111 + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
112 + "requires": {
113 + "normalize-path": "^3.0.0",
114 + "picomatch": "^2.0.4"
115 + }
116 + },
16 "array-flatten": { 117 "array-flatten": {
17 "version": "1.1.1", 118 "version": "1.1.1",
18 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 119 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
19 "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 120 "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
20 }, 121 },
122 + "asn1": {
123 + "version": "0.2.4",
124 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
125 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
126 + "requires": {
127 + "safer-buffer": "~2.1.0"
128 + }
129 + },
130 + "assert-plus": {
131 + "version": "1.0.0",
132 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
133 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
134 + },
135 + "asynckit": {
136 + "version": "0.4.0",
137 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
138 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
139 + },
140 + "aws-sign2": {
141 + "version": "0.7.0",
142 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
143 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
144 + },
145 + "aws4": {
146 + "version": "1.10.0",
147 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
148 + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
149 + },
150 + "axios": {
151 + "version": "0.19.2",
152 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
153 + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
154 + "requires": {
155 + "follow-redirects": "1.5.10"
156 + }
157 + },
158 + "balanced-match": {
159 + "version": "1.0.0",
160 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
161 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
162 + },
163 + "bcrypt-pbkdf": {
164 + "version": "1.0.2",
165 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
166 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
167 + "requires": {
168 + "tweetnacl": "^0.14.3"
169 + }
170 + },
171 + "binary-extensions": {
172 + "version": "2.0.0",
173 + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
174 + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow=="
175 + },
21 "body-parser": { 176 "body-parser": {
22 "version": "1.19.0", 177 "version": "1.19.0",
23 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 178 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
...@@ -35,11 +190,183 @@ ...@@ -35,11 +190,183 @@
35 "type-is": "~1.6.17" 190 "type-is": "~1.6.17"
36 } 191 }
37 }, 192 },
193 + "boxen": {
194 + "version": "4.2.0",
195 + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
196 + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
197 + "requires": {
198 + "ansi-align": "^3.0.0",
199 + "camelcase": "^5.3.1",
200 + "chalk": "^3.0.0",
201 + "cli-boxes": "^2.2.0",
202 + "string-width": "^4.1.0",
203 + "term-size": "^2.1.0",
204 + "type-fest": "^0.8.1",
205 + "widest-line": "^3.1.0"
206 + }
207 + },
208 + "brace-expansion": {
209 + "version": "1.1.11",
210 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
211 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
212 + "requires": {
213 + "balanced-match": "^1.0.0",
214 + "concat-map": "0.0.1"
215 + }
216 + },
217 + "braces": {
218 + "version": "3.0.2",
219 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
220 + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
221 + "requires": {
222 + "fill-range": "^7.0.1"
223 + }
224 + },
225 + "browser-process-hrtime": {
226 + "version": "1.0.0",
227 + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
228 + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
229 + },
38 "bytes": { 230 "bytes": {
39 "version": "3.1.0", 231 "version": "3.1.0",
40 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 232 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
41 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 233 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
42 }, 234 },
235 + "cacheable-request": {
236 + "version": "6.1.0",
237 + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
238 + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
239 + "requires": {
240 + "clone-response": "^1.0.2",
241 + "get-stream": "^5.1.0",
242 + "http-cache-semantics": "^4.0.0",
243 + "keyv": "^3.0.0",
244 + "lowercase-keys": "^2.0.0",
245 + "normalize-url": "^4.1.0",
246 + "responselike": "^1.0.2"
247 + },
248 + "dependencies": {
249 + "get-stream": {
250 + "version": "5.1.0",
251 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
252 + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
253 + "requires": {
254 + "pump": "^3.0.0"
255 + }
256 + },
257 + "lowercase-keys": {
258 + "version": "2.0.0",
259 + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
260 + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
261 + }
262 + }
263 + },
264 + "camelcase": {
265 + "version": "5.3.1",
266 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
267 + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
268 + },
269 + "caseless": {
270 + "version": "0.12.0",
271 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
272 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
273 + },
274 + "chalk": {
275 + "version": "3.0.0",
276 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
277 + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
278 + "requires": {
279 + "ansi-styles": "^4.1.0",
280 + "supports-color": "^7.1.0"
281 + },
282 + "dependencies": {
283 + "has-flag": {
284 + "version": "4.0.0",
285 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
286 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
287 + },
288 + "supports-color": {
289 + "version": "7.1.0",
290 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
291 + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
292 + "requires": {
293 + "has-flag": "^4.0.0"
294 + }
295 + }
296 + }
297 + },
298 + "chokidar": {
299 + "version": "3.4.0",
300 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
301 + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==",
302 + "requires": {
303 + "anymatch": "~3.1.1",
304 + "braces": "~3.0.2",
305 + "fsevents": "~2.1.2",
306 + "glob-parent": "~5.1.0",
307 + "is-binary-path": "~2.1.0",
308 + "is-glob": "~4.0.1",
309 + "normalize-path": "~3.0.0",
310 + "readdirp": "~3.4.0"
311 + }
312 + },
313 + "ci-info": {
314 + "version": "2.0.0",
315 + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
316 + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
317 + },
318 + "cli-boxes": {
319 + "version": "2.2.0",
320 + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz",
321 + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w=="
322 + },
323 + "clone-response": {
324 + "version": "1.0.2",
325 + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
326 + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
327 + "requires": {
328 + "mimic-response": "^1.0.0"
329 + }
330 + },
331 + "color-convert": {
332 + "version": "2.0.1",
333 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
334 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
335 + "requires": {
336 + "color-name": "~1.1.4"
337 + }
338 + },
339 + "color-name": {
340 + "version": "1.1.4",
341 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
342 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
343 + },
344 + "combined-stream": {
345 + "version": "1.0.8",
346 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
347 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
348 + "requires": {
349 + "delayed-stream": "~1.0.0"
350 + }
351 + },
352 + "concat-map": {
353 + "version": "0.0.1",
354 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
355 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
356 + },
357 + "configstore": {
358 + "version": "5.0.1",
359 + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
360 + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
361 + "requires": {
362 + "dot-prop": "^5.2.0",
363 + "graceful-fs": "^4.1.2",
364 + "make-dir": "^3.0.0",
365 + "unique-string": "^2.0.0",
366 + "write-file-atomic": "^3.0.0",
367 + "xdg-basedir": "^4.0.0"
368 + }
369 + },
43 "content-disposition": { 370 "content-disposition": {
44 "version": "0.5.3", 371 "version": "0.5.3",
45 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 372 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
...@@ -63,6 +390,54 @@ ...@@ -63,6 +390,54 @@
63 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 390 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
64 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 391 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
65 }, 392 },
393 + "core-util-is": {
394 + "version": "1.0.2",
395 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
396 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
397 + },
398 + "crypto-random-string": {
399 + "version": "2.0.0",
400 + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
401 + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
402 + },
403 + "cssom": {
404 + "version": "0.4.4",
405 + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
406 + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
407 + },
408 + "cssstyle": {
409 + "version": "2.3.0",
410 + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
411 + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
412 + "requires": {
413 + "cssom": "~0.3.6"
414 + },
415 + "dependencies": {
416 + "cssom": {
417 + "version": "0.3.8",
418 + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
419 + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
420 + }
421 + }
422 + },
423 + "dashdash": {
424 + "version": "1.14.1",
425 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
426 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
427 + "requires": {
428 + "assert-plus": "^1.0.0"
429 + }
430 + },
431 + "data-urls": {
432 + "version": "2.0.0",
433 + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
434 + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
435 + "requires": {
436 + "abab": "^2.0.3",
437 + "whatwg-mimetype": "^2.3.0",
438 + "whatwg-url": "^8.0.0"
439 + }
440 + },
66 "debug": { 441 "debug": {
67 "version": "2.6.9", 442 "version": "2.6.9",
68 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 443 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
...@@ -71,6 +446,39 @@ ...@@ -71,6 +446,39 @@
71 "ms": "2.0.0" 446 "ms": "2.0.0"
72 } 447 }
73 }, 448 },
449 + "decimal.js": {
450 + "version": "10.2.0",
451 + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz",
452 + "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw=="
453 + },
454 + "decompress-response": {
455 + "version": "3.3.0",
456 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
457 + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
458 + "requires": {
459 + "mimic-response": "^1.0.0"
460 + }
461 + },
462 + "deep-extend": {
463 + "version": "0.6.0",
464 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
465 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
466 + },
467 + "deep-is": {
468 + "version": "0.1.3",
469 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
470 + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
471 + },
472 + "defer-to-connect": {
473 + "version": "1.1.3",
474 + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
475 + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
476 + },
477 + "delayed-stream": {
478 + "version": "1.0.0",
479 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
480 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
481 + },
74 "depd": { 482 "depd": {
75 "version": "1.1.2", 483 "version": "1.1.2",
76 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 484 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
...@@ -81,21 +489,103 @@ ...@@ -81,21 +489,103 @@
81 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 489 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
82 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 490 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
83 }, 491 },
492 + "domexception": {
493 + "version": "2.0.1",
494 + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
495 + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
496 + "requires": {
497 + "webidl-conversions": "^5.0.0"
498 + },
499 + "dependencies": {
500 + "webidl-conversions": {
501 + "version": "5.0.0",
502 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
503 + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="
504 + }
505 + }
506 + },
507 + "dot-prop": {
508 + "version": "5.2.0",
509 + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
510 + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
511 + "requires": {
512 + "is-obj": "^2.0.0"
513 + }
514 + },
515 + "duplexer3": {
516 + "version": "0.1.4",
517 + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
518 + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
519 + },
520 + "ecc-jsbn": {
521 + "version": "0.1.2",
522 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
523 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
524 + "requires": {
525 + "jsbn": "~0.1.0",
526 + "safer-buffer": "^2.1.0"
527 + }
528 + },
84 "ee-first": { 529 "ee-first": {
85 "version": "1.1.1", 530 "version": "1.1.1",
86 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 531 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
87 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 532 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
88 }, 533 },
534 + "emoji-regex": {
535 + "version": "7.0.3",
536 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
537 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
538 + },
89 "encodeurl": { 539 "encodeurl": {
90 "version": "1.0.2", 540 "version": "1.0.2",
91 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 541 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
92 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 542 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
93 }, 543 },
544 + "end-of-stream": {
545 + "version": "1.4.4",
546 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
547 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
548 + "requires": {
549 + "once": "^1.4.0"
550 + }
551 + },
552 + "escape-goat": {
553 + "version": "2.1.1",
554 + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
555 + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q=="
556 + },
94 "escape-html": { 557 "escape-html": {
95 "version": "1.0.3", 558 "version": "1.0.3",
96 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 559 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
97 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 560 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
98 }, 561 },
562 + "escodegen": {
563 + "version": "1.14.2",
564 + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz",
565 + "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==",
566 + "requires": {
567 + "esprima": "^4.0.1",
568 + "estraverse": "^4.2.0",
569 + "esutils": "^2.0.2",
570 + "optionator": "^0.8.1",
571 + "source-map": "~0.6.1"
572 + }
573 + },
574 + "esprima": {
575 + "version": "4.0.1",
576 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
577 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
578 + },
579 + "estraverse": {
580 + "version": "4.3.0",
581 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
582 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
583 + },
584 + "esutils": {
585 + "version": "2.0.3",
586 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
587 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
588 + },
99 "etag": { 589 "etag": {
100 "version": "1.8.1", 590 "version": "1.8.1",
101 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 591 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
...@@ -138,6 +628,39 @@ ...@@ -138,6 +628,39 @@
138 "vary": "~1.1.2" 628 "vary": "~1.1.2"
139 } 629 }
140 }, 630 },
631 + "extend": {
632 + "version": "3.0.2",
633 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
634 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
635 + },
636 + "extsprintf": {
637 + "version": "1.3.0",
638 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
639 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
640 + },
641 + "fast-deep-equal": {
642 + "version": "3.1.1",
643 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
644 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
645 + },
646 + "fast-json-stable-stringify": {
647 + "version": "2.1.0",
648 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
649 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
650 + },
651 + "fast-levenshtein": {
652 + "version": "2.0.6",
653 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
654 + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
655 + },
656 + "fill-range": {
657 + "version": "7.0.1",
658 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
659 + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
660 + "requires": {
661 + "to-regex-range": "^5.0.1"
662 + }
663 + },
141 "finalhandler": { 664 "finalhandler": {
142 "version": "1.1.2", 665 "version": "1.1.2",
143 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 666 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
...@@ -152,6 +675,39 @@ ...@@ -152,6 +675,39 @@
152 "unpipe": "~1.0.0" 675 "unpipe": "~1.0.0"
153 } 676 }
154 }, 677 },
678 + "follow-redirects": {
679 + "version": "1.5.10",
680 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
681 + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
682 + "requires": {
683 + "debug": "=3.1.0"
684 + },
685 + "dependencies": {
686 + "debug": {
687 + "version": "3.1.0",
688 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
689 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
690 + "requires": {
691 + "ms": "2.0.0"
692 + }
693 + }
694 + }
695 + },
696 + "forever-agent": {
697 + "version": "0.6.1",
698 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
699 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
700 + },
701 + "form-data": {
702 + "version": "2.3.3",
703 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
704 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
705 + "requires": {
706 + "asynckit": "^0.4.0",
707 + "combined-stream": "^1.0.6",
708 + "mime-types": "^2.1.12"
709 + }
710 + },
155 "forwarded": { 711 "forwarded": {
156 "version": "0.1.2", 712 "version": "0.1.2",
157 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 713 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
...@@ -162,11 +718,109 @@ ...@@ -162,11 +718,109 @@
162 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 718 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
163 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 719 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
164 }, 720 },
721 + "fsevents": {
722 + "version": "2.1.3",
723 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
724 + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
725 + "optional": true
726 + },
727 + "get-stream": {
728 + "version": "4.1.0",
729 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
730 + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
731 + "requires": {
732 + "pump": "^3.0.0"
733 + }
734 + },
735 + "getpass": {
736 + "version": "0.1.7",
737 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
738 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
739 + "requires": {
740 + "assert-plus": "^1.0.0"
741 + }
742 + },
743 + "glob-parent": {
744 + "version": "5.1.1",
745 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
746 + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
747 + "requires": {
748 + "is-glob": "^4.0.1"
749 + }
750 + },
751 + "global-dirs": {
752 + "version": "2.0.1",
753 + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz",
754 + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==",
755 + "requires": {
756 + "ini": "^1.3.5"
757 + }
758 + },
759 + "got": {
760 + "version": "9.6.0",
761 + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
762 + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
763 + "requires": {
764 + "@sindresorhus/is": "^0.14.0",
765 + "@szmarczak/http-timer": "^1.1.2",
766 + "cacheable-request": "^6.0.0",
767 + "decompress-response": "^3.3.0",
768 + "duplexer3": "^0.1.4",
769 + "get-stream": "^4.1.0",
770 + "lowercase-keys": "^1.0.1",
771 + "mimic-response": "^1.0.1",
772 + "p-cancelable": "^1.0.0",
773 + "to-readable-stream": "^1.0.0",
774 + "url-parse-lax": "^3.0.0"
775 + }
776 + },
777 + "graceful-fs": {
778 + "version": "4.2.4",
779 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
780 + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
781 + },
782 + "har-schema": {
783 + "version": "2.0.0",
784 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
785 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
786 + },
787 + "har-validator": {
788 + "version": "5.1.3",
789 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
790 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
791 + "requires": {
792 + "ajv": "^6.5.5",
793 + "har-schema": "^2.0.0"
794 + }
795 + },
796 + "has-flag": {
797 + "version": "3.0.0",
798 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
799 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
800 + },
801 + "has-yarn": {
802 + "version": "2.1.0",
803 + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
804 + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw=="
805 + },
806 + "html-encoding-sniffer": {
807 + "version": "2.0.1",
808 + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
809 + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
810 + "requires": {
811 + "whatwg-encoding": "^1.0.5"
812 + }
813 + },
165 "http": { 814 "http": {
166 "version": "0.0.1-security", 815 "version": "0.0.1-security",
167 "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz", 816 "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz",
168 "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g==" 817 "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g=="
169 }, 818 },
819 + "http-cache-semantics": {
820 + "version": "4.1.0",
821 + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
822 + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
823 + },
170 "http-errors": { 824 "http-errors": {
171 "version": "1.7.2", 825 "version": "1.7.2",
172 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 826 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
...@@ -186,6 +840,16 @@ ...@@ -186,6 +840,16 @@
186 } 840 }
187 } 841 }
188 }, 842 },
843 + "http-signature": {
844 + "version": "1.2.0",
845 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
846 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
847 + "requires": {
848 + "assert-plus": "^1.0.0",
849 + "jsprim": "^1.2.2",
850 + "sshpk": "^1.7.0"
851 + }
852 + },
189 "iconv-lite": { 853 "iconv-lite": {
190 "version": "0.4.24", 854 "version": "0.4.24",
191 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 855 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
...@@ -194,11 +858,248 @@ ...@@ -194,11 +858,248 @@
194 "safer-buffer": ">= 2.1.2 < 3" 858 "safer-buffer": ">= 2.1.2 < 3"
195 } 859 }
196 }, 860 },
861 + "ignore-by-default": {
862 + "version": "1.0.1",
863 + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
864 + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk="
865 + },
866 + "import-lazy": {
867 + "version": "2.1.0",
868 + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
869 + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM="
870 + },
871 + "imurmurhash": {
872 + "version": "0.1.4",
873 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
874 + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
875 + },
876 + "ini": {
877 + "version": "1.3.5",
878 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
879 + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
880 + },
881 + "ip-regex": {
882 + "version": "2.1.0",
883 + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
884 + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
885 + },
197 "ipaddr.js": { 886 "ipaddr.js": {
198 "version": "1.9.1", 887 "version": "1.9.1",
199 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 888 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
200 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 889 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
201 }, 890 },
891 + "is-binary-path": {
892 + "version": "2.1.0",
893 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
894 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
895 + "requires": {
896 + "binary-extensions": "^2.0.0"
897 + }
898 + },
899 + "is-ci": {
900 + "version": "2.0.0",
901 + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
902 + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
903 + "requires": {
904 + "ci-info": "^2.0.0"
905 + }
906 + },
907 + "is-extglob": {
908 + "version": "2.1.1",
909 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
910 + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
911 + },
912 + "is-fullwidth-code-point": {
913 + "version": "2.0.0",
914 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
915 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
916 + },
917 + "is-glob": {
918 + "version": "4.0.1",
919 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
920 + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
921 + "requires": {
922 + "is-extglob": "^2.1.1"
923 + }
924 + },
925 + "is-installed-globally": {
926 + "version": "0.3.2",
927 + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
928 + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
929 + "requires": {
930 + "global-dirs": "^2.0.1",
931 + "is-path-inside": "^3.0.1"
932 + }
933 + },
934 + "is-npm": {
935 + "version": "4.0.0",
936 + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
937 + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig=="
938 + },
939 + "is-number": {
940 + "version": "7.0.0",
941 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
942 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
943 + },
944 + "is-obj": {
945 + "version": "2.0.0",
946 + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
947 + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
948 + },
949 + "is-path-inside": {
950 + "version": "3.0.2",
951 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
952 + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg=="
953 + },
954 + "is-potential-custom-element-name": {
955 + "version": "1.0.0",
956 + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz",
957 + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c="
958 + },
959 + "is-typedarray": {
960 + "version": "1.0.0",
961 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
962 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
963 + },
964 + "is-yarn-global": {
965 + "version": "0.3.0",
966 + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
967 + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw=="
968 + },
969 + "isstream": {
970 + "version": "0.1.2",
971 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
972 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
973 + },
974 + "jquery": {
975 + "version": "3.5.1",
976 + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
977 + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
978 + },
979 + "jsbn": {
980 + "version": "0.1.1",
981 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
982 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
983 + },
984 + "jsdom": {
985 + "version": "16.2.2",
986 + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.2.2.tgz",
987 + "integrity": "sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==",
988 + "requires": {
989 + "abab": "^2.0.3",
990 + "acorn": "^7.1.1",
991 + "acorn-globals": "^6.0.0",
992 + "cssom": "^0.4.4",
993 + "cssstyle": "^2.2.0",
994 + "data-urls": "^2.0.0",
995 + "decimal.js": "^10.2.0",
996 + "domexception": "^2.0.1",
997 + "escodegen": "^1.14.1",
998 + "html-encoding-sniffer": "^2.0.1",
999 + "is-potential-custom-element-name": "^1.0.0",
1000 + "nwsapi": "^2.2.0",
1001 + "parse5": "5.1.1",
1002 + "request": "^2.88.2",
1003 + "request-promise-native": "^1.0.8",
1004 + "saxes": "^5.0.0",
1005 + "symbol-tree": "^3.2.4",
1006 + "tough-cookie": "^3.0.1",
1007 + "w3c-hr-time": "^1.0.2",
1008 + "w3c-xmlserializer": "^2.0.0",
1009 + "webidl-conversions": "^6.0.0",
1010 + "whatwg-encoding": "^1.0.5",
1011 + "whatwg-mimetype": "^2.3.0",
1012 + "whatwg-url": "^8.0.0",
1013 + "ws": "^7.2.3",
1014 + "xml-name-validator": "^3.0.0"
1015 + }
1016 + },
1017 + "json-buffer": {
1018 + "version": "3.0.0",
1019 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
1020 + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
1021 + },
1022 + "json-schema": {
1023 + "version": "0.2.3",
1024 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1025 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
1026 + },
1027 + "json-schema-traverse": {
1028 + "version": "0.4.1",
1029 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1030 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
1031 + },
1032 + "json-stringify-safe": {
1033 + "version": "5.0.1",
1034 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1035 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
1036 + },
1037 + "jsprim": {
1038 + "version": "1.4.1",
1039 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1040 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1041 + "requires": {
1042 + "assert-plus": "1.0.0",
1043 + "extsprintf": "1.3.0",
1044 + "json-schema": "0.2.3",
1045 + "verror": "1.10.0"
1046 + }
1047 + },
1048 + "keyv": {
1049 + "version": "3.1.0",
1050 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
1051 + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
1052 + "requires": {
1053 + "json-buffer": "3.0.0"
1054 + }
1055 + },
1056 + "latest-version": {
1057 + "version": "5.1.0",
1058 + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
1059 + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
1060 + "requires": {
1061 + "package-json": "^6.3.0"
1062 + }
1063 + },
1064 + "levn": {
1065 + "version": "0.3.0",
1066 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1067 + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1068 + "requires": {
1069 + "prelude-ls": "~1.1.2",
1070 + "type-check": "~0.3.2"
1071 + }
1072 + },
1073 + "lodash": {
1074 + "version": "4.17.15",
1075 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
1076 + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
1077 + },
1078 + "lodash.sortby": {
1079 + "version": "4.7.0",
1080 + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
1081 + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
1082 + },
1083 + "lowercase-keys": {
1084 + "version": "1.0.1",
1085 + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
1086 + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
1087 + },
1088 + "make-dir": {
1089 + "version": "3.1.0",
1090 + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
1091 + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
1092 + "requires": {
1093 + "semver": "^6.0.0"
1094 + },
1095 + "dependencies": {
1096 + "semver": {
1097 + "version": "6.3.0",
1098 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1099 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
1100 + }
1101 + }
1102 + },
202 "media-typer": { 1103 "media-typer": {
203 "version": "0.3.0", 1104 "version": "0.3.0",
204 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1105 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
...@@ -232,6 +1133,24 @@ ...@@ -232,6 +1133,24 @@
232 "mime-db": "1.44.0" 1133 "mime-db": "1.44.0"
233 } 1134 }
234 }, 1135 },
1136 + "mimic-response": {
1137 + "version": "1.0.1",
1138 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
1139 + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
1140 + },
1141 + "minimatch": {
1142 + "version": "3.0.4",
1143 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1144 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1145 + "requires": {
1146 + "brace-expansion": "^1.1.7"
1147 + }
1148 + },
1149 + "minimist": {
1150 + "version": "1.2.5",
1151 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1152 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
1153 + },
235 "ms": { 1154 "ms": {
236 "version": "2.0.0", 1155 "version": "2.0.0",
237 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1156 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
...@@ -242,6 +1161,66 @@ ...@@ -242,6 +1161,66 @@
242 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1161 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
243 "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1162 "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
244 }, 1163 },
1164 + "nodemon": {
1165 + "version": "2.0.4",
1166 + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz",
1167 + "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==",
1168 + "requires": {
1169 + "chokidar": "^3.2.2",
1170 + "debug": "^3.2.6",
1171 + "ignore-by-default": "^1.0.1",
1172 + "minimatch": "^3.0.4",
1173 + "pstree.remy": "^1.1.7",
1174 + "semver": "^5.7.1",
1175 + "supports-color": "^5.5.0",
1176 + "touch": "^3.1.0",
1177 + "undefsafe": "^2.0.2",
1178 + "update-notifier": "^4.0.0"
1179 + },
1180 + "dependencies": {
1181 + "debug": {
1182 + "version": "3.2.6",
1183 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
1184 + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
1185 + "requires": {
1186 + "ms": "^2.1.1"
1187 + }
1188 + },
1189 + "ms": {
1190 + "version": "2.1.2",
1191 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1192 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1193 + }
1194 + }
1195 + },
1196 + "nopt": {
1197 + "version": "1.0.10",
1198 + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
1199 + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
1200 + "requires": {
1201 + "abbrev": "1"
1202 + }
1203 + },
1204 + "normalize-path": {
1205 + "version": "3.0.0",
1206 + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1207 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
1208 + },
1209 + "normalize-url": {
1210 + "version": "4.5.0",
1211 + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
1212 + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ=="
1213 + },
1214 + "nwsapi": {
1215 + "version": "2.2.0",
1216 + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
1217 + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
1218 + },
1219 + "oauth-sign": {
1220 + "version": "0.9.0",
1221 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1222 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
1223 + },
245 "on-finished": { 1224 "on-finished": {
246 "version": "2.3.0", 1225 "version": "2.3.0",
247 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1226 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
...@@ -250,6 +1229,55 @@ ...@@ -250,6 +1229,55 @@
250 "ee-first": "1.1.1" 1229 "ee-first": "1.1.1"
251 } 1230 }
252 }, 1231 },
1232 + "once": {
1233 + "version": "1.4.0",
1234 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1235 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1236 + "requires": {
1237 + "wrappy": "1"
1238 + }
1239 + },
1240 + "optionator": {
1241 + "version": "0.8.3",
1242 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1243 + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1244 + "requires": {
1245 + "deep-is": "~0.1.3",
1246 + "fast-levenshtein": "~2.0.6",
1247 + "levn": "~0.3.0",
1248 + "prelude-ls": "~1.1.2",
1249 + "type-check": "~0.3.2",
1250 + "word-wrap": "~1.2.3"
1251 + }
1252 + },
1253 + "p-cancelable": {
1254 + "version": "1.1.0",
1255 + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
1256 + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
1257 + },
1258 + "package-json": {
1259 + "version": "6.5.0",
1260 + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
1261 + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
1262 + "requires": {
1263 + "got": "^9.6.0",
1264 + "registry-auth-token": "^4.0.0",
1265 + "registry-url": "^5.0.0",
1266 + "semver": "^6.2.0"
1267 + },
1268 + "dependencies": {
1269 + "semver": {
1270 + "version": "6.3.0",
1271 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1272 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
1273 + }
1274 + }
1275 + },
1276 + "parse5": {
1277 + "version": "5.1.1",
1278 + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
1279 + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
1280 + },
253 "parseurl": { 1281 "parseurl": {
254 "version": "1.3.3", 1282 "version": "1.3.3",
255 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1283 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
...@@ -260,6 +1288,26 @@ ...@@ -260,6 +1288,26 @@
260 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1288 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
261 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1289 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
262 }, 1290 },
1291 + "performance-now": {
1292 + "version": "2.1.0",
1293 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1294 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
1295 + },
1296 + "picomatch": {
1297 + "version": "2.2.2",
1298 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
1299 + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
1300 + },
1301 + "prelude-ls": {
1302 + "version": "1.1.2",
1303 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1304 + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
1305 + },
1306 + "prepend-http": {
1307 + "version": "2.0.0",
1308 + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
1309 + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc="
1310 + },
263 "proxy-addr": { 1311 "proxy-addr": {
264 "version": "2.0.6", 1312 "version": "2.0.6",
265 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 1313 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
...@@ -269,6 +1317,38 @@ ...@@ -269,6 +1317,38 @@
269 "ipaddr.js": "1.9.1" 1317 "ipaddr.js": "1.9.1"
270 } 1318 }
271 }, 1319 },
1320 + "psl": {
1321 + "version": "1.8.0",
1322 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
1323 + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
1324 + },
1325 + "pstree.remy": {
1326 + "version": "1.1.8",
1327 + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1328 + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
1329 + },
1330 + "pump": {
1331 + "version": "3.0.0",
1332 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1333 + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1334 + "requires": {
1335 + "end-of-stream": "^1.1.0",
1336 + "once": "^1.3.1"
1337 + }
1338 + },
1339 + "punycode": {
1340 + "version": "2.1.1",
1341 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1342 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1343 + },
1344 + "pupa": {
1345 + "version": "2.0.1",
1346 + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz",
1347 + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==",
1348 + "requires": {
1349 + "escape-goat": "^2.0.0"
1350 + }
1351 + },
272 "qs": { 1352 "qs": {
273 "version": "6.7.0", 1353 "version": "6.7.0",
274 "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1354 "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
...@@ -290,6 +1370,121 @@ ...@@ -290,6 +1370,121 @@
290 "unpipe": "1.0.0" 1370 "unpipe": "1.0.0"
291 } 1371 }
292 }, 1372 },
1373 + "rc": {
1374 + "version": "1.2.8",
1375 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
1376 + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
1377 + "requires": {
1378 + "deep-extend": "^0.6.0",
1379 + "ini": "~1.3.0",
1380 + "minimist": "^1.2.0",
1381 + "strip-json-comments": "~2.0.1"
1382 + }
1383 + },
1384 + "readdirp": {
1385 + "version": "3.4.0",
1386 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
1387 + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
1388 + "requires": {
1389 + "picomatch": "^2.2.1"
1390 + }
1391 + },
1392 + "registry-auth-token": {
1393 + "version": "4.1.1",
1394 + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz",
1395 + "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==",
1396 + "requires": {
1397 + "rc": "^1.2.8"
1398 + }
1399 + },
1400 + "registry-url": {
1401 + "version": "5.1.0",
1402 + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
1403 + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
1404 + "requires": {
1405 + "rc": "^1.2.8"
1406 + }
1407 + },
1408 + "request": {
1409 + "version": "2.88.2",
1410 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
1411 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
1412 + "requires": {
1413 + "aws-sign2": "~0.7.0",
1414 + "aws4": "^1.8.0",
1415 + "caseless": "~0.12.0",
1416 + "combined-stream": "~1.0.6",
1417 + "extend": "~3.0.2",
1418 + "forever-agent": "~0.6.1",
1419 + "form-data": "~2.3.2",
1420 + "har-validator": "~5.1.3",
1421 + "http-signature": "~1.2.0",
1422 + "is-typedarray": "~1.0.0",
1423 + "isstream": "~0.1.2",
1424 + "json-stringify-safe": "~5.0.1",
1425 + "mime-types": "~2.1.19",
1426 + "oauth-sign": "~0.9.0",
1427 + "performance-now": "^2.1.0",
1428 + "qs": "~6.5.2",
1429 + "safe-buffer": "^5.1.2",
1430 + "tough-cookie": "~2.5.0",
1431 + "tunnel-agent": "^0.6.0",
1432 + "uuid": "^3.3.2"
1433 + },
1434 + "dependencies": {
1435 + "qs": {
1436 + "version": "6.5.2",
1437 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1438 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
1439 + },
1440 + "tough-cookie": {
1441 + "version": "2.5.0",
1442 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1443 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1444 + "requires": {
1445 + "psl": "^1.1.28",
1446 + "punycode": "^2.1.1"
1447 + }
1448 + }
1449 + }
1450 + },
1451 + "request-promise-core": {
1452 + "version": "1.1.3",
1453 + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
1454 + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
1455 + "requires": {
1456 + "lodash": "^4.17.15"
1457 + }
1458 + },
1459 + "request-promise-native": {
1460 + "version": "1.0.8",
1461 + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
1462 + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
1463 + "requires": {
1464 + "request-promise-core": "1.1.3",
1465 + "stealthy-require": "^1.1.1",
1466 + "tough-cookie": "^2.3.3"
1467 + },
1468 + "dependencies": {
1469 + "tough-cookie": {
1470 + "version": "2.5.0",
1471 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1472 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1473 + "requires": {
1474 + "psl": "^1.1.28",
1475 + "punycode": "^2.1.1"
1476 + }
1477 + }
1478 + }
1479 + },
1480 + "responselike": {
1481 + "version": "1.0.2",
1482 + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
1483 + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
1484 + "requires": {
1485 + "lowercase-keys": "^1.0.0"
1486 + }
1487 + },
293 "safe-buffer": { 1488 "safe-buffer": {
294 "version": "5.1.2", 1489 "version": "5.1.2",
295 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1490 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
...@@ -300,6 +1495,34 @@ ...@@ -300,6 +1495,34 @@
300 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1495 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
301 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1496 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
302 }, 1497 },
1498 + "saxes": {
1499 + "version": "5.0.1",
1500 + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
1501 + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
1502 + "requires": {
1503 + "xmlchars": "^2.2.0"
1504 + }
1505 + },
1506 + "semver": {
1507 + "version": "5.7.1",
1508 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1509 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
1510 + },
1511 + "semver-diff": {
1512 + "version": "3.1.1",
1513 + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
1514 + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
1515 + "requires": {
1516 + "semver": "^6.3.0"
1517 + },
1518 + "dependencies": {
1519 + "semver": {
1520 + "version": "6.3.0",
1521 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1522 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
1523 + }
1524 + }
1525 + },
303 "send": { 1526 "send": {
304 "version": "0.17.1", 1527 "version": "0.17.1",
305 "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1528 "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
...@@ -343,16 +1566,179 @@ ...@@ -343,16 +1566,179 @@
343 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1566 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
344 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1567 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
345 }, 1568 },
1569 + "signal-exit": {
1570 + "version": "3.0.3",
1571 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
1572 + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
1573 + },
1574 + "source-map": {
1575 + "version": "0.6.1",
1576 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1577 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1578 + "optional": true
1579 + },
1580 + "sshpk": {
1581 + "version": "1.16.1",
1582 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
1583 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
1584 + "requires": {
1585 + "asn1": "~0.2.3",
1586 + "assert-plus": "^1.0.0",
1587 + "bcrypt-pbkdf": "^1.0.0",
1588 + "dashdash": "^1.12.0",
1589 + "ecc-jsbn": "~0.1.1",
1590 + "getpass": "^0.1.1",
1591 + "jsbn": "~0.1.0",
1592 + "safer-buffer": "^2.0.2",
1593 + "tweetnacl": "~0.14.0"
1594 + }
1595 + },
346 "statuses": { 1596 "statuses": {
347 "version": "1.5.0", 1597 "version": "1.5.0",
348 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1598 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
349 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1599 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
350 }, 1600 },
1601 + "stealthy-require": {
1602 + "version": "1.1.1",
1603 + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
1604 + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
1605 + },
1606 + "string-width": {
1607 + "version": "4.2.0",
1608 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
1609 + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
1610 + "requires": {
1611 + "emoji-regex": "^8.0.0",
1612 + "is-fullwidth-code-point": "^3.0.0",
1613 + "strip-ansi": "^6.0.0"
1614 + },
1615 + "dependencies": {
1616 + "ansi-regex": {
1617 + "version": "5.0.0",
1618 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
1619 + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
1620 + },
1621 + "emoji-regex": {
1622 + "version": "8.0.0",
1623 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1624 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
1625 + },
1626 + "is-fullwidth-code-point": {
1627 + "version": "3.0.0",
1628 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1629 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
1630 + },
1631 + "strip-ansi": {
1632 + "version": "6.0.0",
1633 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
1634 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1635 + "requires": {
1636 + "ansi-regex": "^5.0.0"
1637 + }
1638 + }
1639 + }
1640 + },
1641 + "strip-ansi": {
1642 + "version": "5.2.0",
1643 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1644 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1645 + "requires": {
1646 + "ansi-regex": "^4.1.0"
1647 + }
1648 + },
1649 + "strip-json-comments": {
1650 + "version": "2.0.1",
1651 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1652 + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
1653 + },
1654 + "supports-color": {
1655 + "version": "5.5.0",
1656 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1657 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1658 + "requires": {
1659 + "has-flag": "^3.0.0"
1660 + }
1661 + },
1662 + "symbol-tree": {
1663 + "version": "3.2.4",
1664 + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
1665 + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
1666 + },
1667 + "term-size": {
1668 + "version": "2.2.0",
1669 + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz",
1670 + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw=="
1671 + },
1672 + "to-readable-stream": {
1673 + "version": "1.0.0",
1674 + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
1675 + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q=="
1676 + },
1677 + "to-regex-range": {
1678 + "version": "5.0.1",
1679 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1680 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1681 + "requires": {
1682 + "is-number": "^7.0.0"
1683 + }
1684 + },
351 "toidentifier": { 1685 "toidentifier": {
352 "version": "1.0.0", 1686 "version": "1.0.0",
353 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1687 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
354 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1688 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
355 }, 1689 },
1690 + "touch": {
1691 + "version": "3.1.0",
1692 + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1693 + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1694 + "requires": {
1695 + "nopt": "~1.0.10"
1696 + }
1697 + },
1698 + "tough-cookie": {
1699 + "version": "3.0.1",
1700 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
1701 + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
1702 + "requires": {
1703 + "ip-regex": "^2.1.0",
1704 + "psl": "^1.1.28",
1705 + "punycode": "^2.1.1"
1706 + }
1707 + },
1708 + "tr46": {
1709 + "version": "2.0.2",
1710 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
1711 + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
1712 + "requires": {
1713 + "punycode": "^2.1.1"
1714 + }
1715 + },
1716 + "tunnel-agent": {
1717 + "version": "0.6.0",
1718 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1719 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1720 + "requires": {
1721 + "safe-buffer": "^5.0.1"
1722 + }
1723 + },
1724 + "tweetnacl": {
1725 + "version": "0.14.5",
1726 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1727 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
1728 + },
1729 + "type-check": {
1730 + "version": "0.3.2",
1731 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1732 + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1733 + "requires": {
1734 + "prelude-ls": "~1.1.2"
1735 + }
1736 + },
1737 + "type-fest": {
1738 + "version": "0.8.1",
1739 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
1740 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
1741 + },
356 "type-is": { 1742 "type-is": {
357 "version": "1.6.18", 1743 "version": "1.6.18",
358 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1744 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
...@@ -362,20 +1748,195 @@ ...@@ -362,20 +1748,195 @@
362 "mime-types": "~2.1.24" 1748 "mime-types": "~2.1.24"
363 } 1749 }
364 }, 1750 },
1751 + "typedarray-to-buffer": {
1752 + "version": "3.1.5",
1753 + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
1754 + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
1755 + "requires": {
1756 + "is-typedarray": "^1.0.0"
1757 + }
1758 + },
1759 + "undefsafe": {
1760 + "version": "2.0.3",
1761 + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz",
1762 + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==",
1763 + "requires": {
1764 + "debug": "^2.2.0"
1765 + }
1766 + },
1767 + "unique-string": {
1768 + "version": "2.0.0",
1769 + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
1770 + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
1771 + "requires": {
1772 + "crypto-random-string": "^2.0.0"
1773 + }
1774 + },
365 "unpipe": { 1775 "unpipe": {
366 "version": "1.0.0", 1776 "version": "1.0.0",
367 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1777 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
368 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1778 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
369 }, 1779 },
1780 + "update-notifier": {
1781 + "version": "4.1.0",
1782 + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz",
1783 + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==",
1784 + "requires": {
1785 + "boxen": "^4.2.0",
1786 + "chalk": "^3.0.0",
1787 + "configstore": "^5.0.1",
1788 + "has-yarn": "^2.1.0",
1789 + "import-lazy": "^2.1.0",
1790 + "is-ci": "^2.0.0",
1791 + "is-installed-globally": "^0.3.1",
1792 + "is-npm": "^4.0.0",
1793 + "is-yarn-global": "^0.3.0",
1794 + "latest-version": "^5.0.0",
1795 + "pupa": "^2.0.1",
1796 + "semver-diff": "^3.1.1",
1797 + "xdg-basedir": "^4.0.0"
1798 + }
1799 + },
1800 + "uri-js": {
1801 + "version": "4.2.2",
1802 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1803 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1804 + "requires": {
1805 + "punycode": "^2.1.0"
1806 + }
1807 + },
1808 + "url-parse-lax": {
1809 + "version": "3.0.0",
1810 + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
1811 + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
1812 + "requires": {
1813 + "prepend-http": "^2.0.0"
1814 + }
1815 + },
370 "utils-merge": { 1816 "utils-merge": {
371 "version": "1.0.1", 1817 "version": "1.0.1",
372 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1818 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
373 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1819 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
374 }, 1820 },
1821 + "uuid": {
1822 + "version": "3.4.0",
1823 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1824 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
1825 + },
375 "vary": { 1826 "vary": {
376 "version": "1.1.2", 1827 "version": "1.1.2",
377 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1828 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
378 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1829 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1830 + },
1831 + "verror": {
1832 + "version": "1.10.0",
1833 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1834 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1835 + "requires": {
1836 + "assert-plus": "^1.0.0",
1837 + "core-util-is": "1.0.2",
1838 + "extsprintf": "^1.2.0"
1839 + }
1840 + },
1841 + "w3c-hr-time": {
1842 + "version": "1.0.2",
1843 + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
1844 + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
1845 + "requires": {
1846 + "browser-process-hrtime": "^1.0.0"
1847 + }
1848 + },
1849 + "w3c-xmlserializer": {
1850 + "version": "2.0.0",
1851 + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
1852 + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
1853 + "requires": {
1854 + "xml-name-validator": "^3.0.0"
1855 + }
1856 + },
1857 + "webidl-conversions": {
1858 + "version": "6.1.0",
1859 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
1860 + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
1861 + },
1862 + "whatwg-encoding": {
1863 + "version": "1.0.5",
1864 + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
1865 + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
1866 + "requires": {
1867 + "iconv-lite": "0.4.24"
1868 + }
1869 + },
1870 + "whatwg-mimetype": {
1871 + "version": "2.3.0",
1872 + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
1873 + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
1874 + },
1875 + "whatwg-url": {
1876 + "version": "8.1.0",
1877 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz",
1878 + "integrity": "sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==",
1879 + "requires": {
1880 + "lodash.sortby": "^4.7.0",
1881 + "tr46": "^2.0.2",
1882 + "webidl-conversions": "^5.0.0"
1883 + },
1884 + "dependencies": {
1885 + "webidl-conversions": {
1886 + "version": "5.0.0",
1887 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
1888 + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="
1889 + }
1890 + }
1891 + },
1892 + "widest-line": {
1893 + "version": "3.1.0",
1894 + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
1895 + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
1896 + "requires": {
1897 + "string-width": "^4.0.0"
1898 + }
1899 + },
1900 + "word-wrap": {
1901 + "version": "1.2.3",
1902 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1903 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
1904 + },
1905 + "wrappy": {
1906 + "version": "1.0.2",
1907 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1908 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1909 + },
1910 + "write-file-atomic": {
1911 + "version": "3.0.3",
1912 + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
1913 + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
1914 + "requires": {
1915 + "imurmurhash": "^0.1.4",
1916 + "is-typedarray": "^1.0.0",
1917 + "signal-exit": "^3.0.2",
1918 + "typedarray-to-buffer": "^3.1.5"
1919 + }
1920 + },
1921 + "ws": {
1922 + "version": "7.3.0",
1923 + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz",
1924 + "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w=="
1925 + },
1926 + "xdg-basedir": {
1927 + "version": "4.0.0",
1928 + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
1929 + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
1930 + },
1931 + "xml-name-validator": {
1932 + "version": "3.0.0",
1933 + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
1934 + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
1935 + },
1936 + "xmlchars": {
1937 + "version": "2.2.0",
1938 + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
1939 + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
379 } 1940 }
380 } 1941 }
381 } 1942 }
......
...@@ -9,7 +9,11 @@ ...@@ -9,7 +9,11 @@
9 "author": "", 9 "author": "",
10 "license": "ISC", 10 "license": "ISC",
11 "dependencies": { 11 "dependencies": {
12 + "axios": "^0.19.2",
12 "express": "^4.17.1", 13 "express": "^4.17.1",
13 - "http": "0.0.1-security" 14 + "http": "0.0.1-security",
15 + "jquery": "^3.5.1",
16 + "jsdom": "^16.2.2",
17 + "nodemon": "^2.0.4"
14 } 18 }
15 } 19 }
......
1 +axios = require('axios');
2 +
3 +const crwalCharacterCode = async function(nickname) {
4 + try {
5 + const resp = await axios.get("https://maplestory.nexon.com/Ranking/World/Total?c=" + encodeURI(nickname));
6 +
7 + const regex = new RegExp(`<dt><a href=\\"\\/Common\\/Character\\/Detail\\/[^\\?]+?\\?p=(.+?)\\"\\s+target=.+?\\/>${nickname}<\\/a><\\/dt>`);
8 + const regexResult = regex.exec(resp.data);
9 +
10 + if (!regexResult)
11 + return -2;
12 +
13 + return regexResult[1];
14 + } catch (error) {
15 + console.log(error);
16 + return -1;
17 + }
18 +}
19 +
20 +const getCharacterInfo = async function(nickname, characterCode) {
21 + try {
22 + const resp = await axios.get("https://maplestory.nexon.com/Common/Character/Detail/" + encodeURI(nickname) + "?p=" + characterCode);
23 +
24 + if (resp.data.indexOf("공개하지 않은 정보입니다.") >= 0) {
25 + throw new Error("private_character");
26 + }
27 +
28 + if (resp.data.indexOf("메이플스토리 게임 점검 중에는 이용하실 수 없습니다.") >= 0) {
29 + throw new Error("game_checking");
30 + }
31 +
32 + const character = {
33 + nickname: nickname,
34 + characterCode: characterCode,
35 + job: null,
36 + level: null,
37 + avatar: null,
38 + server: {
39 + icon: null,
40 + name: null
41 + },
42 + majorName: null,
43 + attackPowerName: null
44 + };
45 + const stats = {
46 + major: 0,
47 + minor: 0,
48 + majorHyper: 0,
49 + damageHyper: 0,
50 + criticalDamage: 0,
51 + bossAttackDamage: 0,
52 + ignoreGuard: 0,
53 + statAttackPower: 0
54 + };
55 +
56 + const { JSDOM } = require('jsdom');
57 + const dom = new JSDOM(resp.data);
58 + const $ = (require('jquery'))(dom.window);
59 +
60 + const jobModel = require('../model/job');
61 + const statModel = require('../model/stat');
62 +
63 + character.job = $(".tab01_con_wrap .table_style01:eq(0) tbody tr:eq(0) td:eq(1) span").text();
64 + character.level = parseInt($(".char_info dl:eq(0) dd").text().substring(3));
65 + character.avatar = $(".char_img img").attr("src");
66 + character.server = {
67 + name: $(".char_info dl:eq(2) dd").text(),
68 + icon: $(".char_info dl:eq(2) dd img").attr("src")
69 + };
70 + character.majorName = jobModel[character.job].major;
71 + character.attackPowerName = character.majorName == "INT" ? "마력" : "공격력";
72 +
73 + const $statInfo = $(".tab01_con_wrap .table_style01:eq(1)");
74 + $("tbody tr", $statInfo).each(function() {
75 + if ($("th", this).length == 1) {
76 + if ($("th span", this).text() == "하이퍼스탯") {
77 + const values = $("td span", this).html().split("<br>");
78 +
79 + const regexMajor = new RegExp(`${statModel[character.majorName].korean} (\\d+) 증가`);
80 + const regexDamage = new RegExp(`^데미지 (\\d+)% 증가`);
81 +
82 + let regexResult;
83 + for (let i = 0; i < values.length; i++) {
84 + if (regexResult = regexMajor.exec(values[i]))
85 + stats['majorHyper'] = parseInt(regexResult[1]);
86 + else if (regexResult = regexDamage.exec(values[i]))
87 + stats['damageHyper'] = parseInt(regexResult[1]);
88 + }
89 + }
90 + } else {
91 + for (let i = 0; i < 2; i++) {
92 + const statName = $(`th:eq(${i}) span`, this).text();
93 + const value = $(`td:eq(${i}) span`, this).text().replace(/\,/g, "");
94 +
95 + switch (statName) {
96 + case character.majorName:
97 + stats['major'] = parseInt(value);
98 + break;
99 + case jobModel[character.job].minor:
100 + stats['minor'] = parseInt(value);
101 + break;
102 + case "크리티컬 데미지":
103 + stats['criticalDamage'] = parseInt(value);
104 + break;
105 + case "보스공격력":
106 + stats['bossAttackDamage'] = parseInt(value);
107 + break;
108 + case "방어율무시":
109 + stats['ignoreGuard'] = parseInt(value);
110 + break;
111 + case "스탯공격력":
112 + stats['statAttackPower'] = parseInt(value.split(' ~ ')[1]);
113 + }
114 + }
115 + }
116 + });
117 +
118 + return {
119 + character: character,
120 + stats: stats
121 + };
122 + } catch (error) {
123 + console.log(error);
124 + if (error.message == "private_character")
125 + return -1;
126 + else if (error.message == "game_checking")
127 + return -2;
128 + else
129 + return -999;
130 + }
131 +}
132 +
133 +const analyzeEquipment = async function(nickname, characterCode, job) {
134 + try {
135 + const resp = await axios.get("https://maplestory.nexon.com/Common/Character/Detail/" + encodeURI(nickname) + "/Equipment?p=" + characterCode);
136 +
137 + if (resp.data.indexOf("공개하지 않은 정보입니다.") >= 0) {
138 + throw new Error("private_character");
139 + }
140 +
141 + if (resp.data.indexOf("메이플스토리 게임 점검 중에는 이용하실 수 없습니다.") >= 0) {
142 + throw new Error("game_checking");
143 + }
144 +
145 + const { JSDOM } = require('jsdom');
146 + const dom = new JSDOM(resp.data);
147 + const $ = (require('jquery'))(dom.window);
148 +
149 + // 아케인심볼 분석
150 + let majorArcane = 0;
151 + const arcaneURLs = [];
152 + $(".tab03_con_wrap .arcane_weapon_wrap .item_pot li span a").each(async function() {
153 + if (!!$(this).attr("href"))
154 + arcaneURLs.push("https://maplestory.nexon.com" + $(this).attr("href"));
155 + });
156 +
157 + for (let i = 0; i < arcaneURLs.length; i++) {
158 + const equipmentResp = await axios.get(arcaneURLs[i], {
159 + headers: {
160 + 'X-Requested-With': 'XMLHttpRequest'
161 + }
162 + });
163 +
164 + const equipmentDom = new JSDOM(equipmentResp.data.view);
165 + const $equipment = (require('jquery'))(equipmentDom.window);
166 +
167 + majorArcane += parseInt($equipment(".stet_info ul li:eq(2) .point_td font:eq(0)").text().substring(1));
168 + }
169 +
170 + // 장비 분석
171 + const jobModel = require('../model/job');
172 +
173 + let damagePercent = 0;
174 + let majorPercent = 0;
175 + let attackPowerPercent = 0;
176 + let weapon = undefined;
177 + const equipmentURLs = [];
178 + $(".tab01_con_wrap .weapon_wrap .item_pot li span a").each(async function() {
179 + equipmentURLs.push("https://maplestory.nexon.com" + $(this).attr("href"));
180 + });
181 +
182 + for (let i = 0; i < equipmentURLs.length; i++) {
183 + const equipmentResp = await axios.get(equipmentURLs[i], {
184 + headers: {
185 + 'X-Requested-With': 'XMLHttpRequest'
186 + }
187 + });
188 +
189 + const equipmentDom = new JSDOM(equipmentResp.data.view);
190 + const $equipment = (require('jquery'))(equipmentDom.window);
191 +
192 + const equipmentType = $equipment(".item_ability .ablilty02:eq(1) .job_name em").text();
193 + if (equipmentType.indexOf("손무기") >= 0 && equipmentType.indexOf("블레이드") < 0 && equipmentType.indexOf("대검") < 0) {
194 + weapon = equipmentType.split(" (")[0];
195 + }
196 +
197 + $equipment(".stet_info ul li").each(function() {
198 + const regexMajor1 = new RegExp(`${jobModel[job].major} : \\+(\\d+)%`);
199 + const regexMajor2 = new RegExp(`올스탯 : \\+(\\d+)%`);
200 + const regexAttackPower = (jobModel[job].major == "INT") ?
201 + new RegExp(`마력 : \\+(\\d+)%`) :
202 + new RegExp(`공격력 : \\+(\\d+)%`);
203 + const regexDamage = new RegExp(`^데미지 : \\+(\\d+)%`);
204 +
205 + if ($(this).find(".stet_th span").text() == "올스탯") {
206 + majorPercent += parseInt($(this).find(".point_td font:eq(0)").text().substring(1));
207 + } else if ($(this).find(".stet_th span").text().indexOf("잠재옵션") >= 0) {
208 + const values = $(this).find(".point_td").html().split("<br>");
209 + for (let j = 0; j < values.length; j++) {
210 + const value = values[j].trim();
211 + let regexResult;
212 +
213 + if (regexResult = (regexMajor1.exec(value) || regexMajor2.exec(value))) {
214 + majorPercent += parseInt(regexResult[1]);
215 + } else if (regexResult = regexAttackPower.exec(value)) {
216 + attackPowerPercent += parseInt(regexResult[1]);
217 + } else if (regexResult = regexDamage.exec(value)) {
218 + damagePercent += parseInt(regexResult[1]);
219 + }
220 + }
221 + }
222 + })
223 + }
224 +
225 + return {
226 + majorArcane: majorArcane,
227 + majorPercent: majorPercent,
228 + attackPowerPercent: attackPowerPercent,
229 + damagePercent: damagePercent,
230 + weapon: weapon
231 + };
232 + } catch (error) {
233 + console.log(error);
234 + if (error.message == "private_character")
235 + return -1;
236 + else if (error.message == "game_checking")
237 + return -2;
238 + else
239 + return -999;
240 + }
241 +}
242 +
243 +const analyzeStats = function(characterInfo, analysisEquipment) {
244 + const jobModel = require('../model/job');
245 + const job = jobModel[characterInfo.character.job];
246 + const jobDefault = jobModel.default;
247 + const weaponConst = require('../model/weapon')[analysisEquipment.weapon] || 1;
248 + const stats = {
249 + major: {
250 + pure: 0,
251 + percent: analysisEquipment.majorPercent +
252 + job.stats.passive.major.percent +
253 + jobDefault.stats.passive.major.percent,
254 + added: 0
255 + },
256 + minor: characterInfo.stats.minor,
257 + damage: {
258 + all: characterInfo.stats.damageHyper +
259 + analysisEquipment.damagePercent +
260 + job.stats.passive.damage.all +
261 + jobDefault.stats.passive.damage.all,
262 + boss: characterInfo.stats.bossAttackDamage
263 + },
264 + finalDamage: job.stats.passive.finalDamage,
265 + criticalDamage: characterInfo.stats.criticalDamage + jobDefault.stats.passive.criticalDamage,
266 + attackPower: {
267 + pure: 0,
268 + percent: analysisEquipment.attackPowerPercent +
269 + job.stats.passive.attackPower.percent
270 + },
271 + ignoreGuard: characterInfo.stats.ignoreGuard
272 + };
273 +
274 + stats.major.added = characterInfo.stats.majorHyper +
275 + analysisEquipment.majorArcane +
276 + jobDefault.stats.passive.major.added;
277 + stats.major.pure = (characterInfo.stats.major - stats.major.added) / (1 + stats.major.percent / 100);
278 +
279 + stats.attackPower.pure = characterInfo.stats.statAttackPower * 100 / (characterInfo.stats.major * 4 + stats.minor) / job.jobConst / weaponConst / (1 + stats.attackPower.percent / 100) / (1 + stats.damage.all / 100) / (1 + stats.finalDamage / 100);
280 +
281 + return stats;
282 +}
283 +
284 +const calculateEfficiency = function(stats, job, weapon) {
285 + const efficiency = {
286 + major: {
287 + pure: 1,
288 + percent: 0
289 + },
290 + attackPower: {
291 + pure: 0,
292 + percent: 0,
293 + },
294 + damage: 0,
295 + criticalDamage: 0,
296 + ignoreGuard: 0
297 + };
298 +
299 + const defaultPower = calculatePower(stats, job, weapon);
300 +
301 + stats.major.pure += 1;
302 + const majorPure = calculatePower(stats, job, weapon) - defaultPower;
303 + stats.major.pure -= 1;
304 +
305 + if (majorPure == 0)
306 + return efficiency;
307 +
308 + stats.major.percent += 1;
309 + efficiency.major.percent = (calculatePower(stats, job, weapon) - defaultPower) / majorPure;
310 + stats.major.percent -= 1;
311 +
312 + stats.attackPower.pure += 1;
313 + efficiency.attackPower.pure = (calculatePower(stats, job, weapon) - defaultPower) / majorPure;
314 + stats.attackPower.pure -= 1;
315 +
316 + stats.attackPower.percent += 1;
317 + efficiency.attackPower.percent = (calculatePower(stats, job, weapon) - defaultPower) / majorPure;
318 + stats.attackPower.percent -= 1;
319 +
320 + stats.damage.all += 1;
321 + efficiency.damage = (calculatePower(stats, job, weapon) - defaultPower) / majorPure;
322 + stats.damage.all -= 1;
323 +
324 + stats.criticalDamage += 1;
325 + efficiency.criticalDamage = (calculatePower(stats, job, weapon) - defaultPower) / majorPure;
326 + stats.criticalDamage -= 1;
327 +
328 + // 곱연산
329 + const ignoreGuardSaved = stats.ignoreGuard;
330 + stats.ignoreGuard = (1 - (1 - stats.ignoreGuard / 100) * 0.99) * 100;
331 + efficiency.ignoreGuard = (calculatePower(stats, job, weapon) - defaultPower) / majorPure;
332 + stats.ignoreGuard = ignoreGuardSaved;
333 +
334 + return efficiency;
335 +}
336 +
337 +// 버프 적용 스탯 구하기
338 +const getBuffStats = function(stats, job) {
339 + const jobModel = require('../model/job');
340 + const buff = jobModel[job].stats.active;
341 + const defaultBuff = jobModel.default.stats.active;
342 +
343 + return {
344 + major: {
345 + pure: stats.major.pure + buff.major.pure,
346 + percent: stats.major.percent + buff.major.percent,
347 + added: stats.major.added
348 + },
349 + minor: stats.minor,
350 + damage: {
351 + all: stats.damage.all + buff.damage.all + defaultBuff.damage.all,
352 + boss: stats.damage.boss + buff.damage.boss + defaultBuff.damage.boss
353 + },
354 + finalDamage: stats.finalDamage,
355 + criticalDamage: stats.criticalDamage + buff.criticalDamage + defaultBuff.criticalDamage,
356 + attackPower: {
357 + pure: stats.attackPower.pure + buff.attackPower.pure,
358 + percent: stats.attackPower.percent + buff.attackPower.percent + defaultBuff.attackPower.percent
359 + },
360 + ignoreGuard: (1 - (1 - (stats.ignoreGuard / 100)) * (1 - (buff.ignoreGuard / 100)) * (1 - (defaultBuff.ignoreGuard / 100))) * 100
361 + };
362 +}
363 +
364 +// 크리티컬 데미지, 보스 공격력, 방어율 무시를 반영하여 방어율 300% 몬스터 공격시 데미지 산출 값
365 +const calculatePower = function(stats, job, weapon) {
366 + const jobConst = require('../model/job')[job].jobConst;
367 + const weaponConst = require('../model/weapon')[weapon];
368 + return Math.max(
369 + (
370 + (stats.major.pure * (1 + stats.major.percent / 100) + stats.major.added) * 4 +
371 + stats.minor
372 + ) *
373 + 0.01 *
374 + (stats.attackPower.pure * (1 + stats.attackPower.percent / 100)) *
375 + jobConst *
376 + weaponConst *
377 + (1 + stats.damage.all / 100 + stats.damage.boss / 100) *
378 + (1 + stats.finalDamage / 100) *
379 + (1.35 + stats.criticalDamage / 100) *
380 + (1 - 3 * (1 - stats.ignoreGuard / 100)),
381 + 1);
382 +}
383 +
384 +module.exports = {
385 + getCharacter: async function(req, res) {
386 + if (!req.query.nickname) {
387 + res.status(204).send();
388 + return;
389 + }
390 +
391 + const nickname = req.query.nickname;
392 + const characterCode = await crwalCharacterCode(req.query.nickname);
393 +
394 + if (characterCode == -1) {
395 + res.status(500).send();
396 + return;
397 + } else if (characterCode == -2) {
398 + res.status(404).send();
399 + return;
400 + }
401 +
402 + const characterInfo = await getCharacterInfo(nickname, characterCode);
403 + if (characterInfo == -1) {
404 + // 접근 권한 설정 필요
405 + res.status(403).send();
406 + return;
407 + } else if (characterInfo == -2) {
408 + // 점검중
409 + res.status(503).send();
410 + return;
411 + } else if (characterInfo < 0) {
412 + res.status(400).send();
413 + return;
414 + }
415 +
416 + const analysisEquipment = await analyzeEquipment(nickname, characterCode, characterInfo.character.job);
417 + if (analysisEquipment == -1) {
418 + // 접근 권한 설정 필요
419 + res.status(403).send();
420 + return;
421 + } else if (analysisEquipment == -2) {
422 + // 점검중
423 + res.status(503).send();
424 + return;
425 + } else if (analysisEquipment < 0) {
426 + res.status(400).send();
427 + return;
428 + }
429 +
430 + const stats = analyzeStats(characterInfo, analysisEquipment);
431 + const buffStats = getBuffStats(stats, characterInfo.character.job);
432 + const efficiency = calculateEfficiency(stats, characterInfo.character.job, analysisEquipment.weapon);
433 + const buffEfficiency = calculateEfficiency(buffStats, characterInfo.character.job, analysisEquipment.weapon);
434 +
435 + const result = {
436 + info: characterInfo.character,
437 + analysis: {
438 + default: {
439 + stats: stats,
440 + efficiency: efficiency
441 + },
442 + buff: {
443 + stats: buffStats,
444 + efficiency: buffEfficiency
445 + }
446 + }
447 + };
448 +
449 + console.log(JSON.stringify(result));
450 + res.send(result);
451 + }
452 +};
...\ No newline at end of file ...\ No newline at end of file
1 -module.exports = function(req, res) {
2 - res.send('this is home');
3 -}
...\ No newline at end of file ...\ No newline at end of file
1 let routes = {}; 1 let routes = {};
2 -routes.home = require('./home'); 2 +routes.character = require('./character');
3 3
4 module.exports = routes; 4 module.exports = routes;
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -5,31 +5,39 @@ ...@@ -5,31 +5,39 @@
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
7 "@babel/code-frame": { 7 "@babel/code-frame": {
8 - "version": "7.8.3", 8 + "version": "7.10.1",
9 - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 9 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz",
10 - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 10 + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==",
11 "dev": true, 11 "dev": true,
12 "requires": { 12 "requires": {
13 - "@babel/highlight": "^7.8.3" 13 + "@babel/highlight": "^7.10.1"
14 } 14 }
15 }, 15 },
16 "@babel/helper-validator-identifier": { 16 "@babel/helper-validator-identifier": {
17 - "version": "7.9.5", 17 + "version": "7.10.1",
18 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", 18 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz",
19 - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", 19 + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==",
20 "dev": true 20 "dev": true
21 }, 21 },
22 "@babel/highlight": { 22 "@babel/highlight": {
23 - "version": "7.9.0", 23 + "version": "7.10.1",
24 - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", 24 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz",
25 - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", 25 + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==",
26 "dev": true, 26 "dev": true,
27 "requires": { 27 "requires": {
28 - "@babel/helper-validator-identifier": "^7.9.0", 28 + "@babel/helper-validator-identifier": "^7.10.1",
29 "chalk": "^2.0.0", 29 "chalk": "^2.0.0",
30 "js-tokens": "^4.0.0" 30 "js-tokens": "^4.0.0"
31 } 31 }
32 }, 32 },
33 + "@lottiefiles/svelte-lottie-player": {
34 + "version": "0.1.4",
35 + "resolved": "https://registry.npmjs.org/@lottiefiles/svelte-lottie-player/-/svelte-lottie-player-0.1.4.tgz",
36 + "integrity": "sha512-NVNDdB1kQLIOytWsTxEYRRHhl2T9oZFfKSkUEr8m73JM7jaLP8J8GGH9B6A0vXU4wKsjR69ET6JEvib6z1QH+g==",
37 + "requires": {
38 + "lottie-web": "^5.6.8"
39 + }
40 + },
33 "@nodelib/fs.scandir": { 41 "@nodelib/fs.scandir": {
34 "version": "2.1.3", 42 "version": "2.1.3",
35 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", 43 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
...@@ -85,9 +93,9 @@ ...@@ -85,9 +93,9 @@
85 } 93 }
86 }, 94 },
87 "@rollup/pluginutils": { 95 "@rollup/pluginutils": {
88 - "version": "3.0.10", 96 + "version": "3.1.0",
89 - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.10.tgz", 97 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
90 - "integrity": "sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==", 98 + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
91 "dev": true, 99 "dev": true,
92 "requires": { 100 "requires": {
93 "@types/estree": "0.0.39", 101 "@types/estree": "0.0.39",
...@@ -101,11 +109,6 @@ ...@@ -101,11 +109,6 @@
101 "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 109 "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
102 "dev": true 110 "dev": true
103 }, 111 },
104 - "@types/events": {
105 - "version": "3.0.0",
106 - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
107 - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="
108 - },
109 "@types/fs-extra": { 112 "@types/fs-extra": {
110 "version": "8.1.1", 113 "version": "8.1.1",
111 "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz", 114 "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
...@@ -115,11 +118,10 @@ ...@@ -115,11 +118,10 @@
115 } 118 }
116 }, 119 },
117 "@types/glob": { 120 "@types/glob": {
118 - "version": "7.1.1", 121 + "version": "7.1.2",
119 - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", 122 + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz",
120 - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", 123 + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==",
121 "requires": { 124 "requires": {
122 - "@types/events": "*",
123 "@types/minimatch": "*", 125 "@types/minimatch": "*",
124 "@types/node": "*" 126 "@types/node": "*"
125 } 127 }
...@@ -130,9 +132,9 @@ ...@@ -130,9 +132,9 @@
130 "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" 132 "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
131 }, 133 },
132 "@types/node": { 134 "@types/node": {
133 - "version": "14.0.1", 135 + "version": "14.0.13",
134 - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.1.tgz", 136 + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz",
135 - "integrity": "sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==" 137 + "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA=="
136 }, 138 },
137 "@types/resolve": { 139 "@types/resolve": {
138 "version": "0.0.8", 140 "version": "0.0.8",
...@@ -144,9 +146,9 @@ ...@@ -144,9 +146,9 @@
144 } 146 }
145 }, 147 },
146 "acorn": { 148 "acorn": {
147 - "version": "7.2.0", 149 + "version": "7.3.1",
148 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", 150 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
149 - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", 151 + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
150 "dev": true 152 "dev": true
151 }, 153 },
152 "ansi-styles": { 154 "ansi-styles": {
...@@ -158,38 +160,24 @@ ...@@ -158,38 +160,24 @@
158 "color-convert": "^1.9.0" 160 "color-convert": "^1.9.0"
159 } 161 }
160 }, 162 },
161 - "anymatch": {
162 - "version": "3.1.1",
163 - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
164 - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
165 - "dev": true,
166 - "requires": {
167 - "normalize-path": "^3.0.0",
168 - "picomatch": "^2.0.4"
169 - }
170 - },
171 "array-union": { 163 "array-union": {
172 "version": "2.1.0", 164 "version": "2.1.0",
173 "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 165 "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
174 "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" 166 "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
175 }, 167 },
176 - "async-limiter": { 168 + "axios": {
177 - "version": "1.0.1", 169 + "version": "0.19.2",
178 - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 170 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
179 - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", 171 + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
180 - "dev": true 172 + "requires": {
173 + "follow-redirects": "1.5.10"
174 + }
181 }, 175 },
182 "balanced-match": { 176 "balanced-match": {
183 "version": "1.0.0", 177 "version": "1.0.0",
184 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 178 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
185 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 179 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
186 }, 180 },
187 - "binary-extensions": {
188 - "version": "2.0.0",
189 - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
190 - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
191 - "dev": true
192 - },
193 "brace-expansion": { 181 "brace-expansion": {
194 "version": "1.1.11", 182 "version": "1.1.11",
195 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 183 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
...@@ -230,22 +218,6 @@ ...@@ -230,22 +218,6 @@
230 "supports-color": "^5.3.0" 218 "supports-color": "^5.3.0"
231 } 219 }
232 }, 220 },
233 - "chokidar": {
234 - "version": "3.4.0",
235 - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
236 - "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==",
237 - "dev": true,
238 - "requires": {
239 - "anymatch": "~3.1.1",
240 - "braces": "~3.0.2",
241 - "fsevents": "~2.1.2",
242 - "glob-parent": "~5.1.0",
243 - "is-binary-path": "~2.1.0",
244 - "is-glob": "~4.0.1",
245 - "normalize-path": "~3.0.0",
246 - "readdirp": "~3.4.0"
247 - }
248 - },
249 "color-convert": { 221 "color-convert": {
250 "version": "1.9.3", 222 "version": "1.9.3",
251 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 223 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
...@@ -282,6 +254,14 @@ ...@@ -282,6 +254,14 @@
282 "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", 254 "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz",
283 "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" 255 "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ=="
284 }, 256 },
257 + "debug": {
258 + "version": "3.1.0",
259 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
260 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
261 + "requires": {
262 + "ms": "2.0.0"
263 + }
264 + },
285 "dir-glob": { 265 "dir-glob": {
286 "version": "3.0.1", 266 "version": "3.0.1",
287 "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 267 "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
...@@ -331,6 +311,14 @@ ...@@ -331,6 +311,14 @@
331 "to-regex-range": "^5.0.1" 311 "to-regex-range": "^5.0.1"
332 } 312 }
333 }, 313 },
314 + "follow-redirects": {
315 + "version": "1.5.10",
316 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
317 + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
318 + "requires": {
319 + "debug": "=3.1.0"
320 + }
321 + },
334 "fs-extra": { 322 "fs-extra": {
335 "version": "8.1.0", 323 "version": "8.1.0",
336 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 324 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
...@@ -346,13 +334,6 @@ ...@@ -346,13 +334,6 @@
346 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 334 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
347 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 335 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
348 }, 336 },
349 - "fsevents": {
350 - "version": "2.1.3",
351 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
352 - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
353 - "dev": true,
354 - "optional": true
355 - },
356 "get-port": { 337 "get-port": {
357 "version": "3.2.0", 338 "version": "3.2.0",
358 "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", 339 "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
...@@ -406,9 +387,9 @@ ...@@ -406,9 +387,9 @@
406 "dev": true 387 "dev": true
407 }, 388 },
408 "ignore": { 389 "ignore": {
409 - "version": "5.1.6", 390 + "version": "5.1.8",
410 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.6.tgz", 391 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
411 - "integrity": "sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA==" 392 + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw=="
412 }, 393 },
413 "inflight": { 394 "inflight": {
414 "version": "1.0.6", 395 "version": "1.0.6",
...@@ -424,15 +405,6 @@ ...@@ -424,15 +405,6 @@
424 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 405 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
425 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 406 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
426 }, 407 },
427 - "is-binary-path": {
428 - "version": "2.1.0",
429 - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
430 - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
431 - "dev": true,
432 - "requires": {
433 - "binary-extensions": "^2.0.0"
434 - }
435 - },
436 "is-extglob": { 408 "is-extglob": {
437 "version": "2.1.1", 409 "version": "2.1.1",
438 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 410 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
...@@ -466,12 +438,20 @@ ...@@ -466,12 +438,20 @@
466 } 438 }
467 }, 439 },
468 "is-reference": { 440 "is-reference": {
469 - "version": "1.1.4", 441 + "version": "1.2.0",
470 - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", 442 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.0.tgz",
471 - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", 443 + "integrity": "sha512-ZVxq+5TkOx6GQdnoMm2aRdCKADdcrOWXLGzGT+vIA8DMpqEJaRk5AL1bS80zJ2bjHunVmjdzfCt0e4BymIEqKQ==",
472 "dev": true, 444 "dev": true,
473 "requires": { 445 "requires": {
474 - "@types/estree": "0.0.39" 446 + "@types/estree": "0.0.44"
447 + },
448 + "dependencies": {
449 + "@types/estree": {
450 + "version": "0.0.44",
451 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.44.tgz",
452 + "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==",
453 + "dev": true
454 + }
475 } 455 }
476 }, 456 },
477 "isobject": { 457 "isobject": {
...@@ -519,29 +499,16 @@ ...@@ -519,29 +499,16 @@
519 "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 499 "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
520 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" 500 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
521 }, 501 },
522 - "livereload": {
523 - "version": "0.9.1",
524 - "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz",
525 - "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==",
526 - "dev": true,
527 - "requires": {
528 - "chokidar": "^3.3.0",
529 - "livereload-js": "^3.1.0",
530 - "opts": ">= 1.2.0",
531 - "ws": "^6.2.1"
532 - }
533 - },
534 - "livereload-js": {
535 - "version": "3.2.2",
536 - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.2.tgz",
537 - "integrity": "sha512-xhScbNeC687ZINjEf/bD+BMiPx4s4q0mehcLb3zCc8+mykOtmaBR4vqzyIV9rIGdG9JjHaT0LiFdscvivCjX1Q==",
538 - "dev": true
539 - },
540 "local-access": { 502 "local-access": {
541 "version": "1.0.1", 503 "version": "1.0.1",
542 "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz", 504 "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz",
543 "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==" 505 "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA=="
544 }, 506 },
507 + "lottie-web": {
508 + "version": "5.6.10",
509 + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.6.10.tgz",
510 + "integrity": "sha512-ucTzaiBJOMm56/K7Wqjajyh7qXlonHKB3+b5fHvhSiz+jOrXt6QDNKAinI3qdw/zvvYHKzXvFMy5SgOXbOJ5ng=="
511 + },
545 "magic-string": { 512 "magic-string": {
546 "version": "0.25.7", 513 "version": "0.25.7",
547 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 514 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
...@@ -558,9 +525,9 @@ ...@@ -558,9 +525,9 @@
558 "dev": true 525 "dev": true
559 }, 526 },
560 "merge2": { 527 "merge2": {
561 - "version": "1.3.0", 528 + "version": "1.4.1",
562 - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", 529 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
563 - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" 530 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
564 }, 531 },
565 "micromatch": { 532 "micromatch": {
566 "version": "4.0.2", 533 "version": "4.0.2",
...@@ -572,9 +539,9 @@ ...@@ -572,9 +539,9 @@
572 } 539 }
573 }, 540 },
574 "mime": { 541 "mime": {
575 - "version": "2.4.5", 542 + "version": "2.4.6",
576 - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", 543 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
577 - "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==" 544 + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
578 }, 545 },
579 "minimatch": { 546 "minimatch": {
580 "version": "3.0.4", 547 "version": "3.0.4",
...@@ -589,11 +556,10 @@ ...@@ -589,11 +556,10 @@
589 "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", 556 "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz",
590 "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==" 557 "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg=="
591 }, 558 },
592 - "normalize-path": { 559 + "ms": {
593 - "version": "3.0.0", 560 + "version": "2.0.0",
594 - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 561 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
595 - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 562 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
596 - "dev": true
597 }, 563 },
598 "once": { 564 "once": {
599 "version": "1.4.0", 565 "version": "1.4.0",
...@@ -603,12 +569,6 @@ ...@@ -603,12 +569,6 @@
603 "wrappy": "1" 569 "wrappy": "1"
604 } 570 }
605 }, 571 },
606 - "opts": {
607 - "version": "1.2.7",
608 - "resolved": "https://registry.npmjs.org/opts/-/opts-1.2.7.tgz",
609 - "integrity": "sha512-hwZhzGGG/GQ7igxAVFOEun2N4fWul31qE9nfBdCnZGQCB5+L7tN9xZ+94B4aUpLOJx/of3zZs5XsuubayQYQjA==",
610 - "dev": true
611 - },
612 "path-is-absolute": { 572 "path-is-absolute": {
613 "version": "1.0.1", 573 "version": "1.0.1",
614 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 574 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
...@@ -630,15 +590,6 @@ ...@@ -630,15 +590,6 @@
630 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 590 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
631 "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" 591 "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
632 }, 592 },
633 - "readdirp": {
634 - "version": "3.4.0",
635 - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
636 - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
637 - "dev": true,
638 - "requires": {
639 - "picomatch": "^2.2.1"
640 - }
641 - },
642 "regexparam": { 593 "regexparam": {
643 "version": "1.3.0", 594 "version": "1.3.0",
644 "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", 595 "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz",
...@@ -687,15 +638,6 @@ ...@@ -687,15 +638,6 @@
687 "is-plain-object": "^3.0.0" 638 "is-plain-object": "^3.0.0"
688 } 639 }
689 }, 640 },
690 - "rollup-plugin-livereload": {
691 - "version": "1.3.0",
692 - "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.3.0.tgz",
693 - "integrity": "sha512-abyqXaB21+nFHo+vJULBqfzNx6zXABC19UyvqgDfdoxR/8pFAd041GO+GIUe8ZYC2DbuMUmioh1Lvbk14YLZgw==",
694 - "dev": true,
695 - "requires": {
696 - "livereload": "^0.9.1"
697 - }
698 - },
699 "rollup-plugin-svelte": { 641 "rollup-plugin-svelte": {
700 "version": "5.2.2", 642 "version": "5.2.2",
701 "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.2.2.tgz", 643 "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.2.2.tgz",
...@@ -757,25 +699,25 @@ ...@@ -757,25 +699,25 @@
757 "dev": true 699 "dev": true
758 }, 700 },
759 "sirv": { 701 "sirv": {
760 - "version": "0.4.2", 702 + "version": "0.4.6",
761 - "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz", 703 + "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.6.tgz",
762 - "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==", 704 + "integrity": "sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ==",
763 "requires": { 705 "requires": {
764 "@polka/url": "^0.5.0", 706 "@polka/url": "^0.5.0",
765 "mime": "^2.3.1" 707 "mime": "^2.3.1"
766 } 708 }
767 }, 709 },
768 "sirv-cli": { 710 "sirv-cli": {
769 - "version": "0.4.5", 711 + "version": "0.4.6",
770 - "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-0.4.5.tgz", 712 + "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-0.4.6.tgz",
771 - "integrity": "sha512-Fl6icSm0EwPrXSGid2xphMp//WNTSX2yENRAGnJuuZNmdc8LvE/BtdZD3MPn28ifAfDqTMwbB3dpcZojAIOiBg==", 713 + "integrity": "sha512-/Vj85/kBvPL+n9ibgX6FicLE8VjidC1BhlX67PYPBfbBAphzR6i0k0HtU5c2arejfU3uzq8l3SYPCwl1x7z6Ww==",
772 "requires": { 714 "requires": {
773 "console-clear": "^1.1.0", 715 "console-clear": "^1.1.0",
774 "get-port": "^3.2.0", 716 "get-port": "^3.2.0",
775 "kleur": "^3.0.0", 717 "kleur": "^3.0.0",
776 "local-access": "^1.0.1", 718 "local-access": "^1.0.1",
777 "sade": "^1.4.0", 719 "sade": "^1.4.0",
778 - "sirv": "^0.4.2", 720 + "sirv": "^0.4.6",
779 "tinydate": "^1.0.0" 721 "tinydate": "^1.0.0"
780 } 722 }
781 }, 723 },
...@@ -816,15 +758,15 @@ ...@@ -816,15 +758,15 @@
816 } 758 }
817 }, 759 },
818 "svelte": { 760 "svelte": {
819 - "version": "3.22.3", 761 + "version": "3.23.2",
820 - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.22.3.tgz", 762 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.23.2.tgz",
821 - "integrity": "sha512-DumSy5eWPFPlMUGf3+eHyFSkt5yLqyAmMdCuXOE4qc5GtFyLxwTAGKZmgKmW2jmbpTTeFQ/fSQfDBQbl9Eo7yw==", 763 + "integrity": "sha512-hE8GeTM83YVR4GY6/6PeDEcGct4JS5aCi+IYbCAa76oaPSfuF7L85DQYULQxlTK/KPWzw3L1GRGmC3oPG/PQoA==",
822 "dev": true 764 "dev": true
823 }, 765 },
824 "svelte-spa-router": { 766 "svelte-spa-router": {
825 - "version": "2.1.0", 767 + "version": "2.2.0",
826 - "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-2.1.0.tgz", 768 + "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-2.2.0.tgz",
827 - "integrity": "sha512-9bcQPTQ6A+Z92Z+NirVVusa/Sw6nqzKwZAKfu1Cl6+XjStf12hfIcPoMfTutEBoX0Ik+z7gJbJ934PKk94BvCg==", 769 + "integrity": "sha512-S3KpmiBszjdjkU1QA9FyNgrSdQORbXWp4wl8R147Gl7KoNof/0SfFJ23+9E47jLiNz+lCw1uaCfeHJi2I60bVg==",
828 "requires": { 770 "requires": {
829 "regexparam": "1.3.0" 771 "regexparam": "1.3.0"
830 } 772 }
...@@ -862,15 +804,6 @@ ...@@ -862,15 +804,6 @@
862 "version": "1.0.2", 804 "version": "1.0.2",
863 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 805 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
864 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 806 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
865 - },
866 - "ws": {
867 - "version": "6.2.1",
868 - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
869 - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
870 - "dev": true,
871 - "requires": {
872 - "async-limiter": "~1.0.0"
873 - }
874 } 807 }
875 } 808 }
876 } 809 }
......
...@@ -10,12 +10,13 @@ ...@@ -10,12 +10,13 @@
10 "@rollup/plugin-commonjs": "11.0.2", 10 "@rollup/plugin-commonjs": "11.0.2",
11 "@rollup/plugin-node-resolve": "^7.0.0", 11 "@rollup/plugin-node-resolve": "^7.0.0",
12 "rollup": "^1.20.0", 12 "rollup": "^1.20.0",
13 - "rollup-plugin-livereload": "^1.0.0",
14 "rollup-plugin-svelte": "^5.0.3", 13 "rollup-plugin-svelte": "^5.0.3",
15 "rollup-plugin-terser": "^5.1.2", 14 "rollup-plugin-terser": "^5.1.2",
16 "svelte": "^3.0.0" 15 "svelte": "^3.0.0"
17 }, 16 },
18 "dependencies": { 17 "dependencies": {
18 + "@lottiefiles/svelte-lottie-player": "^0.1.4",
19 + "axios": "^0.19.2",
19 "rollup-plugin-copy": "^3.3.0", 20 "rollup-plugin-copy": "^3.3.0",
20 "sirv-cli": "^0.4.4", 21 "sirv-cli": "^0.4.4",
21 "svelte-spa-router": "^2.1.0" 22 "svelte-spa-router": "^2.1.0"
......
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html lang="en"> 2 <html lang="en">
3 -<head>
4 - <meta charset='utf-8'>
5 - <meta name='viewport' content='width=device-width,initial-scale=1'>
6 3
7 - <title>Svelte app</title> 4 +<head lang="ko">
5 + <meta charset='utf-8'>
6 + <meta name='viewport' content='width=device-width,initial-scale=1'>
8 7
9 - <link rel='icon' type='image/png' href='/favicon.png'> 8 + <title>::메이플스토리 스펙 계산기::</title>
10 - <link rel='stylesheet' href='/global.css'>
11 - <link rel='stylesheet' href='/build/bundle.css'>
12 9
13 - <script defer src='/build/bundle.js'></script> 10 + <link rel='icon' type='shortcut icon' href='./build/static/images/favicon.ico'>
11 + <link rel='stylesheet' href='./static/css/global.css'>
12 + <link rel='stylesheet' href='/build/bundle.css'>
13 + <meta property="og:image" content="./build/static/images/ogimage.png">
14 + <meta property="og:title" content="::메이플스토리 스펙 계산기::">
15 + <meta property="og:description" content="당신의 메이플스토리 스펙 효율을 빠르게 계산해보세요!">
16 +
17 + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
18 + <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
19 + <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
20 +
21 + <script defer src='/build/bundle.js'></script>
14 </head> 22 </head>
15 23
16 <body> 24 <body>
17 </body> 25 </body>
18 -</html> 26 +
27 +</html>
...\ No newline at end of file ...\ No newline at end of file
......
1 -html, body { 1 +html,
2 - position: relative; 2 +body {
3 - width: 100%; 3 + position: relative;
4 - height: 100%; 4 + width: 100%;
5 + height: 100%;
6 + background-color: #ffebee;
5 } 7 }
6 8
7 body { 9 body {
8 - color: #333; 10 + color: #333;
9 - margin: 0; 11 + margin: 0;
10 - padding: 8px; 12 + box-sizing: border-box;
11 - box-sizing: border-box; 13 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
12 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
13 } 14 }
14 15
15 a { 16 a {
16 - color: rgb(0,100,200); 17 + color: rgb(0, 100, 200);
17 - text-decoration: none; 18 + text-decoration: none;
18 } 19 }
19 20
20 a:hover { 21 a:hover {
21 - text-decoration: underline; 22 + text-decoration: underline;
22 } 23 }
23 24
24 a:visited { 25 a:visited {
25 - color: rgb(0,80,160); 26 + color: rgb(0, 80, 160);
26 } 27 }
27 28
28 label { 29 label {
29 - display: block; 30 + display: block;
30 } 31 }
31 32
32 -input, button, select, textarea { 33 +input,
33 - font-family: inherit; 34 +button,
34 - font-size: inherit; 35 +select,
35 - padding: 0.4em; 36 +textarea {
36 - margin: 0 0 0.5em 0; 37 + font-family: inherit;
37 - box-sizing: border-box; 38 + font-size: inherit;
38 - border: 1px solid #ccc; 39 + padding: 0.4em;
39 - border-radius: 2px; 40 + margin: 0 0 0.5em 0;
41 + box-sizing: border-box;
42 + border: 1px solid #ccc;
43 + border-radius: 2px;
40 } 44 }
41 45
42 input:disabled { 46 input:disabled {
43 - color: #ccc; 47 + color: #ccc;
44 } 48 }
45 49
46 input[type="range"] { 50 input[type="range"] {
47 - height: 0; 51 + height: 0;
48 } 52 }
49 53
50 button { 54 button {
51 - color: #333; 55 + color: #333;
52 - background-color: #f4f4f4; 56 + background-color: #f4f4f4;
53 - outline: none; 57 + outline: none;
54 } 58 }
55 59
56 button:disabled { 60 button:disabled {
57 - color: #999; 61 + color: #999;
58 } 62 }
59 63
60 button:not(:disabled):active { 64 button:not(:disabled):active {
61 - background-color: #ddd; 65 + background-color: #ddd;
62 } 66 }
63 67
64 button:focus { 68 button:focus {
65 - border-color: #666; 69 + border-color: #666;
66 -} 70 +}
...\ No newline at end of file ...\ No newline at end of file
......
1 import svelte from 'rollup-plugin-svelte'; 1 import svelte from 'rollup-plugin-svelte';
2 import resolve from '@rollup/plugin-node-resolve'; 2 import resolve from '@rollup/plugin-node-resolve';
3 import commonjs from '@rollup/plugin-commonjs'; 3 import commonjs from '@rollup/plugin-commonjs';
4 -import livereload from 'rollup-plugin-livereload';
5 import { terser } from 'rollup-plugin-terser'; 4 import { terser } from 'rollup-plugin-terser';
6 import copy from 'rollup-plugin-copy'; 5 import copy from 'rollup-plugin-copy';
7 6
8 const production = !process.env.ROLLUP_WATCH; 7 const production = !process.env.ROLLUP_WATCH;
9 8
10 export default { 9 export default {
11 - input: 'src/main.js', 10 + input: 'src/main.js',
12 - output: { 11 + output: {
13 - sourcemap: true, 12 + sourcemap: true,
14 - format: 'iife', 13 + format: 'iife',
15 - name: 'app', 14 + name: 'app',
16 - file: 'public/build/bundle.js' 15 + file: 'public/build/bundle.js'
17 - }, 16 + },
18 - plugins: [ 17 + plugins: [
19 - svelte({ 18 + svelte({
20 - // enable run-time checks when not in production 19 + // enable run-time checks when not in production
21 - dev: !production, 20 + dev: !production,
22 - // we'll extract any component CSS out into 21 + // we'll extract any component CSS out into
23 - // a separate file - better for performance 22 + // a separate file - better for performance
24 - css: css => { 23 + css: css => {
25 - css.write('public/build/bundle.css'); 24 + css.write('public/build/bundle.css');
26 - } 25 + }
27 - }), 26 + }),
28 27
29 - // If you have external dependencies installed from 28 + // If you have external dependencies installed from
30 - // npm, you'll most likely need these plugins. In 29 + // npm, you'll most likely need these plugins. In
31 - // some cases you'll need additional configuration - 30 + // some cases you'll need additional configuration -
32 - // consult the documentation for details: 31 + // consult the documentation for details:
33 - // https://github.com/rollup/plugins/tree/master/packages/commonjs 32 + // https://github.com/rollup/plugins/tree/master/packages/commonjs
34 - resolve({ 33 + resolve({
35 - browser: true, 34 + browser: true,
36 - dedupe: ['svelte'] 35 + dedupe: ['svelte']
37 - }), 36 + }),
38 - commonjs(), 37 + commonjs(),
39 38
40 - copy({ 39 + copy({
41 - targets:[ 40 + targets: [
42 - { src:'src/images', dest:'public' } 41 + { src: 'src/images', dest: 'public/build/static' }
43 - ] 42 + ]
44 - }), 43 + }),
45 44
46 - // In dev mode, call `npm run start` once 45 + // In dev mode, call `npm run start` once
47 - // the bundle has been generated 46 + // the bundle has been generated
48 - !production && serve(), 47 + !production && serve(),
49 48
50 - // Watch the `public` directory and refresh the 49 + // If we're building for production (npm run build
51 - // browser on changes when not in production 50 + // instead of npm run dev), minify
52 - !production && livereload('public'), 51 + production && terser()
53 - 52 + ],
54 - // If we're building for production (npm run build 53 + watch: {
55 - // instead of npm run dev), minify 54 + clearScreen: false
56 - production && terser() 55 + }
57 - ],
58 - watch: {
59 - clearScreen: false
60 - }
61 }; 56 };
62 57
63 function serve() { 58 function serve() {
64 - let started = false; 59 + let started = false;
65 60
66 - return { 61 + return {
67 - writeBundle() { 62 + writeBundle() {
68 - if (!started) { 63 + if (!started) {
69 - started = true; 64 + started = true;
70 65
71 - require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { 66 + require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
72 - stdio: ['ignore', 'inherit', 'inherit'], 67 + stdio: ['ignore', 'inherit', 'inherit'],
73 - shell: true 68 + shell: true
74 - }); 69 + });
75 - } 70 + }
76 - } 71 + }
77 - }; 72 + };
78 -} 73 +}
...\ No newline at end of file ...\ No newline at end of file
......
1 +<script>
2 + import {LottiePlayer} from '@lottiefiles/svelte-lottie-player';
3 +
4 + export let count = 0;
5 +</script>
6 +
7 +<div id="loading" class:show={count > 0}>
8 + <LottiePlayer
9 + src="https://assets5.lottiefiles.com/packages/lf20_kblbXu.json" background="transparent" speed="1" width={300} height={300} controls={false} controlsLayout={null} loop autoplay>
10 + </LottiePlayer>
11 +</div>
12 +
13 +<style>
14 +#loading { position:fixed; width:100%; height:100%; z-index:9999; background-color:rgba(0,0,0,0.3); align-items:center; justify-content:center; display:none; }
15 +#loading.show { display:flex; }
16 +</style>
...\ No newline at end of file ...\ No newline at end of file
No preview for this file type
1 -import App from './App.svelte'; 1 +import App from './App.svelte';
2 2
3 const app = new App({ 3 const app = new App({
4 - target: document.body, 4 + target: document.body
5 - props: {
6 - name: 'world'
7 - }
8 }); 5 });
9 6
10 export default app; 7 export default app;
...\ No newline at end of file ...\ No newline at end of file
......
1 -import Home from './routes/Home.svelte'; 1 +import Search from './routes/Search.svelte';
2 +import Character from './routes/Character.svelte';
2 3
3 const routes = { 4 const routes = {
4 - '/': Home, 5 + '/': Search,
6 + '/character': Character,
7 + '/character/:character': Character,
5 }; 8 };
6 9
7 export default routes; 10 export default routes;
...\ No newline at end of file ...\ No newline at end of file
......
1 +<script>
2 + export let params = {};
3 +
4 + import {push} from 'svelte-spa-router';
5 + import axios from 'axios';
6 + import Loading from '../components/Loading.svelte';
7 +
8 + let callCount = 0;
9 + let isBuff = false;
10 + let isCharacterLoading = false;
11 + let stats;
12 +
13 + let character = {
14 + info:{
15 + avatar:'',
16 + nickname:'',
17 + characterCode:'',
18 + job:'',
19 + majorName:'',
20 + attackPowerName:'',
21 + server:{
22 + name:'',
23 + icon:''
24 + },
25 + level:237
26 + },
27 + analysis:{
28 + default:{
29 + stats:{
30 + major:{
31 + pure:0,
32 + percent:0,
33 + added:0,
34 + },
35 + minor:0,
36 + damage:{
37 + all:0,
38 + boss:0
39 + },
40 + finalDamage:0,
41 + criticalDamage:0,
42 + attackPower:{
43 + pure:0,
44 + percent:0,
45 + },
46 + ignoreGuard:0
47 + },
48 + efficiency:{
49 + major:{
50 + pure:1,
51 + percent:1
52 + },
53 + attackPower:{
54 + pure:1,
55 + percent:1
56 + },
57 + damage:1,
58 + criticalDamage:1,
59 + ignoreGuard:1
60 + }
61 + }
62 + },
63 + buff:{
64 + stats:{
65 + major:{
66 + pure:0,
67 + percent:0,
68 + added:0,
69 + },
70 + minor:0,
71 + damage:{
72 + all:0,
73 + boss:0
74 + },
75 + finalDamage:0,
76 + criticalDamage:0,
77 + attackPower:{
78 + pure:0,
79 + percent:0,
80 + },
81 + ignoreGuard:0
82 + },
83 + efficiency:{
84 + major:{
85 + pure:1,
86 + percent:1
87 + },
88 + attackPower:{
89 + pure:1,
90 + percent:1
91 + },
92 + damage:1,
93 + criticalDamage:1,
94 + ignoreGuard:1
95 + }
96 + }
97 + }
98 +
99 + function init() {
100 + let nickname;
101 +
102 + if(!params.character) {
103 + M.toast({html:"캐릭터명을 입력해주세요."});
104 + push("/");
105 + }
106 +
107 + nickname = decodeURI(params.character);
108 +
109 + callCount++;
110 + axios.get('/api/character', {
111 + params:{
112 + nickname:nickname
113 + }
114 + }).then(function(response) {
115 + character = response.data;
116 + isCharacterLoading = true;
117 + }).catch(function(error) {
118 + switch(error.response.status) {
119 + case 404:
120 + M.toast({html:"존재하지 않는 캐릭터입니다."});
121 + break;
122 + case 403:
123 + M.toast({html:"캐릭터 정보 공개설정이 필요합니다."});
124 + setTimeout(function() {
125 + window.open("https://maplestory.nexon.com/MyMaple/Account/Character/Visibility");
126 + }, 2000);
127 + break;
128 + case 503:
129 + M.toast({html:"메이플스토리가 점검중입니다."});
130 + break;
131 + default:
132 + M.toast({html:"서버와의 통신이 원활하지 않습니다.<br><br>잠시 후에 시도해주세요."});
133 + break;
134 + }
135 + push('/');
136 + }).finally(function() {
137 + callCount--;
138 + });
139 + }
140 +
141 + function showValue(value) {
142 + return parseFloat(value).toFixed(2);
143 + }
144 +
145 + function goBack() {
146 + push('/');
147 + }
148 +
149 + $:
150 + if(isCharacterLoading && isBuff) {
151 + stats = character.analysis.buff;
152 + } else {
153 + stats = character.analysis.default;
154 + }
155 +
156 + init();
157 +</script>
158 +
159 +<svelte:head>
160 +
161 +</svelte:head>
162 +
163 +<Loading count={callCount} />
164 +<section>
165 + {#if isCharacterLoading}
166 + <article class="info-box">
167 + <div class="row">
168 + <div class="col s12 m10 l8 offset-m1 offset-l2">
169 + <div class="row">
170 + <div class="col s12 m4 l3">
171 + <div class="card character-card">
172 + <div class="card-stacked">
173 + <div class="card-content">
174 + <div class="character-img">
175 + <img src={character.info.avatar} class="responsive-img" alt="캐릭터">
176 + </div>
177 + <h6 class="pink-text text-accent-3">
178 + <img src={character.info.server.icon} alt={character.info.server.name}>
179 + {character.info.nickname}
180 + </h6>
181 + <div class="job grey-text text-darken-2">
182 + {character.info.job}
183 + </div>
184 + <div class="level grey-text text-darken-2">
185 + Lv.{character.info.level}
186 + </div>
187 + </div>
188 + </div>
189 + </div>
190 + <div class="back-button-box">
191 + <button class="btn waves-light btn red accent-2" on:click={goBack}>
192 + <i class="material-icons">arrow_back</i>
193 + <span>뒤로가기</span>
194 + </button>
195 + </div>
196 + </div>
197 + <div class="col s12 m8 l9">
198 + <div class="card character-card">
199 + <div class="card-stacked">
200 + <div class="card-content">
201 + <div class="buff-switch">
202 + <div class="switch">
203 + <label>
204 + 노버프
205 + <input type="checkbox" bind:checked={isBuff}>
206 + <span class="lever"></span>
207 + 버프(자벞,링크,노블,영메)
208 + </label>
209 + </div>
210 + </div>
211 + <table class="table-efficiency">
212 + <thead>
213 + <tr>
214 + <th>스탯</th>
215 + <th>효율</th>
216 + </tr>
217 + </thead>
218 + <tbody>
219 + <tr>
220 + <th rowspan="2">{character.info.majorName} 1%</th>
221 + <td>{character.info.majorName} {showValue(stats.efficiency.major.percent)}</td>
222 + </tr>
223 + <tr>
224 + <td>{character.info.attackPowerName} {showValue(stats.efficiency.major.percent / stats.efficiency.attackPower.pure)}</td>
225 + </tr>
226 + <tr>
227 + <th>{character.info.attackPowerName} 1</th>
228 + <td>{character.info.majorName} {showValue(stats.efficiency.attackPower.pure)}</td>
229 + </tr>
230 + <tr>
231 + <th rowspan="5">{character.info.attackPowerName} 1%</th>
232 + <td>{character.info.majorName} {showValue(stats.efficiency.attackPower.percent)}</td>
233 + </tr>
234 + <tr>
235 + <td>{character.info.majorName} {showValue(stats.efficiency.attackPower.percent / stats.efficiency.major.percent)}%</td>
236 + </tr>
237 + <tr>
238 + <td>{character.info.attackPowerName} {showValue(stats.efficiency.attackPower.percent / stats.efficiency.attackPower.pure)}</td>
239 + </tr>
240 + <tr>
241 + <td>데미지(보공) {showValue(stats.efficiency.attackPower.percent / stats.efficiency.damage)}%</td>
242 + </tr>
243 + <tr>
244 + <td>방무 {showValue(stats.efficiency.attackPower.percent / stats.efficiency.ignoreGuard)}%</td>
245 + </tr>
246 + <tr>
247 + <th rowspan="2">데미지(보공) 1%</th>
248 + <td>{character.info.majorName} {showValue(stats.efficiency.damage)}</td>
249 + </tr>
250 + <tr>
251 + <td>방무 {showValue(stats.efficiency.damage / stats.efficiency.ignoreGuard)}%</td>
252 + </tr>
253 + <tr>
254 + <th rowspan="2">크뎀 1%</th>
255 + <td>{character.info.majorName} {showValue(stats.efficiency.criticalDamage)}</td>
256 + </tr>
257 + <tr>
258 + <td>{character.info.majorName} {showValue(stats.efficiency.criticalDamage / stats.efficiency.major.percent)}%</td>
259 + </tr>
260 + <tr>
261 + <th>방무 1%</th>
262 + <td>{character.info.majorName} {showValue(stats.efficiency.ignoreGuard)}</td>
263 + </tr>
264 + </tbody>
265 + </table>
266 + </div>
267 + </div>
268 + </div>
269 + </div>
270 + </div>
271 + </div>
272 + </div>
273 + </article>
274 + {/if}
275 +</section>
276 +
277 +<style>
278 +section { width:100%; height:100%; display:flex; flex-direction:column; padding:20px 0; }
279 +.info-box { margin:auto 0; }
280 +.info-box > .row > .col > .row > .col { margin-bottom:.5rem; }
281 +.character-card .card-content { text-align:center; }
282 +.character-card .card-content .job { font-size:0.8em }
283 +.character-card .card-content .level { font-size:0.8em }
284 +.character-card .card-content h6 img { width:14px; height:14px; }
285 +.character-card .card-content h6 { font-weight:bold; }
286 +.table-efficiency td, .table-efficiency th { text-align:left; }
287 +.back-button-box button { width:100%; display:block; height:48px; line-height:48px; }
288 +.back-button-box button i.material-icons { vertical-align:middle; }
289 +.back-button-box button span { vertical-align:middle; }
290 +.buff-switch .switch label input[type=checkbox]:checked+.lever:after { background-color:#e57373; }
291 +.buff-switch .switch label input[type=checkbox]:not(:checked)+.lever { background-color:#ffcdd2; }
292 +.buff-switch .switch label input[type=checkbox]:checked+.lever { background-color:#ef9a9a ; }
293 +</style>
...\ No newline at end of file ...\ No newline at end of file
1 -<main>
2 - <h1>Hello, This is Home!</h1>
3 - <p>Visit the <a href="https://svelte.dev/tutorial">Svelte tutorial</a> to learn how to build Svelte apps.</p>
4 -</main>
5 -
6 -<style>
7 - main {
8 - text-align: center;
9 - padding: 1em;
10 - max-width: 240px;
11 - margin: 0 auto;
12 - }
13 -
14 - h1 {
15 - color: #ff3e00;
16 - text-transform: uppercase;
17 - font-size: 4em;
18 - font-weight: 100;
19 - }
20 -
21 - @media (min-width: 640px) {
22 - main {
23 - max-width: none;
24 - }
25 - }
26 -</style>
...\ No newline at end of file ...\ No newline at end of file
1 +<script>
2 + import {push} from 'svelte-spa-router';
3 +
4 + let character;
5 +
6 + function searchCharacter() {
7 + if(!character) {
8 + M.toast({html:"캐릭터명을 입력해주세요."});
9 + return false;
10 + }
11 +
12 + push('/character/' + character);
13 + }
14 +</script>
15 +
16 +<svelte:head>
17 +
18 +</svelte:head>
19 +
20 +<section>
21 + <article class="search-box row">
22 + <div class="col l4 m6 s12 offset-l4 offset-m3">
23 + <div class="card">
24 + <div class="card-stacked">
25 + <div class="card-content">
26 + <h4>내 캐릭터 분석하기</h4>
27 + <form class="search-form" on:submit={searchCharacter} onsubmit="return false;">
28 + <div class="input-field">
29 + <label>캐릭터명</label>
30 + <input type="text" bind:value={character}>
31 + <button class="btn waves-effect waves-light red darken-1">확인</button>
32 + </div>
33 + </form>
34 + </div>
35 + <div class="card-action">
36 + <p class="teal-text text-lighten-2">
37 + 메이플스토리 스펙 계산기를 이용하기 위해서는 캐릭터 정보 공개(기본정보, 장비, 스킬)가 필요합니다.
38 + </p>
39 + <p>
40 + <a href="https://maplestory.nexon.com/MyMaple/Account/Character/Visibility" target="_BLANK">공개설정하러 가기</a>
41 + </p>
42 + <p class="red-text text-accent-1">
43 + <i class="material-icons">info_outline</i>
44 + <span>제논, 데몬어벤져는 지원하지 않습니다.</span>
45 + </p>
46 + </div>
47 + </div>
48 + </div>
49 + </div>
50 + </article>
51 +</section>
52 +
53 +<style>
54 +section { width:100%; height:100%; display:flex; flex-direction:column; }
55 +.search-box { width:100%; margin:auto 0; }
56 +h4 { font-size:20px; text-align:center; }
57 +.input-field { padding-right:70px; }
58 +.input-field button { position:absolute; right:0; top:7px; }
59 +.card-action i.material-icons { font-size:1.1em; vertical-align:middle; }
60 +.card-action i.material-icons ~ span { vertical-align:middle; }
61 +</style>
...\ No newline at end of file ...\ No newline at end of file