@commentray/core 0.0.2 → 0.0.5
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/anchors.d.ts +6 -0
- package/dist/anchors.d.ts.map +1 -1
- package/dist/anchors.js +11 -0
- package/dist/anchors.js.map +1 -1
- 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/block-scroll-pickers.d.ts +22 -0
- package/dist/block-scroll-pickers.d.ts.map +1 -0
- package/dist/block-scroll-pickers.js +41 -0
- package/dist/block-scroll-pickers.js.map +1 -0
- package/dist/block-snippet.d.ts +13 -0
- package/dist/block-snippet.d.ts.map +1 -0
- package/dist/block-snippet.js +30 -0
- package/dist/block-snippet.js.map +1 -0
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +13 -13
- 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/commentray-index-renames.d.ts +21 -0
- package/dist/commentray-index-renames.d.ts.map +1 -0
- package/dist/commentray-index-renames.js +85 -0
- package/dist/commentray-index-renames.js.map +1 -0
- package/dist/commentray-path-resolution.js +1 -1
- package/dist/commentray-path-resolution.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -4
- package/dist/config.js.map +1 -1
- 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/index-normalize.d.ts +10 -0
- package/dist/index-normalize.d.ts.map +1 -0
- package/dist/index-normalize.js +60 -0
- package/dist/index-normalize.js.map +1 -0
- package/dist/index-schema-messages.d.ts +6 -0
- package/dist/index-schema-messages.d.ts.map +1 -0
- package/dist/index-schema-messages.js +26 -0
- package/dist/index-schema-messages.js.map +1 -0
- package/dist/index.d.ts +23 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -1
- package/dist/marker-ids.d.ts +19 -0
- package/dist/marker-ids.d.ts.map +1 -0
- package/dist/marker-ids.js +38 -0
- package/dist/marker-ids.js.map +1 -0
- package/dist/marker-validation.d.ts +22 -0
- package/dist/marker-validation.d.ts.map +1 -0
- package/dist/marker-validation.js +138 -0
- package/dist/marker-validation.js.map +1 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +54 -25
- package/dist/metadata.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/migrate.d.ts.map +1 -1
- package/dist/migrate.js +20 -4
- package/dist/migrate.js.map +1 -1
- package/dist/model.d.ts +13 -26
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +16 -0
- package/dist/model.js.map +1 -1
- package/dist/paths.d.ts +7 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +18 -2
- package/dist/paths.js.map +1 -1
- package/dist/region-marker-convert.d.ts +27 -0
- package/dist/region-marker-convert.d.ts.map +1 -0
- package/dist/region-marker-convert.js +78 -0
- package/dist/region-marker-convert.js.map +1 -0
- 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 +7 -1
- package/dist/scm/git-scm-provider.d.ts.map +1 -1
- package/dist/scm/git-scm-provider.js +42 -20
- 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/scm/scm-provider.d.ts +10 -0
- package/dist/scm/scm-provider.d.ts.map +1 -1
- package/dist/scroll-sync.d.ts +8 -23
- package/dist/scroll-sync.d.ts.map +1 -1
- package/dist/scroll-sync.js +31 -52
- package/dist/scroll-sync.js.map +1 -1
- package/dist/source-markers.d.ts +28 -0
- package/dist/source-markers.d.ts.map +1 -0
- package/dist/source-markers.js +241 -0
- package/dist/source-markers.js.map +1 -0
- package/dist/validate-project.d.ts +9 -1
- package/dist/validate-project.d.ts.map +1 -1
- package/dist/validate-project.js +107 -16
- 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 +6 -2
package/dist/scroll-sync.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { parseAnchor } from "./anchors.js";
|
|
2
|
-
|
|
2
|
+
import { MARKER_ID_BODY } from "./marker-ids.js";
|
|
3
|
+
import { sourceLineRangeForMarkerId } from "./source-markers.js";
|
|
4
|
+
export { pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "./block-scroll-pickers.js";
|
|
5
|
+
const BLOCK_MARKER_RE = new RegExp(`<!-- commentray:block id=(${MARKER_ID_BODY}) -->`);
|
|
3
6
|
function markerLineByIdFromMarkdown(markdown) {
|
|
4
7
|
const map = new Map();
|
|
5
8
|
const lines = markdown.split("\n");
|
|
@@ -11,11 +14,12 @@ function markerLineByIdFromMarkdown(markdown) {
|
|
|
11
14
|
return map;
|
|
12
15
|
}
|
|
13
16
|
/**
|
|
14
|
-
* Correlate index blocks
|
|
15
|
-
*
|
|
16
|
-
* marker
|
|
17
|
+
* Correlate index blocks with `<!-- commentray:block id=… -->` markers in
|
|
18
|
+
* commentray. Supports legacy `lines:` anchors and `marker:` anchors (the
|
|
19
|
+
* latter needs `sourceText` to resolve marker comments in the primary file).
|
|
20
|
+
* Sorted by `sourceStart`.
|
|
17
21
|
*/
|
|
18
|
-
export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, commentrayMarkdown) {
|
|
22
|
+
export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, commentrayMarkdown, sourceText) {
|
|
19
23
|
const entry = index?.byCommentrayPath[commentrayPath];
|
|
20
24
|
if (!entry || entry.sourcePath !== sourceRelative || entry.blocks.length === 0)
|
|
21
25
|
return [];
|
|
@@ -23,58 +27,33 @@ export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, com
|
|
|
23
27
|
const links = [];
|
|
24
28
|
for (const block of entry.blocks) {
|
|
25
29
|
const anchor = parseAnchor(block.anchor);
|
|
26
|
-
if (anchor.kind !== "lines")
|
|
27
|
-
continue;
|
|
28
30
|
const commentrayLine = markerLineById.get(block.id);
|
|
29
31
|
if (commentrayLine === undefined)
|
|
30
32
|
continue;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
if (anchor.kind === "lines") {
|
|
34
|
+
links.push({
|
|
35
|
+
id: block.id,
|
|
36
|
+
commentrayLine,
|
|
37
|
+
sourceStart: anchor.range.start,
|
|
38
|
+
sourceEnd: anchor.range.end,
|
|
39
|
+
});
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (anchor.kind === "marker") {
|
|
43
|
+
if (sourceText === undefined)
|
|
44
|
+
continue;
|
|
45
|
+
const range = sourceLineRangeForMarkerId(sourceText, anchor.id);
|
|
46
|
+
if (range === null)
|
|
47
|
+
continue;
|
|
48
|
+
links.push({
|
|
49
|
+
id: block.id,
|
|
50
|
+
commentrayLine,
|
|
51
|
+
sourceStart: range.start,
|
|
52
|
+
sourceEnd: range.end,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
36
55
|
}
|
|
37
56
|
links.sort((a, b) => a.sourceStart - b.sourceStart);
|
|
38
57
|
return links;
|
|
39
58
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Choose which commentray line (0-based) to reveal so the commentary matches
|
|
42
|
-
* the top of the source viewport. Prefers the block whose source range
|
|
43
|
-
* **contains** the top line; otherwise the nearest preceding block; if above
|
|
44
|
-
* all blocks, the first block.
|
|
45
|
-
*/
|
|
46
|
-
export function pickCommentrayLineForSourceScroll(blocks, topSourceLine1Based) {
|
|
47
|
-
if (blocks.length === 0)
|
|
48
|
-
return null;
|
|
49
|
-
const inside = blocks.find((b) => b.sourceStart <= topSourceLine1Based && topSourceLine1Based <= b.sourceEnd);
|
|
50
|
-
if (inside)
|
|
51
|
-
return inside.commentrayLine;
|
|
52
|
-
if (topSourceLine1Based < blocks[0].sourceStart)
|
|
53
|
-
return blocks[0].commentrayLine;
|
|
54
|
-
let best = blocks[0];
|
|
55
|
-
for (const b of blocks) {
|
|
56
|
-
if (b.sourceStart <= topSourceLine1Based)
|
|
57
|
-
best = b;
|
|
58
|
-
else
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
return best.commentrayLine;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Choose a 0-based source line to reveal from the top of the commentray
|
|
65
|
-
* viewport: the block whose marker is at or above that line wins; reveal the
|
|
66
|
-
* start of its source range.
|
|
67
|
-
*/
|
|
68
|
-
export function pickSourceLine0ForCommentrayScroll(blocks, topCommentrayLine0Based) {
|
|
69
|
-
if (blocks.length === 0)
|
|
70
|
-
return null;
|
|
71
|
-
let best = blocks[0];
|
|
72
|
-
for (const b of blocks) {
|
|
73
|
-
if (b.commentrayLine <= topCommentrayLine0Based)
|
|
74
|
-
best = b;
|
|
75
|
-
else
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
return best.sourceStart - 1;
|
|
79
|
-
}
|
|
80
59
|
//# sourceMappingURL=scroll-sync.js.map
|
package/dist/scroll-sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-sync.js","sourceRoot":"","sources":["../src/scroll-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"scroll-sync.js","sourceRoot":"","sources":["../src/scroll-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EACL,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,6BAA6B,cAAc,OAAO,CAAC,CAAC;AAEvF,SAAS,0BAA0B,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAyC,EACzC,cAAsB,EACtB,cAAsB,EACtB,kBAA0B,EAC1B,UAAmB;IAEnB,MAAM,KAAK,GAAG,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1F,MAAM,cAAc,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IACtE,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,cAAc,KAAK,SAAS;YAAE,SAAS;QAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,cAAc;gBACd,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;gBAC/B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;aAC5B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,UAAU,KAAK,SAAS;gBAAE,SAAS;YACvC,MAAM,KAAK,GAAG,0BAA0B,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAC7B,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,cAAc;gBACd,WAAW,EAAE,KAAK,CAAC,KAAK;gBACxB,SAAS,EAAE,KAAK,CAAC,GAAG;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line comment leader for **generic** `commentray:start` / `end` markers
|
|
3
|
+
* (`// …`, `# …`, etc.). Not used for `#region` family languages.
|
|
4
|
+
*/
|
|
5
|
+
export declare function lineCommentLeaderForLanguage(languageId: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Insertion fragments for wrapping the selection (apply **end** first, then
|
|
8
|
+
* **start**, so stable offsets). Pass the same indentation string Region Marker
|
|
9
|
+
* uses (leading whitespace of the first selected line).
|
|
10
|
+
*/
|
|
11
|
+
export declare function commentrayRegionInsertions(languageId: string, markerId: string, indent?: string): {
|
|
12
|
+
start: string;
|
|
13
|
+
end: string;
|
|
14
|
+
};
|
|
15
|
+
export type RegionBoundaryKind = "start" | "end";
|
|
16
|
+
/** Detect a Commentray region, generic marker, or legacy marker line; id is lower-case. */
|
|
17
|
+
export declare function parseCommentrayRegionBoundary(line: string): {
|
|
18
|
+
kind: RegionBoundaryKind;
|
|
19
|
+
id: string;
|
|
20
|
+
} | null;
|
|
21
|
+
/**
|
|
22
|
+
* 1-based inclusive source lines **between** paired region / generic / legacy marker lines.
|
|
23
|
+
*/
|
|
24
|
+
export declare function sourceLineRangeForMarkerId(sourceText: string, markerId: string): {
|
|
25
|
+
start: number;
|
|
26
|
+
end: number;
|
|
27
|
+
} | null;
|
|
28
|
+
//# sourceMappingURL=source-markers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-markers.d.ts","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"AAyGA;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMvE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAK,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAuDhC;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,KAAK,CAAC;AAEjD,2FAA2F;AAC3F,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA8CjD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IACD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CAgBP"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { assertValidMarkerId, MARKER_ID_BODY } from "./marker-ids.js";
|
|
2
|
+
/**
|
|
3
|
+
* Source delimiters for block anchors:
|
|
4
|
+
*
|
|
5
|
+
* 1. **Region convention** — where editors commonly fold `//#region` /
|
|
6
|
+
* `//#endregion`, `#region` / `#endregion`, `#pragma region`, etc. (aligned
|
|
7
|
+
* with [Region Marker](https://marketplace.visualstudio.com/items?itemName=txava.region-marker)),
|
|
8
|
+
* Commentray uses the region **name** `commentray:<id>`.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Generic comments** — for languages without a shared region idiom, we
|
|
11
|
+
* use ordinary line or block comments and our own `commentray:start id=<id>` /
|
|
12
|
+
* `commentray:end id=<id>` tokens (still parsed by {@link parseCommentrayRegionBoundary}).
|
|
13
|
+
*
|
|
14
|
+
* Legacy pairs that only use (2) remain valid everywhere.
|
|
15
|
+
*/
|
|
16
|
+
const COMMENTRAY_TAG = (id) => `commentray:${id.trim().toLowerCase()}`;
|
|
17
|
+
/** `//#region commentray:<id>` — JS/TS ecosystem & CSS preprocessors that use `//`. */
|
|
18
|
+
const SLASH_REGION_LANGUAGES = new Set([
|
|
19
|
+
"javascript",
|
|
20
|
+
"javascriptreact",
|
|
21
|
+
"typescript",
|
|
22
|
+
"typescriptreact",
|
|
23
|
+
"js",
|
|
24
|
+
"jsx",
|
|
25
|
+
"tsx",
|
|
26
|
+
"mjs",
|
|
27
|
+
"cjs",
|
|
28
|
+
"vue",
|
|
29
|
+
"svelte",
|
|
30
|
+
"astro",
|
|
31
|
+
"scss",
|
|
32
|
+
"less",
|
|
33
|
+
"stylus",
|
|
34
|
+
]);
|
|
35
|
+
/** `#region commentray:<id>` — same shape as Region Marker for these ids. */
|
|
36
|
+
const HASH_REGION_LANGUAGES = new Set([
|
|
37
|
+
"ruby",
|
|
38
|
+
"csharp",
|
|
39
|
+
"coffeescript",
|
|
40
|
+
"powershell",
|
|
41
|
+
"perl",
|
|
42
|
+
"raku",
|
|
43
|
+
"crystal",
|
|
44
|
+
]);
|
|
45
|
+
const PRAGMA_REGION = new Set(["c", "cpp", "cuda-cpp", "objective-c", "objective-cpp"]);
|
|
46
|
+
const VB_REGION = new Set(["vb"]);
|
|
47
|
+
const LUA_REGION = new Set(["lua"]);
|
|
48
|
+
const HTML_FAMILY = new Set(["html", "xml", "handlebars", "vue-html"]);
|
|
49
|
+
const PYTHONIC = new Set(["python", "jupyter"]);
|
|
50
|
+
/** `# …` line comments for generic markers (no `#region` folding convention). */
|
|
51
|
+
const GENERIC_HASH_LANGUAGES = new Set([
|
|
52
|
+
"dockerfile",
|
|
53
|
+
"makefile",
|
|
54
|
+
"cmake",
|
|
55
|
+
"yaml",
|
|
56
|
+
"yml",
|
|
57
|
+
"toml",
|
|
58
|
+
"ini",
|
|
59
|
+
"properties",
|
|
60
|
+
"git-commit",
|
|
61
|
+
"sql",
|
|
62
|
+
"r",
|
|
63
|
+
"shellscript",
|
|
64
|
+
"bash",
|
|
65
|
+
"sh",
|
|
66
|
+
"zsh",
|
|
67
|
+
"fish",
|
|
68
|
+
]);
|
|
69
|
+
function regionConvention(languageId) {
|
|
70
|
+
const id = languageId.toLowerCase();
|
|
71
|
+
if (id === "css")
|
|
72
|
+
return "generic-block-css";
|
|
73
|
+
if (PYTHONIC.has(id))
|
|
74
|
+
return "python";
|
|
75
|
+
if (PRAGMA_REGION.has(id))
|
|
76
|
+
return "pragma";
|
|
77
|
+
if (VB_REGION.has(id))
|
|
78
|
+
return "vb";
|
|
79
|
+
if (HTML_FAMILY.has(id))
|
|
80
|
+
return "html";
|
|
81
|
+
if (LUA_REGION.has(id))
|
|
82
|
+
return "lua";
|
|
83
|
+
if (HASH_REGION_LANGUAGES.has(id))
|
|
84
|
+
return "hash-region";
|
|
85
|
+
if (SLASH_REGION_LANGUAGES.has(id))
|
|
86
|
+
return "slash-region";
|
|
87
|
+
if (GENERIC_HASH_LANGUAGES.has(id))
|
|
88
|
+
return "generic-hash";
|
|
89
|
+
return "generic-line";
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Line comment leader for **generic** `commentray:start` / `end` markers
|
|
93
|
+
* (`// …`, `# …`, etc.). Not used for `#region` family languages.
|
|
94
|
+
*/
|
|
95
|
+
export function lineCommentLeaderForLanguage(languageId) {
|
|
96
|
+
const id = languageId.toLowerCase();
|
|
97
|
+
if (GENERIC_HASH_LANGUAGES.has(id))
|
|
98
|
+
return "# ";
|
|
99
|
+
if (id === "lua")
|
|
100
|
+
return "-- ";
|
|
101
|
+
if (id === "vb")
|
|
102
|
+
return "' ";
|
|
103
|
+
return "// ";
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Insertion fragments for wrapping the selection (apply **end** first, then
|
|
107
|
+
* **start**, so stable offsets). Pass the same indentation string Region Marker
|
|
108
|
+
* uses (leading whitespace of the first selected line).
|
|
109
|
+
*/
|
|
110
|
+
export function commentrayRegionInsertions(languageId, markerId, indent = "") {
|
|
111
|
+
const id = assertValidMarkerId(markerId);
|
|
112
|
+
const tag = COMMENTRAY_TAG(id);
|
|
113
|
+
const ind = indent;
|
|
114
|
+
const conv = regionConvention(languageId);
|
|
115
|
+
switch (conv) {
|
|
116
|
+
case "slash-region":
|
|
117
|
+
return {
|
|
118
|
+
start: `${ind}//#region ${tag}\n`,
|
|
119
|
+
end: `\n${ind}//#endregion ${tag}`,
|
|
120
|
+
};
|
|
121
|
+
case "hash-region":
|
|
122
|
+
return {
|
|
123
|
+
start: `${ind}#region ${tag}\n`,
|
|
124
|
+
end: `\n${ind}#endregion ${tag}`,
|
|
125
|
+
};
|
|
126
|
+
case "pragma":
|
|
127
|
+
return {
|
|
128
|
+
start: `${ind}#pragma region ${tag}\n`,
|
|
129
|
+
end: `\n${ind}#pragma endregion ${tag}`,
|
|
130
|
+
};
|
|
131
|
+
case "vb":
|
|
132
|
+
return {
|
|
133
|
+
start: `${ind}#Region ${tag}\n`,
|
|
134
|
+
end: `\n${ind}#End Region ${tag}`,
|
|
135
|
+
};
|
|
136
|
+
case "html":
|
|
137
|
+
return {
|
|
138
|
+
start: `${ind}<!-- #region ${tag} -->\n`,
|
|
139
|
+
end: `\n${ind}<!-- #endregion ${tag} -->`,
|
|
140
|
+
};
|
|
141
|
+
case "python":
|
|
142
|
+
return {
|
|
143
|
+
start: `${ind}# region ${tag}\n`,
|
|
144
|
+
end: `\n${ind}# endregion ${tag}`,
|
|
145
|
+
};
|
|
146
|
+
case "lua":
|
|
147
|
+
return {
|
|
148
|
+
start: `${ind}--#region ${tag}\n`,
|
|
149
|
+
end: `\n${ind}--#endregion ${tag}`,
|
|
150
|
+
};
|
|
151
|
+
case "generic-block-css":
|
|
152
|
+
return {
|
|
153
|
+
start: `${ind}/* commentray:start id=${id} */\n`,
|
|
154
|
+
end: `\n${ind}/* commentray:end id=${id} */`,
|
|
155
|
+
};
|
|
156
|
+
case "generic-hash":
|
|
157
|
+
case "generic-line": {
|
|
158
|
+
const leader = lineCommentLeaderForLanguage(languageId);
|
|
159
|
+
return {
|
|
160
|
+
start: `${ind}${leader}commentray:start id=${id}\n`,
|
|
161
|
+
end: `\n${ind}${leader}commentray:end id=${id}`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Detect a Commentray region, generic marker, or legacy marker line; id is lower-case. */
|
|
167
|
+
export function parseCommentrayRegionBoundary(line) {
|
|
168
|
+
const probe = line.trim();
|
|
169
|
+
const mid = MARKER_ID_BODY;
|
|
170
|
+
const startPatterns = [
|
|
171
|
+
new RegExp(`^//#region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
172
|
+
new RegExp(`^#region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
173
|
+
new RegExp(`^#pragma\\s+region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
174
|
+
new RegExp(`^#Region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
175
|
+
new RegExp(`^#\\s*region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
176
|
+
new RegExp(`^<!--\\s*#region\\s+commentray:(${mid})\\s*-->\\s*$`, "i"),
|
|
177
|
+
new RegExp(`^--#region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
178
|
+
new RegExp(`^/\\*\\s*commentray:start\\s+id=(${mid})\\s*\\*/\\s*$`, "i"),
|
|
179
|
+
new RegExp(`commentray:start\\s+id=(${mid})\\b`, "i"),
|
|
180
|
+
];
|
|
181
|
+
const endPatterns = [
|
|
182
|
+
new RegExp(`^//#endregion\\s+commentray:(${mid})\\s*$`, "i"),
|
|
183
|
+
new RegExp(`^#endregion\\s+commentray:(${mid})\\s*$`, "i"),
|
|
184
|
+
new RegExp(`^#pragma\\s+endregion\\s+commentray:(${mid})\\s*$`, "i"),
|
|
185
|
+
new RegExp(`^#End\\s+Region\\s+commentray:(${mid})\\s*$`, "i"),
|
|
186
|
+
new RegExp(`^#\\s*endregion\\s+commentray:(${mid})\\s*$`, "i"),
|
|
187
|
+
new RegExp(`^<!--\\s*#endregion\\s+commentray:(${mid})\\s*-->\\s*$`, "i"),
|
|
188
|
+
new RegExp(`^--#endregion\\s+commentray:(${mid})\\s*$`, "i"),
|
|
189
|
+
new RegExp(`^/\\*\\s*commentray:end\\s+id=(${mid})\\s*\\*/\\s*$`, "i"),
|
|
190
|
+
new RegExp(`commentray:end\\s+id=(${mid})\\b`, "i"),
|
|
191
|
+
];
|
|
192
|
+
for (const re of startPatterns) {
|
|
193
|
+
const m = re.exec(probe);
|
|
194
|
+
if (m) {
|
|
195
|
+
try {
|
|
196
|
+
return { kind: "start", id: assertValidMarkerId(m[1]) };
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
for (const re of endPatterns) {
|
|
204
|
+
const m = re.exec(probe);
|
|
205
|
+
if (m) {
|
|
206
|
+
try {
|
|
207
|
+
return { kind: "end", id: assertValidMarkerId(m[1]) };
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* 1-based inclusive source lines **between** paired region / generic / legacy marker lines.
|
|
218
|
+
*/
|
|
219
|
+
export function sourceLineRangeForMarkerId(sourceText, markerId) {
|
|
220
|
+
const id = assertValidMarkerId(markerId);
|
|
221
|
+
const lines = sourceText.split("\n");
|
|
222
|
+
let startIdx = -1;
|
|
223
|
+
let endIdx = -1;
|
|
224
|
+
for (let i = 0; i < lines.length; i++) {
|
|
225
|
+
const hit = parseCommentrayRegionBoundary(lines[i]);
|
|
226
|
+
if (hit?.id !== id)
|
|
227
|
+
continue;
|
|
228
|
+
if (hit.kind === "start" && startIdx < 0)
|
|
229
|
+
startIdx = i;
|
|
230
|
+
else if (hit.kind === "end" && startIdx >= 0 && endIdx < 0)
|
|
231
|
+
endIdx = i;
|
|
232
|
+
}
|
|
233
|
+
if (startIdx < 0 || endIdx < 0 || endIdx < startIdx + 2)
|
|
234
|
+
return null;
|
|
235
|
+
const start = startIdx + 2;
|
|
236
|
+
const end = endIdx;
|
|
237
|
+
if (end < start)
|
|
238
|
+
return null;
|
|
239
|
+
return { start, end };
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=source-markers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-markers.js","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CommentrayIndex } from "./model.js";
|
|
2
2
|
export type ValidationIssue = {
|
|
3
3
|
level: "error" | "warn";
|
|
4
4
|
message: string;
|
|
@@ -7,6 +7,14 @@ export type ValidationResult = {
|
|
|
7
7
|
issues: ValidationIssue[];
|
|
8
8
|
};
|
|
9
9
|
export declare function validateProject(repoRoot: string): Promise<ValidationResult>;
|
|
10
|
+
/**
|
|
11
|
+
* Reads `index.json`, applies schema migration and snippet/fingerprint normalization,
|
|
12
|
+
* and persists when anything changed. Throws if the file is missing or not valid JSON.
|
|
13
|
+
*/
|
|
14
|
+
export declare function refreshIndexMigrationsOnDisk(repoRoot: string): Promise<{
|
|
15
|
+
index: CommentrayIndex;
|
|
16
|
+
changed: boolean;
|
|
17
|
+
}>;
|
|
10
18
|
export declare function readIndex(repoRoot: string): Promise<CommentrayIndex | null>;
|
|
11
19
|
/**
|
|
12
20
|
* Write the metadata index to the default location under `repoRoot`, creating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-project.d.ts","sourceRoot":"","sources":["../src/validate-project.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,
|
|
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"}
|
package/dist/validate-project.js
CHANGED
|
@@ -2,9 +2,82 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { loadCommentrayConfig } from "./config.js";
|
|
4
4
|
import { parseGithubRepoWebUrl } from "./github-url.js";
|
|
5
|
+
import { normalizeCommentrayIndex } from "./index-normalize.js";
|
|
5
6
|
import { assertValidIndex } from "./metadata.js";
|
|
6
7
|
import { migrateIndex } from "./migrate.js";
|
|
7
|
-
import {
|
|
8
|
+
import { coerceIndexSchemaVersion, CURRENT_SCHEMA_VERSION } from "./model.js";
|
|
9
|
+
import { defaultMetadataIndexPath, normalizeRepoRelativePath } from "./paths.js";
|
|
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
|
+
}
|
|
8
81
|
export async function validateProject(repoRoot) {
|
|
9
82
|
const issues = [];
|
|
10
83
|
let config;
|
|
@@ -31,9 +104,10 @@ export async function validateProject(repoRoot) {
|
|
|
31
104
|
});
|
|
32
105
|
}
|
|
33
106
|
}
|
|
107
|
+
let index = null;
|
|
34
108
|
try {
|
|
35
|
-
|
|
36
|
-
if (
|
|
109
|
+
index = await readIndex(repoRoot);
|
|
110
|
+
if (index === null) {
|
|
37
111
|
issues.push({ level: "warn", message: `No metadata index at ${defaultMetadataIndexPath()}` });
|
|
38
112
|
}
|
|
39
113
|
}
|
|
@@ -43,6 +117,9 @@ export async function validateProject(repoRoot) {
|
|
|
43
117
|
message: `Invalid metadata index: ${err instanceof Error ? err.message : String(err)}`,
|
|
44
118
|
});
|
|
45
119
|
}
|
|
120
|
+
if (index) {
|
|
121
|
+
issues.push(...(await collectIssuesForLoadedIndex(repoRoot, index)));
|
|
122
|
+
}
|
|
46
123
|
pushRelativeGithubLinkConfigWarnings(config, issues);
|
|
47
124
|
return { issues };
|
|
48
125
|
}
|
|
@@ -58,21 +135,35 @@ function pushRelativeGithubLinkConfigWarnings(config, issues) {
|
|
|
58
135
|
"not a repository home URL (expected https://github.com/owner/repo). Link rewriting is skipped at build time.",
|
|
59
136
|
});
|
|
60
137
|
}
|
|
61
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Reads `index.json`, applies schema migration and snippet/fingerprint normalization,
|
|
140
|
+
* and persists when anything changed. Throws if the file is missing or not valid JSON.
|
|
141
|
+
*/
|
|
142
|
+
export async function refreshIndexMigrationsOnDisk(repoRoot) {
|
|
62
143
|
const indexPath = path.join(repoRoot, defaultMetadataIndexPath());
|
|
144
|
+
const raw = await fs.readFile(indexPath, "utf8");
|
|
145
|
+
const parsed = JSON.parse(raw);
|
|
146
|
+
const priorSchema = typeof parsed === "object" && parsed !== null
|
|
147
|
+
? coerceIndexSchemaVersion(parsed.schemaVersion)
|
|
148
|
+
: null;
|
|
149
|
+
if (typeof priorSchema === "number" && priorSchema > CURRENT_SCHEMA_VERSION) {
|
|
150
|
+
const metaDir = path.dirname(indexPath);
|
|
151
|
+
const backupName = `index.schema-${String(priorSchema)}-backup-${String(Date.now())}.json`;
|
|
152
|
+
await fs.writeFile(path.join(metaDir, backupName), raw, "utf8");
|
|
153
|
+
}
|
|
154
|
+
const { index: migrated, changed: schemaChanged } = migrateIndex(parsed);
|
|
155
|
+
const { index: normalized, changed: snippetChanged } = normalizeCommentrayIndex(migrated);
|
|
156
|
+
const index = assertValidIndex(normalized);
|
|
157
|
+
const changed = schemaChanged || snippetChanged;
|
|
158
|
+
if (changed) {
|
|
159
|
+
await writeIndex(repoRoot, index);
|
|
160
|
+
}
|
|
161
|
+
return { index, changed };
|
|
162
|
+
}
|
|
163
|
+
export async function readIndex(repoRoot) {
|
|
63
164
|
try {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
try {
|
|
67
|
-
return assertValidIndex(parsed);
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
const { index, changed } = migrateIndex(parsed);
|
|
71
|
-
if (changed) {
|
|
72
|
-
await writeIndex(repoRoot, index);
|
|
73
|
-
}
|
|
74
|
-
return assertValidIndex(index);
|
|
75
|
-
}
|
|
165
|
+
const { index } = await refreshIndexMigrationsOnDisk(repoRoot);
|
|
166
|
+
return index;
|
|
76
167
|
}
|
|
77
168
|
catch (err) {
|
|
78
169
|
const code = err.code;
|
|
@@ -1 +1 @@
|
|
|
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,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validate-project.js","sourceRoot":"","sources":["../src/validate-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|