Showing
12 changed files
with
1323 additions
and
0 deletions
.eslintignore
0 → 100644
.eslintrc
0 → 100644
.gitignore
0 → 100644
1 | + | ||
2 | +# Created by https://www.gitignore.io/api/node,webstorm,netbeans,sublimetext,vim | ||
3 | + | ||
4 | +### Node ### | ||
5 | +# Logs | ||
6 | +logs | ||
7 | +*.log | ||
8 | +npm-debug.log* | ||
9 | + | ||
10 | +# Runtime data | ||
11 | +pids | ||
12 | +*.pid | ||
13 | +*.seed | ||
14 | + | ||
15 | +# Directory for instrumented libs generated by jscoverage/JSCover | ||
16 | +lib-cov | ||
17 | + | ||
18 | +# Coverage directory used by tools like istanbul | ||
19 | +coverage | ||
20 | + | ||
21 | +# nyc test coverage | ||
22 | +.nyc_output | ||
23 | + | ||
24 | +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) | ||
25 | +.grunt | ||
26 | + | ||
27 | +# node-waf configuration | ||
28 | +.lock-wscript | ||
29 | + | ||
30 | +# Compiled binary addons (http://nodejs.org/api/addons.html) | ||
31 | +build/Release | ||
32 | + | ||
33 | +# Dependency directories | ||
34 | +node_modules | ||
35 | +jspm_packages | ||
36 | + | ||
37 | +# Optional npm cache directory | ||
38 | +.npm | ||
39 | + | ||
40 | +# Optional REPL history | ||
41 | +.node_repl_history | ||
42 | + | ||
43 | + | ||
44 | +### WebStorm ### | ||
45 | +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm | ||
46 | +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 | ||
47 | +.idea/ | ||
48 | +# User-specific stuff: | ||
49 | +.idea/workspace.xml | ||
50 | +.idea/tasks.xml | ||
51 | +.idea/dictionaries | ||
52 | +.idea/vcs.xml | ||
53 | +.idea/jsLibraryMappings.xml | ||
54 | + | ||
55 | +# Sensitive or high-churn files: | ||
56 | +.idea/dataSources.ids | ||
57 | +.idea/dataSources.xml | ||
58 | +.idea/dataSources.local.xml | ||
59 | +.idea/sqlDataSources.xml | ||
60 | +.idea/dynamic.xml | ||
61 | +.idea/uiDesigner.xml | ||
62 | + | ||
63 | +# Gradle: | ||
64 | +.idea/gradle.xml | ||
65 | +.idea/libraries | ||
66 | + | ||
67 | +# Mongo Explorer plugin: | ||
68 | +.idea/mongoSettings.xml | ||
69 | + | ||
70 | +## File-based project format: | ||
71 | +*.iws | ||
72 | + | ||
73 | +## Plugin-specific files: | ||
74 | + | ||
75 | +# IntelliJ | ||
76 | +/out/ | ||
77 | + | ||
78 | +# mpeltonen/sbt-idea plugin | ||
79 | +.idea_modules/ | ||
80 | + | ||
81 | +# JIRA plugin | ||
82 | +atlassian-ide-plugin.xml | ||
83 | + | ||
84 | +# Crashlytics plugin (for Android Studio and IntelliJ) | ||
85 | +com_crashlytics_export_strings.xml | ||
86 | +crashlytics.properties | ||
87 | +crashlytics-build.properties | ||
88 | +fabric.properties | ||
89 | + | ||
90 | +### WebStorm Patch ### | ||
91 | +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 | ||
92 | + | ||
93 | +# *.iml | ||
94 | +# modules.xml | ||
95 | + | ||
96 | + | ||
97 | +### NetBeans ### | ||
98 | +nbproject/private/ | ||
99 | +nbbuild/ | ||
100 | +dist/ | ||
101 | +nbdist/ | ||
102 | +nbactions.xml | ||
103 | +.nb-gradle/ | ||
104 | + | ||
105 | + | ||
106 | +### SublimeText ### | ||
107 | +# cache files for sublime text | ||
108 | +*.tmlanguage.cache | ||
109 | +*.tmPreferences.cache | ||
110 | +*.stTheme.cache | ||
111 | + | ||
112 | +# workspace files are user-specific | ||
113 | +*.sublime-workspace | ||
114 | + | ||
115 | +# project files should be checked into the repository, unless a significant | ||
116 | +# proportion of contributors will probably not be using SublimeText | ||
117 | +# *.sublime-project | ||
118 | + | ||
119 | +# sftp configuration file | ||
120 | +sftp-config.json | ||
121 | + | ||
122 | +### TSD ### | ||
123 | +typings/ | ||
124 | + | ||
125 | +### Vim ### | ||
126 | +# swap | ||
127 | +[._]*.s[a-w][a-z] | ||
128 | +[._]s[a-w][a-z] | ||
129 | +# session | ||
130 | +Session.vim | ||
131 | +# temporary | ||
132 | +.netrwhist | ||
133 | +*~ | ||
134 | +# auto-generated tag files | ||
135 | +tags | ||
136 | + | ||
137 | +### TSD ### | ||
138 | +typings/ | ||
139 | + | ||
140 | +### VS Code ### | ||
141 | +.vscode/ | ||
142 | + | ||
143 | +### YOHO ### | ||
144 | +dist | ||
145 | +public/build/bundle/* | ||
146 | +public/build/dll/* | ||
147 | +public/build/dist/* | ||
148 | +public/css/* | ||
149 | +public/sprites | ||
150 | +public/bundle/* | ||
151 | +.eslintcache | ||
152 | +.stylelintcache | ||
153 | +*.log.* | ||
154 | +nbproject/* | ||
155 | +.DS_Store | ||
156 | +.devhost | ||
157 | +.happypack/* | ||
158 | +.scannerwork | ||
159 | +package-lock.json | ||
160 | +yoho-yohobuy-wap.tar.gz | ||
161 | + | ||
162 | +other/files | ||
163 | +/db | ||
164 | +other/output |
app-buyers.js
0 → 100644
libs/logger.js
0 → 100644
1 | +const {transports, createLogger, format} = require('winston'); | ||
2 | + | ||
3 | +require('winston-daily-rotate-file'); | ||
4 | + | ||
5 | +module.exports = (loggers) => { | ||
6 | + const tps = loggers.map(log => { | ||
7 | + switch (log.type) { | ||
8 | + case 'console': | ||
9 | + return new transports.Console(Object.assign({ | ||
10 | + level: 'info' | ||
11 | + }, log)); | ||
12 | + case 'file': | ||
13 | + return new transports.File(Object.assign({ | ||
14 | + level: 'info', | ||
15 | + zippedArchive: true, | ||
16 | + maxsize: 209715200, // 200m | ||
17 | + maxFiles: 7, | ||
18 | + }, log)); | ||
19 | + case 'dailyfile': | ||
20 | + return new transports.DailyRotateFile(Object.assign({ | ||
21 | + level: 'info', | ||
22 | + zippedArchive: true, | ||
23 | + maxSize: '200m', | ||
24 | + maxFiles: '7d', | ||
25 | + datePattern: 'YYYY-MM-DD', | ||
26 | + dirname: './logs' | ||
27 | + }, log)); | ||
28 | + default: | ||
29 | + return void 0; | ||
30 | + } | ||
31 | + }); | ||
32 | + | ||
33 | + const logger = createLogger({ | ||
34 | + level: 'info', | ||
35 | + format: format.combine( | ||
36 | + format.timestamp({ | ||
37 | + format: () => { | ||
38 | + return new Date().toLocaleString(); | ||
39 | + } | ||
40 | + }), | ||
41 | + format.printf(info => `${info.level}: ${info.message}`) | ||
42 | + ), | ||
43 | + transports: tps | ||
44 | + }); | ||
45 | + | ||
46 | + return logger; | ||
47 | +}; | ||
48 | + | ||
49 | +module.exports.logger = module.exports([{ | ||
50 | + silent: true, | ||
51 | + type: 'dailyfile', | ||
52 | + level: 'info', | ||
53 | + filename: 'logs/info.log', | ||
54 | +}, { | ||
55 | + silent: true, | ||
56 | + type: 'dailyfile', | ||
57 | + level: 'error', | ||
58 | + filename: 'logs/error.log', | ||
59 | +}, { | ||
60 | + type: 'console', | ||
61 | + level: 'debug', | ||
62 | +}]); |
libs/mysql.js
0 → 100644
1 | +const mysql = require('mysql'); | ||
2 | +const _ = require('lodash'); | ||
3 | +const isProduction = process.env.NODE_ENV === 'production'; | ||
4 | + | ||
5 | +// const {logger} = require('./logger'); | ||
6 | + | ||
7 | +class MysqlAdapter { | ||
8 | + constructor(connect, database) { | ||
9 | + this.connect = connect; | ||
10 | + this.database = database; | ||
11 | + this.createPool(); | ||
12 | + } | ||
13 | + createPool() { | ||
14 | + this.pool = mysql.createPool(Object.assign(this.connect, { | ||
15 | + database: this.database, | ||
16 | + queryFormat: function(query, values) { | ||
17 | + let exeQuery; | ||
18 | + | ||
19 | + if (!values) { | ||
20 | + exeQuery = query; | ||
21 | + } else { | ||
22 | + exeQuery = query.replace(/:(\w+)/g, function(txt, key) { | ||
23 | + if (values.hasOwnProperty(key)) { | ||
24 | + return this.escape(values[key]); | ||
25 | + } | ||
26 | + return txt; | ||
27 | + }.bind(this)); | ||
28 | + } | ||
29 | + if (!isProduction) { | ||
30 | + // logger.info(exeQuery); | ||
31 | + } | ||
32 | + return exeQuery; | ||
33 | + }, | ||
34 | + connectTimeout: 2000 | ||
35 | + })); | ||
36 | + } | ||
37 | + getConnection() { | ||
38 | + return new Promise((resolve, reject) => { | ||
39 | + this.pool.getConnection((connErr, connection) => { | ||
40 | + if (connErr) { | ||
41 | + reject(connErr); | ||
42 | + } else { | ||
43 | + resolve(connection); | ||
44 | + } | ||
45 | + }); | ||
46 | + }); | ||
47 | + } | ||
48 | + query(sql, params, options) { | ||
49 | + return this.execute(sql, params, options); | ||
50 | + } | ||
51 | + delete(sql, params) { | ||
52 | + return this.execute(sql, params).then(result => { | ||
53 | + return result.affectedRows; | ||
54 | + }); | ||
55 | + } | ||
56 | + update(sql, params) { | ||
57 | + return this.execute(sql, params).then(result => { | ||
58 | + return result.affectedRows; | ||
59 | + }); | ||
60 | + } | ||
61 | + insert(sql, params) { | ||
62 | + return this.execute(sql, params).then(result => { | ||
63 | + return result.insertId; | ||
64 | + }); | ||
65 | + } | ||
66 | + execute(sql, params) { | ||
67 | + return new Promise((resolve, reject) => { | ||
68 | + this.getConnection().then(connection => { | ||
69 | + connection.query(sql, params, (queryErr, result) => { | ||
70 | + connection.release(); | ||
71 | + if (queryErr) { | ||
72 | + reject(queryErr); | ||
73 | + } else { | ||
74 | + resolve(result); | ||
75 | + } | ||
76 | + }); | ||
77 | + }).catch(e => { | ||
78 | + reject(e); | ||
79 | + }); | ||
80 | + }); | ||
81 | + } | ||
82 | + transaction(sqls, cb) { | ||
83 | + return new Promise((resolve, reject) => { | ||
84 | + this.getConnection().then(connection => { | ||
85 | + let promises = _.map(sqls, sql => { | ||
86 | + return new Promise((res, rej) => { | ||
87 | + connection.query(sql, (queryErr, result) => { | ||
88 | + if (queryErr) { | ||
89 | + connection.rollback(); | ||
90 | + rej(queryErr); | ||
91 | + } else { | ||
92 | + cb && cb(sql); // eslint-disable-line | ||
93 | + res(result); | ||
94 | + } | ||
95 | + }); | ||
96 | + }); | ||
97 | + }); | ||
98 | + | ||
99 | + Promise.all(promises).then(results => { | ||
100 | + connection.commit(err => { | ||
101 | + if (err) { | ||
102 | + connection.rollback(() => { | ||
103 | + connection.release(); | ||
104 | + }); | ||
105 | + reject(); | ||
106 | + } else { | ||
107 | + connection.release(); | ||
108 | + resolve(results); | ||
109 | + } | ||
110 | + }); | ||
111 | + }, () => { | ||
112 | + reject(); | ||
113 | + }); | ||
114 | + }); | ||
115 | + }); | ||
116 | + } | ||
117 | + changeDatabase(database) { | ||
118 | + return new Promise(resolve => { | ||
119 | + this.pool.end(() => { | ||
120 | + this.createPool(database); | ||
121 | + resolve(); | ||
122 | + }); | ||
123 | + }); | ||
124 | + } | ||
125 | + close() { | ||
126 | + this.pool.end(); | ||
127 | + } | ||
128 | +} | ||
129 | + | ||
130 | +module.exports = MysqlAdapter; | ||
131 | + |
libs/spider.js
0 → 100644
1 | +const md5 = require('yoho-md5'); | ||
2 | +const rp = require('request-promise'); | ||
3 | +const nodeLockup = require('node-lockup'); | ||
4 | +const chalk = require('chalk'); | ||
5 | +const {logger} = require('./logger'); | ||
6 | + | ||
7 | +const sign = (obj) => { | ||
8 | + let constr = ''; | ||
9 | + | ||
10 | + Object.keys(obj).sort().forEach(k => { | ||
11 | + constr += k + obj[k].toString(); | ||
12 | + }); | ||
13 | + return md5(constr + '048a9c4943398714b356a696503d2d36'); | ||
14 | +}; | ||
15 | + | ||
16 | +const task = async(options, tick = 1) => { | ||
17 | + const params = Object.assign({}, options); | ||
18 | + | ||
19 | + delete params.url; | ||
20 | + params.sign = sign(params); | ||
21 | + try { | ||
22 | + const result = await rp.get({ | ||
23 | + url: options.url, | ||
24 | + qs: params, | ||
25 | + json: true, | ||
26 | + headers: { | ||
27 | + Accept: 'application/json, text/plain, */*', | ||
28 | + appVersion: '3.5.0', | ||
29 | + Referer: 'http://du.hupu.com/mdu/product/detail.html?id=1&source=boutiqueRecommend', | ||
30 | + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 Safari/604.1', | ||
31 | + 'X-Requested-With': 'XMLHttpRequest' | ||
32 | + }, | ||
33 | + timeout: 2000 | ||
34 | + }); | ||
35 | + | ||
36 | + return result; | ||
37 | + } catch (error) { | ||
38 | + logger.error(chalk.red(`error:${options}:tick:${tick} ====> ${error}`)); | ||
39 | + if (tick >= 3) { | ||
40 | + return Promise.resolve({}); | ||
41 | + } | ||
42 | + return task(options, tick + 1); | ||
43 | + } | ||
44 | +}; | ||
45 | + | ||
46 | +module.exports = (ids, url = 'http://du.hupu.com/mapi/product/detail', params, delay) => { | ||
47 | + const lockTask = nodeLockup(task, delay || 1); | ||
48 | + | ||
49 | + return ids.map(id => lockTask(Object.assign({ | ||
50 | + productId: id, | ||
51 | + source: 'boutiqueRecommend', | ||
52 | + url | ||
53 | + }, params))); | ||
54 | +}; | ||
55 | + | ||
56 | +module.exports.spiderFetch = (id, url = 'http://du.hupu.com/mapi/product/detail', params) => { | ||
57 | + return task(Object.assign({ | ||
58 | + productId: id, | ||
59 | + source: 'boutiqueRecommend', | ||
60 | + url | ||
61 | + }, params)); | ||
62 | +}; |
package.json
0 → 100644
1 | +{ | ||
2 | + "name": "app-buyers", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "", | ||
5 | + "main": "app-buyers.js", | ||
6 | + "scripts": { | ||
7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
8 | + }, | ||
9 | + "author": "", | ||
10 | + "license": "ISC", | ||
11 | + "dependencies": { | ||
12 | + "chalk": "^2.4.2", | ||
13 | + "dayjs": "^1.8.12", | ||
14 | + "lodash": "^4.17.11", | ||
15 | + "mysql": "^2.16.0", | ||
16 | + "node-lockup": "^1.0.3", | ||
17 | + "node-schedule": "^1.3.2", | ||
18 | + "request": "^2.88.0", | ||
19 | + "request-promise": "^4.2.4", | ||
20 | + "winston": "^3.2.1", | ||
21 | + "winston-daily-rotate-file": "^3.8.0", | ||
22 | + "yoho-md5": "^2.1.0" | ||
23 | + } | ||
24 | +} |
spider-buyers.js
0 → 100644
1 | +const dayjs = require('dayjs'); | ||
2 | +const lockup = require('node-lockup'); | ||
3 | +const isBetween = require('dayjs/plugin/isBetween'); | ||
4 | +const _ = require('lodash'); | ||
5 | +const MysqlAdapter = require('./libs/mysql'); | ||
6 | +const spider = require('./libs/spider'); | ||
7 | +const config = require('./spider-buyers.json'); | ||
8 | +const {logger} = require('./libs/logger'); | ||
9 | + | ||
10 | +dayjs.extend(isBetween); | ||
11 | + | ||
12 | +const mysql = new MysqlAdapter(config.connect, config.connect.database); | ||
13 | + | ||
14 | +const products = {}; | ||
15 | +const RegNow = /刚刚/; | ||
16 | +const RegMinute = /(\d+)分钟前/; | ||
17 | +const RegHour = /(\d+)小时前/; | ||
18 | +const RegDay = /(\d+)天前/; | ||
19 | +const RegDate = /(\d+)月(\d+)日/; | ||
20 | +const RegDateFull = /\d+\.\d+\.\d+/; | ||
21 | +let tableName; | ||
22 | + | ||
23 | + | ||
24 | +const parseTime = (relativeTime) => { | ||
25 | + const matchMinute = relativeTime.match(RegMinute); | ||
26 | + | ||
27 | + if (matchMinute) { | ||
28 | + return dayjs().add(0 - matchMinute[1], 'minute'); | ||
29 | + } | ||
30 | + const matchHour = relativeTime.match(RegHour); | ||
31 | + | ||
32 | + if (matchHour) { | ||
33 | + return dayjs().add(0 - matchHour[1], 'hour'); | ||
34 | + } | ||
35 | + const matchDay = relativeTime.match(RegDay); | ||
36 | + | ||
37 | + if (matchDay) { | ||
38 | + return dayjs().add(0 - matchDay[1], 'day'); | ||
39 | + } | ||
40 | + const matchDate = relativeTime.match(RegDate); | ||
41 | + | ||
42 | + if (matchDate) { | ||
43 | + return dayjs(`2019/${matchDate[1]}/${matchDate[2]}`); | ||
44 | + } | ||
45 | + if (RegDateFull.test(relativeTime)) { | ||
46 | + return dayjs(relativeTime); | ||
47 | + } | ||
48 | + if (RegNow.test(relativeTime)) { | ||
49 | + return dayjs(); | ||
50 | + } | ||
51 | + return dayjs('1990-01-01'); | ||
52 | +}; | ||
53 | + | ||
54 | + | ||
55 | +const spiderBuyers = async(productId, lsId = 0, page = 0, trys = 0) => { | ||
56 | + const result = await spider.spiderFetch(productId, 'https://du.hupu.com/mapi/product/lastSoldList', { | ||
57 | + lastId: lsId | ||
58 | + }); | ||
59 | + | ||
60 | + let lastId; | ||
61 | + let tryLogic = false; | ||
62 | + let list = []; | ||
63 | + | ||
64 | + if (result.status === 200) { | ||
65 | + let skip = false; | ||
66 | + | ||
67 | + lastId = result.data.lastId; | ||
68 | + list = result.data.list; | ||
69 | + | ||
70 | + | ||
71 | + list.forEach(info => { | ||
72 | + const orderTime = parseTime(info.formatTime); | ||
73 | + const startTime = dayjs().subtract(1, 'day').add(1, 'second'); | ||
74 | + | ||
75 | + if (!orderTime.isBefore(startTime)) { | ||
76 | + mysql.insert('INSERT INTO `' + tableName + '` (`productId`, `nickName`, `icon`, `time`, `size`, `soldNum`, `price`) VALUES (:productId, :nickName, :icon, :time, :size, :soldNum, :price)', { | ||
77 | + productId: productId, | ||
78 | + nickName: info.buyer.userName, | ||
79 | + icon: info.buyer.icon, | ||
80 | + size: info.item.size, | ||
81 | + time: orderTime.format('YYYY-MM-DD HH:mm:ss'), | ||
82 | + soldNum: products[productId].count, | ||
83 | + price: +products[productId].price / 100, | ||
84 | + }); | ||
85 | + } else { | ||
86 | + if (!skip) { | ||
87 | + logger.info(`productid: ${productId}, skip time:${orderTime.format('YYYY-MM-DD HH:mm:ss')}`); | ||
88 | + } | ||
89 | + skip = true; | ||
90 | + } | ||
91 | + }); | ||
92 | + | ||
93 | + if (skip) { | ||
94 | + return {productId}; | ||
95 | + } | ||
96 | + } else { | ||
97 | + if (trys < 3) { | ||
98 | + tryLogic = true; | ||
99 | + } | ||
100 | + } | ||
101 | + | ||
102 | + if (tryLogic) { | ||
103 | + logger.info(`tryLogic ${trys}`); | ||
104 | + return spiderBuyers(productId, lsId, page, trys + 1); | ||
105 | + } else { | ||
106 | + if (lastId) { | ||
107 | + logger.info(`productId: ${productId}, nextPage: ${page}, lastId: ${lastId}`); | ||
108 | + return spiderBuyers(productId, lastId, page + 1); | ||
109 | + } | ||
110 | + return {productId}; | ||
111 | + } | ||
112 | +}; | ||
113 | + | ||
114 | +// 2721219 | ||
115 | + | ||
116 | +let max = 50000; | ||
117 | +let failNum = 0; | ||
118 | +let over = false; | ||
119 | + | ||
120 | +const start = async(productId) => { | ||
121 | + if (over) { | ||
122 | + return; | ||
123 | + } | ||
124 | + | ||
125 | + if (productId >= max) { | ||
126 | + over = true; | ||
127 | + logger.info('over!!!!!!'); | ||
128 | + return; | ||
129 | + } | ||
130 | + | ||
131 | + const result = await spider.spiderFetch(productId); | ||
132 | + | ||
133 | + if (result.status === 200) { | ||
134 | + failNum = 0; | ||
135 | + products[productId] = { | ||
136 | + count: _.get(result, 'data.detail.soldNum', 0), | ||
137 | + price: _.get(result, 'data.item.price', 0) | ||
138 | + }; | ||
139 | + try { | ||
140 | + await spiderBuyers(productId); | ||
141 | + } catch (error) { | ||
142 | + logger.info('error', error); | ||
143 | + } | ||
144 | + | ||
145 | + | ||
146 | + } else { | ||
147 | + logger.info(productId, result.status); | ||
148 | + if (result.status) { | ||
149 | + failNum++; | ||
150 | + } | ||
151 | + } | ||
152 | + if (failNum >= 20) { | ||
153 | + over = true; | ||
154 | + return logger.info('over!!!!!!', JSON.stringify(result)); | ||
155 | + } | ||
156 | + return true; | ||
157 | +}; | ||
158 | + | ||
159 | +const createDayTable = async() => { | ||
160 | + tableName = `buyers_${dayjs().format('YYYY_MM_DD')}`; | ||
161 | + const sql = `CREATE TABLE \`${tableName}\` (\`productId\` int(11) DEFAULT NULL,\`nickName\` varchar(50) DEFAULT NULL,\`icon\` varchar(200) DEFAULT NULL,\`time\` datetime DEFAULT NULL,\`size\` varchar(50) DEFAULT NULL,\`id\` int(11) NOT NULL AUTO_INCREMENT,\`soldNum\` int(11) DEFAULT NULL,\`price\` decimal(10,0) DEFAULT NULL,PRIMARY KEY (\`id\`),KEY \`index_name_icon\` (\`nickName\`,\`icon\`), KEY \`productid\` (\`productId\`) USING BTREE, KEY \`time\` (\`time\`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8;`; | ||
162 | + | ||
163 | + const result = await mysql.query(`SELECT table_name FROM information_schema.TABLES WHERE table_name ='${tableName}'`); | ||
164 | + | ||
165 | + if (result.length) { | ||
166 | + return; | ||
167 | + } | ||
168 | + | ||
169 | + return mysql.execute(sql); | ||
170 | +}; | ||
171 | + | ||
172 | +const locktask = lockup(start); | ||
173 | + | ||
174 | +// 4211292 | ||
175 | +module.exports = async() => { | ||
176 | + await createDayTable(); | ||
177 | + Array.from({length: max}).forEach((v, i) => { | ||
178 | + locktask(i + 1); | ||
179 | + }); | ||
180 | +}; |
spider-buyers.json
0 → 100644
yarn.lock
0 → 100644
1 | +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. | ||
2 | +# yarn lockfile v1 | ||
3 | + | ||
4 | + | ||
5 | +ajv@^6.5.5: | ||
6 | + version "6.10.0" | ||
7 | + resolved "http://npm.yohops.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" | ||
8 | + dependencies: | ||
9 | + fast-deep-equal "^2.0.1" | ||
10 | + fast-json-stable-stringify "^2.0.0" | ||
11 | + json-schema-traverse "^0.4.1" | ||
12 | + uri-js "^4.2.2" | ||
13 | + | ||
14 | +ansi-styles@^3.2.1: | ||
15 | + version "3.2.1" | ||
16 | + resolved "http://npm.yohops.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" | ||
17 | + dependencies: | ||
18 | + color-convert "^1.9.0" | ||
19 | + | ||
20 | +asn1@~0.2.3: | ||
21 | + version "0.2.4" | ||
22 | + resolved "http://npm.yohops.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" | ||
23 | + dependencies: | ||
24 | + safer-buffer "~2.1.0" | ||
25 | + | ||
26 | +assert-plus@1.0.0, assert-plus@^1.0.0: | ||
27 | + version "1.0.0" | ||
28 | + resolved "http://npm.yohops.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" | ||
29 | + | ||
30 | +async@^2.6.1: | ||
31 | + version "2.6.2" | ||
32 | + resolved "http://npm.yohops.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" | ||
33 | + dependencies: | ||
34 | + lodash "^4.17.11" | ||
35 | + | ||
36 | +asynckit@^0.4.0: | ||
37 | + version "0.4.0" | ||
38 | + resolved "http://npm.yohops.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" | ||
39 | + | ||
40 | +aws-sign2@~0.7.0: | ||
41 | + version "0.7.0" | ||
42 | + resolved "http://npm.yohops.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" | ||
43 | + | ||
44 | +aws4@^1.8.0: | ||
45 | + version "1.8.0" | ||
46 | + resolved "http://npm.yohops.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" | ||
47 | + | ||
48 | +bcrypt-pbkdf@^1.0.0: | ||
49 | + version "1.0.2" | ||
50 | + resolved "http://npm.yohops.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" | ||
51 | + dependencies: | ||
52 | + tweetnacl "^0.14.3" | ||
53 | + | ||
54 | +bignumber.js@4.1.0: | ||
55 | + version "4.1.0" | ||
56 | + resolved "http://npm.yohops.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1" | ||
57 | + | ||
58 | +bluebird@^3.5.0: | ||
59 | + version "3.5.4" | ||
60 | + resolved "http://npm.yohops.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" | ||
61 | + | ||
62 | +caseless@~0.12.0: | ||
63 | + version "0.12.0" | ||
64 | + resolved "http://npm.yohops.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" | ||
65 | + | ||
66 | +chalk@^2.4.2: | ||
67 | + version "2.4.2" | ||
68 | + resolved "http://npm.yohops.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" | ||
69 | + dependencies: | ||
70 | + ansi-styles "^3.2.1" | ||
71 | + escape-string-regexp "^1.0.5" | ||
72 | + supports-color "^5.3.0" | ||
73 | + | ||
74 | +color-convert@^1.9.0, color-convert@^1.9.1: | ||
75 | + version "1.9.3" | ||
76 | + resolved "http://npm.yohops.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" | ||
77 | + dependencies: | ||
78 | + color-name "1.1.3" | ||
79 | + | ||
80 | +color-name@1.1.3: | ||
81 | + version "1.1.3" | ||
82 | + resolved "http://npm.yohops.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" | ||
83 | + | ||
84 | +color-name@^1.0.0: | ||
85 | + version "1.1.4" | ||
86 | + resolved "http://npm.yohops.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" | ||
87 | + | ||
88 | +color-string@^1.5.2: | ||
89 | + version "1.5.3" | ||
90 | + resolved "http://npm.yohops.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" | ||
91 | + dependencies: | ||
92 | + color-name "^1.0.0" | ||
93 | + simple-swizzle "^0.2.2" | ||
94 | + | ||
95 | +color@3.0.x: | ||
96 | + version "3.0.0" | ||
97 | + resolved "http://npm.yohops.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" | ||
98 | + dependencies: | ||
99 | + color-convert "^1.9.1" | ||
100 | + color-string "^1.5.2" | ||
101 | + | ||
102 | +colornames@^1.1.1: | ||
103 | + version "1.1.1" | ||
104 | + resolved "http://npm.yohops.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" | ||
105 | + | ||
106 | +colors@^1.2.1: | ||
107 | + version "1.3.3" | ||
108 | + resolved "http://npm.yohops.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" | ||
109 | + | ||
110 | +colorspace@1.1.x: | ||
111 | + version "1.1.1" | ||
112 | + resolved "http://npm.yohops.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" | ||
113 | + dependencies: | ||
114 | + color "3.0.x" | ||
115 | + text-hex "1.0.x" | ||
116 | + | ||
117 | +combined-stream@^1.0.6, combined-stream@~1.0.6: | ||
118 | + version "1.0.7" | ||
119 | + resolved "http://npm.yohops.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" | ||
120 | + dependencies: | ||
121 | + delayed-stream "~1.0.0" | ||
122 | + | ||
123 | +core-util-is@1.0.2, core-util-is@~1.0.0: | ||
124 | + version "1.0.2" | ||
125 | + resolved "http://npm.yohops.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" | ||
126 | + | ||
127 | +cron-parser@^2.7.3: | ||
128 | + version "2.11.0" | ||
129 | + resolved "http://npm.yohops.com/cron-parser/-/cron-parser-2.11.0.tgz#c3bf477e01de6a56938d6625b92efd6cec30a8a5" | ||
130 | + dependencies: | ||
131 | + is-nan "^1.2.1" | ||
132 | + moment-timezone "^0.5.23" | ||
133 | + | ||
134 | +cycle@~1.0.3: | ||
135 | + version "1.0.3" | ||
136 | + resolved "http://npm.yohops.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" | ||
137 | + | ||
138 | +dashdash@^1.12.0: | ||
139 | + version "1.14.1" | ||
140 | + resolved "http://npm.yohops.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" | ||
141 | + dependencies: | ||
142 | + assert-plus "^1.0.0" | ||
143 | + | ||
144 | +dayjs@^1.8.12: | ||
145 | + version "1.8.12" | ||
146 | + resolved "http://npm.yohops.com/dayjs/-/dayjs-1.8.12.tgz#f9610fb9b115aa2fe2a07e742c130df418cee76a" | ||
147 | + | ||
148 | +define-properties@^1.1.1: | ||
149 | + version "1.1.3" | ||
150 | + resolved "http://npm.yohops.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" | ||
151 | + dependencies: | ||
152 | + object-keys "^1.0.12" | ||
153 | + | ||
154 | +delayed-stream@~1.0.0: | ||
155 | + version "1.0.0" | ||
156 | + resolved "http://npm.yohops.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" | ||
157 | + | ||
158 | +diagnostics@^1.1.1: | ||
159 | + version "1.1.1" | ||
160 | + resolved "http://npm.yohops.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" | ||
161 | + dependencies: | ||
162 | + colorspace "1.1.x" | ||
163 | + enabled "1.0.x" | ||
164 | + kuler "1.0.x" | ||
165 | + | ||
166 | +ecc-jsbn@~0.1.1: | ||
167 | + version "0.1.2" | ||
168 | + resolved "http://npm.yohops.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" | ||
169 | + dependencies: | ||
170 | + jsbn "~0.1.0" | ||
171 | + safer-buffer "^2.1.0" | ||
172 | + | ||
173 | +enabled@1.0.x: | ||
174 | + version "1.0.2" | ||
175 | + resolved "http://npm.yohops.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" | ||
176 | + dependencies: | ||
177 | + env-variable "0.0.x" | ||
178 | + | ||
179 | +env-variable@0.0.x: | ||
180 | + version "0.0.5" | ||
181 | + resolved "http://npm.yohops.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" | ||
182 | + | ||
183 | +escape-string-regexp@^1.0.5: | ||
184 | + version "1.0.5" | ||
185 | + resolved "http://npm.yohops.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" | ||
186 | + | ||
187 | +extend@~3.0.2: | ||
188 | + version "3.0.2" | ||
189 | + resolved "http://npm.yohops.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" | ||
190 | + | ||
191 | +extsprintf@1.3.0: | ||
192 | + version "1.3.0" | ||
193 | + resolved "http://npm.yohops.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" | ||
194 | + | ||
195 | +extsprintf@^1.2.0: | ||
196 | + version "1.4.0" | ||
197 | + resolved "http://npm.yohops.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" | ||
198 | + | ||
199 | +fast-deep-equal@^2.0.1: | ||
200 | + version "2.0.1" | ||
201 | + resolved "http://npm.yohops.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" | ||
202 | + | ||
203 | +fast-json-stable-stringify@^2.0.0: | ||
204 | + version "2.0.0" | ||
205 | + resolved "http://npm.yohops.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" | ||
206 | + | ||
207 | +fast-safe-stringify@^2.0.4: | ||
208 | + version "2.0.6" | ||
209 | + resolved "http://npm.yohops.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2" | ||
210 | + | ||
211 | +fecha@^2.3.3: | ||
212 | + version "2.3.3" | ||
213 | + resolved "http://npm.yohops.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" | ||
214 | + | ||
215 | +file-stream-rotator@^0.4.1: | ||
216 | + version "0.4.1" | ||
217 | + resolved "http://npm.yohops.com/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz#09f67b86d6ea589d20b7852c51c59de55d916d6d" | ||
218 | + dependencies: | ||
219 | + moment "^2.11.2" | ||
220 | + | ||
221 | +forever-agent@~0.6.1: | ||
222 | + version "0.6.1" | ||
223 | + resolved "http://npm.yohops.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" | ||
224 | + | ||
225 | +form-data@~2.3.2: | ||
226 | + version "2.3.3" | ||
227 | + resolved "http://npm.yohops.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" | ||
228 | + dependencies: | ||
229 | + asynckit "^0.4.0" | ||
230 | + combined-stream "^1.0.6" | ||
231 | + mime-types "^2.1.12" | ||
232 | + | ||
233 | +getpass@^0.1.1: | ||
234 | + version "0.1.7" | ||
235 | + resolved "http://npm.yohops.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" | ||
236 | + dependencies: | ||
237 | + assert-plus "^1.0.0" | ||
238 | + | ||
239 | +har-schema@^2.0.0: | ||
240 | + version "2.0.0" | ||
241 | + resolved "http://npm.yohops.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" | ||
242 | + | ||
243 | +har-validator@~5.1.0: | ||
244 | + version "5.1.3" | ||
245 | + resolved "http://npm.yohops.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" | ||
246 | + dependencies: | ||
247 | + ajv "^6.5.5" | ||
248 | + har-schema "^2.0.0" | ||
249 | + | ||
250 | +has-flag@^3.0.0: | ||
251 | + version "3.0.0" | ||
252 | + resolved "http://npm.yohops.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" | ||
253 | + | ||
254 | +http-signature@~1.2.0: | ||
255 | + version "1.2.0" | ||
256 | + resolved "http://npm.yohops.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" | ||
257 | + dependencies: | ||
258 | + assert-plus "^1.0.0" | ||
259 | + jsprim "^1.2.2" | ||
260 | + sshpk "^1.7.0" | ||
261 | + | ||
262 | +inherits@^2.0.3, inherits@~2.0.3: | ||
263 | + version "2.0.3" | ||
264 | + resolved "http://npm.yohops.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" | ||
265 | + | ||
266 | +is-arrayish@^0.3.1: | ||
267 | + version "0.3.2" | ||
268 | + resolved "http://npm.yohops.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" | ||
269 | + | ||
270 | +is-nan@^1.2.1: | ||
271 | + version "1.2.1" | ||
272 | + resolved "http://npm.yohops.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" | ||
273 | + dependencies: | ||
274 | + define-properties "^1.1.1" | ||
275 | + | ||
276 | +is-stream@^1.1.0: | ||
277 | + version "1.1.0" | ||
278 | + resolved "http://npm.yohops.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" | ||
279 | + | ||
280 | +is-typedarray@~1.0.0: | ||
281 | + version "1.0.0" | ||
282 | + resolved "http://npm.yohops.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" | ||
283 | + | ||
284 | +isarray@~1.0.0: | ||
285 | + version "1.0.0" | ||
286 | + resolved "http://npm.yohops.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" | ||
287 | + | ||
288 | +isstream@~0.1.2: | ||
289 | + version "0.1.2" | ||
290 | + resolved "http://npm.yohops.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" | ||
291 | + | ||
292 | +jsbn@~0.1.0: | ||
293 | + version "0.1.1" | ||
294 | + resolved "http://npm.yohops.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" | ||
295 | + | ||
296 | +json-schema-traverse@^0.4.1: | ||
297 | + version "0.4.1" | ||
298 | + resolved "http://npm.yohops.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" | ||
299 | + | ||
300 | +json-schema@0.2.3: | ||
301 | + version "0.2.3" | ||
302 | + resolved "http://npm.yohops.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" | ||
303 | + | ||
304 | +json-stringify-safe@~5.0.1: | ||
305 | + version "5.0.1" | ||
306 | + resolved "http://npm.yohops.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" | ||
307 | + | ||
308 | +jsprim@^1.2.2: | ||
309 | + version "1.4.1" | ||
310 | + resolved "http://npm.yohops.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" | ||
311 | + dependencies: | ||
312 | + assert-plus "1.0.0" | ||
313 | + extsprintf "1.3.0" | ||
314 | + json-schema "0.2.3" | ||
315 | + verror "1.10.0" | ||
316 | + | ||
317 | +kuler@1.0.x: | ||
318 | + version "1.0.1" | ||
319 | + resolved "http://npm.yohops.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" | ||
320 | + dependencies: | ||
321 | + colornames "^1.1.1" | ||
322 | + | ||
323 | +lodash@^4.17.11: | ||
324 | + version "4.17.11" | ||
325 | + resolved "http://npm.yohops.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" | ||
326 | + | ||
327 | +logform@^1.6.0: | ||
328 | + version "1.10.0" | ||
329 | + resolved "http://npm.yohops.com/logform/-/logform-1.10.0.tgz#c9d5598714c92b546e23f4e78147c40f1e02012e" | ||
330 | + dependencies: | ||
331 | + colors "^1.2.1" | ||
332 | + fast-safe-stringify "^2.0.4" | ||
333 | + fecha "^2.3.3" | ||
334 | + ms "^2.1.1" | ||
335 | + triple-beam "^1.2.0" | ||
336 | + | ||
337 | +logform@^2.1.1: | ||
338 | + version "2.1.2" | ||
339 | + resolved "http://npm.yohops.com/logform/-/logform-2.1.2.tgz#957155ebeb67a13164069825ce67ddb5bb2dd360" | ||
340 | + dependencies: | ||
341 | + colors "^1.2.1" | ||
342 | + fast-safe-stringify "^2.0.4" | ||
343 | + fecha "^2.3.3" | ||
344 | + ms "^2.1.1" | ||
345 | + triple-beam "^1.3.0" | ||
346 | + | ||
347 | +long-timeout@0.1.1: | ||
348 | + version "0.1.1" | ||
349 | + resolved "http://npm.yohops.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" | ||
350 | + | ||
351 | +mime-db@~1.38.0: | ||
352 | + version "1.38.0" | ||
353 | + resolved "http://npm.yohops.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" | ||
354 | + | ||
355 | +mime-types@^2.1.12, mime-types@~2.1.19: | ||
356 | + version "2.1.22" | ||
357 | + resolved "http://npm.yohops.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" | ||
358 | + dependencies: | ||
359 | + mime-db "~1.38.0" | ||
360 | + | ||
361 | +moment-timezone@^0.5.23: | ||
362 | + version "0.5.23" | ||
363 | + resolved "http://npm.yohops.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" | ||
364 | + dependencies: | ||
365 | + moment ">= 2.9.0" | ||
366 | + | ||
367 | +"moment@>= 2.9.0", moment@^2.11.2: | ||
368 | + version "2.24.0" | ||
369 | + resolved "http://npm.yohops.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" | ||
370 | + | ||
371 | +ms@^2.1.1: | ||
372 | + version "2.1.1" | ||
373 | + resolved "http://npm.yohops.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" | ||
374 | + | ||
375 | +mysql@^2.16.0: | ||
376 | + version "2.16.0" | ||
377 | + resolved "http://npm.yohops.com/mysql/-/mysql-2.16.0.tgz#b23b22ab5de44fc2d5d32bd4f5af6653fc45e2ba" | ||
378 | + dependencies: | ||
379 | + bignumber.js "4.1.0" | ||
380 | + readable-stream "2.3.6" | ||
381 | + safe-buffer "5.1.2" | ||
382 | + sqlstring "2.3.1" | ||
383 | + | ||
384 | +node-lockup@^1.0.3: | ||
385 | + version "1.0.3" | ||
386 | + resolved "http://npm.yohops.com/node-lockup/-/node-lockup-1.0.3.tgz#8472738fad3bde97719428cf2d82b07e3b282fe8" | ||
387 | + | ||
388 | +node-schedule@^1.3.2: | ||
389 | + version "1.3.2" | ||
390 | + resolved "http://npm.yohops.com/node-schedule/-/node-schedule-1.3.2.tgz#d774b383e2a6f6ade59eecc62254aea07cd758cb" | ||
391 | + dependencies: | ||
392 | + cron-parser "^2.7.3" | ||
393 | + long-timeout "0.1.1" | ||
394 | + sorted-array-functions "^1.0.0" | ||
395 | + | ||
396 | +oauth-sign@~0.9.0: | ||
397 | + version "0.9.0" | ||
398 | + resolved "http://npm.yohops.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" | ||
399 | + | ||
400 | +object-hash@^1.3.0: | ||
401 | + version "1.3.1" | ||
402 | + resolved "http://npm.yohops.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" | ||
403 | + | ||
404 | +object-keys@^1.0.12: | ||
405 | + version "1.1.1" | ||
406 | + resolved "http://npm.yohops.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" | ||
407 | + | ||
408 | +one-time@0.0.4: | ||
409 | + version "0.0.4" | ||
410 | + resolved "http://npm.yohops.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" | ||
411 | + | ||
412 | +performance-now@^2.1.0: | ||
413 | + version "2.1.0" | ||
414 | + resolved "http://npm.yohops.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" | ||
415 | + | ||
416 | +process-nextick-args@~2.0.0: | ||
417 | + version "2.0.0" | ||
418 | + resolved "http://npm.yohops.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" | ||
419 | + | ||
420 | +psl@^1.1.24, psl@^1.1.28: | ||
421 | + version "1.1.31" | ||
422 | + resolved "http://npm.yohops.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" | ||
423 | + | ||
424 | +punycode@^1.4.1: | ||
425 | + version "1.4.1" | ||
426 | + resolved "http://npm.yohops.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" | ||
427 | + | ||
428 | +punycode@^2.1.0, punycode@^2.1.1: | ||
429 | + version "2.1.1" | ||
430 | + resolved "http://npm.yohops.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" | ||
431 | + | ||
432 | +qs@~6.5.2: | ||
433 | + version "6.5.2" | ||
434 | + resolved "http://npm.yohops.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" | ||
435 | + | ||
436 | +readable-stream@2.3.6, readable-stream@^2.3.6: | ||
437 | + version "2.3.6" | ||
438 | + resolved "http://npm.yohops.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" | ||
439 | + dependencies: | ||
440 | + core-util-is "~1.0.0" | ||
441 | + inherits "~2.0.3" | ||
442 | + isarray "~1.0.0" | ||
443 | + process-nextick-args "~2.0.0" | ||
444 | + safe-buffer "~5.1.1" | ||
445 | + string_decoder "~1.1.1" | ||
446 | + util-deprecate "~1.0.1" | ||
447 | + | ||
448 | +readable-stream@^3.1.1: | ||
449 | + version "3.3.0" | ||
450 | + resolved "http://npm.yohops.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" | ||
451 | + dependencies: | ||
452 | + inherits "^2.0.3" | ||
453 | + string_decoder "^1.1.1" | ||
454 | + util-deprecate "^1.0.1" | ||
455 | + | ||
456 | +request-promise-core@1.1.2: | ||
457 | + version "1.1.2" | ||
458 | + resolved "http://npm.yohops.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" | ||
459 | + dependencies: | ||
460 | + lodash "^4.17.11" | ||
461 | + | ||
462 | +request-promise@^4.2.4: | ||
463 | + version "4.2.4" | ||
464 | + resolved "http://npm.yohops.com/request-promise/-/request-promise-4.2.4.tgz#1c5ed0d71441e38ad58c7ce4ea4ea5b06d54b310" | ||
465 | + dependencies: | ||
466 | + bluebird "^3.5.0" | ||
467 | + request-promise-core "1.1.2" | ||
468 | + stealthy-require "^1.1.1" | ||
469 | + tough-cookie "^2.3.3" | ||
470 | + | ||
471 | +request@^2.88.0: | ||
472 | + version "2.88.0" | ||
473 | + resolved "http://npm.yohops.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" | ||
474 | + dependencies: | ||
475 | + aws-sign2 "~0.7.0" | ||
476 | + aws4 "^1.8.0" | ||
477 | + caseless "~0.12.0" | ||
478 | + combined-stream "~1.0.6" | ||
479 | + extend "~3.0.2" | ||
480 | + forever-agent "~0.6.1" | ||
481 | + form-data "~2.3.2" | ||
482 | + har-validator "~5.1.0" | ||
483 | + http-signature "~1.2.0" | ||
484 | + is-typedarray "~1.0.0" | ||
485 | + isstream "~0.1.2" | ||
486 | + json-stringify-safe "~5.0.1" | ||
487 | + mime-types "~2.1.19" | ||
488 | + oauth-sign "~0.9.0" | ||
489 | + performance-now "^2.1.0" | ||
490 | + qs "~6.5.2" | ||
491 | + safe-buffer "^5.1.2" | ||
492 | + tough-cookie "~2.4.3" | ||
493 | + tunnel-agent "^0.6.0" | ||
494 | + uuid "^3.3.2" | ||
495 | + | ||
496 | +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: | ||
497 | + version "5.1.2" | ||
498 | + resolved "http://npm.yohops.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" | ||
499 | + | ||
500 | +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: | ||
501 | + version "2.1.2" | ||
502 | + resolved "http://npm.yohops.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" | ||
503 | + | ||
504 | +semver@^5.6.0: | ||
505 | + version "5.7.0" | ||
506 | + resolved "http://npm.yohops.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" | ||
507 | + | ||
508 | +simple-swizzle@^0.2.2: | ||
509 | + version "0.2.2" | ||
510 | + resolved "http://npm.yohops.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" | ||
511 | + dependencies: | ||
512 | + is-arrayish "^0.3.1" | ||
513 | + | ||
514 | +sorted-array-functions@^1.0.0: | ||
515 | + version "1.2.0" | ||
516 | + resolved "http://npm.yohops.com/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz#43265b21d6e985b7df31621b1c11cc68d8efc7c3" | ||
517 | + | ||
518 | +sqlstring@2.3.1: | ||
519 | + version "2.3.1" | ||
520 | + resolved "http://npm.yohops.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" | ||
521 | + | ||
522 | +sshpk@^1.7.0: | ||
523 | + version "1.16.1" | ||
524 | + resolved "http://npm.yohops.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" | ||
525 | + dependencies: | ||
526 | + asn1 "~0.2.3" | ||
527 | + assert-plus "^1.0.0" | ||
528 | + bcrypt-pbkdf "^1.0.0" | ||
529 | + dashdash "^1.12.0" | ||
530 | + ecc-jsbn "~0.1.1" | ||
531 | + getpass "^0.1.1" | ||
532 | + jsbn "~0.1.0" | ||
533 | + safer-buffer "^2.0.2" | ||
534 | + tweetnacl "~0.14.0" | ||
535 | + | ||
536 | +stack-trace@0.0.x: | ||
537 | + version "0.0.10" | ||
538 | + resolved "http://npm.yohops.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" | ||
539 | + | ||
540 | +stealthy-require@^1.1.1: | ||
541 | + version "1.1.1" | ||
542 | + resolved "http://npm.yohops.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" | ||
543 | + | ||
544 | +string_decoder@^1.1.1: | ||
545 | + version "1.2.0" | ||
546 | + resolved "http://npm.yohops.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" | ||
547 | + dependencies: | ||
548 | + safe-buffer "~5.1.0" | ||
549 | + | ||
550 | +string_decoder@~1.1.1: | ||
551 | + version "1.1.1" | ||
552 | + resolved "http://npm.yohops.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" | ||
553 | + dependencies: | ||
554 | + safe-buffer "~5.1.0" | ||
555 | + | ||
556 | +supports-color@^5.3.0: | ||
557 | + version "5.5.0" | ||
558 | + resolved "http://npm.yohops.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" | ||
559 | + dependencies: | ||
560 | + has-flag "^3.0.0" | ||
561 | + | ||
562 | +text-hex@1.0.x: | ||
563 | + version "1.0.0" | ||
564 | + resolved "http://npm.yohops.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" | ||
565 | + | ||
566 | +tough-cookie@^2.3.3: | ||
567 | + version "2.5.0" | ||
568 | + resolved "http://npm.yohops.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" | ||
569 | + dependencies: | ||
570 | + psl "^1.1.28" | ||
571 | + punycode "^2.1.1" | ||
572 | + | ||
573 | +tough-cookie@~2.4.3: | ||
574 | + version "2.4.3" | ||
575 | + resolved "http://npm.yohops.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" | ||
576 | + dependencies: | ||
577 | + psl "^1.1.24" | ||
578 | + punycode "^1.4.1" | ||
579 | + | ||
580 | +triple-beam@^1.2.0, triple-beam@^1.3.0: | ||
581 | + version "1.3.0" | ||
582 | + resolved "http://npm.yohops.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" | ||
583 | + | ||
584 | +tunnel-agent@^0.6.0: | ||
585 | + version "0.6.0" | ||
586 | + resolved "http://npm.yohops.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" | ||
587 | + dependencies: | ||
588 | + safe-buffer "^5.0.1" | ||
589 | + | ||
590 | +tweetnacl@^0.14.3, tweetnacl@~0.14.0: | ||
591 | + version "0.14.5" | ||
592 | + resolved "http://npm.yohops.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" | ||
593 | + | ||
594 | +uri-js@^4.2.2: | ||
595 | + version "4.2.2" | ||
596 | + resolved "http://npm.yohops.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" | ||
597 | + dependencies: | ||
598 | + punycode "^2.1.0" | ||
599 | + | ||
600 | +util-deprecate@^1.0.1, util-deprecate@~1.0.1: | ||
601 | + version "1.0.2" | ||
602 | + resolved "http://npm.yohops.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" | ||
603 | + | ||
604 | +uuid@^3.3.2: | ||
605 | + version "3.3.2" | ||
606 | + resolved "http://npm.yohops.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" | ||
607 | + | ||
608 | +verror@1.10.0: | ||
609 | + version "1.10.0" | ||
610 | + resolved "http://npm.yohops.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" | ||
611 | + dependencies: | ||
612 | + assert-plus "^1.0.0" | ||
613 | + core-util-is "1.0.2" | ||
614 | + extsprintf "^1.2.0" | ||
615 | + | ||
616 | +winston-compat@^0.1.4: | ||
617 | + version "0.1.4" | ||
618 | + resolved "http://npm.yohops.com/winston-compat/-/winston-compat-0.1.4.tgz#599b4ce807ffe728713ecc25ede3f6b89425b739" | ||
619 | + dependencies: | ||
620 | + cycle "~1.0.3" | ||
621 | + logform "^1.6.0" | ||
622 | + triple-beam "^1.2.0" | ||
623 | + | ||
624 | +winston-daily-rotate-file@^3.8.0: | ||
625 | + version "3.8.0" | ||
626 | + resolved "http://npm.yohops.com/winston-daily-rotate-file/-/winston-daily-rotate-file-3.8.0.tgz#887de6dcfad798374d4f4ed0598afd587541ffa4" | ||
627 | + dependencies: | ||
628 | + file-stream-rotator "^0.4.1" | ||
629 | + object-hash "^1.3.0" | ||
630 | + semver "^5.6.0" | ||
631 | + triple-beam "^1.3.0" | ||
632 | + winston-compat "^0.1.4" | ||
633 | + winston-transport "^4.2.0" | ||
634 | + | ||
635 | +winston-transport@^4.2.0, winston-transport@^4.3.0: | ||
636 | + version "4.3.0" | ||
637 | + resolved "http://npm.yohops.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66" | ||
638 | + dependencies: | ||
639 | + readable-stream "^2.3.6" | ||
640 | + triple-beam "^1.2.0" | ||
641 | + | ||
642 | +winston@^3.2.1: | ||
643 | + version "3.2.1" | ||
644 | + resolved "http://npm.yohops.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07" | ||
645 | + dependencies: | ||
646 | + async "^2.6.1" | ||
647 | + diagnostics "^1.1.1" | ||
648 | + is-stream "^1.1.0" | ||
649 | + logform "^2.1.1" | ||
650 | + one-time "0.0.4" | ||
651 | + readable-stream "^3.1.1" | ||
652 | + stack-trace "0.0.x" | ||
653 | + triple-beam "^1.3.0" | ||
654 | + winston-transport "^4.3.0" | ||
655 | + | ||
656 | +yoho-md5@^2.1.0: | ||
657 | + version "2.1.0" | ||
658 | + resolved "http://npm.yohops.com/yoho-md5/-/yoho-md5-2.1.0.tgz#f0c00d343f775e77952ebce0826863ac52e0ad50" |
-
Please register or login to post a comment