@commentray/core 0.0.4 → 0.0.6

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 (51) hide show
  1. package/dist/angles-toml.d.ts +14 -0
  2. package/dist/angles-toml.d.ts.map +1 -1
  3. package/dist/angles-toml.js +51 -0
  4. package/dist/angles-toml.js.map +1 -1
  5. package/dist/blocks.js +1 -1
  6. package/dist/blocks.js.map +1 -1
  7. package/dist/commentray-disk-pairs.d.ts +14 -0
  8. package/dist/commentray-disk-pairs.d.ts.map +1 -0
  9. package/dist/commentray-disk-pairs.js +51 -0
  10. package/dist/commentray-disk-pairs.js.map +1 -0
  11. package/dist/git-relocation-scan.d.ts +9 -0
  12. package/dist/git-relocation-scan.d.ts.map +1 -0
  13. package/dist/git-relocation-scan.js +96 -0
  14. package/dist/git-relocation-scan.js.map +1 -0
  15. package/dist/github-url.d.ts.map +1 -1
  16. package/dist/github-url.js +24 -5
  17. package/dist/github-url.js.map +1 -1
  18. package/dist/index.d.ts +9 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +5 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/marker-ids.d.ts.map +1 -1
  23. package/dist/marker-ids.js +42 -9
  24. package/dist/marker-ids.js.map +1 -1
  25. package/dist/migrate-angles-layout.d.ts +27 -0
  26. package/dist/migrate-angles-layout.d.ts.map +1 -0
  27. package/dist/migrate-angles-layout.js +72 -0
  28. package/dist/migrate-angles-layout.js.map +1 -0
  29. package/dist/paths.d.ts +6 -0
  30. package/dist/paths.d.ts.map +1 -1
  31. package/dist/paths.js +15 -0
  32. package/dist/paths.js.map +1 -1
  33. package/dist/relocation-hints.d.ts +18 -0
  34. package/dist/relocation-hints.d.ts.map +1 -0
  35. package/dist/relocation-hints.js +170 -0
  36. package/dist/relocation-hints.js.map +1 -0
  37. package/dist/scm/git-scm-provider.d.ts.map +1 -1
  38. package/dist/scm/git-scm-provider.js +1 -21
  39. package/dist/scm/git-scm-provider.js.map +1 -1
  40. package/dist/scm/git-spawn.d.ts +10 -0
  41. package/dist/scm/git-spawn.d.ts.map +1 -0
  42. package/dist/scm/git-spawn.js +26 -0
  43. package/dist/scm/git-spawn.js.map +1 -0
  44. package/dist/validate-project.d.ts.map +1 -1
  45. package/dist/validate-project.js +72 -23
  46. package/dist/validate-project.js.map +1 -1
  47. package/dist/walk-commentray-source-md.d.ts +5 -0
  48. package/dist/walk-commentray-source-md.d.ts.map +1 -0
  49. package/dist/walk-commentray-source-md.js +33 -0
  50. package/dist/walk-commentray-source-md.js.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { assertValidAngleId } from "./angles.js";
