* Welcome to my corner of the web! *

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')
}