node-pagefind 0.1.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/dist/digest.js ADDED
@@ -0,0 +1,424 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Octokit } from '@octokit/rest';
3
+ import { spawn } from 'child_process';
4
+ import { blockQuote, bold, codeBlock, h1, h2, h3, h4, link, unorderedList, } from 'markdown-factory';
5
+ function parseDiff(patchText) {
6
+ const diffMap = new Map();
7
+ const lines = patchText.split('\n');
8
+ let currentFile = null;
9
+ let currentHunk = null;
10
+ for (let i = 0; i < lines.length; i++) {
11
+ const line = lines[i];
12
+ const fileMatch = line.match(/^\+\+\+ b\/(.+)$/);
13
+ if (fileMatch) {
14
+ currentFile = fileMatch[1];
15
+ if (!diffMap.has(currentFile)) {
16
+ diffMap.set(currentFile, []);
17
+ }
18
+ currentHunk = null;
19
+ continue;
20
+ }
21
+ const hunkMatch = line.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
22
+ if (hunkMatch && currentFile) {
23
+ currentHunk = {
24
+ oldStart: parseInt(hunkMatch[1], 10),
25
+ oldCount: hunkMatch[2] ? parseInt(hunkMatch[2], 10) : 1,
26
+ newStart: parseInt(hunkMatch[3], 10),
27
+ newCount: hunkMatch[4] ? parseInt(hunkMatch[4], 10) : 1,
28
+ lines: [],
29
+ filePath: currentFile,
30
+ };
31
+ const hunks = diffMap.get(currentFile);
32
+ if (hunks) {
33
+ hunks.push(currentHunk);
34
+ }
35
+ continue;
36
+ }
37
+ if (currentHunk &&
38
+ (line.startsWith(' ') || line.startsWith('+') || line.startsWith('-'))) {
39
+ currentHunk.lines.push(line);
40
+ }
41
+ }
42
+ return diffMap;
43
+ }
44
+ function findDiffForComment(diffMap, comment) {
45
+ if (!comment.path || comment.line === null || comment.line === undefined) {
46
+ return null;
47
+ }
48
+ const hunks = diffMap.get(comment.path);
49
+ if (!hunks) {
50
+ return null;
51
+ }
52
+ for (const hunk of hunks) {
53
+ if (comment.line >= hunk.newStart &&
54
+ comment.line < hunk.newStart + hunk.newCount) {
55
+ const contextSize = 3;
56
+ const lineIndex = comment.line - hunk.newStart;
57
+ const startLine = Math.max(0, lineIndex - contextSize);
58
+ const endLine = Math.min(hunk.lines.length, lineIndex + contextSize + 1);
59
+ return `@@ -${hunk.oldStart},${hunk.oldCount} +${hunk.newStart},${hunk.newCount} @@\n${hunk.lines.slice(startLine, endLine).join('\n')}`;
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ function summarizeLogsWithAI(logs_1, checkName_1) {
65
+ return __awaiter(this, arguments, void 0, function* (logs, checkName, aiProvider = 'opencode') {
66
+ if (logs.length === 0) {
67
+ return null;
68
+ }
69
+ const logContent = logs.join('\n');
70
+ const prompt = `Summarize the following CI/CD check logs for "${checkName}".
71
+
72
+ IMPORTANT STRUCTURE GUIDELINES:
73
+ - Keep the summary concise (max 3-5 bullet points)
74
+ - Focus on the main issues or errors found
75
+ - Highlight what the check was testing
76
+ - If successful, briefly confirm what passed
77
+
78
+ CRITICAL - Nx Cloud Links:
79
+ - If you see ANY URLs containing "nx.app", "nx.app/cipes", or "nx.app/runs", these are Nx Cloud links
80
+ - These links can be fetched using Nx Cloud MCP/skills
81
+ - List them prominently if found
82
+
83
+ Logs to summarize:
84
+ \`\`\`
85
+ ${logContent.slice(0, 10000)}
86
+ \`\`\``;
87
+ return new Promise((resolve) => {
88
+ const child = spawn('npx', [aiProvider, 'summarize'], {
89
+ shell: true,
90
+ });
91
+ let stdout = '';
92
+ let stderr = '';
93
+ child.stdout.on('data', (data) => {
94
+ stdout += data.toString();
95
+ });
96
+ child.stderr.on('data', (data) => {
97
+ stderr += data.toString();
98
+ });
99
+ child.on('close', (code) => {
100
+ if (code === 0 && stdout.trim()) {
101
+ resolve(stdout.trim());
102
+ }
103
+ else {
104
+ console.error(`Failed to summarize logs (code ${code}): ${stderr}`);
105
+ resolve(null);
106
+ }
107
+ });
108
+ child.stdin.write(prompt);
109
+ child.stdin.end();
110
+ setTimeout(() => {
111
+ child.kill();
112
+ resolve(null);
113
+ }, 30000);
114
+ });
115
+ });
116
+ }
117
+ function fetchCheckRuns(owner_1, repo_1, headSha_1, octokit_1) {
118
+ return __awaiter(this, arguments, void 0, function* (owner, repo, headSha, octokit, aiProvider = 'opencode') {
119
+ try {
120
+ const { data: checkRunsData } = yield octokit.rest.checks.listForRef({
121
+ owner,
122
+ repo,
123
+ ref: headSha,
124
+ per_page: 50,
125
+ });
126
+ const checkRunsWithLogs = yield Promise.all(checkRunsData.check_runs.map((run) => __awaiter(this, void 0, void 0, function* () {
127
+ let logs = [];
128
+ if (run.logs_url) {
129
+ try {
130
+ const logsResponse = yield octokit.request('GET ' + run.logs_url);
131
+ if (typeof logsResponse.data === 'string') {
132
+ logs = logsResponse.data
133
+ .split('\n')
134
+ .filter((line) => line.trim());
135
+ }
136
+ }
137
+ catch (_a) {
138
+ // Ignore log fetch errors
139
+ }
140
+ }
141
+ return {
142
+ name: run.name,
143
+ status: run.status,
144
+ conclusion: run.conclusion,
145
+ startedAt: run.started_at,
146
+ completedAt: run.completed_at,
147
+ htmlUrl: run.html_url,
148
+ detailsUrl: run.details_url,
149
+ logs,
150
+ };
151
+ })));
152
+ const checkRunsWithSummaries = yield Promise.all(checkRunsWithLogs.map((checkRun) => __awaiter(this, void 0, void 0, function* () {
153
+ const hasNxCloudLinks = checkRun.logs.some((log) => log.includes('nx.app'));
154
+ if (!hasNxCloudLinks && checkRun.logs.length > 0) {
155
+ const summary = yield summarizeLogsWithAI(checkRun.logs, checkRun.name, aiProvider);
156
+ return Object.assign(Object.assign({}, checkRun), { aiSummary: summary || undefined });
157
+ }
158
+ return checkRun;
159
+ })));
160
+ return checkRunsWithSummaries;
161
+ }
162
+ catch (error) {
163
+ console.error('Failed to fetch check runs:', error);
164
+ return [];
165
+ }
166
+ });
167
+ }
168
+ export function fetchPrData(owner_1, repo_1, prNumber_1, token_1) {
169
+ return __awaiter(this, arguments, void 0, function* (owner, repo, prNumber, token, aiProvider = 'opencode') {
170
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
171
+ const octokit = new Octokit(token ? { auth: token } : undefined);
172
+ const { data: pr } = yield octokit.rest.pulls.get({
173
+ owner,
174
+ repo,
175
+ pull_number: prNumber,
176
+ });
177
+ const patchResponse = yield octokit.request('GET ' + pr.patch_url, {
178
+ headers: { Accept: 'application/vnd.github.patch' },
179
+ });
180
+ const patchText = patchResponse.data;
181
+ const diffMap = parseDiff(patchText);
182
+ const [{ data: commits }, { data: issueComments }, { data: reviews }, { data: reviewComments }, checkRuns,] = yield Promise.all([
183
+ octokit.rest.pulls.listCommits({
184
+ owner,
185
+ repo,
186
+ pull_number: prNumber,
187
+ per_page: 100,
188
+ }),
189
+ octokit.rest.issues.listComments({ owner, repo, issue_number: prNumber }),
190
+ octokit.rest.pulls.listReviews({ owner, repo, pull_number: prNumber }),
191
+ octokit.rest.pulls.listReviewComments({
192
+ owner,
193
+ repo,
194
+ pull_number: prNumber,
195
+ }),
196
+ fetchCheckRuns(owner, repo, pr.head.sha, octokit, aiProvider),
197
+ ]);
198
+ const timeline = [];
199
+ for (const commit of commits) {
200
+ timeline.push({
201
+ type: 'push',
202
+ sha: commit.sha.substring(0, 7),
203
+ message: commit.commit.message.split('\n')[0],
204
+ url: commit.html_url,
205
+ createdAt: ((_a = commit.commit.committer) === null || _a === void 0 ? void 0 : _a.date) ||
206
+ ((_b = commit.commit.author) === null || _b === void 0 ? void 0 : _b.date) ||
207
+ new Date().toISOString(),
208
+ author: commit.author ? { login: commit.author.login } : undefined,
209
+ });
210
+ }
211
+ for (const comment of issueComments) {
212
+ timeline.push({
213
+ type: 'comment',
214
+ id: comment.id.toString(),
215
+ body: (_c = comment.body) !== null && _c !== void 0 ? _c : '',
216
+ author: (_e = (_d = comment.user) === null || _d === void 0 ? void 0 : _d.login) !== null && _e !== void 0 ? _e : 'unknown',
217
+ createdAt: comment.created_at,
218
+ });
219
+ }
220
+ const reviewCommentsByReviewId = new Map();
221
+ for (const rc of reviewComments) {
222
+ const reviewId = ((_f = rc.pull_request_review_id) === null || _f === void 0 ? void 0 : _f.toString()) || 'general';
223
+ const comments = reviewCommentsByReviewId.get(reviewId) || [];
224
+ comments.push(rc);
225
+ reviewCommentsByReviewId.set(reviewId, comments);
226
+ }
227
+ for (const review of reviews) {
228
+ const reviewId = review.id.toString();
229
+ const reviewRcs = reviewCommentsByReviewId.get(reviewId) || [];
230
+ const topLevelReviewComments = reviewRcs.filter((rc) => !rc.in_reply_to_id);
231
+ const reviewEvent = {
232
+ type: 'review',
233
+ id: reviewId,
234
+ author: (_h = (_g = review.user) === null || _g === void 0 ? void 0 : _g.login) !== null && _h !== void 0 ? _h : 'unknown',
235
+ createdAt: review.submitted_at ||
236
+ review.created_at ||
237
+ new Date().toISOString(),
238
+ state: review.state === 'APPROVED' ||
239
+ review.state === 'CHANGES_REQUESTED' ||
240
+ review.state === 'DISMISSED'
241
+ ? review.state
242
+ : 'COMMENTED',
243
+ body: (_j = review.body) !== null && _j !== void 0 ? _j : undefined,
244
+ comments: topLevelReviewComments.map((rc) => {
245
+ var _a, _b, _c;
246
+ return ({
247
+ id: rc.id.toString(),
248
+ body: (_a = rc.body) !== null && _a !== void 0 ? _a : '',
249
+ author: (_c = (_b = rc.user) === null || _b === void 0 ? void 0 : _b.login) !== null && _c !== void 0 ? _c : 'unknown',
250
+ createdAt: rc.created_at || new Date().toISOString(),
251
+ path: rc.path,
252
+ line: rc.line,
253
+ startLine: rc.start_line,
254
+ endLine: rc.line,
255
+ diff: findDiffForComment(diffMap, { path: rc.path, line: rc.line }),
256
+ });
257
+ }),
258
+ replies: reviewRcs
259
+ .filter((rc) => rc.in_reply_to_id)
260
+ .map((rc) => {
261
+ var _a, _b, _c;
262
+ return ({
263
+ id: rc.id.toString(),
264
+ body: (_a = rc.body) !== null && _a !== void 0 ? _a : '',
265
+ author: (_c = (_b = rc.user) === null || _b === void 0 ? void 0 : _b.login) !== null && _c !== void 0 ? _c : 'unknown',
266
+ createdAt: rc.created_at || new Date().toISOString(),
267
+ });
268
+ }),
269
+ };
270
+ timeline.push(reviewEvent);
271
+ }
272
+ const generalReviewComments = reviewCommentsByReviewId.get('general') || [];
273
+ for (const rc of generalReviewComments) {
274
+ if (!rc.in_reply_to_id) {
275
+ const repliesForThisComment = generalReviewComments.filter((r) => r.in_reply_to_id === rc.id);
276
+ const reviewEvent = {
277
+ type: 'review',
278
+ id: rc.id.toString(),
279
+ author: (_l = (_k = rc.user) === null || _k === void 0 ? void 0 : _k.login) !== null && _l !== void 0 ? _l : 'unknown',
280
+ createdAt: new Date().toISOString(),
281
+ state: 'COMMENTED',
282
+ comments: [
283
+ {
284
+ id: rc.id.toString(),
285
+ body: (_m = rc.body) !== null && _m !== void 0 ? _m : '',
286
+ author: (_p = (_o = rc.user) === null || _o === void 0 ? void 0 : _o.login) !== null && _p !== void 0 ? _p : 'unknown',
287
+ createdAt: new Date().toISOString(),
288
+ path: rc.path,
289
+ line: rc.line,
290
+ startLine: rc.start_line,
291
+ endLine: rc.line,
292
+ diff: findDiffForComment(diffMap, { path: rc.path, line: rc.line }),
293
+ },
294
+ ],
295
+ replies: repliesForThisComment.map((r) => {
296
+ var _a, _b, _c;
297
+ return ({
298
+ id: r.id.toString(),
299
+ body: (_a = r.body) !== null && _a !== void 0 ? _a : '',
300
+ author: (_c = (_b = r.user) === null || _b === void 0 ? void 0 : _b.login) !== null && _c !== void 0 ? _c : 'unknown',
301
+ createdAt: new Date().toISOString(),
302
+ });
303
+ }),
304
+ };
305
+ timeline.push(reviewEvent);
306
+ }
307
+ }
308
+ timeline.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
309
+ const prInfo = {
310
+ title: pr.title,
311
+ number: pr.number,
312
+ baseBranch: pr.base.ref,
313
+ headBranch: pr.head.ref,
314
+ description: (_q = pr.body) !== null && _q !== void 0 ? _q : undefined,
315
+ url: pr.html_url,
316
+ };
317
+ return { pr: prInfo, timeline, checkRuns };
318
+ });
319
+ }
320
+ export function formatDigest(pr, timeline, checkRuns = []) {
321
+ const reviewEvents = timeline.filter((e) => e.type === 'review');
322
+ const approvedCount = reviewEvents.filter((r) => r.state === 'APPROVED').length;
323
+ const changesRequestedCount = reviewEvents.filter((r) => r.state === 'CHANGES_REQUESTED').length;
324
+ const commentedCount = reviewEvents.filter((r) => r.state === 'COMMENTED').length;
325
+ const dismissedCount = reviewEvents.filter((r) => r.state === 'DISMISSED').length;
326
+ return h1(link(pr.url, `${pr.title} #${pr.number}`), h2('PR Information'), blockQuote('This digest contains all information needed to address review comments and make requested changes.'), unorderedList(`Base branch: \`${pr.baseBranch}\` (use for \`git diff ${pr.baseBranch}\`)`, `Head branch: \`${pr.headBranch}\``), pr.description ? h2('Description', blockQuote(pr.description)) : '', h2('Timeline'), ...timeline.map((event) => formatTimelineEvent(event)), h2('Status Checks'), formatStatusChecks(checkRuns), h2('Summary'), h3('Review Statistics'), unorderedList(`Total reviews: ${reviewEvents.length}`, `Approved: ${approvedCount} ✓`, `Changes requested: ${changesRequestedCount}`, `Commented: ${commentedCount}`, `Dismissed: ${dismissedCount}`), h3('Action Items'), formatActionItems(timeline), h3('Git Commands'), codeBlock(`# View changes in files with comments
327
+ git diff ${pr.baseBranch}
328
+
329
+ # View changes for a specific file
330
+ git diff ${pr.baseBranch} -- path/to/file.ts`, 'bash'), h2('DEVELOPER COMMENTS'), blockQuote('The below comments were written by developer of this PR, and provide extra notes / relevant context to addressing PR review.'), blockQuote('[...fill me in]'));
331
+ }
332
+ function formatTimelineEvent(event) {
333
+ if (event.type === 'push') {
334
+ return h3(`PUSH ${event.sha}`, bold(event.message), link(event.url, 'View commit'));
335
+ }
336
+ if (event.type === 'comment') {
337
+ return h3(`COMMENT ${event.author}`, blockQuote(event.body));
338
+ }
339
+ if (event.type === 'review') {
340
+ const stateBadge = event.state === 'APPROVED'
341
+ ? '✓ APPROVED'
342
+ : event.state === 'CHANGES_REQUESTED'
343
+ ? '❌ CHANGES REQUESTED'
344
+ : event.state === 'DISMISSED'
345
+ ? '⊗ DISMISSED'
346
+ : '💬 COMMENTED';
347
+ const commentsSection = event.comments.length > 0
348
+ ? event.comments.map((c) => formatReviewComment(c)).join('\n\n')
349
+ : '';
350
+ const repliesSection = event.replies.length > 0
351
+ ? '\n\n**Replies:**\n\n' +
352
+ event.replies
353
+ .map((r) => `> @${r.author}: ${blockQuote(r.body)}`)
354
+ .join('\n\n')
355
+ : '';
356
+ return h3(`REVIEW ${stateBadge} by @${event.author}`, event.body ? blockQuote(event.body) : '', commentsSection, repliesSection);
357
+ }
358
+ return '';
359
+ }
360
+ function formatStatusChecks(checkRuns) {
361
+ if (checkRuns.length === 0) {
362
+ return '*No status checks found.*';
363
+ }
364
+ const successful = checkRuns.filter((c) => c.conclusion === 'success');
365
+ const failed = checkRuns.filter((c) => c.conclusion === 'failure');
366
+ const pending = checkRuns.filter((c) => c.status === 'in_progress' || c.status === 'queued');
367
+ const cancelled = checkRuns.filter((c) => c.conclusion === 'cancelled');
368
+ if (successful.length === checkRuns.length) {
369
+ return `✅ All ${checkRuns.length} status checks passed.`;
370
+ }
371
+ const sections = [];
372
+ if (failed.length > 0) {
373
+ sections.push(h3('Failed Checks', ...failed.map((c) => formatCheckRun(c, '❌'))));
374
+ }
375
+ if (pending.length > 0) {
376
+ sections.push(h3('Pending Checks', ...pending.map((c) => formatCheckRun(c, '⏳'))));
377
+ }
378
+ if (cancelled.length > 0) {
379
+ sections.push(h3('Cancelled Checks', ...cancelled.map((c) => formatCheckRun(c, '⊗'))));
380
+ }
381
+ if (successful.length > 0) {
382
+ sections.push(h3('Passed Checks', ...successful.map((c) => formatCheckRun(c, '✅'))));
383
+ }
384
+ return sections.join('\n\n');
385
+ }
386
+ function formatCheckRun(checkRun, emoji) {
387
+ const nxCloudLinks = checkRun.logs.some((log) => log.includes('nx.app'));
388
+ const statusIcon = emoji;
389
+ const hasAiSummary = checkRun.aiSummary && checkRun.aiSummary.trim().length > 0;
390
+ const aiSummaryText = hasAiSummary ? checkRun.aiSummary : '';
391
+ return (`${statusIcon} **${checkRun.name}**\n\n` +
392
+ (nxCloudLinks
393
+ ? `> ⚠️ **Nx Cloud link detected** - This check can be fetched using Nx Cloud MCP/skills.\n\n`
394
+ : '') +
395
+ (hasAiSummary
396
+ ? `> **AI Summary**:\n\n${blockQuote(aiSummaryText)}\n\n`
397
+ : '') +
398
+ (checkRun.htmlUrl ? link(checkRun.htmlUrl, 'View details') : ''));
399
+ }
400
+ function formatReviewComment(comment) {
401
+ const location = comment.path
402
+ ? `**${comment.path}**${comment.line ? `:${comment.line}` : ''}`
403
+ : '';
404
+ const diffSection = comment.diff
405
+ ? `\n\n${codeBlock(comment.diff, 'diff')}`
406
+ : '';
407
+ return `@${comment.author} on ${location}:\n\n${blockQuote(comment.body)}${diffSection}`;
408
+ }
409
+ function formatActionItems(timeline) {
410
+ const changesRequested = timeline.filter((e) => e.type === 'review' && e.state === 'CHANGES_REQUESTED');
411
+ const needsResponse = timeline.filter((e) => e.type === 'review' && e.state === 'COMMENTED');
412
+ const items = [];
413
+ if (changesRequested.length > 0) {
414
+ items.push(h4('Changes Requested', ...changesRequested.map((r) => { var _a, _b; return `- @${r.author}: ${(_b = (_a = r.body) === null || _a === void 0 ? void 0 : _a.substring(0, 100)) !== null && _b !== void 0 ? _b : ''}...`; })));
415
+ }
416
+ if (needsResponse.length > 0) {
417
+ items.push(h4('Pending Responses', ...needsResponse.map((r) => { var _a, _b; return `- @${r.author}: ${(_b = (_a = r.body) === null || _a === void 0 ? void 0 : _a.substring(0, 100)) !== null && _b !== void 0 ? _b : ''}...`; })));
418
+ }
419
+ if (items.length === 0) {
420
+ items.push('No action items outstanding.');
421
+ }
422
+ return items.join('\n\n');
423
+ }
424
+ //# sourceMappingURL=digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"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"}