@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
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/node/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,IAAI,CAAC;IACH,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChD,IACE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;QAEtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;IACrE,IAAI,OAAO,KAAK,SAAS;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACjD,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC7B,CAAC,CAAC,MAAM,mBAAmB,CAAC;gBACxB,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,EACb,GAAG,UAA2D,EAC9D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;aACpC,CAAC;YACJ,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3C,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;YACb,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,kBAAkB;SAC5C,CAAC,CACH,CAAA;IACH,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/node/cli.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,25 @@ import { type ProjectionOptions } from "../dataset.js";
2
2
  export type DatasetOptions = ProjectionOptions & {
3
3
  inputDir: string;
4
4
  outDir: string;
5
+ /**
6
+ * The collected library the ASTs came from. Its roots tell the generator
7
+ * where a document's scope segment starts, and its private documents are
8
+ * left out. Without it, the scope is the first path segment and nothing is
9
+ * private.
10
+ */
11
+ library?: string;
5
12
  documents?: string[];
6
13
  scopes?: string[];
7
14
  projectionId?: string;
8
15
  requireVersion?: boolean;
9
16
  };
10
- export declare function generateDataset({ inputDir, outDir, documents, scopes, projectionId, requireVersion, ...projection }: DatasetOptions): {
17
+ /**
18
+ * The segment that names a document's scope: the first one after the longest
19
+ * root base that prefixes the id, so `docs/ko/guide` under base `docs` and
20
+ * `terms/ko/token` under base `terms` both belong to `ko`.
21
+ */
22
+ export declare const scopeOf: (id: string, bases: readonly string[]) => string;
23
+ export declare function generateDataset({ inputDir, outDir, library, documents, scopes, projectionId, requireVersion, ...projection }: DatasetOptions): {
11
24
  schemaVersion: string;
12
25
  documentCount: number;
13
26
  documents: {
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../src/node/dataset.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAUlE,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AACD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAuB,EACvB,cAAqB,EACrB,GAAG,UAAU,EACd,EAAE,cAAc;;;;YAiBK,MAAM;cAAQ,MAAM;oBAAc,MAAM;;EA+B7D"}
1
+ {"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../src/node/dataset.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAWlE,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAyBD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,KAAG,MAM9D,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,MAAM,EACN,YAAuB,EACvB,cAAqB,EACrB,GAAG,UAAU,EACd,EAAE,cAAc;;;;YAwBK,MAAM;cAAQ,MAAM;oBAAc,MAAM;;EAiC7D"}
@@ -2,19 +2,53 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { validateAstContract } from "../internal/core/ast/validate.js";
4
4
  import { projectAst } from "../dataset.js";
5
+ import { LIBRARY_SCHEMA_VERSION } from "./library.js";
5
6
  import { hash, sourceFiles, publishDirectory, safePath, posix, writeJson, } from "./storage.js";
6
- export function generateDataset({ inputDir, outDir, documents, scopes, projectionId = "custom", requireVersion = true, ...projection }) {
7
+ /** What the generator reads from a library manifest, when it is given one. */
8
+ const readLibraryFacts = (library) => {
9
+ const manifest = JSON.parse(fs.readFileSync(path.join(library, "manifest.json"), "utf8"));
10
+ if (manifest.schemaVersion !== LIBRARY_SCHEMA_VERSION ||
11
+ !Array.isArray(manifest.roots) ||
12
+ !Array.isArray(manifest.documents))
13
+ throw new Error("cudoc: incompatible document manifest; rebuild documents");
14
+ return {
15
+ bases: manifest.roots.map((root) => root.base),
16
+ privateIds: new Set(manifest.documents
17
+ .filter((doc) => doc.private)
18
+ .map((doc) => doc.id)),
19
+ };
20
+ };
21
+ /**
22
+ * The segment that names a document's scope: the first one after the longest
23
+ * root base that prefixes the id, so `docs/ko/guide` under base `docs` and
24
+ * `terms/ko/token` under base `terms` both belong to `ko`.
25
+ */
26
+ export const scopeOf = (id, bases) => {
27
+ const base = [...bases]
28
+ .filter((candidate) => !candidate || id.startsWith(`${candidate}/`))
29
+ .sort((a, b) => b.length - a.length)[0];
30
+ const rest = base ? id.slice(base.length + 1) : id;
31
+ return rest.split("/")[0];
32
+ };
33
+ export function generateDataset({ inputDir, outDir, library, documents, scopes, projectionId = "custom", requireVersion = true, ...projection }) {
34
+ const facts = library
35
+ ? readLibraryFacts(library)
36
+ : { bases: [""], privateIds: new Set() };
7
37
  const entries = sourceFiles(inputDir, [".json"])
8
38
  .filter((file) => !["manifest.json", "meta.json"].includes(path.basename(file)))
9
39
  .map((file) => ({
10
40
  file,
11
41
  id: posix(path.relative(inputDir, file)).replace(/\.json$/, ""),
12
42
  }))
43
+ .filter((entry) => !facts.privateIds.has(entry.id))
13
44
  .filter((entry) => (!documents || documents.includes(entry.id)) &&
14
- (!scopes || scopes.includes(entry.id.split("/")[0])));
15
- for (const id of documents ?? [])
45
+ (!scopes || scopes.includes(scopeOf(entry.id, facts.bases))));
46
+ for (const id of documents ?? []) {
47
+ if (facts.privateIds.has(id))
48
+ throw new Error(`cudoc: dataset document is private: ${id}`);
16
49
  if (!entries.some((e) => e.id === id))
17
50
  throw new Error(`cudoc: dataset document missing: ${id}`);
51
+ }
18
52
  const inputs = [];
19
53
  publishDirectory(inputDir, outDir, (staging) => {
20
54
  for (const { file, id } of entries) {
@@ -38,7 +72,9 @@ export function generateDataset({ inputDir, outDir, documents, scopes, projectio
38
72
  projectionId,
39
73
  projection,
40
74
  documentCount: inputs.length,
41
- scopes: scopes ?? [...new Set(entries.map((e) => e.id.split("/")[0]))],
75
+ scopes: scopes ?? [
76
+ ...new Set(entries.map((e) => scopeOf(e.id, facts.bases))),
77
+ ],
42
78
  documents: inputs,
43
79
  });
44
80
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../../src/node/dataset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../../src/node/dataset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The small glob dialect collection options use to name files.
3
+ *
4
+ * Patterns are matched against a document's library path — its root base
5
+ * followed by its path under the root directory, in POSIX form — so one
6
+ * vocabulary serves `exclude`, `private` and any later option that names
7
+ * documents. The dialect is deliberately small: `*` and `?` within a segment,
8
+ * `**` for any number of segments, and a pattern without `/` matching a file
9
+ * or directory name anywhere. There are no brace sets, character classes or
10
+ * negations, because a mistyped pattern that silently matches nothing is
11
+ * worse than a pattern an author has to spell out.
12
+ */
13
+ /**
14
+ * Compiles one pattern. A trailing `**` also matches the directory itself, so
15
+ * a walker can prune `drafts/**` at `drafts` instead of visiting every file
16
+ * beneath it.
17
+ */
18
+ export declare function globToRegExp(pattern: string): RegExp;
19
+ /** A predicate over library paths for a list of patterns; empty lists match nothing. */
20
+ export declare function globMatcher(patterns: readonly string[] | undefined, option: string): (libraryPath: string) => boolean;
21
+ //# sourceMappingURL=glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/node/glob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BpD;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAUlC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The small glob dialect collection options use to name files.
3
+ *
4
+ * Patterns are matched against a document's library path — its root base
5
+ * followed by its path under the root directory, in POSIX form — so one
6
+ * vocabulary serves `exclude`, `private` and any later option that names
7
+ * documents. The dialect is deliberately small: `*` and `?` within a segment,
8
+ * `**` for any number of segments, and a pattern without `/` matching a file
9
+ * or directory name anywhere. There are no brace sets, character classes or
10
+ * negations, because a mistyped pattern that silently matches nothing is
11
+ * worse than a pattern an author has to spell out.
12
+ */
13
+ const escape = (value) => value.replace(/[.+^${}()|[\]\\]/g, "\\$&");
14
+ const segment = (value) => escape(value).replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]");
15
+ /**
16
+ * Compiles one pattern. A trailing `**` also matches the directory itself, so
17
+ * a walker can prune `drafts/**` at `drafts` instead of visiting every file
18
+ * beneath it.
19
+ */
20
+ export function globToRegExp(pattern) {
21
+ if (typeof pattern !== "string" || !pattern.trim())
22
+ throw new Error("cudoc: a glob pattern must be a non-empty string");
23
+ const segments = pattern
24
+ .replace(/\\/g, "/")
25
+ .replace(/^\.?\//, "")
26
+ .split("/")
27
+ .filter((part) => part !== "" && part !== ".");
28
+ if (!segments.length || segments.includes(".."))
29
+ throw new Error(`cudoc: invalid glob pattern: ${pattern}`);
30
+ if (segments.length === 1 && segments[0] !== "**")
31
+ return new RegExp(`(?:^|/)${segment(segments[0])}$`);
32
+ let source = "^";
33
+ let separator = false;
34
+ segments.forEach((part, index) => {
35
+ const last = index === segments.length - 1;
36
+ if (part === "**") {
37
+ if (index === 0)
38
+ source += last ? ".*" : "(?:.*/)?";
39
+ else
40
+ source += last ? "(?:/.*)?" : "/(?:.*/)?";
41
+ separator = false;
42
+ return;
43
+ }
44
+ if (separator)
45
+ source += "/";
46
+ source += segment(part);
47
+ separator = true;
48
+ });
49
+ return new RegExp(`${source}$`);
50
+ }
51
+ /** A predicate over library paths for a list of patterns; empty lists match nothing. */
52
+ export function globMatcher(patterns, option) {
53
+ if (patterns === undefined)
54
+ return () => false;
55
+ if (!Array.isArray(patterns) ||
56
+ patterns.some((pattern) => typeof pattern !== "string"))
57
+ throw new Error(`cudoc: ${option} must be an array of glob patterns`);
58
+ const expressions = patterns.map(globToRegExp);
59
+ return (libraryPath) => expressions.some((expression) => expression.test(libraryPath));
60
+ }
61
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/node/glob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;AAE5E,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAChC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAE9D;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAChD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrE,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAA;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI;QAC/C,OAAO,IAAI,MAAM,CAAC,UAAU,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,MAAM,GAAG,GAAG,CAAA;IAChB,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAC1C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAA;;gBAC9C,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;YAC9C,SAAS,GAAG,KAAK,CAAA;YACjB,OAAM;QACR,CAAC;QACD,IAAI,SAAS;YAAE,MAAM,IAAI,GAAG,CAAA;QAC5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;QACvB,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,WAAW,CACzB,QAAuC,EACvC,MAAc;IAEd,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAA;IAC9C,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;QAEvD,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,oCAAoC,CAAC,CAAA;IACvE,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC9C,OAAO,CAAC,WAAW,EAAE,EAAE,CACrB,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;AAClE,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import type { Root } from "mdast";
2
2
  import { type CompiledDocument } from "../markdown.js";
3
3
  import type { DocumentOptions } from "../document.js";
4
+ import type { TableExtractor } from "./resolve-embed.js";
5
+ import { type ResolvedRoot, type SourceRoot } from "./roots.js";
6
+ export type { SourceRoot, ResolvedRoot } from "./roots.js";
7
+ export { resolveRoots, documentIdOf, libraryPathOf, sourceFileOf, } from "./roots.js";
8
+ /** The manifest layout this build writes and `loadLibrary` accepts. */
9
+ export declare const LIBRARY_SCHEMA_VERSION = 2;
4
10
  export type SourceSnapshot = {
5
11
  text: string;
6
12
  hash: string;
@@ -14,11 +20,19 @@ export type SourceSnapshot = {
14
20
  };
15
21
  export type StoredDocument = {
16
22
  id: string;
23
+ /** The library path with its extension: the root base, then the path under the root. */
17
24
  sourcePath: string;
18
25
  route: string;
19
26
  tree: Root;
20
27
  source: SourceSnapshot;
21
28
  frontmatter: Record<string, unknown>;
29
+ /**
30
+ * Set when a `private` pattern matched the document. It is collected and
31
+ * checked like any other, and left out of exports and datasets.
32
+ */
33
+ private?: true;
34
+ /** Local names the document's own `import` statements bind, when it has any. */
35
+ imports?: string[];
22
36
  };
23
37
  export type DocumentCompiler = (source: string, context: {
24
38
  id: string;
@@ -30,12 +44,41 @@ export type Library = {
30
44
  documents: StoredDocument[];
31
45
  options: DocumentOptions;
32
46
  configuration: string;
33
- sourceRoot?: string;
47
+ /** Where the documents were read from. Runtime only; a loaded library has it when the caller supplies roots. */
48
+ roots?: ResolvedRoot[];
49
+ /** The base of every root, in root order, as the manifest records them. */
50
+ bases?: string[];
51
+ /** Cell extractors an embed table may name. Runtime only; their versions are in the configuration. */
52
+ extractors?: Record<string, TableExtractor>;
34
53
  compiler?: DocumentCompiler;
35
54
  asyncCompiler?: AsyncDocumentCompiler;
55
+ /** What an incremental build did. Runtime only; present when `previous` was given. */
56
+ incremental?: {
57
+ compiled: string[];
58
+ reused: string[];
59
+ };
36
60
  };
37
61
  export type BuildDocumentsOptions = DocumentOptions & {
38
- sourceRoot: string;
62
+ /** One directory at the top of the library: shorthand for `roots: [{ dir }]`. */
63
+ sourceRoot?: string;
64
+ /** Directories to collect, each under its own base. Exactly one of `sourceRoot` and `roots` is given. */
65
+ roots?: SourceRoot[];
66
+ /**
67
+ * Glob patterns, matched against library paths, for files and directories
68
+ * that are not documents at all: drafts, agent notes, work folders.
69
+ */
70
+ exclude?: string[];
71
+ /**
72
+ * Glob patterns, matched against library paths, for documents that are
73
+ * collected and checked but never exported or put in a dataset.
74
+ */
75
+ private?: string[];
76
+ /**
77
+ * Functions an embed table's `{ extractor }` column may name. Each carries
78
+ * a `version` that enters the library configuration, so prepared embeds go
79
+ * stale when an extractor's output changes.
80
+ */
81
+ extractors?: Record<string, TableExtractor>;
39
82
  outDir?: string;
40
83
  routeBase?: string;
41
84
  routeSuffix?: string;
@@ -45,12 +88,35 @@ export type BuildDocumentsOptions = DocumentOptions & {
45
88
  compiler?: DocumentCompiler;
46
89
  /** Identifies external compiler/plugins/configuration for persisted metadata. */
47
90
  compilerId?: string;
91
+ /**
92
+ * A library collected earlier. A document whose source text is unchanged
93
+ * is taken from it instead of compiled again, as long as the configuration
94
+ * hash is the same; a document that is new, changed or collected under a
95
+ * different configuration compiles as usual. The publication is complete
96
+ * either way.
97
+ */
98
+ previous?: Library;
48
99
  };
49
100
  /** Collect async framework compilers before publishing or resolving any embeds. */
50
101
  export declare function buildDocumentsAsync(options: Omit<BuildDocumentsOptions, "compiler"> & {
51
102
  compiler: AsyncDocumentCompiler;
52
103
  }): Promise<Library>;
53
104
  export declare function snapshotSource(text: string, tree: Root, format: "md" | "mdx"): SourceSnapshot;
54
- export declare function buildDocuments({ sourceRoot, outDir, compiler, compilerId, routeBase, routeSuffix, routes, ...options }: BuildDocumentsOptions): Library;
55
- export declare function loadLibrary(outDir?: string, compiler?: DocumentCompiler, sourceRoot?: string): Library;
105
+ export declare function buildDocuments({ sourceRoot, roots: givenRoots, exclude, private: privatePatterns, extractors, outDir, compiler, compilerId, routeBase, routeSuffix, routes, previous, ...options }: BuildDocumentsOptions): Library;
106
+ export type LoadLibraryOptions = {
107
+ /**
108
+ * Keep the loaded documents in memory and reuse them while `manifest.json`
109
+ * is byte-for-byte unchanged. For a server that renders from the library on
110
+ * every request; a one-off build has nothing to gain. The documents are
111
+ * shared between calls, so treat them as read-only.
112
+ */
113
+ cache?: boolean;
114
+ };
115
+ /**
116
+ * Reads a published library back. `roots` restores where the documents live
117
+ * on disk, which replacement and asset resolution need; a single directory is
118
+ * the shorthand for one root at the top. The bases given have to be the ones
119
+ * the library was collected with, because ids were derived from them.
120
+ */
121
+ export declare function loadLibrary(outDir?: string, compiler?: DocumentCompiler, roots?: string | SourceRoot[], options?: LoadLibraryOptions): Library;
56
122
  //# sourceMappingURL=library.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/node/library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/node/library.ts"],"names":[],"mappings":"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"}