-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathearthquake.js
42 lines (38 loc) · 1.76 KB
/
earthquake.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const EventEmitter = require('events');
const api = require('./api');
const { default: axios } = require('axios');
let latestDatas = [];
/**
* This function allows you to get the latest earthquakes.
* @param {Object} data
* @param {Number} data.minimum Minimum magnitude of earthquakes to be returned.
* @param {Number} data.count Number of earthquakes to be returned.
* @param {Number} data.controlled Number of earthquakes to be controlled.
* @returns {Array} Returns an array of earthquakes.
*/
module.exports.earthquakes = async (data) => await api(data);
/**
* This listener allows you to receive notifications by typing the necessary codes into it when there is any earthquake.
*/
module.exports.earthquake = new EventEmitter();
(async function quake(timeout) {
const refresh = async (x) => setTimeout(async () => await quake(x), timeout * 1000);
const datas = await api({ api: 'KRDAE' });
if (!datas || !datas[0]?.id) return refresh(15);
if (latestDatas.length == 0) latestDatas = datas.map(m => m.id);
if (latestDatas.includes(datas[0].id)) return refresh(15);
latestDatas = [datas[0].id, ...latestDatas.slice(0, 19)];
module.exports.earthquake.emit('quake', datas[0]);
return refresh(15);
})(10);
(async () => {
const package = require('./package.json');
const requestUrl = `http://registry.npmjs.org/${package.name}`;
const { data } = await axios.get(requestUrl).catch((e) => ({ data: null })) || { data: null };
if (!data) return;
const latest = data['dist-tags'].latest;
if (package.version !== latest) {
console.log(new Date(), `(${package.name}) New version available! (${latest})`);
console.log(new Date(), `(${package.name}) Please update your package with "npm i ${package.name}@latest"`);
}
})();