@commentray/core 0.3.1 → 0.3.3
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 +17 -42
- package/dist/block-scroll-pickers.d.ts.map +1 -1
- package/dist/block-scroll-pickers.js +44 -42
- package/dist/block-scroll-pickers.js.map +1 -1
- package/dist/buffering-flow-synchronizer-approval-printer.d.ts +8 -2
- package/dist/buffering-flow-synchronizer-approval-printer.d.ts.map +1 -1
- package/dist/buffering-flow-synchronizer-approval-printer.js +8 -2
- package/dist/buffering-flow-synchronizer-approval-printer.js.map +1 -1
- package/dist/buffering-flow-synchronizer.d.ts +20 -13
- package/dist/buffering-flow-synchronizer.d.ts.map +1 -1
- package/dist/buffering-flow-synchronizer.js +16 -14
- package/dist/buffering-flow-synchronizer.js.map +1 -1
- package/dist/commentray-active-editor-ui-context.d.ts +19 -0
- package/dist/commentray-active-editor-ui-context.d.ts.map +1 -0
- package/dist/commentray-active-editor-ui-context.js +28 -0
- package/dist/commentray-active-editor-ui-context.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/region-marker-naming.d.ts +8 -25
- package/dist/region-marker-naming.d.ts.map +1 -1
- package/dist/region-marker-naming.js +5 -17
- package/dist/region-marker-naming.js.map +1 -1
- package/dist/scroll-sync.d.ts +14 -5
- package/dist/scroll-sync.d.ts.map +1 -1
- package/dist/scroll-sync.js +134 -10
- package/dist/scroll-sync.js.map +1 -1
- package/dist/source-markers.d.ts +1 -6
- package/dist/source-markers.d.ts.map +1 -1
- package/dist/source-markers.js +4 -18
- package/dist/source-markers.js.map +1 -1
- package/package.json +1 -1
package/dist/scroll-sync.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { parseAnchor } from "./anchors.js";
|
|
2
|
-
import { MARKER_ID_BODY } from "./marker-ids.js";
|
|
2
|
+
import { assertValidMarkerId, MARKER_ID_BODY } from "./marker-ids.js";
|
|
3
3
|
import { normalizeRepoRelativePath } from "./paths.js";
|
|
4
4
|
import { markerViewportHalfOpen1Based, sourceLineRangeForMarkerId } from "./source-markers.js";
|
|
5
|
-
export { blockStrictlyContainingSourceViewportLine, commentrayProbeInStrictInterMarkerGap, DEFAULT_COMMENTRAY_VIEWPORT_HYSTERESIS_LINES, DEFAULT_SOURCE_VIEWPORT_HYSTERESIS_LINES, pickBlockScrollLinkForCommentrayScroll, pickBlockScrollLinkForCommentrayViewportWithHysteresis, pickBlockScrollLinkForSourceViewportTop, pickBlockScrollLinkForSourceViewportWithHysteresis, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, sourceTopLineStrictlyBeforeFirstIndexLine, } from "./block-scroll-pickers.js";
|
|
5
|
+
export { blockStrictlyContainingSourceViewportLine, commentrayProbeInStrictInterMarkerGap, DEFAULT_COMMENTRAY_VIEWPORT_HYSTERESIS_LINES, DEFAULT_SOURCE_VIEWPORT_HYSTERESIS_LINES, pickBlockScrollLinkForCommentrayScroll, pickBlockScrollLinkForCommentrayViewportWithHysteresis, pickBlockScrollLinkForSourceViewportTop, pickBlockScrollLinkForSourceViewportWithHysteresis, pickCommentrayLineForSourceDualPane, pickCommentrayLineForSourceScroll, pickSourceLine0ForCommentrayScroll, sourceTopLineStrictlyBeforeFirstIndexLine, } from "./block-scroll-pickers.js";
|
|
6
6
|
const BLOCK_MARKER_RE = new RegExp(`<!-- commentray:block id=(${MARKER_ID_BODY}) -->`);
|
|
7
7
|
function markerLineByIdFromMarkdown(markdown) {
|
|
8
8
|
const map = new Map();
|
|
@@ -35,21 +35,143 @@ function buildMarkerFallbackLinks(markerLineById, sourceText) {
|
|
|
35
35
|
return links;
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* Sorted by `sourceStart`.
|
|
38
|
+
* Parses HTML-style Commentray regions in companion Markdown (`markdown` language family), the same
|
|
39
|
+
* shape `commentrayRegionInsertions("markdown", …)` emits. Used when there are no
|
|
40
|
+
* `<!-- commentray:block id=… -->` markers so scroll sync can still segment by authored sections.
|
|
42
41
|
*/
|
|
42
|
+
export function parseMarkdownHtmlCommentrayRegions(markdown) {
|
|
43
|
+
const lines = markdown.split("\n");
|
|
44
|
+
const out = [];
|
|
45
|
+
const stack = [];
|
|
46
|
+
const startRe = /^<!--\s*#region\s+commentray:([a-z0-9][a-z0-9_-]{0,63})\s*-->$/i;
|
|
47
|
+
const endRe = /^<!--\s*#endregion\s+commentray:([a-z0-9][a-z0-9_-]{0,63})\s*-->$/i;
|
|
48
|
+
for (let i = 0; i < lines.length; i++) {
|
|
49
|
+
const line = lines[i] ?? "";
|
|
50
|
+
const sm = line.match(startRe);
|
|
51
|
+
if (sm) {
|
|
52
|
+
const startId = sm[1];
|
|
53
|
+
if (startId === undefined)
|
|
54
|
+
continue;
|
|
55
|
+
try {
|
|
56
|
+
assertValidMarkerId(startId);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
stack.push({ id: startId, start: i });
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const em = line.match(endRe);
|
|
65
|
+
if (!em)
|
|
66
|
+
continue;
|
|
67
|
+
const endId = em[1];
|
|
68
|
+
if (endId === undefined)
|
|
69
|
+
continue;
|
|
70
|
+
try {
|
|
71
|
+
assertValidMarkerId(endId);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
let k = stack.length - 1;
|
|
77
|
+
while (k >= 0) {
|
|
78
|
+
const frame = stack[k];
|
|
79
|
+
if (frame !== undefined && frame.id.toLowerCase() === endId.toLowerCase())
|
|
80
|
+
break;
|
|
81
|
+
k -= 1;
|
|
82
|
+
}
|
|
83
|
+
if (k < 0)
|
|
84
|
+
continue;
|
|
85
|
+
const matched = stack[k];
|
|
86
|
+
if (matched === undefined)
|
|
87
|
+
continue;
|
|
88
|
+
const { start } = matched;
|
|
89
|
+
stack.splice(k);
|
|
90
|
+
out.push({ id: endId, mdStartLine: start, mdEndExclusive: i + 1 });
|
|
91
|
+
}
|
|
92
|
+
out.sort((a, b) => a.mdStartLine - b.mdStartLine);
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* When companion Markdown uses HTML `#region commentray:…` / `#endregion` pairs but the primary
|
|
97
|
+
* file has **no** matching region delimiters, partition **1…sourceLineCount** across regions in
|
|
98
|
+
* proportion to each region’s Markdown body height so dual-pane scroll is **piecewise** instead
|
|
99
|
+
* of one global ratio.
|
|
100
|
+
*/
|
|
101
|
+
function buildSyntheticBlockScrollLinksFromHtmlRegions(commentrayMarkdown, sourceText) {
|
|
102
|
+
if (sourceText === undefined)
|
|
103
|
+
return [];
|
|
104
|
+
const sourceLineCount = sourceText.split("\n").length;
|
|
105
|
+
if (sourceLineCount < 1)
|
|
106
|
+
return [];
|
|
107
|
+
const regions = parseMarkdownHtmlCommentrayRegions(commentrayMarkdown);
|
|
108
|
+
if (regions.length === 0)
|
|
109
|
+
return [];
|
|
110
|
+
if (sourceLineCount < regions.length)
|
|
111
|
+
return [];
|
|
112
|
+
const weights = regions.map((r) => Math.max(1, r.mdEndExclusive - r.mdStartLine - 2));
|
|
113
|
+
const sum = weights.reduce((a, b) => a + b, 0);
|
|
114
|
+
const slices = weights.map((w) => Math.max(1, Math.floor((w / sum) * sourceLineCount)));
|
|
115
|
+
let total = slices.reduce((a, b) => a + b, 0);
|
|
116
|
+
let guard = 0;
|
|
117
|
+
while (total < sourceLineCount && guard < sourceLineCount + 8) {
|
|
118
|
+
const idx = guard % slices.length;
|
|
119
|
+
const bump = slices[idx];
|
|
120
|
+
if (bump === undefined)
|
|
121
|
+
break;
|
|
122
|
+
slices[idx] = bump + 1;
|
|
123
|
+
total += 1;
|
|
124
|
+
guard += 1;
|
|
125
|
+
}
|
|
126
|
+
guard = 0;
|
|
127
|
+
while (total > sourceLineCount && guard < sourceLineCount + 8) {
|
|
128
|
+
const j = slices.findIndex((s) => s > 1);
|
|
129
|
+
if (j < 0)
|
|
130
|
+
break;
|
|
131
|
+
const cur = slices[j];
|
|
132
|
+
if (cur === undefined)
|
|
133
|
+
break;
|
|
134
|
+
slices[j] = cur - 1;
|
|
135
|
+
total -= 1;
|
|
136
|
+
guard += 1;
|
|
137
|
+
}
|
|
138
|
+
const links = [];
|
|
139
|
+
let srcLo = 1;
|
|
140
|
+
for (let j = 0; j < regions.length; j++) {
|
|
141
|
+
const slice = slices[j];
|
|
142
|
+
const r = regions[j];
|
|
143
|
+
if (slice === undefined || r === undefined)
|
|
144
|
+
continue;
|
|
145
|
+
const srcHi = Math.min(sourceLineCount, srcLo + slice - 1);
|
|
146
|
+
links.push({
|
|
147
|
+
id: r.id,
|
|
148
|
+
commentrayLine: r.mdStartLine,
|
|
149
|
+
sourceStart: srcLo,
|
|
150
|
+
sourceEnd: srcHi,
|
|
151
|
+
markerViewportHalfOpen1Based: { lo: srcLo, hiExclusive: srcHi + 1 },
|
|
152
|
+
});
|
|
153
|
+
srcLo = srcHi + 1;
|
|
154
|
+
}
|
|
155
|
+
return links;
|
|
156
|
+
}
|
|
157
|
+
function markerFallbackThenSynthetic(markerLineById, commentrayMarkdown, sourceText) {
|
|
158
|
+
const fb = buildMarkerFallbackLinks(markerLineById, sourceText);
|
|
159
|
+
if (fb.length > 0)
|
|
160
|
+
return fb;
|
|
161
|
+
return buildSyntheticBlockScrollLinksFromHtmlRegions(commentrayMarkdown, sourceText);
|
|
162
|
+
}
|
|
163
|
+
/** Join index + companion markers into `BlockScrollLink[]`; see scroll-sync commentray. */
|
|
43
164
|
export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, commentrayMarkdown, sourceText) {
|
|
44
165
|
const markerLineById = markerLineByIdFromMarkdown(commentrayMarkdown);
|
|
45
166
|
const entry = index?.byCommentrayPath[commentrayPath];
|
|
46
167
|
if (!entry || entry.sourcePath !== sourceRelative || entry.blocks.length === 0) {
|
|
47
|
-
return
|
|
168
|
+
return markerFallbackThenSynthetic(markerLineById, commentrayMarkdown, sourceText);
|
|
48
169
|
}
|
|
49
170
|
const entryCrNorm = normalizeRepoRelativePath(entry.commentrayPath.replaceAll("\\", "/"));
|
|
50
171
|
const lookupCrNorm = normalizeRepoRelativePath(commentrayPath.replaceAll("\\", "/"));
|
|
51
|
-
if (entryCrNorm !== lookupCrNorm)
|
|
52
|
-
return
|
|
172
|
+
if (entryCrNorm !== lookupCrNorm) {
|
|
173
|
+
return markerFallbackThenSynthetic(markerLineById, commentrayMarkdown, sourceText);
|
|
174
|
+
}
|
|
53
175
|
const links = [];
|
|
54
176
|
for (const block of entry.blocks) {
|
|
55
177
|
const anchor = parseAnchor(block.anchor);
|
|
@@ -85,6 +207,8 @@ export function buildBlockScrollLinks(index, sourceRelative, commentrayPath, com
|
|
|
85
207
|
}
|
|
86
208
|
}
|
|
87
209
|
links.sort((a, b) => a.sourceStart - b.sourceStart);
|
|
88
|
-
|
|
210
|
+
if (links.length > 0)
|
|
211
|
+
return links;
|
|
212
|
+
return buildSyntheticBlockScrollLinksFromHtmlRegions(commentrayMarkdown, sourceText);
|
|
89
213
|
}
|
|
90
214
|
//# 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;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,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,12 +25,7 @@ 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
|
-
*/
|
|
28
|
+
/** Half-open viewport span for scroll sync; see source-markers commentray. */
|
|
34
29
|
export declare function markerViewportHalfOpen1Based(sourceText: string, markerId: string): {
|
|
35
30
|
lo: number;
|
|
36
31
|
hiExclusive: number;
|
|
@@ -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":"AAiGA;;;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,8EAA8E;AAC9E,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
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
import { assertValidMarkerId, MARKER_ID_BODY } from "./marker-ids.js";
|
|
2
2
|
/**
|
|
3
|
-
* Source delimiters for block anchors
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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.
|
|
3
|
+
* Source delimiters for block anchors (region `commentray:<id>` vs generic
|
|
4
|
+
* `commentray:start` / `end`). Full taxonomy and viewport geometry: companion
|
|
5
|
+
* `.commentray/source/.../source-markers.ts/main.md`.
|
|
15
6
|
*/
|
|
16
7
|
const COMMENTRAY_TAG = (id) => `commentray:${id.trim().toLowerCase()}`;
|
|
17
8
|
/** `//#region commentray:<id>` — JS/TS ecosystem & CSS preprocessors that use `//`. */
|
|
@@ -246,12 +237,7 @@ export function sourceLineRangeForMarkerId(sourceText, markerId) {
|
|
|
246
237
|
return null;
|
|
247
238
|
return { start, end };
|
|
248
239
|
}
|
|
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
|
-
*/
|
|
240
|
+
/** Half-open viewport span for scroll sync; see source-markers commentray. */
|
|
255
241
|
export function markerViewportHalfOpen1Based(sourceText, markerId) {
|
|
256
242
|
const pair = findFirstMarkerPairBoundaryIndices(sourceText, markerId);
|
|
257
243
|
if (pair === null)
|
|
@@ -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
|
|
1
|
+
{"version":3,"file":"source-markers.js","sourceRoot":"","sources":["../src/source-markers.ts"],"names":[],"mappings":"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"}
|