github-lang-stats 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,16 +4,36 @@ CLI that computes **per-author** GitHub language statistics by inspecting the fi
4
4
 
5
5
  Unlike `GET /repos/{owner}/{repo}/languages` (which returns repo-wide bytes regardless of who wrote them), this tool only counts lines in files **you personally changed**.
6
6
 
7
+ ## Why use this instead of your GitHub profile?
8
+
9
+ GitHub's default profile has two major limitations:
10
+
11
+ ### 1. **No language-specific contribution stats**
12
+ GitHub shows your total contributions but doesn't break them down by programming language. This tool gives you accurate, per-language statistics based on your actual code changes.
13
+
14
+ ### 2. **Private repository contributions are invisible**
15
+ Your GitHub profile only displays contributions to public repositories. For developers working primarily on private codebases (common in professional settings), this misrepresents your actual activity.
16
+
17
+ **This tool solves both problems:**
18
+ - ✅ **Accurate language breakdown** — See exactly how many lines you've changed in TypeScript, Python, Go, etc.
19
+ - ✅ **Safe private repo representation** — Generate aggregate statistics from private repositories without exposing sensitive code or repository names (you control what gets shared in the output)
20
+ - ✅ **Verifiable with your own GitHub token** — Anyone can validate the data by running the tool themselves with their own credentials
21
+
22
+ Perfect for portfolios, resumes, and demonstrating your real technical expertise.
23
+
7
24
  ## How it works
8
25
 
9
- | Phase | API | Cost |
10
- |---|---|---|
11
- | 1. Discover repos | GraphQL `contributionsCollection` | ~20 calls (one per year) |
12
- | 2. Collect commit SHAs per repo | GraphQL `history(author: ...)` | ~1 call per 100 commits |
13
- | 3. Fetch per-commit file details | REST `GET /repos/:owner/:repo/commits/:sha` | 1 call per commit |
26
+ | Phase | API | Cost | Rate Limit |
27
+ |---|---|---|---|
28
+ | 1. Discover repos | GraphQL `contributionsCollection` | ~20 calls (one per year) | 5,000/hr |
29
+ | 2. Collect commit SHAs per repo | GraphQL `history(author: ...)` | ~1 call per 100 commits | 5,000/hr |
30
+ | 3. Fetch per-commit file details | REST `GET /repos/:owner/:repo/commits/:sha` | 1 call per commit | 5,000/hr |
31
+ | 4. Collect PR counts (optional) | REST Search API `GET /search/issues` | 1 call per repo | **30/min** |
14
32
 
15
33
  Progress is cached in `.github-lang-stats-cache/<user>.json` so **interrupted runs resume from where they left off**.
16
34
 
35
+ **Note**: PR counts are collected by default starting with Phase 4. Use `--exclude-pr-counts` to skip this phase if you don't need PR data. The Search API has a stricter rate limit (30 requests/minute), so PR collection includes automatic 2-second delays between requests.
36
+
17
37
  ## Metric: `lines_changed`
18
38
 
19
39
  For each file in each commit we count `additions + deletions`. This is a proxy for "language activity" — it's not as precise as bytes stored, but it correctly reflects only work you did.
@@ -59,10 +79,13 @@ const stats = await getGithubLangStats({
59
79
  cachePath: "./.my-cache/octocat.json", // override default cache location
60
80
  useCache: true, // set false to disable caching
61
81
  repos: ["octocat/Hello-World"], // restrict to specific repos; omit for all
82
+ includeCommitDates: true, // include commit dates for heatmaps (default: true)
83
+ includePRCounts: true, // include PR counts for activity metrics (default: true)
62
84
  onProgress: (e: ProgressEvent) => {
63
85
  if (e.phase === "discover") console.log(e.details);
64
86
  if (e.phase === "shas") console.log(`${e.repo}: ${e.count} commits`);
65
87
  if (e.phase === "details") console.log(`${e.fetched}/${e.total} commits fetched`);
88
+ if (e.phase === "pr-counts") console.log(`${e.fetched}/${e.total} PR counts fetched`);
66
89
  if (e.phase === "aggregate") console.log("Aggregating…");
67
90
  },
68
91
  });
