@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.
- package/dist/angles-toml.d.ts +14 -0
- package/dist/angles-toml.d.ts.map +1 -1
- package/dist/angles-toml.js +51 -0
- package/dist/angles-toml.js.map +1 -1
- package/dist/blocks.js +1 -1
- package/dist/blocks.js.map +1 -1
- package/dist/commentray-disk-pairs.d.ts +14 -0
- package/dist/commentray-disk-pairs.d.ts.map +1 -0
- package/dist/commentray-disk-pairs.js +51 -0
- package/dist/commentray-disk-pairs.js.map +1 -0
- package/dist/git-relocation-scan.d.ts +9 -0
- package/dist/git-relocation-scan.d.ts.map +1 -0
- package/dist/git-relocation-scan.js +96 -0
- package/dist/git-relocation-scan.js.map +1 -0
- package/dist/github-url.d.ts.map +1 -1
- package/dist/github-url.js +24 -5
- package/dist/github-url.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/marker-ids.d.ts.map +1 -1
- package/dist/marker-ids.js +42 -9
- package/dist/marker-ids.js.map +1 -1
- package/dist/migrate-angles-layout.d.ts +27 -0
- package/dist/migrate-angles-layout.d.ts.map +1 -0
- package/dist/migrate-angles-layout.js +72 -0
- package/dist/migrate-angles-layout.js.map +1 -0
- package/dist/paths.d.ts +6 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +15 -0
- package/dist/paths.js.map +1 -1
- package/dist/relocation-hints.d.ts +18 -0
- package/dist/relocation-hints.d.ts.map +1 -0
- package/dist/relocation-hints.js +170 -0
- package/dist/relocation-hints.js.map +1 -0
- package/dist/scm/git-scm-provider.d.ts.map +1 -1
- package/dist/scm/git-scm-provider.js +1 -21
- package/dist/scm/git-scm-provider.js.map +1 -1
- package/dist/scm/git-spawn.d.ts +10 -0
- package/dist/scm/git-spawn.d.ts.map +1 -0
- package/dist/scm/git-spawn.js +26 -0
- package/dist/scm/git-spawn.js.map +1 -0
- package/dist/validate-project.d.ts.map +1 -1
- package/dist/validate-project.js +72 -23
- package/dist/validate-project.js.map +1 -1
- package/dist/walk-commentray-source-md.d.ts +5 -0
- package/dist/walk-commentray-source-md.d.ts.map +1 -0
- package/dist/walk-commentray-source-md.js +33 -0
- package/dist/walk-commentray-source-md.js.map +1 -0
- package/package.json +1 -1
package/dist/angles-toml.d.ts
CHANGED
|
@@ -15,4 +15,18 @@ export declare function ensureAnglesSentinelFile(repoRoot: string, storageDir: s
|
|
|
15
15
|
* TOML stringify (comments and key order are not preserved).
|
|
16
16
|
*/
|
|
17
17
|
export declare function upsertAngleDefinitionInCommentrayToml(repoRoot: string, input: UpsertAngleDefinitionInput): Promise<void>;
|
|
18
|
+
export type ApplyAnglesFlatMigrationTomlInput = {
|
|
19
|
+
angleId: string;
|
|
20
|
+
/** Optional label for the single migrated angle (defaults to title-cased id). */
|
|
21
|
+
angleTitle?: string;
|
|
22
|
+
/** When both set, replace `[static_site].commentray_markdown` if it equals `from`. */
|
|
23
|
+
staticCommentrayMarkdownFrom?: string;
|
|
24
|
+
staticCommentrayMarkdownTo?: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* After flat → Angles filesystem moves, stamp `[angles]` and optionally rewrite
|
|
28
|
+
* `[static_site].commentray_markdown` to the new companion path. Refuses when
|
|
29
|
+
* `[angles].definitions` is already non-empty (avoid clobbering a configured project).
|
|
30
|
+
*/
|
|
31
|
+
export declare function applyAnglesFlatMigrationToCommentrayToml(repoRoot: string, input: ApplyAnglesFlatMigrationTomlInput): Promise<void>;
|
|
18
32
|
//# sourceMappingURL=angles-toml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angles-toml.d.ts","sourceRoot":"","sources":["../src/angles-toml.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAMF;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;GAIG;AACH,wBAAsB,qCAAqC,CACzD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,IAAI,CAAC,CAmCf"}
|
|
1
|
+
{"version":3,"file":"angles-toml.d.ts","sourceRoot":"","sources":["../src/angles-toml.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAMF;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;GAIG;AACH,wBAAsB,qCAAqC,CACzD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAsBF;;;;GAIG;AACH,wBAAsB,wCAAwC,CAC5D,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
package/dist/angles-toml.js
CHANGED
|
@@ -59,4 +59,55 @@ export async function upsertAngleDefinitionInCommentrayToml(repoRoot, input) {
|
|
|
59
59
|
const body = raw.trim() ? serialized : `${MINIMAL_NEW_TOML.trim()}\n\n${serialized}`;
|
|
60
60
|
await fs.writeFile(configPath, `${body}\n`, "utf8");
|
|
61
61
|
}
|
|
62
|
+
function defaultTitleForAngleId(angleId) {
|
|
63
|
+
return angleId
|
|
64
|
+
.split(/[-_]+/)
|
|
65
|
+
.filter(Boolean)
|
|
66
|
+
.map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())
|
|
67
|
+
.join(" ");
|
|
68
|
+
}
|
|
69
|
+
function maybeRewriteStaticCommentrayMarkdown(ss, from, to) {
|
|
70
|
+
if (!from || !to)
|
|
71
|
+
return;
|
|
72
|
+
const cur = (ss.commentray_markdown ?? ss.commentary_markdown ?? "").trim();
|
|
73
|
+
if (cur !== from)
|
|
74
|
+
return;
|
|
75
|
+
ss.commentray_markdown = to;
|
|
76
|
+
delete ss.commentary_markdown;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* After flat → Angles filesystem moves, stamp `[angles]` and optionally rewrite
|
|
80
|
+
* `[static_site].commentray_markdown` to the new companion path. Refuses when
|
|
81
|
+
* `[angles].definitions` is already non-empty (avoid clobbering a configured project).
|
|
82
|
+
*/
|
|
83
|
+
export async function applyAnglesFlatMigrationToCommentrayToml(repoRoot, input) {
|
|
84
|
+
const id = assertValidAngleId(input.angleId);
|
|
85
|
+
const configPath = path.join(repoRoot, ".commentray.toml");
|
|
86
|
+
let raw;
|
|
87
|
+
try {
|
|
88
|
+
raw = await fs.readFile(configPath, "utf8");
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
const code = err.code;
|
|
92
|
+
if (code === "ENOENT") {
|
|
93
|
+
throw new Error("Missing .commentray.toml (run: commentray init config)", { cause: err });
|
|
94
|
+
}
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
const parsed = raw.trim() ? parseToml(raw) : {};
|
|
98
|
+
const existingDefs = parsed.angles?.definitions ?? [];
|
|
99
|
+
if (existingDefs.length > 0) {
|
|
100
|
+
throw new Error("Refusing to migrate: [angles].definitions is already set. Remove or merge angles manually, then retry.");
|
|
101
|
+
}
|
|
102
|
+
const title = input.angleTitle?.trim() || defaultTitleForAngleId(id) || id;
|
|
103
|
+
parsed.angles = {
|
|
104
|
+
default_angle: id,
|
|
105
|
+
definitions: [{ id, title }],
|
|
106
|
+
};
|
|
107
|
+
const ss = parsed.static_site ?? {};
|
|
108
|
+
maybeRewriteStaticCommentrayMarkdown(ss, input.staticCommentrayMarkdownFrom?.trim(), input.staticCommentrayMarkdownTo?.trim());
|
|
109
|
+
parsed.static_site = ss;
|
|
110
|
+
mergeCommentrayConfig(parsed);
|
|
111
|
+
await fs.writeFile(configPath, `${stringify(parsed)}\n`, "utf8");
|
|
112
|
+
}
|
|
62
113
|
//# sourceMappingURL=angles-toml.js.map
|
package/dist/angles-toml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angles-toml.js","sourceRoot":"","sources":["../src/angles-toml.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angles-toml.js","sourceRoot":"","sources":["../src/angles-toml.ts"],"names":[],"mappings":"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"}
|
package/dist/blocks.js
CHANGED
|
@@ -24,7 +24,7 @@ export function createBlockForRange(input) {
|
|
|
24
24
|
* single blank-line separator regardless of how the existing content ended.
|
|
25
25
|
*/
|
|
26
26
|
export function appendBlockToCommentray(existing, blockMarkdown) {
|
|
27
|
-
const trimmed = existing.
|
|
27
|
+
const trimmed = existing.trimEnd();
|
|
28
28
|
const body = trimmed.length === 0 ? "" : `${trimmed}\n\n`;
|
|
29
29
|
const fragment = blockMarkdown.endsWith("\n") ? blockMarkdown : `${blockMarkdown}\n`;
|
|
30
30
|
return `${body}${fragment}`;
|
package/dist/blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAyCtD,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AACxD,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAoB,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,aAAqB;IAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type DiskCommentrayPair = {
|
|
2
|
+
sourcePath: string;
|
|
3
|
+
commentrayPath: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Maps a Markdown path relative to `{storage}/source/` to `(sourcePath, commentrayPath)` using
|
|
7
|
+
* the same flat vs Angles rules as the rest of Commentray.
|
|
8
|
+
*/
|
|
9
|
+
export declare function pairFromCommentraySourceRel(storageDirNorm: string, relFromSourceDir: string, anglesOn: boolean): DiskCommentrayPair | null;
|
|
10
|
+
/**
|
|
11
|
+
* Lists every `*.md` under `{storage}/source/` as source ↔ commentray path pairs (flat or Angles).
|
|
12
|
+
*/
|
|
13
|
+
export declare function discoverCommentrayPairsOnDisk(repoRoot: string, storageDir?: string): Promise<DiskCommentrayPair[]>;
|
|
14
|
+
//# sourceMappingURL=commentray-disk-pairs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentray-disk-pairs.d.ts","sourceRoot":"","sources":["../src/commentray-disk-pairs.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,OAAO,GAChB,kBAAkB,GAAG,IAAI,CAe3B;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAgB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAoB/B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { commentrayAnglesLayoutEnabled, normalizeRepoRelativePath } from "./paths.js";
|
|
3
|
+
import { collectMdRelPathsUnderSourceAbs } from "./walk-commentray-source-md.js";
|
|
4
|
+
/**
|
|
5
|
+
* Maps a Markdown path relative to `{storage}/source/` to `(sourcePath, commentrayPath)` using
|
|
6
|
+
* the same flat vs Angles rules as the rest of Commentray.
|
|
7
|
+
*/
|
|
8
|
+
export function pairFromCommentraySourceRel(storageDirNorm, relFromSourceDir, anglesOn) {
|
|
9
|
+
const norm = relFromSourceDir.replaceAll("\\", "/");
|
|
10
|
+
if (!norm.endsWith(".md") || norm === ".default" || norm.startsWith(".default/"))
|
|
11
|
+
return null;
|
|
12
|
+
const crPath = path.posix.join(storageDirNorm, "source", norm);
|
|
13
|
+
if (!anglesOn) {
|
|
14
|
+
return { sourcePath: norm.slice(0, Math.max(0, norm.length - 3)), commentrayPath: crPath };
|
|
15
|
+
}
|
|
16
|
+
const dir = path.posix.dirname(norm);
|
|
17
|
+
const base = path.posix.basename(norm);
|
|
18
|
+
const stem = base.slice(0, Math.max(0, base.length - 3));
|
|
19
|
+
const angleStemValid = /^[a-zA-Z0-9_-]{1,64}$/.test(stem);
|
|
20
|
+
if (dir !== "." && dir !== "" && angleStemValid) {
|
|
21
|
+
return { sourcePath: dir, commentrayPath: crPath };
|
|
22
|
+
}
|
|
23
|
+
return { sourcePath: norm.slice(0, Math.max(0, norm.length - 3)), commentrayPath: crPath };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Lists every `*.md` under `{storage}/source/` as source ↔ commentray path pairs (flat or Angles).
|
|
27
|
+
*/
|
|
28
|
+
export async function discoverCommentrayPairsOnDisk(repoRoot, storageDir = ".commentray") {
|
|
29
|
+
const storageNorm = normalizeRepoRelativePath(storageDir.replaceAll("\\", "/"));
|
|
30
|
+
const sourceAbs = path.join(repoRoot, ...storageNorm.split("/"), "source");
|
|
31
|
+
const anglesOn = commentrayAnglesLayoutEnabled(repoRoot, storageDir);
|
|
32
|
+
let rels;
|
|
33
|
+
try {
|
|
34
|
+
rels = await collectMdRelPathsUnderSourceAbs(sourceAbs);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
const out = [];
|
|
40
|
+
const seen = new Set();
|
|
41
|
+
for (const rel of rels) {
|
|
42
|
+
const pair = pairFromCommentraySourceRel(storageNorm, rel, anglesOn);
|
|
43
|
+
if (!pair || seen.has(pair.commentrayPath))
|
|
44
|
+
continue;
|
|
45
|
+
seen.add(pair.commentrayPath);
|
|
46
|
+
out.push(pair);
|
|
47
|
+
}
|
|
48
|
+
out.sort((a, b) => a.commentrayPath.localeCompare(b.commentrayPath));
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=commentray-disk-pairs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentray-disk-pairs.js","sourceRoot":"","sources":["../src/commentray-disk-pairs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads UTF-8 text from Git-tracked source-like files that are **not** already in
|
|
3
|
+
* `indexedPathsNorm`, for relocation heuristics only. Bounded by file count and per-file size.
|
|
4
|
+
*/
|
|
5
|
+
export declare function loadGitTrackedSourceTextsOutsideIndex(repoRoot: string, indexedPathsNorm: ReadonlySet<string>, options?: {
|
|
6
|
+
maxFiles?: number;
|
|
7
|
+
maxBytesPerFile?: number;
|
|
8
|
+
}): Promise<Map<string, string>>;
|
|
9
|
+
//# sourceMappingURL=git-relocation-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-relocation-scan.d.ts","sourceRoot":"","sources":["../src/git-relocation-scan.ts"],"names":[],"mappings":"AAoEA;;;GAGG;AACH,wBAAsB,qCAAqC,CACzD,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,EACrC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAsB9B"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { normalizeRepoRelativePath } from "./paths.js";
|
|
4
|
+
import { runGit } from "./scm/git-spawn.js";
|
|
5
|
+
/** Tracked paths we may read for marker/snippet relocation hints (bounded scan). */
|
|
6
|
+
const RELOCATION_SCAN_SUFFIXES = new Set([
|
|
7
|
+
".c",
|
|
8
|
+
".cc",
|
|
9
|
+
".cpp",
|
|
10
|
+
".cs",
|
|
11
|
+
".cts",
|
|
12
|
+
".cxx",
|
|
13
|
+
".fs",
|
|
14
|
+
".go",
|
|
15
|
+
".h",
|
|
16
|
+
".hpp",
|
|
17
|
+
".java",
|
|
18
|
+
".js",
|
|
19
|
+
".jsx",
|
|
20
|
+
".kt",
|
|
21
|
+
".kts",
|
|
22
|
+
".mjs",
|
|
23
|
+
".mts",
|
|
24
|
+
".php",
|
|
25
|
+
".py",
|
|
26
|
+
".rb",
|
|
27
|
+
".rs",
|
|
28
|
+
".scala",
|
|
29
|
+
".svelte",
|
|
30
|
+
".swift",
|
|
31
|
+
".ts",
|
|
32
|
+
".tsx",
|
|
33
|
+
".vue",
|
|
34
|
+
".zig",
|
|
35
|
+
]);
|
|
36
|
+
function isRelocationScanCandidate(repoRelative) {
|
|
37
|
+
const lower = repoRelative.toLowerCase();
|
|
38
|
+
if (lower.includes("/node_modules/"))
|
|
39
|
+
return false;
|
|
40
|
+
const ext = path.posix.extname(lower);
|
|
41
|
+
return RELOCATION_SCAN_SUFFIXES.has(ext);
|
|
42
|
+
}
|
|
43
|
+
async function readUtf8SourceUnderMaxBytes(repoRoot, norm, maxBytes) {
|
|
44
|
+
const abs = path.join(repoRoot, ...norm.split("/"));
|
|
45
|
+
let st;
|
|
46
|
+
try {
|
|
47
|
+
st = await fs.stat(abs);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
if (!st.isFile() || st.size > maxBytes)
|
|
53
|
+
return null;
|
|
54
|
+
let buf;
|
|
55
|
+
try {
|
|
56
|
+
buf = await fs.readFile(abs);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (buf.includes(0))
|
|
62
|
+
return null;
|
|
63
|
+
return buf.toString("utf8").replaceAll("\r\n", "\n");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Reads UTF-8 text from Git-tracked source-like files that are **not** already in
|
|
67
|
+
* `indexedPathsNorm`, for relocation heuristics only. Bounded by file count and per-file size.
|
|
68
|
+
*/
|
|
69
|
+
export async function loadGitTrackedSourceTextsOutsideIndex(repoRoot, indexedPathsNorm, options) {
|
|
70
|
+
const maxFiles = options?.maxFiles ?? 400;
|
|
71
|
+
const maxBytes = options?.maxBytesPerFile ?? 200_000;
|
|
72
|
+
const { code, stdout, stderr } = await runGit(repoRoot, ["ls-files", "-z", "--cached"]);
|
|
73
|
+
if (code !== 0) {
|
|
74
|
+
throw new Error(`git ls-files failed (${code}): ${stderr.trim() || stdout.trim()}`);
|
|
75
|
+
}
|
|
76
|
+
const raw = stdout.split("\0").filter(Boolean);
|
|
77
|
+
const sorted = [...raw].sort((a, b) => a.localeCompare(b));
|
|
78
|
+
const out = new Map();
|
|
79
|
+
let n = 0;
|
|
80
|
+
for (const rel of sorted) {
|
|
81
|
+
if (n >= maxFiles)
|
|
82
|
+
break;
|
|
83
|
+
const norm = normalizeRepoRelativePath(rel.replaceAll("\\", "/"));
|
|
84
|
+
if (indexedPathsNorm.has(norm))
|
|
85
|
+
continue;
|
|
86
|
+
if (!isRelocationScanCandidate(norm))
|
|
87
|
+
continue;
|
|
88
|
+
const text = await readUtf8SourceUnderMaxBytes(repoRoot, norm, maxBytes);
|
|
89
|
+
if (text === null)
|
|
90
|
+
continue;
|
|
91
|
+
out.set(norm, text);
|
|
92
|
+
n++;
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=git-relocation-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-relocation-scan.js","sourceRoot":"","sources":["../src/git-relocation-scan.ts"],"names":[],"mappings":"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"}
|
package/dist/github-url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-url.d.ts","sourceRoot":"","sources":["../src/github-url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github-url.d.ts","sourceRoot":"","sources":["../src/github-url.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAezF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAOR"}
|
package/dist/github-url.js
CHANGED
|
@@ -1,21 +1,40 @@
|
|
|
1
1
|
import { normalizeRepoRelativePath } from "./paths.js";
|
|
2
|
+
function trimTrailingSlashes(s) {
|
|
3
|
+
let end = s.length;
|
|
4
|
+
while (end > 0 && s[end - 1] === "/")
|
|
5
|
+
end--;
|
|
6
|
+
return s.slice(0, end);
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
9
|
* Parses a GitHub repository web URL into owner + repo name (no API calls).
|
|
4
10
|
* Accepts optional trailing slash and `.git` suffix.
|
|
5
11
|
*/
|
|
6
12
|
export function parseGithubRepoWebUrl(url) {
|
|
7
|
-
const t = url.trim()
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
const t = trimTrailingSlashes(url.trim());
|
|
14
|
+
let parsed;
|
|
15
|
+
try {
|
|
16
|
+
parsed = new URL(/^https?:\/\//i.test(t) ? t : `https://${t}`);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
if (parsed.hostname.toLowerCase() !== "github.com")
|
|
22
|
+
return null;
|
|
23
|
+
const segments = parsed.pathname.split("/").filter(Boolean);
|
|
24
|
+
if (segments.length !== 2)
|
|
10
25
|
return null;
|
|
11
|
-
|
|
26
|
+
const owner = segments[0];
|
|
27
|
+
let repo = segments[1];
|
|
28
|
+
if (repo.toLowerCase().endsWith(".git"))
|
|
29
|
+
repo = repo.slice(0, -4);
|
|
30
|
+
return { owner, repo };
|
|
12
31
|
}
|
|
13
32
|
/**
|
|
14
33
|
* Builds a `https://github.com/owner/repo/blob/<branch>/path` URL for a repo-relative file path.
|
|
15
34
|
* Used for static-site “open another file” links when only `_site/index.html` is deployed.
|
|
16
35
|
*/
|
|
17
36
|
export function githubRepoBlobFileUrl(owner, repo, branch, repoRelativePath) {
|
|
18
|
-
const posix = normalizeRepoRelativePath(repoRelativePath.
|
|
37
|
+
const posix = normalizeRepoRelativePath(repoRelativePath.replaceAll("\\", "/"));
|
|
19
38
|
const tail = posix
|
|
20
39
|
.split("/")
|
|
21
40
|
.map((s) => encodeURIComponent(s))
|
package/dist/github-url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-url.js","sourceRoot":"","sources":["../src/github-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"github-url.js","sourceRoot":"","sources":["../src/github-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,SAAS,mBAAmB,CAAC,CAAS;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,EAAE,CAAC;IAC5C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,IAAY,EACZ,MAAc,EACd,gBAAwB;IAExB,MAAM,KAAK,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,KAAK;SACf,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAClI,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,17 +3,21 @@ export { coerceIndexSchemaVersion, CURRENT_SCHEMA_VERSION } from "./model.js";
|
|
|
3
3
|
export type { AddBlockToIndexInput, BlockRange, CreateBlockForRangeInput, CreatedBlock, } from "./blocks.js";
|
|
4
4
|
export { addBlockToIndex, appendBlockToCommentray, createBlockForRange, generateBlockId, } from "./blocks.js";
|
|
5
5
|
export { assertValidAngleId } from "./angles.js";
|
|
6
|
-
export { ensureAnglesSentinelFile, upsertAngleDefinitionInCommentrayToml } from "./angles-toml.js";
|
|
7
|
-
export type { UpsertAngleDefinitionInput } from "./angles-toml.js";
|
|
6
|
+
export { applyAnglesFlatMigrationToCommentrayToml, ensureAnglesSentinelFile, upsertAngleDefinitionInCommentrayToml, } from "./angles-toml.js";
|
|
7
|
+
export type { ApplyAnglesFlatMigrationTomlInput, UpsertAngleDefinitionInput, } from "./angles-toml.js";
|
|
8
8
|
export { defaultAngleIdForOpen, FALLBACK_DEFAULT_ANGLE_ID, resolveCommentrayMarkdownPath, } from "./commentray-path-resolution.js";
|
|
9
9
|
export type { ResolvedCommentrayMarkdownPath } from "./commentray-path-resolution.js";
|
|
10
|
-
export { commentrayAnglesLayoutEnabled, commentrayAnglesSentinelPath, commentrayMarkdownPath, commentrayMarkdownPathForAngle, defaultMetadataIndexPath, normalizeRepoRelativePath, } from "./paths.js";
|
|
10
|
+
export { commentrayAnglesLayoutEnabled, commentrayAnglesSentinelPath, commentrayMarkdownPath, commentrayMarkdownPathForAngle, defaultMetadataIndexPath, normalizeRepoRelativePath, resolvePathUnderRepoRoot, } from "./paths.js";
|
|
11
|
+
export { discoverCommentrayPairsOnDisk, pairFromCommentraySourceRel, } from "./commentray-disk-pairs.js";
|
|
12
|
+
export type { DiskCommentrayPair } from "./commentray-disk-pairs.js";
|
|
11
13
|
export type { CommentrayToml, ResolvedAngleDefinition, ResolvedAngles, ResolvedCommentrayConfig, ResolvedGithubNavLink, ResolvedStaticSite, } from "./config.js";
|
|
12
14
|
export { loadCommentrayConfig, mergeCommentrayConfig } from "./config.js";
|
|
13
15
|
export { githubRepoBlobFileUrl, parseGithubRepoWebUrl } from "./github-url.js";
|
|
14
16
|
export { assertValidIndex, emptyIndex } from "./metadata.js";
|
|
15
17
|
export { describeIndexSchemaRemediation } from "./index-schema-messages.js";
|
|
16
18
|
export { migrateIndex } from "./migrate.js";
|
|
19
|
+
export { discoverFlatCompanionMarkdownFiles, flatRelToSourcePath, planAnglesMigrationFromCompanions, rewriteIndexKeysForAnglesMigration, } from "./migrate-angles-layout.js";
|
|
20
|
+
export type { AnglesMigrationMove, AnglesMigrationPlan, FlatCompanionEntry, } from "./migrate-angles-layout.js";
|
|
17
21
|
export type { ParsedAnchor } from "./anchors.js";
|
|
18
22
|
export { formatLineRange, parseAnchor } from "./anchors.js";
|
|
19
23
|
export type { ScmPathRename, ScmProvider } from "./scm/scm-provider.js";
|
|
@@ -24,6 +28,8 @@ export type { BlockDiagnostic } from "./staleness.js";
|
|
|
24
28
|
export { diagnoseBlock } from "./staleness.js";
|
|
25
29
|
export type { ValidationIssue, ValidationResult } from "./validate-project.js";
|
|
26
30
|
export { readIndex, refreshIndexMigrationsOnDisk, validateProject, writeIndex, } from "./validate-project.js";
|
|
31
|
+
export { relocationHintMessages } from "./relocation-hints.js";
|
|
32
|
+
export type { RelocationHintsInput } from "./relocation-hints.js";
|
|
27
33
|
export { runCommanderMain } from "./cli-bootstrap.js";
|
|
28
34
|
export type { BlockScrollLink } from "./scroll-sync.js";
|
|
29
35
|
export { buildBlockScrollLinks, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "./scroll-sync.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EACV,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACxB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
export { coerceIndexSchemaVersion, CURRENT_SCHEMA_VERSION } from "./model.js";
|
|
2
2
|
export { addBlockToIndex, appendBlockToCommentray, createBlockForRange, generateBlockId, } from "./blocks.js";
|
|
3
3
|
export { assertValidAngleId } from "./angles.js";
|
|
4
|
-
export { ensureAnglesSentinelFile, upsertAngleDefinitionInCommentrayToml } from "./angles-toml.js";
|
|
4
|
+
export { applyAnglesFlatMigrationToCommentrayToml, ensureAnglesSentinelFile, upsertAngleDefinitionInCommentrayToml, } from "./angles-toml.js";
|
|
5
5
|
export { defaultAngleIdForOpen, FALLBACK_DEFAULT_ANGLE_ID, resolveCommentrayMarkdownPath, } from "./commentray-path-resolution.js";
|
|
6
|
-
export { commentrayAnglesLayoutEnabled, commentrayAnglesSentinelPath, commentrayMarkdownPath, commentrayMarkdownPathForAngle, defaultMetadataIndexPath, normalizeRepoRelativePath, } from "./paths.js";
|
|
6
|
+
export { commentrayAnglesLayoutEnabled, commentrayAnglesSentinelPath, commentrayMarkdownPath, commentrayMarkdownPathForAngle, defaultMetadataIndexPath, normalizeRepoRelativePath, resolvePathUnderRepoRoot, } from "./paths.js";
|
|
7
|
+
export { discoverCommentrayPairsOnDisk, pairFromCommentraySourceRel, } from "./commentray-disk-pairs.js";
|
|
7
8
|
export { loadCommentrayConfig, mergeCommentrayConfig } from "./config.js";
|
|
8
9
|
export { githubRepoBlobFileUrl, parseGithubRepoWebUrl } from "./github-url.js";
|
|
9
10
|
export { assertValidIndex, emptyIndex } from "./metadata.js";
|
|
10
11
|
export { describeIndexSchemaRemediation } from "./index-schema-messages.js";
|
|
11
12
|
export { migrateIndex } from "./migrate.js";
|
|
13
|
+
export { discoverFlatCompanionMarkdownFiles, flatRelToSourcePath, planAnglesMigrationFromCompanions, rewriteIndexKeysForAnglesMigration, } from "./migrate-angles-layout.js";
|
|
12
14
|
export { formatLineRange, parseAnchor } from "./anchors.js";
|
|
13
15
|
export { GitScmProvider, parseGitRenameLines } from "./scm/git-scm-provider.js";
|
|
14
16
|
export { applyPathRenamesToCommentrayIndex, inferAngleIdFromCommentrayPath, } from "./commentray-index-renames.js";
|
|
15
17
|
export { diagnoseBlock } from "./staleness.js";
|
|
16
18
|
export { readIndex, refreshIndexMigrationsOnDisk, validateProject, writeIndex, } from "./validate-project.js";
|
|
19
|
+
export { relocationHintMessages } from "./relocation-hints.js";
|
|
17
20
|
export { runCommanderMain } from "./cli-bootstrap.js";
|
|
18
21
|
export { buildBlockScrollLinks, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "./scroll-sync.js";
|
|
19
22
|
export { commentrayRegionInsertions, lineCommentLeaderForLanguage, parseCommentrayRegionBoundary, sourceLineRangeForMarkerId, } from "./source-markers.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAO9E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAO9E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,wCAAwC,EACxC,wBAAwB,EACxB,qCAAqC,GACtC,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAUpC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,kCAAkC,EAClC,mBAAmB,EACnB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EACL,SAAS,EACT,4BAA4B,EAC5B,eAAe,EACf,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wCAAwC,EACxC,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAElG,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,wBAAwB,CAAC"}
|
package/dist/marker-ids.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker-ids.d.ts","sourceRoot":"","sources":["../src/marker-ids.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iGAAiG;AACjG,eAAO,MAAM,cAAc,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"marker-ids.d.ts","sourceRoot":"","sources":["../src/marker-ids.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iGAAiG;AACjG,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAwCzD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASvD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU9D"}
|
package/dist/marker-ids.js
CHANGED
|
@@ -6,6 +6,46 @@
|
|
|
6
6
|
/** Body: 1–64 chars, ASCII letters, digits, hyphen, underscore; must not be empty after trim. */
|
|
7
7
|
export const MARKER_ID_BODY = "[a-z0-9][a-z0-9_-]{0,63}";
|
|
8
8
|
const MARKER_ID_RE = new RegExp(`^${MARKER_ID_BODY}$`, "i");
|
|
9
|
+
function replaceWhitespaceRunsWithHyphens(s) {
|
|
10
|
+
let r = "";
|
|
11
|
+
let inRun = false;
|
|
12
|
+
for (const c of s) {
|
|
13
|
+
if (/\s/.test(c)) {
|
|
14
|
+
inRun = true;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
if (inRun)
|
|
18
|
+
r += "-";
|
|
19
|
+
inRun = false;
|
|
20
|
+
r += c;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (inRun)
|
|
24
|
+
r += "-";
|
|
25
|
+
return r;
|
|
26
|
+
}
|
|
27
|
+
function collapseAdjacentChar(s, ch) {
|
|
28
|
+
let r = "";
|
|
29
|
+
for (const c of s) {
|
|
30
|
+
if (c === ch) {
|
|
31
|
+
if (!r.endsWith(ch))
|
|
32
|
+
r += ch;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
r += c;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return r;
|
|
39
|
+
}
|
|
40
|
+
function trimEdgeChar(s, ch) {
|
|
41
|
+
let start = 0;
|
|
42
|
+
let end = s.length;
|
|
43
|
+
while (start < end && s[start] === ch)
|
|
44
|
+
start++;
|
|
45
|
+
while (end > start && s[end - 1] === ch)
|
|
46
|
+
end--;
|
|
47
|
+
return s.slice(start, end);
|
|
48
|
+
}
|
|
9
49
|
/**
|
|
10
50
|
* Validates and returns the normalised (lower-case) marker id, or throws with a
|
|
11
51
|
* message suitable for CLI / editor output.
|
|
@@ -24,15 +64,8 @@ export function assertValidMarkerId(raw) {
|
|
|
24
64
|
* still invalid — callers may fall back to {@link generateBlockId} from `blocks.js`.
|
|
25
65
|
*/
|
|
26
66
|
export function normaliseMarkerSlugOrThrow(raw) {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
.toLowerCase()
|
|
30
|
-
.replace(/\s+/g, "-")
|
|
31
|
-
.replace(/[^a-z0-9_-]+/g, "")
|
|
32
|
-
.replace(/-+/g, "-")
|
|
33
|
-
.replace(/_+/g, "_")
|
|
34
|
-
.replace(/^-+|-+$/g, "")
|
|
35
|
-
.replace(/^_|_$/g, "");
|
|
67
|
+
const withoutInvalid = replaceWhitespaceRunsWithHyphens(raw.trim().toLowerCase()).replaceAll(/[^a-z0-9_-]+/g, "");
|
|
68
|
+
const slug = trimEdgeChar(trimEdgeChar(collapseAdjacentChar(collapseAdjacentChar(withoutInvalid, "-"), "_"), "-"), "_");
|
|
36
69
|
return assertValidMarkerId(slug);
|
|
37
70
|
}
|
|
38
71
|
//# sourceMappingURL=marker-ids.js.map
|
package/dist/marker-ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker-ids.js","sourceRoot":"","sources":["../src/marker-ids.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAEzD,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,gEAAgE;YACvF,iFAAiF,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,MAAM,
|
|
1
|
+
{"version":3,"file":"marker-ids.js","sourceRoot":"","sources":["../src/marker-ids.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAEzD,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;AAE5D,SAAS,gCAAgC,CAAC,CAAS;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,KAAK;gBAAE,CAAC,IAAI,GAAG,CAAC;YACpB,KAAK,GAAG,KAAK,CAAC;YACd,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,IAAI,KAAK;QAAE,CAAC,IAAI,GAAG,CAAC;IACpB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAS,EAAE,EAAU;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,EAAU;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,OAAO,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,CAAC;IAC/C,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,CAAC;IAC/C,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,gEAAgE;YACvF,iFAAiF,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,MAAM,cAAc,GAAG,gCAAgC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAC1F,eAAe,EACf,EAAE,CACH,CAAC;IACF,MAAM,IAAI,GAAG,YAAY,CACvB,YAAY,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EACvF,GAAG,CACJ,CAAC;IACF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CommentrayIndex } from "./model.js";
|
|
2
|
+
export type FlatCompanionEntry = {
|
|
3
|
+
/** Repo-relative path, e.g. `.commentray/source/README.md.md`. */
|
|
4
|
+
flatCommentrayPath: string;
|
|
5
|
+
/** Repo-relative primary source path, e.g. `README.md`. */
|
|
6
|
+
sourcePath: string;
|
|
7
|
+
};
|
|
8
|
+
export type AnglesMigrationMove = {
|
|
9
|
+
fromRepoRel: string;
|
|
10
|
+
toRepoRel: string;
|
|
11
|
+
sourcePath: string;
|
|
12
|
+
};
|
|
13
|
+
export type AnglesMigrationPlan = {
|
|
14
|
+
moves: AnglesMigrationMove[];
|
|
15
|
+
/** Old flat companion path → new angle Markdown path (repo-relative). */
|
|
16
|
+
flatToAnglePath: Map<string, string>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Lists every flat-layout companion Markdown file under `{storage}/source/`.
|
|
20
|
+
* Returns an empty list when Angles layout is already enabled (sentinel present).
|
|
21
|
+
*/
|
|
22
|
+
export declare function discoverFlatCompanionMarkdownFiles(repoRoot: string, storageDir?: string): Promise<FlatCompanionEntry[]>;
|
|
23
|
+
/** `rel` is relative to `{storage}/source/` using `/` separators. */
|
|
24
|
+
export declare function flatRelToSourcePath(relFromSourceDir: string): string;
|
|
25
|
+
export declare function planAnglesMigrationFromCompanions(companions: FlatCompanionEntry[], angleId: string, storageDir: string): AnglesMigrationPlan;
|
|
26
|
+
export declare function rewriteIndexKeysForAnglesMigration(index: CommentrayIndex, flatToAnglePath: Map<string, string>): CommentrayIndex;
|
|
27
|
+
//# sourceMappingURL=migrate-angles-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-angles-layout.d.ts","sourceRoot":"","sources":["../src/migrate-angles-layout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,YAAY,CAAC;AAQxE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,yEAAyE;IACzE,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAgB,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2B/B;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAerB;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,eAAe,EACtB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,eAAe,CAOjB"}
|