Skip to content

Which GitHub page are you on? Is it an issue? Is it a list? Perfect for your WebExtension or userscript.

License

Notifications You must be signed in to change notification settings

refined-github/github-url-detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0e65ffa · Mar 31, 2025
Mar 31, 2025
Jun 28, 2024
May 7, 2020
May 7, 2020
Jul 20, 2022
Jun 28, 2024
Jun 28, 2024
Mar 31, 2025
Mar 31, 2025
Feb 22, 2021
Mar 31, 2025
Mar 31, 2025
Jul 24, 2022
Aug 21, 2024

Repository files navigation

github-url-detection

Which GitHub page are you on? Is it an issue? Is it a list? Perfect for your WebExtension or userscript.

Battle-tested by and extracted from the Refined GitHub extension.

Install

npm install github-url-detection
// This package is pure ESM
import * as pageDetect from 'github-url-detection';

Usage

const href = 'https://github.com/refined-github/github-url-detection/issues/1';
if (pageDetect.isIssue(new URL(href))) { // Pass the URL as an `URL` object
	alert('The passed URL is of an issue!')
}

if (pageDetect.isRepo()) { // Uses `window.location.href` by default
	alert('You’re looking at a repo!')
}

if (pageDetect.isIssueOrPRList()) {
	alert('You’re looking at a issues and PRs list!')
}

API

Most detections are URL-based while others need access to the current document. You can determine which ones are URL-based by looking at their signature: URL-based functions have a url parameter.

URL-based detections

By default, URL-based detections use the location global if you don't pass a url argument.

if (pageDetect.isIssueOrPRList()) {
	alert('You’re looking at a issues or PRs list!')
}
if (pageDetect.isIssueOrPRList(new URL('https://github.com/refined-github/github-url-detection/pulls'))) {
	alert('You’re looking at a issues or PRs list!')
}

Notice that the url parameter is not a plain string but it has to be a proper URL or location object.

Document-based detections

By default, document-based detections use the document global, which means they can only be used if you have the whole page, you can't just test any random URL string.

if (pageDetect.isOrganizationProfile()) {
	alert('You’re on an organization profile, like https://github.com/babel')
}

Related

  • github-reserved-names - Get a list, or check if a user or organization name is reserved by GitHub.
  • shorten-repo-url - Shorten GitHub links like GitHub shortens Issues and Commit links.

License

MIT © Federico Brigante