전현진

Delete duplicate, unnecessary files

1 -node_modules/
...\ No newline at end of file ...\ No newline at end of file
File mode changed
...@@ -6,45 +6,108 @@ var bodyParser = require('body-parser'); ...@@ -6,45 +6,108 @@ var bodyParser = require('body-parser');
6 app.use(bodyParser.urlencoded({ extended: false })); 6 app.use(bodyParser.urlencoded({ extended: false }));
7 app.use(bodyParser.json()); 7 app.use(bodyParser.json());
8 8
9 -app.get('/price', function(req, res) { 9 +
10 +app.get('/pumping', function(req, res) {
10 fs.readFile('coin_name.txt', 'utf8', function(err,data){ 11 fs.readFile('coin_name.txt', 'utf8', function(err,data){
11 - arr = data.split(","); 12 + coinNameArr = data.split(",");
12 - // console.log(arr); 13 +
13 - var responseList = new Array(); 14 +
14 - function print_coin(){ 15 + var volumePerWeekArr = new Array();
15 - var promise = new Promise(function(resolve,reject){ 16 + function getWeekVolume()
16 - for(j=0;j<arr.length/10;j++){ 17 + {
17 - for(i=j*10;i<(j+1)*10;i++){ 18 + var promise = new Promise(function(resolve, reject)
18 - (function(i){ 19 + {
19 - setTimeout(function(){ 20 + for (i = 0; i < coinNameArr.length; ++i)
20 - const url = 'https://api.upbit.com/v1/candles/minutes/1?market='+arr[i]+'&count=1'; 21 + {
22 + (function (i)
23 + {
24 + setTimeout(function () {
25 + const url = 'https://api.upbit.com/v1/candles/weeks/?market='+coinNameArr[i]+'&count=1';
26 + const options = {method: 'GET', headers: {Accept: 'application/json'}};
27 + var coinJson = new Object();
28 + fetch(url, options)
29 + .then(res => res.json())
30 + .then(json => {
31 + coinJson.coin = coinNameArr[i];
32 + coinJson.tradeVolumePerWeek = json[0].candle_acc_trade_volume;
33 + volumePerWeekArr.push(coinJson);
34 + if (volumePerWeekArr.length >= coinNameArr.length)
35 + resolve(volumePerWeekArr);
36 + })
37 + .catch(err => console.error('error:' + err));
38 + }, i*300);
39 + })(i);
40 + }
41 + });
42 + return promise;
43 + }
44 +
45 +
46 + var volumePerThreeMinArr = new Array();
47 + function getThreeMinVolume()
48 + {
49 + var promise = new Promise(function(resolve, reject)
50 + {
51 + for (i = 0; i < coinNameArr.length; ++i)
52 + {
53 + (function (i)
54 + {
55 + setTimeout(function () {
56 + const url = 'https://api.upbit.com/v1/candles/minutes/3?market='+coinNameArr[i]+'&count=1';
21 const options = {method: 'GET', headers: {Accept: 'application/json'}}; 57 const options = {method: 'GET', headers: {Accept: 'application/json'}};
22 var coinJson = new Object(); 58 var coinJson = new Object();
23 fetch(url, options) 59 fetch(url, options)
24 .then(res => res.json()) 60 .then(res => res.json())
25 .then(json => { 61 .then(json => {
26 - coinJson.coin = arr[i]; 62 + coinJson.coin = coinNameArr[i];
27 - coinJson.price = json[0].trade_price; 63 + coinJson.tradeVolumePerThreeMin = json[0].candle_acc_trade_volume;
28 - responseList.push(coinJson); 64 + volumePerThreeMinArr.push(coinJson);
29 - console.log(i) 65 + if (volumePerThreeMinArr.length >= coinNameArr.length)
30 - if(i>115){ 66 + resolve(volumePerThreeMinArr);
31 - resolve(responseList);
32 - }
33 }) 67 })
34 .catch(err => console.error('error:' + err)); 68 .catch(err => console.error('error:' + err));
35 - },i*180); 69 + }, i*300);
36 - })(i); 70 + })(i);
37 - }
38 } 71 }
39 - 72 +
40 }); 73 });
41 return promise; 74 return promise;
42 - } 75 + }
43 - print_coin().then(function(resList){ 76 +
44 - res.send(resList); 77 +
45 - }); 78 + var pumpingArr = new Array();
46 - }) 79 + function getResultArr(volArr, minArr)
80 + {
81 + var promise = new Promise(function(resolve, reject)
82 + {
83 + for (var i = 0; i < coinNameArr.length; i++)
84 + {
85 + var coinJson = new Object();
86 + coinJson.name = coinNameArr[i];
87 + coinJson.pumpingRatio = minArr[i].tradeVolumePerThreeMin / volArr[i].tradeVolumePerWeek * 1000000
88 + pumpingArr.push(coinJson);
89 + console.log(coinJson);
90 + if (pumpingArr.length >= coinNameArr.length)
91 + resolve(pumpingArr);
92 + }
93 + })
94 + return promise;
95 + }
96 +
97 +
98 + // get
99 + getWeekVolume().then(function(volArr){
100 + getThreeMinVolume().then(function(minArr){
101 + getResultArr(volArr, minArr).then(function(result){
102 +
103 + res.send(result);
104 +
105 + })
106 + })
107 + })
108 +
109 +
110 + })
47 }) 111 })
48 var server = app.listen(8082); 112 var server = app.listen(8082);
49 -console.log("Server Created.."); 113 +console.log("Server Created..");
50 -
...\ No newline at end of file ...\ No newline at end of file
......
1 -<!DOCTYPE html>
2 -<html lang="en">
3 -<head>
4 - <meta charset="UTF-8">
5 - <title>Document</title>
6 -</head>
7 -<body>
8 - <h1>hello</h1>
9 -</body>
10 -</html>
...\ No newline at end of file ...\ No newline at end of file
1 +// const fetch = require('node-fetch');
2 +
3 +// const url = 'https://api.upbit.com/v1/candles/weeks/?market=KRW-BTC&count=1';
4 +// const options = {method: 'GET', headers: {Accept: 'application/json'}};
5 +
6 +// fetch(url, options)
7 +// .then(res => res.json())
8 +// .then(json => console.log(json))
9 +// .catch(err => console.error('error:' + err));
10 +
11 +// const url = 'https://api.upbit.com/v1/candles/weeks/?market=' + data + '&count=1';
12 +// var pumpingArr = new Array();
13 +// const options = {method: 'GET', headers: {Accept: 'application/json'}};
14 +// var coinJson = new Object();
15 +// fetch(url, options)
16 +// .then(res => res.json())
17 +// .then(json => {
18 +// coinJson.coin = 'KRW-BTC';
19 +// coinJson.tradeVolume = json[0].candle_acc_trade_volume;
20 +// console.log(coinJson);
21 +// pumpingArr.push(coinJson);
22 +// console.log(pumpingArr);
23 +// })
24 +// .catch(err => console.error('error:' + err));
25 +
26 +
1 const fetch = require('node-fetch'); 27 const fetch = require('node-fetch');
2 28
3 -const url = 'https://api.upbit.com/v1/candles/minutes/1?market=KRW-XRP&count=1'; 29 +const url = 'https://api.upbit.com/v1/candles/minutes/1?market=KRW-BTC&count=1';
4 const options = {method: 'GET', headers: {Accept: 'application/json'}}; 30 const options = {method: 'GET', headers: {Accept: 'application/json'}};
5 31
6 fetch(url, options) 32 fetch(url, options)
7 .then(res => res.json()) 33 .then(res => res.json())
8 - .then(json => console.log(json[0].trade_price))
9 - .catch(err => console.error('error:' + err));
...\ No newline at end of file ...\ No newline at end of file
34 + .then(json => console.log(json))
35 + .catch(err => console.error('error:' + err));
......
1 -const fetch = require('node-fetch');
2 -const fs = require('fs');
3 -const url = 'https://api.upbit.com/v1/market/all?isDetails=false';
4 -const options = {method: 'GET', headers: {Accept: 'application/json'}};
5 -
6 -fetch(url, options)
7 - .then(res => res.json())
8 - .then(json => {
9 - var coinName = [];
10 - var j = 0;
11 - var file = 'coin_name.txt';
12 - fs.open(file,'w',function(err,fd){
13 - if(err) throw err;
14 - });
15 - for (i=0;i<json.length;i++) {
16 - if (json[i].market.indexOf("KRW")>-1){
17 - console.log(json[i].market);
18 - coinName[j] = json[i].market;
19 - j=j+1;
20 - }
21 - }
22 - console.log(coinName);
23 - fs.writeFile(file,coinName,'utf8',function(error){
24 - console.log('write end')
25 - });
26 - })
27 - .catch(err => console.error('error:' + err));
...\ No newline at end of file ...\ No newline at end of file
1 { 1 {
2 - "name": "Coin-trade-assistant",
3 - "version": "1.0.0",
4 - "lockfileVersion": 1,
5 "requires": true, 2 "requires": true,
3 + "lockfileVersion": 1,
6 "dependencies": { 4 "dependencies": {
7 "accepts": { 5 "accepts": {
8 "version": "1.3.7", 6 "version": "1.3.7",
......
1 -{
2 - "name": "Coin-trade-assistant",
3 - "version": "1.0.0",
4 - "description": "",
5 - "main": "index.js",
6 - "scripts": {
7 - "test": "echo \"Error: no test specified\" && exit 1",
8 - "start": "node server.js"
9 - },
10 - "repository": {
11 - "type": "git",
12 - "url": "http://khuhub.khu.ac.kr/2018102235/Coin-trade-assistant.git"
13 - },
14 - "keywords": [],
15 - "author": "",
16 - "license": "ISC",
17 - "dependencies": {
18 - "body-parser": "^1.19.0",
19 - "express": "^4.17.1",
20 - "jsonwebtoken": "^8.5.1",
21 - "node-fetch": "^2.6.1",
22 - "request": "^2.88.2"
23 - }
24 -}
1 -var express = require('express');
2 -var app = express();
3 -var fs = require('fs');
4 -const fetch = require('node-fetch');
5 -var bodyParser = require('body-parser');
6 -app.use(bodyParser.urlencoded({ extended: false }));
7 -app.use(bodyParser.json());
8 -
9 -
10 -app.get('/pumping', function(req, res) {
11 - fs.readFile('coin_name.txt', 'utf8', function(err,data){
12 - coinNameArr = data.split(",");
13 -
14 -
15 - var volumePerWeekArr = new Array();
16 - function getWeekVolume()
17 - {
18 - var promise = new Promise(function(resolve, reject)
19 - {
20 - for (i = 0; i < coinNameArr.length; ++i)
21 - {
22 - (function (i)
23 - {
24 - setTimeout(function () {
25 - const url = 'https://api.upbit.com/v1/candles/weeks/?market='+coinNameArr[i]+'&count=1';
26 - const options = {method: 'GET', headers: {Accept: 'application/json'}};
27 - var coinJson = new Object();
28 - fetch(url, options)
29 - .then(res => res.json())
30 - .then(json => {
31 - coinJson.coin = coinNameArr[i];
32 - coinJson.tradeVolumePerWeek = json[0].candle_acc_trade_volume;
33 - volumePerWeekArr.push(coinJson);
34 - if (volumePerWeekArr.length >= coinNameArr.length)
35 - resolve(volumePerWeekArr);
36 - })
37 - .catch(err => console.error('error:' + err));
38 - }, i*300);
39 - })(i);
40 - }
41 - });
42 - return promise;
43 - }
44 -
45 -
46 - var volumePerThreeMinArr = new Array();
47 - function getThreeMinVolume()
48 - {
49 - var promise = new Promise(function(resolve, reject)
50 - {
51 - for (i = 0; i < coinNameArr.length; ++i)
52 - {
53 - (function (i)
54 - {
55 - setTimeout(function () {
56 - const url = 'https://api.upbit.com/v1/candles/minutes/3?market='+coinNameArr[i]+'&count=1';
57 - const options = {method: 'GET', headers: {Accept: 'application/json'}};
58 - var coinJson = new Object();
59 - fetch(url, options)
60 - .then(res => res.json())
61 - .then(json => {
62 - coinJson.coin = coinNameArr[i];
63 - coinJson.tradeVolumePerThreeMin = json[0].candle_acc_trade_volume;
64 - volumePerThreeMinArr.push(coinJson);
65 - if (volumePerThreeMinArr.length >= coinNameArr.length)
66 - resolve(volumePerThreeMinArr);
67 - })
68 - .catch(err => console.error('error:' + err));
69 - }, i*300);
70 - })(i);
71 - }
72 -
73 - });
74 - return promise;
75 - }
76 -
77 -
78 - var pumpingArr = new Array();
79 - function getResultArr(volArr, minArr)
80 - {
81 - var promise = new Promise(function(resolve, reject)
82 - {
83 - for (var i = 0; i < coinNameArr.length; i++)
84 - {
85 - var coinJson = new Object();
86 - coinJson.name = coinNameArr[i];
87 - coinJson.pumpingRatio = minArr[i].tradeVolumePerThreeMin / volArr[i].tradeVolumePerWeek * 1000000
88 - pumpingArr.push(coinJson);
89 - console.log(coinJson);
90 - if (pumpingArr.length >= coinNameArr.length)
91 - resolve(pumpingArr);
92 - }
93 - })
94 - return promise;
95 - }
96 -
97 -
98 - // get
99 - getWeekVolume().then(function(volArr){
100 - getThreeMinVolume().then(function(minArr){
101 - getResultArr(volArr, minArr).then(function(result){
102 -
103 - res.send(result);
104 -
105 - })
106 - })
107 - })
108 -
109 -
110 - })
111 -})
112 -var server = app.listen(8082);
113 -console.log("Server Created..");
...\ No newline at end of file ...\ No newline at end of file
1 -KRW-BTC,KRW-ETH,KRW-NEO,KRW-MTL,KRW-LTC,KRW-XRP,KRW-ETC,KRW-OMG,KRW-SNT,KRW-WAVES,KRW-XEM,KRW-QTUM,KRW-LSK,KRW-STEEM,KRW-XLM,KRW-ARDR,KRW-KMD,KRW-ARK,KRW-STORJ,KRW-GRS,KRW-REP,KRW-EMC2,KRW-ADA,KRW-SBD,KRW-POWR,KRW-BTG,KRW-ICX,KRW-EOS,KRW-TRX,KRW-SC,KRW-IGNIS,KRW-ONT,KRW-ZIL,KRW-POLY,KRW-ZRX,KRW-LOOM,KRW-BCH,KRW-ADX,KRW-BAT,KRW-IOST,KRW-DMT,KRW-RFR,KRW-CVC,KRW-IQ,KRW-IOTA,KRW-MFT,KRW-ONG,KRW-GAS,KRW-UPP,KRW-ELF,KRW-KNC,KRW-BSV,KRW-THETA,KRW-EDR,KRW-QKC,KRW-BTT,KRW-MOC,KRW-ENJ,KRW-TFUEL,KRW-MANA,KRW-ANKR,KRW-AERGO,KRW-ATOM,KRW-TT,KRW-CRE,KRW-SOLVE,KRW-MBL,KRW-TSHP,KRW-WAXP,KRW-HBAR,KRW-MED,KRW-MLK,KRW-STPT,KRW-ORBS,KRW-VET,KRW-CHZ,KRW-PXL,KRW-STMX,KRW-DKA,KRW-HIVE,KRW-KAVA,KRW-AHT,KRW-LINK,KRW-XTZ,KRW-BORA,KRW-JST,KRW-CRO,KRW-TON,KRW-SXP,KRW-LAMB,KRW-HUNT,KRW-MARO,KRW-PLA,KRW-DOT,KRW-SRM,KRW-MVL,KRW-PCI,KRW-STRAX,KRW-AQT,KRW-BCHA,KRW-GLM,KRW-QTCON,KRW-SSX,KRW-META,KRW-OBSR,KRW-FCT2,KRW-LBC,KRW-CBK,KRW-SAND,KRW-HUM,KRW-DOGE,KRW-STRK,KRW-PUNDIX,KRW-FLOW,KRW-DAWN,KRW-AXS,KRW-STX
...\ No newline at end of file ...\ No newline at end of file
1 -// const fetch = require('node-fetch');
2 -
3 -// const url = 'https://api.upbit.com/v1/candles/weeks/?market=KRW-BTC&count=1';
4 -// const options = {method: 'GET', headers: {Accept: 'application/json'}};
5 -
6 -// fetch(url, options)
7 -// .then(res => res.json())
8 -// .then(json => console.log(json))
9 -// .catch(err => console.error('error:' + err));
10 -
11 -// const url = 'https://api.upbit.com/v1/candles/weeks/?market=' + data + '&count=1';
12 -// var pumpingArr = new Array();
13 -// const options = {method: 'GET', headers: {Accept: 'application/json'}};
14 -// var coinJson = new Object();
15 -// fetch(url, options)
16 -// .then(res => res.json())
17 -// .then(json => {
18 -// coinJson.coin = 'KRW-BTC';
19 -// coinJson.tradeVolume = json[0].candle_acc_trade_volume;
20 -// console.log(coinJson);
21 -// pumpingArr.push(coinJson);
22 -// console.log(pumpingArr);
23 -// })
24 -// .catch(err => console.error('error:' + err));
25 -
26 -
27 -const fetch = require('node-fetch');
28 -
29 -const url = 'https://api.upbit.com/v1/candles/minutes/1?market=KRW-BTC&count=1';
30 -const options = {method: 'GET', headers: {Accept: 'application/json'}};
31 -
32 -fetch(url, options)
33 - .then(res => res.json())
34 - .then(json => console.log(json))
35 - .catch(err => console.error('error:' + err));
1 -{
2 - "requires": true,
3 - "lockfileVersion": 1,
4 - "dependencies": {
5 - "accepts": {
6 - "version": "1.3.7",
7 - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
8 - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
9 - "requires": {
10 - "mime-types": "~2.1.24",
11 - "negotiator": "0.6.2"
12 - }
13 - },
14 - "ajv": {
15 - "version": "6.12.6",
16 - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
17 - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
18 - "requires": {
19 - "fast-deep-equal": "^3.1.1",
20 - "fast-json-stable-stringify": "^2.0.0",
21 - "json-schema-traverse": "^0.4.1",
22 - "uri-js": "^4.2.2"
23 - }
24 - },
25 - "array-flatten": {
26 - "version": "1.1.1",
27 - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
28 - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
29 - },
30 - "asn1": {
31 - "version": "0.2.4",
32 - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
33 - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
34 - "requires": {
35 - "safer-buffer": "~2.1.0"
36 - }
37 - },
38 - "assert-plus": {
39 - "version": "1.0.0",
40 - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
41 - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
42 - },
43 - "asynckit": {
44 - "version": "0.4.0",
45 - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
46 - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
47 - },
48 - "aws-sign2": {
49 - "version": "0.7.0",
50 - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
51 - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
52 - },
53 - "aws4": {
54 - "version": "1.11.0",
55 - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
56 - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
57 - },
58 - "bcrypt-pbkdf": {
59 - "version": "1.0.2",
60 - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
61 - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
62 - "requires": {
63 - "tweetnacl": "^0.14.3"
64 - }
65 - },
66 - "body-parser": {
67 - "version": "1.19.0",
68 - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
69 - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
70 - "requires": {
71 - "bytes": "3.1.0",
72 - "content-type": "~1.0.4",
73 - "debug": "2.6.9",
74 - "depd": "~1.1.2",
75 - "http-errors": "1.7.2",
76 - "iconv-lite": "0.4.24",
77 - "on-finished": "~2.3.0",
78 - "qs": "6.7.0",
79 - "raw-body": "2.4.0",
80 - "type-is": "~1.6.17"
81 - },
82 - "dependencies": {
83 - "qs": {
84 - "version": "6.7.0",
85 - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
86 - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
87 - }
88 - }
89 - },
90 - "buffer-equal-constant-time": {
91 - "version": "1.0.1",
92 - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
93 - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
94 - },
95 - "bytes": {
96 - "version": "3.1.0",
97 - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
98 - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
99 - },
100 - "caseless": {
101 - "version": "0.12.0",
102 - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
103 - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
104 - },
105 - "combined-stream": {
106 - "version": "1.0.8",
107 - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
108 - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
109 - "requires": {
110 - "delayed-stream": "~1.0.0"
111 - }
112 - },
113 - "content-disposition": {
114 - "version": "0.5.3",
115 - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
116 - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
117 - "requires": {
118 - "safe-buffer": "5.1.2"
119 - },
120 - "dependencies": {
121 - "safe-buffer": {
122 - "version": "5.1.2",
123 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
124 - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
125 - }
126 - }
127 - },
128 - "content-type": {
129 - "version": "1.0.4",
130 - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
131 - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
132 - },
133 - "cookie": {
134 - "version": "0.4.0",
135 - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
136 - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
137 - },
138 - "cookie-signature": {
139 - "version": "1.0.6",
140 - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
141 - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
142 - },
143 - "core-util-is": {
144 - "version": "1.0.2",
145 - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
146 - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
147 - },
148 - "dashdash": {
149 - "version": "1.14.1",
150 - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
151 - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
152 - "requires": {
153 - "assert-plus": "^1.0.0"
154 - }
155 - },
156 - "debug": {
157 - "version": "2.6.9",
158 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
159 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
160 - "requires": {
161 - "ms": "2.0.0"
162 - },
163 - "dependencies": {
164 - "ms": {
165 - "version": "2.0.0",
166 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
167 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
168 - }
169 - }
170 - },
171 - "delayed-stream": {
172 - "version": "1.0.0",
173 - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
174 - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
175 - },
176 - "depd": {
177 - "version": "1.1.2",
178 - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
179 - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
180 - },
181 - "destroy": {
182 - "version": "1.0.4",
183 - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
184 - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
185 - },
186 - "ecc-jsbn": {
187 - "version": "0.1.2",
188 - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
189 - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
190 - "requires": {
191 - "jsbn": "~0.1.0",
192 - "safer-buffer": "^2.1.0"
193 - }
194 - },
195 - "ecdsa-sig-formatter": {
196 - "version": "1.0.11",
197 - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
198 - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
199 - "requires": {
200 - "safe-buffer": "^5.0.1"
201 - }
202 - },
203 - "ee-first": {
204 - "version": "1.1.1",
205 - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
206 - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
207 - },
208 - "encodeurl": {
209 - "version": "1.0.2",
210 - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
211 - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
212 - },
213 - "escape-html": {
214 - "version": "1.0.3",
215 - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
216 - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
217 - },
218 - "etag": {
219 - "version": "1.8.1",
220 - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
221 - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
222 - },
223 - "express": {
224 - "version": "4.17.1",
225 - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
226 - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
227 - "requires": {
228 - "accepts": "~1.3.7",
229 - "array-flatten": "1.1.1",
230 - "body-parser": "1.19.0",
231 - "content-disposition": "0.5.3",
232 - "content-type": "~1.0.4",
233 - "cookie": "0.4.0",
234 - "cookie-signature": "1.0.6",
235 - "debug": "2.6.9",
236 - "depd": "~1.1.2",
237 - "encodeurl": "~1.0.2",
238 - "escape-html": "~1.0.3",
239 - "etag": "~1.8.1",
240 - "finalhandler": "~1.1.2",
241 - "fresh": "0.5.2",
242 - "merge-descriptors": "1.0.1",
243 - "methods": "~1.1.2",
244 - "on-finished": "~2.3.0",
245 - "parseurl": "~1.3.3",
246 - "path-to-regexp": "0.1.7",
247 - "proxy-addr": "~2.0.5",
248 - "qs": "6.7.0",
249 - "range-parser": "~1.2.1",
250 - "safe-buffer": "5.1.2",
251 - "send": "0.17.1",
252 - "serve-static": "1.14.1",
253 - "setprototypeof": "1.1.1",
254 - "statuses": "~1.5.0",
255 - "type-is": "~1.6.18",
256 - "utils-merge": "1.0.1",
257 - "vary": "~1.1.2"
258 - },
259 - "dependencies": {
260 - "qs": {
261 - "version": "6.7.0",
262 - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
263 - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
264 - },
265 - "safe-buffer": {
266 - "version": "5.1.2",
267 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
268 - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
269 - }
270 - }
271 - },
272 - "extend": {
273 - "version": "3.0.2",
274 - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
275 - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
276 - },
277 - "extsprintf": {
278 - "version": "1.3.0",
279 - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
280 - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
281 - },
282 - "fast-deep-equal": {
283 - "version": "3.1.3",
284 - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
285 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
286 - },
287 - "fast-json-stable-stringify": {
288 - "version": "2.1.0",
289 - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
290 - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
291 - },
292 - "finalhandler": {
293 - "version": "1.1.2",
294 - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
295 - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
296 - "requires": {
297 - "debug": "2.6.9",
298 - "encodeurl": "~1.0.2",
299 - "escape-html": "~1.0.3",
300 - "on-finished": "~2.3.0",
301 - "parseurl": "~1.3.3",
302 - "statuses": "~1.5.0",
303 - "unpipe": "~1.0.0"
304 - }
305 - },
306 - "forever-agent": {
307 - "version": "0.6.1",
308 - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
309 - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
310 - },
311 - "form-data": {
312 - "version": "2.3.3",
313 - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
314 - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
315 - "requires": {
316 - "asynckit": "^0.4.0",
317 - "combined-stream": "^1.0.6",
318 - "mime-types": "^2.1.12"
319 - }
320 - },
321 - "forwarded": {
322 - "version": "0.1.2",
323 - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
324 - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
325 - },
326 - "fresh": {
327 - "version": "0.5.2",
328 - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
329 - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
330 - },
331 - "getpass": {
332 - "version": "0.1.7",
333 - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
334 - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
335 - "requires": {
336 - "assert-plus": "^1.0.0"
337 - }
338 - },
339 - "har-schema": {
340 - "version": "2.0.0",
341 - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
342 - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
343 - },
344 - "har-validator": {
345 - "version": "5.1.5",
346 - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
347 - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
348 - "requires": {
349 - "ajv": "^6.12.3",
350 - "har-schema": "^2.0.0"
351 - }
352 - },
353 - "http-errors": {
354 - "version": "1.7.2",
355 - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
356 - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
357 - "requires": {
358 - "depd": "~1.1.2",
359 - "inherits": "2.0.3",
360 - "setprototypeof": "1.1.1",
361 - "statuses": ">= 1.5.0 < 2",
362 - "toidentifier": "1.0.0"
363 - }
364 - },
365 - "http-signature": {
366 - "version": "1.2.0",
367 - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
368 - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
369 - "requires": {
370 - "assert-plus": "^1.0.0",
371 - "jsprim": "^1.2.2",
372 - "sshpk": "^1.7.0"
373 - }
374 - },
375 - "iconv-lite": {
376 - "version": "0.4.24",
377 - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
378 - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
379 - "requires": {
380 - "safer-buffer": ">= 2.1.2 < 3"
381 - }
382 - },
383 - "inherits": {
384 - "version": "2.0.3",
385 - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
386 - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
387 - },
388 - "ipaddr.js": {
389 - "version": "1.9.1",
390 - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
391 - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
392 - },
393 - "is-typedarray": {
394 - "version": "1.0.0",
395 - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
396 - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
397 - },
398 - "isstream": {
399 - "version": "0.1.2",
400 - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
401 - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
402 - },
403 - "jsbn": {
404 - "version": "0.1.1",
405 - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
406 - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
407 - },
408 - "json-schema": {
409 - "version": "0.2.3",
410 - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
411 - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
412 - },
413 - "json-schema-traverse": {
414 - "version": "0.4.1",
415 - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
416 - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
417 - },
418 - "json-stringify-safe": {
419 - "version": "5.0.1",
420 - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
421 - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
422 - },
423 - "jsonwebtoken": {
424 - "version": "8.5.1",
425 - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
426 - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
427 - "requires": {
428 - "jws": "^3.2.2",
429 - "lodash.includes": "^4.3.0",
430 - "lodash.isboolean": "^3.0.3",
431 - "lodash.isinteger": "^4.0.4",
432 - "lodash.isnumber": "^3.0.3",
433 - "lodash.isplainobject": "^4.0.6",
434 - "lodash.isstring": "^4.0.1",
435 - "lodash.once": "^4.0.0",
436 - "ms": "^2.1.1",
437 - "semver": "^5.6.0"
438 - }
439 - },
440 - "jsprim": {
441 - "version": "1.4.1",
442 - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
443 - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
444 - "requires": {
445 - "assert-plus": "1.0.0",
446 - "extsprintf": "1.3.0",
447 - "json-schema": "0.2.3",
448 - "verror": "1.10.0"
449 - }
450 - },
451 - "jwa": {
452 - "version": "1.4.1",
453 - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
454 - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
455 - "requires": {
456 - "buffer-equal-constant-time": "1.0.1",
457 - "ecdsa-sig-formatter": "1.0.11",
458 - "safe-buffer": "^5.0.1"
459 - }
460 - },
461 - "jws": {
462 - "version": "3.2.2",
463 - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
464 - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
465 - "requires": {
466 - "jwa": "^1.4.1",
467 - "safe-buffer": "^5.0.1"
468 - }
469 - },
470 - "lodash.includes": {
471 - "version": "4.3.0",
472 - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
473 - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
474 - },
475 - "lodash.isboolean": {
476 - "version": "3.0.3",
477 - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
478 - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
479 - },
480 - "lodash.isinteger": {
481 - "version": "4.0.4",
482 - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
483 - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
484 - },
485 - "lodash.isnumber": {
486 - "version": "3.0.3",
487 - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
488 - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
489 - },
490 - "lodash.isplainobject": {
491 - "version": "4.0.6",
492 - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
493 - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
494 - },
495 - "lodash.isstring": {
496 - "version": "4.0.1",
497 - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
498 - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
499 - },
500 - "lodash.once": {
501 - "version": "4.1.1",
502 - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
503 - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
504 - },
505 - "media-typer": {
506 - "version": "0.3.0",
507 - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
508 - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
509 - },
510 - "merge-descriptors": {
511 - "version": "1.0.1",
512 - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
513 - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
514 - },
515 - "methods": {
516 - "version": "1.1.2",
517 - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
518 - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
519 - },
520 - "mime": {
521 - "version": "1.6.0",
522 - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
523 - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
524 - },
525 - "mime-db": {
526 - "version": "1.47.0",
527 - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
528 - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw=="
529 - },
530 - "mime-types": {
531 - "version": "2.1.30",
532 - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
533 - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
534 - "requires": {
535 - "mime-db": "1.47.0"
536 - }
537 - },
538 - "ms": {
539 - "version": "2.1.3",
540 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
541 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
542 - },
543 - "negotiator": {
544 - "version": "0.6.2",
545 - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
546 - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
547 - },
548 - "node-fetch": {
549 - "version": "2.6.1",
550 - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
551 - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
552 - },
553 - "oauth-sign": {
554 - "version": "0.9.0",
555 - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
556 - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
557 - },
558 - "on-finished": {
559 - "version": "2.3.0",
560 - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
561 - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
562 - "requires": {
563 - "ee-first": "1.1.1"
564 - }
565 - },
566 - "parseurl": {
567 - "version": "1.3.3",
568 - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
569 - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
570 - },
571 - "path-to-regexp": {
572 - "version": "0.1.7",
573 - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
574 - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
575 - },
576 - "performance-now": {
577 - "version": "2.1.0",
578 - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
579 - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
580 - },
581 - "proxy-addr": {
582 - "version": "2.0.6",
583 - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
584 - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
585 - "requires": {
586 - "forwarded": "~0.1.2",
587 - "ipaddr.js": "1.9.1"
588 - }
589 - },
590 - "psl": {
591 - "version": "1.8.0",
592 - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
593 - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
594 - },
595 - "punycode": {
596 - "version": "2.1.1",
597 - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
598 - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
599 - },
600 - "qs": {
601 - "version": "6.5.2",
602 - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
603 - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
604 - },
605 - "range-parser": {
606 - "version": "1.2.1",
607 - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
608 - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
609 - },
610 - "raw-body": {
611 - "version": "2.4.0",
612 - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
613 - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
614 - "requires": {
615 - "bytes": "3.1.0",
616 - "http-errors": "1.7.2",
617 - "iconv-lite": "0.4.24",
618 - "unpipe": "1.0.0"
619 - }
620 - },
621 - "request": {
622 - "version": "2.88.2",
623 - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
624 - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
625 - "requires": {
626 - "aws-sign2": "~0.7.0",
627 - "aws4": "^1.8.0",
628 - "caseless": "~0.12.0",
629 - "combined-stream": "~1.0.6",
630 - "extend": "~3.0.2",
631 - "forever-agent": "~0.6.1",
632 - "form-data": "~2.3.2",
633 - "har-validator": "~5.1.3",
634 - "http-signature": "~1.2.0",
635 - "is-typedarray": "~1.0.0",
636 - "isstream": "~0.1.2",
637 - "json-stringify-safe": "~5.0.1",
638 - "mime-types": "~2.1.19",
639 - "oauth-sign": "~0.9.0",
640 - "performance-now": "^2.1.0",
641 - "qs": "~6.5.2",
642 - "safe-buffer": "^5.1.2",
643 - "tough-cookie": "~2.5.0",
644 - "tunnel-agent": "^0.6.0",
645 - "uuid": "^3.3.2"
646 - }
647 - },
648 - "safe-buffer": {
649 - "version": "5.2.1",
650 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
651 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
652 - },
653 - "safer-buffer": {
654 - "version": "2.1.2",
655 - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
656 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
657 - },
658 - "semver": {
659 - "version": "5.7.1",
660 - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
661 - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
662 - },
663 - "send": {
664 - "version": "0.17.1",
665 - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
666 - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
667 - "requires": {
668 - "debug": "2.6.9",
669 - "depd": "~1.1.2",
670 - "destroy": "~1.0.4",
671 - "encodeurl": "~1.0.2",
672 - "escape-html": "~1.0.3",
673 - "etag": "~1.8.1",
674 - "fresh": "0.5.2",
675 - "http-errors": "~1.7.2",
676 - "mime": "1.6.0",
677 - "ms": "2.1.1",
678 - "on-finished": "~2.3.0",
679 - "range-parser": "~1.2.1",
680 - "statuses": "~1.5.0"
681 - },
682 - "dependencies": {
683 - "ms": {
684 - "version": "2.1.1",
685 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
686 - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
687 - }
688 - }
689 - },
690 - "serve-static": {
691 - "version": "1.14.1",
692 - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
693 - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
694 - "requires": {
695 - "encodeurl": "~1.0.2",
696 - "escape-html": "~1.0.3",
697 - "parseurl": "~1.3.3",
698 - "send": "0.17.1"
699 - }
700 - },
701 - "setprototypeof": {
702 - "version": "1.1.1",
703 - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
704 - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
705 - },
706 - "sshpk": {
707 - "version": "1.16.1",
708 - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
709 - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
710 - "requires": {
711 - "asn1": "~0.2.3",
712 - "assert-plus": "^1.0.0",
713 - "bcrypt-pbkdf": "^1.0.0",
714 - "dashdash": "^1.12.0",
715 - "ecc-jsbn": "~0.1.1",
716 - "getpass": "^0.1.1",
717 - "jsbn": "~0.1.0",
718 - "safer-buffer": "^2.0.2",
719 - "tweetnacl": "~0.14.0"
720 - }
721 - },
722 - "statuses": {
723 - "version": "1.5.0",
724 - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
725 - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
726 - },
727 - "toidentifier": {
728 - "version": "1.0.0",
729 - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
730 - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
731 - },
732 - "tough-cookie": {
733 - "version": "2.5.0",
734 - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
735 - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
736 - "requires": {
737 - "psl": "^1.1.28",
738 - "punycode": "^2.1.1"
739 - }
740 - },
741 - "tunnel-agent": {
742 - "version": "0.6.0",
743 - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
744 - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
745 - "requires": {
746 - "safe-buffer": "^5.0.1"
747 - }
748 - },
749 - "tweetnacl": {
750 - "version": "0.14.5",
751 - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
752 - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
753 - },
754 - "type-is": {
755 - "version": "1.6.18",
756 - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
757 - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
758 - "requires": {
759 - "media-typer": "0.3.0",
760 - "mime-types": "~2.1.24"
761 - }
762 - },
763 - "unpipe": {
764 - "version": "1.0.0",
765 - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
766 - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
767 - },
768 - "uri-js": {
769 - "version": "4.4.1",
770 - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
771 - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
772 - "requires": {
773 - "punycode": "^2.1.0"
774 - }
775 - },
776 - "utils-merge": {
777 - "version": "1.0.1",
778 - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
779 - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
780 - },
781 - "uuid": {
782 - "version": "3.4.0",
783 - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
784 - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
785 - },
786 - "vary": {
787 - "version": "1.1.2",
788 - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
789 - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
790 - },
791 - "verror": {
792 - "version": "1.10.0",
793 - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
794 - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
795 - "requires": {
796 - "assert-plus": "^1.0.0",
797 - "core-util-is": "1.0.2",
798 - "extsprintf": "^1.2.0"
799 - }
800 - }
801 - }
802 -}
1 -const fetch = require('node-fetch');
2 -var fs = require('fs');
3 -
4 -
5 -
6 -fs.readFile('coin_name.txt', 'utf8', function(err,data){
7 - arr = data.split(",");
8 - // console.log(arr);
9 - var responseList = new Array();
10 - for(j=0;j<2;j++){
11 - for(i=j*10;i<(j+1)*10;i++){
12 - (function(i){
13 - setTimeout(function(){
14 - const url = 'https://api.upbit.com/v1/candles/minutes/1?market='+arr[i]+'&count=1';
15 - const options = {method: 'GET', headers: {Accept: 'application/json'}};
16 - var coinJson = new Object();
17 - fetch(url, options)
18 - .then(res => res.json())
19 - .then(json => {
20 - coinJson.coin = arr[i];
21 - coinJson.price = json[0].trade_price;
22 - responseList.push(coinJson);
23 - // console.log(responseList)
24 - console.log(i)
25 - })
26 - .catch(err => console.error('error:' + err));
27 - },i*180);
28 - })(i);
29 - }
30 - }
31 -
32 -
33 -})
1 -const delay = () => {
2 - const randomDelay = Math.floor(Math.random() * 4) * 100
3 - return new Promise(resolve => setTimeout(resolve, randomDelay))
4 - }
5 -
6 -const loop = async (list) => {
7 -console.log("시작")
8 -const promises = list.map(async data => {
9 - return await delay()
10 - .then(() => data)
11 -})
12 -
13 -const results = await Promise.all(promises)
14 -results.forEach(data => console.log(data))
15 -console.log("끝")
16 -}
17 -
18 -const list = [1, 2, 3, 4, 5, 6, 7]
19 -loop(list)
...\ No newline at end of file ...\ No newline at end of file