github-weekly-reporter 0.1.0 → 0.2.1

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.
Files changed (176) hide show
  1. package/README.md +86 -115
  2. package/dist/cli/commands/deploy.d.ts.map +1 -1
  3. package/dist/cli/commands/deploy.js +9 -3
  4. package/dist/cli/commands/deploy.js.map +1 -1
  5. package/dist/cli/commands/fetch.d.ts +3 -0
  6. package/dist/cli/commands/fetch.d.ts.map +1 -0
  7. package/dist/cli/commands/fetch.js +148 -0
  8. package/dist/cli/commands/fetch.js.map +1 -0
  9. package/dist/cli/commands/generate.d.ts.map +1 -1
  10. package/dist/cli/commands/generate.js +59 -80
  11. package/dist/cli/commands/generate.js.map +1 -1
  12. package/dist/cli/commands/render.d.ts +3 -0
  13. package/dist/cli/commands/render.d.ts.map +1 -0
  14. package/dist/cli/commands/render.js +172 -0
  15. package/dist/cli/commands/render.js.map +1 -0
  16. package/dist/cli/commands/setup.d.ts +3 -0
  17. package/dist/cli/commands/setup.d.ts.map +1 -0
  18. package/dist/cli/commands/setup.js +709 -0
  19. package/dist/cli/commands/setup.js.map +1 -0
  20. package/dist/cli/index.js +6 -0
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/collector/clean-body.d.ts +2 -0
  23. package/dist/collector/clean-body.d.ts.map +1 -0
  24. package/dist/collector/clean-body.js +27 -0
  25. package/dist/collector/clean-body.js.map +1 -0
  26. package/dist/collector/date-range.d.ts +3 -2
  27. package/dist/collector/date-range.d.ts.map +1 -1
  28. package/dist/collector/date-range.js +125 -5
  29. package/dist/collector/date-range.js.map +1 -1
  30. package/dist/collector/fetch-contributions.d.ts +11 -1
  31. package/dist/collector/fetch-contributions.d.ts.map +1 -1
  32. package/dist/collector/fetch-contributions.js +15 -3
  33. package/dist/collector/fetch-contributions.js.map +1 -1
  34. package/dist/collector/fetch-events.d.ts +6 -0
  35. package/dist/collector/fetch-events.d.ts.map +1 -0
  36. package/dist/collector/fetch-events.js +106 -0
  37. package/dist/collector/fetch-events.js.map +1 -0
  38. package/dist/collector/fetch-repo-prs.d.ts +7 -0
  39. package/dist/collector/fetch-repo-prs.d.ts.map +1 -0
  40. package/dist/collector/fetch-repo-prs.js +62 -0
  41. package/dist/collector/fetch-repo-prs.js.map +1 -0
  42. package/dist/collector/queries.d.ts +1 -4
  43. package/dist/collector/queries.d.ts.map +1 -1
  44. package/dist/collector/queries.js +7 -59
  45. package/dist/collector/queries.js.map +1 -1
  46. package/dist/deployer/index-page.d.ts +22 -2
  47. package/dist/deployer/index-page.d.ts.map +1 -1
  48. package/dist/deployer/index-page.js +424 -33
  49. package/dist/deployer/index-page.js.map +1 -1
  50. package/dist/deployer/week.d.ts +1 -1
  51. package/dist/deployer/week.d.ts.map +1 -1
  52. package/dist/deployer/week.js +17 -6
  53. package/dist/deployer/week.js.map +1 -1
  54. package/dist/i18n/fonts.d.ts +8 -0
  55. package/dist/i18n/fonts.d.ts.map +1 -0
  56. package/dist/i18n/fonts.js +44 -0
  57. package/dist/i18n/fonts.js.map +1 -0
  58. package/dist/i18n/index.d.ts +28 -0
  59. package/dist/i18n/index.d.ts.map +1 -0
  60. package/dist/i18n/index.js +259 -0
  61. package/dist/i18n/index.js.map +1 -0
  62. package/dist/index.d.ts +2 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +1 -2
  65. package/dist/index.js.map +1 -1
  66. package/dist/llm/index.d.ts +2 -1
  67. package/dist/llm/index.d.ts.map +1 -1
  68. package/dist/llm/index.js +77 -5
  69. package/dist/llm/index.js.map +1 -1
  70. package/dist/llm/preprocess.d.ts +3 -0
  71. package/dist/llm/preprocess.d.ts.map +1 -0
  72. package/dist/llm/preprocess.js +92 -0
  73. package/dist/llm/preprocess.js.map +1 -0
  74. package/dist/llm/prompt.d.ts.map +1 -1
  75. package/dist/llm/prompt.js +109 -29
  76. package/dist/llm/prompt.js.map +1 -1
  77. package/dist/llm/providers/anthropic.js +1 -1
  78. package/dist/llm/providers/anthropic.js.map +1 -1
  79. package/dist/llm/providers/grok.d.ts +3 -0
  80. package/dist/llm/providers/grok.d.ts.map +1 -0
  81. package/dist/llm/providers/grok.js +18 -0
  82. package/dist/llm/providers/grok.js.map +1 -0
  83. package/dist/llm/providers/groq.d.ts +3 -0
  84. package/dist/llm/providers/groq.d.ts.map +1 -0
  85. package/dist/llm/providers/groq.js +18 -0
  86. package/dist/llm/providers/groq.js.map +1 -0
  87. package/dist/llm/providers/openai.js +1 -1
  88. package/dist/llm/providers/openai.js.map +1 -1
  89. package/dist/llm/providers/openrouter.d.ts +3 -0
  90. package/dist/llm/providers/openrouter.d.ts.map +1 -0
  91. package/dist/llm/providers/openrouter.js +18 -0
  92. package/dist/llm/providers/openrouter.js.map +1 -0
  93. package/dist/llm/types.d.ts +5 -2
  94. package/dist/llm/types.d.ts.map +1 -1
  95. package/dist/renderer/helpers.d.ts +6 -1
  96. package/dist/renderer/helpers.d.ts.map +1 -1
  97. package/dist/renderer/helpers.js +54 -17
  98. package/dist/renderer/helpers.js.map +1 -1
  99. package/dist/renderer/index.d.ts +11 -2
  100. package/dist/renderer/index.d.ts.map +1 -1
  101. package/dist/renderer/index.js +41 -19
  102. package/dist/renderer/index.js.map +1 -1
  103. package/dist/renderer/og-image.d.ts +15 -0
  104. package/dist/renderer/og-image.d.ts.map +1 -0
  105. package/dist/renderer/og-image.js +152 -0
  106. package/dist/renderer/og-image.js.map +1 -0
  107. package/dist/renderer/themes.d.ts +2 -17
  108. package/dist/renderer/themes.d.ts.map +1 -1
  109. package/dist/renderer/themes.js +371 -147
  110. package/dist/renderer/themes.js.map +1 -1
  111. package/dist/types.d.ts +103 -11
  112. package/dist/types.d.ts.map +1 -1
  113. package/package.json +10 -4
  114. package/src/renderer/templates/partials/footer.hbs +3 -1
  115. package/src/renderer/templates/partials/header.hbs +10 -7
  116. package/src/renderer/templates/partials/highlights.hbs +24 -0
  117. package/src/renderer/templates/partials/overview.hbs +3 -0
  118. package/src/renderer/templates/partials/summaries.hbs +73 -0
  119. package/src/renderer/templates/report.hbs +100 -15
  120. package/dist/cli/config.d.ts +0 -11
  121. package/dist/cli/config.d.ts.map +0 -1
  122. package/dist/cli/config.js +0 -16
  123. package/dist/cli/config.js.map +0 -1
  124. package/dist/cli/config.test.d.ts +0 -2
  125. package/dist/cli/config.test.d.ts.map +0 -1
  126. package/dist/cli/config.test.js +0 -32
  127. package/dist/cli/config.test.js.map +0 -1
  128. package/dist/collector/aggregate.test.d.ts +0 -2
  129. package/dist/collector/aggregate.test.d.ts.map +0 -1
  130. package/dist/collector/aggregate.test.js +0 -88
  131. package/dist/collector/aggregate.test.js.map +0 -1
  132. package/dist/collector/date-range.test.d.ts +0 -2
  133. package/dist/collector/date-range.test.d.ts.map +0 -1
  134. package/dist/collector/date-range.test.js +0 -25
  135. package/dist/collector/date-range.test.js.map +0 -1
  136. package/dist/collector/fetch-issues.d.ts +0 -5
  137. package/dist/collector/fetch-issues.d.ts.map +0 -1
  138. package/dist/collector/fetch-issues.js +0 -31
  139. package/dist/collector/fetch-issues.js.map +0 -1
  140. package/dist/collector/fetch-languages.d.ts +0 -4
  141. package/dist/collector/fetch-languages.d.ts.map +0 -1
  142. package/dist/collector/fetch-languages.js +0 -42
  143. package/dist/collector/fetch-languages.js.map +0 -1
  144. package/dist/collector/fetch-pull-requests.d.ts +0 -5
  145. package/dist/collector/fetch-pull-requests.d.ts.map +0 -1
  146. package/dist/collector/fetch-pull-requests.js +0 -31
  147. package/dist/collector/fetch-pull-requests.js.map +0 -1
  148. package/dist/collector/index.d.ts +0 -3
  149. package/dist/collector/index.d.ts.map +0 -1
  150. package/dist/collector/index.js +0 -50
  151. package/dist/collector/index.js.map +0 -1
  152. package/dist/deployer/index-page.test.d.ts +0 -2
  153. package/dist/deployer/index-page.test.d.ts.map +0 -1
  154. package/dist/deployer/index-page.test.js +0 -29
  155. package/dist/deployer/index-page.test.js.map +0 -1
  156. package/dist/deployer/week.test.d.ts +0 -2
  157. package/dist/deployer/week.test.d.ts.map +0 -1
  158. package/dist/deployer/week.test.js +0 -21
  159. package/dist/deployer/week.test.js.map +0 -1
  160. package/dist/llm/llm.test.d.ts +0 -2
  161. package/dist/llm/llm.test.d.ts.map +0 -1
  162. package/dist/llm/llm.test.js +0 -24
  163. package/dist/llm/llm.test.js.map +0 -1
  164. package/dist/llm/prompt.test.d.ts +0 -2
  165. package/dist/llm/prompt.test.d.ts.map +0 -1
  166. package/dist/llm/prompt.test.js +0 -48
  167. package/dist/llm/prompt.test.js.map +0 -1
  168. package/dist/renderer/renderer.test.d.ts +0 -2
  169. package/dist/renderer/renderer.test.d.ts.map +0 -1
  170. package/dist/renderer/renderer.test.js +0 -111
  171. package/dist/renderer/renderer.test.js.map +0 -1
  172. package/src/renderer/templates/partials/heatmap.hbs +0 -11
  173. package/src/renderer/templates/partials/languages.hbs +0 -19
  174. package/src/renderer/templates/partials/narrative.hbs +0 -10
  175. package/src/renderer/templates/partials/repositories.hbs +0 -25
  176. package/src/renderer/templates/partials/stats.hbs +0 -8
