@cudoment/cudoc 0.3.0 → 0.5.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.
Files changed (76) hide show
  1. package/README.md +1 -1
  2. package/dist/document.d.ts +11 -1
  3. package/dist/document.d.ts.map +1 -1
  4. package/dist/document.js +38 -3
  5. package/dist/document.js.map +1 -1
  6. package/dist/internal/core/mdx/imports.d.ts +21 -0
  7. package/dist/internal/core/mdx/imports.d.ts.map +1 -0
  8. package/dist/internal/core/mdx/imports.js +80 -0
  9. package/dist/internal/core/mdx/imports.js.map +1 -0
  10. package/dist/internal/core/mdx/index.d.ts +1 -0
  11. package/dist/internal/core/mdx/index.d.ts.map +1 -1
  12. package/dist/internal/core/mdx/index.js +1 -0
  13. package/dist/internal/core/mdx/index.js.map +1 -1
  14. package/dist/internal/transforms/table-column-layout/create-table.d.ts.map +1 -1
  15. package/dist/internal/transforms/table-column-layout/create-table.js +40 -17
  16. package/dist/internal/transforms/table-column-layout/create-table.js.map +1 -1
  17. package/dist/internal/transforms/table-column-layout/index.d.ts +32 -0
  18. package/dist/internal/transforms/table-column-layout/index.d.ts.map +1 -1
  19. package/dist/internal/transforms/table-column-layout/index.js +66 -0
  20. package/dist/internal/transforms/table-column-layout/index.js.map +1 -1
  21. package/dist/markdown.d.ts +8 -0
  22. package/dist/markdown.d.ts.map +1 -1
  23. package/dist/markdown.js +9 -1
  24. package/dist/markdown.js.map +1 -1
  25. package/dist/node/check.d.ts +61 -0
  26. package/dist/node/check.d.ts.map +1 -0
  27. package/dist/node/check.js +543 -0
  28. package/dist/node/check.js.map +1 -0
  29. package/dist/node/cli.js +57 -11
  30. package/dist/node/cli.js.map +1 -1
  31. package/dist/node/dataset.d.ts +14 -1
  32. package/dist/node/dataset.d.ts.map +1 -1
  33. package/dist/node/dataset.js +40 -4
  34. package/dist/node/dataset.js.map +1 -1
  35. package/dist/node/glob.d.ts +21 -0
  36. package/dist/node/glob.d.ts.map +1 -0
  37. package/dist/node/glob.js +61 -0
  38. package/dist/node/glob.js.map +1 -0
  39. package/dist/node/library.d.ts +70 -4
  40. package/dist/node/library.d.ts.map +1 -1
  41. package/dist/node/library.js +196 -32
  42. package/dist/node/library.js.map +1 -1
  43. package/dist/node/local-target.d.ts +63 -0
  44. package/dist/node/local-target.d.ts.map +1 -0
  45. package/dist/node/local-target.js +81 -0
  46. package/dist/node/local-target.js.map +1 -0
  47. package/dist/node/prepare-embeds.d.ts +16 -2
  48. package/dist/node/prepare-embeds.d.ts.map +1 -1
  49. package/dist/node/prepare-embeds.js +42 -9
  50. package/dist/node/prepare-embeds.js.map +1 -1
  51. package/dist/node/report.d.ts +9 -0
  52. package/dist/node/report.d.ts.map +1 -0
  53. package/dist/node/report.js +48 -0
  54. package/dist/node/report.js.map +1 -0
  55. package/dist/node/resolve-embed.d.ts +88 -1
  56. package/dist/node/resolve-embed.d.ts.map +1 -1
  57. package/dist/node/resolve-embed.js +321 -63
  58. package/dist/node/resolve-embed.js.map +1 -1
  59. package/dist/node/roots.d.ts +67 -0
  60. package/dist/node/roots.d.ts.map +1 -0
  61. package/dist/node/roots.js +134 -0
  62. package/dist/node/roots.js.map +1 -0
  63. package/dist/node/storage.d.ts +21 -3
  64. package/dist/node/storage.d.ts.map +1 -1
  65. package/dist/node/storage.js +41 -12
  66. package/dist/node/storage.js.map +1 -1
  67. package/dist/node/watch.d.ts +81 -0
  68. package/dist/node/watch.d.ts.map +1 -0
  69. package/dist/node/watch.js +140 -0
  70. package/dist/node/watch.js.map +1 -0
  71. package/dist/paged.d.ts +34 -0
  72. package/dist/paged.d.ts.map +1 -0
  73. package/dist/paged.js +44 -0
  74. package/dist/paged.js.map +1 -0
  75. package/package.json +27 -2
  76. package/styles.css +5 -2
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Human-readable rendering of a {@link CheckResult}.
3
+ *
4
+ * Issues are grouped by document and carry source coordinates, so an editor or
5
+ * a terminal that linkifies `path:line:column` jumps straight to the reference.
6
+ */
7
+ import type { CheckResult } from "./check.js";
8
+ export declare function formatCheckResult(result: CheckResult): string;
9
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +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,CA6C7D"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Human-readable rendering of a {@link CheckResult}.
3
+ *
4
+ * Issues are grouped by document and carry source coordinates, so an editor or
5
+ * a terminal that linkifies `path:line:column` jumps straight to the reference.
6
+ */
7
+ /** How many real anchor names to show before summarising the rest. */
8
+ const SHOWN_ANCHORS = 4;
9
+ const location = (issue) => issue.position
10
+ ? `${issue.position.start.line}:${issue.position.start.column}`
11
+ : "";
12
+ export function formatCheckResult(result) {
13
+ const errors = result.issues.filter((i) => i.severity === "error").length;
14
+ const warnings = result.issues.length - errors;
15
+ if (!result.issues.length)
16
+ return `checked ${result.checkedReferences} references in ${result.documentCount} documents; no problems found`;
17
+ const byDocument = new Map();
18
+ for (const issue of result.issues) {
19
+ const list = byDocument.get(issue.sourcePath) ?? [];
20
+ list.push(issue);
21
+ byDocument.set(issue.sourcePath, list);
22
+ }
23
+ const width = Math.max(...result.issues.map((issue) => location(issue).length));
24
+ const lines = [];
25
+ for (const [sourcePath, issues] of byDocument) {
26
+ lines.push(sourcePath);
27
+ for (const issue of issues) {
28
+ lines.push(` ${location(issue).padStart(width)} ${issue.severity.padEnd(7)} ${issue.code.padEnd(20)} ${issue.reference}`);
29
+ lines.push(` ${" ".repeat(width)} ${issue.message}`);
30
+ if (issue.available?.length) {
31
+ const shown = issue.available.slice(0, SHOWN_ANCHORS);
32
+ const rest = issue.available.length - shown.length;
33
+ lines.push(` ${" ".repeat(width)} available: ${shown.map((id) => `#${id}`).join(", ")}${rest > 0 ? ` (+${rest} more)` : ""}`);
34
+ }
35
+ else if (issue.available) {
36
+ lines.push(` ${" ".repeat(width)} available: none`);
37
+ }
38
+ }
39
+ lines.push("");
40
+ }
41
+ const counts = [
42
+ errors ? `${errors} error${errors === 1 ? "" : "s"}` : "",
43
+ warnings ? `${warnings} warning${warnings === 1 ? "" : "s"}` : "",
44
+ ].filter(Boolean);
45
+ lines.push(`${counts.join(", ")} in ${byDocument.size} of ${result.documentCount} documents`);
46
+ return lines.join("\n");
47
+ }
48
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/node/report.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,37 @@ export type Replacement = {
7
7
  regex?: boolean;
8
8
  flags?: string;
9
9
  };
10
+ /**
11
+ * Where a table cell's text comes from.
12
+ *
13
+ * `title`, `summary` and `parent` read the row's section; the coordinate form
14
+ * reads one cell of one table inside it, counting tables after those whose
15
+ * header row names a heading in `skipTablesWithHeaders`; `extractor` names a
16
+ * function the collection config registered.
17
+ */
18
+ export type CellValue = "title" | "summary" | "parent" | {
19
+ table?: number;
20
+ row: number;
21
+ column: number;
22
+ skipTablesWithHeaders?: string[];
23
+ } | {
24
+ extractor: string;
25
+ };
26
+ /** Where a cell links to: the row's section, the heading above it, or its document. */
27
+ export type CellLink = "section" | "parent" | "document";
28
+ export type TableColumn = "title" | "link" | "summary" | {
29
+ header?: string;
30
+ value: CellValue;
31
+ link?: CellLink;
32
+ /** A CSS length written onto the header cell's `style` as `min-width`. */
33
+ minWidth?: string;
34
+ };
10
35
  export type EmbedSpec = {
11
36
  sources: string[];
12
37
  select?: SectionSelection;
13
38
  render?: "section" | {
14
39
  type: "table";
15
- columns?: ("title" | "link" | "summary")[];
40
+ columns?: TableColumn[];
16
41
  };
17
42
  replace?: Replacement[];
18
43
  };
@@ -20,11 +45,73 @@ export type EmbedContext = {
20
45
  documentId: string;
21
46
  prefix?: string;
22
47
  };
48
+ /** What a cell shows: text, and a link when the column or extractor gives one. */
49
+ export type ExtractedCell = {
50
+ text: string;
51
+ url?: string;
52
+ };
53
+ /** One row of an extracted table: the selected section and where it sits. */
54
+ export type EmbedRow = {
55
+ document: StoredDocument;
56
+ section: {
57
+ anchorId?: string;
58
+ title: string;
59
+ tree: Root;
60
+ };
61
+ /** The nearest heading above the section that is shallower than it. */
62
+ parent?: {
63
+ title: string;
64
+ anchorId?: string;
65
+ };
66
+ /** The row section's own address. */
67
+ url: string;
68
+ };
69
+ /**
70
+ * A function the collection config registers to compute a cell. `version`
71
+ * enters the library configuration, so changing what the function returns
72
+ * for the same input invalidates prepared embeds.
73
+ */
74
+ export type TableExtractor = {
75
+ version: string;
76
+ extract: (row: EmbedRow, context: {
77
+ library: Library;
78
+ documentId: string;
79
+ column: TableColumn;
80
+ }) => string | ExtractedCell | undefined;
81
+ };
23
82
  export declare function parseEmbedSpec(value: string): EmbedSpec;
83
+ /**
84
+ * Parses one fenced block, naming the document and block when it fails.
85
+ *
86
+ * A bare YAML error reads `Missing closing "quote at line 3, column 24` and
87
+ * stops there, which is a poor thing to hand an author: line 3 of which block
88
+ * of which document? Every caller that walks fenced blocks knows both, so the
89
+ * context is attached here instead of being repeated at each of them.
90
+ */
91
+ export declare function parseEmbedBlock(value: string, documentId: string, number?: number): EmbedSpec;
24
92
  export declare function resolveDocumentReference(library: Library, reference: string, from: string): {
25
93
  document: StoredDocument;
26
94
  anchor?: string;
27
95
  };
96
+ /** The default columns of a summary table, as they have always been. */
97
+ export declare const DEFAULT_TABLE_COLUMNS: TableColumn[];
98
+ /**
99
+ * One row for a selected section: what it is called, where it lives and which
100
+ * heading introduces the part of the document it sits in.
101
+ */
102
+ export declare function buildEmbedRow(document: StoredDocument, anchorId: string | undefined, tree: Root): EmbedRow;
103
+ /**
104
+ * The text and link one column shows for one row, and why it is empty when it
105
+ * is. The resolver renders the cell either way; the checker reports the
106
+ * problem, which is worded as what the column asked for and what the section
107
+ * has, so an author can tell a wrong coordinate from a missing table.
108
+ */
109
+ export declare function extractCell(library: Library, column: TableColumn, row: EmbedRow, context: EmbedContext): {
110
+ cell: ExtractedCell;
111
+ problem?: string;
112
+ };
113
+ /** The mdast table the extracted cells make, header cells carrying any width. */
114
+ export declare function buildEmbedTable(library: Library, columns: TableColumn[], rows: EmbedRow[], context: EmbedContext): Root;
28
115
  /** Resolve a configured embed from immutable persisted documents. */
29
116
  export declare function resolveEmbed(library: Library, input: EmbedSpec, context: EmbedContext): Root;
30
117
  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,EAAmB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGvE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AACD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,MAAM,CAAC,EACL,SAAS,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;KAAE,CAAA;IAC3E,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB,CAAA;AACD,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAElE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CA2DvD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAwB/C;AAwLD,qEAAqE;AACrE,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,YAAY,GACpB,IAAI,CA8HN;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,IAAI,CAmBN;AAmDD,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,EAChB,MAAM,SAAS,EACf,SAAS,YAAY,KACpB,OAAO,CAAC,IAAI,CAGZ,CAAA;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,OAAO,EAChB,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAGZ,CAAA"}
1
+ {"version":3,"file":"resolve-embed.d.ts","sourceRoot":"","sources":["../../src/node/resolve-embed.ts"],"names":[],"mappings":"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"}