Showing
3 changed files
with
207 additions
and
161 deletions
... | @@ -46,26 +46,26 @@ app.engine('html', require('ejs').renderFile); | ... | @@ -46,26 +46,26 @@ app.engine('html', require('ejs').renderFile); |
46 | var server=app.listen(3000,function(){ | 46 | var server=app.listen(3000,function(){ |
47 | console.log("Express server has started on port 3000"); | 47 | console.log("Express server has started on port 3000"); |
48 | 48 | ||
49 | - });//app listen 꿑 | 49 | + });//app listen L |
50 | 50 | ||
51 | // | 51 | // |
52 | /* | 52 | /* |
53 | -var readline=require('readline');//입력받기 위한 모듈 | 53 | +var readline=require('readline');//입력받기 위한 모듈 |
54 | -var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 | 54 | +var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 |
55 | -var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url | 55 | +var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url |
56 | -var rtfw2="http://www.rankedftw.com/player/"//rtfw 번호 기반 특정 플레이어 검색 url | 56 | +var rtfw2="http://www.rankedftw.com/player/"//rtfw 번호 기반 특정 플레이어 검색 url |
57 | var league='silver_2'; | 57 | var league='silver_2'; |
58 | var region='KR'; | 58 | var region='KR'; |
59 | // | 59 | // |
60 | -var cheerio=require('cheerio');//cheerio모듈 사용 | 60 | +var cheerio=require('cheerio');//cheerio모듈 사용 |
61 | -var request=require('request');//request모듈 사용 | 61 | +var request=require('request');//request모듈 사용 |
62 | -var fs=require('fs');//파일시스템 사용 | 62 | +var fs=require('fs');//파일시스템 사용 |
63 | // | 63 | // |
64 | //request 1 variable | 64 | //request 1 variable |
65 | -var username='';//username문자열 선언 | 65 | +var username='';//username문자열 선언 |
66 | -var userleague='';//userleague 문자열 선언 | 66 | +var userleague='';//userleague 문자열 선언 |
67 | -var userregion='';//userregion 문자열 선언 | 67 | +var userregion='';//userregion 문자열 선언 |
68 | -var usernumber='';//usernumber 문자열 선언 | 68 | +var usernumber='';//usernumber 문자열 선언 |
69 | // | 69 | // |
70 | //request 2 variable | 70 | //request 2 variable |
71 | 71 | ||
... | @@ -83,82 +83,82 @@ var usernumber='';//usernumber 문자열 선언 | ... | @@ -83,82 +83,82 @@ var usernumber='';//usernumber 문자열 선언 |
83 | 83 | ||
84 | // | 84 | // |
85 | //delivering variable | 85 | //delivering variable |
86 | -var momentum;//기세 | 86 | +var momentum;//기세 |
87 | -var terran_proficiency;//테란 숙련도 | 87 | +var terran_proficiency;//테란 숙련도 |
88 | -var zerg_proficiency;//저그 숙련도 | 88 | +var zerg_proficiency;//저그 숙련도 |
89 | -var protoss_proficiency;//프로토스 숙련도 | 89 | +var protoss_proficiency;//프로토스 숙련도 |
90 | -var primary_race;//주 종족 | 90 | +var primary_race;//주 종족 |
91 | -var win_rate;//시즌 전체 승률 | 91 | +var win_rate;//시즌 전체 승률 |
92 | 92 | ||
93 | -var myrace;//내 종족 | 93 | +var myrace;//내 종족 |
94 | -var enemyrace;//상대 종족 | 94 | +var enemyrace;//상대 종족 |
95 | -var recommend;//추천빌드(운영/타이밍/올인) | 95 | +var recommend;//추천빌드(운영/타이밍/올인) |
96 | // | 96 | // |
97 | 97 | ||
98 | -r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 | 98 | +r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 |
99 | - //question은 에러 제어 만들면 안된다. | 99 | + //question은 에러 제어 만들면 안된다. |
100 | - console.log("r.question processing");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. | 100 | + console.log("r.question processing");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. |
101 | - rtfw1=rtfw1+answer;//검색 url 구성 | 101 | + rtfw1=rtfw1+answer;//검색 url 구성 |
102 | - console.log(rtfw1);//테스트용 : 검색 url 확인 | 102 | + console.log(rtfw1);//테스트용 : 검색 url 확인 |
103 | // | 103 | // |
104 | -request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 request 1 | 104 | +request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 request 1 |
105 | - if(error){throw error};//에러처리 | 105 | + if(error){throw error};//에러처리 |
106 | console.log("request 1 processing"); | 106 | console.log("request 1 processing"); |
107 | - let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 | 107 | + let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 |
108 | - $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. | 108 | + $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. |
109 | - username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 | 109 | + username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 |
110 | - userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 | 110 | + userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 |
111 | - userregion=$(this).find('.region').text().trim();//region클래스를 찾아 공백빼고 텍스트화 | 111 | + userregion=$(this).find('.region').text().trim();//region클래스를 찾아 공백빼고 텍스트화 |
112 | - if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 | 112 | + if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 |
113 | - console.log(`${username}`);//테스트용 : 유저네임 출력 | 113 | + console.log(`${username}`);//테스트용 : 유저네임 출력 |
114 | - console.log(`${userregion}`);//테스트용 : 유저리전 출력 | 114 | + console.log(`${userregion}`);//테스트용 : 유저리전 출력 |
115 | - var usernumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 | 115 | + var usernumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 |
116 | - var localindex1=usernumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 | 116 | + var localindex1=usernumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 |
117 | - usernumber=usernumber.slice(localindex1+1);//앞부분 슬래시 자른다. | 117 | + usernumber=usernumber.slice(localindex1+1);//앞부분 슬래시 자른다. |
118 | - var localindex2=usernumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 | 118 | + var localindex2=usernumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 |
119 | - usernumber=usernumber.slice(0,localindex2);//뒷부분 슬래시 자른다. | 119 | + usernumber=usernumber.slice(0,localindex2);//뒷부분 슬래시 자른다. |
120 | - console.log(`${usernumber}`);//테스트용 : 유저넘버 출력 | 120 | + console.log(`${usernumber}`);//테스트용 : 유저넘버 출력 |
121 | - if(rtfw2.length>33){//하나라도 붙어있으면 | 121 | + if(rtfw2.length>33){//하나라도 붙어있으면 |
122 | - rtfw2=rtfw2;//아무것도 안한다. | 122 | + rtfw2=rtfw2;//아무것도 안한다. |
123 | - }else{//그렇지않고 아무것도 안붙어있으면 | 123 | + }else{//그렇지않고 아무것도 안붙어있으면 |
124 | - rtfw2=rtfw2+usernumber+'/';//rtfw2 url갱신 | 124 | + rtfw2=rtfw2+usernumber+'/';//rtfw2 url갱신 |
125 | } | 125 | } |
126 | - console.log(rtfw2);//테스트용 : rtfw2 출력 | 126 | + console.log(rtfw2);//테스트용 : rtfw2 출력 |
127 | - }//이름서버리그비교if종료 | 127 | + }//이름서버리그비교if종료 |
128 | - });//ul a find문 종료 | 128 | + });//ul a find문 종료 |
129 | 129 | ||
130 | var profileID=''; | 130 | var profileID=''; |
131 | - request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 request 2 | 131 | + request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 request 2 |
132 | - if(error){throw error};//에러처리 | 132 | + if(error){throw error};//에러처리 |
133 | - console.log('request2 processing');//테스트용 : request2 실행여부 출력 | 133 | + console.log('request2 processing');//테스트용 : request2 실행여부 출력 |
134 | - let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 | 134 | + let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 |
135 | - $('.content').find('.bnet-link').each(function(index,elem){//content 클래스 안의 bnet-link클래스를 포함하는 요소를 찾는다. | 135 | + $('.content').find('.bnet-link').each(function(index,elem){//content 클래스 안의 bnet-link클래스를 포함하는 요소를 찾는다. |
136 | - profileID=$(this).toString().slice(62,72);//얻고자 하는 profileID를 포함하여 앞뒤로 적당히 자른다. | 136 | + profileID=$(this).toString().slice(62,72);//얻고자 하는 profileID를 포함하여 앞뒤로 적당히 자른다. |
137 | - var localindex3=profileID.search('/');//첫번째 슬레시 발견하는 인덱스 검출 | 137 | + var localindex3=profileID.search('/');//첫번째 슬레시 발견하는 인덱스 검출 |
138 | - profileID=profileID.slice(localindex3+1);//앞부분 슬래시 자른다. | 138 | + profileID=profileID.slice(localindex3+1);//앞부분 슬래시 자른다. |
139 | - var localindex4=profileID.search('/')-localindex3;//두번째 슬레시 발견하는 인덱스 검출 | 139 | + var localindex4=profileID.search('/')-localindex3;//두번째 슬레시 발견하는 인덱스 검출 |
140 | - profileID=profileID.slice(0,localindex4);//뒷부분 슬래시 자른다. | 140 | + profileID=profileID.slice(0,localindex4);//뒷부분 슬래시 자른다. |
141 | - console.log(`${profileID}`);//테스트용 : profileID 출력 | 141 | + console.log(`${profileID}`);//테스트용 : profileID 출력 |
142 | - //profileID=encodeURI(encodeURIComponent(profileID));//한글처리부 | 142 | + //profileID=encodeURI(encodeURIComponent(profileID));//한글처리부 |
143 | - });//a bnetlink 종료 | 143 | + });//a bnetlink 종료 |
144 | -//console.log(`${profileID}`);//테스트용 : profileID 출력 | 144 | +//console.log(`${profileID}`);//테스트용 : profileID 출력 |
145 | 145 | ||
146 | -var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"//매치히스토리 url 앞부분 | 146 | +var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"//매치히스토리 url 앞부분 |
147 | -var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"//매치히스토리 url 뒷부분 | 147 | +var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"//매치히스토리 url 뒷부분 |
148 | -var match_history_url=match_history_1+profileID+match_history_2;//매치히스토리 url 구성 | 148 | +var match_history_url=match_history_1+profileID+match_history_2;//매치히스토리 url 구성 |
149 | -console.log(match_history_url);//테스트용 : 매치히스토리 url 출력 | 149 | +console.log(match_history_url);//테스트용 : 매치히스토리 url 출력 |
150 | 150 | ||
151 | request(match_history_url,(error,response,body)=>{//match history request request 3 | 151 | request(match_history_url,(error,response,body)=>{//match history request request 3 |
152 | - if(error){throw error};//에러처리 | 152 | + if(error){throw error};//에러처리 |
153 | - console.log('request3 processing');//테스트용 : request 작동여부 출력 | 153 | + console.log('request3 processing');//테스트용 : request 작동여부 출력 |
154 | 154 | ||
155 | -var obj1=JSON.parse(body);//request 결과를 JSON object로 변환 | 155 | +var obj1=JSON.parse(body);//request 결과를 JSON object로 변환 |
156 | -//console.log(obj.matches [0].map);//테스트용 : 하나에 접근 | 156 | +//console.log(obj.matches [0].map);//테스트용 : 하나에 접근 |
157 | -$(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 match들과 인덱스 사용 | 157 | +$(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 match들과 인덱스 사용 |
158 | - if(match.type=='1v1'){//경기타입이 1대1인 경우에만 관심있다. | 158 | + if(match.type=='1v1'){//경기타입이 1대1인 경우에만 관심있다. |
159 | - console.log(index+":::",match.decision,match.map);//인덱스와 승패, 맵 표시 | 159 | + console.log(index+":::",match.decision,match.map);//인덱스와 승패, 맵 표시 |
160 | -};//if 1v1 종료 | 160 | +};//if 1v1 종료 |
161 | -});//each function 종료 | 161 | +});//each function 종료 |
162 | 162 | ||
163 | var ladder_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" | 163 | var ladder_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" |
164 | var ladder_2="/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; | 164 | var ladder_2="/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; |
... | @@ -167,8 +167,8 @@ console.log(ladder_url); | ... | @@ -167,8 +167,8 @@ console.log(ladder_url); |
167 | request(ladder_url,(error,response,body)=>{//ladder request request 4 | 167 | request(ladder_url,(error,response,body)=>{//ladder request request 4 |
168 | if(error){throw error}; | 168 | if(error){throw error}; |
169 | console.log('request4 processing'); | 169 | console.log('request4 processing'); |
170 | - var obj2=JSON.parse(body);//request 결과를 JSON object로 변환 | 170 | + var obj2=JSON.parse(body);//request 결과를 JSON object로 변환 |
171 | -// console.log(obj2.currentSeason [2].ladder[0].wins);//테스트용 : 하나에 접근 | 171 | +// console.log(obj2.currentSeason [2].ladder[0].wins);//테스트용 : 하나에 접근 |
172 | var wins=obj2.currentSeason[2].ladder[0].wins; | 172 | var wins=obj2.currentSeason[2].ladder[0].wins; |
173 | var losses=obj2.currentSeason[2].ladder[0].losses; | 173 | var losses=obj2.currentSeason[2].ladder[0].losses; |
174 | win_rate=wins/(wins+losses); | 174 | win_rate=wins/(wins+losses); |
... | @@ -183,8 +183,8 @@ console.log(profile_url); | ... | @@ -183,8 +183,8 @@ console.log(profile_url); |
183 | request(profile_url,(error,response,body)=>{//profile request request 5 | 183 | request(profile_url,(error,response,body)=>{//profile request request 5 |
184 | if(error){throw error}; | 184 | if(error){throw error}; |
185 | console.log('request5 processing'); | 185 | console.log('request5 processing'); |
186 | - var obj3=JSON.parse(body);//request 결과를 JSON object로 변환 | 186 | + var obj3=JSON.parse(body);//request 결과를 JSON object로 변환 |
187 | - //console.log(obj2.currentSeason [1].ladder[0].wins);//테스트용 : 하나에 접근 | 187 | + //console.log(obj2.currentSeason [1].ladder[0].wins);//테스트용 : 하나에 접근 |
188 | primary_race=obj3.career.primaryRace; | 188 | primary_race=obj3.career.primaryRace; |
189 | //console.log(primary_race); | 189 | //console.log(primary_race); |
190 | var terran_level=obj3.swarmLevels.terran.level; | 190 | var terran_level=obj3.swarmLevels.terran.level; |
... | @@ -196,70 +196,70 @@ primary_race=obj3.career.primaryRace; | ... | @@ -196,70 +196,70 @@ primary_race=obj3.career.primaryRace; |
196 | //console.log(protoss_level); | 196 | //console.log(protoss_level); |
197 | 197 | ||
198 | //build recommend algorithm | 198 | //build recommend algorithm |
199 | -var matchresults=[];//매치결과 담을 배열 선언 | 199 | +var matchresults=[];//매치결과 담을 배열 선언 |
200 | -var momentum_win=0;//최근 10경기 중 승수 초기화 | 200 | +var momentum_win=0;//최근 10경기 중 승수 초기화 |
201 | -for (var i=0;i<25;i++){//매치히스토리는 최대 25개 | 201 | +for (var i=0;i<25;i++){//매치히스토리는 최대 25개 |
202 | - if(obj1.matches[i].type=='1v1'){//1v1에만 관심있다. | 202 | + if(obj1.matches[i].type=='1v1'){//1v1에만 관심있다. |
203 | - matchresults.push(obj1.matches[i].decision);//배열 끝에 결과 삽입 | 203 | + matchresults.push(obj1.matches[i].decision);//배열 끝에 결과 삽입 |
204 | - if((matchresults.length<11)&&(obj1.matches[i].decision=='Win')){//최근 10경기에서 승리한 경우 | 204 | + if((matchresults.length<11)&&(obj1.matches[i].decision=='Win')){//최근 10경기에서 승리한 경우 |
205 | - momentum_win=momentum_win+1;//그 승수를 카운트한다. | 205 | + momentum_win=momentum_win+1;//그 승수를 카운트한다. |
206 | - }//if length11 종료 | 206 | + }//if length11 종료 |
207 | -}//obj1 1v1 종료 | 207 | +}//obj1 1v1 종료 |
208 | -}//for i 25 종료 | 208 | +}//for i 25 종료 |
209 | -//console.log(matchresults);//테스트용 : matchresults 출력 | 209 | +//console.log(matchresults);//테스트용 : matchresults 출력 |
210 | -//console.log(momentum_win);//테스트용 : momentum_win 출력 | 210 | +//console.log(momentum_win);//테스트용 : momentum_win 출력 |
211 | -if(momentum_win>=7){//7승 이상이면 상승세 | 211 | +if(momentum_win>=7){//7승 이상이면 상승세 |
212 | -momentum='상승세'; | 212 | +momentum='상승세'; |
213 | } | 213 | } |
214 | -if((momentum_win<7)&&(momentum_win>=4)){//4승이상 7승미만이면 정체 | 214 | +if((momentum_win<7)&&(momentum_win>=4)){//4승이상 7승미만이면 정체 |
215 | -momentum='정체중'; | 215 | +momentum='정체중'; |
216 | } | 216 | } |
217 | -if(momentum_win<4){//4승 미만이면 하락세 | 217 | +if(momentum_win<4){//4승 미만이면 하락세 |
218 | -momentum='하락세'; | 218 | +momentum='하락세'; |
219 | } | 219 | } |
220 | -//console.log(momentum);//테스트용 : 기세 출력 | 220 | +//console.log(momentum);//테스트용 : 기세 출력 |
221 | 221 | ||
222 | -if(terran_level<50){//테란 레벨 50 안되면 | 222 | +if(terran_level<50){//테란 레벨 50 안되면 |
223 | - terran_proficiency='비숙련자'//테란 비숙련자 | 223 | + terran_proficiency='비숙련자'//테란 비숙련자 |
224 | } else{ | 224 | } else{ |
225 | - terran_proficiency='숙련자' | 225 | + terran_proficiency='숙련자' |
226 | } | 226 | } |
227 | -if(zerg_level<50){//저그 레벨 50 안되면 | 227 | +if(zerg_level<50){//저그 레벨 50 안되면 |
228 | - zerg_proficiency='비숙련자'//저그 비숙련자 | 228 | + zerg_proficiency='비숙련자'//저그 비숙련자 |
229 | } else{ | 229 | } else{ |
230 | - zerg_proficiency='숙련자' | 230 | + zerg_proficiency='숙련자' |
231 | } | 231 | } |
232 | -if(protoss_level<50){//프로토스 레벨 50 안되면 | 232 | +if(protoss_level<50){//프로토스 레벨 50 안되면 |
233 | - protoss_proficiency='비숙련자'//프로토스 비숙련자 | 233 | + protoss_proficiency='비숙련자'//프로토스 비숙련자 |
234 | } else{ | 234 | } else{ |
235 | - protoss_proficiency='숙련자' | 235 | + protoss_proficiency='숙련자' |
236 | } | 236 | } |
237 | // | 237 | // |
238 | //system message part | 238 | //system message part |
239 | -console.log("최근 10경기 분석 결과 현재 상대는 '"+momentum+"'입니다."); | 239 | +console.log("최근 10경기 분석 결과 현재 상대는 '"+momentum+"'입니다."); |
240 | -console.log("상대는 테란 '"+terran_proficiency+"'입니다."); | 240 | +console.log("상대는 테란 '"+terran_proficiency+"'입니다."); |
241 | -console.log("상대는 저그 '"+zerg_proficiency+"'입니다."); | 241 | +console.log("상대는 저그 '"+zerg_proficiency+"'입니다."); |
242 | -console.log("상대는 프로토스 '"+protoss_proficiency+"'입니다."); | 242 | +console.log("상대는 프로토스 '"+protoss_proficiency+"'입니다."); |
243 | -console.log("상대의 주 종족은 '"+primary_race+"'입니다."); | 243 | +console.log("상대의 주 종족은 '"+primary_race+"'입니다."); |
244 | -console.log("상대의 이번 시즌 전체 승률은 '"+win_rate+"'입니다."); | 244 | +console.log("상대의 이번 시즌 전체 승률은 '"+win_rate+"'입니다."); |
245 | // | 245 | // |
246 | //build recommend command | 246 | //build recommend command |
247 | 247 | ||
248 | // | 248 | // |
249 | 249 | ||
250 | console.log('request5 done'); | 250 | console.log('request5 done'); |
251 | -});//request5종료 | 251 | +});//request5종료 |
252 | console.log('request4 done'); | 252 | console.log('request4 done'); |
253 | -});//request4종료 | 253 | +});//request4종료 |
254 | console.log('request3 done'); | 254 | console.log('request3 done'); |
255 | -});//request3종료 | 255 | +});//request3종료 |
256 | console.log('request2 done'); | 256 | console.log('request2 done'); |
257 | -});//request2종료 | 257 | +});//request2종료 |
258 | console.log('request1 done'); | 258 | console.log('request1 done'); |
259 | -});//request1 종료 | 259 | +});//request1 종료 |
260 | 260 | ||
261 | console.log('r.question done'); | 261 | console.log('r.question done'); |
262 | //console.log(terran_level); | 262 | //console.log(terran_level); |
263 | -r.close()//반드시 close를 해줘야 한다.사용이 다 끝난 후에. | 263 | +r.close()//반드시 close를 해줘야 한다.사용이 다 끝난 후에. |
264 | -});//r.question 끝 | 264 | +});//r.question 끝 |
265 | */ | 265 | */ | ... | ... |
1 | { | 1 | { |
2 | - "requires": true, | 2 | + "name": "starcraft2", |
3 | + "version": "1.0.0", | ||
3 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | + "requires": true, | ||
4 | "dependencies": { | 6 | "dependencies": { |
5 | "@types/node": { | 7 | "@types/node": { |
6 | "version": "10.12.14", | 8 | "version": "10.12.14", |
... | @@ -117,6 +119,16 @@ | ... | @@ -117,6 +119,16 @@ |
117 | "qs": "6.5.2", | 119 | "qs": "6.5.2", |
118 | "raw-body": "2.3.3", | 120 | "raw-body": "2.3.3", |
119 | "type-is": "~1.6.16" | 121 | "type-is": "~1.6.16" |
122 | + }, | ||
123 | + "dependencies": { | ||
124 | + "iconv-lite": { | ||
125 | + "version": "0.4.23", | ||
126 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | ||
127 | + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", | ||
128 | + "requires": { | ||
129 | + "safer-buffer": ">= 2.1.2 < 3" | ||
130 | + } | ||
131 | + } | ||
120 | } | 132 | } |
121 | }, | 133 | }, |
122 | "boolbase": { | 134 | "boolbase": { |
... | @@ -150,6 +162,16 @@ | ... | @@ -150,6 +162,16 @@ |
150 | "htmlparser2": "^3.9.1", | 162 | "htmlparser2": "^3.9.1", |
151 | "lodash": "^4.15.0", | 163 | "lodash": "^4.15.0", |
152 | "parse5": "^3.0.1" | 164 | "parse5": "^3.0.1" |
165 | + }, | ||
166 | + "dependencies": { | ||
167 | + "parse5": { | ||
168 | + "version": "3.0.3", | ||
169 | + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", | ||
170 | + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", | ||
171 | + "requires": { | ||
172 | + "@types/node": "*" | ||
173 | + } | ||
174 | + } | ||
153 | } | 175 | } |
154 | }, | 176 | }, |
155 | "combined-stream": { | 177 | "combined-stream": { |
... | @@ -538,9 +560,9 @@ | ... | @@ -538,9 +560,9 @@ |
538 | } | 560 | } |
539 | }, | 561 | }, |
540 | "iconv-lite": { | 562 | "iconv-lite": { |
541 | - "version": "0.4.23", | 563 | + "version": "0.4.24", |
542 | - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | 564 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", |
543 | - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", | 565 | + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", |
544 | "requires": { | 566 | "requires": { |
545 | "safer-buffer": ">= 2.1.2 < 3" | 567 | "safer-buffer": ">= 2.1.2 < 3" |
546 | } | 568 | } |
... | @@ -606,13 +628,6 @@ | ... | @@ -606,13 +628,6 @@ |
606 | "whatwg-url": "^7.0.0", | 628 | "whatwg-url": "^7.0.0", |
607 | "ws": "^6.1.0", | 629 | "ws": "^6.1.0", |
608 | "xml-name-validator": "^3.0.0" | 630 | "xml-name-validator": "^3.0.0" |
609 | - }, | ||
610 | - "dependencies": { | ||
611 | - "parse5": { | ||
612 | - "version": "5.1.0", | ||
613 | - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", | ||
614 | - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" | ||
615 | - } | ||
616 | } | 631 | } |
617 | }, | 632 | }, |
618 | "json-schema": { | 633 | "json-schema": { |
... | @@ -743,12 +758,9 @@ | ... | @@ -743,12 +758,9 @@ |
743 | } | 758 | } |
744 | }, | 759 | }, |
745 | "parse5": { | 760 | "parse5": { |
746 | - "version": "3.0.3", | 761 | + "version": "5.1.0", |
747 | - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", | 762 | + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", |
748 | - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", | 763 | + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" |
749 | - "requires": { | ||
750 | - "@types/node": "*" | ||
751 | - } | ||
752 | }, | 764 | }, |
753 | "parseurl": { | 765 | "parseurl": { |
754 | "version": "1.3.2", | 766 | "version": "1.3.2", |
... | @@ -813,6 +825,16 @@ | ... | @@ -813,6 +825,16 @@ |
813 | "http-errors": "1.6.3", | 825 | "http-errors": "1.6.3", |
814 | "iconv-lite": "0.4.23", | 826 | "iconv-lite": "0.4.23", |
815 | "unpipe": "1.0.0" | 827 | "unpipe": "1.0.0" |
828 | + }, | ||
829 | + "dependencies": { | ||
830 | + "iconv-lite": { | ||
831 | + "version": "0.4.23", | ||
832 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | ||
833 | + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", | ||
834 | + "requires": { | ||
835 | + "safer-buffer": ">= 2.1.2 < 3" | ||
836 | + } | ||
837 | + } | ||
816 | } | 838 | } |
817 | }, | 839 | }, |
818 | "readable-stream": { | 840 | "readable-stream": { |
... | @@ -850,6 +872,22 @@ | ... | @@ -850,6 +872,22 @@ |
850 | "tough-cookie": "~2.4.3", | 872 | "tough-cookie": "~2.4.3", |
851 | "tunnel-agent": "^0.6.0", | 873 | "tunnel-agent": "^0.6.0", |
852 | "uuid": "^3.3.2" | 874 | "uuid": "^3.3.2" |
875 | + }, | ||
876 | + "dependencies": { | ||
877 | + "punycode": { | ||
878 | + "version": "1.4.1", | ||
879 | + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", | ||
880 | + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" | ||
881 | + }, | ||
882 | + "tough-cookie": { | ||
883 | + "version": "2.4.3", | ||
884 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", | ||
885 | + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", | ||
886 | + "requires": { | ||
887 | + "psl": "^1.1.24", | ||
888 | + "punycode": "^1.4.1" | ||
889 | + } | ||
890 | + } | ||
853 | } | 891 | } |
854 | }, | 892 | }, |
855 | "request-promise-core": { | 893 | "request-promise-core": { |
... | @@ -927,7 +965,8 @@ | ... | @@ -927,7 +965,8 @@ |
927 | "source-map": { | 965 | "source-map": { |
928 | "version": "0.6.1", | 966 | "version": "0.6.1", |
929 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | 967 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", |
930 | - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | 968 | + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
969 | + "optional": true | ||
931 | }, | 970 | }, |
932 | "sshpk": { | 971 | "sshpk": { |
933 | "version": "1.15.2", | 972 | "version": "1.15.2", |
... | @@ -969,19 +1008,12 @@ | ... | @@ -969,19 +1008,12 @@ |
969 | "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" | 1008 | "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" |
970 | }, | 1009 | }, |
971 | "tough-cookie": { | 1010 | "tough-cookie": { |
972 | - "version": "2.4.3", | 1011 | + "version": "2.5.0", |
973 | - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", | 1012 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", |
974 | - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", | 1013 | + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", |
975 | "requires": { | 1014 | "requires": { |
976 | - "psl": "^1.1.24", | 1015 | + "psl": "^1.1.28", |
977 | - "punycode": "^1.4.1" | 1016 | + "punycode": "^2.1.1" |
978 | - }, | ||
979 | - "dependencies": { | ||
980 | - "punycode": { | ||
981 | - "version": "1.4.1", | ||
982 | - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", | ||
983 | - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" | ||
984 | - } | ||
985 | } | 1017 | } |
986 | }, | 1018 | }, |
987 | "tr46": { | 1019 | "tr46": { |
... | @@ -1094,16 +1126,6 @@ | ... | @@ -1094,16 +1126,6 @@ |
1094 | "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", | 1126 | "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", |
1095 | "requires": { | 1127 | "requires": { |
1096 | "iconv-lite": "0.4.24" | 1128 | "iconv-lite": "0.4.24" |
1097 | - }, | ||
1098 | - "dependencies": { | ||
1099 | - "iconv-lite": { | ||
1100 | - "version": "0.4.24", | ||
1101 | - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||
1102 | - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
1103 | - "requires": { | ||
1104 | - "safer-buffer": ">= 2.1.2 < 3" | ||
1105 | - } | ||
1106 | - } | ||
1107 | } | 1129 | } |
1108 | }, | 1130 | }, |
1109 | "whatwg-mimetype": { | 1131 | "whatwg-mimetype": { | ... | ... |
package.json
0 → 100644
1 | +{ | ||
2 | + "name": "starcraft2", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "< 스타크래프트2 빌드 추천 프로젝트 >\r 설명 : 대전 상대의 실력 정도에 따라 빌드를 추천해줌", | ||
5 | + "main": "app.js", | ||
6 | + "scripts": { | ||
7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
8 | + }, | ||
9 | + "repository": { | ||
10 | + "type": "git", | ||
11 | + "url": "http://khuhub.khu.ac.kr/2013104051/OSS_StarCraft2_Project.git" | ||
12 | + }, | ||
13 | + "author": "", | ||
14 | + "license": "ISC", | ||
15 | + "dependencies": { | ||
16 | + "body-parser": "^1.18.3", | ||
17 | + "cheerio": "^1.0.0-rc.2", | ||
18 | + "ejs": "^2.6.1", | ||
19 | + "express": "^4.16.4", | ||
20 | + "jquery": "^3.3.1", | ||
21 | + "jsdom": "^13.0.0", | ||
22 | + "request": "^2.88.0" | ||
23 | + } | ||
24 | +} |
-
Please register or login to post a comment