authenticator-clui
Version:
A simple command-line authenticator with encryption (import accounts from Google Authenticator, Microsoft Authenticator and Facebook Authenticator)
499 lines (493 loc) • 13.5 kB
JavaScript
const moment = require('moment');
const rp = require('request-promise');
const _ = require('lodash');
const packages = [
{
"name": "etstatic",
"private": false,
"settings": null,
"created": {
"ts": 1519811577114,
"rel": "4 years ago"
},
"updated": {
"ts": 1519811577114,
"rel": "4 years ago"
},
"description": "A simple static file server middleware n",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.3"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2018-02-28T12:50:42.051Z",
"formattedTime": "4 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1519822242051,
"rel": "4 years ago"
},
"version": "1.0.3"
},
{
"name": "http-webnode",
"private": false,
"settings": null,
"created": {
"ts": 1519973128104,
"rel": "4 years ago"
},
"updated": {
"ts": 1519973128104,
"rel": "4 years ago"
},
"description": "A simple zero-configuration command-line static web server with custom error file, also serve single page application like angular 2/4/5 over http/https.",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.1"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2018-03-02T06:46:15.772Z",
"formattedTime": "4 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1519973175772,
"rel": "4 years ago"
},
"version": "1.0.1"
},
{
"name": "input-data-decoder-ethereum",
"private": false,
"settings": null,
"created": {
"ts": 1522841082410,
"rel": "3 years ago"
},
"updated": {
"ts": 1522841082410,
"rel": "3 years ago"
},
"description": "ethereum transaction input data decoder",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "0.0.2"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2018-04-04T11:29:58.337Z",
"formattedTime": "3 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1522841398337,
"rel": "3 years ago"
},
"version": "0.0.2"
},
{
"name": "follow-redirect-url",
"private": false,
"settings": null,
"created": {
"ts": 1550358795275,
"rel": "3 years ago"
},
"updated": {
"ts": 1550358798535,
"rel": "3 years ago"
},
"description": "A simple command-line utility that lets you follow redirects to see where http URLs end up. Useful for shortened URLs.",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.5"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2019-02-17T11:56:19.750Z",
"formattedTime": "3 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1550404579750,
"rel": "3 years ago"
},
"version": "1.0.5"
},
{
"name": "timestamp-mongoose",
"private": false,
"settings": null,
"created": {
"ts": 1564158503794,
"rel": "2 years ago"
},
"updated": {
"ts": 1564158608775,
"rel": "2 years ago"
},
"description": "Mongoose plugin that automatically adds createdAt and updatedAt date properties",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "0.0.2"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2019-07-27T07:25:37.802Z",
"formattedTime": "2 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1564212337802,
"rel": "2 years ago"
},
"version": "0.0.2"
},
{
"name": "city-timezones-offset",
"private": false,
"settings": null,
"created": {
"ts": 1565241980389,
"rel": "2 years ago"
},
"updated": {
"ts": 1565241983696,
"rel": "2 years ago"
},
"description": "A lightweight module to get timezones and offset for a particular city",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "0.0.2"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2019-08-08T05:30:49.955Z",
"formattedTime": "2 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1565242249955,
"rel": "2 years ago"
},
"version": "0.0.2"
},
{
"name": "pm2-logrotate-s3",
"private": false,
"settings": null,
"created": {
"ts": 1576406476051,
"rel": "2 years ago"
},
"updated": {
"ts": 1576406479984,
"rel": "2 years ago"
},
"description": "Module to rotate logs of every pm2 application and also upload to s3",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "3.0.3"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2021-03-01T11:32:18.958Z",
"formattedTime": "7 months ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1614598338958,
"rel": "7 months ago"
},
"version": "3.0.3"
},
{
"name": "nodegitlib",
"private": false,
"settings": null,
"created": {
"ts": 1583663245789,
"rel": "2 years ago"
},
"updated": {
"ts": 1583663248693,
"rel": "2 years ago"
},
"description": "A tool to play with git within node project",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.2"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2020-03-08T13:59:41.776Z",
"formattedTime": "2 years ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1583675981776,
"rel": "2 years ago"
},
"version": "1.0.2"
},
{
"name": "knexcache",
"private": false,
"settings": null,
"created": {
"ts": 1592309343948,
"rel": "a year ago"
},
"updated": {
"ts": 1592309346443,
"rel": "a year ago"
},
"description": "Events and Redis based caching service for Knex, Cache frequently use knex query result in Redis with TTL ",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.0"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2020-06-16T12:09:04.212Z",
"formattedTime": "a year ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1592309344212,
"rel": "a year ago"
},
"version": "1.0.0"
},
{
"name": "infeedohello",
"private": false,
"settings": null,
"created": {
"ts": 1614838904532,
"rel": "6 months ago"
},
"updated": {
"ts": 1614838907025,
"rel": "6 months ago"
},
"description": "Basic Hello Program",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.1"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2021-03-04T06:27:26.080Z",
"formattedTime": "6 months ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1614839246080,
"rel": "6 months ago"
},
"version": "1.0.1"
},
{
"name": "aws-redshift",
"private": false,
"settings": null,
"created": {
"ts": 1614928874969,
"rel": "6 months ago"
},
"updated": {
"ts": 1614928877671,
"rel": "6 months ago"
},
"description": "A simple collection of tools to help you get started with Amazon Redshift from node.js",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.1"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2021-03-05T10:39:42.012Z",
"formattedTime": "6 months ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1614940782012,
"rel": "6 months ago"
},
"version": "1.0.1"
},
{
"name": "authenticator-clui",
"private": false,
"settings": null,
"created": {
"ts": 1631533369943,
"rel": "5 days ago"
},
"updated": {
"ts": 1631533505193,
"rel": "5 days ago"
},
"description": "A simple command-line authenticator (import accounts from Google Authenticator, Microsoft Authenticator and Facebook Authenticator)",
"maintainers": [
"tauseefnaqvi"
],
"dist-tags": {
"latest": "1.0.3"
},
"lastPublish": {
"maintainer": "tauseefnaqvi",
"time": "2021-09-16T23:05:42.810Z",
"formattedTime": "a day ago"
},
"types": {},
"publisher": {
"name": "tauseefnaqvi",
"avatars": {},
"created": {
"ts": null,
"rel": "Invalid date"
}
},
"date": {
"ts": 1631833542810,
"rel": "a day ago"
},
"version": "1.0.3"
}
];
const DATE_FORMAT = 'YYYY-MM-DD';
const CURRENT_DATE = moment().format(DATE_FORMAT);
const getStats = async () => {
let packages_stats = []
for (let package of packages) {
const created = moment(package.created.ts).format(DATE_FORMAT);
const name = package.name;
const url = `https://npm-stat.com/api/download-counts?package=${name}&from=${created}&until=${CURRENT_DATE}`;
let date_stat_map = await rp(url, { json: true });
date_stat_map = date_stat_map[name];
let total_stats = 0;
for (let date in date_stat_map) {
total_stats += date_stat_map[date];
}
packages_stats.push({ name, created, total_stats })
}
packages_stats = _.orderBy(packages_stats, 'total_stats', 'desc')
console.log(packages_stats);
}
getStats()