4
+ import { commentrayAnglesLayoutEnabled, commentrayMarkdownPathForAngle, normalizeRepoRelativePath, } from "./paths.js";
5
+ import { collectMdRelPathsUnderSourceAbs } from "./walk-commentray-source-md.js";
6
+ /**
7
+ * Lists every flat-layout companion Markdown file under `{storage}/source/`.
8
+ * Returns an empty list when Angles layout is already enabled (sentinel present).
9
+ */
10
+ export async function discoverFlatCompanionMarkdownFiles(repoRoot, storageDir = ".commentray") {
11
+ if (commentrayAnglesLayoutEnabled(repoRoot, storageDir)) {
12
+ return [];
13
+ }
14
+ const storageNorm = normalizeRepoRelativePath(storageDir.replaceAll("\\", "/"));
15
+ const sourceAbs = path.join(repoRoot, ...storageNorm.split("/"), "source");
16
+ let stat;
17
+ try {
18
+ stat = await fs.stat(sourceAbs);
19
+ }
20
+ catch {
21
+ return [];
22
+ }
23
+ if (!stat.isDirectory()) {
24
+ return [];
25
+ }
26
+ const rels = await collectMdRelPathsUnderSourceAbs(sourceAbs);
27
+ const out = [];
28
+ for (const rel of rels) {
29
+ if (rel === ".default" || rel.startsWith(".default/"))
30
+ continue;
31
+ if (!rel.endsWith(".md"))
32
+ continue;
33
+ const sourcePath = flatRelToSourcePath(rel);
34
+ const flatCommentrayPath = path.posix.join(storageNorm, "source", rel);
35
+ out.push({ flatCommentrayPath, sourcePath });
36
+ }
37
+ out.sort((a, b) => a.flatCommentrayPath.localeCompare(b.flatCommentrayPath));
38
+ return out;
39
+ }
40
+ /** `rel` is relative to `{storage}/source/` using `/` separators. */
41
+ export function flatRelToSourcePath(relFromSourceDir) {
42
+ if (!relFromSourceDir.endsWith(".md")) {
43
+ throw new Error(`Expected *.md under source, got: ${relFromSourceDir}`);
44
+ }
45
+ return relFromSourceDir.slice(0, Math.max(0, relFromSourceDir.length - 3));
46
+ }
47
+ export function planAnglesMigrationFromCompanions(companions, angleId, storageDir) {
48
+ const id = assertValidAngleId(angleId);
49
+ const moves = [];
50
+ const flatToAnglePath = new Map();
51
+ for (const c of companions) {
52
+ const toRepoRel = commentrayMarkdownPathForAngle(c.sourcePath, id, storageDir);
53
+ if (c.flatCommentrayPath === toRepoRel)
54
+ continue;
55
+ moves.push({
56
+ fromRepoRel: c.flatCommentrayPath,
57
+ toRepoRel: toRepoRel,
58
+ sourcePath: c.sourcePath,
59
+ });
60
+ flatToAnglePath.set(c.flatCommentrayPath, toRepoRel);
61
+ }
62
+ return { moves, flatToAnglePath };
63
+ }
64
+ export function rewriteIndexKeysForAnglesMigration(index, flatToAnglePath) {
65
+ const next = {};
66
+ for (const [k, entry] of Object.entries(index.byCommentrayPath)) {
67
+ const newKey = flatToAnglePath.get(k) ?? k;
68
+ next[newKey] = { ...entry, commentrayPath: newKey };
69
+ }
70
+ return { ...index, byCommentrayPath: next };
71
+ }
72
+ //# sourceMappingURL=migrate-angles-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-angles-layout.js","sourceRoot":"","sources":["../src/migrate-angles-layout.ts"],"names":[],"mappings":"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"}
package/dist/paths.d.ts CHANGED
@@ -11,6 +11,12 @@
11
11
  * `..` segments are traversal.
12
12
  */
13
13
  export declare function normalizeRepoRelativePath(relativePath: string): string;
14
+ /**
15
+ * Resolve `repoRelative` under `repoRootAbs` after {@link normalizeRepoRelativePath} validation,
16
+ * then assert the absolute path cannot escape `repoRootAbs` (defense in depth for index or
17
+ * nav-derived paths, not only hand-edited config).
18
+ */
19
+ export declare function resolvePathUnderRepoRoot(repoRootAbs: string, repoRelative: string): string;
14
20
  /** Commentray Markdown path for a repo-relative source file (implicit default angle, flat layout). */
15
21
  export declare function commentrayMarkdownPath(sourceRepoRelativePath: string, storageDir?: string): string;
