Showing
10 changed files
with
689 additions
and
136 deletions
app.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +var app = express(); | ||
3 | +http = require('http').createServer(app); | ||
4 | +port = 23023; | ||
5 | + | ||
6 | +app.use(express.static(__dirname + "/views")); | ||
7 | +const routes = require("./routes/"); | ||
8 | +const errorController = require("./routes/errorController") | ||
9 | +app.use(routes) | ||
10 | + | ||
11 | +app.use(errorController.pageNotFoundError); | ||
12 | + | ||
13 | + | ||
14 | +var server = http.listen(port, function(){ | ||
15 | + console.log(`http://localhost:${port}`); | ||
16 | +}) | ||
17 | + |
models/.env
0 → 100644
1 | +key=RwxSWXH88b2bKOAT6Ot3FHorPZQW9omma0xYIjtJe0JIKe4DC7TjX7Uj6E1ArzYi2AvVETmPrAIYyY8FlL%2BfAA%3D%3D | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
models/BusInfo.js
0 → 100644
1 | +let request = require('request'); | ||
2 | +let cheerio = require('cheerio'); | ||
3 | +const bus_url = 'http://apis.data.go.kr/6410000/busarrivalservice/getBusArrivalList'; | ||
4 | +//const stationID = '228000708'; // 사색의광장 들어오는 방향 | ||
5 | +const gateStationID = '203000125' | ||
6 | +require('dotenv').config(); | ||
7 | +//const BusArrivalUrl = bus_url + '?servicekey=' + process.env.key + '&stationId=' + stationID;// 사색의광장 정류장 버스 도착 정보 조회용 | ||
8 | +//console.log(BusArrivalUrl); | ||
9 | +var routeID = ['200000112', '200000115', '234000016', '200000103']; | ||
10 | +var Bus = []; | ||
11 | +// request(BusArrivalUrl, (err, res, body) => { | ||
12 | +// var $ = cheerio.load(body, {decodeEntities: false}); | ||
13 | +// $('busArrivalList').each(function(idx){ | ||
14 | +// let route = $(this).find('routeId').text(); | ||
15 | +// routeID.push(route); | ||
16 | +// }) | ||
17 | +// //console.log(routeID); | ||
18 | +// }) | ||
19 | +const route_url = 'http://apis.data.go.kr/6410000/busrouteservice/getBusRouteInfoItem'; | ||
20 | +var index = 0; | ||
21 | +function getBusNum(){ | ||
22 | + var BusRouteUrl = route_url + '?servicekey=' + process.env.key + '&routeId='; // 각 버스 정보 조회용 | ||
23 | + BusRouteUrl += routeID[index++]; | ||
24 | + //console.log(BusRouteUrl); | ||
25 | + request(BusRouteUrl, (err, res, body) => { | ||
26 | + var $ = cheerio.load(body, {decodeEntities: false}); | ||
27 | + $('busRouteInfoItem').each(function(idx){ | ||
28 | + var id = $(this).find('routeId').text(); //버스 노선 id | ||
29 | + var num = $(this).find('routeName').text(); //버스 번호 | ||
30 | + var firsttime = $(this).find('upFirstTime').text(); //평일 기점 첫차시간 | ||
31 | + var lasttime = $(this).find('upLastTime').text(); //평일 기점 막차 시간 | ||
32 | + var mintime = $(this).find('peekAlloc').text(); //평일 최소 배차시간 | ||
33 | + var maxtime = $(this).find('nPeekAlloc').text(); //평일 최대 배차시간 | ||
34 | + //var idx = Bus.findIndex((item, idx) => { return item.routeId = id}) | ||
35 | + var newBus = new Object(); | ||
36 | + newBus.routeId = id; | ||
37 | + newBus.BusNum = num; | ||
38 | + newBus.FirstTime = firsttime; | ||
39 | + newBus.LastTime = lasttime; | ||
40 | + newBus.MinTime = mintime; | ||
41 | + newBus.MaxTime = maxtime; | ||
42 | + console.log(newBus); | ||
43 | + Bus.push(newBus); | ||
44 | + console.log(Bus); | ||
45 | + }) | ||
46 | + }) | ||
47 | +} | ||
48 | +for(var i=0; i<routeID.length; i++){ | ||
49 | + getBusNum(); | ||
50 | +} | ||
51 | +const GateBusUrl = bus_url + '?servicekey=' + process.env.key + '&stationId=' + gateStationID; //국제캠 정문 정류장 | ||
52 | +let date = new Date(); | ||
53 | +let predictTime = ['-1', '-1', '-1', '-1']; | ||
54 | +let body = new Object(); | ||
55 | +function predict(){ | ||
56 | + console.log(GateBusUrl); | ||
57 | + request(GateBusUrl, (err, res, body) => { | ||
58 | + var $ = cheerio.load(body, {decodeEntities: false}); | ||
59 | + $('busArrivalList').each(function(idx){ | ||
60 | + let route = $(this).find('routeId').text(); | ||
61 | + var index = Bus.findIndex(function(e, idx){ return e.routeId == route;}); | ||
62 | + if(index > -1){ | ||
63 | + //var num = $(this).find('plateNo1').text(); // 버스 차량번호 ex) 70사 1290 | ||
64 | + var time = $(this).find('predictTime1').text(); // 버스 예상 도착시간 | ||
65 | + var predictHour1 = date.getHours(); | ||
66 | + var predictMinute1 = date.getMinutes() + Bus[index].mintime - (3 - (time*1)); // 사색의 광장 -> 경희대학교 3분정도 소요 | ||
67 | + var predictHour2 = date.getHours(); | ||
68 | + var predictMinute2 = date.getMinutes() + Bus[index].maxtime - (3 - (time*1)); // time*1 : string to integer 형변환 | ||
69 | + if(predictMinute1 >= 60){ | ||
70 | + predictHour1 += 1; | ||
71 | + predictMinute1 -= 60; | ||
72 | + } | ||
73 | + if(predictMinute2 >= 60){ | ||
74 | + predictHour2 += 1; | ||
75 | + predictMinute2 -= 60; | ||
76 | + } | ||
77 | + Bus[index]["MinPredictTime"] = predictHour1 + ":" + predictMinute1; | ||
78 | + Bus[index]["MaxPredictTime"] = predictHour2 + ":" + predictMinute2; | ||
79 | + predictTime = [predictHour1 + "", predictMinute1 + "", predictHour2 + "", predictMinute2 + ""] | ||
80 | + const dateBusDeparture = new Date(date.getFullYear(), date.getMonth(), date.getDate(), predictTime[0]*1, predictTime[1]*1, 0); | ||
81 | + var gapSec = (dateBusDeparture.getTime() - date.getTime())/1000; | ||
82 | + var gapHour = Math.floor(gapSec / 60 / 60); | ||
83 | + var gapMin = Math.floor((gapSec - gapHour * 3600) / 60); | ||
84 | + // var ans = gapHour + "시간" + gapMin + "분 이상"; | ||
85 | + // var ETD_min_H = predictTime[0]; | ||
86 | + // var ETD_min_M = predictTime[1]; | ||
87 | + // var ETD_max_H = predictTime[2]; | ||
88 | + // var ETD_max_M = predictTime[3]; | ||
89 | + | ||
90 | + | ||
91 | + //controller에 데이터 전송 | ||
92 | + module.exports.data = {}; | ||
93 | + module.exports.data.remainTime = gapHour + "시간" + gapMin + "분 이상"; | ||
94 | + module.exports.data.ETD_min_H = predictTime[0]; | ||
95 | + module.exports.data.ETD_min_M = predictTime[1]; | ||
96 | + module.exports.data.ETD_max_H = predictTime[2]; | ||
97 | + module.exports.data.ETD_max_M = predictTime[3]; | ||
98 | + | ||
99 | + | ||
100 | + } | ||
101 | + }) | ||
102 | + }) | ||
103 | +} | ||
104 | + | ||
105 | + | ||
106 | + | ||
107 | +function start(){ | ||
108 | + setInterval(predict, 60000); | ||
109 | +} | ||
110 | +setTimeout(start, 20000); |
1 | { | 1 | { |
2 | - "name": "bustime", | 2 | + "name": "busterm", |
3 | "version": "1.0.0", | 3 | "version": "1.0.0", |
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
7 | - "amdefine": { | 7 | + "accepts": { |
8 | - "version": "1.0.1", | 8 | + "version": "1.3.7", |
9 | - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", | 9 | + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", |
10 | - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" | 10 | + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", |
11 | + "requires": { | ||
12 | + "mime-types": "~2.1.24", | ||
13 | + "negotiator": "0.6.2" | ||
14 | + } | ||
15 | + }, | ||
16 | + "ansi-styles": { | ||
17 | + "version": "3.2.1", | ||
18 | + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||
19 | + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||
20 | + "requires": { | ||
21 | + "color-convert": "^1.9.0" | ||
22 | + } | ||
23 | + }, | ||
24 | + "array-flatten": { | ||
25 | + "version": "1.1.1", | ||
26 | + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||
27 | + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | ||
11 | }, | 28 | }, |
12 | "async": { | 29 | "async": { |
13 | - "version": "0.2.10", | 30 | + "version": "0.9.2", |
14 | - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", | 31 | + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", |
15 | - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" | 32 | + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" |
16 | }, | 33 | }, |
17 | - "boolbase": { | 34 | + "balanced-match": { |
18 | - "version": "1.0.0", | 35 | + "version": "1.0.2", |
19 | - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", | 36 | + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
20 | - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" | 37 | + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" |
21 | }, | 38 | }, |
22 | - "cheerio": { | 39 | + "body-parser": { |
23 | - "version": "1.0.0-rc.9", | 40 | + "version": "1.19.0", |
24 | - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.9.tgz", | 41 | + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", |
25 | - "integrity": "sha512-QF6XVdrLONO6DXRF5iaolY+odmhj2CLj+xzNod7INPWMi/x9X4SOylH0S/vaPpX+AUU6t04s34SQNh7DbkuCng==", | 42 | + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", |
26 | "requires": { | 43 | "requires": { |
27 | - "cheerio-select": "^1.4.0", | 44 | + "bytes": "3.1.0", |
28 | - "dom-serializer": "^1.3.1", | 45 | + "content-type": "~1.0.4", |
29 | - "domhandler": "^4.2.0", | 46 | + "debug": "2.6.9", |
30 | - "htmlparser2": "^6.1.0", | 47 | + "depd": "~1.1.2", |
31 | - "parse5": "^6.0.1", | 48 | + "http-errors": "1.7.2", |
32 | - "parse5-htmlparser2-tree-adapter": "^6.0.1", | 49 | + "iconv-lite": "0.4.24", |
33 | - "tslib": "^2.2.0" | 50 | + "on-finished": "~2.3.0", |
51 | + "qs": "6.7.0", | ||
52 | + "raw-body": "2.4.0", | ||
53 | + "type-is": "~1.6.17" | ||
34 | } | 54 | } |
35 | }, | 55 | }, |
36 | - "cheerio-select": { | 56 | + "brace-expansion": { |
37 | - "version": "1.4.0", | 57 | + "version": "1.1.11", |
38 | - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.4.0.tgz", | 58 | + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |
39 | - "integrity": "sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew==", | 59 | + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |
40 | "requires": { | 60 | "requires": { |
41 | - "css-select": "^4.1.2", | 61 | + "balanced-match": "^1.0.0", |
42 | - "css-what": "^5.0.0", | 62 | + "concat-map": "0.0.1" |
43 | - "domelementtype": "^2.2.0", | ||
44 | - "domhandler": "^4.2.0", | ||
45 | - "domutils": "^2.6.0" | ||
46 | } | 63 | } |
47 | }, | 64 | }, |
48 | - "css-select": { | 65 | + "bytes": { |
49 | - "version": "4.1.2", | 66 | + "version": "3.1.0", |
50 | - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.2.tgz", | 67 | + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", |
51 | - "integrity": "sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw==", | 68 | + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" |
69 | + }, | ||
70 | + "chalk": { | ||
71 | + "version": "2.4.2", | ||
72 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | ||
73 | + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", | ||
52 | "requires": { | 74 | "requires": { |
53 | - "boolbase": "^1.0.0", | 75 | + "ansi-styles": "^3.2.1", |
54 | - "css-what": "^5.0.0", | 76 | + "escape-string-regexp": "^1.0.5", |
55 | - "domhandler": "^4.2.0", | 77 | + "supports-color": "^5.3.0" |
56 | - "domutils": "^2.6.0", | ||
57 | - "nth-check": "^2.0.0" | ||
58 | } | 78 | } |
59 | }, | 79 | }, |
60 | - "css-what": { | 80 | + "color-convert": { |
61 | - "version": "5.0.0", | 81 | + "version": "1.9.3", |
62 | - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.0.tgz", | 82 | + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", |
63 | - "integrity": "sha512-qxyKHQvgKwzwDWC/rGbT821eJalfupxYW2qbSJSAtdSTimsr/MlaGONoNLllaUPZWf8QnbcKM/kPVYUQuEKAFA==" | 83 | + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", |
84 | + "requires": { | ||
85 | + "color-name": "1.1.3" | ||
86 | + } | ||
87 | + }, | ||
88 | + "color-name": { | ||
89 | + "version": "1.1.3", | ||
90 | + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||
91 | + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" | ||
92 | + }, | ||
93 | + "concat-map": { | ||
94 | + "version": "0.0.1", | ||
95 | + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||
96 | + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||
97 | + }, | ||
98 | + "content-disposition": { | ||
99 | + "version": "0.5.3", | ||
100 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", | ||
101 | + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", | ||
102 | + "requires": { | ||
103 | + "safe-buffer": "5.1.2" | ||
104 | + } | ||
105 | + }, | ||
106 | + "content-type": { | ||
107 | + "version": "1.0.4", | ||
108 | + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | ||
109 | + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" | ||
110 | + }, | ||
111 | + "cookie": { | ||
112 | + "version": "0.4.0", | ||
113 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", | ||
114 | + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" | ||
115 | + }, | ||
116 | + "cookie-signature": { | ||
117 | + "version": "1.0.6", | ||
118 | + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||
119 | + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | ||
64 | }, | 120 | }, |
65 | - "dom-serializer": { | 121 | + "debug": { |
66 | - "version": "1.3.2", | 122 | + "version": "2.6.9", |
67 | - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", | 123 | + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
68 | - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", | 124 | + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
69 | "requires": { | 125 | "requires": { |
70 | - "domelementtype": "^2.0.1", | 126 | + "ms": "2.0.0" |
71 | - "domhandler": "^4.2.0", | ||
72 | - "entities": "^2.0.0" | ||
73 | } | 127 | } |
74 | }, | 128 | }, |
75 | - "domelementtype": { | 129 | + "depd": { |
76 | - "version": "2.2.0", | 130 | + "version": "1.1.2", |
77 | - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", | 131 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
78 | - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" | 132 | + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" |
79 | }, | 133 | }, |
80 | - "domhandler": { | 134 | + "destroy": { |
81 | - "version": "4.2.0", | 135 | + "version": "1.0.4", |
82 | - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", | 136 | + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
83 | - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", | 137 | + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |
138 | + }, | ||
139 | + "dotenv": { | ||
140 | + "version": "10.0.0", | ||
141 | + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", | ||
142 | + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" | ||
143 | + }, | ||
144 | + "ee-first": { | ||
145 | + "version": "1.1.1", | ||
146 | + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||
147 | + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" | ||
148 | + }, | ||
149 | + "ejs": { | ||
150 | + "version": "3.1.6", | ||
151 | + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", | ||
152 | + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", | ||
84 | "requires": { | 153 | "requires": { |
85 | - "domelementtype": "^2.2.0" | 154 | + "jake": "^10.6.1" |
86 | } | 155 | } |
87 | }, | 156 | }, |
88 | - "domutils": { | 157 | + "encodeurl": { |
89 | - "version": "2.6.0", | 158 | + "version": "1.0.2", |
90 | - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", | 159 | + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |
91 | - "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", | 160 | + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" |
161 | + }, | ||
162 | + "escape-html": { | ||
163 | + "version": "1.0.3", | ||
164 | + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||
165 | + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" | ||
166 | + }, | ||
167 | + "escape-string-regexp": { | ||
168 | + "version": "1.0.5", | ||
169 | + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | ||
170 | + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | ||
171 | + }, | ||
172 | + "etag": { | ||
173 | + "version": "1.8.1", | ||
174 | + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | ||
175 | + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" | ||
176 | + }, | ||
177 | + "express": { | ||
178 | + "version": "4.17.1", | ||
179 | + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", | ||
180 | + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", | ||
92 | "requires": { | 181 | "requires": { |
93 | - "dom-serializer": "^1.0.1", | 182 | + "accepts": "~1.3.7", |
94 | - "domelementtype": "^2.2.0", | 183 | + "array-flatten": "1.1.1", |
95 | - "domhandler": "^4.2.0" | 184 | + "body-parser": "1.19.0", |
185 | + "content-disposition": "0.5.3", | ||
186 | + "content-type": "~1.0.4", | ||
187 | + "cookie": "0.4.0", | ||
188 | + "cookie-signature": "1.0.6", | ||
189 | + "debug": "2.6.9", | ||
190 | + "depd": "~1.1.2", | ||
191 | + "encodeurl": "~1.0.2", | ||
192 | + "escape-html": "~1.0.3", | ||
193 | + "etag": "~1.8.1", | ||
194 | + "finalhandler": "~1.1.2", | ||
195 | + "fresh": "0.5.2", | ||
196 | + "merge-descriptors": "1.0.1", | ||
197 | + "methods": "~1.1.2", | ||
198 | + "on-finished": "~2.3.0", | ||
199 | + "parseurl": "~1.3.3", | ||
200 | + "path-to-regexp": "0.1.7", | ||
201 | + "proxy-addr": "~2.0.5", | ||
202 | + "qs": "6.7.0", | ||
203 | + "range-parser": "~1.2.1", | ||
204 | + "safe-buffer": "5.1.2", | ||
205 | + "send": "0.17.1", | ||
206 | + "serve-static": "1.14.1", | ||
207 | + "setprototypeof": "1.1.1", | ||
208 | + "statuses": "~1.5.0", | ||
209 | + "type-is": "~1.6.18", | ||
210 | + "utils-merge": "1.0.1", | ||
211 | + "vary": "~1.1.2" | ||
96 | } | 212 | } |
97 | }, | 213 | }, |
98 | - "entities": { | 214 | + "filelist": { |
99 | - "version": "2.2.0", | 215 | + "version": "1.0.2", |
100 | - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", | 216 | + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", |
101 | - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" | 217 | + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", |
218 | + "requires": { | ||
219 | + "minimatch": "^3.0.4" | ||
220 | + } | ||
102 | }, | 221 | }, |
103 | - "htmlparser2": { | 222 | + "finalhandler": { |
104 | - "version": "6.1.0", | 223 | + "version": "1.1.2", |
105 | - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", | 224 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", |
106 | - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", | 225 | + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", |
107 | "requires": { | 226 | "requires": { |
108 | - "domelementtype": "^2.0.1", | 227 | + "debug": "2.6.9", |
109 | - "domhandler": "^4.0.0", | 228 | + "encodeurl": "~1.0.2", |
110 | - "domutils": "^2.5.2", | 229 | + "escape-html": "~1.0.3", |
111 | - "entities": "^2.0.0" | 230 | + "on-finished": "~2.3.0", |
231 | + "parseurl": "~1.3.3", | ||
232 | + "statuses": "~1.5.0", | ||
233 | + "unpipe": "~1.0.0" | ||
112 | } | 234 | } |
113 | }, | 235 | }, |
114 | - "nth-check": { | 236 | + "forwarded": { |
115 | - "version": "2.0.0", | 237 | + "version": "0.2.0", |
116 | - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", | 238 | + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |
117 | - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", | 239 | + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" |
240 | + }, | ||
241 | + "fresh": { | ||
242 | + "version": "0.5.2", | ||
243 | + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | ||
244 | + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" | ||
245 | + }, | ||
246 | + "has-flag": { | ||
247 | + "version": "3.0.0", | ||
248 | + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||
249 | + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" | ||
250 | + }, | ||
251 | + "http-errors": { | ||
252 | + "version": "1.7.2", | ||
253 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", | ||
254 | + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", | ||
118 | "requires": { | 255 | "requires": { |
119 | - "boolbase": "^1.0.0" | 256 | + "depd": "~1.1.2", |
257 | + "inherits": "2.0.3", | ||
258 | + "setprototypeof": "1.1.1", | ||
259 | + "statuses": ">= 1.5.0 < 2", | ||
260 | + "toidentifier": "1.0.0" | ||
120 | } | 261 | } |
121 | }, | 262 | }, |
122 | - "optimist": { | 263 | + "http-status-codes": { |
123 | - "version": "0.3.7", | 264 | + "version": "2.1.4", |
124 | - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", | 265 | + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", |
125 | - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", | 266 | + "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==" |
267 | + }, | ||
268 | + "iconv-lite": { | ||
269 | + "version": "0.4.24", | ||
270 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||
271 | + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
126 | "requires": { | 272 | "requires": { |
127 | - "wordwrap": "~0.0.2" | 273 | + "safer-buffer": ">= 2.1.2 < 3" |
128 | } | 274 | } |
129 | }, | 275 | }, |
130 | - "parse5": { | 276 | + "inherits": { |
131 | - "version": "6.0.1", | 277 | + "version": "2.0.3", |
132 | - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", | 278 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
133 | - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" | 279 | + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" |
280 | + }, | ||
281 | + "ipaddr.js": { | ||
282 | + "version": "1.9.1", | ||
283 | + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", | ||
284 | + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" | ||
134 | }, | 285 | }, |
135 | - "parse5-htmlparser2-tree-adapter": { | 286 | + "jake": { |
136 | - "version": "6.0.1", | 287 | + "version": "10.8.2", |
137 | - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", | 288 | + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", |
138 | - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", | 289 | + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", |
139 | "requires": { | 290 | "requires": { |
140 | - "parse5": "^6.0.1" | 291 | + "async": "0.9.x", |
292 | + "chalk": "^2.4.2", | ||
293 | + "filelist": "^1.0.1", | ||
294 | + "minimatch": "^3.0.4" | ||
141 | } | 295 | } |
142 | }, | 296 | }, |
143 | - "require": { | 297 | + "media-typer": { |
144 | - "version": "2.4.20", | 298 | + "version": "0.3.0", |
145 | - "resolved": "https://registry.npmjs.org/require/-/require-2.4.20.tgz", | 299 | + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
146 | - "integrity": "sha1-Zstrqqu2XeinHXk/XGX9GE83mLY=", | 300 | + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" |
301 | + }, | ||
302 | + "merge-descriptors": { | ||
303 | + "version": "1.0.1", | ||
304 | + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||
305 | + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" | ||
306 | + }, | ||
307 | + "methods": { | ||
308 | + "version": "1.1.2", | ||
309 | + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ||
310 | + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" | ||
311 | + }, | ||
312 | + "mime": { | ||
313 | + "version": "1.6.0", | ||
314 | + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", | ||
315 | + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" | ||
316 | + }, | ||
317 | + "mime-db": { | ||
318 | + "version": "1.48.0", | ||
319 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", | ||
320 | + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" | ||
321 | + }, | ||
322 | + "mime-types": { | ||
323 | + "version": "2.1.31", | ||
324 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", | ||
325 | + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", | ||
147 | "requires": { | 326 | "requires": { |
148 | - "std": "0.1.40", | 327 | + "mime-db": "1.48.0" |
149 | - "uglify-js": "2.3.0" | ||
150 | } | 328 | } |
151 | }, | 329 | }, |
152 | - "source-map": { | 330 | + "minimatch": { |
153 | - "version": "0.1.43", | 331 | + "version": "3.0.4", |
154 | - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", | 332 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
155 | - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", | 333 | + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", |
156 | "requires": { | 334 | "requires": { |
157 | - "amdefine": ">=0.0.4" | 335 | + "brace-expansion": "^1.1.7" |
158 | } | 336 | } |
159 | }, | 337 | }, |
160 | - "std": { | 338 | + "ms": { |
161 | - "version": "0.1.40", | 339 | + "version": "2.0.0", |
162 | - "resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz", | 340 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
163 | - "integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E=" | 341 | + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
164 | }, | 342 | }, |
165 | - "tslib": { | 343 | + "negotiator": { |
166 | - "version": "2.2.0", | 344 | + "version": "0.6.2", |
167 | - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", | 345 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", |
168 | - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" | 346 | + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" |
169 | }, | 347 | }, |
170 | - "uglify-js": { | 348 | + "on-finished": { |
171 | "version": "2.3.0", | 349 | "version": "2.3.0", |
172 | - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.0.tgz", | 350 | + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", |
173 | - "integrity": "sha1-LN7BbTeKiituz7aYl4TPi3rlSR8=", | 351 | + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", |
352 | + "requires": { | ||
353 | + "ee-first": "1.1.1" | ||
354 | + } | ||
355 | + }, | ||
356 | + "parseurl": { | ||
357 | + "version": "1.3.3", | ||
358 | + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||
359 | + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" | ||
360 | + }, | ||
361 | + "path-to-regexp": { | ||
362 | + "version": "0.1.7", | ||
363 | + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | ||
364 | + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | ||
365 | + }, | ||
366 | + "proxy-addr": { | ||
367 | + "version": "2.0.7", | ||
368 | + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | ||
369 | + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", | ||
370 | + "requires": { | ||
371 | + "forwarded": "0.2.0", | ||
372 | + "ipaddr.js": "1.9.1" | ||
373 | + } | ||
374 | + }, | ||
375 | + "qs": { | ||
376 | + "version": "6.7.0", | ||
377 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", | ||
378 | + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" | ||
379 | + }, | ||
380 | + "range-parser": { | ||
381 | + "version": "1.2.1", | ||
382 | + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | ||
383 | + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" | ||
384 | + }, | ||
385 | + "raw-body": { | ||
386 | + "version": "2.4.0", | ||
387 | + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", | ||
388 | + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", | ||
389 | + "requires": { | ||
390 | + "bytes": "3.1.0", | ||
391 | + "http-errors": "1.7.2", | ||
392 | + "iconv-lite": "0.4.24", | ||
393 | + "unpipe": "1.0.0" | ||
394 | + } | ||
395 | + }, | ||
396 | + "safe-buffer": { | ||
397 | + "version": "5.1.2", | ||
398 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
399 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
400 | + }, | ||
401 | + "safer-buffer": { | ||
402 | + "version": "2.1.2", | ||
403 | + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||
404 | + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||
405 | + }, | ||
406 | + "send": { | ||
407 | + "version": "0.17.1", | ||
408 | + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", | ||
409 | + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", | ||
410 | + "requires": { | ||
411 | + "debug": "2.6.9", | ||
412 | + "depd": "~1.1.2", | ||
413 | + "destroy": "~1.0.4", | ||
414 | + "encodeurl": "~1.0.2", | ||
415 | + "escape-html": "~1.0.3", | ||
416 | + "etag": "~1.8.1", | ||
417 | + "fresh": "0.5.2", | ||
418 | + "http-errors": "~1.7.2", | ||
419 | + "mime": "1.6.0", | ||
420 | + "ms": "2.1.1", | ||
421 | + "on-finished": "~2.3.0", | ||
422 | + "range-parser": "~1.2.1", | ||
423 | + "statuses": "~1.5.0" | ||
424 | + }, | ||
425 | + "dependencies": { | ||
426 | + "ms": { | ||
427 | + "version": "2.1.1", | ||
428 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", | ||
429 | + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" | ||
430 | + } | ||
431 | + } | ||
432 | + }, | ||
433 | + "serve-static": { | ||
434 | + "version": "1.14.1", | ||
435 | + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", | ||
436 | + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", | ||
437 | + "requires": { | ||
438 | + "encodeurl": "~1.0.2", | ||
439 | + "escape-html": "~1.0.3", | ||
440 | + "parseurl": "~1.3.3", | ||
441 | + "send": "0.17.1" | ||
442 | + } | ||
443 | + }, | ||
444 | + "setprototypeof": { | ||
445 | + "version": "1.1.1", | ||
446 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", | ||
447 | + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" | ||
448 | + }, | ||
449 | + "statuses": { | ||
450 | + "version": "1.5.0", | ||
451 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||
452 | + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | ||
453 | + }, | ||
454 | + "supports-color": { | ||
455 | + "version": "5.5.0", | ||
456 | + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||
457 | + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||
174 | "requires": { | 458 | "requires": { |
175 | - "async": "~0.2.6", | 459 | + "has-flag": "^3.0.0" |
176 | - "optimist": "~0.3.5", | ||
177 | - "source-map": "~0.1.7" | ||
178 | } | 460 | } |
179 | }, | 461 | }, |
180 | - "wordwrap": { | 462 | + "toidentifier": { |
181 | - "version": "0.0.3", | 463 | + "version": "1.0.0", |
182 | - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", | 464 | + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", |
183 | - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" | 465 | + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" |
466 | + }, | ||
467 | + "type-is": { | ||
468 | + "version": "1.6.18", | ||
469 | + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||
470 | + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||
471 | + "requires": { | ||
472 | + "media-typer": "0.3.0", | ||
473 | + "mime-types": "~2.1.24" | ||
474 | + } | ||
475 | + }, | ||
476 | + "unpipe": { | ||
477 | + "version": "1.0.0", | ||
478 | + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||
479 | + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" | ||
480 | + }, | ||
481 | + "utils-merge": { | ||
482 | + "version": "1.0.1", | ||
483 | + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | ||
484 | + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | ||
485 | + }, | ||
486 | + "vary": { | ||
487 | + "version": "1.1.2", | ||
488 | + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||
489 | + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | ||
184 | } | 490 | } |
185 | } | 491 | } |
186 | } | 492 | } | ... | ... |
1 | { | 1 | { |
2 | - "name": "bustime", | 2 | + "name": "busterm", |
3 | "version": "1.0.0", | 3 | "version": "1.0.0", |
4 | "description": "", | 4 | "description": "", |
5 | - "main": "BusInfo.js", | 5 | + "main": "app.js", |
6 | "scripts": { | 6 | "scripts": { |
7 | "test": "echo \"Error: no test specified\" && exit 1" | 7 | "test": "echo \"Error: no test specified\" && exit 1" |
8 | }, | 8 | }, |
9 | - "repository": { | ||
10 | - "type": "git", | ||
11 | - "url": "http://khuhub.khu.ac.kr/2020105677/BusTime.git" | ||
12 | - }, | ||
13 | "author": "", | 9 | "author": "", |
14 | "license": "ISC", | 10 | "license": "ISC", |
15 | "dependencies": { | 11 | "dependencies": { |
16 | - "cheerio": "^1.0.0-rc.9", | 12 | + "dotenv": "^10.0.0", |
17 | - "require": "^2.4.20" | 13 | + "ejs": "^3.1.6", |
14 | + "express": "^4.17.1", | ||
15 | + "http-status-codes": "^2.1.4" | ||
18 | } | 16 | } |
19 | } | 17 | } | ... | ... |
routes/controller.js
0 → 100644
1 | +var express = require('express'); | ||
2 | +var app = express(); | ||
3 | +var fs = require('fs') | ||
4 | +var Businfo = require("../models/BusInfo"); | ||
5 | + | ||
6 | +app.set('views',__dirname+'/views'); | ||
7 | +app.set('view engine', 'ejs'); | ||
8 | +//app.engine('html',require('ejs').renderFile); | ||
9 | +app.engine('ejs', require('ejs').renderFile); | ||
10 | + | ||
11 | +exports.mainView = function(req, res) { | ||
12 | + res.render("index.ejs") | ||
13 | +}//main 화면 | ||
14 | + | ||
15 | +exports.timeTable = function(req, res) { | ||
16 | + res.render("ejstest.ejs",{busNum:req.query.busNum, remainTime: Businfo.data.remainTime, ETD_min_H: Businfo.data.ETD_min_H, | ||
17 | + ETD_min_m: Businfo.data.ETD_max_m, ETD_max_H: Businfo.data.ETD_max_H, ETD_max_m: Businfo.data.ETD_max_m }); | ||
18 | +} //timeTable 화면 ejs 변수 렌더링 | ||
19 | + | ||
20 | + |
routes/errorController.js
0 → 100644
routes/index.js
0 → 100644
1 | +const router = require("express").Router(); | ||
2 | +const controller = require("./controller"); | ||
3 | + | ||
4 | +router.get("/", controller.mainView); //main 페이지 | ||
5 | +router.get("/timetable", controller.timeTable); //timetable 페이지 | ||
6 | + | ||
7 | +module.exports = router; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
views/ejstest.ejs
0 → 100644
1 | +<!doctype html> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <title>Time Table</title> | ||
5 | + <meta charset="utf-8"> | ||
6 | + <style type="text/css"> | ||
7 | + a { text-decoration:none } | ||
8 | + </style> | ||
9 | +</head> | ||
10 | +<body> | ||
11 | + <h1><a href="/"><p style="text-align:center;">BTT</p></a></h1> | ||
12 | + <br> <div style="padding:0 0 0 20px;"> | ||
13 | + <h2> <%= busNum %> BUS Time Table</h2> | ||
14 | + </div> | ||
15 | + <div style="padding:0 0 0 20px;"> | ||
16 | + <table border="3" width="400"> | ||
17 | + <th> Index</th> | ||
18 | + <th> 출발 예정시간</th> | ||
19 | + <th> 남은 시간</th> | ||
20 | + <tr align="center"> | ||
21 | + <td> text입력하기 </td> | ||
22 | + <td> <%= ETD_min_H %>:<%= ETD_min_m %> ~ <%= ETD_max_H %>:<%= ETD_max_m %> </td> | ||
23 | + <td> <%= remainTime %> </td> | ||
24 | + </tr> | ||
25 | + </table> | ||
26 | + </div> | ||
27 | + <br> | ||
28 | + <br> | ||
29 | + <p> <div style="padding:0 0 0 20px;"> | ||
30 | + 버스의 평균 배차시간을 기준으로 최소 출발시간과 최대 출발시간을 제공합니다. | ||
31 | + </div> </p> | ||
32 | + <div style="padding:0 0 0 20px;"> | ||
33 | + <% var date = new Date(); %> | ||
34 | + <% var yyyy = date.getFullYear(); %> | ||
35 | + <% var mm1 = date.getMonth() + 1; %> | ||
36 | + <% var dd = date.getDate(); %> | ||
37 | + <% var hh = date.getHours(); %> | ||
38 | + <% var mm2 = date.getMinutes(); %> | ||
39 | + <% var printDateNotion = yyyy+"년 "+mm1+"월 "+dd+"일 "; %> | ||
40 | + <% var printDateNotion2 = hh+"시 "+mm2+"분 기준"; %> | ||
41 | + | ||
42 | + <%= printDateNotion %> | ||
43 | + <%= printDateNotion2 %> | ||
44 | + </div> | ||
45 | +</body> | ||
46 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
views/index.ejs
0 → 100644
1 | +<!doctype html> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <title>BUS TT</title> | ||
5 | + <meta charset="utf-8"> | ||
6 | + <style type="text/css"> | ||
7 | + a { text-decoration:none } | ||
8 | + </style> | ||
9 | +</head> | ||
10 | +<body> | ||
11 | + <h1><p style="text-align:center;">BTT</p></h1> | ||
12 | + <br> | ||
13 | + <link rel='stylesheet' type='text/css' href='/css/style.css' /> | ||
14 | + <h2 style="padding:0 0 0 20px;"> 사색의 광장 Bus Time Table 조회 서비스에 오신 것을 환영합니다.</h2> | ||
15 | + <p style="padding:0 0 0 20px;"> 이곳에는 사색의 광장에서 출발하는 모든 버스의 정보가 있습니다.</p> | ||
16 | + <br><br> | ||
17 | + <h2 style="padding:0 0 0 20px;"> 버스별 시간표 조회 (click the bus number!)</h2> | ||
18 | + | ||
19 | + <div style="padding:0 0 0 20px;"> | ||
20 | + <% var date = new Date(); %> | ||
21 | + <% var yyyy = date.getFullYear(); %> | ||
22 | + <% var mm1 = date.getMonth() + 1; %> | ||
23 | + <% var dd = date.getDate(); %> | ||
24 | + <% var hh = date.getHours(); %> | ||
25 | + <% var mm2 = date.getMinutes(); %> | ||
26 | + <% var printDateNotion = yyyy+"년 "+mm1+"월 "+dd+"일 오늘 운행하는 버스들 "; %> | ||
27 | + <% var printDateNotion2 = "( "+hh+"시 "+mm2+"분 기준 )"; %> | ||
28 | + | ||
29 | + <%= printDateNotion %> | ||
30 | + <%= printDateNotion2 %> | ||
31 | + </div> | ||
32 | + <ul> | ||
33 | + <li><a href="http://localhost:23023/timetable?busNum=9">9</a></li> | ||
34 | + <li><a href="http://localhost:23023/timetable?busNum=1112">1112</a></li> | ||
35 | + <li><a href="http://localhost:23023/timetable?busNum=5100">5100</a></li> | ||
36 | + <li><a href="http://localhost:23023/timetable?busNum=7000">7000</a></li> | ||
37 | + </ul> | ||
38 | + <p> ejs파일임</p> | ||
39 | +</body> | ||
40 | +</html | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment