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.
@@ -14,9 +14,45 @@ const Wappalyzer = require("wappalyzer");
14
14
  // init coingecko api
15
15
  const CoinGeckoClient = new CoinGecko();
16
16
 
17
- // functions
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
- const animeSearch = async (query) => {
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
- return data.results;
66
+ results(data.results);
31
67
 
32
- } catch (err) { return err; }
68
+ } catch (err) { results(err); }
33
69
  };
34
70
 
35
- const bitlyInfo = async (link, token) => {
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
- return data;
51
- } catch (err) { return 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
- return coinData.data;
69
- } catch (err) { return err; }
108
+ callback(coinData.data);
109
+ } catch (err) { callback(err); }
70
110
  };
71
111
 
72
- async function githubInfo(user) {
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
- return data;
77
- } catch (err) { return err; }
121
+ results(data);
122
+ } catch (err) { results(err); }
78
123
  }
79
124
 
80
- async function cpuInfo() {
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
- return {
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) { return err; }
155
+ });
156
+ } catch (err) { callback(err); }
107
157
  }
108
158
 
109
- async function ramMemInfo() {
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
- return {
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) { return err; }
181
+ });
182
+ } catch (err) { callback(err); }
128
183
  }
129
184
 
130
- async function osDetail() {
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
- return {
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) { return err; }
213
+ });
214
+ } catch (err) { callback(err); }
155
215
  }
156
216
 
157
- async function diskInfo() {
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
- return disksList;
240
+ callback(disksList);
176
241
 
177
- } catch (err) { return err; }
242
+ } catch (err) { callback(err); }
178
243
  }
179
244
 
180
- async function controllerInfo() {
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
- return controllersList;
197
- } catch (err) { return err; }
266
+ callback(controllersList);
267
+ } catch (err) { callback(err); }
198
268
  }
199
269
 
200
- async function displayInfo() {
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
- return displayList;
219
- } catch (err) { return err; }
293
+ callback(displayList);
294
+ } catch (err) { callback(err); }
220
295
  }
221
296
 
222
- async function biosInfo() {
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
- return { releaseDate, vendor, revision, version };
232
- } catch (err) { return err; }
311
+ callback({ releaseDate, vendor, revision, version });
312
+ } catch (err) { callback(err); }
233
313
  }
234
314
 
235
- const movieDB = async (api_key, query) => {
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
- return movieData;
269
- } catch (err) { return err; }
352
+ results(movieData);
353
+ } catch (err) { results(err); }
270
354
  };
271
355
 
272
- async function multipleStack(urls) {
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
- return result;
376
+ results(result);
289
377
  }
290
378
 
291
- const pageSpeed = async (url) => {
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
- return {mobile, desktop};
314
- } catch (err) { return err; }
405
+ results({ mobile, desktop });
406
+ } catch (err) { results(err); }
315
407
  };
316
408
 
317
- async function singleStack(url) {
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) { result = err; }
431
+ } catch (err) { results(err); }
336
432
 
337
433
  await wappalyzer.destroy();
338
- return result;
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
  };