16
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,sBAAsB,EAAE,MAAM,EAC9B,UAAU,SAAgB,GACzB,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,SAAgB,GAAG,MAAM,CAG/E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAgB,GACzB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,sBAAsB,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM,EACf,UAAU,SAAgB,GACzB,MAAM,CAKR;AAED,uDAAuD;AACvD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAS1F;AAED,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,sBAAsB,EAAE,MAAM,EAC9B,UAAU,SAAgB,GACzB,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,SAAgB,GAAG,MAAM,CAG/E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAgB,GACzB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,sBAAsB,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM,EACf,UAAU,SAAgB,GACzB,MAAM,CAKR;AAED,uDAAuD;AACvD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
package/dist/paths.js CHANGED
@@ -25,6 +25,21 @@ export function normalizeRepoRelativePath(relativePath) {
25
25
  }
26
26
  return segments.join("/");
27
27
  }
28
+ /**
29
+ * Resolve `repoRelative` under `repoRootAbs` after {@link normalizeRepoRelativePath} validation,
30
+ * then assert the absolute path cannot escape `repoRootAbs` (defense in depth for index or
31
+ * nav-derived paths, not only hand-edited config).
32
+ */
33
+ export function resolvePathUnderRepoRoot(repoRootAbs, repoRelative) {
34
+ const rel = normalizeRepoRelativePath(repoRelative);
35
+ const root = path.resolve(repoRootAbs);
36
+ const resolved = path.resolve(root, rel);
37
+ const back = path.relative(root, resolved);
38
+ if (back.startsWith("..") || path.isAbsolute(back)) {
39
+ throw new Error(`Resolved path leaves repository root: ${repoRelative}`);
40
+ }
41
+ return resolved;
42
+ }
28
43
  /** Commentray Markdown path for a repo-relative source file (implicit default angle, flat layout). */
