github-weekly-reporter 0.3.0 → 0.3.2

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 (97) hide show
  1. package/README.md +53 -79
  2. package/dist/cli/commands/deploy.d.ts +1 -0
  3. package/dist/cli/commands/deploy.d.ts.map +1 -1
  4. package/dist/cli/commands/deploy.js +1 -1
  5. package/dist/cli/commands/deploy.js.map +1 -1
  6. package/dist/cli/commands/fetch.d.ts +23 -0
  7. package/dist/cli/commands/fetch.d.ts.map +1 -1
  8. package/dist/cli/commands/fetch.js +88 -25
  9. package/dist/cli/commands/fetch.js.map +1 -1
  10. package/dist/cli/commands/generate.d.ts +11 -0
  11. package/dist/cli/commands/generate.d.ts.map +1 -1
  12. package/dist/cli/commands/generate.js +1 -5
  13. package/dist/cli/commands/generate.js.map +1 -1
  14. package/dist/cli/commands/render.js +1 -1
  15. package/dist/cli/commands/render.js.map +1 -1
  16. package/dist/cli/commands/setup/constants.d.ts +11 -0
  17. package/dist/cli/commands/setup/constants.d.ts.map +1 -0
  18. package/dist/cli/commands/setup/constants.js +42 -0
  19. package/dist/cli/commands/setup/constants.js.map +1 -0
  20. package/dist/cli/commands/setup/github-api.d.ts +13 -0
  21. package/dist/cli/commands/setup/github-api.d.ts.map +1 -0
  22. package/dist/cli/commands/setup/github-api.js +133 -0
  23. package/dist/cli/commands/setup/github-api.js.map +1 -0
  24. package/dist/cli/commands/setup/validate-model.d.ts +6 -0
  25. package/dist/cli/commands/setup/validate-model.d.ts.map +1 -0
  26. package/dist/cli/commands/setup/validate-model.js +74 -0
  27. package/dist/cli/commands/setup/validate-model.js.map +1 -0
  28. package/dist/cli/commands/setup/workflows.d.ts +25 -0
  29. package/dist/cli/commands/setup/workflows.d.ts.map +1 -0
  30. package/dist/cli/commands/setup/workflows.js +169 -0
  31. package/dist/cli/commands/setup/workflows.js.map +1 -0
  32. package/dist/cli/commands/setup.d.ts +2 -0
  33. package/dist/cli/commands/setup.d.ts.map +1 -1
  34. package/dist/cli/commands/setup.js +6 -410
  35. package/dist/cli/commands/setup.js.map +1 -1
  36. package/dist/cli/index.js +7 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/collector/date-range.d.ts +6 -0
  39. package/dist/collector/date-range.d.ts.map +1 -1
  40. package/dist/collector/date-range.js +19 -1
  41. package/dist/collector/date-range.js.map +1 -1
  42. package/dist/collector/fetch-events.d.ts +2 -1
  43. package/dist/collector/fetch-events.d.ts.map +1 -1
  44. package/dist/collector/fetch-events.js +4 -2
  45. package/dist/collector/fetch-events.js.map +1 -1
  46. package/dist/collector/fetch-repo-prs.d.ts +1 -0
  47. package/dist/collector/fetch-repo-prs.d.ts.map +1 -1
  48. package/dist/collector/fetch-repo-prs.js +4 -2
  49. package/dist/collector/fetch-repo-prs.js.map +1 -1
  50. package/dist/deployer/index-page.d.ts.map +1 -1
  51. package/dist/deployer/index-page.js +5 -404
  52. package/dist/deployer/index-page.js.map +1 -1
  53. package/dist/deployer/index.d.ts +1 -0
  54. package/dist/deployer/index.d.ts.map +1 -1
  55. package/dist/deployer/index.js +2 -3
  56. package/dist/deployer/index.js.map +1 -1
  57. package/dist/deployer/week.d.ts +1 -0
  58. package/dist/deployer/week.d.ts.map +1 -1
  59. package/dist/deployer/week.js +14 -10
  60. package/dist/deployer/week.js.map +1 -1
  61. package/dist/llm/index.d.ts +2 -1
  62. package/dist/llm/index.d.ts.map +1 -1
  63. package/dist/llm/index.js +3 -3
  64. package/dist/llm/index.js.map +1 -1
  65. package/dist/llm/providers/anthropic.d.ts +1 -1
  66. package/dist/llm/providers/anthropic.d.ts.map +1 -1
  67. package/dist/llm/providers/anthropic.js +2 -1
  68. package/dist/llm/providers/anthropic.js.map +1 -1
  69. package/dist/llm/providers/grok.d.ts +1 -1
  70. package/dist/llm/providers/grok.d.ts.map +1 -1
  71. package/dist/llm/providers/grok.js +3 -2
  72. package/dist/llm/providers/grok.js.map +1 -1
  73. package/dist/llm/providers/groq.d.ts +1 -1
  74. package/dist/llm/providers/groq.d.ts.map +1 -1
  75. package/dist/llm/providers/groq.js +3 -2
  76. package/dist/llm/providers/groq.js.map +1 -1
  77. package/dist/llm/providers/openai.d.ts +1 -1
  78. package/dist/llm/providers/openai.d.ts.map +1 -1
  79. package/dist/llm/providers/openai.js +3 -2
  80. package/dist/llm/providers/openai.js.map +1 -1
  81. package/dist/llm/providers/openrouter.d.ts +1 -1
  82. package/dist/llm/providers/openrouter.d.ts.map +1 -1
  83. package/dist/llm/providers/openrouter.js +3 -2
  84. package/dist/llm/providers/openrouter.js.map +1 -1
  85. package/dist/llm/types.d.ts +2 -0
  86. package/dist/llm/types.d.ts.map +1 -1
  87. package/dist/llm/types.js +2 -1
  88. package/dist/llm/types.js.map +1 -1
  89. package/dist/renderer/index.d.ts +1 -0
  90. package/dist/renderer/index.d.ts.map +1 -1
  91. package/dist/renderer/index.js +1 -0
  92. package/dist/renderer/index.js.map +1 -1
  93. package/dist/renderer/themes.d.ts.map +1 -1
  94. package/dist/renderer/themes.js +0 -1
  95. package/dist/renderer/themes.js.map +1 -1
  96. package/package.json +22 -9
  97. package/src/renderer/templates/index-page.hbs +403 -0
@@ -2,7 +2,7 @@
2
2
  // Daily fetch: grab all public events and accumulate
3
3
  const EVENTS_PER_PAGE = 100;
4
4
  const MAX_PAGES = 3; // GitHub Events API hard limit is 300 events (3 pages)
5
- const summarizePayload = (type, raw) => {
5
+ export const summarizePayload = (type, raw) => {
6
6
  switch (type) {
7
7
  case "PushEvent": {
8
8
  const commits = Array.isArray(raw.commits)
@@ -62,8 +62,10 @@ const fetchPage = async (token, username, page) => {
62
62
  "User-Agent": "github-weekly-reporter",
63
63
  },
64
64
  });
65
- if (!response.ok)
65
+ if (!response.ok) {
66
+ console.warn(`Failed to fetch events page ${page}: ${response.status} ${response.statusText}`);
66
67
  return [];
68
+ }
67
69
  return (await response.json());
68
70
  };
69
71
  export const isInRange = (eventDate, range) => {
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-events.js","sourceRoot":"","sources":["../../src/collector/fetch-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-events.js","sourceRoot":"","sources":["../../src/collector/fetch-events.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PullRequest } from "../types.js";
2
+ export declare const mapState: (state: string, mergedAt: string | null) => PullRequest["state"];
2
3
  export type PRRef = {
3
4
  repo: string;
4
5
  number: number;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-repo-prs.d.ts","sourceRoot":"","sources":["../../src/collector/fetch-repo-prs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA8B/C,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA2CF,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,MAAM,KAAK,EAAE,KACZ,OAAO,CAAC,WAAW,EAAE,CAevB,CAAC"}
1
+ {"version":3,"file":"fetch-repo-prs.d.ts","sourceRoot":"","sources":["../../src/collector/fetch-repo-prs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyB/C,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,GAAG,IAAI,KAAG,WAAW,CAAC,OAAO,CAGpF,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA8CF,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,MAAM,KAAK,EAAE,KACZ,OAAO,CAAC,WAAW,EAAE,CAevB,CAAC"}
@@ -6,7 +6,7 @@ const GITHUB_HEADERS = (token) => ({
6
6
  "X-GitHub-Api-Version": "2022-11-28",
7
7
  "User-Agent": "github-weekly-reporter",
8
8
  });
9
- const mapState = (state, mergedAt) => {
9
+ export const mapState = (state, mergedAt) => {
10
10
  if (mergedAt)
11
11
  return "merged";
12
12
  return state === "closed" ? "closed" : "open";
@@ -14,8 +14,10 @@ const mapState = (state, mergedAt) => {
14
14
  const fetchSinglePR = async (token, ref) => {
15
15
  const url = `https://api.github.com/repos/${ref.repo}/pulls/${ref.number}`;
16
16
  const response = await fetch(url, { headers: GITHUB_HEADERS(token) });
17
- if (!response.ok)
17
+ if (!response.ok) {
18
+ console.warn(`Failed to fetch PR ${ref.repo}#${ref.number}: ${response.status} ${response.statusText}`);
18
19
  return null;
20
+ }
19
21
  const pr = (await response.json());
20
22
  return {
21
23
  title: pr.title,
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-repo-prs.js","sourceRoot":"","sources":["../../src/collector/fetch-repo-prs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-repo-prs.js","sourceRoot":"","sources":["../../src/collector/fetch-repo-prs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-page.d.ts","sourceRoot":"","sources":["../../src/deployer/index-page.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIzD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AA8aF,eAAO,MAAM,eAAe,GAC1B,SAAS,WAAW,EAAE,EACtB,WAAW,aAAa,EACxB,WAAU,QAAe,EACzB,YAAY,MAAM,EAClB,UAAU,MAAM,KACf,MA4BF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,QAAQ,gBAAgB,KACvB,WAQD,CAAC"}
1
+ {"version":3,"file":"index-page.d.ts","sourceRoot":"","sources":["../../src/deployer/index-page.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIzD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAgCF,eAAO,MAAM,eAAe,GAC1B,SAAS,WAAW,EAAE,EACtB,WAAW,aAAa,EACxB,WAAU,QAAe,EACzB,YAAY,MAAM,EAClB,UAAU,MAAM,KACf,MA4BF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,QAAQ,gBAAgB,KACvB,WAQD,CAAC"}
@@ -1,411 +1,12 @@
1
1
  // Generate the index.html that lists all archived reports
2
+ import { readFileSync } from "node:fs";
3
+ import { join, dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
2
5
  import Handlebars from "handlebars";
3
6
  import { getLocale, getFontConfig } from "../i18n/index.js";
4
7
  import { buildCSS } from "../renderer/themes.js";
5
- const TEMPLATE = `<!DOCTYPE html>
6
- <html lang="{{lang}}">
7
- <head>
8
- <title>{{siteTitle}}</title>
9
- <meta charset="utf-8" />
10
- <meta name="viewport" content="width=device-width, initial-scale=1" />
11
- <meta name="description" content="{{description}}" />
12
- <meta name="view-transition" content="same-origin" />
13
- <meta property="og:title" content="{{siteTitleInline}}" />
14
- <meta property="og:description" content="{{description}}" />
15
- <meta property="og:type" content="website" />
16
- {{#if ogImageUrl}}<meta property="og:image" content="{{ogImageUrl}}" />
17
- <meta property="og:image:width" content="1200" />
18
- <meta property="og:image:height" content="630" />{{/if}}
19
- {{#if baseUrl}}<meta property="og:url" content="{{baseUrl}}/" />{{/if}}
20
- <meta name="twitter:card" content="summary_large_image" />
21
- <meta name="twitter:title" content="{{siteTitleInline}}" />
22
- <meta name="twitter:description" content="{{description}}" />
23
- {{#if ogImageUrl}}<meta name="twitter:image" content="{{ogImageUrl}}" />{{/if}}
24
- <style>{{{css}}}</style>
25
- <style>
26
- body { background: #050505; color: #e8e8e8; overflow-x: hidden; }
27
-
28
- /* GRAIN OVERLAY */
29
- body::after {
30
- content: '';
31
- position: fixed;
32
- inset: 0;
33
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
34
- pointer-events: none;
35
- z-index: 9999;
36
- }
37
-
38
- /* NAV */
39
- .index-nav {
40
- position: fixed;
41
- top: 0; left: 0; right: 0;
42
- z-index: 100;
43
- background: rgba(5,5,5,0.8);
44
- backdrop-filter: blur(16px);
45
- border-bottom: 1px solid rgba(255,255,255,0.06);
46
- }
47
- .index-nav-inner {
48
- max-width: 960px;
49
- margin: 0 auto;
50
- padding: 0.75rem 3rem;
51
- display: flex;
52
- align-items: center;
53
- min-height: 56px;
54
- }
55
- .nav-site-title {
56
- font-size: 0.75rem;
57
- font-weight: 600;
58
- letter-spacing: 0.2em;
59
- text-transform: uppercase;
60
- color: rgba(255,255,255,0.4);
61
- white-space: nowrap;
62
- }
63
-
64
- /* HERO */
65
- .hero {
66
- position: relative;
67
- min-height: 100vh;
68
- display: flex;
69
- flex-direction: column;
70
- justify-content: flex-end;
71
- padding: 0 3rem 6rem;
72
- overflow: hidden;
73
- }
74
-
75
- /* GEOMETRIC DECORATIONS */
76
- .geo-circle {
77
- position: absolute;
78
- border-radius: 50%;
79
- border: 1px solid rgba(255,255,255,0.04);
80
- }
81
- .geo-circle-1 { width: 600px; height: 600px; top: -200px; right: -100px; }
82
- .geo-circle-2 { width: 400px; height: 400px; top: 10%; left: -150px; border-color: {{accentColor}}15; }
83
- .geo-circle-3 { width: 200px; height: 200px; bottom: 20%; right: 10%; background: {{accentColor}}08; }
84
- .geo-line {
85
- position: absolute;
86
- background: rgba(255,255,255,0.03);
87
- }
88
- .geo-line-1 { width: 1px; height: 100%; top: 0; left: 33.33%; }
89
- .geo-line-2 { width: 1px; height: 100%; top: 0; left: 66.66%; }
90
- .geo-dot {
91
- position: absolute;
92
- width: 4px; height: 4px;
93
- border-radius: 50%;
94
- background: {{accentColor}}40;
95
- }
96
- .geo-dot-1 { top: 30%; left: 33.33%; }
97
- .geo-dot-2 { top: 60%; left: 66.66%; }
98
- .geo-dot-3 { top: 45%; right: 15%; }
99
-
100
- .hero-inner {
101
- max-width: 960px;
102
- margin: 0 auto;
103
- width: 100%;
104
- position: relative;
105
- z-index: 1;
106
- }
107
-
108
- /* AVATAR - offset, large, with gradient ring */
109
- .hero-avatar-wrap {
110
- position: absolute;
111
- top: 25vh;
112
- right: 3rem;
113
- z-index: 2;
114
- }
115
- .hero-avatar {
116
- width: 180px; height: 180px;
117
- border-radius: 50%;
118
- border: 3px solid transparent;
119
- background-image: linear-gradient(#050505, #050505), linear-gradient(135deg, {{accentColor}}, #8957e5, #f78166);
120
- background-origin: border-box;
121
- background-clip: padding-box, border-box;
122
- transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
123
- }
124
- .hero-avatar-wrap:hover .hero-avatar {
125
- transform: scale(1.08) rotate(3deg);
126
- }
127
-
128
- /* MASSIVE TITLE */
129
- .hero-title {
130
- font-size: clamp(4rem, 12vw, 9rem);
131
- font-weight: 900;
132
- letter-spacing: -0.06em;
133
- line-height: 0.85;
134
- color: #ffffff;
135
- margin-bottom: 3rem;
136
- max-width: 70%;
137
- white-space: pre-line;
138
- }
139
-
140
- /* PROFILE - asymmetric, stacked */
141
- .hero-profile {
142
- display: inline-flex;
143
- align-items: flex-start;
144
- gap: 4rem;
145
- text-decoration: none;
146
- color: inherit;
147
- transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
148
- }
149
- .hero-profile:hover .hero-display-name {
150
- color: {{accentColor}};
151
- text-shadow: 0 0 30px {{accentColor}}80, 0 0 80px {{accentColor}}30;
152
- }
153
- .hero-profile:hover .hero-handle {
154
- text-shadow: 0 0 12px {{accentColor}}60;
155
- }
156
- .hero-profile:hover .hero-avatar {
157
- border-color: {{accentColor}};
158
- box-shadow: 0 0 30px {{accentColor}}40;
159
- }
160
- .hero-profile:hover .hero-stat-value {
161
- color: {{accentColor}};
162
- text-shadow: 0 0 16px {{accentColor}}50;
163
- }
164
- .hero-name-block {}
165
- .hero-display-name {
166
- font-size: 1.5rem;
167
- font-weight: 300;
168
- letter-spacing: 0.05em;
169
- color: rgba(255,255,255,0.9);
170
- margin-bottom: 0.5rem;
171
- transition: all 0.4s ease;
172
- }
173
- .hero-handle {
174
- font-family: {{monoFamily}};
175
- font-size: 0.6875rem;
176
- color: {{accentColor}};
177
- letter-spacing: 0.05em;
178
- transition: all 0.4s ease;
179
- }
180
- .hero-bio {
181
- font-size: 0.875rem;
182
- color: rgba(255,255,255,0.35);
183
- margin-top: 0.75rem;
184
- max-width: 300px;
185
- line-height: 1.6;
186
- }
187
- .hero-stats {
188
- display: flex;
189
- flex-direction: column;
190
- gap: 0.75rem;
191
- }
192
- .hero-stat {
193
- font-family: {{monoFamily}};
194
- font-size: 0.6875rem;
195
- color: rgba(255,255,255,0.25);
196
- }
197
- .hero-stat-value {
198
- display: block;
199
- font-size: 2rem;
200
- font-weight: 800;
201
- letter-spacing: -0.03em;
202
- color: rgba(255,255,255,0.9);
203
- line-height: 1;
204
- margin-bottom: 0.125rem;
205
- transition: all 0.4s ease;
206
- }
207
-
208
- /* CONTENT */
209
- .index-content {
210
- max-width: 960px;
211
- margin: 0 auto;
212
- padding: 0 3rem 6rem;
213
- position: relative;
214
- }
215
-
216
- .year-group { margin-bottom: 5rem; }
217
- .year-label {
218
- font-family: {{monoFamily}};
219
- font-size: 6rem;
220
- font-weight: 900;
221
- letter-spacing: -0.05em;
222
- color: rgba(255,255,255,0.04);
223
- line-height: 1;
224
- margin-bottom: 2rem;
225
- user-select: none;
226
- }
227
-
228
- /* WEEK ITEMS - editorial layout */
229
- .week-list {
230
- display: flex;
231
- flex-direction: column;
232
- gap: 0;
233
- }
234
- .week-item {
235
- display: grid;
236
- grid-template-columns: 80px 1fr auto;
237
- gap: 2rem;
238
- align-items: baseline;
239
- padding: 2rem 0;
240
- text-decoration: none;
241
- color: inherit;
242
- border-top: 1px solid rgba(255,255,255,0.06);
243
- transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
244
- position: relative;
245
- }
246
- .week-item:last-child { border-bottom: 1px solid rgba(255,255,255,0.06); }
247
- .week-item::before {
248
- content: '';
249
- position: absolute;
250
- left: -3rem; top: 0; bottom: 0;
251
- width: 2px;
252
- background: {{accentColor}};
253
- transform: scaleY(0);
254
- transform-origin: top;
255
- transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
256
- }
257
- .week-item:hover { padding-left: 1rem; }
258
- .week-item:hover::before { transform: scaleY(1); }
259
-
260
- .week-item-week {
261
- font-family: {{monoFamily}};
262
- font-size: 0.6875rem;
263
- font-weight: 700;
264
- color: {{accentColor}};
265
- letter-spacing: 0.1em;
266
- }
267
- .week-item-content {}
268
- .week-item-title {
269
- font-size: 1.25rem;
270
- font-weight: 600;
271
- letter-spacing: -0.01em;
272
- margin-bottom: 0.375rem;
273
- transition: color 0.3s;
274
- }
275
- .week-item:hover .week-item-title { color: {{accentColor}}; }
276
- .week-item-subtitle {
277
- font-size: 0.875rem;
278
- color: rgba(255,255,255,0.35);
279
- line-height: 1.5;
280
- display: -webkit-box;
281
- -webkit-line-clamp: 1;
282
- -webkit-box-orient: vertical;
283
- overflow: hidden;
284
- }
285
- .week-item-date {
286
- font-family: {{monoFamily}};
287
- font-size: 0.75rem;
288
- margin-top: 0.5rem;
289
- font-size: 0.75rem;
290
- color: rgba(255,255,255,0.2);
291
- padding-top: 0.25rem;
292
- }
293
- .week-item-stat-value { font-weight: 700; }
294
- .stat-commits .week-item-stat-value { color: #3fb950; }
295
- .stat-prs .week-item-stat-value { color: #8957e5; }
296
- .stat-reviews .week-item-stat-value { color: #58a6ff; }
297
-
298
- /* FOOTER */
299
- .footer {
300
- max-width: 960px;
301
- margin: 0 auto;
302
- text-align: center;
303
- padding: 4rem 3rem;
304
- font-size: 0.8125rem;
305
- color: rgba(255,255,255,0.3);
306
- border-top: 1px solid rgba(255,255,255,0.08);
307
- }
308
- .footer a { color: rgba(255,255,255,0.5); text-decoration: none; transition: color 0.2s; }
309
- .footer a:hover { color: rgba(255,255,255,0.6); }
310
-
311
- @media (max-width: 768px) {
312
- .hero { padding: 0 1.5rem 4rem; min-height: auto; padding-top: 8rem; }
313
- .hero-title { font-size: clamp(3rem, 15vw, 5rem); max-width: 100%; }
314
- .hero-avatar-wrap { position: relative; top: auto; right: auto; margin-bottom: 2rem; }
315
- .hero-avatar { width: 100px; height: 100px; }
316
- .hero-profile { flex-direction: column; gap: 2rem; }
317
- .hero-stats { flex-direction: row; gap: 2rem; }
318
- .index-nav-inner { padding: 0.75rem 1.5rem; }
319
- .index-content { padding: 0 1.5rem 4rem; }
320
- .week-item { grid-template-columns: 1fr; gap: 0.5rem; }
321
- .week-item::before { left: -1.5rem; }
322
- .week-item-stats { margin-top: 0.5rem; }
323
- .year-label { font-size: 3rem; }
324
- }
325
- </style>
326
- </head>
327
- <body>
328
-
329
- <nav class="index-nav">
330
- <div class="index-nav-inner">
331
- <span class="nav-site-title">{{siteTitleInline}}</span>
332
- </div>
333
- </nav>
334
-
335
- <section class="hero">
336
- <!-- Geometric decorations -->
337
- <div class="geo-circle geo-circle-1"></div>
338
- <div class="geo-circle geo-circle-2"></div>
339
- <div class="geo-circle geo-circle-3"></div>
340
- <div class="geo-line geo-line-1"></div>
341
- <div class="geo-line geo-line-2"></div>
342
- <div class="geo-dot geo-dot-1"></div>
343
- <div class="geo-dot geo-dot-2"></div>
344
- <div class="geo-dot geo-dot-3"></div>
345
-
346
- {{#if avatarUrl}}
347
- <a href="https://github.com/{{username}}" class="hero-avatar-wrap" target="_blank" rel="noopener nofollow">
348
- <img src="{{avatarUrl}}" alt="{{username}}" class="hero-avatar" width="180" height="180" />
349
- </a>
350
- {{/if}}
351
-
352
- <div class="hero-inner">
353
- <h1 class="hero-title">{{siteTitle}}</h1>
354
-
355
- {{#if username}}
356
- <a href="https://github.com/{{username}}" class="hero-profile" target="_blank" rel="noopener nofollow">
357
- <div class="hero-name-block">
358
- <div class="hero-display-name">{{displayName}}</div>
359
- <div class="hero-handle">@{{username}}</div>
360
- {{#if profile.company}}<div class="hero-bio">{{profile.company}}</div>{{/if}}
361
- {{#if profile.location}}<div class="hero-bio">{{profile.location}}</div>{{/if}}
362
- </div>
363
- {{#if profile}}
364
- <div class="hero-stats">
365
- {{#if profile.followers}}<div class="hero-stat"><span class="hero-stat-value">{{profile.followers}}</span>followers</div>{{/if}}
366
- {{#if profile.publicRepos}}<div class="hero-stat"><span class="hero-stat-value">{{profile.publicRepos}}</span>repos</div>{{/if}}
367
- </div>
368
- {{/if}}
369
- </a>
370
- {{/if}}
371
- </div>
372
- </section>
373
-
374
- <div class="index-content">
375
- {{#each yearGroups}}
376
- <div class="year-group">
377
- <div class="year-label">{{this.year}}</div>
378
- <div class="week-list">
379
- {{#each this.reports}}
380
- <a href="{{this.path}}/" class="week-item">
381
- <div class="week-item-week">{{this.week}}</div>
382
- <div class="week-item-content">
383
- <div class="week-item-title">{{#if this.title}}{{this.title}}{{else}}Week {{this.week}}{{/if}}</div>
384
- {{#if this.subtitle}}<div class="week-item-subtitle">{{this.subtitle}}</div>{{/if}}
385
- <div class="week-item-date">{{this.dateLabel}}</div>
386
- </div>
387
- {{#if this.stats}}
388
- <div class="week-item-stats">
389
- <span class="week-item-stat stat-commits"><span class="week-item-stat-value">{{this.stats.commits}}</span> commits</span>
390
- <span class="week-item-stat stat-prs"><span class="week-item-stat-value">{{this.stats.prs}}</span> PRs</span>
391
- <span class="week-item-stat stat-reviews"><span class="week-item-stat-value">{{this.stats.reviews}}</span> reviews</span>
392
- </div>
393
- {{/if}}
394
- </a>
395
- {{/each}}
396
- </div>
397
- </div>
398
- {{/each}}
399
- </div>
400
-
401
- <footer class="footer">
402
- {{poweredBy}} <a href="https://deariary.com?utm_source=github-weekly-reporter&utm_medium=footer" target="_blank" rel="noopener">deariary</a>
403
- &nbsp;&middot;&nbsp;
404
- {{generatedWith}} <a href="https://github.com/deariary/github-weekly-reporter" target="_blank" rel="noopener">github-weekly-reporter</a>
405
- </footer>
406
-
407
- </body>
408
- </html>`;
8
+ const TEMPLATES_DIR = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "src", "renderer", "templates");
9
+ const TEMPLATE = readFileSync(join(TEMPLATES_DIR, "index-page.hbs"), "utf-8");
409
10
  const weekToDateLabel = (path) => {
410
11
  const [year, week] = path.split("/");
411
12
  return `${year} ${week}`;
@@ -1 +1 @@
1
- {"version":3,"file":"index-page.js","sourceRoot":"","sources":["../../src/deployer/index-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-page.js","sourceRoot":"","sources":["../../src/deployer/index-page.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@ export type DeployOptions = {
3
3
  directory: string;
4
4
  message?: string;
5
5
  };
6
+ /** Deploy the output directory to the gh-pages branch via force push. */
6
7
  export declare const deploy: (options: DeployOptions) => Promise<void>;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,GAAU,SAAS,aAAa,KAAG,OAAO,CAAC,IAAI,CAuCjE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,MAAM,GAAU,SAAS,aAAa,KAAG,OAAO,CAAC,IAAI,CAoCjE,CAAC"}
@@ -6,6 +6,7 @@ import { join } from "node:path";
6
6
  import { tmpdir } from "node:os";
7
7
  const exec = promisify(execFile);
8
8
  const git = (args, cwd) => exec("git", args, { cwd });
9
+ /** Deploy the output directory to the gh-pages branch via force push. */
9
10
  export const deploy = async (options) => {
10
11
  const { repoUrl, directory, message = "deploy" } = options;
11
12
  const tmp = await mkdtemp(join(tmpdir(), "gwr-deploy-"));
@@ -27,10 +28,8 @@ export const deploy = async (options) => {
27
28
  // Stage all changes
28
29
  await git(["add", "."], tmp);
29
30
  const { stdout } = await git(["status", "--porcelain"], tmp);
30
- if (!stdout.trim()) {
31
- console.log("No changes to deploy.");
31
+ if (!stdout.trim())
32
32
  return;
33
- }
34
33
  await git(["commit", "-m", message], tmp);
35
34
  await git(["push", repoUrl, "gh-pages", "--force"], tmp);
36
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,GAAW,EAAE,EAAE,CAC1C,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAQ7B,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,OAAsB,EAAiB,EAAE;IACpE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,wCAAwC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;YAChD,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YACzB,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,6BAA6B,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,sDAAsD,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjG,uDAAuD;QACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC/E,CACF,CAAC;QAEF,oBAAoB;QACpB,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,GAAW,EAAE,EAAE,CAC1C,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAQ7B,yEAAyE;AACzE,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,OAAsB,EAAiB,EAAE;IACpE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,wCAAwC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;YAChD,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YACzB,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,6BAA6B,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,sDAAsD,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjG,uDAAuD;QACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC/E,CACF,CAAC;QAEF,oBAAoB;QACpB,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,OAAO;QAE3B,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC,CAAC"}
@@ -4,4 +4,5 @@ export type WeekId = {
4
4
  path: string;
5
5
  };
6
6
  export declare const getWeekId: (date?: Date, timezone?: string) => WeekId;
7
+ export declare const getCurrentWeekId: (date?: Date, timezone?: string) => WeekId;
7
8
  //# sourceMappingURL=week.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"week.d.ts","sourceRoot":"","sources":["../../src/deployer/week.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAwBF,eAAO,MAAM,SAAS,GACpB,OAAM,IAAiB,EACvB,WAAU,MAAc,KACvB,MAWF,CAAC"}
1
+ {"version":3,"file":"week.d.ts","sourceRoot":"","sources":["../../src/deployer/week.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAUF,eAAO,MAAM,SAAS,GACpB,OAAM,IAAiB,EACvB,WAAU,MAAc,KACvB,MAWF,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAC3B,OAAM,IAAiB,EACvB,WAAU,MAAc,KACvB,MAUF,CAAC"}
@@ -1,14 +1,5 @@
1
1
  // ISO week number calculation (timezone-aware)
2
- const localDateParts = (date, tz) => {
3
- const fmt = new Intl.DateTimeFormat("en-CA", {
4
- timeZone: tz,
5
- year: "numeric",
6
- month: "2-digit",
7
- day: "2-digit",
8
- });
9
- const [year, month, day] = fmt.format(date).split("-").map(Number);
10
- return { year, month: month - 1, day };
11
- };
2
+ import { localDateParts } from "../collector/date-range.js";
12
3
  const getISOWeekNumber = (date, timezone) => {
13
4
  const { year, month, day } = localDateParts(date, timezone);
14
5
  const d = new Date(Date.UTC(year, month, day));
@@ -28,4 +19,17 @@ export const getWeekId = (date = new Date(), timezone = "UTC") => {
28
19
  const padded = String(prevWeek).padStart(2, "0");
29
20
  return { year: prevYear, week: prevWeek, path: `${prevYear}/W${padded}` };
30
21
  };
22
+ // Current ISO week ID. Used by daily-fetch to store events for the
23
+ // week that is still in progress.
24
+ export const getCurrentWeekId = (date = new Date(), timezone = "UTC") => {
25
+ const { year, month, day } = localDateParts(date, timezone);
26
+ const d = new Date(Date.UTC(year, month, day));
27
+ const dow = d.getUTCDay() || 7; // 1=Mon..7=Sun
28
+ // This week's Thursday
29
+ const thisThursday = new Date(Date.UTC(year, month, day - (dow - 1) + 3));
30
+ const week = getISOWeekNumber(thisThursday, timezone);
31
+ const weekYear = localDateParts(thisThursday, timezone).year;
32
+ const padded = String(week).padStart(2, "0");
33
+ return { year: weekYear, week, path: `${weekYear}/W${padded}` };
34
+ };
31
35
  //# sourceMappingURL=week.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"week.js","sourceRoot":"","sources":["../../src/deployer/week.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAQ/C,MAAM,cAAc,GAAG,CACrB,IAAU,EACV,EAAU,EACoC,EAAE;IAChD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC3C,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,QAAgB,EAAU,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAAa,IAAI,IAAI,EAAE,EACvB,WAAmB,KAAK,EAChB,EAAE;IACV,6DAA6D;IAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;IAC/C,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,KAAK,MAAM,EAAE,EAAE,CAAC;AAC5E,CAAC,CAAC"}
1
+ {"version":3,"file":"week.js","sourceRoot":"","sources":["../../src/deployer/week.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { AIContent } from "../types.js";
2
2
  import type { NarrativeInput, LLMConfig } from "./types.js";
3
3
  export type { LLMConfig } from "./types.js";
4
- export declare const generateContent: (input: NarrativeInput, config: LLMConfig) => Promise<AIContent | null>;
4
+ /** Generate AI-powered narrative content from weekly GitHub activity data. Throws on failure. */
5
+ export declare const generateContent: (input: NarrativeInput, config: LLMConfig) => Promise<AIContent>;
5
6
  //# sourceMappingURL=index.d.ts.map