repository-discovery
A TypeScript library enabling git repository discovery across GitHub, GitLab, Azure DevOps, and Bitbucket
A TypeScript library for discovering git repositories across multiple hosting providers. Supports flexible source specification for organizations, users, groups, workspaces, and individual repositories.
Installation
npm install repository-discovery
Features
- Multi-platform support — GitHub, GitLab, Azure DevOps, and Bitbucket
- Flexible filtering — Exclude archived repos and forks, or skip specific repositories
- Custom error handling — Specific exceptions for auth, rate limiting, and permissions
- Self-hosted support — Configure custom host URLs for enterprise instances
- AbortSignal support — Cancel operations gracefully
Usage
Each call targets one platform, with sources grouped by type (orgs, users, repos, groups, workspaces, projects):
import { discoverRepositories } from 'repository-discovery';
const repos = await discoverRepositories({
platform: 'github',
token: process.env.GITHUB_TOKEN,
sources: { orgs: ['my-organization'], users: ['torvalds'], repos: ['torvalds/linux'] },
});
Options
await discoverRepositories({
platform: 'github',
token: '...', // or async function: () => fetchToken()
hostUrl: 'https://github.mycompany.com', // self-hosted instances
sources: { orgs: ['internal'] },
filter: {
excludeArchived: true,
excludeForks: true,
skipRepos: ['owner/repo-to-skip'],
},
continueOnError: true, // returns { repositories, errors } instead of throwing
signal: abortController.signal,
});
Token Configuration
Tokens can be provided as strings or async functions for dynamic retrieval:
{
token: async () => await getSecretFromVault('github-token')
}