{"version":3,"sources":["jsdelivr-header.js","/npm/@rysun/package-health-checker@1.0.5/lib/cjs/index.js"],"names":[],"mappings":"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","file":"/npm/@rysun/package-health-checker@1.0.5/lib/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@rysun/package-health-checker@1.0.5/lib/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commander_1 = require(\"commander\");\nconst path_1 = __importDefault(require(\"path\"));\nconst fs_1 = require(\"fs\");\nconst axios_1 = __importDefault(require(\"axios\"));\nconst git_url_parse_1 = __importDefault(require(\"git-url-parse\"));\nconst generateHTML_1 = require(\"./generateHTML\");\nconst child_process_1 = require(\"child_process\");\nconst readPackageJson = async (dir) => {\n    const file = dir.endsWith('package.json')\n        ? dir\n        : path_1.default.join(dir, 'package.json');\n    const json = await fs_1.promises.readFile(file, { encoding: 'utf8' });\n    return JSON.parse(json);\n};\nlet count = 0;\nconst loadingInterval = setInterval(() => {\n    const spinner = ['-', '\\\\', '|', '/']; // rotating set of characters\n    const loadingText = `Loading ${spinner[count % spinner.length]}`;\n    process.stdout.write(`${loadingText}\\r`); // use \\r to overwrite the same line\n    count++;\n}, 100);\nconst getIssuesCount = async (owner, pack_name) => {\n    try {\n        const response = await axios_1.default.get(`https://api.github.com/search/issues?q=repo:${owner}/${pack_name}+type:issue+state:closed`);\n        return response.data;\n    }\n    catch (error) {\n        if (error.response.status === 403 && error.response.data.message.includes(\"API rate limit exceeded\")) {\n            const resetTime = new Date(error.response.headers['x-ratelimit-reset'] * 1000);\n            console.log(`Rate limit exceeded. Waiting until ${resetTime.toLocaleTimeString()} before retrying...`);\n            await new Promise(resolve => setTimeout(resolve, (resetTime.getTime() - Date.now()) + 1000));\n            return await getIssuesCount(owner, pack_name); // Retry after the delay\n        }\n        else if (error.response.status === 422 && error.response.data.message.includes(\"Validation Failed\")) {\n            const repoResponse = await axios_1.default.get(`https://api.github.com/repos/${owner}/${pack_name}`);\n            const repoOwner = (0, git_url_parse_1.default)(repoResponse.data.html_url).owner;\n            const repoName = (0, git_url_parse_1.default)(repoResponse.data.html_url).name;\n            return await getIssuesCount(repoOwner, repoName);\n        }\n        else {\n            throw new Error(error.response.data.message);\n        }\n    }\n};\nconst checkLastModifiedDate = (modifiedDate) => {\n    const currDate = new Date();\n    const date = new Date(modifiedDate);\n    const diffTime = Math.abs(currDate - date);\n    const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n    const months = Math.floor(diffDays / 30);\n    const years = Math.floor(months / 12);\n    let msg = \"\";\n    if (months === 0) {\n        msg = `${diffDays} days ago`;\n    }\n    else if (years > 0) {\n        msg = `${years} years ago`;\n    }\n    else {\n        msg = `${months} months ago`;\n    }\n    const isThreeMonthAgo = months > 3 || years > 0;\n    return [msg, isThreeMonthAgo];\n};\nconst getDetails = async (data, name, version) => {\n    let packageData = {};\n    for (let i of data) {\n        if (i.package.name && name && i.package.name === name) {\n            let issueData;\n            if (i.package.links.repository) {\n                const pack_name = (0, git_url_parse_1.default)(i.package.links.repository).name;\n                const owner = (0, git_url_parse_1.default)(i.package.links.repository).owner;\n                issueData = await getIssuesCount(owner, pack_name);\n            }\n            const downloadCount = await axios_1.default.get(`https://api.npmjs.org/downloads/point/last-week/${name}`);\n            const [msg, isThreeMonthAgo] = checkLastModifiedDate(i.package.date);\n            packageData = {\n                'git_url': i.package.links.repository ? i.package.links.repository : \"\",\n                'npm_url': i.package.links.npm,\n                'downloaded_version': version.replace(/^\\D+/g, ''),\n                'curr_version': i.package.version,\n                'last_published': msg,\n                'open_issues': issueData?.total_count ? issueData.total_count : \"\",\n                'weekly_downloads': downloadCount.data.downloads,\n                'isThreeMonthAgo': isThreeMonthAgo,\n                'quality': i.score.detail.quality,\n                \"popularity\": i.score.detail.popularity,\n                \"maintenance\": i.score.detail.maintenance,\n                \"final\": i.score.final\n            };\n        }\n    }\n    return packageData;\n};\nconst upgrade = async (packageJson) => {\n    let packageData = {};\n    const DependencyList = ['peerDependencies', 'devDependencies', 'dependencies'];\n    for (let a of DependencyList) {\n        const packages = packageJson[a];\n        const entries = packages ? Object.entries(packages) : [];\n        for (const [name, version] of entries) {\n            const data = await axios_1.default.get(`https://registry.npmjs.org/-/v1/search?text=${name}`);\n            if (data) {\n                packageData[name] = await getDetails(data.data.objects, name, version);\n            }\n        }\n    }\n    console.log(\"dependencies\", DependencyList);\n    const htmlData = (0, generateHTML_1.createHTMLTemplate)(packageData);\n    await fs_1.promises.writeFile(`./report.html`, htmlData);\n    (0, child_process_1.exec)(`start \"\" \"./report.html\"`);\n};\n(async () => {\n    const packageJsonFile = commander_1.program.path || process.cwd();\n    const packageJson = await readPackageJson(packageJsonFile);\n    await upgrade(packageJson);\n    clearInterval(loadingInterval); // stop the loading animation\n    console.log('Done!                     ');\n})();\n"]}