stack-analyze 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/{about/index.js → about.js} +6 -4
- package/cli.js +12 -11
- package/env/bitly.env.js +1 -0
- package/env/movie.env.js +1 -0
- package/env/twitchID.env.js +1 -0
- package/functions/animeInfo.js +9 -39
- package/functions/bitly.js +8 -9
- package/functions/cryptoList.js +9 -38
- package/functions/gitUser.js +6 -9
- package/functions/hardware.js +32 -24
- package/functions/moviesInfo.js +10 -38
- package/functions/multipleStack.js +9 -29
- package/functions/pageSpeed.js +13 -13
- package/functions/singleStack.js +9 -32
- package/functions/twitch.js +46 -0
- package/hash/aboutOpts.js +9 -11
- package/hash/hardwareTools.js +3 -3
- package/hash/infoTools.js +46 -24
- package/hash/mainTools.js +9 -9
- package/{index.js → index.cjs} +167 -52
- package/index.mjs +474 -0
- package/models/aboutTables.js +2 -2
- package/models/animeTable.js +33 -0
- package/models/cryptoTables.js +32 -0
- package/models/hardwareTables.js +87 -0
- package/models/movieTables.js +33 -0
- package/models/stackTables.js +23 -0
- package/models/twitchTables.js +28 -0
- package/package.json +16 -9
package/{index.js → index.cjs}
RENAMED
|
@@ -14,9 +14,45 @@ const Wappalyzer = require("wappalyzer");
|
|
|
14
14
|
// init coingecko api
|
|
15
15
|
const CoinGeckoClient = new CoinGecko();
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {Object} anime
|
|
19
|
+
* @property {string} anime.query
|
|
20
|
+
* @property {function(data): void} anime.results
|
|
21
|
+
*
|
|
22
|
+
* @typedef {Object} bitly
|
|
23
|
+
* @property {string} bitly.link
|
|
24
|
+
* @property {string} bitly.token
|
|
25
|
+
* @property {function(data): void} bitly.results
|
|
26
|
+
*
|
|
27
|
+
* @typedef {Object} github
|
|
28
|
+
* @property {string} github.user
|
|
29
|
+
* @property {string} github.results
|
|
30
|
+
*
|
|
31
|
+
* @typedef {Object} movie
|
|
32
|
+
* @property {string} movie.api_key
|
|
33
|
+
* @property {string} movie.query
|
|
34
|
+
* @property {function(data): void} movie.results
|
|
35
|
+
*
|
|
36
|
+
* @typedef {Object} multiple
|
|
37
|
+
* @property {string[]} multiple.urls
|
|
38
|
+
* @property {function(data): void} multiple.results
|
|
39
|
+
*
|
|
40
|
+
* @typedef {Object} stack
|
|
41
|
+
* @property {string} stack.urls
|
|
42
|
+
* @property {function(data): void} stack.results
|
|
43
|
+
*
|
|
44
|
+
* @typedef {Object} twitch
|
|
45
|
+
* @property {string} twitch.query
|
|
46
|
+
* @property {string} twitch.token
|
|
47
|
+
* @property {string} twitch.clientID
|
|
48
|
+
* @property {function(data): void} twitch.results
|
|
49
|
+
*/
|
|
18
50
|
|
|
19
|
-
|
|
51
|
+
/**
|
|
52
|
+
* @param {anime} {query, results}
|
|
53
|
+
* @returns {Promise<void>}
|
|
54
|
+
*/
|
|
55
|
+
const animeSearch = async ({ query, results }) => {
|
|
20
56
|
/* error manager */
|
|
21
57
|
try {
|
|
22
58
|
// call api
|
|
@@ -27,12 +63,16 @@ const animeSearch = async (query) => {
|
|
|
27
63
|
}
|
|
28
64
|
});
|
|
29
65
|
|
|
30
|
-
|
|
66
|
+
results(data.results);
|
|
31
67
|
|
|
32
|
-
} catch (err) {
|
|
68
|
+
} catch (err) { results(err); }
|
|
33
69
|
};
|
|
34
70
|
|
|
35
|
-
|
|
71
|
+
/**
|
|
72
|
+
* @param {bitly} {link, token, results}
|
|
73
|
+
* @returns {Promise<void>}
|
|
74
|
+
*/
|
|
75
|
+
const bitlyInfo = async ({ link, token, results }) => {
|
|
36
76
|
try {
|
|
37
77
|
const { data } = await axios.post(
|
|
38
78
|
"https://api-ssl.bitly.com/v4/expand",
|
|
@@ -47,17 +87,17 @@ const bitlyInfo = async (link, token) => {
|
|
|
47
87
|
}
|
|
48
88
|
);
|
|
49
89
|
|
|
50
|
-
|
|
51
|
-
} catch (err) {
|
|
90
|
+
results(data);
|
|
91
|
+
} catch (err) { results(err); }
|
|
52
92
|
};
|
|
53
93
|
|
|
54
|
-
|
|
94
|
+
/**
|
|
55
95
|
*
|
|
56
96
|
* @descripiton call the crypto market list
|
|
97
|
+
* @param {function(data): void} callback
|
|
57
98
|
* @returns { Promise<void> } - return results search
|
|
58
|
-
*
|
|
59
99
|
*/
|
|
60
|
-
const cryptoMarket = async () => {
|
|
100
|
+
const cryptoMarket = async (callback) => {
|
|
61
101
|
try {
|
|
62
102
|
// start crypto
|
|
63
103
|
const coinData = await CoinGeckoClient.coins.markets({
|
|
@@ -65,19 +105,29 @@ const cryptoMarket = async () => {
|
|
|
65
105
|
});
|
|
66
106
|
|
|
67
107
|
// map coinData
|
|
68
|
-
|
|
69
|
-
} catch (err) {
|
|
108
|
+
callback(coinData.data);
|
|
109
|
+
} catch (err) { callback(err); }
|
|
70
110
|
};
|
|
71
111
|
|
|
72
|
-
|
|
112
|
+
/**
|
|
113
|
+
*
|
|
114
|
+
* @param {github} {user, results}
|
|
115
|
+
* @returns {Promise<void>}
|
|
116
|
+
*/
|
|
117
|
+
async function githubInfo({ user, results }) {
|
|
73
118
|
try {
|
|
74
119
|
const { data } = await axios.get(`https://api.github.com/users/${user}`);
|
|
75
120
|
|
|
76
|
-
|
|
77
|
-
} catch (err) {
|
|
121
|
+
results(data);
|
|
122
|
+
} catch (err) { results(err); }
|
|
78
123
|
}
|
|
79
124
|
|
|
80
|
-
|
|
125
|
+
/**
|
|
126
|
+
*
|
|
127
|
+
* @param {function(data): void} callback
|
|
128
|
+
* @returns {Promise<void>}
|
|
129
|
+
*/
|
|
130
|
+
async function cpuInfo(callback) {
|
|
81
131
|
try {
|
|
82
132
|
const {
|
|
83
133
|
manufacturer,
|
|
@@ -92,7 +142,7 @@ async function cpuInfo() {
|
|
|
92
142
|
} = await cpu();
|
|
93
143
|
|
|
94
144
|
// show results
|
|
95
|
-
|
|
145
|
+
callback({
|
|
96
146
|
manufacturer,
|
|
97
147
|
brand,
|
|
98
148
|
speed,
|
|
@@ -102,11 +152,16 @@ async function cpuInfo() {
|
|
|
102
152
|
vendor,
|
|
103
153
|
family,
|
|
104
154
|
model
|
|
105
|
-
};
|
|
106
|
-
} catch (err) {
|
|
155
|
+
});
|
|
156
|
+
} catch (err) { callback(err); }
|
|
107
157
|
}
|
|
108
158
|
|
|
109
|
-
|
|
159
|
+
/**
|
|
160
|
+
*
|
|
161
|
+
* @param {function(data): void} callback
|
|
162
|
+
* @returns {Promise<void>}
|
|
163
|
+
*/
|
|
164
|
+
async function ramMemInfo(callback) {
|
|
110
165
|
try {
|
|
111
166
|
const {
|
|
112
167
|
total,
|
|
@@ -117,17 +172,22 @@ async function ramMemInfo() {
|
|
|
117
172
|
} = await mem();
|
|
118
173
|
|
|
119
174
|
// show results
|
|
120
|
-
|
|
175
|
+
callback({
|
|
121
176
|
total_mem: `${(total / 1073741824).toFixed(2)} GB`,
|
|
122
177
|
free_mem: `${(free / 1073741824).toFixed(2)} GB`,
|
|
123
178
|
used_mem: `${(used / 1073741824).toFixed(2)} GB`,
|
|
124
179
|
active_mem: `${(active / 1073741824).toFixed(2)} GB`,
|
|
125
180
|
available_mem: `${(available / 1073741824).toFixed(2)} GB`
|
|
126
|
-
};
|
|
127
|
-
} catch (err) {
|
|
181
|
+
});
|
|
182
|
+
} catch (err) { callback(err); }
|
|
128
183
|
}
|
|
129
184
|
|
|
130
|
-
|
|
185
|
+
/**
|
|
186
|
+
*
|
|
187
|
+
* @param {function(data): void} callback
|
|
188
|
+
* @returns {Promise<void>}
|
|
189
|
+
*/
|
|
190
|
+
async function osDetail(callback) {
|
|
131
191
|
try {
|
|
132
192
|
const {
|
|
133
193
|
hostname,
|
|
@@ -141,7 +201,7 @@ async function osDetail() {
|
|
|
141
201
|
} = await osInfo();
|
|
142
202
|
|
|
143
203
|
// show results
|
|
144
|
-
|
|
204
|
+
callback({
|
|
145
205
|
hostname,
|
|
146
206
|
platform,
|
|
147
207
|
distro,
|
|
@@ -150,11 +210,16 @@ async function osDetail() {
|
|
|
150
210
|
arch,
|
|
151
211
|
serial,
|
|
152
212
|
uefi
|
|
153
|
-
};
|
|
154
|
-
} catch (err) {
|
|
213
|
+
});
|
|
214
|
+
} catch (err) { callback(err); }
|
|
155
215
|
}
|
|
156
216
|
|
|
157
|
-
|
|
217
|
+
/**
|
|
218
|
+
*
|
|
219
|
+
* @param {function(data): void} callback
|
|
220
|
+
* @returns {Promise<void>}
|
|
221
|
+
*/
|
|
222
|
+
async function diskInfo(callback) {
|
|
158
223
|
try {
|
|
159
224
|
const disks = await diskLayout();
|
|
160
225
|
|
|
@@ -172,12 +237,17 @@ async function diskInfo() {
|
|
|
172
237
|
interfaceType
|
|
173
238
|
}));
|
|
174
239
|
|
|
175
|
-
|
|
240
|
+
callback(disksList);
|
|
176
241
|
|
|
177
|
-
} catch (err) {
|
|
242
|
+
} catch (err) { callback(err); }
|
|
178
243
|
}
|
|
179
244
|
|
|
180
|
-
|
|
245
|
+
/**
|
|
246
|
+
*
|
|
247
|
+
* @param {function(data): void} callback
|
|
248
|
+
* @returns {Promise<void>}
|
|
249
|
+
*/
|
|
250
|
+
async function controllerInfo(callback) {
|
|
181
251
|
try {
|
|
182
252
|
const { controllers } = await graphics();
|
|
183
253
|
|
|
@@ -193,11 +263,16 @@ async function controllerInfo() {
|
|
|
193
263
|
: `${(vram / 1024).toFixed(2)} GB`
|
|
194
264
|
}));
|
|
195
265
|
|
|
196
|
-
|
|
197
|
-
} catch (err) {
|
|
266
|
+
callback(controllersList);
|
|
267
|
+
} catch (err) { callback(err); }
|
|
198
268
|
}
|
|
199
269
|
|
|
200
|
-
|
|
270
|
+
/**
|
|
271
|
+
*
|
|
272
|
+
* @param {function(data): void} callback
|
|
273
|
+
* @returns {Promise<void>}
|
|
274
|
+
*/
|
|
275
|
+
async function displayInfo(callback) {
|
|
201
276
|
try {
|
|
202
277
|
const { displays } = await graphics();
|
|
203
278
|
|
|
@@ -215,11 +290,16 @@ async function displayInfo() {
|
|
|
215
290
|
resolutionY
|
|
216
291
|
}));
|
|
217
292
|
|
|
218
|
-
|
|
219
|
-
} catch (err) {
|
|
293
|
+
callback(displayList);
|
|
294
|
+
} catch (err) { callback(err); }
|
|
220
295
|
}
|
|
221
296
|
|
|
222
|
-
|
|
297
|
+
/**
|
|
298
|
+
*
|
|
299
|
+
* @param {function(data): void} callback
|
|
300
|
+
* @returns {Promise<void>}
|
|
301
|
+
*/
|
|
302
|
+
async function biosInfo(callback) {
|
|
223
303
|
try {
|
|
224
304
|
const {
|
|
225
305
|
releaseDate,
|
|
@@ -228,11 +308,15 @@ async function biosInfo() {
|
|
|
228
308
|
version
|
|
229
309
|
} = await bios();
|
|
230
310
|
|
|
231
|
-
|
|
232
|
-
} catch (err) {
|
|
311
|
+
callback({ releaseDate, vendor, revision, version });
|
|
312
|
+
} catch (err) { callback(err); }
|
|
233
313
|
}
|
|
234
314
|
|
|
235
|
-
|
|
315
|
+
/**
|
|
316
|
+
* @param {movie} {api_key, query, results}
|
|
317
|
+
* @returns {Promise<void>} void results
|
|
318
|
+
*/
|
|
319
|
+
const movieDB = async ({ api_key, query, results }) => {
|
|
236
320
|
try {
|
|
237
321
|
const { data } = await axios.get("https://api.themoviedb.org/3/search/movie", {
|
|
238
322
|
params: {
|
|
@@ -265,11 +349,15 @@ const movieDB = async (api_key, query) => {
|
|
|
265
349
|
})
|
|
266
350
|
.filter(({ release_date }) => release_date !== undefined && release_date !== "");
|
|
267
351
|
|
|
268
|
-
|
|
269
|
-
} catch (err) {
|
|
352
|
+
results(movieData);
|
|
353
|
+
} catch (err) { results(err); }
|
|
270
354
|
};
|
|
271
355
|
|
|
272
|
-
|
|
356
|
+
/**
|
|
357
|
+
* @param {multiple} {urls, results}
|
|
358
|
+
* @returns {Promise<void>}
|
|
359
|
+
*/
|
|
360
|
+
async function multipleStack({ urls, results }) {
|
|
273
361
|
let result;
|
|
274
362
|
const wappalyzer = new Wappalyzer();
|
|
275
363
|
try {
|
|
@@ -285,10 +373,14 @@ async function multipleStack(urls) {
|
|
|
285
373
|
);
|
|
286
374
|
} catch (err) { result = err; }
|
|
287
375
|
await wappalyzer.destroy();
|
|
288
|
-
|
|
376
|
+
results(result);
|
|
289
377
|
}
|
|
290
378
|
|
|
291
|
-
|
|
379
|
+
/**
|
|
380
|
+
* @param {stack} {url, results}
|
|
381
|
+
* @returns {Promise<void>}
|
|
382
|
+
*/
|
|
383
|
+
const pageSpeed = async ({ url, results }) => {
|
|
292
384
|
try {
|
|
293
385
|
const resMobile = await axios.get("https://www.googleapis.com/pagespeedonline/v5/runPagespeed", {
|
|
294
386
|
params: {
|
|
@@ -310,11 +402,15 @@ const pageSpeed = async (url) => {
|
|
|
310
402
|
const mobile = Math.round(resMobile.data.lighthouseResult.categories.performance.score * 100);
|
|
311
403
|
const desktop = Math.round(resDesktop.data.lighthouseResult.categories.performance.score * 100);
|
|
312
404
|
|
|
313
|
-
|
|
314
|
-
} catch (err) {
|
|
405
|
+
results({ mobile, desktop });
|
|
406
|
+
} catch (err) { results(err); }
|
|
315
407
|
};
|
|
316
408
|
|
|
317
|
-
|
|
409
|
+
/**
|
|
410
|
+
* @param {stack} {url, results}
|
|
411
|
+
* @returns {Promise<void>}
|
|
412
|
+
*/
|
|
413
|
+
async function singleStack({ url, results }) {
|
|
318
414
|
const wappalyzer = await new Wappalyzer;
|
|
319
415
|
|
|
320
416
|
let result;
|
|
@@ -332,15 +428,33 @@ async function singleStack(url) {
|
|
|
332
428
|
techWebsite: website,
|
|
333
429
|
techCategories: categories.map(({ name }) => name).join(", ")
|
|
334
430
|
}));
|
|
335
|
-
} catch (err) {
|
|
431
|
+
} catch (err) { results(err); }
|
|
336
432
|
|
|
337
433
|
await wappalyzer.destroy();
|
|
338
|
-
|
|
434
|
+
results(result);
|
|
339
435
|
}
|
|
340
436
|
|
|
437
|
+
/**
|
|
438
|
+
*
|
|
439
|
+
* @param {twitch} { query, token, clientID, results }
|
|
440
|
+
* @returns {Promise<void>}
|
|
441
|
+
*/
|
|
442
|
+
async function twitchInfo({ query, token, clientID, results }) {
|
|
443
|
+
try {
|
|
444
|
+
const { data: twitchData } = await axios.get(`https://api.twitch.tv/helix/users?login=${query}`,
|
|
445
|
+
{
|
|
446
|
+
headers: {
|
|
447
|
+
Authorization: `Bearer ${token}`,
|
|
448
|
+
"Client-Id": clientID
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
results(twitchData.data);
|
|
453
|
+
} catch (err) { results(err); }
|
|
454
|
+
}
|
|
341
455
|
|
|
342
456
|
// exports
|
|
343
|
-
exports = {
|
|
457
|
+
module.exports = {
|
|
344
458
|
animeSearch,
|
|
345
459
|
bitlyInfo,
|
|
346
460
|
cryptoMarket,
|
|
@@ -355,5 +469,6 @@ exports = {
|
|
|
355
469
|
movieDB,
|
|
356
470
|
multipleStack,
|
|
357
471
|
pageSpeed,
|
|
358
|
-
singleStack
|
|
472
|
+
singleStack,
|
|
473
|
+
twitchInfo
|
|
359
474
|
};
|