Merge branch 'feature/2-character_page' into develop
Showing
21 changed files
with
3054 additions
and
32 deletions
... | @@ -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 | ... | ... |
app/node/model/job.js
0 → 100644
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 |
app/node/model/stat.js
0 → 100644
app/node/model/weapon.js
0 → 100644
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 |
... | @@ -22,6 +22,11 @@ | ... | @@ -22,6 +22,11 @@ |
22 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", | 22 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", |
23 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" | 23 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" |
24 | }, | 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 | + }, | ||
25 | "abbrev": { | 30 | "abbrev": { |
26 | "version": "1.1.1", | 31 | "version": "1.1.1", |
27 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | 32 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |
... | @@ -36,6 +41,36 @@ | ... | @@ -36,6 +41,36 @@ |
36 | "negotiator": "0.6.2" | 41 | "negotiator": "0.6.2" |
37 | } | 42 | } |
38 | }, | 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 | + }, | ||
39 | "ansi-align": { | 74 | "ansi-align": { |
40 | "version": "3.0.0", | 75 | "version": "3.0.0", |
41 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", | 76 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", |
... | @@ -84,11 +119,55 @@ | ... | @@ -84,11 +119,55 @@ |
84 | "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", |
85 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | 120 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
86 | }, | 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 | + }, | ||
87 | "balanced-match": { | 158 | "balanced-match": { |
88 | "version": "1.0.0", | 159 | "version": "1.0.0", |
89 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | 160 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
90 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" | 161 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" |
91 | }, | 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 | + }, | ||
92 | "binary-extensions": { | 171 | "binary-extensions": { |
93 | "version": "2.0.0", | 172 | "version": "2.0.0", |
94 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", | 173 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", |
... | @@ -143,6 +222,11 @@ | ... | @@ -143,6 +222,11 @@ |
143 | "fill-range": "^7.0.1" | 222 | "fill-range": "^7.0.1" |
144 | } | 223 | } |
145 | }, | 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 | + }, | ||
146 | "bytes": { | 230 | "bytes": { |
147 | "version": "3.1.0", | 231 | "version": "3.1.0", |
148 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", | 232 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", |
... | @@ -182,6 +266,11 @@ | ... | @@ -182,6 +266,11 @@ |
182 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", | 266 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", |
183 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" | 267 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" |
184 | }, | 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 | + }, | ||
185 | "chalk": { | 274 | "chalk": { |
186 | "version": "3.0.0", | 275 | "version": "3.0.0", |
187 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", | 276 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", |
... | @@ -252,6 +341,14 @@ | ... | @@ -252,6 +341,14 @@ |
252 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | 341 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
253 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" | 342 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" |
254 | }, | 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 | + }, | ||
255 | "concat-map": { | 352 | "concat-map": { |
256 | "version": "0.0.1", | 353 | "version": "0.0.1", |
257 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | 354 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
... | @@ -293,11 +390,54 @@ | ... | @@ -293,11 +390,54 @@ |
293 | "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", |
294 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | 391 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
295 | }, | 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 | + }, | ||
296 | "crypto-random-string": { | 398 | "crypto-random-string": { |
297 | "version": "2.0.0", | 399 | "version": "2.0.0", |
298 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", | 400 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", |
299 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" | 401 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" |
300 | }, | 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 | + }, | ||
301 | "debug": { | 441 | "debug": { |
302 | "version": "2.6.9", | 442 | "version": "2.6.9", |
303 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 443 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
... | @@ -306,6 +446,11 @@ | ... | @@ -306,6 +446,11 @@ |
306 | "ms": "2.0.0" | 446 | "ms": "2.0.0" |
307 | } | 447 | } |
308 | }, | 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 | + }, | ||
309 | "decompress-response": { | 454 | "decompress-response": { |
310 | "version": "3.3.0", | 455 | "version": "3.3.0", |
311 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", | 456 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", |
... | @@ -319,11 +464,21 @@ | ... | @@ -319,11 +464,21 @@ |
319 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", | 464 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", |
320 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" | 465 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" |
321 | }, | 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 | + }, | ||
322 | "defer-to-connect": { | 472 | "defer-to-connect": { |
323 | "version": "1.1.3", | 473 | "version": "1.1.3", |
324 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", | 474 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", |
325 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" | 475 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" |
326 | }, | 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 | + }, | ||
327 | "depd": { | 482 | "depd": { |
328 | "version": "1.1.2", | 483 | "version": "1.1.2", |
329 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | 484 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
... | @@ -334,6 +489,21 @@ | ... | @@ -334,6 +489,21 @@ |
334 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | 489 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
335 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | 490 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |
336 | }, | 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 | + }, | ||
337 | "dot-prop": { | 507 | "dot-prop": { |
338 | "version": "5.2.0", | 508 | "version": "5.2.0", |
339 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", | 509 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", |
... | @@ -347,6 +517,15 @@ | ... | @@ -347,6 +517,15 @@ |
347 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", | 517 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", |
348 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" | 518 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" |
349 | }, | 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 | + }, | ||
350 | "ee-first": { | 529 | "ee-first": { |
351 | "version": "1.1.1", | 530 | "version": "1.1.1", |
352 | "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", |
... | @@ -380,6 +559,33 @@ | ... | @@ -380,6 +559,33 @@ |
380 | "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", |
381 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" | 560 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" |
382 | }, | 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 | + }, | ||
383 | "etag": { | 589 | "etag": { |
384 | "version": "1.8.1", | 590 | "version": "1.8.1", |
385 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | 591 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", |
... | @@ -422,6 +628,31 @@ | ... | @@ -422,6 +628,31 @@ |
422 | "vary": "~1.1.2" | 628 | "vary": "~1.1.2" |
423 | } | 629 | } |
424 | }, | 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 | + }, | ||
425 | "fill-range": { | 656 | "fill-range": { |
426 | "version": "7.0.1", | 657 | "version": "7.0.1", |
427 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | 658 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", |
... | @@ -444,6 +675,39 @@ | ... | @@ -444,6 +675,39 @@ |
444 | "unpipe": "~1.0.0" | 675 | "unpipe": "~1.0.0" |
445 | } | 676 | } |
446 | }, | 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 | + }, | ||
447 | "forwarded": { | 711 | "forwarded": { |
448 | "version": "0.1.2", | 712 | "version": "0.1.2", |
449 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", | 713 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", |
... | @@ -468,6 +732,14 @@ | ... | @@ -468,6 +732,14 @@ |
468 | "pump": "^3.0.0" | 732 | "pump": "^3.0.0" |
469 | } | 733 | } |
470 | }, | 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 | + }, | ||
471 | "glob-parent": { | 743 | "glob-parent": { |
472 | "version": "5.1.1", | 744 | "version": "5.1.1", |
473 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", | 745 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", |
... | @@ -507,6 +779,20 @@ | ... | @@ -507,6 +779,20 @@ |
507 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", | 779 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", |
508 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" | 780 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" |
509 | }, | 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 | + }, | ||
510 | "has-flag": { | 796 | "has-flag": { |
511 | "version": "3.0.0", | 797 | "version": "3.0.0", |
512 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | 798 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
... | @@ -517,6 +803,14 @@ | ... | @@ -517,6 +803,14 @@ |
517 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", | 803 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", |
518 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" | 804 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" |
519 | }, | 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 | + }, | ||
520 | "http": { | 814 | "http": { |
521 | "version": "0.0.1-security", | 815 | "version": "0.0.1-security", |
522 | "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", |
... | @@ -546,6 +840,16 @@ | ... | @@ -546,6 +840,16 @@ |
546 | } | 840 | } |
547 | } | 841 | } |
548 | }, | 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 | + }, | ||
549 | "iconv-lite": { | 853 | "iconv-lite": { |
550 | "version": "0.4.24", | 854 | "version": "0.4.24", |
551 | "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", |
... | @@ -574,6 +878,11 @@ | ... | @@ -574,6 +878,11 @@ |
574 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", | 878 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", |
575 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" | 879 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" |
576 | }, | 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 | + }, | ||
577 | "ipaddr.js": { | 886 | "ipaddr.js": { |
578 | "version": "1.9.1", | 887 | "version": "1.9.1", |
579 | "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", |
... | @@ -642,6 +951,11 @@ | ... | @@ -642,6 +951,11 @@ |
642 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", | 951 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", |
643 | "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" | 952 | "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" |
644 | }, | 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 | + }, | ||
645 | "is-typedarray": { | 959 | "is-typedarray": { |
646 | "version": "1.0.0", | 960 | "version": "1.0.0", |
647 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | 961 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", |
... | @@ -652,11 +966,85 @@ | ... | @@ -652,11 +966,85 @@ |
652 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", | 966 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", |
653 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" | 967 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" |
654 | }, | 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 | + }, | ||
655 | "json-buffer": { | 1017 | "json-buffer": { |
656 | "version": "3.0.0", | 1018 | "version": "3.0.0", |
657 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", | 1019 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", |
658 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" | 1020 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" |
659 | }, | 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 | + }, | ||
660 | "keyv": { | 1048 | "keyv": { |
661 | "version": "3.1.0", | 1049 | "version": "3.1.0", |
662 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", | 1050 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", |
... | @@ -673,6 +1061,25 @@ | ... | @@ -673,6 +1061,25 @@ |
673 | "package-json": "^6.3.0" | 1061 | "package-json": "^6.3.0" |
674 | } | 1062 | } |
675 | }, | 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 | + }, | ||
676 | "lowercase-keys": { | 1083 | "lowercase-keys": { |
677 | "version": "1.0.1", | 1084 | "version": "1.0.1", |
678 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", | 1085 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", |
... | @@ -804,6 +1211,16 @@ | ... | @@ -804,6 +1211,16 @@ |
804 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", | 1211 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", |
805 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" | 1212 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" |
806 | }, | 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 | + }, | ||
807 | "on-finished": { | 1224 | "on-finished": { |
808 | "version": "2.3.0", | 1225 | "version": "2.3.0", |
809 | "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", |
... | @@ -820,6 +1237,19 @@ | ... | @@ -820,6 +1237,19 @@ |
820 | "wrappy": "1" | 1237 | "wrappy": "1" |
821 | } | 1238 | } |
822 | }, | 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 | + }, | ||
823 | "p-cancelable": { | 1253 | "p-cancelable": { |
824 | "version": "1.1.0", | 1254 | "version": "1.1.0", |
825 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", | 1255 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", |
... | @@ -843,6 +1273,11 @@ | ... | @@ -843,6 +1273,11 @@ |
843 | } | 1273 | } |
844 | } | 1274 | } |
845 | }, | 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 | + }, | ||
846 | "parseurl": { | 1281 | "parseurl": { |
847 | "version": "1.3.3", | 1282 | "version": "1.3.3", |
848 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | 1283 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
... | @@ -853,11 +1288,21 @@ | ... | @@ -853,11 +1288,21 @@ |
853 | "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", |
854 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | 1289 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" |
855 | }, | 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 | + }, | ||
856 | "picomatch": { | 1296 | "picomatch": { |
857 | "version": "2.2.2", | 1297 | "version": "2.2.2", |
858 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", | 1298 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", |
859 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" | 1299 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" |
860 | }, | 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 | + }, | ||
861 | "prepend-http": { | 1306 | "prepend-http": { |
862 | "version": "2.0.0", | 1307 | "version": "2.0.0", |
863 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", | 1308 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", |
... | @@ -872,6 +1317,11 @@ | ... | @@ -872,6 +1317,11 @@ |
872 | "ipaddr.js": "1.9.1" | 1317 | "ipaddr.js": "1.9.1" |
873 | } | 1318 | } |
874 | }, | 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 | + }, | ||
875 | "pstree.remy": { | 1325 | "pstree.remy": { |
876 | "version": "1.1.8", | 1326 | "version": "1.1.8", |
877 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", | 1327 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", |
... | @@ -886,6 +1336,11 @@ | ... | @@ -886,6 +1336,11 @@ |
886 | "once": "^1.3.1" | 1336 | "once": "^1.3.1" |
887 | } | 1337 | } |
888 | }, | 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 | + }, | ||
889 | "pupa": { | 1344 | "pupa": { |
890 | "version": "2.0.1", | 1345 | "version": "2.0.1", |
891 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", | 1346 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", |
... | @@ -950,6 +1405,78 @@ | ... | @@ -950,6 +1405,78 @@ |
950 | "rc": "^1.2.8" | 1405 | "rc": "^1.2.8" |
951 | } | 1406 | } |
952 | }, | 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 | + }, | ||
953 | "responselike": { | 1480 | "responselike": { |
954 | "version": "1.0.2", | 1481 | "version": "1.0.2", |
955 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", | 1482 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", |
... | @@ -968,6 +1495,14 @@ | ... | @@ -968,6 +1495,14 @@ |
968 | "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", |
969 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | 1496 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" |
970 | }, | 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 | + }, | ||
971 | "semver": { | 1506 | "semver": { |
972 | "version": "5.7.1", | 1507 | "version": "5.7.1", |
973 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | 1508 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", |
... | @@ -1036,11 +1571,38 @@ | ... | @@ -1036,11 +1571,38 @@ |
1036 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", | 1571 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", |
1037 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" | 1572 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" |
1038 | }, | 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 | + }, | ||
1039 | "statuses": { | 1596 | "statuses": { |
1040 | "version": "1.5.0", | 1597 | "version": "1.5.0", |
1041 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | 1598 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", |
1042 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | 1599 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" |
1043 | }, | 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 | + }, | ||
1044 | "string-width": { | 1606 | "string-width": { |
1045 | "version": "4.2.0", | 1607 | "version": "4.2.0", |
1046 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", | 1608 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", |
... | @@ -1097,6 +1659,11 @@ | ... | @@ -1097,6 +1659,11 @@ |
1097 | "has-flag": "^3.0.0" | 1659 | "has-flag": "^3.0.0" |
1098 | } | 1660 | } |
1099 | }, | 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 | + }, | ||
1100 | "term-size": { | 1667 | "term-size": { |
1101 | "version": "2.2.0", | 1668 | "version": "2.2.0", |
1102 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", | 1669 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", |
... | @@ -1128,6 +1695,45 @@ | ... | @@ -1128,6 +1695,45 @@ |
1128 | "nopt": "~1.0.10" | 1695 | "nopt": "~1.0.10" |
1129 | } | 1696 | } |
1130 | }, | 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 | + }, | ||
1131 | "type-fest": { | 1737 | "type-fest": { |
1132 | "version": "0.8.1", | 1738 | "version": "0.8.1", |
1133 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", | 1739 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", |
... | @@ -1191,6 +1797,14 @@ | ... | @@ -1191,6 +1797,14 @@ |
1191 | "xdg-basedir": "^4.0.0" | 1797 | "xdg-basedir": "^4.0.0" |
1192 | } | 1798 | } |
1193 | }, | 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 | + }, | ||
1194 | "url-parse-lax": { | 1808 | "url-parse-lax": { |
1195 | "version": "3.0.0", | 1809 | "version": "3.0.0", |
1196 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", | 1810 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", |
... | @@ -1204,11 +1818,77 @@ | ... | @@ -1204,11 +1818,77 @@ |
1204 | "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", |
1205 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | 1819 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" |
1206 | }, | 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 | + }, | ||
1207 | "vary": { | 1826 | "vary": { |
1208 | "version": "1.1.2", | 1827 | "version": "1.1.2", |
1209 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | 1828 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |
1210 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | 1829 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |
1211 | }, | 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 | + }, | ||
1212 | "widest-line": { | 1892 | "widest-line": { |
1213 | "version": "3.1.0", | 1893 | "version": "3.1.0", |
1214 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", | 1894 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", |
... | @@ -1217,6 +1897,11 @@ | ... | @@ -1217,6 +1897,11 @@ |
1217 | "string-width": "^4.0.0" | 1897 | "string-width": "^4.0.0" |
1218 | } | 1898 | } |
1219 | }, | 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 | + }, | ||
1220 | "wrappy": { | 1905 | "wrappy": { |
1221 | "version": "1.0.2", | 1906 | "version": "1.0.2", |
1222 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | 1907 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
... | @@ -1233,10 +1918,25 @@ | ... | @@ -1233,10 +1918,25 @@ |
1233 | "typedarray-to-buffer": "^3.1.5" | 1918 | "typedarray-to-buffer": "^3.1.5" |
1234 | } | 1919 | } |
1235 | }, | 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 | + }, | ||
1236 | "xdg-basedir": { | 1926 | "xdg-basedir": { |
1237 | "version": "4.0.0", | 1927 | "version": "4.0.0", |
1238 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", | 1928 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", |
1239 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" | 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==" | ||
1240 | } | 1940 | } |
1241 | } | 1941 | } |
1242 | } | 1942 | } | ... | ... |
... | @@ -9,8 +9,11 @@ | ... | @@ -9,8 +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", | ||
14 | "nodemon": "^2.0.4" | 17 | "nodemon": "^2.0.4" |
15 | } | 18 | } |
16 | } | 19 | } | ... | ... |
app/node/routes/character.js
0 → 100644
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 |
app/node/routes/home.js
deleted
100644 → 0
... | @@ -30,6 +30,14 @@ | ... | @@ -30,6 +30,14 @@ |
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.9", | 135 | + "version": "14.0.13", |
134 | - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.9.tgz", | 136 | + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", |
135 | - "integrity": "sha512-0sCTiXKXELOBxvZLN4krQ0FPOAA7ij+6WwvD0k/PHd9/KAkr4dXel5J9fh6F4x1FwAQILqAWkmpeuS6mjf1iKA==" | 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": { |
... | @@ -163,6 +165,14 @@ | ... | @@ -163,6 +165,14 @@ |
163 | "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", |
164 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" | 166 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" |
165 | }, | 167 | }, |
168 | + "axios": { | ||
169 | + "version": "0.19.2", | ||
170 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", | ||
171 | + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", | ||
172 | + "requires": { | ||
173 | + "follow-redirects": "1.5.10" | ||
174 | + } | ||
175 | + }, | ||
166 | "balanced-match": { | 176 | "balanced-match": { |
167 | "version": "1.0.0", | 177 | "version": "1.0.0", |
168 | "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", |
... | @@ -244,6 +254,14 @@ | ... | @@ -244,6 +254,14 @@ |
244 | "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", |
245 | "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" | 255 | "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" |
246 | }, | 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 | + }, | ||
247 | "dir-glob": { | 265 | "dir-glob": { |
248 | "version": "3.0.1", | 266 | "version": "3.0.1", |
249 | "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", |
... | @@ -293,6 +311,14 @@ | ... | @@ -293,6 +311,14 @@ |
293 | "to-regex-range": "^5.0.1" | 311 | "to-regex-range": "^5.0.1" |
294 | } | 312 | } |
295 | }, | 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 | + }, | ||
296 | "fs-extra": { | 322 | "fs-extra": { |
297 | "version": "8.1.0", | 323 | "version": "8.1.0", |
298 | "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", |
... | @@ -478,6 +504,11 @@ | ... | @@ -478,6 +504,11 @@ |
478 | "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", |
479 | "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==" | 505 | "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==" |
480 | }, | 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 | + }, | ||
481 | "magic-string": { | 512 | "magic-string": { |
482 | "version": "0.25.7", | 513 | "version": "0.25.7", |
483 | "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", |
... | @@ -525,6 +556,11 @@ | ... | @@ -525,6 +556,11 @@ |
525 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", | 556 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", |
526 | "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==" | 557 | "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==" |
527 | }, | 558 | }, |
559 | + "ms": { | ||
560 | + "version": "2.0.0", | ||
561 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||
562 | + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||
563 | + }, | ||
528 | "once": { | 564 | "once": { |
529 | "version": "1.4.0", | 565 | "version": "1.4.0", |
530 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | 566 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
... | @@ -722,9 +758,9 @@ | ... | @@ -722,9 +758,9 @@ |
722 | } | 758 | } |
723 | }, | 759 | }, |
724 | "svelte": { | 760 | "svelte": { |
725 | - "version": "3.23.0", | 761 | + "version": "3.23.2", |
726 | - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.23.0.tgz", | 762 | + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.23.2.tgz", |
727 | - "integrity": "sha512-cnyd96bK/Nw5DnYuB1hzm5cl6+I1fpmdKOteA7KLzU9KGLsLmvWsSkSKbcntzODCLmSySN3HjcgTHRo6/rJNTw==", | 763 | + "integrity": "sha512-hE8GeTM83YVR4GY6/6PeDEcGct4JS5aCi+IYbCAa76oaPSfuF7L85DQYULQxlTK/KPWzw3L1GRGmC3oPG/PQoA==", |
728 | "dev": true | 764 | "dev": true |
729 | }, | 765 | }, |
730 | "svelte-spa-router": { | 766 | "svelte-spa-router": { | ... | ... |
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | "svelte": "^3.0.0" | 15 | "svelte": "^3.0.0" |
16 | }, | 16 | }, |
17 | "dependencies": { | 17 | "dependencies": { |
18 | + "@lottiefiles/svelte-lottie-player": "^0.1.4", | ||
19 | + "axios": "^0.19.2", | ||
18 | "rollup-plugin-copy": "^3.3.0", | 20 | "rollup-plugin-copy": "^3.3.0", |
19 | "sirv-cli": "^0.4.4", | 21 | "sirv-cli": "^0.4.4", |
20 | "svelte-spa-router": "^2.1.0" | 22 | "svelte-spa-router": "^2.1.0" | ... | ... |
app/web/public/favicon.png
deleted
100644 → 0

3.05 KB
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="en"> | 2 | <html lang="en"> |
3 | 3 | ||
4 | -<head> | 4 | +<head lang="ko"> |
5 | <meta charset='utf-8'> | 5 | <meta charset='utf-8'> |
6 | <meta name='viewport' content='width=device-width,initial-scale=1'> | 6 | <meta name='viewport' content='width=device-width,initial-scale=1'> |
7 | 7 | ||
8 | <title>::메이플스토리 스펙 계산기::</title> | 8 | <title>::메이플스토리 스펙 계산기::</title> |
9 | 9 | ||
10 | - <link rel='icon' type='image/png' href='/favicon.png'> | 10 | + <link rel='icon' type='shortcut icon' href='./build/static/images/favicon.ico'> |
11 | - <link rel='stylesheet' href='/global.css'> | 11 | + <link rel='stylesheet' href='./static/css/global.css'> |
12 | <link rel='stylesheet' href='/build/bundle.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="당신의 메이플스토리 스펙 효율을 빠르게 계산해보세요!"> | ||
13 | 16 | ||
14 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"> | 17 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"> |
15 | <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> | 18 | <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> | ... | ... |
app/web/src/components/Loading.svelte
0 → 100644
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 |
app/web/src/images/favicon.ico
0 → 100644
No preview for this file type
app/web/src/images/ogimage.png
0 → 100644

7.47 KB
1 | import Search from './routes/Search.svelte'; | 1 | import Search from './routes/Search.svelte'; |
2 | +import Character from './routes/Character.svelte'; | ||
2 | 3 | ||
3 | const routes = { | 4 | const routes = { |
4 | '/': Search, | 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 | ... | ... |
app/web/src/routes/Character.svelte
0 → 100644
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 |
... | @@ -39,6 +39,10 @@ | ... | @@ -39,6 +39,10 @@ |
39 | <p> | 39 | <p> |
40 | <a href="https://maplestory.nexon.com/MyMaple/Account/Character/Visibility" target="_BLANK">공개설정하러 가기</a> | 40 | <a href="https://maplestory.nexon.com/MyMaple/Account/Character/Visibility" target="_BLANK">공개설정하러 가기</a> |
41 | </p> | 41 | </p> |
42 | + <p class="red-text text-accent-1"> | ||
43 | + <i class="material-icons">info_outline</i> | ||
44 | + <span>제논, 데몬어벤져는 지원하지 않습니다.</span> | ||
45 | + </p> | ||
42 | </div> | 46 | </div> |
43 | </div> | 47 | </div> |
44 | </div> | 48 | </div> |
... | @@ -47,9 +51,11 @@ | ... | @@ -47,9 +51,11 @@ |
47 | </section> | 51 | </section> |
48 | 52 | ||
49 | <style> | 53 | <style> |
50 | -section { width:100%; height:100%; display:flex; flex-direction:column; justify-content:center; } | 54 | +section { width:100%; height:100%; display:flex; flex-direction:column; } |
51 | -.search-box { width:100%; } | 55 | +.search-box { width:100%; margin:auto 0; } |
52 | h4 { font-size:20px; text-align:center; } | 56 | h4 { font-size:20px; text-align:center; } |
53 | .input-field { padding-right:70px; } | 57 | .input-field { padding-right:70px; } |
54 | .input-field button { position:absolute; right:0; top:7px; } | 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; } | ||
55 | </style> | 61 | </style> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment