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=" | ||
| 64 | }, | 97 | }, |
| 65 | - "dom-serializer": { | 98 | + "content-disposition": { |
| 66 | - "version": "1.3.2", | 99 | + "version": "0.5.3", |
| 67 | - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", | 100 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", |
| 68 | - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", | 101 | + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", |
| 69 | "requires": { | 102 | "requires": { |
| 70 | - "domelementtype": "^2.0.1", | 103 | + "safe-buffer": "5.1.2" |
| 71 | - "domhandler": "^4.2.0", | ||
| 72 | - "entities": "^2.0.0" | ||
| 73 | } | 104 | } |
| 74 | }, | 105 | }, |
| 75 | - "domelementtype": { | 106 | + "content-type": { |
| 76 | - "version": "2.2.0", | 107 | + "version": "1.0.4", |
| 77 | - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", | 108 | + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", |
| 78 | - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" | 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=" | ||
| 79 | }, | 120 | }, |
| 80 | - "domhandler": { | 121 | + "debug": { |
| 81 | - "version": "4.2.0", | 122 | + "version": "2.6.9", |
| 82 | - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", | 123 | + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
| 83 | - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", | 124 | + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
| 84 | "requires": { | 125 | "requires": { |
| 85 | - "domelementtype": "^2.2.0" | 126 | + "ms": "2.0.0" |
| 86 | } | 127 | } |
| 87 | }, | 128 | }, |
| 88 | - "domutils": { | 129 | + "depd": { |
| 89 | - "version": "2.6.0", | 130 | + "version": "1.1.2", |
| 90 | - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", | 131 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
| 91 | - "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", | 132 | + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" |
| 133 | + }, | ||
| 134 | + "destroy": { | ||
| 135 | + "version": "1.0.4", | ||
| 136 | + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||
| 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==", | ||
| 92 | "requires": { | 153 | "requires": { |
| 93 | - "dom-serializer": "^1.0.1", | 154 | + "jake": "^10.6.1" |
| 94 | - "domelementtype": "^2.2.0", | ||
| 95 | - "domhandler": "^4.2.0" | ||
| 96 | } | 155 | } |
| 97 | }, | 156 | }, |
| 98 | - "entities": { | 157 | + "encodeurl": { |
| 99 | - "version": "2.2.0", | 158 | + "version": "1.0.2", |
| 100 | - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", | 159 | + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |
| 101 | - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" | 160 | + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" |
| 102 | }, | 161 | }, |
| 103 | - "htmlparser2": { | 162 | + "escape-html": { |
| 104 | - "version": "6.1.0", | 163 | + "version": "1.0.3", |
| 105 | - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", | 164 | + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", |
| 106 | - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", | 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==", | ||
| 107 | "requires": { | 181 | "requires": { |
| 108 | - "domelementtype": "^2.0.1", | 182 | + "accepts": "~1.3.7", |
| 109 | - "domhandler": "^4.0.0", | 183 | + "array-flatten": "1.1.1", |
| 110 | - "domutils": "^2.5.2", | 184 | + "body-parser": "1.19.0", |
| 111 | - "entities": "^2.0.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" | ||
| 112 | } | 212 | } |
| 113 | }, | 213 | }, |
| 114 | - "nth-check": { | 214 | + "filelist": { |
| 115 | - "version": "2.0.0", | 215 | + "version": "1.0.2", |
| 116 | - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", | 216 | + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", |
| 117 | - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", | 217 | + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", |
| 118 | "requires": { | 218 | "requires": { |
| 119 | - "boolbase": "^1.0.0" | 219 | + "minimatch": "^3.0.4" |
| 120 | } | 220 | } |
| 121 | }, | 221 | }, |
| 122 | - "optimist": { | 222 | + "finalhandler": { |
| 123 | - "version": "0.3.7", | 223 | + "version": "1.1.2", |
| 124 | - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", | 224 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", |
| 125 | - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", | 225 | + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", |
| 126 | "requires": { | 226 | "requires": { |
| 127 | - "wordwrap": "~0.0.2" | 227 | + "debug": "2.6.9", |
| 228 | + "encodeurl": "~1.0.2", | ||
| 229 | + "escape-html": "~1.0.3", | ||
| 230 | + "on-finished": "~2.3.0", | ||
| 231 | + "parseurl": "~1.3.3", | ||
| 232 | + "statuses": "~1.5.0", | ||
| 233 | + "unpipe": "~1.0.0" | ||
| 128 | } | 234 | } |
| 129 | }, | 235 | }, |
| 130 | - "parse5": { | 236 | + "forwarded": { |
| 131 | - "version": "6.0.1", | 237 | + "version": "0.2.0", |
| 132 | - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", | 238 | + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |
| 133 | - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" | 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=" | ||
| 134 | }, | 245 | }, |
| 135 | - "parse5-htmlparser2-tree-adapter": { | 246 | + "has-flag": { |
| 136 | - "version": "6.0.1", | 247 | + "version": "3.0.0", |
| 137 | - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", | 248 | + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
| 138 | - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", | 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==", | ||
| 139 | "requires": { | 255 | "requires": { |
| 140 | - "parse5": "^6.0.1" | 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" | ||
| 141 | } | 261 | } |
| 142 | }, | 262 | }, |
| 143 | - "require": { | 263 | + "http-status-codes": { |
| 144 | - "version": "2.4.20", | 264 | + "version": "2.1.4", |
| 145 | - "resolved": "https://registry.npmjs.org/require/-/require-2.4.20.tgz", | 265 | + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", |
| 146 | - "integrity": "sha1-Zstrqqu2XeinHXk/XGX9GE83mLY=", | 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==", | ||
| 147 | "requires": { | 272 | "requires": { |
| 148 | - "std": "0.1.40", | 273 | + "safer-buffer": ">= 2.1.2 < 3" |
| 149 | - "uglify-js": "2.3.0" | ||
| 150 | } | 274 | } |
| 151 | }, | 275 | }, |
| 152 | - "source-map": { | 276 | + "inherits": { |
| 153 | - "version": "0.1.43", | 277 | + "version": "2.0.3", |
| 154 | - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", | 278 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
| 155 | - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", | 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==" | ||
| 285 | + }, | ||
| 286 | + "jake": { | ||
| 287 | + "version": "10.8.2", | ||
| 288 | + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", | ||
| 289 | + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", | ||
| 156 | "requires": { | 290 | "requires": { |
| 157 | - "amdefine": ">=0.0.4" | 291 | + "async": "0.9.x", |
| 292 | + "chalk": "^2.4.2", | ||
| 293 | + "filelist": "^1.0.1", | ||
| 294 | + "minimatch": "^3.0.4" | ||
| 158 | } | 295 | } |
| 159 | }, | 296 | }, |
| 160 | - "std": { | 297 | + "media-typer": { |
| 161 | - "version": "0.1.40", | 298 | + "version": "0.3.0", |
| 162 | - "resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz", | 299 | + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
| 163 | - "integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E=" | 300 | + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" |
| 164 | }, | 301 | }, |
| 165 | - "tslib": { | 302 | + "merge-descriptors": { |
| 166 | - "version": "2.2.0", | 303 | + "version": "1.0.1", |
| 167 | - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", | 304 | + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |
| 168 | - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" | 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==" | ||
| 169 | }, | 316 | }, |
| 170 | - "uglify-js": { | 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==", | ||
| 326 | + "requires": { | ||
| 327 | + "mime-db": "1.48.0" | ||
| 328 | + } | ||
| 329 | + }, | ||
| 330 | + "minimatch": { | ||
| 331 | + "version": "3.0.4", | ||
| 332 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | ||
| 333 | + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | ||
| 334 | + "requires": { | ||
| 335 | + "brace-expansion": "^1.1.7" | ||
| 336 | + } | ||
| 337 | + }, | ||
| 338 | + "ms": { | ||
| 339 | + "version": "2.0.0", | ||
| 340 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||
| 341 | + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||
| 342 | + }, | ||
| 343 | + "negotiator": { | ||
| 344 | + "version": "0.6.2", | ||
| 345 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | ||
| 346 | + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" | ||
| 347 | + }, | ||
| 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