import twas from 'twas'; import React from 'dom-chef'; import cache from 'webext-storage-cache'; import select from 'select-dom'; import repoIcon from 'octicon/repo.svg'; import elementReady from 'element-ready'; import features from '../libs/features'; import * as api from '../libs/api'; import {getRepoGQL, getRepoURL} from '../libs/utils'; const dateFormatter = new Intl.DateTimeFormat('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); const getRepoCreationDate = cache.function(async (): Promise => { const {repository} = await api.v4(` repository(${getRepoGQL()}) { createdAt } `); return repository.createdAt; }, { cacheKey: () => __featureName__ + ':' + getRepoURL() }); async function init(): Promise { const date = new Date(await getRepoCreationDate()); // `twas` could also return `an hour ago` or `just now` const [value, unit] = twas(date.getTime()) .replace('just now', '1 second') .replace(/^an?/, '1') .split(' '); const element = (
  • {repoIcon()} {value} {unit} old
  • ); await elementReady('.overall-summary + *'); const license = select('.numbers-summary .octicon-law'); if (license) { license.closest('li')!.before(element); } else { select('.numbers-summary')!.append(element); } } features.add({ id: __featureName__, description: 'Adds the age of the repository to the stats/numbers bar', screenshot: 'https://user-images.githubusercontent.com/3848317/69256318-95e6af00-0bb9-11ea-84c8-c6996d39da80.png', include: [ features.isRepoRoot ], load: features.nowAndOnAjaxedPages, init });