@@ -70,6 +93,31 @@ const stats = await getGithubLangStats({
70
93
  console.log(stats.totals); // { TypeScript: 412000, … }
71
94
  ```
72
95
 
96
+ #### List repositories only
97
+
98
+ If you just want to get a list of all repositories the user has contributed to (without collecting commit stats):
99
+
100
+ ```ts
101
+ import { listRepositories } from "github-lang-stats";
102
+
103
+ const repos = await listRepositories({
104
+ token: process.env.GITHUB_TOKEN,
105
+ // Optional fields:
106
+ user: "octocat", // omit to use token's user
107
+ fromYear: 2020, // defaults to 10 years ago
108
+ onProgress: (year) => console.log(`Scanning ${year}...`),
109
+ });
110
+
111
+ console.log(repos);
112
+ // [
113
+ // { owner: "octocat", name: "Hello-World", isPrivate: false },
114
+ // { owner: "octocat", name: "my-private-repo", isPrivate: true },
115
+ // ...
116
+ // ]
117
+ ```
118
+
119
+ This is useful for building UI selectors or filtering repos before running the full analysis.
120
+
73
121
  #### `ProgressEvent` shape
74
122
 
75
123
  | `phase` | Extra fields | When fired |
@@ -77,6 +125,7 @@ console.log(stats.totals); // { TypeScript: 412000, … }
77
125
  | `"discover"` | `details: string` | Once per year scanned |
78
126
  | `"shas"` | `repo: string`, `count: number` | Once per repo after all SHAs collected |
79
127
  | `"details"` | `fetched: number`, `total: number` | After every concurrency-batch of REST calls |
128
+ | `"pr-counts"` | `fetched: number`, `total: number` | After each repo's PR count is fetched |
80
129
  | `"aggregate"` | — | Once, just before the final roll-up |
81
130
 
82
131
  ### Local development
@@ -114,6 +163,8 @@ Options:
114
163
  --concurrency <n> Concurrent REST requests (default: 5)
115
164
  --from-year <year> Earliest year to include (default: 10 years ago)
116
165
  --exclude-langs <langs> Comma-separated languages to exclude (e.g. HCL,JSON)
166
+ --exclude-commit-dates Exclude commit dates from output (included by default)
167
+ --exclude-pr-counts Exclude PR counts from output (included by default)
117
168
  --select-repos Interactively pick repos to analyse after commit counts are known
118
169
  --stats-only Re-aggregate from cache without fetching new data
119
170
  --reset Delete cache and start fresh
@@ -123,17 +174,19 @@ Options:
123
174
 
124
175
  ### `--select-repos` interactive picker
125
176
 
126
- When passed, after all commit SHAs have been collected the tool shows a full-screen
127
- checkbox list sorted by **number of commits** (highest first). All repos are pre-selected:
177
+ When passed, after discovering repositories the tool shows a full-screen
178
+ checkbox list sorted alphabetically. All repos are pre-selected:
128
179
 
129
180
  ```
130
- ? Choose repos (42 total, sorted by commit count)
131
- ❯◉ myorg/monorepo 1 248 commits
132
- ◉ myorg/frontend 832 commits
133
- ◉ octocat/personal-site 201 commits
181
+ ? Choose repos (42 total)
182
+ ❯◉ myorg/frontend
183
+ ◉ myorg/monorepo
184
+ ◉ octocat/personal-site
134
185
  ...
135
186
  ```
136
187
 
188
+ This happens **before** collecting commits, allowing you to filter repos early and save time.
189
+
137
190
  | Key | Action |
138
191
  |-----|--------|
139
192
  | `space` | Toggle selected repo |
@@ -152,8 +205,13 @@ checkbox list sorted by **number of commits** (highest first). All repos are pre
152
205
  },
153
206
  "byRepo": {
154
207
  "myorg/myrepo": {
155
- "TypeScript": 200000,
156
- "CSS": 5000
208
+ "contributionsCountPerLanguage": {
209
+ "TypeScript": 200000,
210
+ "CSS": 5000
211
+ },
212
+ "commitDates": ["2025-11-15", "2025-11-16"],
213
+ "prCount": 42,
214
+ "isPrivate": false
157
215
  }
158
216
  },
159
217
  "meta": {
@@ -166,14 +224,19 @@ checkbox list sorted by **number of commits** (highest first). All repos are pre
166
224
  }
167
225
  ```
168
226
 
169
- ### Using the output in the CV widget
227
+ ### Optional fields in `byRepo`
228
+
229
+ - **`commitDates`**: Array of ISO date strings (YYYY-MM-DD), included by default. Use `--exclude-commit-dates` to omit.
230
+ - **`prCount`**: Number of pull requests authored by the user in this repository, included by default. Use `--exclude-pr-counts` to omit.
231
+ - **`isPrivate`**: Boolean indicating if the repository is private (always included when available).
170
232
 
171
- The `totals` field maps directly to the `githubLanguageTotals` field in the CV widget schema — just copy it in.
233
+ When `--exclude-pr-counts` is used, the metadata includes `"excludedPRs": true`.
172
234
 
173
235
  ## Tips
174
236
 
175
237
  - **First run is slow** — at 5k req/hr with 30k commits it can take hours. Let it run overnight; it saves progress every 50 commits.
176
238
  - **Subsequent runs are fast** — only new commits since the last run are fetched.
239
+ - **PR collection is rate-limited** — GitHub's Search API allows only 30 requests/minute (not 5000/hour like the REST API). For 100 repos, PR collection takes ~3-4 minutes. Use `--exclude-pr-counts` to skip if you don't need PR data.
177
240
  - **Exclude infrastructure languages** with `--exclude-langs HCL,Dockerfile` if teammates committed those to repos you also touched.
178
241
  - **Adjust concurrency** carefully — GitHub's [secondary rate limits](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api) may trigger at high concurrency even if your primary limit is not exhausted. `5` is a safe default.
179
242
 
@@ -1,3 +1,3 @@
1
- import type { AggregatedStats, CommitDetail } from "./types.js";
2
- export declare function aggregate(user: string, commitsByRepo: Record<string, string[]>, commitDetails: Record<string, CommitDetail | null>, excludeLanguages?: string[], includeCommitDates?: boolean): AggregatedStats;
1
+ import type { AggregatedStats, CommitDetail, Repo } from "./types.js";
2
+ export declare function aggregate(user: string, commitsByRepo: Record<string, string[]>, commitDetails: Record<string, CommitDetail | null>, excludeLanguages?: string[], includeCommitDates?: boolean, prCountByRepo?: Record<string, number>, repos?: Repo[], includePRCounts?: boolean): AggregatedStats;
3
3
  //# sourceMappingURL=aggregator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../src/aggregator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AAG3E,wBAAgB,SAAS,CACxB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,EAClD,gBAAgB,GAAE,MAAM,EAAO,EAC/B,kBAAkB,GAAE,OAAc,GAChC,eAAe,CA8EjB"}
1
+ {"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../src/aggregator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAa,MAAM,YAAY,CAAC;AAGjF,wBAAgB,SAAS,CACxB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,EAClD,gBAAgB,GAAE,MAAM,EAAO,EAC/B,kBAAkB,GAAE,OAAc,EAClC,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAC1C,KAAK,GAAE,IAAI,EAAO,EAClB,eAAe,GAAE,OAAc,GAC7B,eAAe,CA0GjB"}
@@ -1,9 +1,14 @@
1
1
  import { detectLanguage, isExcludedLanguage } from "./language-detector.js";
2
2
  // We accept the cache data object directly for aggregation
3
- export function aggregate(user, commitsByRepo, commitDetails, excludeLanguages = [], includeCommitDates = true) {
3
+ export function aggregate(user, commitsByRepo, commitDetails, excludeLanguages = [], includeCommitDates = true, prCountByRepo = {}, repos = [], includePRCounts = true) {
4
4
  const totals = {};
5
5
  const byRepo = {};
6
6
  let totalCommitsProcessed = 0;
7
+ // Build a repo map for quick lookup of isPrivate
8
+ const repoMap = new Map();
9
+ for (const repo of repos) {
10
+ repoMap.set(`${repo.owner}/${repo.name}`, repo);
11
+ }
7
12
  for (const [repoKey, shas] of Object.entries(commitsByRepo)) {
8
13
  const repoLangs = {};
9
14
  const commitDates = [];
@@ -32,11 +37,26 @@ export function aggregate(user, commitsByRepo, commitDetails, excludeLanguages =
32
37
  }
33
38
  }
34
39
  if (Object.keys(repoLangs).length > 0) {
35
- byRepo[repoKey] = repoLangs;
36
- // Add commit dates if collected
40
+ const repoData = {
41
+ contributionsCountPerLanguage: repoLangs
42
+ };
43
+ // Add commit dates if enabled
37
44
  if (includeCommitDates && commitDates.length > 0) {
38
- byRepo[repoKey].commitDates = commitDates;
45
+ repoData.commitDates = commitDates;
46
+ }
47
+ // Add PR count if enabled and available
48
+ if (includePRCounts) {
49
+ const prCount = prCountByRepo[repoKey];
50
+ if (prCount !== undefined) {
51
+ repoData.prCount = prCount;
52
+ }
53
+ }
54
+ // Add isPrivate if available
55
+ const repo = repoMap.get(repoKey);
56
+ if (repo?.isPrivate !== undefined) {
57
+ repoData.isPrivate = repo.isPrivate;
39
58
  }
59
+ byRepo[repoKey] = repoData;
40
60
  }
41
61
  }
42
62
  // Sort totals descending
@@ -45,14 +65,19 @@ export function aggregate(user, commitsByRepo, commitDetails, excludeLanguages =
45
65
  const sortedByRepo = Object.fromEntries(Object.entries(byRepo)
46
66
  .sort(([a], [b]) => a.localeCompare(b))
47
67
  .map(([repo, data]) => {
48
- // Extract commitDates if present
49
- const { commitDates, ...langs } = data;
50
68
  // Sort language entries
51
- const sortedLangs = Object.fromEntries(Object.entries(langs).sort(([, a], [, b]) => b - a));
52
- // Re-add commitDates if it existed
53
- return commitDates
54
- ? [repo, { ...sortedLangs, commitDates }]
55
- : [repo, sortedLangs];
69
+ const sortedLangs = Object.fromEntries(Object.entries(data.contributionsCountPerLanguage).sort(([, a], [, b]) => b - a));
70
+ // Build result with sorted langs and all optional fields
71
+ const result = {
72
+ contributionsCountPerLanguage: sortedLangs
73
+ };
74
+ if (data.commitDates)
75
+ result.commitDates = data.commitDates;
76
+ if (data.prCount !== undefined)
77
+ result.prCount = data.prCount;
78
+ if (data.isPrivate !== undefined)
79
+ result.isPrivate = data.isPrivate;
80
+ return [repo, result];
56
81
  }));
57
82
  return {
58
83
  totals: sortedTotals,
@@ -62,7 +87,8 @@ export function aggregate(user, commitsByRepo, commitDetails, excludeLanguages =
62
87
  generatedAt: new Date().toISOString(),
63
88
  totalCommitsProcessed,
64
89
  totalRepos: Object.keys(byRepo).length,
65
- unit: "lines_changed"
90
+ unit: "lines_changed",
91
+ ...(includePRCounts ? {} : { excludedPRs: true })
66
92
  }
67
93
  };
68
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../src/aggregator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../src/aggregator.ts"],"names":[],"mappings":"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"}
package/dist/cache.d.ts CHANGED
@@ -24,9 +24,14 @@ export declare class CacheStore {
24
24
  getAggregationData(): {
25
25
  commitsByRepo: Record<string, string[]>;
26
26
  commitDetails: Record<string, CommitDetail | null>;
27
+ prCountByRepo: Record<string, number>;
27
28
  };
28
29
  /** Clear all cached data */
29
30
  reset(): void;
31
+ isRepoPRComplete(owner: string, repo: string): boolean;
32
+ markRepoPRComplete(owner: string, repo: string): void;
33
+ getPRCount(owner: string, repo: string): number | undefined;
34
+ setPRCount(owner: string, repo: string, count: number): void;
30
35
  }
31
36
  export declare function defaultCachePath(user: string): string;
32
37
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAS,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAc5D,qBAAa,UAAU;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAQ;gBAER,SAAS,EAAE,MAAM;IAK7B,OAAO,CAAC,IAAI;IAkBZ,IAAI,IAAI,IAAI;IAMZ,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAEtB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ7D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIrC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS;IAI7D,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI;IAI/D,qDAAqD;IACrD,kBAAkB,IAAI,MAAM;IAU5B,eAAe,IAAI,MAAM;IAQzB,8BAA8B;IAC9B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,gEAAgE;IAChE,kBAAkB,IAAI;QACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;KACnD;IAOD,4BAA4B;IAC5B,KAAK,IAAI,IAAI;CAGb;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAS,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAgB5D,qBAAa,UAAU;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAQ;gBAER,SAAS,EAAE,MAAM;IAK7B,OAAO,CAAC,IAAI;IAkBZ,IAAI,IAAI,IAAI;IAMZ,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAEtB;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ7D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIrC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS;IAI7D,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI;IAI/D,qDAAqD;IACrD,kBAAkB,IAAI,MAAM;IAU5B,eAAe,IAAI,MAAM;IAQzB,8BAA8B;IAC9B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,gEAAgE;IAChE,kBAAkB,IAAI;QACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;QACnD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;IAQD,4BAA4B;IAC5B,KAAK,IAAI,IAAI;IAMb,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAKtD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQrD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAK5D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
package/dist/cache.js CHANGED
@@ -1,13 +1,15 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
- const CACHE_VERSION = 2;
3
+ const CACHE_VERSION = 3;
4
4
  function emptyCache() {
5
5
  return {
6
6
  version: CACHE_VERSION,
7
7
  repos: [],
8
8
  completedRepos: [],
9
9
  commitsByRepo: {},
10
- commitDetails: {}
10
+ commitDetails: {},
11
+ prCountByRepo: {},
12
+ completedPRRepos: []
11
13
  };
12
14
  }
13
15
  export class CacheStore {
@@ -103,13 +105,37 @@ export class CacheStore {
103
105
  getAggregationData() {
104
106
  return {
105
107
  commitsByRepo: this.data.commitsByRepo,
106
- commitDetails: this.data.commitDetails
108
+ commitDetails: this.data.commitDetails,
109
+ prCountByRepo: this.data.prCountByRepo ?? {}
107
110
  };
108
111
  }
109
112
  /** Clear all cached data */
110
113
  reset() {
111
114
  this.data = emptyCache();
112
115
  }
116
+ // ─── PR Count Methods ─────────────────────────────────────────────────────
117
+ isRepoPRComplete(owner, repo) {
118
+ const key = `${owner}/${repo}`;
119
+ return (this.data.completedPRRepos ?? []).includes(key);
120
+ }
121
+ markRepoPRComplete(owner, repo) {
122
+ const key = `${owner}/${repo}`;
123
+ if (!this.data.completedPRRepos)
124
+ this.data.completedPRRepos = [];
125
+ if (!this.data.completedPRRepos.includes(key)) {
126
+ this.data.completedPRRepos.push(key);
127
+ }
128
+ }
129
+ getPRCount(owner, repo) {
130
+ const key = `${owner}/${repo}`;
131
+ return this.data.prCountByRepo?.[key];
132
+ }
133
+ setPRCount(owner, repo, count) {
134
+ const key = `${owner}/${repo}`;
135
+ if (!this.data.prCountByRepo)
136
+ this.data.prCountByRepo = {};
137
+ this.data.prCountByRepo[key] = count;
138
+ }
113
139
  }
114
140
  export function defaultCachePath(user) {
115
141
  return join(process.cwd(), ".github-lang-stats-cache", `${user}.json`);
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -21,5 +21,6 @@ export declare class GitHubClient {
21
21
  getUserNodeId(username: string): Promise<string>;
22
22
  collectCommitShas(owner: string, repo: string, authorId: string, onPage?: (count: number) => void, fromYear?: number): Promise<string[]>;
23
23
  fetchCommitDetail(owner: string, repo: string, sha: string): Promise<CommitDetail | null>;
24
+ fetchPRCount(owner: string, repo: string, username: string): Promise<number>;
24
25
  }
25
26
  //# sourceMappingURL=github-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github-client.d.ts","sourceRoot":"","sources":["../src/github-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAQpE,qBAAa,YAAY;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,cAAc,CAAK;gBAEf,KAAK,EAAE,MAAM;IAIzB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,0BAA0B;IASlC,4DAA4D;YAC9C,QAAQ;IAatB,gBAAgB,IAAI,aAAa;IAiB3B,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC;IA2BP,oBAAoB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAoCvC,6BAA6B,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,EACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,EAAE,CAAC;IA8DZ,wBAAwB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,EACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,EAAE,CAAC;IAsBZ,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAWnD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,iBAAiB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,QAAQ,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC;IAkEd,iBAAiB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CA4C/B"}
1
+ {"version":3,"file":"github-client.d.ts","sourceRoot":"","sources":["../src/github-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAQpE,qBAAa,YAAY;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,cAAc,CAAK;gBAEf,KAAK,EAAE,MAAM;IAIzB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,0BAA0B;IASlC,4DAA4D;YAC9C,QAAQ;IAatB,gBAAgB,IAAI,aAAa;IAiB3B,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC;IA2BP,oBAAoB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAqCvC,6BAA6B,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,EACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,EAAE,CAAC;IAoEZ,wBAAwB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,EACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,IAAI,EAAE,CAAC;IAsBZ,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAWnD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,iBAAiB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,QAAQ,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC;IAkEd,iBAAiB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA2DzB,YAAY,CACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;CA8BlB"}
@@ -91,7 +91,7 @@ export class GitHubClient {
91
91
  if (apiRepos.length === 0)
92
92
  break;
93
93
  for (const r of apiRepos) {
94
- repos.push({ owner: r.owner.login, name: r.name });
94
+ repos.push({ owner: r.owner.login, name: r.name, isPrivate: r.private });
95
95
  }
96
96
  if (apiRepos.length < perPage)
97
97
  break;
@@ -119,6 +119,7 @@ export class GitHubClient {
119
119
  repository {
120
120
  owner { login }
121
121
  name
122
+ isPrivate
122
123
  }
123
124
  }
124
125
  }
@@ -131,7 +132,8 @@ export class GitHubClient {
131
132
  if (!repoMap.has(key)) {
132
133
  repoMap.set(key, {
133
134
  owner: entry.repository.owner.login,
134
- name: entry.repository.name
135
+ name: entry.repository.name,
136
+ isPrivate: entry.repository.isPrivate
135
137
  });
136
138
  }
137
139
  }
@@ -248,6 +250,41 @@ export class GitHubClient {
248
250
  }))
249
251
  };
250
252
  }
253
+ // ---------------------------------------------------------------------------
254
+ // Fetch PR count for a repository (authored by user)
255
+ // Uses the search API for efficiency
256
+ //
257
+ // IMPORTANT: GitHub Search API has a separate rate limit of 30 requests/minute
258
+ // (not the standard 5000/hour REST API limit). Callers should add ~2s delays
259
+ // between requests to avoid hitting this limit.
260
+ //
261
+ // Note: We skip the standard throttle() check here because:
262
+ // - Search API has its own much lower limit (30/min vs 5000/hr)
263
+ // - The reserve of 100 would always trigger on Search API (30 < 100)
264
+ // - We have retry logic for 429/403 and callers add manual delays
265
+ // ---------------------------------------------------------------------------
266
+ async fetchPRCount(owner, repo, username) {
267
+ // Don't call this.throttle() - Search API has separate rate limit
268
+ // Search for PRs authored by user in this repo
269
+ const query = `author:${username} type:pr repo:${owner}/${repo}`;
270
+ const url = `${GH_REST}/search/issues?q=${encodeURIComponent(query)}&per_page=1`;
271
+ const res = await fetch(url, { headers: this.headers() });
272
+ this.updateRateLimitFromHeaders(res.headers);
273
+ if (res.status === 404 || res.status === 422)
274
+ return 0;
275
+ if (!res.ok) {
276
+ if (res.status === 429 || res.status === 403) {
277
+ // Secondary rate limit — wait and retry once
278
+ const retryAfter = parseInt(res.headers.get("retry-after") ?? "60", 10);
279
+ process.stderr.write(`\nSecondary rate limit hit. Waiting ${retryAfter}s...\n`);
280
+ await sleep(retryAfter * 1000);
281
+ return this.fetchPRCount(owner, repo, username);
282
+ }
283
+ throw new Error(`fetchPRCount failed (${res.status}) for ${owner}/${repo}`);
284
+ }
285
+ const json = (await res.json());
286
+ return json.total_count;
287
+ }
251
288
  }
252
289
  function sleep(ms) {
253
290
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -1 +1 @@
1
- {"version":3,"file":"github-client.js","sourceRoot":"","sources":["../src/github-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-client.js","sourceRoot":"","sources":["../src/github-client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -29,6 +29,7 @@ program
29
29
  .option("--stats-only", "Skip fetching new data, just aggregate from existing cache")
30
30
  .option("--reset", "Delete cache and start fresh")
31
31
  .option("--exclude-commit-dates", "Exclude commit dates from output (dates are included by default for heatmap visualization)")
32
+ .option("--exclude-pr-counts", "Exclude PR counts from output (PR counts are included by default for activity metrics)")
32
33
  .parse(process.argv);
33
34
  const opts = program.opts();
34
35
  const concurrency = parseInt(opts.concurrency, 10);
@@ -65,8 +66,12 @@ if (!opts.noCache)
65
66
  console.log(chalk.gray(`Cache: ${cachePath}`));
66
67
  console.log();
67
68
  // ─── Phase 1: Discover repos ──────────────────────────────────────────────────
69
+ // Keep full repo list in cache, use separate variable for selected repos
70
+ let reposToAnalyse = cache.repos;
68
71
  if (!opts.statsOnly) {
69
- if (cache.repos.length === 0) {
72
+ // Always refresh repos when using --select-repos to show newly created repos
73
+ const needsFreshRepos = cache.repos.length === 0 || opts.selectRepos;
74
+ if (needsFreshRepos) {
70
75
  const spinner = ora("Discovering contributed repositories (year-by-year)…").start();
71
76
  let currentYear = 0;
72
77
  const repos = await client.discoverContributedRepos(user, fromYear, (year) => {
@@ -82,8 +87,39 @@ if (!opts.statsOnly) {
82
87
  console.log(chalk.green(`✓`) +
83
88
  ` Using cached repo list: ${chalk.bold(cache.repos.length)} repos`);
84
89
  }
90
+ // Update working repo list
91
+ reposToAnalyse = cache.repos;
92
+ // ─── Phase 1.5: Interactive repo selection ────────────────────────────────────
93
+ if (opts.selectRepos) {
94
+ const repoEntries = cache.repos
95
+ .map((r) => ({
96
+ repo: r,
97
+ key: `${r.owner}/${r.name}`
98
+ }))
99
+ .sort((a, b) => a.key.localeCompare(b.key));
100
+ console.log(`\n${chalk.bold("Select repositories to analyse")} ` +
101
+ chalk.gray("(space=toggle, a=toggle all, i=invert, enter=confirm)\n"));
102
+ const selected = await checkbox({
103
+ message: `Choose repos (${repoEntries.length} total)`,
104
+ choices: repoEntries.map(({ key }) => ({
105
+ name: key,
106
+ value: key,
107
+ checked: true
108
+ })),
109
+ pageSize: 20,
110
+ loop: false
111
+ });
112
+ if (selected.length === 0) {
113
+ console.log(chalk.red("No repositories selected — nothing to do."));
114
+ process.exit(0);
115
+ }
116
+ const selectedSet = new Set(selected);
117
+ reposToAnalyse = cache.repos.filter((r) => selectedSet.has(`${r.owner}/${r.name}`));
118
+ console.log(chalk.green(`✓`) +
119
+ ` Analysing ${chalk.bold(reposToAnalyse.length)} selected repos\n`);
120
+ }
85
121
  // ─── Phase 2: Collect commit SHAs per repo ──────────────────────────────────
86
- const incompleteRepos = cache.repos.filter((r) => !cache.isRepoComplete(r.owner, r.name));
122
+ const incompleteRepos = reposToAnalyse.filter((r) => !cache.isRepoComplete(r.owner, r.name));
87
123
  if (incompleteRepos.length > 0) {
88
124
  console.log(`\nCollecting commit SHAs for ${chalk.bold(incompleteRepos.length)} repos…`);
89
125
  // Use the user's GitHub node ID for reliable author filtering
@@ -116,36 +152,6 @@ if (!opts.statsOnly) {
116
152
  else {
117
153
  console.log(`${chalk.green(`✓`)} All repo commit SHAs already cached`);
118
154
  }
119
- // ─── Phase 2.5: Interactive repo selection ────────────────────────────────────
120
- if (opts.selectRepos) {
121
- const repoEntries = cache.repos
122
- .map((r) => ({
123
- repo: r,
124
- key: `${r.owner}/${r.name}`,
125
- count: cache.getCommits(r.owner, r.name).length
126
- }))
127
- .sort((a, b) => b.count - a.count);
128
- console.log(`\n${chalk.bold("Select repositories to analyse")} ` +
129
- chalk.gray("(space=toggle, a=toggle all, i=invert, enter=confirm)\n"));
130
- const selected = await checkbox({
131
- message: `Choose repos (${repoEntries.length} total, sorted by commit count)`,
132
- choices: repoEntries.map(({ key, count }) => ({
133
- name: `${key.padEnd(55)} ${chalk.gray(`${String(count).padStart(5)} commits`)}`,
134
- value: key,
135
- checked: true
136
- })),
137
- pageSize: 20,
138
- loop: false
139
- });
140
- if (selected.length === 0) {
141
- console.log(chalk.red("No repositories selected — nothing to do."));
142
- process.exit(0);
143
- }
144
- const selectedSet = new Set(selected);
145
- cache.repos = cache.repos.filter((r) => selectedSet.has(`${r.owner}/${r.name}`));
146
- console.log(chalk.green(`✓`) +
147
- ` Analysing ${chalk.bold(cache.repos.length)} selected repos\n`);
148
- }
149
155
  // ─── Phase 3: Fetch commit file details (REST) ──────────────────────────────
150
156
  const pending = cache.pendingCommitCount();
151
157
  const total = cache.totalCommitShas();
@@ -160,7 +166,7 @@ if (!opts.statsOnly) {
160
166
  ` Estimated time at ${usablePerHour} req/hr with concurrency=${concurrency}: ` +
161
167
  `~${formatMinutes(pending / (usablePerHour / 60 / 60) / concurrency)}`));
162
168
  const workList = [];
163
- for (const repo of cache.repos) {
169
+ for (const repo of reposToAnalyse) {
164
170
  const shas = cache.getCommits(repo.owner, repo.name);
165
171
  for (const sha of shas) {
166
172
  if (!cache.hasCommitDetail(sha)) {
@@ -211,11 +217,55 @@ if (!opts.statsOnly) {
211
217
  else {
212
218
  console.log(`${chalk.green(`✓`)} All commit details already cached (${total} commits)`);
213
219
  }
220
+ // ─── Phase 3.5: Collect PR counts ────────────────────────────────────────────
221
+ if (!opts.excludePrCounts) {
222
+ const incompletePRRepos = reposToAnalyse.filter((r) => !cache.isRepoPRComplete(r.owner, r.name));
223
+ if (incompletePRRepos.length > 0) {
224
+ const totalPRRepos = reposToAnalyse.length;
225
+ const alreadyDone = totalPRRepos - incompletePRRepos.length;
226
+ console.log(`\nCollecting PR counts: ${chalk.bold(incompletePRRepos.length)} remaining` +
227
+ (alreadyDone > 0 ? chalk.gray(` (${alreadyDone} already cached)`) : "") +
228
+ chalk.gray(`\n Note: Search API limited to 30 req/min, this will take ~${Math.ceil(incompletePRRepos.length / 30)} min`));
229
+ let prRepoIdx = 0;
230
+ let totalPRCount = 0;
231
+ const prBar = ora(`Collecting PR counts 0 / ${incompletePRRepos.length}…`).start();
232
+ for (const repo of incompletePRRepos) {
233
+ prRepoIdx++;
234
+ try {
235
+ const prCount = await client.fetchPRCount(repo.owner, repo.name, user);
236
+ cache.setPRCount(repo.owner, repo.name, prCount);
237
+ cache.markRepoPRComplete(repo.owner, repo.name);
238
+ totalPRCount += prCount;
239
+ if (!opts.noCache && prRepoIdx % 10 === 0) {
240
+ cache.save();
241
+ }
242
+ const pct = Math.round((prRepoIdx / incompletePRRepos.length) * 100);
243
+ prBar.text = `Collecting PR counts ${prRepoIdx} / ${incompletePRRepos.length} (${pct}%)`;
244
+ // Add delay to respect Search API rate limit (30 req/min = 2s between requests)
245
+ if (prRepoIdx < incompletePRRepos.length) {
246
+ await new Promise(r => setTimeout(r, 2000));
247
+ }
248
+ }
249
+ catch (err) {
250
+ process.stderr.write(`\n Warning: failed to fetch PR count for ${repo.owner}/${repo.name}: ${String(err)}\n`);
251
+ // Mark as complete even on error to avoid retrying indefinitely
252
+ cache.markRepoPRComplete(repo.owner, repo.name);
253
+ }
254
+ }
255
+ if (!opts.noCache)
256
+ cache.save();
257
+ prBar.succeed(`Collected PR counts for ${chalk.bold(incompletePRRepos.length)} repos (${totalPRCount} PRs total)`);
258
+ }
259
+ else {
260
+ console.log(`${chalk.green(`✓`)} All PR counts already cached`);
261
+ }
262
+ }
214
263
  }
215
264
  // ─── Phase 4: Aggregate ───────────────────────────────────────────────────────
216
265
  console.log(chalk.gray("\nAggregating…"));
217
- const { commitsByRepo, commitDetails } = cache.getAggregationData();
218
- const stats = aggregate(user, commitsByRepo, commitDetails, excludeLanguages, !opts.excludeCommitDates // Include by default, exclude if flag is set
266
+ const { commitsByRepo, commitDetails, prCountByRepo } = cache.getAggregationData();
267
+ const stats = aggregate(user, commitsByRepo, commitDetails, excludeLanguages, !opts.excludeCommitDates, // Include by default, exclude if flag is set
268
+ prCountByRepo, reposToAnalyse, !opts.excludePrCounts // Include by default, exclude if flag is set
219
269
  );
220
270
  const json = JSON.stringify(stats, null, 2);
221
271
  if (opts.output) {
@@ -237,7 +287,17 @@ for (const [lang, lines] of topN) {
237
287
  const bar = "█".repeat(Math.round((lines / maxLines) * 20));
238
288
  console.log(` ${lang.padEnd(20)} ${bar.padEnd(20)} ${formatNum(lines)}`);
239
289
  }
240
- console.log(chalk.gray(`\nProcessed ${stats.meta.totalCommitsProcessed} commits across ${stats.meta.totalRepos} repos`));
290
+ // Calculate total PRs if included
291
+ let summaryText = `\nProcessed ${stats.meta.totalCommitsProcessed} commits`;
292
+ if (!opts.excludePrCounts) {
293
+ const totalPRs = Object.values(prCountByRepo).reduce((sum, count) => sum + count, 0);
294
+ summaryText += `, ${totalPRs} PRs`;
295
+ }
296
+ summaryText += ` across ${stats.meta.totalRepos} repos`;
297
+ if (opts.excludePrCounts) {
298
+ summaryText += ` (PR collection skipped)`;
299
+ }
300
+ console.log(chalk.gray(summaryText));
241
301
  // ─── Helpers ─────────────────────────────────────────────────────────────────
242
302
  function formatMinutes(minutes) {
243
303
  if (minutes < 1)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { AggregatedStats } from "./types.js";
1
+ import type { AggregatedStats, Repo } from "./types.js";
2
2
  export type { AggregatedStats, CommitDetail, CommitFileDetail, RateLimitInfo, Repo, RepoStats } from "./types.js";
3
+ export { GitHubClient } from "./github-client.js";
3
4
  export interface GetGithubLangStatsOptions {
4
5
  /**
5
6
  * GitHub username to analyse.
@@ -40,6 +41,12 @@ export interface GetGithubLangStatsOptions {
40
41
  * Defaults to `true`.
41
42
  */
42
43
  includeCommitDates?: boolean;
44
+ /**
45
+ * Include PR counts for activity metrics.
46
+ * Adds a `prCount` field to each repo with the number of PRs authored by the user.
47
+ * Defaults to `true`.
48
+ */
49
+ includePRCounts?: boolean;
43
50
  /** Optional progress callback invoked as each phase advances. */
44
51
  onProgress?: (event: ProgressEvent) => void;
45
52
  }
@@ -54,9 +61,50 @@ export type ProgressEvent = {
54
61
  phase: "details";
55
62
  fetched: number;
56
63
  total: number;
64
+ } | {
65
+ phase: "pr-counts";
66
+ fetched: number;
67
+ total: number;
57
68
  } | {
58
69
  phase: "aggregate";
59
70
  };
71
+ export interface ListRepositoriesOptions {
72
+ /**
73
+ * GitHub username to discover repos for.
74
+ * When omitted, the username is resolved automatically from the token.
75
+ */
76
+ user?: string;
77
+ /** GitHub Personal Access Token (needs repo + read:user scopes) */
78
+ token: string;
79
+ /**
80
+ * Earliest year to scan for contributions.
81
+ * Defaults to **10 years ago** from the current year.
82
+ */
83
+ fromYear?: number;
84
+ /** Optional progress callback invoked as each year is scanned. */
85
+ onProgress?: (year: number) => void;
86
+ }
87
+ /**
88
+ * List all repositories the user has contributed to.
89
+ *
90
+ * This combines two discovery methods:
91
+ * 1. REST API: All repos the user owns, collaborates on, or is an org member of
92
+ * 2. GraphQL: Public repos contributed to via PRs (year-by-year scan)
93
+ *
94
+ * @returns Array of repositories with owner, name, and privacy status
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * import { listRepositories } from "github-lang-stats";
99
+ *
100
+ * const repos = await listRepositories({
101
+ * token: process.env.GITHUB_TOKEN!,
102
+ * fromYear: 2020,
103
+ * });
104
+ * console.log(repos); // [{ owner: "octocat", name: "hello-world", isPrivate: false }, ...]
105
+ * ```
106
+ */
107
+ export declare function listRepositories(options: ListRepositoriesOptions): Promise<Repo[]>;
60
108
  /**
61
109
  * Fetch GitHub language statistics for the given user programmatically.
62
110
  *
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,YAAY,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,IAAI,EACJ,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,yBAAyB;IACzC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iEAAiE;IACjE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,aAAa,GACtB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1B;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,yBAAyB,GAChC,OAAO,CAAC,eAAe,CAAC,CAqI1B"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAExD,YAAY,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,IAAI,EACJ,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACzC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iEAAiE;IACjE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,aAAa,GACtB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1B,MAAM,WAAW,uBAAuB;IACvC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,uBAAuB,GAC9B,OAAO,CAAC,IAAI,EAAE,CAAC,CAoBjB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,yBAAyB,GAChC,OAAO,CAAC,eAAe,CAAC,CA0K1B"}
package/dist/lib.js CHANGED
@@ -16,6 +16,41 @@
16
16
  import { aggregate } from "./aggregator.js";
17
17
  import { CacheStore, defaultCachePath } from "./cache.js";
18
18
  import { GitHubClient } from "./github-client.js";
19
+ export { GitHubClient } from "./github-client.js";
20
+ /**
21
+ * List all repositories the user has contributed to.
22
+ *
23
+ * This combines two discovery methods:
24
+ * 1. REST API: All repos the user owns, collaborates on, or is an org member of
25
+ * 2. GraphQL: Public repos contributed to via PRs (year-by-year scan)
26
+ *
27
+ * @returns Array of repositories with owner, name, and privacy status
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { listRepositories } from "github-lang-stats";
32
+ *
33
+ * const repos = await listRepositories({
34
+ * token: process.env.GITHUB_TOKEN!,
35
+ * fromYear: 2020,
36
+ * });
37
+ * console.log(repos); // [{ owner: "octocat", name: "hello-world", isPrivate: false }, ...]
38
+ * ```
39
+ */
40
+ export async function listRepositories(options) {
41
+ const { user: userOption, token, fromYear = new Date().getFullYear() - 10, onProgress } = options;
42
+ const client = new GitHubClient(token);
43
+ // Resolve username from the token if not provided
44
+ let user;
45
+ if (userOption) {
46
+ user = userOption;
47
+ }
48
+ else {
49
+ const viewer = await client.getViewer();
50
+ user = viewer.login;
51
+ }
52
+ return client.discoverContributedRepos(user, fromYear, onProgress);
53
+ }
19
54
  /**
20
55
  * Fetch GitHub language statistics for the given user programmatically.
21
56
  *
@@ -24,7 +59,7 @@ import { GitHubClient } from "./github-client.js";
24
59
  * or interactive prompts, making it suitable for embedding in other tools.
25
60
  */
26
61
  export async function getGithubLangStats(options) {
27
- const { user: userOption, token, fromYear = new Date().getFullYear() - 10, excludeLanguages = [], concurrency = 5, cachePath, useCache = true, repos: repoFilter, includeCommitDates = true, onProgress } = options;
62
+ const { user: userOption, token, fromYear = new Date().getFullYear() - 10, excludeLanguages = [], concurrency = 5, cachePath, useCache = true, repos: repoFilter, includeCommitDates = true, includePRCounts = true, onProgress } = options;
28
63
  const client = new GitHubClient(token);
29
64
  // Resolve username (and node ID) from the token if user was not provided
30
65
  let user;
@@ -96,6 +131,36 @@ export async function getGithubLangStats(options) {
96
131
  cache.save();
97
132
  onProgress?.({ phase: "details", fetched, total: workList.length });
98
133
  }
134
+ // ── Phase 3.5: Collect PR counts ────────────────────────────────────────
135
+ if (includePRCounts) {
136
+ const incompletePRRepos = reposToProcess.filter((r) => !cache.isRepoPRComplete(r.owner, r.name));
137
+ if (incompletePRRepos.length > 0) {
138
+ let prFetched = 0;
139
+ for (const repo of incompletePRRepos) {
140
+ try {
141
+ const prCount = await client.fetchPRCount(repo.owner, repo.name, user);
142
+ cache.setPRCount(repo.owner, repo.name, prCount);
143
+ cache.markRepoPRComplete(repo.owner, repo.name);
144
+ prFetched++;
145
+ if (useCache)
146
+ cache.save();
147
+ onProgress?.({
148
+ phase: "pr-counts",
149
+ fetched: prFetched,
150
+ total: incompletePRRepos.length
151
+ });
152
+ // Add delay to respect Search API rate limit (30 req/min = 2s between requests)
153
+ if (prFetched < incompletePRRepos.length) {
154
+ await new Promise(r => setTimeout(r, 2000));
155
+ }
156
+ }
157
+ catch (_err) {
158
+ // Mark as complete even on error to avoid retrying indefinitely
159
+ cache.markRepoPRComplete(repo.owner, repo.name);
160
+ }
161
+ }
162
+ }
163
+ }
99
164
  // ── Phase 4: Aggregate ──────────────────────────────────────────────────
100
165
  onProgress?.({ phase: "aggregate" });
101
166
  const filteredCommitsByRepo = {};
@@ -103,7 +168,7 @@ export async function getGithubLangStats(options) {
103
168
  const key = `${repo.owner}/${repo.name}`;
104
169
  filteredCommitsByRepo[key] = cache.getCommits(repo.owner, repo.name);
105
170
  }
106
- const { commitDetails } = cache.getAggregationData();
107
- return aggregate(user, filteredCommitsByRepo, commitDetails, excludeLanguages, includeCommitDates);
171
+ const { commitDetails, prCountByRepo } = cache.getAggregationData();
172
+ return aggregate(user, filteredCommitsByRepo, commitDetails, excludeLanguages, includeCommitDates, prCountByRepo, reposToProcess, includePRCounts);
108
173
  }
109
174
  //# sourceMappingURL=lib.js.map
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export interface Repo {
2
2
  owner: string;
3
3
  name: string;
4
+ isPrivate?: boolean;
4
5
  }
5
6
  export interface CommitSha {
6
7
  owner: string;
@@ -23,10 +24,15 @@ export interface RepoLanguageStats {
23
24
  repo: string;
24
25
  languages: Record<string, number>;
25
26
  }
26
- export type RepoStats = Record<string, number> & {
27
+ export interface RepoStats {
27
28
  /** Optional array of commit dates in ISO format (YYYY-MM-DD) */
28
29
  commitDates?: string[];
29
- };
30
+ contributionsCountPerLanguage: Record<string, number>;
31
+ /** PR count for this repository, included by default unless --exclude-pr-counts */
32
+ prCount?: number;
33
+ /** Repository privacy status */
34
+ isPrivate?: boolean;
35
+ }
30
36
  export interface AggregatedStats {
31
37
  /** Total lines changed (additions + deletions) per language across all repos */
32
38
  totals: Record<string, number>;
@@ -39,6 +45,8 @@ export interface AggregatedStats {
39
45
  totalCommitsProcessed: number;
40
46
  totalRepos: number;
41
47
  unit: "lines_changed";
48
+ /** Whether PR data was excluded (false or undefined means PRs were included) */
49
+ excludedPRs?: boolean;
42
50
  };
43
51
  }
44
52
  export interface Cache {
@@ -50,6 +58,10 @@ export interface Cache {
50
58
  commitsByRepo: Record<string, string[]>;
51
59
  /** Map of "<sha>" → CommitDetail (or null if 404/error) */
52
60
  commitDetails: Record<string, CommitDetail | null>;
61
+ /** Map of "owner/repo" → PR count */
62
+ prCountByRepo?: Record<string, number>;
63
+ /** Repos whose PR counts have been fully collected */
64
+ completedPRRepos?: string[];
53
65
  }
54
66
  export interface RateLimitInfo {
55
67
  /** Total requests allowed per hour (from x-ratelimit-limit header) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAChD,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC/B,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,yGAAyG;IACzG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,eAAe;IACf,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;KACtB,CAAC;CACF;AAED,MAAM,WAAW,KAAK;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,wDAAwD;IACxD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,aAAa;IAC7B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACzB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,yGAAyG;IACzG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,eAAe;IACf,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;QACtB,gFAAgF;QAChF,WAAW,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACF;AAED,MAAM,WAAW,KAAK;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,wDAAwD;IACxD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;IACnD,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC7B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-lang-stats",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "CLI that computes per-author GitHub language statistics by sampling commit file changes",
5
5
  "type": "module",
6
6
  "main": "./dist/lib.js",