import React from 'dom-chef'; import {CachedFunction} from 'webext-storage-cache'; import elementReady from 'element-ready'; import * as pageDetect from 'github-url-detection'; import features from '../feature-manager.js'; import api from '../github-helpers/api.js'; import pluralize from '../helpers/pluralize.js'; const commitChanges = new CachedFunction('commit-changes', { async updater(commit: string): Promise<[additions: number, deletions: number]> { const {repository} = await api.v4(` query getCommitChanges($owner: String!, $name: String!, $commit: String!) { repository(owner: $owner, name: $name) { object(expression: $commit) { ... on Commit { additions deletions } } } } `, { variables: { commit, }, }); return [repository.object.additions, repository.object.deletions]; }}); async function init(): Promise { const commitSha = location.pathname.split('/').pop()!; const [additions, deletions] = await commitChanges.get(commitSha); const tooltip = pluralize(additions + deletions, '1 line changed', '$$ lines changed'); const diffstat = await elementReady('.diffstat', {waitForChildren: false}); diffstat!.replaceWith( +{additions}{' '} −{deletions}{' '} , ); } void features.add(import.meta.url, { include: [ pageDetect.isPRCommit, ], deduplicate: 'has-rgh-inner', init, }); /* Test URLs: https://github.com/refined-github/refined-github/pull/6674/commits/3d93b7823e3c31d3bd1900ab1ec98f5ce41203bf */