@@ -1,111 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { renderReport } from "./index.js";
3
- const MOCK_DATA = {
4
- username: "testuser",
5
- avatarUrl: "https://avatars.githubusercontent.com/u/12345",
6
- dateRange: { from: "2026-03-28", to: "2026-04-03" },
7
- stats: {
8
- totalCommits: 42,
9
- prsOpened: 5,
10
- prsMerged: 3,
11
- prsReviewed: 8,
12
- issuesOpened: 2,
13
- issuesClosed: 1,
14
- },
15
- dailyCommits: [
16
- { date: "2026-03-28", count: 5 },
17
- { date: "2026-03-29", count: 0 },
18
- { date: "2026-03-30", count: 12 },
19
- { date: "2026-03-31", count: 3 },
20
- { date: "2026-04-01", count: 8 },
21
- { date: "2026-04-02", count: 7 },
22
- { date: "2026-04-03", count: 7 },
23
- ],
24
- repositories: [
25
- {
26
- name: "org/repo-a",
27
- commits: 0,
28
- prsOpened: 3,
29
- prsMerged: 2,
30
- issuesOpened: 1,
31
- issuesClosed: 0,
32
- url: "https://github.com/org/repo-a",
33
- },
34
- ],
35
- languages: [
36
- { language: "TypeScript", bytes: 8000, percentage: 80, color: "#3178c6" },
37
- { language: "JavaScript", bytes: 2000, percentage: 20, color: "#f1e05a" },
38
- ],
39
- pullRequests: [],
40
- issues: [],
41
- aiNarrative: null,
42
- };
43
- describe("renderReport", () => {
44
- it("produces valid HTML with DOCTYPE", () => {
45
- const html = renderReport(MOCK_DATA);
46
- expect(html).toMatch(/^<!DOCTYPE html>/);
47
- expect(html).toContain("</html>");
48
- });
49
- it("includes username and date range", () => {
50
- const html = renderReport(MOCK_DATA);
51
- expect(html).toContain("testuser");
52
- expect(html).toContain("2026-03-28");
53
- expect(html).toContain("2026-04-03");
54
- });
55
- it("includes stats values", () => {
56
- const html = renderReport(MOCK_DATA);
57
- expect(html).toContain("42");
58
- expect(html).toContain("Commits");
59
- expect(html).toContain("PRs Opened");
60
- });
61
- it("includes heatmap days", () => {
62
- const html = renderReport(MOCK_DATA);
63
- expect(html).toContain("heatmap-level-");
64
- expect(html).toContain("heatmap-day");
65
- });
66
- it("includes language breakdown", () => {
67
- const html = renderReport(MOCK_DATA);
68
- expect(html).toContain("TypeScript");
69
- expect(html).toContain("80.0%");
70
- expect(html).toContain("#3178c6");
71
- });
72
- it("includes repository table", () => {
73
- const html = renderReport(MOCK_DATA);
74
- expect(html).toContain("org/repo-a");
75
- expect(html).toContain("Active Repositories");
76
- });
77
- it("includes dofollow footer link with UTM params", () => {
78
- const html = renderReport(MOCK_DATA);
79
- expect(html).toContain("deariary.com?utm_source=github-weekly-reporter&utm_medium=footer");
80
- expect(html).not.toContain('rel="nofollow"');
81
- expect(html).not.toContain('rel="sponsored"');
82
- });
83
- it("includes OG meta tags", () => {
84
- const html = renderReport(MOCK_DATA);
85
- expect(html).toContain('og:title');
86
- expect(html).toContain('og:description');
87
- expect(html).toContain('og:image');
88
- });
89
- it("omits AI narrative section when null", () => {
90
- const html = renderReport(MOCK_DATA);
91
- expect(html).not.toContain("AI Summary");
92
- });
93
- it("includes AI narrative when provided", () => {
94
- const data = { ...MOCK_DATA, aiNarrative: "This week you focused on TypeScript." };
95
- const html = renderReport(data);
96
- expect(html).toContain("AI Summary");
97
- expect(html).toContain("This week you focused on TypeScript.");
98
- });
99
- it("renders dark theme without errors", () => {
100
- const html = renderReport(MOCK_DATA, "dark");
101
- expect(html).toContain("#0d1117");
102
- expect(html).toContain("<!DOCTYPE html>");
103
- });
104
- it("produces a single self-contained file (no external links)", () => {
105
- const html = renderReport(MOCK_DATA);
106
- // Should not have <link> or <script src=> tags
107
- expect(html).not.toMatch(/<link\s+rel="stylesheet"/);
108
- expect(html).not.toMatch(/<script\s+src=/);
109
- });
110
- });
111
- //# sourceMappingURL=renderer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.test.js","sourceRoot":"","sources":["../../src/renderer/renderer.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- <div class="section">
2
- <h2>Contribution Graph</h2>
3
- <div class="heatmap">
4
- {{#each dailyCommits}}
5
- <div class="heatmap-day heatmap-level-{{heatmapLevel this.count}}">
6
- <span class="count">{{this.count}}</span>
7
- <span>{{weekday this.date}}</span>
8
- </div>
9
- {{/each}}
10
- </div>
11
- </div>
@@ -1,19 +0,0 @@
1
- {{#if languages.length}}
2
- <div class="section">
3
- <h2>Languages</h2>
4
- <div class="lang-bar">
5
- {{#each languages}}
6
- <div class="lang-bar-segment" style="width:{{this.percentage}}%;background:{{this.color}}"></div>
7
- {{/each}}
8
- </div>
9
- <ul class="lang-list">
10
- {{#each languages}}
11
- <li>
12
- <span class="lang-dot" style="background:{{this.color}}"></span>
13
- <span>{{this.language}}</span>
14
- <span class="lang-pct">{{fixed this.percentage 1}}%</span>
15
- </li>
16
- {{/each}}
17
- </ul>
18
- </div>
19
- {{/if}}
@@ -1,10 +0,0 @@
1
- {{#if aiNarrative}}
2
- <div class="section">
3
- <h2>AI Summary</h2>
4
- <div class="narrative">
5
- {{#each (paragraphs aiNarrative)}}
6
- <p>{{this}}</p>
7
- {{/each}}
8
- </div>
9
- </div>
10
- {{/if}}
@@ -1,25 +0,0 @@
1
- {{#if repositories.length}}
2
- <div class="section">
3
- <h2>Active Repositories</h2>
4
- <table class="repo-table">
5
- <thead>
6
- <tr>
7
- <th>Repository</th>
8
- <th>PRs Opened</th>
9
- <th>PRs Merged</th>
10
- <th>Issues</th>
11
- </tr>
12
- </thead>
13
- <tbody>
14
- {{#each repositories}}
15
- <tr>
16
- <td><a href="{{this.url}}">{{this.name}}</a></td>
17
- <td>{{this.prsOpened}}</td>
18
- <td>{{this.prsMerged}}</td>
19
- <td>{{this.issuesOpened}}</td>
20
- </tr>
21
- {{/each}}
22
- </tbody>
23
- </table>
24
- </div>
25
- {{/if}}
@@ -1,8 +0,0 @@
1
- <div class="stats">
2
- {{#each statCards}}
3
- <div class="stat-card">
4
- <div class="value">{{this.value}}</div>
5
- <div class="label">{{this.label}}</div>
6
- </div>
7
- {{/each}}
8
- </div>