@cudoment/cudoc 0.5.0 → 0.7.0
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/README.md +3 -2
- package/dist/document.d.ts +25 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +21 -1
- package/dist/document.js.map +1 -1
- package/dist/internal/core/query/sections.d.ts +6 -0
- package/dist/internal/core/query/sections.d.ts.map +1 -1
- package/dist/internal/core/query/sections.js +8 -2
- package/dist/internal/core/query/sections.js.map +1 -1
- package/dist/node/check.d.ts +8 -4
- package/dist/node/check.d.ts.map +1 -1
- package/dist/node/check.js +475 -65
- package/dist/node/check.js.map +1 -1
- package/dist/node/cli.js +2 -81
- package/dist/node/cli.js.map +1 -1
- package/dist/node/collect.d.ts +41 -0
- package/dist/node/collect.d.ts.map +1 -0
- package/dist/node/collect.js +351 -0
- package/dist/node/collect.js.map +1 -0
- package/dist/node/command.d.ts +23 -0
- package/dist/node/command.d.ts.map +1 -0
- package/dist/node/command.js +116 -0
- package/dist/node/command.js.map +1 -0
- package/dist/node/dataset.d.ts.map +1 -1
- package/dist/node/dataset.js +4 -1
- package/dist/node/dataset.js.map +1 -1
- package/dist/node/library.d.ts +9 -5
- package/dist/node/library.d.ts.map +1 -1
- package/dist/node/library.js +15 -253
- package/dist/node/library.js.map +1 -1
- package/dist/node/load-ast.d.ts.map +1 -1
- package/dist/node/load-ast.js +4 -1
- package/dist/node/load-ast.js.map +1 -1
- package/dist/node/local-target.d.ts +11 -0
- package/dist/node/local-target.d.ts.map +1 -1
- package/dist/node/local-target.js +54 -2
- package/dist/node/local-target.js.map +1 -1
- package/dist/node/prepare-embeds.d.ts +36 -1
- package/dist/node/prepare-embeds.d.ts.map +1 -1
- package/dist/node/prepare-embeds.js +94 -4
- package/dist/node/prepare-embeds.js.map +1 -1
- package/dist/node/references.d.ts +39 -0
- package/dist/node/references.d.ts.map +1 -0
- package/dist/node/references.js +101 -0
- package/dist/node/references.js.map +1 -0
- package/dist/node/replace.d.ts +65 -0
- package/dist/node/replace.d.ts.map +1 -0
- package/dist/node/replace.js +285 -0
- package/dist/node/replace.js.map +1 -0
- package/dist/node/report.d.ts.map +1 -1
- package/dist/node/report.js +5 -1
- package/dist/node/report.js.map +1 -1
- package/dist/node/resolve-embed.d.ts +99 -2
- package/dist/node/resolve-embed.d.ts.map +1 -1
- package/dist/node/resolve-embed.js +654 -116
- package/dist/node/resolve-embed.js.map +1 -1
- package/dist/node/roots.d.ts +12 -1
- package/dist/node/roots.d.ts.map +1 -1
- package/dist/node/roots.js +47 -11
- package/dist/node/roots.js.map +1 -1
- package/dist/node/storage.d.ts.map +1 -1
- package/dist/node/storage.js +202 -9
- package/dist/node/storage.js.map +1 -1
- package/dist/node/tree.d.ts +58 -0
- package/dist/node/tree.d.ts.map +1 -0
- package/dist/node/tree.js +151 -0
- package/dist/node/tree.js.map +1 -0
- package/dist/node/watch.d.ts +9 -4
- package/dist/node/watch.d.ts.map +1 -1
- package/dist/node/watch.js +51 -17
- package/dist/node/watch.js.map +1 -1
- package/dist/paged.d.ts +18 -0
- package/dist/paged.d.ts.map +1 -1
- package/dist/paged.js +21 -0
- package/dist/paged.js.map +1 -1
- package/dist/render.d.ts +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +14 -0
- package/dist/render.js.map +1 -1
- package/dist/sections.d.ts.map +1 -1
- package/dist/sections.js +7 -3
- package/dist/sections.js.map +1 -1
- package/package.json +15 -15
- package/styles.css +49 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replacement rules applied to an embedded section, shared by the resolver,
|
|
3
|
+
* which copies the result, and the checker, which inspects it.
|
|
4
|
+
*
|
|
5
|
+
* A rule list rewrites the section's original Markdown, not its tree, and the
|
|
6
|
+
* rewritten text is compiled again with the document's own options, so the
|
|
7
|
+
* copy is what the source would have been had it been written that way.
|
|
8
|
+
*/
|
|
9
|
+
import { compileDocument } from "../markdown.js";
|
|
10
|
+
import { getHeadingAnchorId } from "../internal/core/query/sections.js";
|
|
11
|
+
import { sourceFileOf } from "./roots.js";
|
|
12
|
+
/** Hosts whose Markdown the standalone compiler reads as the host does. */
|
|
13
|
+
const PORTABLE_HOSTS = ["markdown", "next", "html"];
|
|
14
|
+
/** A block a heading can sit in, as an author calls it. */
|
|
15
|
+
const containerName = (node) => {
|
|
16
|
+
if (node.type === "blockquote") {
|
|
17
|
+
const element = node.data?.hName;
|
|
18
|
+
if (element === "aside")
|
|
19
|
+
return "a callout";
|
|
20
|
+
return element && element !== "blockquote" ? "a container" : "a quote";
|
|
21
|
+
}
|
|
22
|
+
if (node.type === "listItem")
|
|
23
|
+
return "a list item";
|
|
24
|
+
if (node.type === "containerDirective")
|
|
25
|
+
return "a container";
|
|
26
|
+
if (node.type === "mdxJsxFlowElement")
|
|
27
|
+
return "a component";
|
|
28
|
+
if (node.type === "footnoteDefinition")
|
|
29
|
+
return "a footnote";
|
|
30
|
+
return `a ${node.type} block`;
|
|
31
|
+
};
|
|
32
|
+
/** Columns a line's leading text takes, with a tab to the next multiple of four. */
|
|
33
|
+
const width = (value) => [...value].reduce((column, char) => (char === "\t" ? column + 4 - (column % 4) : column + 1), 0);
|
|
34
|
+
/** A line less up to `column` columns of its leading white space. */
|
|
35
|
+
const dedent = (line, column) => {
|
|
36
|
+
let at = 0;
|
|
37
|
+
let index = 0;
|
|
38
|
+
while (at < column && (line[index] === " " || line[index] === "\t")) {
|
|
39
|
+
const next = line[index] === "\t" ? at + 4 - (at % 4) : at + 1;
|
|
40
|
+
// A tab reaching past the column leaves the columns beyond it.
|
|
41
|
+
if (next > column)
|
|
42
|
+
return " ".repeat(next - column) + line.slice(index + 1);
|
|
43
|
+
at = next;
|
|
44
|
+
index++;
|
|
45
|
+
}
|
|
46
|
+
return line.slice(index);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Where a section's heading sits: the block holding it, and the marks of
|
|
50
|
+
* the blocks around it on its own line. A remark host records the heading
|
|
51
|
+
* after them and a markdown-it host from the start of the line, so they are
|
|
52
|
+
* read from the line itself.
|
|
53
|
+
*/
|
|
54
|
+
const headingPlace = (document, anchor) => {
|
|
55
|
+
const source = document.source;
|
|
56
|
+
const range = source?.sections[anchor];
|
|
57
|
+
if (!source || !range)
|
|
58
|
+
return undefined;
|
|
59
|
+
const root = document.tree;
|
|
60
|
+
let found;
|
|
61
|
+
const find = (node) => (node.children ?? []).forEach((child, index) => {
|
|
62
|
+
if (found)
|
|
63
|
+
return;
|
|
64
|
+
if (child.type === "heading" &&
|
|
65
|
+
getHeadingAnchorId(child) === anchor)
|
|
66
|
+
found = { parent: node, index };
|
|
67
|
+
else
|
|
68
|
+
find(child);
|
|
69
|
+
});
|
|
70
|
+
find(root);
|
|
71
|
+
if (!found || found.parent === root)
|
|
72
|
+
return undefined;
|
|
73
|
+
const text = source.text;
|
|
74
|
+
const lineStart = text.lastIndexOf("\n", range.start - 1) + 1;
|
|
75
|
+
const lineEnd = text.indexOf("\n", lineStart);
|
|
76
|
+
const line = text.slice(lineStart, lineEnd === -1 ? text.length : lineEnd);
|
|
77
|
+
const marks = line.match(MARKS)[0];
|
|
78
|
+
return {
|
|
79
|
+
...found,
|
|
80
|
+
range,
|
|
81
|
+
marks,
|
|
82
|
+
lineStart,
|
|
83
|
+
included: range.start - lineStart,
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* The marks of the blocks a line opens or continues: quotes, list items,
|
|
88
|
+
* indentation. A line may still end in the `\r` of a `\r\n`.
|
|
89
|
+
*/
|
|
90
|
+
const MARKS = /^(?:[ \t]*(?:>|[-+*](?=[ \t\r]|$)|\d{1,9}[.)](?=[ \t\r]|$)))*[ \t]*/;
|
|
91
|
+
const LIST_MARKER = /(?:[-+*]|\d[.)])/;
|
|
92
|
+
/**
|
|
93
|
+
* The column a list item's content starts at, for a heading on one of its
|
|
94
|
+
* later lines: that of the nearest line above whose marks open an item no
|
|
95
|
+
* deeper than the heading, since the heading may be indented past it. An
|
|
96
|
+
* item whose first line holds the marker alone starts one column past the
|
|
97
|
+
* marker, however much space follows it.
|
|
98
|
+
*/
|
|
99
|
+
const itemColumn = (text, lineStart, heading) => {
|
|
100
|
+
let end = lineStart - 1;
|
|
101
|
+
while (end > 0) {
|
|
102
|
+
const start = text.lastIndexOf("\n", end - 1) + 1;
|
|
103
|
+
const line = text.slice(start, end);
|
|
104
|
+
const marks = line.match(MARKS)[0];
|
|
105
|
+
const column = line.slice(marks.length).trim() === ""
|
|
106
|
+
? width(marks.trimEnd()) + 1
|
|
107
|
+
: width(marks);
|
|
108
|
+
if (LIST_MARKER.test(marks) && column <= heading)
|
|
109
|
+
return column;
|
|
110
|
+
end = start - 1;
|
|
111
|
+
}
|
|
112
|
+
return heading;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* One section's Markdown as it reads on its own, or the whole document's
|
|
116
|
+
* without an anchor. A heading in a list item starts its range at or after
|
|
117
|
+
* the item's marks, and the lines after it carry the indentation the parser
|
|
118
|
+
* took off them as the item's content; both are taken off here too, so the
|
|
119
|
+
* text compiles to the section that was collected.
|
|
120
|
+
*/
|
|
121
|
+
export function sectionText(document, anchor, includeChildren = true) {
|
|
122
|
+
const source = document.source;
|
|
123
|
+
const range = anchor ? source.sections[anchor] : undefined;
|
|
124
|
+
if (!range)
|
|
125
|
+
return source.text;
|
|
126
|
+
const text = source.text.slice(range.start, includeChildren ? range.end : (range.ownEnd ?? range.end));
|
|
127
|
+
const place = headingPlace(document, anchor);
|
|
128
|
+
if (place?.parent.type !== "listItem" || place.marks.includes(">"))
|
|
129
|
+
return text;
|
|
130
|
+
const column = LIST_MARKER.test(place.marks)
|
|
131
|
+
? width(place.marks)
|
|
132
|
+
: itemColumn(source.text, place.lineStart, width(place.marks));
|
|
133
|
+
const [first = "", ...rest] = text.split("\n");
|
|
134
|
+
return [
|
|
135
|
+
first.slice(Math.max(0, place.marks.length - place.included)),
|
|
136
|
+
...rest.map((line) => dedent(line, column)),
|
|
137
|
+
].join("\n");
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Why a section's Markdown cannot be rewritten, or `undefined`.
|
|
141
|
+
*
|
|
142
|
+
* A rule rewrites the section's text as it reads on its own, which is
|
|
143
|
+
* compiled again. A heading inside another block leaves some of that block
|
|
144
|
+
* in the text where nothing takes it off: a quote's `>` stays on the lines
|
|
145
|
+
* after the heading, a footnote's indentation stays on its lines, and the
|
|
146
|
+
* last section of a component or a `:::` container runs into the line that
|
|
147
|
+
* closes it. Any of those is refused, since compiled again it would be
|
|
148
|
+
* another structure; a list item's marks and indentation are taken off by
|
|
149
|
+
* `sectionText`. Decided from the collected tree and the source alone, so
|
|
150
|
+
* the build and `cudoc check` agree whichever compiler each has.
|
|
151
|
+
*/
|
|
152
|
+
export function unreplaceableSection(document, anchor, includeChildren = true) {
|
|
153
|
+
if (!anchor)
|
|
154
|
+
return undefined;
|
|
155
|
+
const place = headingPlace(document, anchor);
|
|
156
|
+
if (!place)
|
|
157
|
+
return undefined;
|
|
158
|
+
const { parent, index, marks } = place;
|
|
159
|
+
const heading = parent.children[index];
|
|
160
|
+
const endsWithin = parent
|
|
161
|
+
.children.slice(index + 1)
|
|
162
|
+
.some((node) => node.type === "heading" &&
|
|
163
|
+
(!includeChildren || (node.depth ?? 0) <= (heading.depth ?? 0)));
|
|
164
|
+
const quoted = marks.includes(">");
|
|
165
|
+
const closed = parent.type === "mdxJsxFlowElement" ||
|
|
166
|
+
parent.type === "containerDirective" ||
|
|
167
|
+
(parent.type === "blockquote" && !quoted);
|
|
168
|
+
const lastLine = sectionText(document, anchor, includeChildren)
|
|
169
|
+
.trimEnd()
|
|
170
|
+
.split("\n")
|
|
171
|
+
.at(-1)
|
|
172
|
+
.trim();
|
|
173
|
+
const reason = quoted
|
|
174
|
+
? "the `>` marks stay on the lines after its heading"
|
|
175
|
+
: parent.type === "footnoteDefinition"
|
|
176
|
+
? "the footnote's indentation stays on the lines after its heading"
|
|
177
|
+
: closed && !endsWithin && /^(?::{3,}|<\/[^>]*>)$/.test(lastLine)
|
|
178
|
+
? "its text runs into the line that closes that block"
|
|
179
|
+
: undefined;
|
|
180
|
+
if (!reason)
|
|
181
|
+
return undefined;
|
|
182
|
+
const container = containerName(parent);
|
|
183
|
+
return `${document.id}#${anchor} starts inside ${container}, and ${reason}, so a replace rule cannot rewrite it; move the heading out of ${container.replace(/^an? /, "the ")}, or embed the section without replace`;
|
|
184
|
+
}
|
|
185
|
+
export function replaceSource(source, rules, documentId) {
|
|
186
|
+
return rules.reduce((value, rule, index) => {
|
|
187
|
+
try {
|
|
188
|
+
return rule.regex
|
|
189
|
+
? value.replace(new RegExp(rule.find, rule.flags ?? "g"), rule.replace)
|
|
190
|
+
: value.split(rule.find).join(rule.replace);
|
|
191
|
+
}
|
|
192
|
+
catch (cause) {
|
|
193
|
+
throw new Error(`cudoc: invalid replacement ${index + 1} in ${documentId}`, { cause });
|
|
194
|
+
}
|
|
195
|
+
}, source);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* One section's Markdown with the rules applied, followed by the definitions
|
|
199
|
+
* it depends on from outside its range, unchanged. `offset` is where the
|
|
200
|
+
* section starts in the source, for an error that has to point there.
|
|
201
|
+
*/
|
|
202
|
+
export function replacedSectionSource(document, anchor, rules, includeChildren = true) {
|
|
203
|
+
if (!document.source)
|
|
204
|
+
throw new Error(`cudoc: rebuild ${document.id} with source snapshots before replacing Markdown`);
|
|
205
|
+
// The snapshot records one source range per id, the first heading's; a
|
|
206
|
+
// second heading with the same id has no range of its own to rewrite.
|
|
207
|
+
if (anchor) {
|
|
208
|
+
const parents = [];
|
|
209
|
+
const count = (node) => {
|
|
210
|
+
for (const child of node.children ?? []) {
|
|
211
|
+
if (child.type === "heading" &&
|
|
212
|
+
getHeadingAnchorId(child) === anchor)
|
|
213
|
+
parents.push(node);
|
|
214
|
+
count(child);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const root = document.tree;
|
|
218
|
+
count(root);
|
|
219
|
+
if (parents.length > 1)
|
|
220
|
+
throw new Error(`cudoc: ${document.id} gives #${anchor} to ${parents.length} headings, so a replace rule cannot tell which section to rewrite; give them distinct ids`);
|
|
221
|
+
const problem = unreplaceableSection(document, anchor, includeChildren);
|
|
222
|
+
if (problem)
|
|
223
|
+
throw new Error(`cudoc: ${problem}`);
|
|
224
|
+
}
|
|
225
|
+
const range = anchor ? document.source.sections[anchor] : undefined;
|
|
226
|
+
if (anchor && !range)
|
|
227
|
+
throw new Error(`cudoc: missing source range for ${document.id}#${anchor}; rebuild documents`);
|
|
228
|
+
const end = range
|
|
229
|
+
? includeChildren
|
|
230
|
+
? range.end
|
|
231
|
+
: (range.ownEnd ?? range.end)
|
|
232
|
+
: undefined;
|
|
233
|
+
const original = sectionText(document, anchor, includeChildren);
|
|
234
|
+
const dependencies = range?.dependencies
|
|
235
|
+
.filter(([start, stop]) => start < range.start || stop > end)
|
|
236
|
+
.map(([start, end]) => document.source.text.slice(start, end))
|
|
237
|
+
.join("\n\n");
|
|
238
|
+
return {
|
|
239
|
+
source: replaceSource(original, rules, document.id) +
|
|
240
|
+
(dependencies ? `\n\n${dependencies}` : ""),
|
|
241
|
+
offset: range?.start ?? 0,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Compiles a section's rewritten Markdown with the library's compiler and
|
|
246
|
+
* options, as the build does. A library of a host the standalone compiler
|
|
247
|
+
* cannot stand in for needs that host's compiler, and without it this throws,
|
|
248
|
+
* because a copy compiled otherwise would lose the host's own syntax.
|
|
249
|
+
*
|
|
250
|
+
* `standalone` is for a caller that inspects the copy rather than ships it:
|
|
251
|
+
* without the host compiler it compiles with the standalone one and the same
|
|
252
|
+
* options, which reads embed fences, components and tables as the host does.
|
|
253
|
+
* Syntax only the host's own parser knows is lost or refused there: a
|
|
254
|
+
* VitePress `::: tip` container stays text, and MDX with Docusaurus's
|
|
255
|
+
* `{#id}` or an HTML comment does not compile, which the caller has to allow.
|
|
256
|
+
*/
|
|
257
|
+
export function compileReplacedSection(library, document, replaced, { standalone = false } = {}) {
|
|
258
|
+
const options = { ...library.options, format: document.source?.format };
|
|
259
|
+
if (!library.compiler &&
|
|
260
|
+
!standalone &&
|
|
261
|
+
options.host &&
|
|
262
|
+
!PORTABLE_HOSTS.includes(options.host))
|
|
263
|
+
throw new Error(`cudoc: replacing ${options.host} Markdown requires the original host compiler`);
|
|
264
|
+
try {
|
|
265
|
+
return library.compiler
|
|
266
|
+
? library.compiler(replaced.source, {
|
|
267
|
+
id: document.id,
|
|
268
|
+
filePath: (library.roots &&
|
|
269
|
+
sourceFileOf(library.roots, document.sourcePath)) ??
|
|
270
|
+
document.sourcePath,
|
|
271
|
+
options,
|
|
272
|
+
}).tree
|
|
273
|
+
: compileDocument(replaced.source, options).tree;
|
|
274
|
+
}
|
|
275
|
+
catch (cause) {
|
|
276
|
+
throw new Error(`cudoc: replaced Markdown could not compile in ${document.id} at source offset ${replaced.offset}`, { cause });
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/** The tree an embed copies from one section: rewritten when there are rules. */
|
|
280
|
+
export function transformedSection(document, anchor, tree, rules, library, includeChildren = true) {
|
|
281
|
+
if (!rules.length)
|
|
282
|
+
return structuredClone(tree);
|
|
283
|
+
return compileReplacedSection(library, document, replacedSectionSource(document, anchor, rules, includeChildren));
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=replace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace.js","sourceRoot":"","sources":["../../src/node/replace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/node/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAA;AAU7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/node/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAA;AAU7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAkD7D"}
|
package/dist/node/report.js
CHANGED
|
@@ -30,7 +30,11 @@ export function formatCheckResult(result) {
|
|
|
30
30
|
if (issue.available?.length) {
|
|
31
31
|
const shown = issue.available.slice(0, SHOWN_ANCHORS);
|
|
32
32
|
const rest = issue.available.length - shown.length;
|
|
33
|
-
|
|
33
|
+
// Anchors read as the fragments they are; a tree's names in quotes.
|
|
34
|
+
const spell = issue.code === "unmatched-tree-order"
|
|
35
|
+
? (name) => JSON.stringify(name)
|
|
36
|
+
: (id) => `#${id}`;
|
|
37
|
+
lines.push(` ${" ".repeat(width)} available: ${shown.map(spell).join(", ")}${rest > 0 ? ` (+${rest} more)` : ""}`);
|
|
34
38
|
}
|
|
35
39
|
else if (issue.available) {
|
|
36
40
|
lines.push(` ${" ".repeat(width)} available: none`);
|
package/dist/node/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/node/report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,sEAAsE;AACtE,MAAM,aAAa,GAAG,CAAC,CAAA;AAEvB,MAAM,QAAQ,GAAG,CAAC,KAAqB,EAAE,EAAE,CACzC,KAAK,CAAC,QAAQ;IACZ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;IAC/D,CAAC,CAAC,EAAE,CAAA;AAER,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAA;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;QACvB,OAAO,WAAW,MAAM,CAAC,iBAAiB,kBAAkB,MAAM,CAAC,aAAa,+BAA+B,CAAA;IAEjH,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAA;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CACxD,CAAA;IACD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAChH,CAAA;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACtD,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;gBACrD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;gBAClD,KAAK,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/node/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,19 +32,66 @@ export type TableColumn = "title" | "link" | "summary" | {
|
|
|
32
32
|
/** A CSS length written onto the header cell's `style` as `min-width`. */
|
|
33
33
|
minWidth?: string;
|
|
34
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* A tree of documents and their headings: a document's children are the
|
|
37
|
+
* documents of the folder it stands for, and with `headings` its sections.
|
|
38
|
+
*/
|
|
39
|
+
export type TreeRender = {
|
|
40
|
+
type: "tree";
|
|
41
|
+
/** Levels whose items start unfolded on the web. Default 1. */
|
|
42
|
+
open?: number;
|
|
43
|
+
/** Levels the print HTML, the PDF and Word show. Default: every level. */
|
|
44
|
+
print?: number;
|
|
45
|
+
/** Levels the tree holds. Default: every level. */
|
|
46
|
+
depth?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Heading levels under each document's title that become its children:
|
|
49
|
+
* 1 takes `##`, 2 takes `##` and `###`, up to 5. Default 0, documents only.
|
|
50
|
+
*/
|
|
51
|
+
headings?: number;
|
|
52
|
+
/** Names the first level puts first, in order; `...` stands for the rest. */
|
|
53
|
+
order?: string[];
|
|
54
|
+
/** What one line shows, joined with ` · `. Default `[link, summary]`. */
|
|
55
|
+
columns?: TableColumn[];
|
|
56
|
+
};
|
|
35
57
|
export type EmbedSpec = {
|
|
36
58
|
sources: string[];
|
|
37
59
|
select?: SectionSelection;
|
|
38
60
|
render?: "section" | {
|
|
39
61
|
type: "table";
|
|
40
62
|
columns?: TableColumn[];
|
|
41
|
-
};
|
|
63
|
+
} | TreeRender;
|
|
42
64
|
replace?: Replacement[];
|
|
43
65
|
};
|
|
44
66
|
export type EmbedContext = {
|
|
45
67
|
documentId: string;
|
|
46
68
|
prefix?: string;
|
|
47
69
|
};
|
|
70
|
+
/** One line of a tree: a document, or a heading inside one. */
|
|
71
|
+
export type TreeNode = {
|
|
72
|
+
/** The document id, followed by `#` and the anchor for a heading. */
|
|
73
|
+
id: string;
|
|
74
|
+
kind: "document" | "heading";
|
|
75
|
+
documentId: string;
|
|
76
|
+
/** The heading's anchor; absent on a document. */
|
|
77
|
+
anchorId?: string;
|
|
78
|
+
/**
|
|
79
|
+
* A document's file name without the extension, the folder's name for an
|
|
80
|
+
* index document, or a heading's text; in NFC. `order` matches it.
|
|
81
|
+
*/
|
|
82
|
+
name: string;
|
|
83
|
+
/** The document's `#` title, else its `title` front matter, else its name; a heading's text. */
|
|
84
|
+
title: string;
|
|
85
|
+
/** The node's own address: the document route, plus the anchor for a heading. */
|
|
86
|
+
url: string;
|
|
87
|
+
/** The library path of the document the node is or is in. */
|
|
88
|
+
sourcePath: string;
|
|
89
|
+
/** 1 for the first level. */
|
|
90
|
+
level: number;
|
|
91
|
+
/** One cell per column, empty ones included. */
|
|
92
|
+
cells: ExtractedCell[];
|
|
93
|
+
children: TreeNode[];
|
|
94
|
+
};
|
|
48
95
|
/** What a cell shows: text, and a link when the column or extractor gives one. */
|
|
49
96
|
export type ExtractedCell = {
|
|
50
97
|
text: string;
|
|
@@ -70,6 +117,12 @@ export type EmbedRow = {
|
|
|
70
117
|
* A function the collection config registers to compute a cell. `version`
|
|
71
118
|
* enters the library configuration, so changing what the function returns
|
|
72
119
|
* for the same input invalidates prepared embeds.
|
|
120
|
+
*
|
|
121
|
+
* In a tree, `node` is the line being computed. Its children are complete,
|
|
122
|
+
* cells included, because a tree computes its deepest lines first, so a value
|
|
123
|
+
* that totals the levels below, such as the open tasks under a node, adds up
|
|
124
|
+
* what `node.children` hold. Its own `cells` are filled after every column
|
|
125
|
+
* has run.
|
|
73
126
|
*/
|
|
74
127
|
export type TableExtractor = {
|
|
75
128
|
version: string;
|
|
@@ -77,6 +130,7 @@ export type TableExtractor = {
|
|
|
77
130
|
library: Library;
|
|
78
131
|
documentId: string;
|
|
79
132
|
column: TableColumn;
|
|
133
|
+
node?: TreeNode;
|
|
80
134
|
}) => string | ExtractedCell | undefined;
|
|
81
135
|
};
|
|
82
136
|
export declare function parseEmbedSpec(value: string): EmbedSpec;
|
|
@@ -93,6 +147,25 @@ export declare function resolveDocumentReference(library: Library, reference: st
|
|
|
93
147
|
document: StoredDocument;
|
|
94
148
|
anchor?: string;
|
|
95
149
|
};
|
|
150
|
+
/** Where a tree starts: the documents of a folder, or one document or section. */
|
|
151
|
+
export type TreeSource = {
|
|
152
|
+
folder: string;
|
|
153
|
+
documents: StoredDocument[];
|
|
154
|
+
} | {
|
|
155
|
+
document: StoredDocument;
|
|
156
|
+
anchor?: string;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Reads one source of a tree. A path ending in `/` names a folder, and the
|
|
160
|
+
* documents directly below it become the tree's first level; any other path
|
|
161
|
+
* names a document, or with `#anchor` one of its sections, as for any embed.
|
|
162
|
+
* Ids are matched in NFC, so a source names a document whose file name is
|
|
163
|
+
* stored in NFD. A folder holding no document fails, and so does a document
|
|
164
|
+
* path that is really a folder, with a hint to add the `/`. Given `page`,
|
|
165
|
+
* the document the tree lands on, a folder whose documents are all private
|
|
166
|
+
* fails too unless that page is private, since the tree leaves them out.
|
|
167
|
+
*/
|
|
168
|
+
export declare function resolveTreeSource(library: Library, reference: string, from: string, page?: string): TreeSource;
|
|
96
169
|
/** The default columns of a summary table, as they have always been. */
|
|
97
170
|
export declare const DEFAULT_TABLE_COLUMNS: TableColumn[];
|
|
98
171
|
/**
|
|
@@ -106,12 +179,36 @@ export declare function buildEmbedRow(document: StoredDocument, anchorId: string
|
|
|
106
179
|
* problem, which is worded as what the column asked for and what the section
|
|
107
180
|
* has, so an author can tell a wrong coordinate from a missing table.
|
|
108
181
|
*/
|
|
109
|
-
export declare function extractCell(library: Library, column: TableColumn, row: EmbedRow, context: EmbedContext
|
|
182
|
+
export declare function extractCell(library: Library, column: TableColumn, row: EmbedRow, context: EmbedContext,
|
|
183
|
+
/** The tree line the cell is for, handed to an extractor. */
|
|
184
|
+
node?: TreeNode): {
|
|
110
185
|
cell: ExtractedCell;
|
|
111
186
|
problem?: string;
|
|
112
187
|
};
|
|
113
188
|
/** The mdast table the extracted cells make, header cells carrying any width. */
|
|
114
189
|
export declare function buildEmbedTable(library: Library, columns: TableColumn[], rows: EmbedRow[], context: EmbedContext): Root;
|
|
190
|
+
/** The default line of a tree: the title linked to its node, then the summary. */
|
|
191
|
+
export declare const DEFAULT_TREE_COLUMNS: TableColumn[];
|
|
192
|
+
/** Whether an `order` entry names a node: its name, or its title, in NFC. */
|
|
193
|
+
export declare const namesTreeNode: (entry: string, node: Pick<TreeNode, "name" | "title">) => boolean;
|
|
194
|
+
/**
|
|
195
|
+
* The lines of a tree embed as data, the same lines the renderer draws, for
|
|
196
|
+
* a program that writes the tree in a form of its own, such as an outliner's
|
|
197
|
+
* blocks. `spec` is an embed whose render is a tree; sources resolve from
|
|
198
|
+
* `context.documentId`, which extractors also receive. Nodes come in the
|
|
199
|
+
* order the tree shows them, every level down to `depth`, whatever `open`
|
|
200
|
+
* and `print` say; equal input gives equal output, order and all.
|
|
201
|
+
*/
|
|
202
|
+
export declare function resolveTree(library: Library, input: EmbedSpec, context: EmbedContext): TreeNode[];
|
|
203
|
+
/**
|
|
204
|
+
* The mdast a tree renders to: nested lists, an item with children wrapped
|
|
205
|
+
* in a `details` element whose `summary` is the item's line, open down to
|
|
206
|
+
* `open` levels. Portable elements only, so it works without a script on
|
|
207
|
+
* every host. The outer list carries the `cudoc-tree` class, `data.cudoc.kind`
|
|
208
|
+
* `tree` and, when `print` is set, `data-cudoc-print`, which the print HTML
|
|
209
|
+
* and Word read.
|
|
210
|
+
*/
|
|
211
|
+
export declare function buildEmbedTree(nodes: TreeNode[], render: TreeRender): Root;
|
|
115
212
|
/** Resolve a configured embed from immutable persisted documents. */
|
|
116
213
|
export declare function resolveEmbed(library: Library, input: EmbedSpec, context: EmbedContext): Root;
|
|
117
214
|
export declare function resolveDocumentEmbeds(library: Library, documentId: string): Root;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-embed.d.ts","sourceRoot":"","sources":["../../src/node/resolve-embed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAGjC,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve-embed.d.ts","sourceRoot":"","sources":["../../src/node/resolve-embed.ts"],"names":[],"mappings":"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"}
|