dsh-gitnexus-plus 0.1.2 → 0.1.4
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-CN.md +189 -0
- package/README.md +219 -597
- package/lib/bin/graph-helper.d.ts +21 -0
- package/lib/bin/graph-helper.d.ts.map +1 -0
- package/lib/bin/graph-helper.js +71 -0
- package/lib/bin/graph-helper.js.map +1 -0
- package/lib/client.js +4107 -2029
- package/lib/gitnexus/analyze.d.ts +48 -8
- package/lib/gitnexus/analyze.d.ts.map +1 -1
- package/lib/gitnexus/analyze.js +376 -75
- package/lib/gitnexus/analyze.js.map +1 -1
- package/lib/gitnexus/commands.d.ts +8 -1
- package/lib/gitnexus/commands.d.ts.map +1 -1
- package/lib/gitnexus/commands.js +19 -0
- package/lib/gitnexus/commands.js.map +1 -1
- package/lib/gitnexus/coverage.d.ts +16 -0
- package/lib/gitnexus/coverage.d.ts.map +1 -1
- package/lib/gitnexus/coverage.js +58 -1
- package/lib/gitnexus/coverage.js.map +1 -1
- package/lib/gitnexus/delta.d.ts +144 -0
- package/lib/gitnexus/delta.d.ts.map +1 -0
- package/lib/gitnexus/delta.js +347 -0
- package/lib/gitnexus/delta.js.map +1 -0
- package/lib/gitnexus/git-activity.d.ts +77 -0
- package/lib/gitnexus/git-activity.d.ts.map +1 -1
- package/lib/gitnexus/git-activity.js +327 -8
- package/lib/gitnexus/git-activity.js.map +1 -1
- package/lib/gitnexus/graph.d.ts +126 -0
- package/lib/gitnexus/graph.d.ts.map +1 -0
- package/lib/gitnexus/graph.js +472 -0
- package/lib/gitnexus/graph.js.map +1 -0
- package/lib/gitnexus/root.d.ts +0 -3
- package/lib/gitnexus/root.d.ts.map +1 -1
- package/lib/gitnexus/root.js +64 -5
- package/lib/gitnexus/root.js.map +1 -1
- package/lib/gitnexus/scan.d.ts +2 -0
- package/lib/gitnexus/scan.d.ts.map +1 -1
- package/lib/gitnexus/scan.js +3 -2
- package/lib/gitnexus/scan.js.map +1 -1
- package/lib/gitnexus/search.d.ts +21 -8
- package/lib/gitnexus/search.d.ts.map +1 -1
- package/lib/gitnexus/search.js +87 -13
- package/lib/gitnexus/search.js.map +1 -1
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +170 -2
- package/lib/index.js.map +1 -1
- package/lib/routes/analyze.d.ts +3 -2
- package/lib/routes/analyze.d.ts.map +1 -1
- package/lib/routes/analyze.js +8 -2
- package/lib/routes/analyze.js.map +1 -1
- package/lib/routes/coverage.d.ts +2 -1
- package/lib/routes/coverage.d.ts.map +1 -1
- package/lib/routes/coverage.js +53 -1
- package/lib/routes/coverage.js.map +1 -1
- package/lib/routes/delta.d.ts +22 -0
- package/lib/routes/delta.d.ts.map +1 -0
- package/lib/routes/delta.js +50 -0
- package/lib/routes/delta.js.map +1 -0
- package/lib/routes/file-diff.d.ts +19 -0
- package/lib/routes/file-diff.d.ts.map +1 -0
- package/lib/routes/file-diff.js +69 -0
- package/lib/routes/file-diff.js.map +1 -0
- package/lib/routes/file-history.d.ts +21 -0
- package/lib/routes/file-history.d.ts.map +1 -0
- package/lib/routes/file-history.js +69 -0
- package/lib/routes/file-history.js.map +1 -0
- package/lib/routes/graph.d.ts +22 -0
- package/lib/routes/graph.d.ts.map +1 -0
- package/lib/routes/graph.js +71 -0
- package/lib/routes/graph.js.map +1 -0
- package/package.json +3 -2
|
@@ -53,6 +53,34 @@ async function git(repoPath, args, maxBuffer = 32 * 1024 * 1024) {
|
|
|
53
53
|
return null;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
+
/** Patch is capped: a minified vendor file can carry megabytes in one commit. */
|
|
57
|
+
const DIFF_LIMIT_BYTES = 120 * 1024;
|
|
58
|
+
/**
|
|
59
|
+
* The change a commit made to one file.
|
|
60
|
+
*
|
|
61
|
+
* `git show <sha> -- <path>` is the only command that answers this without checking
|
|
62
|
+
* out anything, and it is read-only. The path has already been resolved inside the
|
|
63
|
+
* project by the route; the sha is validated here because it reaches git as an argument.
|
|
64
|
+
*/
|
|
65
|
+
export async function readCommitDiff(repoPath, filePath, sha) {
|
|
66
|
+
const clean = String(sha ?? '').trim();
|
|
67
|
+
if (!/^[0-9a-fA-F]{7,40}$/.test(clean)) {
|
|
68
|
+
return { path: filePath, sha: clean, available: false, patch: '', truncated: false, reason: '提交号不合法' };
|
|
69
|
+
}
|
|
70
|
+
const out = await git(repoPath, ['show', '--format=', '--no-color', '--unified=3', clean, '--', filePath], DIFF_LIMIT_BYTES * 2);
|
|
71
|
+
if (out === null) {
|
|
72
|
+
return { path: filePath, sha: clean, available: false, patch: '', truncated: false, reason: 'git 无法读取该提交的改动' };
|
|
73
|
+
}
|
|
74
|
+
const truncated = Buffer.byteLength(out, 'utf8') > DIFF_LIMIT_BYTES;
|
|
75
|
+
return {
|
|
76
|
+
path: filePath,
|
|
77
|
+
sha: clean,
|
|
78
|
+
available: true,
|
|
79
|
+
patch: truncated ? out.slice(0, DIFF_LIMIT_BYTES) : out,
|
|
80
|
+
truncated,
|
|
81
|
+
reason: null,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
56
84
|
/**
|
|
57
85
|
* Whether an author is a machine account.
|
|
58
86
|
*
|
|
@@ -158,6 +186,15 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
158
186
|
return 'missing';
|
|
159
187
|
return 'excluded';
|
|
160
188
|
};
|
|
189
|
+
// The branch list does not depend on the log, so it starts before the log is parsed
|
|
190
|
+
// and is awaited where it is used. Two windows of git work overlap instead of queue.
|
|
191
|
+
const branchPromise = git(repoPath, [
|
|
192
|
+
'for-each-ref',
|
|
193
|
+
`--count=${maxBranches}`,
|
|
194
|
+
'--sort=-committerdate',
|
|
195
|
+
`--format=%(refname:short)${US}%(committerdate:iso-strict)${US}%(authorname)${US}%(HEAD)`,
|
|
196
|
+
'refs/heads',
|
|
197
|
+
]);
|
|
161
198
|
const log = await git(repoPath, [
|
|
162
199
|
'log',
|
|
163
200
|
`--since=${since}`,
|
|
@@ -171,6 +208,7 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
171
208
|
const authors = [];
|
|
172
209
|
const files = new Map();
|
|
173
210
|
const authorMap = new Map();
|
|
211
|
+
const commits = [];
|
|
174
212
|
let commitCount = 0;
|
|
175
213
|
let totalInsertions = 0;
|
|
176
214
|
let totalDeletions = 0;
|
|
@@ -186,10 +224,19 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
186
224
|
const body = newline === -1 ? '' : chunk.slice(newline + 1);
|
|
187
225
|
// `split` yields a plain array, so a short header really can leave these
|
|
188
226
|
// undefined even though the declared element type says otherwise.
|
|
189
|
-
const [sha, author, email, date,
|
|
227
|
+
const [sha, author, email, date, subject] = header.split(US);
|
|
190
228
|
if (sha === undefined || date === undefined)
|
|
191
229
|
continue;
|
|
192
230
|
commitCount += 1;
|
|
231
|
+
const commit = {
|
|
232
|
+
sha,
|
|
233
|
+
date,
|
|
234
|
+
author: author ?? '?',
|
|
235
|
+
subject: subject ?? '',
|
|
236
|
+
insertions: 0,
|
|
237
|
+
deletions: 0,
|
|
238
|
+
fileSet: new Set(),
|
|
239
|
+
};
|
|
193
240
|
if (newestCommit === '' || date > newestCommit)
|
|
194
241
|
newestCommit = date;
|
|
195
242
|
if (oldestCommit === '' || date < oldestCommit)
|
|
@@ -237,6 +284,9 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
237
284
|
entry.insertions += ins;
|
|
238
285
|
entry.deletions += del;
|
|
239
286
|
entry.fileSet.add(filePath);
|
|
287
|
+
commit.insertions += ins;
|
|
288
|
+
commit.deletions += del;
|
|
289
|
+
commit.fileSet.add(filePath);
|
|
240
290
|
let file = files.get(filePath);
|
|
241
291
|
if (file === undefined) {
|
|
242
292
|
file = { path: filePath, changes: 0, insertions: 0, deletions: 0, lastChange: date };
|
|
@@ -249,11 +299,129 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
249
299
|
file.lastChange = date;
|
|
250
300
|
}
|
|
251
301
|
stamps.push({ date, insertions: commitInsertions, deletions: commitDeletions });
|
|
302
|
+
commits.push(commit);
|
|
252
303
|
}
|
|
253
304
|
const toActivityFile = (file) => {
|
|
254
305
|
const verdict = classified ? classify(file.path) : 'excluded';
|
|
255
306
|
return { ...file, indexed: verdict === 'indexed', verdict };
|
|
256
307
|
};
|
|
308
|
+
/**
|
|
309
|
+
* `HEAD` against the commit the index was built from.
|
|
310
|
+
*
|
|
311
|
+
* Deliberately not part of the rolling window: the baseline can be older than
|
|
312
|
+
* 90 days and the question is still "what changed since we indexed?", so this uses
|
|
313
|
+
* a direct diff with its own bounded buffer rather than a wider log.
|
|
314
|
+
*/
|
|
315
|
+
const readBaseline = async (ref, source) => {
|
|
316
|
+
const short = ref.slice(0, 8);
|
|
317
|
+
// Three independent reads of the same ref pair: the subject, the numstat, and the
|
|
318
|
+
// commit count. Running them together keeps the baseline to one git round-trip
|
|
319
|
+
// instead of three, which is most of what this panel load used to spend.
|
|
320
|
+
const [show, diff, countRaw] = await Promise.all([
|
|
321
|
+
git(repoPath, ['show', '-s', `--format=%H${US}%aI${US}%an${US}%s`, ref]),
|
|
322
|
+
git(repoPath, ['diff', '--numstat', '--no-renames', `${ref}..HEAD`]),
|
|
323
|
+
git(repoPath, ['rev-list', '--count', `${ref}..HEAD`]),
|
|
324
|
+
]);
|
|
325
|
+
if (show === null) {
|
|
326
|
+
return {
|
|
327
|
+
ref,
|
|
328
|
+
source,
|
|
329
|
+
available: false,
|
|
330
|
+
shortSha: short,
|
|
331
|
+
date: null,
|
|
332
|
+
subject: null,
|
|
333
|
+
author: null,
|
|
334
|
+
commits: 0,
|
|
335
|
+
files: 0,
|
|
336
|
+
insertions: 0,
|
|
337
|
+
deletions: 0,
|
|
338
|
+
changedFiles: [],
|
|
339
|
+
reason: '索引记录的基线提交在当前仓库中不可读(可能被 rebase 或 force-push 丢弃)',
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
const [sha, date, author, subject] = show.trim().split(US);
|
|
343
|
+
const base = {
|
|
344
|
+
ref,
|
|
345
|
+
source,
|
|
346
|
+
shortSha: (sha ?? ref).slice(0, 8),
|
|
347
|
+
date: date ?? null,
|
|
348
|
+
subject: subject ?? null,
|
|
349
|
+
author: author ?? null,
|
|
350
|
+
};
|
|
351
|
+
if (diff === null) {
|
|
352
|
+
return {
|
|
353
|
+
...base,
|
|
354
|
+
available: false,
|
|
355
|
+
commits: 0,
|
|
356
|
+
files: 0,
|
|
357
|
+
insertions: 0,
|
|
358
|
+
deletions: 0,
|
|
359
|
+
changedFiles: [],
|
|
360
|
+
reason: '基线提交可读,但 diff 超出上限或失败',
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
const changed = new Map();
|
|
364
|
+
let insertions = 0;
|
|
365
|
+
let deletions = 0;
|
|
366
|
+
for (const line of diff.split('\n')) {
|
|
367
|
+
if (line.trim() === '')
|
|
368
|
+
continue;
|
|
369
|
+
const parts = line.split('\t');
|
|
370
|
+
if (parts.length < 3)
|
|
371
|
+
continue;
|
|
372
|
+
const [addedRaw, deletedRaw, ...pathParts] = parts;
|
|
373
|
+
const filePath = pathParts.join('\t');
|
|
374
|
+
if (filePath === '')
|
|
375
|
+
continue;
|
|
376
|
+
const added = Number.parseInt(addedRaw, 10);
|
|
377
|
+
const deleted = Number.parseInt(deletedRaw, 10);
|
|
378
|
+
const ins = Number.isFinite(added) ? added : 0;
|
|
379
|
+
const del = Number.isFinite(deleted) ? deleted : 0;
|
|
380
|
+
insertions += ins;
|
|
381
|
+
deletions += del;
|
|
382
|
+
changed.set(filePath, { insertions: ins, deletions: del });
|
|
383
|
+
}
|
|
384
|
+
const commitCount = countRaw === null ? 0 : Number.parseInt(countRaw.trim(), 10);
|
|
385
|
+
const changedFiles = [...changed.entries()]
|
|
386
|
+
.sort((a, b) => b[1].insertions + b[1].deletions - (a[1].insertions + a[1].deletions))
|
|
387
|
+
.slice(0, 50)
|
|
388
|
+
.map(([filePath, delta]) => {
|
|
389
|
+
const verdict = classified ? classify(filePath) : 'excluded';
|
|
390
|
+
return {
|
|
391
|
+
path: filePath,
|
|
392
|
+
changes: 1,
|
|
393
|
+
insertions: delta.insertions,
|
|
394
|
+
deletions: delta.deletions,
|
|
395
|
+
lastChange: base.date ?? '',
|
|
396
|
+
indexed: verdict === 'indexed',
|
|
397
|
+
verdict,
|
|
398
|
+
};
|
|
399
|
+
});
|
|
400
|
+
return {
|
|
401
|
+
...base,
|
|
402
|
+
available: true,
|
|
403
|
+
commits: Number.isFinite(commitCount) ? commitCount : 0,
|
|
404
|
+
files: changed.size,
|
|
405
|
+
insertions,
|
|
406
|
+
deletions,
|
|
407
|
+
changedFiles,
|
|
408
|
+
reason: null,
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
const baselineRef = typeof options.baselineRef === 'string' ? options.baselineRef.trim() : '';
|
|
412
|
+
// The manifest can legitimately have no recorded commit. Falling back to the
|
|
413
|
+
// oldest commit in the activity window still answers "what changed recently?",
|
|
414
|
+
// but the source is carried so the UI never calls it an index baseline.
|
|
415
|
+
// `oldestCommit` is the oldest *date*; the fallback needs the oldest SHA, which
|
|
416
|
+
// is the last commit after `git log` has produced newest-first entries.
|
|
417
|
+
const windowBaseline = commits.length > 0 ? commits[commits.length - 1].sha : '';
|
|
418
|
+
// Started here and awaited at the end: the baseline is two or three more git calls,
|
|
419
|
+
// and it does not depend on the branch list that is awaited in between.
|
|
420
|
+
const baselinePromise = baselineRef !== ''
|
|
421
|
+
? readBaseline(baselineRef, 'index')
|
|
422
|
+
: windowBaseline !== ''
|
|
423
|
+
? readBaseline(windowBaseline, 'window')
|
|
424
|
+
: null;
|
|
257
425
|
const byChanges = [...files.values()]
|
|
258
426
|
.sort((a, b) => b.changes - a.changes || (a.path < b.path ? -1 : 1))
|
|
259
427
|
.slice(0, maxFiles)
|
|
@@ -270,13 +438,7 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
270
438
|
files: fileSet.size,
|
|
271
439
|
bot: looksLikeBot(rest.name, rest.email),
|
|
272
440
|
})));
|
|
273
|
-
const branchRaw = await
|
|
274
|
-
'for-each-ref',
|
|
275
|
-
`--count=${maxBranches}`,
|
|
276
|
-
'--sort=-committerdate',
|
|
277
|
-
`--format=%(refname:short)${US}%(committerdate:iso-strict)${US}%(authorname)${US}%(HEAD)`,
|
|
278
|
-
'refs/heads',
|
|
279
|
-
]);
|
|
441
|
+
const branchRaw = await branchPromise;
|
|
280
442
|
const branches = [];
|
|
281
443
|
if (branchRaw !== null) {
|
|
282
444
|
for (const line of branchRaw.split('\n')) {
|
|
@@ -307,6 +469,55 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
307
469
|
.sort((a, b) => b.changes - a.changes || (a.path < b.path ? -1 : 1))
|
|
308
470
|
.slice(0, 50)
|
|
309
471
|
.map(toActivityFile);
|
|
472
|
+
// The cross-tab keeps the three-way verdict and adds the volume that made each
|
|
473
|
+
// row matter: a "missing" file changed once is different from 40 commits.
|
|
474
|
+
const crossRows = ['indexed', 'excluded', 'missing'].map((verdict) => ({
|
|
475
|
+
verdict,
|
|
476
|
+
files: 0,
|
|
477
|
+
changes: 0,
|
|
478
|
+
insertions: 0,
|
|
479
|
+
deletions: 0,
|
|
480
|
+
}));
|
|
481
|
+
const crossByVerdict = new Map(crossRows.map((row) => [row.verdict, row]));
|
|
482
|
+
let totalChanges = 0;
|
|
483
|
+
for (const file of files.values()) {
|
|
484
|
+
const verdict = classified ? classify(file.path) : 'excluded';
|
|
485
|
+
const row = crossByVerdict.get(verdict);
|
|
486
|
+
if (row === undefined)
|
|
487
|
+
continue;
|
|
488
|
+
row.files += 1;
|
|
489
|
+
row.changes += file.changes;
|
|
490
|
+
row.insertions += file.insertions;
|
|
491
|
+
row.deletions += file.deletions;
|
|
492
|
+
totalChanges += file.changes;
|
|
493
|
+
}
|
|
494
|
+
const cross = { rows: crossRows, totalFiles: files.size, totalChanges };
|
|
495
|
+
const timelineCap = 100;
|
|
496
|
+
const timeline = commits.slice(0, timelineCap).map((commit) => {
|
|
497
|
+
let anyMissing = false;
|
|
498
|
+
let anyIndexed = false;
|
|
499
|
+
for (const path of commit.fileSet) {
|
|
500
|
+
if (!classified)
|
|
501
|
+
continue;
|
|
502
|
+
const verdict = classify(path);
|
|
503
|
+
if (verdict === 'missing')
|
|
504
|
+
anyMissing = true;
|
|
505
|
+
else if (verdict === 'indexed')
|
|
506
|
+
anyIndexed = true;
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
sha: commit.sha,
|
|
510
|
+
shortSha: commit.sha.slice(0, 8),
|
|
511
|
+
date: commit.date,
|
|
512
|
+
author: commit.author,
|
|
513
|
+
subject: commit.subject,
|
|
514
|
+
files: commit.fileSet.size,
|
|
515
|
+
insertions: commit.insertions,
|
|
516
|
+
deletions: commit.deletions,
|
|
517
|
+
verdict: anyMissing ? 'missing' : anyIndexed ? 'indexed' : 'excluded',
|
|
518
|
+
};
|
|
519
|
+
});
|
|
520
|
+
const baseline = baselinePromise === null ? null : await baselinePromise;
|
|
310
521
|
return {
|
|
311
522
|
window: {
|
|
312
523
|
sinceDays,
|
|
@@ -340,6 +551,114 @@ export async function readGitActivity(repoPath, options = {}) {
|
|
|
340
551
|
branches,
|
|
341
552
|
histogram: buildHistogram(stamps, sinceDays),
|
|
342
553
|
currentBranch: branches.find((b) => b.current)?.name ?? null,
|
|
554
|
+
cross,
|
|
555
|
+
baseline,
|
|
556
|
+
timeline,
|
|
557
|
+
timelineTruncated: commits.length > timelineCap,
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* Read one file's commits for its own timeline.
|
|
562
|
+
*
|
|
563
|
+
* Kept separate from {@link readGitActivity} because "show me this file's history"
|
|
564
|
+
* should not pay for the whole repository's numstat. `--follow` is intentional: a
|
|
565
|
+
* renamed file's timeline that stops at the rename is a misleading one.
|
|
566
|
+
*/
|
|
567
|
+
export async function readFileActivity(repoPath, filePath, options = {}) {
|
|
568
|
+
const normalized = filePath.replace(/\\/g, '/').replace(/^(?:\.\/)+/, '');
|
|
569
|
+
const invalid = normalized === '' ||
|
|
570
|
+
normalized.startsWith('/') ||
|
|
571
|
+
/^[A-Za-z]:/.test(normalized) ||
|
|
572
|
+
normalized.includes('\0') ||
|
|
573
|
+
normalized.split('/').includes('..');
|
|
574
|
+
const rawDays = typeof options.days === 'number' && Number.isFinite(options.days) ? options.days : 7;
|
|
575
|
+
// The UI offers 7/14/30; clamp here too, so a hand-written URL cannot turn this
|
|
576
|
+
// into an unbounded history read.
|
|
577
|
+
const days = Math.max(1, Math.min(30, Math.floor(rawDays)));
|
|
578
|
+
const maxCommits = Math.max(1, Math.min(200, Math.floor(options.maxCommits ?? 100)));
|
|
579
|
+
if (invalid) {
|
|
580
|
+
return {
|
|
581
|
+
path: normalized,
|
|
582
|
+
available: false,
|
|
583
|
+
days,
|
|
584
|
+
commits: 0,
|
|
585
|
+
insertions: 0,
|
|
586
|
+
deletions: 0,
|
|
587
|
+
timeline: [],
|
|
588
|
+
reason: '文件路径必须在项目内',
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
const log = await git(repoPath, [
|
|
592
|
+
'log',
|
|
593
|
+
'--follow',
|
|
594
|
+
`--since=${days} days ago`,
|
|
595
|
+
`--max-count=${maxCommits}`,
|
|
596
|
+
'--numstat',
|
|
597
|
+
`--format=${RS}%H${US}%an${US}%ae${US}%aI${US}%s`,
|
|
598
|
+
'--',
|
|
599
|
+
normalized,
|
|
600
|
+
]);
|
|
601
|
+
if (log === null) {
|
|
602
|
+
return {
|
|
603
|
+
path: normalized,
|
|
604
|
+
available: false,
|
|
605
|
+
days,
|
|
606
|
+
commits: 0,
|
|
607
|
+
insertions: 0,
|
|
608
|
+
deletions: 0,
|
|
609
|
+
timeline: [],
|
|
610
|
+
reason: 'git 不可用或无法读取该文件的历史',
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
const timeline = [];
|
|
614
|
+
let insertions = 0;
|
|
615
|
+
let deletions = 0;
|
|
616
|
+
for (const chunk of log.split(RS)) {
|
|
617
|
+
if (chunk.trim() === '')
|
|
618
|
+
continue;
|
|
619
|
+
const newline = chunk.indexOf('\n');
|
|
620
|
+
const header = newline === -1 ? chunk : chunk.slice(0, newline);
|
|
621
|
+
const body = newline === -1 ? '' : chunk.slice(newline + 1);
|
|
622
|
+
const [sha, author, , date, subject] = header.split(US);
|
|
623
|
+
if (sha === undefined || date === undefined)
|
|
624
|
+
continue;
|
|
625
|
+
let commitInsertions = 0;
|
|
626
|
+
let commitDeletions = 0;
|
|
627
|
+
for (const line of body.split('\n')) {
|
|
628
|
+
if (line.trim() === '')
|
|
629
|
+
continue;
|
|
630
|
+
const parts = line.split('\t');
|
|
631
|
+
if (parts.length < 3)
|
|
632
|
+
continue;
|
|
633
|
+
const [addedRaw, deletedRaw] = parts;
|
|
634
|
+
const added = Number.parseInt(addedRaw, 10);
|
|
635
|
+
const deleted = Number.parseInt(deletedRaw, 10);
|
|
636
|
+
const ins = Number.isFinite(added) ? added : 0;
|
|
637
|
+
const del = Number.isFinite(deleted) ? deleted : 0;
|
|
638
|
+
commitInsertions += ins;
|
|
639
|
+
commitDeletions += del;
|
|
640
|
+
}
|
|
641
|
+
insertions += commitInsertions;
|
|
642
|
+
deletions += commitDeletions;
|
|
643
|
+
timeline.push({
|
|
644
|
+
sha,
|
|
645
|
+
shortSha: sha.slice(0, 8),
|
|
646
|
+
date,
|
|
647
|
+
author: author ?? '?',
|
|
648
|
+
subject: subject ?? '',
|
|
649
|
+
insertions: commitInsertions,
|
|
650
|
+
deletions: commitDeletions,
|
|
651
|
+
});
|
|
652
|
+
}
|
|
653
|
+
return {
|
|
654
|
+
path: normalized,
|
|
655
|
+
available: true,
|
|
656
|
+
days,
|
|
657
|
+
commits: timeline.length,
|
|
658
|
+
insertions,
|
|
659
|
+
deletions,
|
|
660
|
+
timeline,
|
|
661
|
+
reason: null,
|
|
343
662
|
};
|
|
344
663
|
}
|
|
345
664
|
//# sourceMappingURL=git-activity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-activity.js","sourceRoot":"","sources":["../../src/gitnexus/git-activity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-activity.js","sourceRoot":"","sources":["../../src/gitnexus/git-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded graph projection for the panel's graph view.
|
|
3
|
+
*
|
|
4
|
+
* WHY A PROJECTION AND NOT CYPHER OVER HTTP
|
|
5
|
+
* -----------------------------------------
|
|
6
|
+
* The graph itself is the product here: it answers "what is in this index" better than
|
|
7
|
+
* any table. But a view that accepts Cypher from a browser turns a read-only panel into
|
|
8
|
+
* an arbitrary query endpoint over the user's code graph — and the roadmap's rule is a
|
|
9
|
+
* whitelist of projections, never raw forwarding. So this module exposes exactly two
|
|
10
|
+
* shapes:
|
|
11
|
+
*
|
|
12
|
+
* `communities` every community as a node, with aggregated cross-community edges
|
|
13
|
+
* `community` one community's member symbols and the relations among them
|
|
14
|
+
*
|
|
15
|
+
* Both are bounded by a node budget and an edge budget, and both report what they left
|
|
16
|
+
* out. A 93k-node repository must not be able to freeze the panel, and a view that
|
|
17
|
+
* silently drops half the graph is worse than one that says it did.
|
|
18
|
+
*
|
|
19
|
+
* WHERE THIS RUNS
|
|
20
|
+
* ---------------
|
|
21
|
+
* `projectGraph` talks to LadybugDB, so it can only run on the system Node — the host
|
|
22
|
+
* is Electron's Node and cannot load the native addon (see `search.ts`). The host calls
|
|
23
|
+
* `projectViaHelper`, which starts `lib/bin/graph-helper.js` and parses one JSON object,
|
|
24
|
+
* exactly like the search path. Keeping the query code in the helper process also means
|
|
25
|
+
* a query that crashes the native engine takes down a short-lived child, not the panel.
|
|
26
|
+
*/
|
|
27
|
+
import type { ShellLike } from './analyze.js';
|
|
28
|
+
/** The projections a caller may ask for. Anything else is refused, not guessed. */
|
|
29
|
+
export type GraphView = 'communities' | 'community';
|
|
30
|
+
export declare const GRAPH_VIEWS: readonly GraphView[];
|
|
31
|
+
/** A node as the view needs it — enough to draw it, label it, and open its file. */
|
|
32
|
+
export interface GraphNode {
|
|
33
|
+
id: string;
|
|
34
|
+
/** GitNexus's own label (Community, Function, Class, …), not a translated kind. */
|
|
35
|
+
kind: string;
|
|
36
|
+
name: string;
|
|
37
|
+
/** Repo-relative path, for the click-to-open behaviour. Null on community nodes. */
|
|
38
|
+
filePath: string | null;
|
|
39
|
+
startLine: number | null;
|
|
40
|
+
/** Community nodes only: how many symbols it holds. */
|
|
41
|
+
symbolCount?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface GraphEdge {
|
|
44
|
+
source: string;
|
|
45
|
+
target: string;
|
|
46
|
+
/** GitNexus's relation type (CALLS, USES, ACCESSES, …). */
|
|
47
|
+
type: string;
|
|
48
|
+
/** Number of underlying relations this edge aggregates. */
|
|
49
|
+
weight: number;
|
|
50
|
+
}
|
|
51
|
+
export interface GraphProjection {
|
|
52
|
+
view: GraphView;
|
|
53
|
+
/** The community a drill-down is scoped to; null for the overview. */
|
|
54
|
+
scope: string | null;
|
|
55
|
+
nodes: GraphNode[];
|
|
56
|
+
edges: GraphEdge[];
|
|
57
|
+
/** How many nodes exist before the budget, when the count is known. */
|
|
58
|
+
total: number;
|
|
59
|
+
truncated: boolean;
|
|
60
|
+
budget: {
|
|
61
|
+
nodes: number;
|
|
62
|
+
edges: number;
|
|
63
|
+
};
|
|
64
|
+
notes: string[];
|
|
65
|
+
readAt: string;
|
|
66
|
+
}
|
|
67
|
+
export interface GraphOptions {
|
|
68
|
+
view?: GraphView;
|
|
69
|
+
/** Required for `community`; refused when it could not be a literal safely. */
|
|
70
|
+
id?: string;
|
|
71
|
+
/** The plugin-owned GitNexus prefix, when one was installed from the panel. */
|
|
72
|
+
managedPrefix?: string;
|
|
73
|
+
env?: NodeJS.ProcessEnv;
|
|
74
|
+
nodeBudget?: number;
|
|
75
|
+
edgeBudget?: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A projection failure, in the shape the route and the helper both need.
|
|
79
|
+
*
|
|
80
|
+
* Separate from `SearchError` because the codes are different states: a viewer asking
|
|
81
|
+
* for a community that does not exist is a 400 about the request, not a search failure.
|
|
82
|
+
*/
|
|
83
|
+
export type GraphErrorCode = 'invalid-view' | 'invalid-id' | 'not-a-project' | 'no-index' | 'no-index-store' | 'graph-unavailable' | 'index-busy' | 'graph-failed';
|
|
84
|
+
export declare class GraphError extends Error {
|
|
85
|
+
code: GraphErrorCode;
|
|
86
|
+
status: number;
|
|
87
|
+
constructor(code: GraphErrorCode, status: number, message: string);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Reduce a caller-supplied id to something safe inside a single-quoted Cypher literal.
|
|
91
|
+
*
|
|
92
|
+
* The id is interpolated rather than bound because LadybugDB's prepare path does not
|
|
93
|
+
* accept a parameter in every position this query needs (the same limitation `search.ts`
|
|
94
|
+
* documents for `CONTAINS`). Safety comes from **refusing** anything outside a known
|
|
95
|
+
* alphabet — quotes and backslashes cannot appear — rather than from escaping.
|
|
96
|
+
*
|
|
97
|
+
* @returns the id, or null when it is not acceptable
|
|
98
|
+
*/
|
|
99
|
+
export declare function sanitizeGraphId(raw: unknown): string | null;
|
|
100
|
+
/** Whether a value names a projection this module implements. */
|
|
101
|
+
export declare function isGraphView(value: unknown): value is GraphView;
|
|
102
|
+
/**
|
|
103
|
+
* Read one projection.
|
|
104
|
+
*
|
|
105
|
+
* @param repoPath absolute repository root
|
|
106
|
+
*/
|
|
107
|
+
export declare function projectGraph(repoPath: string, options?: GraphOptions): Promise<GraphProjection>;
|
|
108
|
+
/** Options for the subprocess projection. */
|
|
109
|
+
export interface HelperGraphOptions {
|
|
110
|
+
/** The host's shell executor; `null` when the deployment has none. */
|
|
111
|
+
shell: ShellLike | null;
|
|
112
|
+
/** Absolute path to `lib/bin/graph-helper.js`. */
|
|
113
|
+
helperPath: string;
|
|
114
|
+
managedPrefix?: string;
|
|
115
|
+
nodeBudget?: number;
|
|
116
|
+
edgeBudget?: number;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Read a projection in a child Node process.
|
|
120
|
+
*
|
|
121
|
+
* Same execution boundary as `searchViaHelper`, for the same measured reason: the host
|
|
122
|
+
* cannot load `lbugjs.node`. A failure to start the child is reported as
|
|
123
|
+
* `graph-unavailable`, and this plugin never widens the sandbox to make it work.
|
|
124
|
+
*/
|
|
125
|
+
export declare function projectViaHelper(repoPath: string, view: GraphView, id: string | null, options: HelperGraphOptions): Promise<GraphProjection>;
|
|
126
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/gitnexus/graph.ts"],"names":[],"mappings":"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"}
|