@commentray/core 0.1.0 → 0.1.1
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/block-scroll-pickers.d.ts +15 -4
- package/dist/block-scroll-pickers.d.ts.map +1 -1
- package/dist/block-scroll-pickers.js +28 -17
- package/dist/block-scroll-pickers.js.map +1 -1
- package/dist/blocks.d.ts +18 -0
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +24 -3
- package/dist/blocks.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/region-marker-naming.d.ts +75 -0
- package/dist/region-marker-naming.d.ts.map +1 -0
- package/dist/region-marker-naming.js +316 -0
- package/dist/region-marker-naming.js.map +1 -0
- package/dist/scroll-sync.d.ts.map +1 -1
- package/dist/scroll-sync.js +12 -2
- package/dist/scroll-sync.js.map +1 -1
- package/dist/source-markers.d.ts +10 -0
- package/dist/source-markers.d.ts.map +1 -1
- package/dist/source-markers.js +32 -5
- package/dist/source-markers.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,20 +3,31 @@ export type BlockScrollLink = {
|
|
|
3
3
|
/** Same id as `<!-- commentray:block id=… -->` and `index.json` blocks[]. */
|
|
4
4
|
id: string;
|
|
5
5
|
commentrayLine: number;
|
|
6
|
+
/** 1-based inclusive inner lines between paired region markers (unchanged semantics). */
|
|
6
7
|
sourceStart: number;
|
|
7
8
|
sourceEnd: number;
|
|
9
|
+
/**
|
|
10
|
+
* 1-based half-open viewport span for “which block owns this source line?”. Marker-backed
|
|
11
|
+
* blocks use `markerViewportHalfOpen1Based()` in source-markers; `lines:` anchors use
|
|
12
|
+
* `[range.start, range.end + 1)`.
|
|
13
|
+
*/
|
|
14
|
+
markerViewportHalfOpen1Based: {
|
|
15
|
+
lo: number;
|
|
16
|
+
hiExclusive: number;
|
|
17
|
+
};
|
|
8
18
|
};
|
|
9
19
|
/**
|
|
10
20
|
* Choose which commentray line (0-based) to reveal so the commentary matches
|
|
11
|
-
* the top of the source viewport.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
21
|
+
* the top of the source viewport. Uses each link’s `markerViewportHalfOpen1Based`:
|
|
22
|
+
* if the top line falls in `[lo, hiExclusive)`, that block wins; in gaps, the block with the
|
|
23
|
+
* greatest `lo` still at or above the top line; if the viewport is above every `lo`, the first
|
|
24
|
+
* block by `lo`.
|
|
14
25
|
*/
|
|
15
26
|
export declare function pickCommentrayLineForSourceScroll(blocks: BlockScrollLink[], topSourceLine1Based: number): number | null;
|
|
16
27
|
/**
|
|
17
28
|
* Choose a 0-based source line to reveal from the top of the commentray
|
|
18
29
|
* viewport: the block whose marker is at or above that line wins; reveal the
|
|
19
|
-
*
|
|
30
|
+
* first line of its viewport span (`lo` − 1).
|
|
20
31
|
*/
|
|
21
32
|
export declare function pickSourceLine0ForCommentrayScroll(blocks: BlockScrollLink[], topCommentrayLine0Based: number): number | null;
|
|
22
33
|
//# sourceMappingURL=block-scroll-pickers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-scroll-pickers.d.ts","sourceRoot":"","sources":["../src/block-scroll-pickers.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,MAAM,MAAM,eAAe,GAAG;IAC5B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"block-scroll-pickers.d.ts","sourceRoot":"","sources":["../src/block-scroll-pickers.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,MAAM,MAAM,eAAe,GAAG;IAC5B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,4BAA4B,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,eAAe,EAAE,EACzB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,GAAG,IAAI,CAyBf;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,eAAe,EAAE,EACzB,uBAAuB,EAAE,MAAM,GAC9B,MAAM,GAAG,IAAI,CAUf"}
|
|
@@ -1,41 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Choose which commentray line (0-based) to reveal so the commentary matches
|
|
3
|
-
* the top of the source viewport.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* the top of the source viewport. Uses each link’s `markerViewportHalfOpen1Based`:
|
|
4
|
+
* if the top line falls in `[lo, hiExclusive)`, that block wins; in gaps, the block with the
|
|
5
|
+
* greatest `lo` still at or above the top line; if the viewport is above every `lo`, the first
|
|
6
|
+
* block by `lo`.
|
|
6
7
|
*/
|
|
7
8
|
export function pickCommentrayLineForSourceScroll(blocks, topSourceLine1Based) {
|
|
8
9
|
if (blocks.length === 0)
|
|
9
10
|
return null;
|
|
10
|
-
const
|
|
11
|
+
const sorted = [...blocks].sort((a, b) => a.markerViewportHalfOpen1Based.lo - b.markerViewportHalfOpen1Based.lo);
|
|
12
|
+
const first = sorted[0];
|
|
13
|
+
if (first === undefined)
|
|
14
|
+
return null;
|
|
15
|
+
const firstLo = first.markerViewportHalfOpen1Based.lo;
|
|
16
|
+
const inside = sorted.find((b) => b.markerViewportHalfOpen1Based.lo <= topSourceLine1Based &&
|
|
17
|
+
topSourceLine1Based < b.markerViewportHalfOpen1Based.hiExclusive);
|
|
11
18
|
if (inside)
|
|
12
19
|
return inside.commentrayLine;
|
|
13
|
-
if (topSourceLine1Based <
|
|
14
|
-
return
|
|
15
|
-
let best =
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
if (topSourceLine1Based < firstLo)
|
|
21
|
+
return first.commentrayLine;
|
|
22
|
+
let best = first;
|
|
23
|
+
let bestLo = -Infinity;
|
|
24
|
+
for (const b of sorted) {
|
|
25
|
+
const lo = b.markerViewportHalfOpen1Based.lo;
|
|
26
|
+
if (lo <= topSourceLine1Based && lo > bestLo) {
|
|
18
27
|
best = b;
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
bestLo = lo;
|
|
29
|
+
}
|
|
21
30
|
}
|
|
22
31
|
return best.commentrayLine;
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
25
34
|
* Choose a 0-based source line to reveal from the top of the commentray
|
|
26
35
|
* viewport: the block whose marker is at or above that line wins; reveal the
|
|
27
|
-
*
|
|
36
|
+
* first line of its viewport span (`lo` − 1).
|
|
28
37
|
*/
|
|
29
38
|
export function pickSourceLine0ForCommentrayScroll(blocks, topCommentrayLine0Based) {
|
|
30
39
|
if (blocks.length === 0)
|
|
31
40
|
return null;
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
const sorted = [...blocks].sort((a, b) => a.commentrayLine - b.commentrayLine);
|
|
42
|
+
const head = sorted[0];
|
|
43
|
+
if (head === undefined)
|
|
44
|
+
return null;
|
|
45
|
+
let best = head;
|
|
46
|
+
for (const b of sorted) {
|
|
34
47
|
if (b.commentrayLine <= topCommentrayLine0Based)
|
|
35
48
|
best = b;
|
|
36
|
-
else
|
|
37
|
-
break;
|
|
38
49
|
}
|
|
39
|
-
return best.
|
|
50
|
+
return best.markerViewportHalfOpen1Based.lo - 1;
|
|
40
51
|
}
|
|
41
52
|
//# sourceMappingURL=block-scroll-pickers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-scroll-pickers.js","sourceRoot":"","sources":["../src/block-scroll-pickers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"block-scroll-pickers.js","sourceRoot":"","sources":["../src/block-scroll-pickers.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAC/C,MAAyB,EACzB,mBAA2B;IAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,4BAA4B,CAAC,EAAE,CAChF,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,4BAA4B,CAAC,EAAE,IAAI,mBAAmB;QACxD,mBAAmB,GAAG,CAAC,CAAC,4BAA4B,CAAC,WAAW,CACnE,CAAC;IACF,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC;IACzC,IAAI,mBAAmB,GAAG,OAAO;QAAE,OAAO,KAAK,CAAC,cAAc,CAAC;IAC/D,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,CAAC,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC7C,IAAI,EAAE,IAAI,mBAAmB,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,CAAC;YACT,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,cAAc,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAChD,MAAyB,EACzB,uBAA+B;IAE/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,cAAc,IAAI,uBAAuB;YAAE,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/blocks.d.ts
CHANGED
|
@@ -39,6 +39,24 @@ export type CreatedBlock = {
|
|
|
39
39
|
* carries it in the commentary file. Pure: no I/O, deterministic when a
|
|
40
40
|
* fixed `rng` and `id` are supplied.
|
|
41
41
|
*/
|
|
42
|
+
export type WrapSourceLineRangeWithCommentrayMarkersInput = {
|
|
43
|
+
sourceText: string;
|
|
44
|
+
range: BlockRange;
|
|
45
|
+
languageId: string;
|
|
46
|
+
/** Must equal the block id used in `marker:<id>` anchors and companion markers. */
|
|
47
|
+
markerId: string;
|
|
48
|
+
};
|
|
49
|
+
export type WrapSourceLineRangeWithCommentrayMarkersResult = {
|
|
50
|
+
sourceText: string;
|
|
51
|
+
/** 1-based inclusive lines inside the delimiter pair (content only, not marker lines). */
|
|
52
|
+
innerRange: BlockRange;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Wraps an inclusive 1-based line range with language-appropriate Commentray
|
|
56
|
+
* start/end delimiters (e.g. `<!-- #region commentray:… -->` in Markdown,
|
|
57
|
+
* `# commentray:start id=…` in TOML/YAML). Does not write files.
|
|
58
|
+
*/
|
|
59
|
+
export declare function wrapSourceLineRangeWithCommentrayMarkers(input: WrapSourceLineRangeWithCommentrayMarkersInput): WrapSourceLineRangeWithCommentrayMarkersResult;
|
|
42
60
|
export declare function createBlockForRange(input: CreateBlockForRangeInput): CreatedBlock;
|
|
43
61
|
/**
|
|
44
62
|
* Append `blockMarkdown` to existing commentary content, guaranteeing a
|
package/dist/blocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAwB,MAAM,YAAY,CAAC;AAEzF,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,EAAE,UAAU,CAAC;IAClB,2DAA2D;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAMF;;;;GAIG;AACH,MAAM,MAAM,6CAA6C,GAAG;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,8CAA8C,GAAG;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,6CAA6C,GACnD,8CAA8C,CAmBhD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CASjF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKvF;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,eAAe,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,oBAAoB,GAC1B,eAAe,CAuBjB;AAKD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,MAAoB,GAAG,MAAM,CAMvE"}
|
package/dist/blocks.js
CHANGED
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
import { buildCommentraySnippetV1 } from "./block-snippet.js";
|
|
2
2
|
import { formatMarkerAnchor } from "./anchors.js";
|
|
3
3
|
import { assertValidMarkerId } from "./marker-ids.js";
|
|
4
|
+
import { leadingIndentOfLine } from "./region-marker-convert.js";
|
|
5
|
+
import { commentrayRegionInsertions } from "./source-markers.js";
|
|
4
6
|
const BLOCK_MARKER_PREFIX = "<!-- commentray:block id=";
|
|
5
7
|
const BLOCK_MARKER_SUFFIX = " -->";
|
|
6
8
|
const CARET_PLACEHOLDER = "_(write commentary here)_";
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* Wraps an inclusive 1-based line range with language-appropriate Commentray
|
|
11
|
+
* start/end delimiters (e.g. `<!-- #region commentray:… -->` in Markdown,
|
|
12
|
+
* `# commentray:start id=…` in TOML/YAML). Does not write files.
|
|
11
13
|
*/
|
|
14
|
+
export function wrapSourceLineRangeWithCommentrayMarkers(input) {
|
|
15
|
+
const id = assertValidMarkerId(input.markerId);
|
|
16
|
+
const rawLines = input.sourceText.replaceAll("\r\n", "\n").split("\n");
|
|
17
|
+
const r = clampRange(input.range, input.sourceText);
|
|
18
|
+
const start0 = r.startLine - 1;
|
|
19
|
+
const end0 = r.endLine - 1;
|
|
20
|
+
const firstLine = rawLines[start0] ?? "";
|
|
21
|
+
const indent = leadingIndentOfLine(firstLine);
|
|
22
|
+
const { start, end } = commentrayRegionInsertions(input.languageId, id, indent);
|
|
23
|
+
const innerLines = rawLines.slice(start0, end0 + 1);
|
|
24
|
+
const innerPart = innerLines.join("\n");
|
|
25
|
+
const combined = innerLines.length > 0 ? `${start}${innerPart}${end}` : `${start.replace(/\n$/, "")}${end}`;
|
|
26
|
+
const wrappedLines = combined.split("\n");
|
|
27
|
+
const newLines = [...rawLines.slice(0, start0), ...wrappedLines, ...rawLines.slice(end0 + 1)];
|
|
28
|
+
return {
|
|
29
|
+
sourceText: newLines.join("\n"),
|
|
30
|
+
innerRange: { startLine: start0 + 2, endLine: end0 + 2 },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
12
33
|
export function createBlockForRange(input) {
|
|
13
34
|
const range = clampRange(input.range, input.sourceText);
|
|
14
35
|
const id = input.id !== undefined ? assertValidMarkerId(input.id) : generateBlockId(input.rng);
|
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;
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ export type CommentrayToml = {
|
|
|
40
40
|
/** Markdown shown above the optional commentray file and GitHub link. */
|
|
41
41
|
intro?: string;
|
|
42
42
|
github_url?: string;
|
|
43
|
+
/** Optional prefix used for source links when static hosting does not serve repo files. */
|
|
44
|
+
source_link_prefix?: string;
|
|
43
45
|
/** Repo-relative path to the source file shown in the code pane (default README.md). */
|
|
44
46
|
default_source_file?: string;
|
|
45
47
|
/** Repo-relative path to the source file shown in the code pane (default README.md). */
|
|
@@ -74,6 +76,8 @@ export type ResolvedStaticSite = {
|
|
|
74
76
|
title: string;
|
|
75
77
|
introMarkdown: string;
|
|
76
78
|
githubUrl: string | null;
|
|
79
|
+
/** Optional source link prefix for published pages (e.g. GitHub blob base or `/src`). */
|
|
80
|
+
sourceLinkPrefix: string | null;
|
|
77
81
|
/** Branch used when building `relatedGithubNav` blob URLs. */
|
|
78
82
|
githubBlobBranch: string;
|
|
79
83
|
sourceFile: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;;WAIG;QACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACtC,CAAC;IACF,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzC;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,uIAAuI;QACvI,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,yFAAyF;QACzF,WAAW,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAChD,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,yEAAyE;QACzE,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wFAAwF;QACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,wFAAwF;QACxF,oDAAoD;QACpD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,uEAAuE;QACvE,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,oDAAoD;QACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,4FAA4F;QAC5F,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B;;;WAGG;QACH,oBAAoB,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC3D,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG;IAC3B,wFAAwF;IACxF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,uBAAuB,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;IACnB,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,uBAAuB,EAAE,OAAO,CAAA;KAAE,CAAC;IACpF,OAAO,EAAE;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACvC,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;CAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;;WAIG;QACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACtC,CAAC;IACF,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzC;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,uIAAuI;QACvI,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,yFAAyF;QACzF,WAAW,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAChD,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,yEAAyE;QACzE,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,2FAA2F;QAC3F,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,wFAAwF;QACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,wFAAwF;QACxF,oDAAoD;QACpD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,uEAAuE;QACvE,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,oDAAoD;QACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,4FAA4F;QAC5F,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B;;;WAGG;QACH,oBAAoB,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC3D,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG;IAC3B,wFAAwF;IACxF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,uBAAuB,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;IACnB,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,uBAAuB,EAAE,OAAO,CAAA;KAAE,CAAC;IACpF,OAAO,EAAE;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACvC,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAwNF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,wBAAwB,CAuB7F;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAY9F"}
|
package/dist/config.js
CHANGED
|
@@ -8,6 +8,7 @@ const defaultStaticSite = {
|
|
|
8
8
|
title: "Commentray",
|
|
9
9
|
introMarkdown: "",
|
|
10
10
|
githubUrl: null,
|
|
11
|
+
sourceLinkPrefix: null,
|
|
11
12
|
githubBlobBranch: "main",
|
|
12
13
|
sourceFile: "README.md",
|
|
13
14
|
defaultAngleId: null,
|
|
@@ -135,6 +136,7 @@ function resolveStaticSite(parsed, storageDir) {
|
|
|
135
136
|
title: nonEmptyTrimmed(ss?.title) ?? defaultStaticSite.title,
|
|
136
137
|
introMarkdown: ss?.intro ?? defaultStaticSite.introMarkdown,
|
|
137
138
|
githubUrl,
|
|
139
|
+
sourceLinkPrefix: nonEmptyTrimmed(ss?.source_link_prefix),
|
|
138
140
|
githubBlobBranch,
|
|
139
141
|
sourceFile,
|
|
140
142
|
defaultAngleId,
|
|
@@ -142,6 +144,24 @@ function resolveStaticSite(parsed, storageDir) {
|
|
|
142
144
|
relatedGithubNav: mergeRelatedGithubNav(githubUrl, githubBlobBranch, ss?.related_github_files),
|
|
143
145
|
};
|
|
144
146
|
}
|
|
147
|
+
function assertValidSourceLinkPrefix(value) {
|
|
148
|
+
if (!value?.trim())
|
|
149
|
+
return;
|
|
150
|
+
const t = value.trim();
|
|
151
|
+
if (t.startsWith("/"))
|
|
152
|
+
return;
|
|
153
|
+
let u;
|
|
154
|
+
try {
|
|
155
|
+
u = new URL(t);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
throw new Error(`.commentray.toml static_site.source_link_prefix must be an absolute path prefix or http(s) URL (got: ${value})`);
|
|
159
|
+
}
|
|
160
|
+
const proto = u.protocol.toLowerCase();
|
|
161
|
+
if (proto !== "http:" && proto !== "https:") {
|
|
162
|
+
throw new Error(`.commentray.toml static_site.source_link_prefix must be an absolute path prefix or http(s) URL (got: ${value})`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
145
165
|
function assertSafeConfigPaths(parsed) {
|
|
146
166
|
assertSafeRepoRelativePath("storage.dir", parsed.storage?.dir);
|
|
147
167
|
assertStorageDirNotInsideGit(parsed.storage?.dir);
|
|
@@ -150,6 +170,7 @@ function assertSafeConfigPaths(parsed) {
|
|
|
150
170
|
assertSafeRepoRelativePath("static_site.source_file", ss?.source_file);
|
|
151
171
|
assertSafeRepoRelativePath("static_site.commentray_markdown", ss?.commentray_markdown);
|
|
152
172
|
assertSafeRepoRelativePath("static_site.commentary_markdown", ss?.commentary_markdown);
|
|
173
|
+
assertValidSourceLinkPrefix(ss?.source_link_prefix);
|
|
153
174
|
for (let i = 0; i < (ss?.related_github_files?.length ?? 0); i++) {
|
|
154
175
|
assertSafeRepoRelativePath(`static_site.related_github_files[${i}].path`, ss?.related_github_files?.[i]?.path);
|
|
155
176
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type { CommentrayBlock, CommentrayIndex, SourceFileIndexEntry } from "./model.js";
|
|
2
2
|
export { coerceIndexSchemaVersion, CURRENT_SCHEMA_VERSION } from "./model.js";
|
|
3
|
-
export type { AddBlockToIndexInput, BlockRange, CreateBlockForRangeInput, CreatedBlock, } from "./blocks.js";
|
|
4
|
-
export { addBlockToIndex, appendBlockToCommentray, createBlockForRange, generateBlockId, } from "./blocks.js";
|
|
3
|
+
export type { AddBlockToIndexInput, BlockRange, CreateBlockForRangeInput, CreatedBlock, WrapSourceLineRangeWithCommentrayMarkersInput, WrapSourceLineRangeWithCommentrayMarkersResult, } from "./blocks.js";
|
|
4
|
+
export { addBlockToIndex, appendBlockToCommentray, createBlockForRange, generateBlockId, wrapSourceLineRangeWithCommentrayMarkers, } from "./blocks.js";
|
|
5
5
|
export { assertValidAngleId } from "./angles.js";
|
|
6
6
|
export { applyAnglesFlatMigrationToCommentrayToml, ensureAnglesSentinelFile, upsertAngleDefinitionInCommentrayToml, } from "./angles-toml.js";
|
|
7
7
|
export type { ApplyAnglesFlatMigrationTomlInput, UpsertAngleDefinitionInput, } from "./angles-toml.js";
|
|
@@ -36,7 +36,9 @@ export type { RelocationHintsInput } from "./relocation-hints.js";
|
|
|
36
36
|
export { runCommanderMain } from "./cli-bootstrap.js";
|
|
37
37
|
export type { BlockScrollLink } from "./scroll-sync.js";
|
|
38
38
|
export { buildBlockScrollLinks, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "./scroll-sync.js";
|
|
39
|
-
export { commentrayRegionInsertions, lineCommentLeaderForLanguage, parseCommentrayRegionBoundary, sourceLineRangeForMarkerId, } from "./source-markers.js";
|
|
39
|
+
export { commentrayRegionInsertions, lineCommentLeaderForLanguage, markerViewportHalfOpen1Based, parseCommentrayRegionBoundary, sourceLineRangeForMarkerId, } from "./source-markers.js";
|
|
40
|
+
export type { RegionMarkerNamingHintStrategy, RegionMarkerNamingInput, RegionMarkerNamingRange, RegionMarkerNamingStrategy, } from "./region-marker-naming.js";
|
|
41
|
+
export { CallbackRegionMarkerNamingStrategy, CodeStructureHintStrategy, CompositeRegionMarkerNamingStrategy, defaultRegionMarkerNamingStrategy, EnclosingSymbolHintStrategy, MarkdownHeadingHintStrategy, TomlTableHeaderHintStrategy, tryCodeStructureNameHint, tryMarkdownHeadingTitleAbove, tryNormaliseContextLabelToMarkerId, tryTomlTablePathAboveSelection, } from "./region-marker-naming.js";
|
|
40
42
|
export type { CommentrayMarkerPair } from "./region-marker-convert.js";
|
|
41
43
|
export { convertCommentraySourceMarkersToLanguage, findCommentrayMarkerPairs, leadingIndentOfLine, } from "./region-marker-convert.js";
|
|
42
44
|
export { MARKER_ID_BODY, assertValidMarkerId, normaliseMarkerSlugOrThrow } from "./marker-ids.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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { coerceIndexSchemaVersion, CURRENT_SCHEMA_VERSION } from "./model.js";
|
|
2
|
-
export { addBlockToIndex, appendBlockToCommentray, createBlockForRange, generateBlockId, } from "./blocks.js";
|
|
2
|
+
export { addBlockToIndex, appendBlockToCommentray, createBlockForRange, generateBlockId, wrapSourceLineRangeWithCommentrayMarkers, } from "./blocks.js";
|
|
3
3
|
export { assertValidAngleId } from "./angles.js";
|
|
4
4
|
export { applyAnglesFlatMigrationToCommentrayToml, ensureAnglesSentinelFile, upsertAngleDefinitionInCommentrayToml, } from "./angles-toml.js";
|
|
5
5
|
export { defaultAngleIdForOpen, FALLBACK_DEFAULT_ANGLE_ID, resolveCommentrayMarkdownPath, } from "./commentray-path-resolution.js";
|
|
@@ -21,7 +21,8 @@ export { plannedSymbolResolutionStrategy } from "./language-intelligence.js";
|
|
|
21
21
|
export { relocationHintMessages } from "./relocation-hints.js";
|
|
22
22
|
export { runCommanderMain } from "./cli-bootstrap.js";
|
|
23
23
|
export { buildBlockScrollLinks, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "./scroll-sync.js";
|
|
24
|
-
export { commentrayRegionInsertions, lineCommentLeaderForLanguage, parseCommentrayRegionBoundary, sourceLineRangeForMarkerId, } from "./source-markers.js";
|
|
24
|
+
export { commentrayRegionInsertions, lineCommentLeaderForLanguage, markerViewportHalfOpen1Based, parseCommentrayRegionBoundary, sourceLineRangeForMarkerId, } from "./source-markers.js";
|
|
25
|
+
export { CallbackRegionMarkerNamingStrategy, CodeStructureHintStrategy, CompositeRegionMarkerNamingStrategy, defaultRegionMarkerNamingStrategy, EnclosingSymbolHintStrategy, MarkdownHeadingHintStrategy, TomlTableHeaderHintStrategy, tryCodeStructureNameHint, tryMarkdownHeadingTitleAbove, tryNormaliseContextLabelToMarkerId, tryTomlTablePathAboveSelection, } from "./region-marker-naming.js";
|
|
25
26
|
export { convertCommentraySourceMarkersToLanguage, findCommentrayMarkerPairs, leadingIndentOfLine, } from "./region-marker-convert.js";
|
|
26
27
|
export { MARKER_ID_BODY, assertValidMarkerId, normaliseMarkerSlugOrThrow } from "./marker-ids.js";
|
|
27
28
|
export { validateIndexMarkerSemantics, validateMarkerBoundariesInSource, validateMarkerRegionsAgainstIndexedSources, } from "./marker-validation.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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAS9E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,wCAAwC,GACzC,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,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACvF,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;AAM/C,OAAO,EACL,SAAS,EACT,4BAA4B,EAC5B,eAAe,EACf,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAE7E,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,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,kCAAkC,EAClC,yBAAyB,EACzB,mCAAmC,EACnC,iCAAiC,EACjC,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,kCAAkC,EAClC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAEnC,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,EAChC,0CAA0C,GAC3C,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** Inclusive 1-based source line range (same convention as block ranges). */
|
|
2
|
+
export type RegionMarkerNamingRange = {
|
|
3
|
+
startLine: number;
|
|
4
|
+
endLine: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Everything needed to suggest a marker id without touching the filesystem.
|
|
8
|
+
* Hosts (editors, CLI) may supply {@link RegionMarkerNamingInput.enclosingSymbolName}
|
|
9
|
+
* from LSP or heuristics; when absent, language-aware fallbacks run in order.
|
|
10
|
+
*/
|
|
11
|
+
export type RegionMarkerNamingInput = {
|
|
12
|
+
languageId: string;
|
|
13
|
+
sourceText: string;
|
|
14
|
+
range: RegionMarkerNamingRange;
|
|
15
|
+
/** When set (e.g. enclosing class or method from document symbols), wins over text heuristics. */
|
|
16
|
+
enclosingSymbolName?: string;
|
|
17
|
+
/** Injected for deterministic tests; defaults to `Math.random` in the composite fallback. */
|
|
18
|
+
rng?: () => number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Swappable policy for choosing `marker:<id>` / `commentray:<id>` ids when wrapping a selection.
|
|
22
|
+
* Implementations should be pure (no I/O, no globals except injected `rng`).
|
|
23
|
+
*/
|
|
24
|
+
export interface RegionMarkerNamingStrategy {
|
|
25
|
+
suggestMarkerId(input: RegionMarkerNamingInput): string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One step in a pipeline: return a **valid** marker id, or `null` to let the next step run.
|
|
29
|
+
*/
|
|
30
|
+
export interface RegionMarkerNamingHintStrategy {
|
|
31
|
+
trySuggestMarkerId(input: RegionMarkerNamingInput): string | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Runs hint strategies in order, then {@link generateBlockId} when every hint declines.
|
|
35
|
+
*/
|
|
36
|
+
export declare class CompositeRegionMarkerNamingStrategy implements RegionMarkerNamingStrategy {
|
|
37
|
+
private readonly hints;
|
|
38
|
+
private readonly fallbackRng;
|
|
39
|
+
constructor(hints: readonly RegionMarkerNamingHintStrategy[], fallbackRng?: () => number);
|
|
40
|
+
suggestMarkerId(input: RegionMarkerNamingInput): string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Escape hatch for hosts that already computed an id (e.g. custom rules, telemetry-driven names).
|
|
44
|
+
*/
|
|
45
|
+
export declare class CallbackRegionMarkerNamingStrategy implements RegionMarkerNamingStrategy {
|
|
46
|
+
private readonly suggest;
|
|
47
|
+
constructor(suggest: (input: RegionMarkerNamingInput) => string);
|
|
48
|
+
suggestMarkerId(input: RegionMarkerNamingInput): string;
|
|
49
|
+
}
|
|
50
|
+
export declare class EnclosingSymbolHintStrategy implements RegionMarkerNamingHintStrategy {
|
|
51
|
+
trySuggestMarkerId(input: RegionMarkerNamingInput): string | null;
|
|
52
|
+
}
|
|
53
|
+
export declare class TomlTableHeaderHintStrategy implements RegionMarkerNamingHintStrategy {
|
|
54
|
+
trySuggestMarkerId(input: RegionMarkerNamingInput): string | null;
|
|
55
|
+
}
|
|
56
|
+
export declare class MarkdownHeadingHintStrategy implements RegionMarkerNamingHintStrategy {
|
|
57
|
+
trySuggestMarkerId(input: RegionMarkerNamingInput): string | null;
|
|
58
|
+
}
|
|
59
|
+
export declare class CodeStructureHintStrategy implements RegionMarkerNamingHintStrategy {
|
|
60
|
+
trySuggestMarkerId(input: RegionMarkerNamingInput): string | null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Walks upward from `startLine1` and returns the innermost TOML table path
|
|
64
|
+
* (`anchors`, `angles.definitions`, …) declared on a `[header]` / `[[array]]` line.
|
|
65
|
+
*/
|
|
66
|
+
export declare function tryTomlTablePathAboveSelection(sourceText: string, startLine1: number): string | null;
|
|
67
|
+
/**
|
|
68
|
+
* Nearest Markdown heading text at or above `startLine1` (ATX headings only).
|
|
69
|
+
*/
|
|
70
|
+
export declare function tryMarkdownHeadingTitleAbove(sourceText: string, startLine1: number): string | null;
|
|
71
|
+
export declare function tryCodeStructureNameHint(languageId: string, sourceText: string, range: RegionMarkerNamingRange): string | null;
|
|
72
|
+
export declare function tryNormaliseContextLabelToMarkerId(raw: string): string | null;
|
|
73
|
+
/** Fixed pipeline: enclosing symbol → TOML table → Markdown heading → code shape → random. */
|
|
74
|
+
export declare const defaultRegionMarkerNamingStrategy: RegionMarkerNamingStrategy;
|
|
75
|
+
//# sourceMappingURL=region-marker-naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region-marker-naming.d.ts","sourceRoot":"","sources":["../src/region-marker-naming.ts"],"names":[],"mappings":"AAGA,6EAA6E;AAC7E,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,GAAG,IAAI,CAAC;CACnE;AAED;;GAEG;AACH,qBAAa,mCAAoC,YAAW,0BAA0B;IAElF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,KAAK,EAAE,SAAS,8BAA8B,EAAE,EAChD,WAAW,GAAE,MAAM,MAAoB;IAG1D,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM;CAcxD;AAED;;GAEG;AACH,qBAAa,kCAAmC,YAAW,0BAA0B;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,MAAM;IAEhF,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM;CAGxD;AAID,qBAAa,2BAA4B,YAAW,8BAA8B;IAChF,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,GAAG,IAAI;CAKlE;AAED,qBAAa,2BAA4B,YAAW,8BAA8B;IAChF,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,GAAG,IAAI;CAOlE;AAED,qBAAa,2BAA4B,YAAW,8BAA8B;IAChF,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,GAAG,IAAI;CAMlE;AAED,qBAAa,yBAA0B,YAAW,8BAA8B;IAC9E,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,GAAG,IAAI;CAMlE;AAOD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAaf;AAID;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAQf;AA8HD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,uBAAuB,GAC7B,MAAM,GAAG,IAAI,CAoCf;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY7E;AAkCD,8FAA8F;AAC9F,eAAO,MAAM,iCAAiC,EAAE,0BAM5C,CAAC"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { generateBlockId } from "./blocks.js";
|
|
2
|
+
import { assertValidMarkerId, normaliseMarkerSlugOrThrow } from "./marker-ids.js";
|
|
3
|
+
/**
|
|
4
|
+
* Runs hint strategies in order, then {@link generateBlockId} when every hint declines.
|
|
5
|
+
*/
|
|
6
|
+
export class CompositeRegionMarkerNamingStrategy {
|
|
7
|
+
hints;
|
|
8
|
+
fallbackRng;
|
|
9
|
+
constructor(hints, fallbackRng = Math.random) {
|
|
10
|
+
this.hints = hints;
|
|
11
|
+
this.fallbackRng = fallbackRng;
|
|
12
|
+
}
|
|
13
|
+
suggestMarkerId(input) {
|
|
14
|
+
const rng = input.rng ?? this.fallbackRng;
|
|
15
|
+
const merged = { ...input, rng };
|
|
16
|
+
for (const hint of this.hints) {
|
|
17
|
+
const candidate = hint.trySuggestMarkerId(merged);
|
|
18
|
+
if (candidate === null)
|
|
19
|
+
continue;
|
|
20
|
+
try {
|
|
21
|
+
return assertValidMarkerId(candidate);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return generateBlockId(rng);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Escape hatch for hosts that already computed an id (e.g. custom rules, telemetry-driven names).
|
|
32
|
+
*/
|
|
33
|
+
export class CallbackRegionMarkerNamingStrategy {
|
|
34
|
+
suggest;
|
|
35
|
+
constructor(suggest) {
|
|
36
|
+
this.suggest = suggest;
|
|
37
|
+
}
|
|
38
|
+
suggestMarkerId(input) {
|
|
39
|
+
return assertValidMarkerId(this.suggest(input));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// --- Hint strategy implementations ---
|
|
43
|
+
export class EnclosingSymbolHintStrategy {
|
|
44
|
+
trySuggestMarkerId(input) {
|
|
45
|
+
const raw = input.enclosingSymbolName?.trim();
|
|
46
|
+
if (!raw)
|
|
47
|
+
return null;
|
|
48
|
+
return tryNormaliseContextLabelToMarkerId(raw);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export class TomlTableHeaderHintStrategy {
|
|
52
|
+
trySuggestMarkerId(input) {
|
|
53
|
+
if (!isTomlLanguage(input.languageId))
|
|
54
|
+
return null;
|
|
55
|
+
const path = tryTomlTablePathAboveSelection(input.sourceText, input.range.startLine);
|
|
56
|
+
if (path === null)
|
|
57
|
+
return null;
|
|
58
|
+
const dotted = tomlTablePathToSlugCandidate(path);
|
|
59
|
+
return tryNormaliseContextLabelToMarkerId(dotted);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class MarkdownHeadingHintStrategy {
|
|
63
|
+
trySuggestMarkerId(input) {
|
|
64
|
+
if (!isMarkdownLanguage(input.languageId))
|
|
65
|
+
return null;
|
|
66
|
+
const title = tryMarkdownHeadingTitleAbove(input.sourceText, input.range.startLine);
|
|
67
|
+
if (title === null)
|
|
68
|
+
return null;
|
|
69
|
+
return tryNormaliseContextLabelToMarkerId(title);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export class CodeStructureHintStrategy {
|
|
73
|
+
trySuggestMarkerId(input) {
|
|
74
|
+
if (!isCodeStructureLanguage(input.languageId))
|
|
75
|
+
return null;
|
|
76
|
+
const hint = tryCodeStructureNameHint(input.languageId, input.sourceText, input.range);
|
|
77
|
+
if (hint === null)
|
|
78
|
+
return null;
|
|
79
|
+
return tryNormaliseContextLabelToMarkerId(hint);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// --- Pure extractors (tested directly; safe to reuse from custom strategies) ---
|
|
83
|
+
const TOML_LINE_ARRAY_TABLE = /^\s*\[\[([^\]]+)\]\]\s*(?:#.*)?$/;
|
|
84
|
+
const TOML_LINE_TABLE = /^\s*\[([^\]]+)\]\s*(?:#.*)?$/;
|
|
85
|
+
/**
|
|
86
|
+
* Walks upward from `startLine1` and returns the innermost TOML table path
|
|
87
|
+
* (`anchors`, `angles.definitions`, …) declared on a `[header]` / `[[array]]` line.
|
|
88
|
+
*/
|
|
89
|
+
export function tryTomlTablePathAboveSelection(sourceText, startLine1) {
|
|
90
|
+
const lines = sourceText.replaceAll("\r\n", "\n").split("\n");
|
|
91
|
+
const start0 = Math.max(0, Math.floor(startLine1) - 1);
|
|
92
|
+
for (let i = start0; i >= 0; i--) {
|
|
93
|
+
const line = lines[i] ?? "";
|
|
94
|
+
const arrayM = TOML_LINE_ARRAY_TABLE.exec(line);
|
|
95
|
+
const arrayPath = arrayM?.[1];
|
|
96
|
+
if (arrayPath)
|
|
97
|
+
return arrayPath.trim();
|
|
98
|
+
const tableM = TOML_LINE_TABLE.exec(line);
|
|
99
|
+
const tablePath = tableM?.[1];
|
|
100
|
+
if (tablePath && !line.trimStart().startsWith("[["))
|
|
101
|
+
return tablePath.trim();
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const MD_HEADING = /^\s{0,3}(#{1,6})\s+(.+?)\s*$/;
|
|
106
|
+
/**
|
|
107
|
+
* Nearest Markdown heading text at or above `startLine1` (ATX headings only).
|
|
108
|
+
*/
|
|
109
|
+
export function tryMarkdownHeadingTitleAbove(sourceText, startLine1) {
|
|
110
|
+
const lines = sourceText.replaceAll("\r\n", "\n").split("\n");
|
|
111
|
+
const start0 = Math.max(0, Math.floor(startLine1) - 1);
|
|
112
|
+
for (let i = start0; i >= 0; i--) {
|
|
113
|
+
const m = MD_HEADING.exec(lines[i] ?? "");
|
|
114
|
+
if (m?.[2])
|
|
115
|
+
return stripMarkdownInlineNoise(m[2]);
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const TS_JS_LIKE = new Set([
|
|
120
|
+
"javascript",
|
|
121
|
+
"javascriptreact",
|
|
122
|
+
"typescript",
|
|
123
|
+
"typescriptreact",
|
|
124
|
+
"js",
|
|
125
|
+
"jsx",
|
|
126
|
+
"tsx",
|
|
127
|
+
"mjs",
|
|
128
|
+
"cjs",
|
|
129
|
+
"vue",
|
|
130
|
+
"svelte",
|
|
131
|
+
"astro",
|
|
132
|
+
]);
|
|
133
|
+
const PYTHON_LIKE = new Set(["python", "jupyter"]);
|
|
134
|
+
const RUST_LIKE = new Set(["rust"]);
|
|
135
|
+
const GO_LIKE = new Set(["go"]);
|
|
136
|
+
const RUBY_LIKE = new Set(["ruby"]);
|
|
137
|
+
const CSHARP_LIKE = new Set(["csharp"]);
|
|
138
|
+
const JAVA_KOTLIN_LIKE = new Set(["java", "kotlin"]);
|
|
139
|
+
const PHP_LIKE = new Set(["php"]);
|
|
140
|
+
const CPP_LIKE = new Set(["cpp", "cuda-cpp", "objective-cpp", "objective-c", "c"]);
|
|
141
|
+
const SWIFT_LIKE = new Set(["swift"]);
|
|
142
|
+
const TS_JS_PATTERNS = [
|
|
143
|
+
{ re: /^\s*(?:export\s+)?(?:abstract\s+)?class\s+(\w+)/, nameGroup: 1 },
|
|
144
|
+
{ re: /^\s*(?:export\s+)?interface\s+(\w+)/, nameGroup: 1 },
|
|
145
|
+
{ re: /^\s*(?:export\s+)?enum\s+(\w+)/, nameGroup: 1 },
|
|
146
|
+
{ re: /^\s*(?:export\s+)?type\s+(\w+)\s*=/, nameGroup: 1 },
|
|
147
|
+
{ re: /^\s*(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(/, nameGroup: 1 },
|
|
148
|
+
{ re: /^\s*(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s*)?\(/, nameGroup: 1 },
|
|
149
|
+
{ re: /^\s*(?:export\s+)?(?:async\s+)?(\w+)\s*=\s*(?:async\s*)?\(/, nameGroup: 1 },
|
|
150
|
+
];
|
|
151
|
+
const PYTHON_PATTERNS = [
|
|
152
|
+
{ re: /^\s*class\s+(\w+)/, nameGroup: 1 },
|
|
153
|
+
{ re: /^\s*(?:async\s+)?def\s+(\w+)\s*\(/, nameGroup: 1 },
|
|
154
|
+
];
|
|
155
|
+
const RUST_PATTERNS = [
|
|
156
|
+
{ re: /^\s*(?:pub(?:\([^)]*\))?\s+)?struct\s+(\w+)/, nameGroup: 1 },
|
|
157
|
+
{ re: /^\s*(?:pub(?:\([^)]*\))?\s+)?enum\s+(\w+)/, nameGroup: 1 },
|
|
158
|
+
{ re: /^\s*(?:pub(?:\([^)]*\))?\s+)?trait\s+(\w+)/, nameGroup: 1 },
|
|
159
|
+
{ re: /^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?fn\s+(\w+)\s*\(/, nameGroup: 1 },
|
|
160
|
+
{ re: /^\s*(?:pub(?:\([^)]*\))?\s+)?impl\s+(?:<[^>]+>\s+)?(?:\w+\s+for\s+)?(\w+)/, nameGroup: 1 },
|
|
161
|
+
];
|
|
162
|
+
const GO_PATTERNS = [
|
|
163
|
+
{ re: /^\s*func\s+(?:\([^)]*\)\s*)?(\w+)\s*\(/, nameGroup: 1 },
|
|
164
|
+
{ re: /^\s*type\s+(\w+)\s+(?:struct|interface)\b/, nameGroup: 1 },
|
|
165
|
+
];
|
|
166
|
+
const RUBY_PATTERNS = [
|
|
167
|
+
{ re: /^\s*class\s+(\w+)/, nameGroup: 1 },
|
|
168
|
+
{ re: /^\s*module\s+(\w+)/, nameGroup: 1 },
|
|
169
|
+
{ re: /^\s*def\s+(\w+)/, nameGroup: 1 },
|
|
170
|
+
];
|
|
171
|
+
const CSHARP_PATTERNS = [
|
|
172
|
+
{
|
|
173
|
+
re: /^\s*(?:public|private|protected|internal|file)\s+(?:(?:static|async|abstract|sealed|partial)\s+)*class\s+(\w+)/,
|
|
174
|
+
nameGroup: 1,
|
|
175
|
+
},
|
|
176
|
+
{ re: /^\s*namespace\s+([\w.]+)/, nameGroup: 1 },
|
|
177
|
+
];
|
|
178
|
+
const JAVA_PATTERNS = [
|
|
179
|
+
{
|
|
180
|
+
re: /^\s*(?:public|private|protected)?\s*(?:abstract\s+)?(?:static\s+)?class\s+(\w+)/,
|
|
181
|
+
nameGroup: 1,
|
|
182
|
+
},
|
|
183
|
+
{ re: /^\s*(?:public|private|protected)?\s*(?:abstract\s+)?interface\s+(\w+)/, nameGroup: 1 },
|
|
184
|
+
{ re: /^\s*(?:public|private|protected)?\s*(?:abstract\s+)?object\s+(\w+)/, nameGroup: 1 },
|
|
185
|
+
{ re: /^\s*(?:public|private|protected)?\s*fun\s+(\w+)\s*\(/, nameGroup: 1 },
|
|
186
|
+
];
|
|
187
|
+
const PHP_PATTERNS = [
|
|
188
|
+
{ re: /^\s*(?:abstract\s+)?class\s+(\w+)/, nameGroup: 1 },
|
|
189
|
+
{ re: /^\s*function\s+(\w+)\s*\(/, nameGroup: 1 },
|
|
190
|
+
];
|
|
191
|
+
const CPP_PATTERNS = [{ re: /^\s*(?:class|struct)\s+(\w+)/, nameGroup: 1 }];
|
|
192
|
+
const SWIFT_PATTERNS = [
|
|
193
|
+
{ re: /^\s*(?:public|private|internal|fileprivate|open)?\s*class\s+(\w+)/, nameGroup: 1 },
|
|
194
|
+
{ re: /^\s*(?:public|private|internal|fileprivate|open)?\s*func\s+(\w+)\s*\(/, nameGroup: 1 },
|
|
195
|
+
{ re: /^\s*(?:public|private|internal|fileprivate|open)?\s*struct\s+(\w+)/, nameGroup: 1 },
|
|
196
|
+
{ re: /^\s*(?:public|private|internal|fileprivate|open)?\s*enum\s+(\w+)/, nameGroup: 1 },
|
|
197
|
+
];
|
|
198
|
+
const LOOKBACK_LINES = 80;
|
|
199
|
+
function patternsForLanguage(languageId) {
|
|
200
|
+
const id = languageId.toLowerCase();
|
|
201
|
+
if (TS_JS_LIKE.has(id))
|
|
202
|
+
return TS_JS_PATTERNS;
|
|
203
|
+
if (PYTHON_LIKE.has(id))
|
|
204
|
+
return PYTHON_PATTERNS;
|
|
205
|
+
if (RUST_LIKE.has(id))
|
|
206
|
+
return RUST_PATTERNS;
|
|
207
|
+
if (GO_LIKE.has(id))
|
|
208
|
+
return GO_PATTERNS;
|
|
209
|
+
if (RUBY_LIKE.has(id))
|
|
210
|
+
return RUBY_PATTERNS;
|
|
211
|
+
if (CSHARP_LIKE.has(id))
|
|
212
|
+
return CSHARP_PATTERNS;
|
|
213
|
+
if (JAVA_KOTLIN_LIKE.has(id))
|
|
214
|
+
return JAVA_PATTERNS;
|
|
215
|
+
if (PHP_LIKE.has(id))
|
|
216
|
+
return PHP_PATTERNS;
|
|
217
|
+
if (CPP_LIKE.has(id))
|
|
218
|
+
return CPP_PATTERNS;
|
|
219
|
+
if (SWIFT_LIKE.has(id))
|
|
220
|
+
return SWIFT_PATTERNS;
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Best-effort identifier near the selection: prefers declarations on selected lines,
|
|
225
|
+
* then scans upward within {@link LOOKBACK_LINES} lines.
|
|
226
|
+
*/
|
|
227
|
+
const PYTHON_CLASS_LINE = /^\s*class\s+(\w+)/;
|
|
228
|
+
export function tryCodeStructureNameHint(languageId, sourceText, range) {
|
|
229
|
+
const patterns = patternsForLanguage(languageId);
|
|
230
|
+
if (!patterns)
|
|
231
|
+
return null;
|
|
232
|
+
const lines = sourceText.replaceAll("\r\n", "\n").split("\n");
|
|
233
|
+
const lineCount = lines.length;
|
|
234
|
+
const start0 = clampLine0(range.startLine, lineCount);
|
|
235
|
+
const end0 = clampLine0(range.endLine, lineCount);
|
|
236
|
+
const from = Math.max(0, start0 - LOOKBACK_LINES);
|
|
237
|
+
if (PYTHON_LIKE.has(languageId.toLowerCase())) {
|
|
238
|
+
for (let i = start0 - 1; i >= from; i--) {
|
|
239
|
+
const cm = PYTHON_CLASS_LINE.exec(lines[i] ?? "");
|
|
240
|
+
const pyName = cm?.[1];
|
|
241
|
+
if (pyName)
|
|
242
|
+
return pyName;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const tryLine = (i) => {
|
|
246
|
+
const line = lines[i] ?? "";
|
|
247
|
+
for (const { re, nameGroup } of patterns) {
|
|
248
|
+
const m = re.exec(line);
|
|
249
|
+
const name = m?.[nameGroup];
|
|
250
|
+
if (name)
|
|
251
|
+
return name;
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
};
|
|
255
|
+
for (let i = end0; i >= start0; i--) {
|
|
256
|
+
const hit = tryLine(i);
|
|
257
|
+
if (hit)
|
|
258
|
+
return hit;
|
|
259
|
+
}
|
|
260
|
+
for (let i = start0 - 1; i >= from; i--) {
|
|
261
|
+
const hit = tryLine(i);
|
|
262
|
+
if (hit)
|
|
263
|
+
return hit;
|
|
264
|
+
}
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
export function tryNormaliseContextLabelToMarkerId(raw) {
|
|
268
|
+
const base = raw.trim();
|
|
269
|
+
if (!base)
|
|
270
|
+
return null;
|
|
271
|
+
const maxProbe = Math.min(base.length, 256);
|
|
272
|
+
for (let n = maxProbe; n >= 1; n--) {
|
|
273
|
+
try {
|
|
274
|
+
return normaliseMarkerSlugOrThrow(base.slice(0, n));
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
function stripMarkdownInlineNoise(title) {
|
|
283
|
+
return title
|
|
284
|
+
.replaceAll(/\*\*([^*]+)\*\*/g, "$1")
|
|
285
|
+
.replaceAll(/\*([^*]+)\*/g, "$1")
|
|
286
|
+
.replaceAll(/`([^`]+)`/g, "$1")
|
|
287
|
+
.replaceAll(/\[([^\]]+)]\([^)]+\)/g, "$1")
|
|
288
|
+
.trim();
|
|
289
|
+
}
|
|
290
|
+
function tomlTablePathToSlugCandidate(path) {
|
|
291
|
+
return path.trim().replaceAll(".", "-");
|
|
292
|
+
}
|
|
293
|
+
function clampLine0(oneBasedLine, lineCount) {
|
|
294
|
+
if (lineCount <= 0)
|
|
295
|
+
return 0;
|
|
296
|
+
const x = Math.floor(oneBasedLine) - 1;
|
|
297
|
+
return Math.max(0, Math.min(lineCount - 1, x));
|
|
298
|
+
}
|
|
299
|
+
function isTomlLanguage(languageId) {
|
|
300
|
+
return languageId.trim().toLowerCase() === "toml";
|
|
301
|
+
}
|
|
302
|
+
function isMarkdownLanguage(languageId) {
|
|
303
|
+
const id = languageId.trim().toLowerCase();
|
|
304
|
+
return id === "markdown" || id === "md";
|
|
305
|
+
}
|
|
306
|
+
function isCodeStructureLanguage(languageId) {
|
|
307
|
+
return patternsForLanguage(languageId) !== null;
|
|
308
|
+
}
|
|
309
|
+
/** Fixed pipeline: enclosing symbol → TOML table → Markdown heading → code shape → random. */
|
|
310
|
+
export const defaultRegionMarkerNamingStrategy = new CompositeRegionMarkerNamingStrategy([
|
|
311
|
+
new EnclosingSymbolHintStrategy(),
|
|
312
|
+
new TomlTableHeaderHintStrategy(),
|
|
313
|
+
new MarkdownHeadingHintStrategy(),
|
|
314
|
+
new CodeStructureHintStrategy(),
|
|
315
|
+
]);
|
|
316
|
+
//# sourceMappingURL=region-marker-naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region-marker-naming.js","sourceRoot":"","sources":["../src/region-marker-naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-sync.d.ts","sourceRoot":"","sources":["../src/scroll-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scroll-sync.d.ts","sourceRoot":"","sources":["../src/scroll-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,2BAA2B,CAAC;AAcnC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EACzC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,EAAE,CAwCnB"}
|
package/dist/scroll-sync.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { parseAnchor } from "./anchors.js";
|
|
2
2
|
import { MARKER_ID_BODY } from "./marker-ids.js";
|
|
3
|
-
import {
|
|
3
|
+
import { normalizeRepoRelativePath } from "./paths.js";
|
|
4
|
+
import { markerViewportHalfOpen1Based, sourceLineRangeForMarkerId } from "./source-markers.js";
|
|
4
5
|
export { pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, } from "./block-scroll-pickers.js";
|
|
5
6
|
const BLOCK_MARKER_RE = new RegExp(`<!-- commentray:block id=(${MARKER_ID_BODY}) -->`);
|
|
6
7
|
function markerLineByIdFromMarkdown(markdown) {
|
|
@@ -23,6 +24,10 @@ export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, com
|
|
|
23
24
|
const entry = index?.byCommentrayPath[commentrayPath];
|
|
24
25
|
if (!entry || entry.sourcePath !== sourceRelative || entry.blocks.length === 0)
|
|
25
26
|
return [];
|
|
27
|
+
const entryCrNorm = normalizeRepoRelativePath(entry.commentrayPath.replaceAll("\\", "/"));
|
|
28
|
+
const lookupCrNorm = normalizeRepoRelativePath(commentrayPath.replaceAll("\\", "/"));
|
|
29
|
+
if (entryCrNorm !== lookupCrNorm)
|
|
30
|
+
return [];
|
|
26
31
|
const markerLineById = markerLineByIdFromMarkdown(commentrayMarkdown);
|
|
27
32
|
const links = [];
|
|
28
33
|
for (const block of entry.blocks) {
|
|
@@ -31,11 +36,14 @@ export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, com
|
|
|
31
36
|
if (commentrayLine === undefined)
|
|
32
37
|
continue;
|
|
33
38
|
if (anchor.kind === "lines") {
|
|
39
|
+
const lo = anchor.range.start;
|
|
40
|
+
const hiExclusive = anchor.range.end + 1;
|
|
34
41
|
links.push({
|
|
35
42
|
id: block.id,
|
|
36
43
|
commentrayLine,
|
|
37
44
|
sourceStart: anchor.range.start,
|
|
38
45
|
sourceEnd: anchor.range.end,
|
|
46
|
+
markerViewportHalfOpen1Based: { lo, hiExclusive },
|
|
39
47
|
});
|
|
40
48
|
continue;
|
|
41
49
|
}
|
|
@@ -43,13 +51,15 @@ export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, com
|
|
|
43
51
|
if (sourceText === undefined)
|
|
44
52
|
continue;
|
|
45
53
|
const range = sourceLineRangeForMarkerId(sourceText, anchor.id);
|
|
46
|
-
|
|
54
|
+
const mv = markerViewportHalfOpen1Based(sourceText, anchor.id);
|
|
55
|
+
if (range === null || mv === null)
|
|
47
56
|
continue;
|
|
48
57
|
links.push({
|
|
49
58
|
id: block.id,
|
|
50
59
|
commentrayLine,
|
|
51
60
|
sourceStart: range.start,
|
|
52
61
|
sourceEnd: range.end,
|
|
62
|
+
markerViewportHalfOpen1Based: mv,
|
|
53
63
|
});
|
|
54
64
|
}
|
|
55
65
|
}
|
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;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"scroll-sync.js","sourceRoot":"","sources":["../src/scroll-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/source-markers.d.ts
CHANGED
|
@@ -25,4 +25,14 @@ export declare function sourceLineRangeForMarkerId(sourceText: string, markerId:
|
|
|
25
25
|
start: number;
|
|
26
26
|
end: number;
|
|
27
27
|
} | null;
|
|
28
|
+
/**
|
|
29
|
+
* 1-based half-open `[lo, hiExclusive)` for viewport / scroll sync: includes one physical line
|
|
30
|
+
* above the start delimiter and the delimiter line itself, runs through the last inner line, and
|
|
31
|
+
* **excludes** the end delimiter line. The blank between a block’s end marker and the next block’s
|
|
32
|
+
* start marker therefore belongs to the next block (same as the line above the next start).
|
|
33
|
+
*/
|
|
34
|
+
export declare function markerViewportHalfOpen1Based(sourceText: string, markerId: string): {
|
|
35
|
+
lo: number;
|
|
36
|
+
hiExclusive: number;
|
|
37
|
+
} | null;
|
|
28
38
|
//# sourceMappingURL=source-markers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-markers.d.ts","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-markers.d.ts","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"AA0GA;;;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;AAoBD;;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,CAQP;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU5C"}
|
package/dist/source-markers.js
CHANGED
|
@@ -45,7 +45,8 @@ const HASH_REGION_LANGUAGES = new Set([
|
|
|
45
45
|
const PRAGMA_REGION = new Set(["c", "cpp", "cuda-cpp", "objective-c", "objective-cpp"]);
|
|
46
46
|
const VB_REGION = new Set(["vb"]);
|
|
47
47
|
const LUA_REGION = new Set(["lua"]);
|
|
48
|
-
|
|
48
|
+
/** Includes Markdown so `commentrayRegionInsertions("markdown", …)` matches README `<!-- #region commentray:… -->`. */
|
|
49
|
+
const HTML_FAMILY = new Set(["html", "xml", "handlebars", "vue-html", "markdown", "md"]);
|
|
49
50
|
const PYTHONIC = new Set(["python", "jupyter"]);
|
|
50
51
|
/** `# …` line comments for generic markers (no `#region` folding convention). */
|
|
51
52
|
const GENERIC_HASH_LANGUAGES = new Set([
|
|
@@ -213,10 +214,7 @@ export function parseCommentrayRegionBoundary(line) {
|
|
|
213
214
|
}
|
|
214
215
|
return null;
|
|
215
216
|
}
|
|
216
|
-
|
|
217
|
-
* 1-based inclusive source lines **between** paired region / generic / legacy marker lines.
|
|
218
|
-
*/
|
|
219
|
-
export function sourceLineRangeForMarkerId(sourceText, markerId) {
|
|
217
|
+
function findFirstMarkerPairBoundaryIndices(sourceText, markerId) {
|
|
220
218
|
const id = assertValidMarkerId(markerId);
|
|
221
219
|
const lines = sourceText.split("\n");
|
|
222
220
|
let startIdx = -1;
|
|
@@ -232,10 +230,39 @@ export function sourceLineRangeForMarkerId(sourceText, markerId) {
|
|
|
232
230
|
}
|
|
233
231
|
if (startIdx < 0 || endIdx < 0 || endIdx < startIdx + 2)
|
|
234
232
|
return null;
|
|
233
|
+
return { startIdx, endIdx };
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* 1-based inclusive source lines **between** paired region / generic / legacy marker lines.
|
|
237
|
+
*/
|
|
238
|
+
export function sourceLineRangeForMarkerId(sourceText, markerId) {
|
|
239
|
+
const pair = findFirstMarkerPairBoundaryIndices(sourceText, markerId);
|
|
240
|
+
if (pair === null)
|
|
241
|
+
return null;
|
|
242
|
+
const { startIdx, endIdx } = pair;
|
|
235
243
|
const start = startIdx + 2;
|
|
236
244
|
const end = endIdx;
|
|
237
245
|
if (end < start)
|
|
238
246
|
return null;
|
|
239
247
|
return { start, end };
|
|
240
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* 1-based half-open `[lo, hiExclusive)` for viewport / scroll sync: includes one physical line
|
|
251
|
+
* above the start delimiter and the delimiter line itself, runs through the last inner line, and
|
|
252
|
+
* **excludes** the end delimiter line. The blank between a block’s end marker and the next block’s
|
|
253
|
+
* start marker therefore belongs to the next block (same as the line above the next start).
|
|
254
|
+
*/
|
|
255
|
+
export function markerViewportHalfOpen1Based(sourceText, markerId) {
|
|
256
|
+
const pair = findFirstMarkerPairBoundaryIndices(sourceText, markerId);
|
|
257
|
+
if (pair === null)
|
|
258
|
+
return null;
|
|
259
|
+
const { startIdx, endIdx } = pair;
|
|
260
|
+
const startMarker1Based = startIdx + 1;
|
|
261
|
+
const endMarker1Based = endIdx + 1;
|
|
262
|
+
const lo = Math.max(1, startMarker1Based - 1);
|
|
263
|
+
const hiExclusive = endMarker1Based;
|
|
264
|
+
if (hiExclusive <= lo)
|
|
265
|
+
return null;
|
|
266
|
+
return { lo, hiExclusive };
|
|
267
|
+
}
|
|
241
268
|
//# sourceMappingURL=source-markers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-markers.js","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AAEH,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAE/E,uFAAuF;AACvF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,YAAY;IACZ,iBAAiB;IACjB,YAAY;IACZ,iBAAiB;IACjB,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,MAAM;IACN,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,MAAM;IACN,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;AAExF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAElC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"source-markers.js","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"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"}
|