
Research
Node.js Fixes AsyncLocalStorage Crash Bug That Could Take Down Production Servers
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.
@wroud/github
Advanced tools
A lightweight GitHub integration library for working with git history, co-authors, issues, and commit links. Supports extracting GitHub metadata, generating GitHub URLs, and managing commit trailers in TypeScript.
@wroud/github is a lightweight library designed to work with git history and GitHub-specific information like co-authors, issues, commit links, and GitHub references. It provides a structured way to parse commit messages, handle GitHub metadata, and generate proper GitHub URLs for issues and commits.
This library uses the IGitCommitInfo interface from @wroud/git. You can obtain git commits by using the getGitCommits function from @wroud/git.
Install via npm:
npm install @wroud/github @wroud/git
Install via yarn:
yarn add @wroud/github @wroud/git
For detailed usage and API reference, visit the documentation site.
import { getGitCommits } from "@wroud/git";
import {
getGithubTrailers,
getGithubLink,
gitGithubLinks,
} from "@wroud/github";
const REPOSITORY = "wroud/repository";
// Fetch commits using getGitCommits from @wroud/git
async function printCommitLinks() {
for await (const commit of getGitCommits({
from: "v1.0.0",
to: "HEAD",
customLinks: [...gitGithubLinks], // Pass gitGithubLinks to getGitCommits
})) {
let message = commit.message;
// Extract GitHub trailers (including co-authors)
const trailers = getGithubTrailers(commit);
// Iterate through commit links and replace tokens with GitHub links
for (const [token, link] of Object.entries(commit.links)) {
const githubLink = getGithubLink(link, REPOSITORY);
if (githubLink) {
message = message.replaceAll(token, `[${token}](${githubLink})`);
}
}
console.log(`Commit: ${commit.hash}`);
console.log(`Message: ${message}`);
if (trailers.coAuthors.length) {
console.log(
`Co-authors: ${trailers.coAuthors.map((coAuthor) => coAuthor.name).join(", ")}`,
);
}
}
}
printCommitLinks();
IGithubCoAuthorRepresents information about a GitHub co-author.
interface IGithubCoAuthor {
name: string;
username?: string;
usernameLink?: string;
link?: string;
email?: string;
}
IGithubTrailersContains metadata such as GitHub co-authors.
interface IGithubTrailers {
coAuthors: IGithubCoAuthor[];
}
getGithubTrailersExtracts GitHub trailers (such as co-authors) from a commit message.
function getGithubTrailers(
commit: IGitCommitInfo,
options?: { loadGithubUserNames?: boolean },
): IGithubTrailers;
getGithubLinkGenerates a GitHub link for a specific issue or commit.
function getGithubLink(link: IGitLink, repository: string): string | null;
gitGithubLinksA list of regular expressions to match GitHub issue and PR references.
const gitGithubLinks = [
/[^\w](?<token>#(?<link>\d+)(?<gh>))/gi,
/[^\w](?<token>GH-(?<link>\d+)(?<gh>))/g,
/[^\w](?<token>(?<repository>[^\/\s]+\/[^\/\s]+)#(?<link>\d+)(?<gh>))/gi,
];
GithubURLUtility to generate GitHub issue and commit URLs.
const GithubURL = {
issue: (repository: string, issue: number) =>
`https://github.com/${repository}/issues/${issue}`,
commit: (repository: string, hash: string) =>
`https://github.com/${repository}/commit/${hash}`,
};
All notable changes to this project will be documented in the CHANGELOG file.
This project is licensed under the MIT License. See the LICENSE file for details.
FAQs
A lightweight GitHub integration library for working with git history, co-authors, issues, and commit links. Supports extracting GitHub metadata, generating GitHub URLs, and managing commit trailers in TypeScript.
The npm package @wroud/github receives a total of 0 weekly downloads. As such, @wroud/github popularity was classified as not popular.
We found that @wroud/github demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.