Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 43 44 45 46 47 48 49 | 1x 1x 1x 1x 12x 12x 11x 11x 11x 6x 1x 6x 1x 1x 1x 1x | const fs = require('fs'); const fetch = require('node-fetch'); const {getVersionList, resolveVersionRange, getDependencyList} = require('./npm-utils'); const fetchPackageStats = async name => { Iif (!name) throw new Error('Empty name given as argument'); const pkg = await resolveVersionRange(name); const res = await fetch(`https://bundlephobia.com/api/size?package=${pkg}`, { headers: {'User-Agent': 'bundle-phobia-cli', 'X-Bundlephobia-User': 'bundle-phobia-cli'} }); const json = await res.json(); Eif (!json.error) return json; const errMessage = json.error.message; if (errMessage.startsWith('This package has not been published with this particular version.')) throw new Error(errMessage.replace(/`<code>|<\/code>`/g, '')); throw new Error(errMessage); }; const fetchPackagesStats = names => Promise.all(names.map(fetchPackageStats)); const fetchPackageJsonStats = packageDetails => fetchPackagesStats(getDependencyList(packageDetails)); const selectVersions = (versionList, limit) => { versionList.reverse(); if (limit <= 0) return versionList; else return versionList.slice(0, limit); }; const getPackageVersionList = async (name, limit = 8) => { const versionList = await getVersionList(name); return selectVersions(versionList, limit).map(version => `${name}@${version}`); }; const getPackagesFromPackageJson = async pkg => { const packageContent = JSON.parse(fs.readFileSync(pkg)); return getDependencyList(packageContent); }; module.exports = { fetchPackageStats, fetchPackageJsonStats, selectVersions, getPackageVersionList, getPackagesFromPackageJson }; |