29
44
  export function commentrayMarkdownPath(sourceRepoRelativePath, storageDir = ".commentray") {
30
45
  const normalized = normalizeRepoRelativePath(sourceRepoRelativePath);
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CAAC,YAAoB;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,mDAAmD,YAAY,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1E,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB,EAAE,YAAoB;IAChF,MAAM,GAAG,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,sBAAsB,CACpC,sBAA8B,EAC9B,UAAU,GAAG,aAAa;IAE1B,MAAM,UAAU,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAAU,GAAG,aAAa;IACrE,MAAM,IAAI,GAAG,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAgB,EAChB,UAAU,GAAG,aAAa;IAE1B,MAAM,QAAQ,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,sBAA8B,EAC9B,OAAe,EACf,UAAU,GAAG,aAAa;IAE1B,MAAM,UAAU,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { CommentrayIndex } from "./model.js";
2
+ import type { ScmPathRename } from "./scm/scm-provider.js";
3
+ export type RelocationHintsInput = {
4
+ index: CommentrayIndex;
5
+ /** Normalized repo-relative paths that are indexed but not readable on disk */
6
+ missingSourcePathsNorm: ReadonlySet<string>;
7
+ /** Optional Git renames (same shape as `sync-moved-paths`, e.g. `HEAD~1` → `HEAD`) */
8
+ gitRenames?: readonly ScmPathRename[];
9
+ /** Readable indexed primaries: normalized path → LF source text */
10
+ indexedSourceTextsByPath: ReadonlyMap<string, string>;
11
+ };
12
+ /**
13
+ * Non-authoritative hints when indexed primary files are missing: Git renames,
14
+ * marker ids found under other indexed sources, and snippet-shaped matches.
15
+ * Intended for validation / doctor output — does not modify the index.
16
+ */
17
+ export declare function relocationHintMessages(input: RelocationHintsInput): string[];
18
+ //# sourceMappingURL=relocation-hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocation-hints.d.ts","sourceRoot":"","sources":["../src/relocation-hints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmB,eAAe,EAAwB,MAAM,YAAY,CAAC;AAGzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,eAAe,CAAC;IACvB,+EAA+E;IAC/E,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,sFAAsF;IACtF,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACtC,mEAAmE;IACnE,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvD,CAAC;AA2MF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAG5E"}
@@ -0,0 +1,170 @@
1
+ import { parseAnchor } from "./anchors.js";
2
+ import { parseCommentraySnippetV1 } from "./block-snippet.js";
3
+ import { normalizeRepoRelativePath } from "./paths.js";
4
+ import { findCommentrayMarkerPairs } from "./region-marker-convert.js";
5
+ function entriesForNormalizedSource(index, missingNorm) {
6
+ return Object.values(index.byCommentrayPath).filter((e) => normalizeRepoRelativePath(e.sourcePath) === missingNorm);
7
+ }
8
+ function markerPathsContainingId(markerId, textsByPath, excludeNorm) {
9
+ const out = [];
10
+ for (const [p, text] of textsByPath) {
11
+ if (p === excludeNorm)
12
+ continue;
13
+ const pairs = findCommentrayMarkerPairs(text);
14
+ if (pairs.some((pair) => pair.id === markerId))
15
+ out.push(p);
16
+ }
17
+ return [...new Set(out)].sort((a, b) => a.localeCompare(b));
18
+ }
19
+ function snippetNeedleFromBlock(block) {
20
+ if (!block.snippet)
21
+ return null;
22
+ const lines = parseCommentraySnippetV1(block.snippet);
23
+ if (!lines || lines.length === 0)
24
+ return null;
25
+ const substantive = lines.map((l) => l.trim()).filter((l) => l.length >= 3);
26
+ if (substantive.length === 0)
27
+ return null;
28
+ const needle = substantive.slice(0, 4).join("\n");
29
+ return needle.length >= 12 ? needle : null;
30
+ }
31
+ function pathsContainingSnippetNeedle(needle, textsByPath, excludeNorm) {
32
+ const out = [];
33
+ for (const [p, text] of textsByPath) {
34
+ if (p === excludeNorm)
35
+ continue;
36
+ if (text.includes(needle))
37
+ out.push(p);
38
+ }
39
+ return [...new Set(out)].sort((a, b) => a.localeCompare(b));
40
+ }
41
+ function markerIdFromBlock(block) {
42
+ try {
43
+ const a = parseAnchor(block.anchor);
44
+ if (a.kind === "marker")
45
+ return a.id;
46
+ }
47
+ catch {
48
+ /* ignore */
49
+ }
50
+ return null;
51
+ }
52
+ function collectMarkerIds(entries) {
53
+ const markerIds = new Set();
54
+ for (const e of entries) {
55
+ for (const b of e.blocks) {
56
+ const mid = markerIdFromBlock(b);
57
+ if (mid)
58
+ markerIds.add(mid);
59
+ }
60
+ }
61
+ return markerIds;
62
+ }
63
+ function gitRenameHint(prefix, gitHit) {
64
+ const to = normalizeRepoRelativePath(gitHit.to);
65
+ return (`${prefix}: Git lists a rename to "${to}". Run: commentray sync-moved-paths --from HEAD~1 --to HEAD ` +
66
+ `(adjust --from/--to to the commit range that contains the rename).`);
67
+ }
68
+ function markerHintsForMissing(prefix, markerIds, texts, missingNorm) {
69
+ const out = [];
70
+ for (const mid of [...markerIds].sort((a, b) => a.localeCompare(b))) {
71
+ const paths = markerPathsContainingId(mid, texts, missingNorm);
72
+ if (paths.length === 1) {
73
+ out.push(`${prefix}: marker id "${mid}" appears in indexed source "${paths[0]}". ` +
74
+ `If commentary should follow that file, update index sourcePath (e.g. apply renames then sync-moved-paths, or edit index.json).`);
75
+ }
76
+ else if (paths.length > 1) {
77
+ out.push(`${prefix}: marker id "${mid}" appears in several indexed sources (${paths.join(", ")}); pick the intended file and update the index.`);
78
+ }
79
+ }
80
+ return out;
81
+ }
82
+ function snippetHintLineForBlock(prefix, block, texts, missingNorm) {
83
+ let anchorKind;
84
+ try {
85
+ anchorKind = parseAnchor(block.anchor).kind;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ if (anchorKind !== "lines")
91
+ return null;
92
+ const needle = snippetNeedleFromBlock(block);
93
+ if (!needle)
94
+ return null;
95
+ const hits = pathsContainingSnippetNeedle(needle, texts, missingNorm);
96
+ if (hits.length === 1) {
97
+ return (`${prefix}: block "${block.id}" snippet text matches indexed source "${hits[0]}" ` +
98
+ `(lines: anchor may need new line numbers after the move).`);
99
+ }
100
+ if (hits.length > 1) {
101
+ return `${prefix}: block "${block.id}" snippet text matches multiple indexed sources (${hits.join(", ")}); narrow manually.`;
102
+ }
103
+ return null;
104
+ }
105
+ function snippetHintsForMissing(prefix, entries, texts, missingNorm) {
106
+ const out = [];
107
+ for (const e of entries) {
108
+ for (const b of e.blocks) {
109
+ const line = snippetHintLineForBlock(prefix, b, texts, missingNorm);
110
+ if (line)
111
+ out.push(line);
112
+ }
113
+ }
114
+ return out;
115
+ }
116
+ function symbolOpaqueHints(prefix, entries, affectedMd) {
117
+ let needsSymbolNote = false;
118
+ let needsOpaqueNote = false;
119
+ for (const e of entries) {
120
+ for (const b of e.blocks) {
121
+ try {
122
+ const k = parseAnchor(b.anchor).kind;
123
+ if (k === "symbol")
124
+ needsSymbolNote = true;
125
+ if (k === "opaque")
126
+ needsOpaqueNote = true;
127
+ }
128
+ catch {
129
+ /* handled elsewhere */
130
+ }
131
+ }
132
+ }
133
+ const out = [];
134
+ if (needsSymbolNote) {
135
+ out.push(`${prefix}: one or more blocks use symbol: anchors (${affectedMd.join(", ")}). ` +
136
+ `After a cross-file move, re-point anchors with language tooling or by hand — Commentray does not resolve symbols across files yet.`);
137
+ }
138
+ if (needsOpaqueNote) {
139
+ out.push(`${prefix}: one or more blocks use opaque anchors; update those anchors manually after the move.`);
140
+ }
141
+ return out;
142
+ }
143
+ function hintsForOneMissingPath(missingNorm, input) {
144
+ const entries = entriesForNormalizedSource(input.index, missingNorm);
145
+ const affectedMd = [...new Set(entries.map((e) => e.commentrayPath))].sort((a, b) => a.localeCompare(b));
146
+ const prefix = `Missing primary "${missingNorm}"`;
147
+ const gitHit = input.gitRenames?.find((r) => normalizeRepoRelativePath(r.from) === missingNorm);
148
+ const markerIds = collectMarkerIds(entries);
149
+ const parts = [
150
+ ...(gitHit ? [gitRenameHint(prefix, gitHit)] : []),
151
+ ...markerHintsForMissing(prefix, markerIds, input.indexedSourceTextsByPath, missingNorm),
152
+ ...snippetHintsForMissing(prefix, entries, input.indexedSourceTextsByPath, missingNorm),
153
+ ...symbolOpaqueHints(prefix, entries, affectedMd),
154
+ ];
155
+ if (parts.length === 0) {
156
+ parts.push(`${prefix}: no Git rename in the supplied range and no marker/snippet matches in other indexed primaries. ` +
157
+ `Remove stale index rows, restore the file, or point sourcePath at the new primary.`);
158
+ }
159
+ return parts;
160
+ }
161
+ /**
162
+ * Non-authoritative hints when indexed primary files are missing: Git renames,
163
+ * marker ids found under other indexed sources, and snippet-shaped matches.
164
+ * Intended for validation / doctor output — does not modify the index.
165
+ */
166
+ export function relocationHintMessages(input) {
167
+ const sortedMissing = [...input.missingSourcePathsNorm].sort((a, b) => a.localeCompare(b));
168
+ return sortedMissing.flatMap((m) => hintsForOneMissingPath(m, input));
169
+ }
170
+ //# sourceMappingURL=relocation-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocation-hints.js","sourceRoot":"","sources":["../src/relocation-hints.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"git-scm-provider.d.ts","sourceRoot":"","sources":["../../src/scm/git-scm-provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0BpE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAmBnE;AAED,qBAAa,cAAe,YAAW,WAAW;IAC1C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBnF,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxF,+BAA+B,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC;CAa5B"}
1
+ {"version":3,"file":"git-scm-provider.d.ts","sourceRoot":"","sources":["../../src/scm/git-scm-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAmBnE;AAED,qBAAa,cAAe,YAAW,WAAW;IAC1C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBnF,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxF,+BAA+B,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC;CAa5B"}
@@ -1,25 +1,5 @@
1
- import { spawn } from "node:child_process";
2
1
  import { normalizeRepoRelativePath } from "../paths.js";
3
- function runGit(repoRoot, args) {
4
- return new Promise((resolve, reject) => {
5
- const child = spawn("git", args, {
6
- cwd: repoRoot,
7
- env: process.env,
8
- });
9
- let stdout = "";
10
- let stderr = "";
11
- child.stdout.on("data", (d) => {
12
- stdout += String(d);
13
- });
14
- child.stderr.on("data", (d) => {
15
- stderr += String(d);
16
- });
17
- child.on("error", reject);
18
- child.on("close", (code) => {
19
- resolve({ code: code ?? 1, stdout, stderr });
20
- });
21
- });
22
- }
2
+ import { runGit } from "./git-spawn.js";
23
3
  /**
24
4
  * Parses `git diff --name-status` output for `R` (rename) lines. Tab-separated
25
5
  * `R086\told/path\tnew/path` (score optional).
@@ -1 +1 @@
1
- {"version":3,"file":"git-scm-provider.js","sourceRoot":"","sources":["../../src/scm/git-scm-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-scm-provider.js","sourceRoot":"","sources":["../../src/scm/git-scm-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Runs `git` with `args` in `repoRoot`; collects stdout/stderr as strings.
3
+ * Resolves with exit code (defaults to 1 when null).
4
+ */
5
+ export declare function runGit(repoRoot: string, args: string[]): Promise<{
6
+ code: number;
7
+ stdout: string;
8
+ stderr: string;
9
+ }>;
10
+ //# sourceMappingURL=git-spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-spawn.d.ts","sourceRoot":"","sources":["../../src/scm/git-spawn.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB3D"}
@@ -0,0 +1,26 @@
1
+ import { spawn } from "node:child_process";
2
+ /**
3
+ * Runs `git` with `args` in `repoRoot`; collects stdout/stderr as strings.
4
+ * Resolves with exit code (defaults to 1 when null).
5
+ */
6
+ export function runGit(repoRoot, args) {
7
+ return new Promise((resolve, reject) => {
8
+ const child = spawn("git", args, {
9
+ cwd: repoRoot,
10
+ env: process.env,
11
+ });
12
+ let stdout = "";
13
+ let stderr = "";
14
+ child.stdout.on("data", (d) => {
15
+ stdout += String(d);
16
+ });
17
+ child.stderr.on("data", (d) => {
18
+ stderr += String(d);
19
+ });
20
+ child.on("error", reject);
21
+ child.on("close", (code) => {
22
+ resolve({ code: code ?? 1, stdout, stderr });
23
+ });
24
+ });
25
+ }
26
+ //# sourceMappingURL=git-spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-spawn.js","sourceRoot":"","sources":["../../src/scm/git-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,MAAM,CACpB,QAAgB,EAChB,IAAc;IAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;YAC7C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;YAC7C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACxC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-project.d.ts","sourceRoot":"","sources":["../src/validate-project.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoD,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAOpG,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiEjF;AAiBD;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBvD;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CASjF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF"}
1
+ {"version":3,"file":"validate-project.d.ts","sourceRoot":"","sources":["../src/validate-project.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoD,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAUpG,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AA+EF,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8CjF;AAiBD;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBvD;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CASjF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF"}
@@ -6,8 +6,78 @@ import { normalizeCommentrayIndex } from "./index-normalize.js";
6
6
  import { assertValidIndex } from "./metadata.js";
7
7
  import { migrateIndex } from "./migrate.js";
8
8
  import { coerceIndexSchemaVersion, CURRENT_SCHEMA_VERSION } from "./model.js";
9
- import { defaultMetadataIndexPath } from "./paths.js";
9
+ import { defaultMetadataIndexPath, normalizeRepoRelativePath } from "./paths.js";
10
10
  import { validateIndexMarkerSemantics, validateMarkerBoundariesInSource, } from "./marker-validation.js";
11
+ import { loadGitTrackedSourceTextsOutsideIndex } from "./git-relocation-scan.js";
12
+ import { relocationHintMessages } from "./relocation-hints.js";
13
+ import { GitScmProvider } from "./scm/git-scm-provider.js";
14
+ async function collectIssuesForLoadedIndex(repoRoot, index) {
15
+ const issues = [];
16
+ for (const issue of validateIndexMarkerSemantics(index)) {
17
+ issues.push({ level: issue.level, message: issue.message });
18
+ }
19
+ const uniqueSourcesNorm = [
20
+ ...new Set(Object.values(index.byCommentrayPath).map((e) => normalizeRepoRelativePath(e.sourcePath))),
21
+ ];
22
+ const indexedSourceTexts = new Map();
23
+ const missingSourcesNorm = new Set();
24
+ for (const norm of uniqueSourcesNorm) {
25
+ const abs = path.join(repoRoot, ...norm.split("/"));
26
+ try {
27
+ const text = await fs.readFile(abs, "utf8");
28
+ indexedSourceTexts.set(norm, text);
29
+ }
30
+ catch {
31
+ missingSourcesNorm.add(norm);
32
+ const affected = Object.values(index.byCommentrayPath)
33
+ .filter((e) => normalizeRepoRelativePath(e.sourcePath) === norm)
34
+ .map((e) => e.commentrayPath);
35
+ const uniqAffected = [...new Set(affected)].sort((a, b) => a.localeCompare(b));
36
+ issues.push({
37
+ level: "warn",
38
+ message: `Primary source "${norm}" is not readable (deleted, moved, or not checked out). ` +
39
+ `Commentray: ${uniqAffected.join(", ")}. ` +
40
+ `If Git renamed it, try: commentray sync-moved-paths --from HEAD~1 --to HEAD`,
41
+ });
42
+ }
43
+ }
44
+ for (const [norm, text] of indexedSourceTexts) {
45
+ for (const issue of validateMarkerBoundariesInSource(text, norm)) {
46
+ issues.push({ level: issue.level, message: issue.message });
47
+ }
48
+ }
49
+ if (missingSourcesNorm.size === 0)
50
+ return issues;
51
+ let gitRenames;
52
+ try {
53
+ const scm = new GitScmProvider();
54
+ if (scm.listPathRenamesBetweenTreeishes) {
55
+ gitRenames = await scm.listPathRenamesBetweenTreeishes(repoRoot, "HEAD~1", "HEAD");
56
+ }
57
+ }
58
+ catch {
59
+ /* no Git or shallow history — hints still run without renames */
60
+ }
61
+ let textsForRelocationHints = indexedSourceTexts;
62
+ try {
63
+ const extra = await loadGitTrackedSourceTextsOutsideIndex(repoRoot, new Set(indexedSourceTexts.keys()));
64
+ if (extra.size > 0) {
65
+ textsForRelocationHints = new Map([...extra, ...indexedSourceTexts]);
66
+ }
67
+ }
68
+ catch {
69
+ /* not a git checkout or ls-files failed — use indexed primaries only */
70
+ }
71
+ for (const hint of relocationHintMessages({
72
+ index,
73
+ missingSourcePathsNorm: missingSourcesNorm,
74
+ gitRenames,
75
+ indexedSourceTextsByPath: textsForRelocationHints,
76
+ })) {
77
+ issues.push({ level: "warn", message: hint });
78
+ }
79
+ return issues;
80
+ }
11
81
  export async function validateProject(repoRoot) {
12
82
  const issues = [];
13
83
  let config;
@@ -48,28 +118,7 @@ export async function validateProject(repoRoot) {
48
118
  });
49
119
  }
50
120
  if (index) {
51
- for (const issue of validateIndexMarkerSemantics(index)) {
52
- issues.push({ level: issue.level, message: issue.message });
53
- }
54
- const seenSources = new Set();
55
- for (const entry of Object.values(index.byCommentrayPath)) {
56
- if (seenSources.has(entry.sourcePath))
57
- continue;
58
- seenSources.add(entry.sourcePath);
59
- const abs = path.join(repoRoot, ...entry.sourcePath.split("/"));
60
- try {
61
- const text = await fs.readFile(abs, "utf8");
62
- for (const issue of validateMarkerBoundariesInSource(text, entry.sourcePath)) {
63
- issues.push({ level: issue.level, message: issue.message });
64
- }
65
- }
66
- catch {
67
- issues.push({
68
- level: "warn",
69
- message: `Could not read "${entry.sourcePath}" to validate Commentray source markers.`,
70
- });
71
- }
72
- }
121
+ issues.push(...(await collectIssuesForLoadedIndex(repoRoot, index)));
73
122
  }
74
123
  pushRelativeGithubLinkConfigWarnings(config, issues);
75
124
  return { issues };
@@ -1 +1 @@
1
- {"version":3,"file":"validate-project.js","sourceRoot":"","sources":["../src/validate-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-project.js","sourceRoot":"","sources":["../src/validate-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAiC,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAwB,MAAM,YAAY,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qCAAqC,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,KAAK,UAAU,2BAA2B,CACxC,QAAgB,EAChB,KAAsB;IAEtB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,iBAAiB,GAAG;QACxB,GAAG,IAAI,GAAG,CACR,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAC1F;KACF,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5C,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;iBACnD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;iBAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,MAAM;gBACb,OAAO,EACL,mBAAmB,IAAI,0DAA0D;oBACjF,eAAe,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAC1C,6EAA6E;aAChF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,gCAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEjD,IAAI,UAAsD,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,+BAA+B,EAAE,CAAC;YACxC,UAAU,GAAG,MAAM,GAAG,CAAC,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IACD,IAAI,uBAAuB,GAAwB,kBAAkB,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,qCAAqC,CACvD,QAAQ,EACR,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CACnC,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnB,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC;QACxC,KAAK;QACL,sBAAsB,EAAE,kBAAkB;QAC1C,UAAU;QACV,wBAAwB,EAAE,uBAAuB;KAClD,CAAC,EAAE,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAChG,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1D,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,sBAAsB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACvF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,2BAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,oCAAoC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,oCAAoC,CAC3C,MAAgC,EAChC,MAAyB;IAEzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB;QAAE,OAAO;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;IACvC,IAAI,EAAE,IAAI,qBAAqB,CAAC,EAAE,CAAC;QAAE,OAAO;IAC5C,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,MAAM;QACb,OAAO,EACL,qFAAqF;YACrF,8GAA8G;KACjH,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,QAAgB;IAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC1C,MAAM,WAAW,GACf,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAC3C,CAAC,CAAC,wBAAwB,CAAE,MAAkC,CAAC,aAAa,CAAC;QAC7E,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,sBAAsB,EAAE,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,gBAAgB,MAAM,CAAC,WAAW,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3F,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAqB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,aAAa,IAAI,cAAc,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,KAAsB;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Lists every `*.md` path relative to `sourceAbs`, POSIX separators, skipping `.default`.
3
+ */
4
+ export declare function collectMdRelPathsUnderSourceAbs(sourceAbs: string): Promise<string[]>;
5
+ //# sourceMappingURL=walk-commentray-source-md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk-commentray-source-md.d.ts","sourceRoot":"","sources":["../src/walk-commentray-source-md.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB1F"}