Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
co-author-to-username
Advanced tools
Fetches the GitHub username for a co-author, if possible. 📇
Fetches the GitHub username for a co-author, if possible. 📇
npm i co-author-to-username
coAuthorToUsername
This package exports a coAuthorToUsername
function that can be used to fetch the corresponding GitHub user from a commit-to-co-author
-style co-author:
username
, that username is returned directlyemail
, the Octokit API is used to search for the first matching user on that exact emailimport { coAuthorToUsername } from "co-author-to-username";
await coAuthorToUsername({ email: "github@joshuakgoldberg.com" });
// Result: "JoshuaKGoldberg"
await coAuthorToUsername({ username: "JoshuaKGoldberg" });
// Result: "JoshuaKGoldberg"
If no corresponding username is found, the function resolves with undefined
.
coAuthorToUsername
OptionscoAuthorToUsername
may take in an optional options object with a fetcher
property.
fetcher
can be either an Octokit
or your own function to take in an email: string
and return a Promise<string | undefined>
for the equivalent email.
This can be useful if you want to use your own caching fetcher and/or stub out network requests in tests.
await coAuthorToUsername(
{ email: "mock-data@example.com" },
{ fetcher: async (email) => email.split("@")[0] },
);
// Result: "mock-data"
createCachingCoAuthorToUsername
As a convenience, this package also exports a createCachingCoAuthorToUsername
that can be used to create a version of coAuthorToUsername
that caches its email lookups.
It uses a CachedFactory
from the cached-factory
package to store results keyed by emails.
import { createCachingCoAuthorToUsername } from "co-author-to-username";
const cachingCoAuthorToUsername = createCachingCoAuthorToUsername();
await cachingCoAuthorToUsername({ email: "github@joshuakgoldberg.com" });
// Result: "JoshuaKGoldberg" (via a network request)
await cachingCoAuthorToUsername({ email: "github@joshuakgoldberg.com" });
// Result: "JoshuaKGoldberg" (cached)
Note that the cachingCoAuthorToUsername
functions created by createCachingCoAuthorToUsername
cannot be given options.
createCachingCoAuthorToUsername
must be given any options.
createCachingCoAuthorToUsername
OptionscreateCachingCoAuthorToUsername
may take in an optional options object with a fetcher
property.
It works the same and serves similar purposes to coAuthorToUsername
's fetcher
.
const cachingCoAuthorToUsername = createCachingCoAuthorToUsername({
fetcher: async (email) => email.split("@")[0],
});
await cachingCoAuthorToUsername({ email: "mock-data@example.com" });
// Result: "mock-data" (via the fetcher option)
await cachingCoAuthorToUsername({ email: "mock-data@example.com" });
// Result: "mock-data" (cached)
Josh Goldberg 🔧 🐛 💻 🚧 👀 📖 🚇 |
💙 This package was templated with create-typescript-app.
FAQs
Fetches the GitHub username for a co-author, if possible. 📇
We found that co-author-to-username demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.