libs/@guardian/browserslist-config/scripts/usage-table.mjs (26 lines of code) (raw):
import { readFileSync } from 'fs';
import { normaliseBrowserName } from './normalise-browser-name.mjs';
const browserslistStats = JSON.parse(
readFileSync('../browserslist-stats.json'),
);
const flattened = {};
// flatten the stats to { browserVersion: usage } shape
for (let [browser, versions] of Object.entries(browserslistStats)) {
for (let [version, usage] of Object.entries(versions)) {
const usageFixed = usage.toFixed(2);
// if (usageFixed > 0) {
flattened[`${browser} ${version}`] = usageFixed;
// }
}
}
// sort object by alpha then descending by usage
const sorted = Object.fromEntries(
Object.entries(flattened)
.sort()
.sort(([, a], [, b]) => b - a),
);
const table = ['| Browser | Usage |', '| ------- | -------- |'];
for (let [browser, usage] of Object.entries(sorted)) {
table.push(`| ${normaliseBrowserName(browser)} | ${usage}% |`);
}
export const usageTable = table.join('\n');