livemark 0.26.0 → 0.27.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.
Files changed (49) hide show
  1. package/build/actions/config/define.d.ts +6 -0
  2. package/build/content/article.js +4 -11
  3. package/build/content-collections.js +3 -5
  4. package/build/helpers/agent-skills.d.ts +22 -0
  5. package/build/helpers/agent-skills.js +46 -0
  6. package/build/helpers/agent-skills.unit.d.ts +1 -0
  7. package/build/helpers/agent-skills.unit.js +49 -0
  8. package/build/helpers/article.d.ts +13 -0
  9. package/build/helpers/article.js +17 -1
  10. package/build/helpers/head.d.ts +7 -2
  11. package/build/helpers/head.js +13 -2
  12. package/build/helpers/head.unit.js +4 -2
  13. package/build/helpers/llms.d.ts +33 -0
  14. package/build/helpers/llms.js +72 -0
  15. package/build/helpers/llms.unit.d.ts +1 -0
  16. package/build/helpers/llms.unit.js +98 -0
  17. package/build/helpers/resolve-includes.d.ts +1 -1
  18. package/build/helpers/resolve-includes.js +8 -8
  19. package/build/helpers/resolve-includes.unit.js +23 -23
  20. package/build/models/config.d.ts +20 -0
  21. package/build/models/config.js +8 -1
  22. package/build/plugins/vite-agents.d.ts +17 -0
  23. package/build/plugins/vite-agents.js +110 -0
  24. package/build/plugins/vite-agents.unit.d.ts +1 -0
  25. package/build/plugins/vite-agents.unit.js +20 -0
  26. package/build/plugins/vite-robots.d.ts +4 -2
  27. package/build/plugins/vite-robots.js +15 -2
  28. package/build/plugins/vite-robots.unit.js +5 -1
  29. package/build/vite.config.js +3 -1
  30. package/package.json +4 -2
  31. package/skills/livemark-configuration/SKILL.md +4 -0
  32. package/skills/livemark-customization/SKILL.md +1 -0
  33. package/source/content/article.ts +8 -13
  34. package/source/content-collections.ts +2 -5
  35. package/source/helpers/agent-skills.ts +59 -0
  36. package/source/helpers/agent-skills.unit.ts +56 -0
  37. package/source/helpers/article.ts +17 -0
  38. package/source/helpers/head.ts +12 -1
  39. package/source/helpers/head.unit.ts +3 -1
  40. package/source/helpers/llms.ts +109 -0
  41. package/source/helpers/llms.unit.ts +115 -0
  42. package/source/helpers/resolve-includes.ts +12 -12
  43. package/source/helpers/resolve-includes.unit.ts +46 -22
  44. package/source/models/config.ts +11 -0
  45. package/source/plugins/vite-agents.ts +137 -0
  46. package/source/plugins/vite-agents.unit.ts +26 -0
  47. package/source/plugins/vite-robots.ts +18 -3
  48. package/source/plugins/vite-robots.unit.ts +7 -0
  49. package/source/vite.config.ts +2 -0
@@ -0,0 +1,72 @@
1
+ import { buildArticleTree, compareArticleDate, compareArticleOrder, flattenArticleTree, } from "./article.js";
2
+ import { partitionBySection } from "./section.js";
3
+ /** Render `llms.txt`: the site title and description, then one Markdown link
4
+ * per article twin, grouped under each routed section in sidebar order. */
5
+ export function renderLlmsText(props) {
6
+ const lines = [`# ${props.config.title}`, "", `> ${props.config.description}`];
7
+ for (const group of groupArticles(props)) {
8
+ lines.push("", `## ${group.title}`, "", ...renderLinks(props.config, group.articles));
9
+ }
10
+ return `${lines.join("\n")}\n`;
11
+ }
12
+ /** Render the Markdown twin of a section's index page (a blog or changelog
13
+ * listing), which has no article of its own: links to the section's articles. */
14
+ export function renderSectionIndex(props) {
15
+ const group = groupArticles(props).find(g => g.prefix === props.section.prefix);
16
+ const lines = [
17
+ `# ${props.section.title}`,
18
+ "",
19
+ ...renderLinks(props.config, group?.articles ?? []),
20
+ ];
21
+ return `${lines.join("\n")}\n`;
22
+ }
23
+ /** Render the Markdown twin of an article: its title and description as the
24
+ * rendered page shows them, then the body without its own leading h1. */
25
+ export function renderMarkdownTwin(props) {
26
+ const article = props.article;
27
+ const parts = [`# ${article.title}`];
28
+ if (article.description)
29
+ parts.push(`> ${article.description}`);
30
+ parts.push(stripLeadingH1(props.content).trim());
31
+ return `${parts.join("\n\n")}\n`;
32
+ }
33
+ /** Path of an article's Markdown twin inside the build output (no base). */
34
+ export function buildTwinFileName(path) {
35
+ return `${path.replace(/^\//, "")}index.md`;
36
+ }
37
+ /** Drop a leading h1 so a title set by frontmatter or a patch is not shown twice */
38
+ export function stripLeadingH1(content) {
39
+ return content.replace(/^[ \t]*#\s+[^\n]*\n+/, "");
40
+ }
41
+ function buildTwinUrl(config, path) {
42
+ const host = config.site?.replace(/\/+$/, "") ?? "";
43
+ return `${host}${config.base ?? ""}${path}index.md`;
44
+ }
45
+ function groupArticles(props) {
46
+ const sections = props.config.sections?.filter((s) => s.type !== "custom") ?? [];
47
+ const buckets = partitionBySection([...props.articles].sort(compareArticleOrder), sections);
48
+ const groups = [
49
+ ...sections.map(s => ({
50
+ prefix: s.prefix,
51
+ title: s.title,
52
+ dated: s.type !== "article",
53
+ })),
54
+ { prefix: "__default__", title: sections.length ? "Other" : "Pages", dated: false },
55
+ ];
56
+ return groups.flatMap(group => {
57
+ const bucket = buckets.get(group.prefix);
58
+ if (!bucket?.length)
59
+ return [];
60
+ const articles = group.dated
61
+ ? [...bucket].sort(compareArticleDate)
62
+ : flattenArticleTree(buildArticleTree(bucket)).flatMap(path => bucket.find(a => a.path === path) ?? []);
63
+ return [{ prefix: group.prefix, title: group.title, articles }];
64
+ });
65
+ }
66
+ function renderLinks(config, articles) {
67
+ return articles.map(article => {
68
+ const link = `[${article.title}](${buildTwinUrl(config, article.path)})`;
69
+ return article.description ? `- ${link}: ${article.description}` : `- ${link}`;
70
+ });
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL2xsbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFXakQ7NEVBQzRFO0FBQzVFLE1BQU0sVUFBVSxjQUFjLENBQUMsS0FHOUI7SUFDQyxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDOUUsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUN2RixDQUFDO0lBQ0QsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtBQUNoQyxDQUFDO0FBRUQ7a0ZBQ2tGO0FBQ2xGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUlsQztJQUNDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDL0UsTUFBTSxLQUFLLEdBQUc7UUFDWixLQUFLLEtBQUssQ0FBQyxPQUFPLENB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QUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDdEMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FDaEQsQ0FBQTtRQUNMLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDakUsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBcUMsRUFBRSxRQUF1QjtJQUNqRixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUE7UUFDeEUsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUE7SUFDaEYsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IFJvdXRlZFNlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHtcbiAgYnVpbGRBcnRpY2xlVHJlZSxcbiAgY29tcGFyZUFydGljbGVEYXRlLFxuICBjb21wYXJlQXJ0aWNsZU9yZGVyLFxuICBmbGF0dGVuQXJ0aWNsZVRyZWUsXG59IGZyb20gXCIuL2FydGljbGUudHNcIlxuaW1wb3J0IHsgcGFydGl0aW9uQnlTZWN0aW9uIH0gZnJvbSBcIi4vc2VjdGlvbi50c1wiXG5cbi8qKiBUaGUgc2xpY2Ugb2YgYSBidWlsdCBhcnRpY2xlIHRoYXQgYWdlbnQtZmFjaW5nIGZpbGVzIGFyZSByZW5kZXJlZCBmcm9tLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMbG1zQXJ0aWNsZSB7XG4gIHBhdGg6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIG9yZGVyPzogbnVtYmVyXG4gIGRhdGU/OiBzdHJpbmdcbn1cblxuLyoqIFJlbmRlciBgbGxtcy50eHRgOiB0aGUgc2l0ZSB0aXRsZSBhbmQgZGVzY3JpcHRpb24sIHRoZW4gb25lIE1hcmtkb3duIGxpbmtcbiAqICBwZXIgYXJ0aWNsZSB0d2luLCBncm91cGVkIHVuZGVyIGVhY2ggcm91dGVkIHNlY3Rpb24gaW4gc2lkZWJhciBvcmRlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJMbG1zVGV4dChwcm9wczoge1xuICBjb25maWc6IFBpY2s8Q29uZmlnLCBcInRpdGxlXCIgfCBcImRlc2NyaXB0aW9uXCIgfCBcInNpdGVcIiB8IFwiYmFzZVwiIHwgXCJzZWN0aW9uc1wiPlxuICBhcnRpY2xlczogTGxtc0FydGljbGVbXVxufSkge1xuICBjb25zdCBsaW5lcyA9IFtgIyAke3Byb3BzLmNvbmZpZy50aXRsZX1gLCBcIlwiLCBgPiAke3Byb3BzLmNvbmZpZy5kZXNjcmlwdGlvbn1gXVxuICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3VwQXJ0aWNsZXMocHJvcHMpKSB7XG4gICAgbGluZXMucHVzaChcIlwiLCBgIyMgJHtncm91cC50aXRsZX1gLCBcIlwiLCAuLi5yZW5kZXJMaW5rcyhwcm9wcy5jb25maWcsIGdyb3VwLmFydGljbGVzKSlcbiAgfVxuICByZXR1cm4gYCR7bGluZXMuam9pbihcIlxcblwiKX1cXG5gXG59XG5cbi8qKiBSZW5kZXIgdGhlIE1hcmtkb3duIHR3aW4gb2YgYSBzZWN0aW9uJ3MgaW5kZXggcGFnZSAoYSBibG9nIG9yIGNoYW5nZWxvZ1xuICogIGxpc3RpbmcpLCB3aGljaCBoYXMgbm8gYXJ0aWNsZSBvZiBpdHMgb3duOiBsaW5rcyB0byB0aGUgc2VjdGlvbidzIGFydGljbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNlY3Rpb25JbmRleChwcm9wczoge1xuICBjb25maWc6IFBpY2s8Q29uZmlnLCBcInNpdGVcIiB8IFwiYmFzZVwiIHwgXCJzZWN0aW9uc1wiPlxuICBzZWN0aW9uOiBSb3V0ZWRTZWN0aW9uXG4gIGFydGljbGVzOiBMbG1zQXJ0aWNsZVtdXG59KSB7XG4gIGNvbnN0IGdyb3VwID0gZ3JvdXBBcnRpY2xlcyhwcm9wcykuZmluZChnID0+IGcucHJlZml4ID09PSBwcm9wcy5zZWN0aW9uLnByZWZpeClcbiAgY29uc3QgbGluZXMgPSBbXG4gICAgYCMgJHtwcm9wcy5zZWN0aW9uLnRpdGxlfWAsXG4gICAgXCJcIixcbiAgICAuLi5yZW5kZXJMaW5rcyhwcm9wcy5jb25maWcsIGdyb3VwPy5hcnRpY2xlcyA/PyBbXSksXG4gIF1cbiAgcmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuYFxufVxuXG4vKiogUmVuZGVyIHRoZSBNYXJrZG93biB0d2luIG9mIGFuIGFydGljbGU6IGl0cyB0aXRsZSBhbmQgZGVzY3JpcHRpb24gYXMgdGhlXG4gKiAgcmVuZGVyZWQgcGFnZSBzaG93cyB0aGVtLCB0aGVuIHRoZSBib2R5IHdpdGhvdXQgaXRzIG93biBsZWFkaW5nIGgxLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1hcmtkb3duVHdpbihwcm9wczogeyBhcnRpY2xlOiBMbG1zQXJ0aWNsZTsgY29udGVudDogc3RyaW5nIH0pIHtcbiAgY29uc3QgYXJ0aWNsZSA9IHByb3BzLmFydGljbGVcbiAgY29uc3QgcGFydHMgPSBbYCMgJHthcnRpY2xlLnRpdGxlfWBdXG4gIGlmIChhcnRpY2xlLmRlc2NyaXB0aW9uKSBwYXJ0cy5wdXNoKGA+ICR7YXJ0aWNsZS5kZXNjcmlwdGlvbn1gKVxuICBwYXJ0cy5wdXNoKHN0cmlwTGVhZGluZ0gxKHByb3BzLmNvbnRlbnQpLnRyaW0oKSlcbiAgcmV0dXJuIGAke3BhcnRzLmpvaW4oXCJcXG5cXG5cIil9XFxuYFxufVxuXG4vKiogUGF0aCBvZiBhbiBhcnRpY2xlJ3MgTWFya2Rvd24gdHdpbiBpbnNpZGUgdGhlIGJ1aWxkIG91dHB1dCAobm8gYmFzZSkuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUd2luRmlsZU5hbWUocGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiBgJHtwYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKX1pbmRleC5tZGBcbn1cblxuLyoqIERyb3AgYSBsZWFkaW5nIGgxIHNvIGEgdGl0bGUgc2V0IGJ5IGZyb250bWF0dGVyIG9yIGEgcGF0Y2ggaXMgbm90IHNob3duIHR3aWNlICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBMZWFkaW5nSDEoY29udGVudDogc3RyaW5nKSB7XG4gIHJldHVybiBjb250ZW50LnJlcGxhY2UoL15bIFxcdF0qI1xccytbXlxcbl0qXFxuKy8sIFwiXCIpXG59XG5cbmZ1bmN0aW9uIGJ1aWxkVHdpblVybChjb25maWc6IFBpY2s8Q29uZmlnLCBcInNpdGVcIiB8IFwiYmFzZVwiPiwgcGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGhvc3QgPSBjb25maWcuc2l0ZT8ucmVwbGFjZSgvXFwvKyQvLCBcIlwiKSA/PyBcIlwiXG4gIHJldHVybiBgJHtob3N0fSR7Y29uZmlnLmJhc2UgPz8gXCJcIn0ke3BhdGh9aW5kZXgubWRgXG59XG5cbmZ1bmN0aW9uIGdyb3VwQXJ0aWNsZXMocHJvcHM6IHtcbiAgY29uZmlnOiBQaWNrPENvbmZpZywgXCJzZWN0aW9uc1wiPlxuICBhcnRpY2xlczogTGxtc0FydGljbGVbXVxufSkge1xuICBjb25zdCBzZWN0aW9ucyA9XG4gICAgcHJvcHMuY29uZmlnLnNlY3Rpb25zPy5maWx0ZXIoKHMpOiBzIGlzIFJvdXRlZFNlY3Rpb24gPT4gcy50eXBlICE9PSBcImN1c3RvbVwiKSA/PyBbXVxuICBjb25zdCBidWNrZXRzID0gcGFydGl0aW9uQnlTZWN0aW9uKFxuICAgIFsuLi5wcm9wcy5hcnRpY2xlc10uc29ydChjb21wYXJlQXJ0aWNsZU9yZGVyKSxcbiAgICBzZWN0aW9ucyxcbiAgKVxuICBjb25zdCBncm91cHMgPSBbXG4gICAgLi4uc2VjdGlvbnMubWFwKHMgPT4gKHtcbiAgICAgIHByZWZpeDogcy5wcmVmaXgsXG4gICAgICB0aXRsZTogcy50aXRsZSxcbiAgICAgIGRhdGVkOiBzLnR5cGUgIT09IFwiYXJ0aWNsZVwiLFxuICAgIH0pKSxcbiAgICB7IHByZWZpeDogXCJfX2RlZmF1bHRfX1wiLCB0aXRsZTogc2VjdGlvbnMubGVuZ3RoID8gXCJPdGhlclwiIDogXCJQYWdlc1wiLCBkYXRlZDogZmFsc2UgfSxcbiAgXVxuICByZXR1cm4gZ3JvdXBzLmZsYXRNYXAoZ3JvdXAgPT4ge1xuICAgIGNvbnN0IGJ1Y2tldCA9IGJ1Y2tldHMuZ2V0KGdyb3VwLnByZWZpeClcbiAgICBpZiAoIWJ1Y2tldD8ubGVuZ3RoKSByZXR1cm4gW11cbiAgICBjb25zdCBhcnRpY2xlcyA9IGdyb3VwLmRhdGVkXG4gICAgICA/IFsuLi5idWNrZXRdLnNvcnQoY29tcGFyZUFydGljbGVEYXRlKVxuICAgICAgOiBmbGF0dGVuQXJ0aWNsZVRyZWUoYnVpbGRBcnRpY2xlVHJlZShidWNrZXQpKS5mbGF0TWFwKFxuICAgICAgICAgIHBhdGggPT4gYnVja2V0LmZpbmQoYSA9PiBhLnBhdGggPT09IHBhdGgpID8/IFtdLFxuICAgICAgICApXG4gICAgcmV0dXJuIFt7IHByZWZpeDogZ3JvdXAucHJlZml4LCB0aXRsZTogZ3JvdXAudGl0bGUsIGFydGljbGVzIH1dXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlbmRlckxpbmtzKGNvbmZpZzogUGljazxDb25maWcsIFwic2l0ZVwiIHwgXCJiYXNlXCI+LCBhcnRpY2xlczogTGxtc0FydGljbGVbXSkge1xuICByZXR1cm4gYXJ0aWNsZXMubWFwKGFydGljbGUgPT4ge1xuICAgIGNvbnN0IGxpbmsgPSBgWyR7YXJ0aWNsZS50aXRsZX1dKCR7YnVpbGRUd2luVXJsKGNvbmZpZywgYXJ0aWNsZS5wYXRoKX0pYFxuICAgIHJldHVybiBhcnRpY2xlLmRlc2NyaXB0aW9uID8gYC0gJHtsaW5rfTogJHthcnRpY2xlLmRlc2NyaXB0aW9ufWAgOiBgLSAke2xpbmt9YFxuICB9KVxufVxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,98 @@
1
+ import { describe, expect, it } from "vite-plus/test";
2
+ import { buildTwinFileName, renderLlmsText, renderMarkdownTwin, renderSectionIndex, } from "./llms.js";
3
+ const config = { title: "Docs", description: "Blurb" };
4
+ describe("renderLlmsText", () => {
5
+ it("lists articles in sidebar order under a single heading without sections", () => {
6
+ const text = renderLlmsText({
7
+ config,
8
+ articles: [
9
+ { path: "/guide/", title: "Guide", order: 2 },
10
+ { path: "/intro/", title: "Intro", description: "Start here", order: 1 },
11
+ { path: "/guide/deep/", title: "Deep" },
12
+ ],
13
+ });
14
+ expect(text).toBe([
15
+ "# Docs",
16
+ "",
17
+ "> Blurb",
18
+ "",
19
+ "## Pages",
20
+ "",
21
+ "- [Intro](/intro/index.md): Start here",
22
+ "- [Guide](/guide/index.md)",
23
+ "- [Deep](/guide/deep/index.md)",
24
+ "",
25
+ ].join("\n"));
26
+ });
27
+ it("groups by routed section, newest first in a blog, with absolute urls", () => {
28
+ const text = renderLlmsText({
29
+ config: {
30
+ ...config,
31
+ site: "https://example.com/",
32
+ base: "/repo",
33
+ sections: [
34
+ { title: "Docs", prefix: "/", type: "article", position: "header" },
35
+ { title: "Blog", prefix: "/blog/", type: "blog", position: "header" },
36
+ {
37
+ title: "GitHub",
38
+ url: "https://github.com",
39
+ type: "custom",
40
+ position: "header",
41
+ },
42
+ ],
43
+ },
44
+ articles: [
45
+ { path: "/blog/old/", title: "Old", date: "2026-01-01" },
46
+ { path: "/intro/", title: "Intro" },
47
+ { path: "/blog/new/", title: "New", date: "2026-02-01" },
48
+ ],
49
+ });
50
+ expect(text).toContain([
51
+ "## Docs",
52
+ "",
53
+ "- [Intro](https://example.com/repo/intro/index.md)",
54
+ "",
55
+ "## Blog",
56
+ "",
57
+ "- [New](https://example.com/repo/blog/new/index.md)",
58
+ "- [Old](https://example.com/repo/blog/old/index.md)",
59
+ ].join("\n"));
60
+ expect(text).not.toContain("GitHub");
61
+ });
62
+ });
63
+ describe("renderSectionIndex", () => {
64
+ it("lists only the section's articles, newest first", () => {
65
+ const blog = {
66
+ title: "Blog",
67
+ prefix: "/blog/",
68
+ type: "blog",
69
+ position: "header",
70
+ };
71
+ const text = renderSectionIndex({
72
+ config: { sections: [blog] },
73
+ section: blog,
74
+ articles: [
75
+ { path: "/intro/", title: "Intro" },
76
+ { path: "/blog/old/", title: "Old", date: "2026-01-01" },
77
+ { path: "/blog/new/", title: "New", date: "2026-02-01", description: "Fresh" },
78
+ ],
79
+ });
80
+ expect(text).toBe("# Blog\n\n- [New](/blog/new/index.md): Fresh\n- [Old](/blog/old/index.md)\n");
81
+ });
82
+ });
83
+ describe("renderMarkdownTwin", () => {
84
+ it("leads with the title and description instead of the body's own h1", () => {
85
+ const twin = renderMarkdownTwin({
86
+ article: { path: "/intro/", title: "Introduction", description: "Start here" },
87
+ content: "# Livemark\n\nBody text\n",
88
+ });
89
+ expect(twin).toBe("# Introduction\n\n> Start here\n\nBody text\n");
90
+ });
91
+ });
92
+ describe("buildTwinFileName", () => {
93
+ it("places the twin beside the page's index.html", () => {
94
+ expect(buildTwinFileName("/")).toBe("index.md");
95
+ expect(buildTwinFileName("/guide/deep/")).toBe("guide/deep/index.md");
96
+ });
97
+ });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtcy51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvbGxtcy51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSxXQUFXLENBQUE7QUFFbEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUV0RCxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLEVBQUUsQ0FBQyx5RUFBeUUsRUFBRSxHQUFHLEVBQUU7UUFDakYsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDO1lBQzFCLE1BQU07WUFDTixRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUN4RSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUN4QztTQUNGLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2Y7WUFDRSxRQUFRO1lBQ1IsRUFBRTtZQUNGLFNBQVM7WUFDVCxFQUFFO1lBQ0YsVUFBVTtZQUNWLEVBQUU7WUFDRix3Q0FBd0M7WUFDeEMsNEJBQTRCO1lBQzVCLGdDQUFnQztZQUNoQyxFQUFFO1NBQ0gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FBQTtJQUNILENB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QVksRUFBRTtZQUM5RSxPQUFPLEVBQUUsMkJBQTJCO1NBQ3JDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQTtJQUNwRSxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMvQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUN2RSxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHR5cGUgeyBSb3V0ZWRTZWN0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9zZWN0aW9uLnRzXCJcbmltcG9ydCB7XG4gIGJ1aWxkVHdpbkZpbGVOYW1lLFxuICByZW5kZXJMbG1zVGV4dCxcbiAgcmVuZGVyTWFya2Rvd25Ud2luLFxuICByZW5kZXJTZWN0aW9uSW5kZXgsXG59IGZyb20gXCIuL2xsbXMudHNcIlxuXG5jb25zdCBjb25maWcgPSB7IHRpdGxlOiBcIkRvY3NcIiwgZGVzY3JpcHRpb246IFwiQmx1cmJcIiB9XG5cbmRlc2NyaWJlKFwicmVuZGVyTGxtc1RleHRcIiwgKCkgPT4ge1xuICBpdChcImxpc3RzIGFydGljbGVzIGluIHNpZGViYXIgb3JkZXIgdW5kZXIgYSBzaW5nbGUgaGVhZGluZyB3aXRob3V0IHNlY3Rpb25zXCIsICgpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gcmVuZGVyTGxtc1RleHQoe1xuICAgICAgY29uZmlnLFxuICAgICAgYXJ0aWNsZXM6IFtcbiAgICAgICAgeyBwYXRoOiBcIi9ndWlkZS9cIiwgdGl0bGU6IFwiR3VpZGVcIiwgb3JkZXI6IDIgfSxcbiAgICAgICAgeyBwYXRoOiBcIi9pbnRyby9cIiwgdGl0bGU6IFwiSW50cm9cIiwgZGVzY3JpcHRpb246IFwiU3RhcnQgaGVyZVwiLCBvcmRlcjogMSB9LFxuICAgICAgICB7IHBhdGg6IFwiL2d1aWRlL2RlZXAvXCIsIHRpdGxlOiBcIkRlZXBcIiB9LFxuICAgICAgXSxcbiAgICB9KVxuICAgIGV4cGVjdCh0ZXh0KS50b0JlKFxuICAgICAgW1xuICAgICAgICBcIiMgRG9jc1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIj4gQmx1cmJcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIjIyBQYWdlc1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIi0gW0ludHJvXSgvaW50cm8vaW5kZXgubWQpOiBTdGFydCBoZXJlXCIsXG4gICAgICAgIFwiLSBbR3VpZGVdKC9ndWlkZS9pbmRleC5tZClcIixcbiAgICAgICAgXCItIFtEZWVwXSgvZ3VpZGUvZGVlcC9pbmRleC5tZClcIixcbiAgICAgICAgXCJcIixcbiAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJncm91cHMgYnkgcm91dGVkIHNlY3Rpb24sIG5ld2VzdCBmaXJzdCBpbiBhIGJsb2csIHdpdGggYWJzb2x1dGUgdXJsc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IHJlbmRlckxsbXNUZXh0KHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHNpdGU6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9cIixcbiAgICAgICAgYmFzZTogXCIvcmVwb1wiLFxuICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgIHsgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiLCB0eXBlOiBcImFydGljbGVcIiwgcG9zaXRpb246IFwiaGVhZGVyXCIgfSxcbiAgICAgICAgICB7IHRpdGxlOiBcIkJsb2dcIiwgcHJlZml4OiBcIi9ibG9nL1wiLCB0eXBlOiBcImJsb2dcIiwgcG9zaXRpb246IFwiaGVhZGVyXCIgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogXCJHaXRIdWJcIixcbiAgICAgICAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb21cIixcbiAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGFydGljbGVzOiBbXG4gICAgICAgIHsgcGF0aDogXCIvYmxvZy9vbGQvXCIsIHRpdGxlOiBcIk9sZFwiLCBkYXRlOiBcIjIwMjYtMDEtMDFcIiB9LFxuICAgICAgICB7IHBhdGg6IFwiL2ludHJvL1wiLCB0aXRsZTogXCJJbnRyb1wiIH0sXG4gICAgICAgIHsgcGF0aDogXCIvYmxvZy9uZXcvXCIsIHRpdGxlOiBcIk5ld1wiLCBkYXRlOiBcIjIwMjYtMDItMDFcIiB9LFxuICAgICAgXSxcbiAgICB9KVxuICAgIGV4cGVjdCh0ZXh0KS50b0NvbnRhaW4oXG4gICAgICBbXG4gICAgICAgIFwiIyMgRG9jc1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIi0gW0ludHJvXShodHRwczovL2V4YW1wbGUuY29tL3JlcG8vaW50cm8vaW5kZXgubWQpXCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwiIyMgQmxvZ1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIi0gW05ld10oaHR0cHM6Ly9leGFtcGxlLmNvbS9yZXBvL2Jsb2cvbmV3L2luZGV4Lm1kKVwiLFxuICAgICAgICBcIi0gW09sZF0oaHR0cHM6Ly9leGFtcGxlLmNvbS9yZXBvL2Jsb2cvb2xkL2luZGV4Lm1kKVwiLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgIClcbiAgICBleHBlY3QodGV4dCkubm90LnRvQ29udGFpbihcIkdpdEh1YlwiKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJyZW5kZXJTZWN0aW9uSW5kZXhcIiwgKCkgPT4ge1xuICBpdChcImxpc3RzIG9ubHkgdGhlIHNlY3Rpb24ncyBhcnRpY2xlcywgbmV3ZXN0IGZpcnN0XCIsICgpID0+IHtcbiAgICBjb25zdCBibG9nOiBSb3V0ZWRTZWN0aW9uID0ge1xuICAgICAgdGl0bGU6IFwiQmxvZ1wiLFxuICAgICAgcHJlZml4OiBcIi9ibG9nL1wiLFxuICAgICAgdHlwZTogXCJibG9nXCIsXG4gICAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IHJlbmRlclNlY3Rpb25JbmRleCh7XG4gICAgICBjb25maWc6IHsgc2VjdGlvbnM6IFtibG9nXSB9LFxuICAgICAgc2VjdGlvbjogYmxvZyxcbiAgICAgIGFydGljbGVzOiBbXG4gICAgICAgIHsgcGF0aDogXCIvaW50cm8vXCIsIHRpdGxlOiBcIkludHJvXCIgfSxcbiAgICAgICAgeyBwYXRoOiBcIi9ibG9nL29sZC9cIiwgdGl0bGU6IFwiT2xkXCIsIGRhdGU6IFwiMjAyNi0wMS0wMVwiIH0sXG4gICAgICAgIHsgcGF0aDogXCIvYmxvZy9uZXcvXCIsIHRpdGxlOiBcIk5ld1wiLCBkYXRlOiBcIjIwMjYtMDItMDFcIiwgZGVzY3JpcHRpb246IFwiRnJlc2hcIiB9LFxuICAgICAgXSxcbiAgICB9KVxuICAgIGV4cGVjdCh0ZXh0KS50b0JlKFxuICAgICAgXCIjIEJsb2dcXG5cXG4tIFtOZXddKC9ibG9nL25ldy9pbmRleC5tZCk6IEZyZXNoXFxuLSBbT2xkXSgvYmxvZy9vbGQvaW5kZXgubWQpXFxuXCIsXG4gICAgKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJyZW5kZXJNYXJrZG93blR3aW5cIiwgKCkgPT4ge1xuICBpdChcImxlYWRzIHdpdGggdGhlIHRpdGxlIGFuZCBkZXNjcmlwdGlvbiBpbnN0ZWFkIG9mIHRoZSBib2R5J3Mgb3duIGgxXCIsICgpID0+IHtcbiAgICBjb25zdCB0d2luID0gcmVuZGVyTWFya2Rvd25Ud2luKHtcbiAgICAgIGFydGljbGU6IHsgcGF0aDogXCIvaW50cm8vXCIsIHRpdGxlOiBcIkludHJvZHVjdGlvblwiLCBkZXNjcmlwdGlvbjogXCJTdGFydCBoZXJlXCIgfSxcbiAgICAgIGNvbnRlbnQ6IFwiIyBMaXZlbWFya1xcblxcbkJvZHkgdGV4dFxcblwiLFxuICAgIH0pXG4gICAgZXhwZWN0KHR3aW4pLnRvQmUoXCIjIEludHJvZHVjdGlvblxcblxcbj4gU3RhcnQgaGVyZVxcblxcbkJvZHkgdGV4dFxcblwiKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJidWlsZFR3aW5GaWxlTmFtZVwiLCAoKSA9PiB7XG4gIGl0KFwicGxhY2VzIHRoZSB0d2luIGJlc2lkZSB0aGUgcGFnZSdzIGluZGV4Lmh0bWxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChidWlsZFR3aW5GaWxlTmFtZShcIi9cIikpLnRvQmUoXCJpbmRleC5tZFwiKVxuICAgIGV4cGVjdChidWlsZFR3aW5GaWxlTmFtZShcIi9ndWlkZS9kZWVwL1wiKSkudG9CZShcImd1aWRlL2RlZXAvaW5kZXgubWRcIilcbiAgfSlcbn0pXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  /** Resolves ::include{file="..."} directives by replacing them with referenced file contents */
2
- export declare function resolveIncludes(content: string, filePath: string, depth?: number): string;
2
+ export declare function resolveIncludes(content: string, filePath: string, depth?: number): Promise<string>;
@@ -1,4 +1,4 @@
1
- import { readFileSync } from "node:fs";
1
+ import { readFile } from "node:fs/promises";
2
2
  import { dirname, extname, resolve } from "node:path";
3
3
  const INCLUDE_RE = /^::include\{(.+)\}$/;
4
4
  const FRONTMATTER_RE = /^---\n[\s\S]*?\n---\n?/;
@@ -52,14 +52,14 @@ function parseAttributes(raw) {
52
52
  }
53
53
  return attrs;
54
54
  }
55
- function resolveDirective(rawAttrs, fileDir, depth) {
55
+ async function resolveDirective(rawAttrs, fileDir, depth) {
56
56
  const attrs = parseAttributes(rawAttrs);
57
57
  const file = attrs.file;
58
58
  if (!file)
59
59
  return undefined;
60
60
  const absolutePath = resolve(fileDir, file);
61
61
  try {
62
- let included = readFileSync(absolutePath, "utf-8");
62
+ let included = await readFile(absolutePath, "utf-8");
63
63
  const ext = extname(file).toLowerCase();
64
64
  const lang = extToLang[ext];
65
65
  if (lang && !file.endsWith(".md")) {
@@ -76,7 +76,7 @@ function resolveDirective(rawAttrs, fileDir, depth) {
76
76
  }
77
77
  }
78
78
  /** Resolves ::include{file="..."} directives by replacing them with referenced file contents */
79
- export function resolveIncludes(content, filePath, depth = 0) {
79
+ export async function resolveIncludes(content, filePath, depth = 0) {
80
80
  if (depth > 5)
81
81
  return content;
82
82
  const fileDir = dirname(filePath);
@@ -101,13 +101,13 @@ export function resolveIncludes(content, filePath, depth = 0) {
101
101
  }
102
102
  const includeMatch = INCLUDE_RE.exec(line);
103
103
  if (includeMatch) {
104
- const resolved = resolveDirective(includeMatch[1], fileDir, depth);
105
- result.push(resolved ?? line);
104
+ const directive = resolveDirective(includeMatch[1], fileDir, depth);
105
+ result.push(directive.then(resolved => resolved ?? line));
106
106
  }
107
107
  else {
108
108
  result.push(line);
109
109
  }
110
110
  }
111
- return result.join("\n");
111
+ return (await Promise.all(result)).join("\n");
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3Jlc29sdmUtaW5jbHVkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFckQsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUE7QUFDeEMsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUE7QUFFakMsTUFBTSxTQUFTLEdBQTJCO0lBQ3hDLEtBQUssRUFBRSxZQUFZO0lBQ25CLE1BQU0sRUFBRSxLQUFLO0lBQ2IsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLEtBQUs7SUFDYixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxNQUFNO0lBQ2IsS0FBSyxFQUFFLElBQUk7SUFDWCxLQUFLLEVBQUUsTUFBTTtJQUNiLE9BQU8sRUFBRSxNQUFNO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsT0FBTztJQUNqQixJQUFJLEVBQUUsR0FBRztJQUNULE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLEdBQUc7SUFDVCxLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxLQUFLO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixPQUFPLEVBQUUsTUFBTTtJQUNmLE9BQU8sRUFBRSxNQUFNO0lBQ2YsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsTUFBTTtJQUNkLE9BQU8sRUFBRSxNQUFNO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsS0FB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aW1wb3J0IHsgZGlybmFtZSwgZXh0bmFtZSwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuXG5jb25zdCBJTkNMVURFX1JFID0gL146OmluY2x1ZGVcXHsoLispXFx9JC9cbmNvbnN0IEZST05UTUFUVEVSX1JFID0gL14tLS1cXG5bXFxzXFxTXSo/XFxuLS0tXFxuPy9cbmNvbnN0IEZFTkNFX1JFID0gL14oYHszLH18fnszLH0pL1xuXG5jb25zdCBleHRUb0xhbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiLnRzXCI6IFwidHlwZXNjcmlwdFwiLFxuICBcIi50c3hcIjogXCJ0c3hcIixcbiAgXCIuanNcIjogXCJqYXZhc2NyaXB0XCIsXG4gIFwiLmpzeFwiOiBcImpzeFwiLFxuICBcIi5weVwiOiBcInB5dGhvblwiLFxuICBcIi5yc1wiOiBcInJ1c3RcIixcbiAgXCIuZ29cIjogXCJnb1wiLFxuICBcIi5yYlwiOiBcInJ1YnlcIixcbiAgXCIuamF2YVwiOiBcImphdmFcIixcbiAgXCIua3RcIjogXCJrb3RsaW5cIixcbiAgXCIuc3dpZnRcIjogXCJzd2lmdFwiLFxuICBcIi5jXCI6IFwiY1wiLFxuICBcIi5jcHBcIjogXCJjcHBcIixcbiAgXCIuaFwiOiBcImNcIixcbiAgXCIuY3NcIjogXCJjc2hhcnBcIixcbiAgXCIuY3NzXCI6IFwiY3NzXCIsXG4gIFwiLnNjc3NcIjogXCJzY3NzXCIsXG4gIFwiLmh0bWxcIjogXCJodG1sXCIsXG4gIFwiLmpzb25cIjogXCJqc29uXCIsXG4gIFwiLnlhbWxcIjogXCJ5YW1sXCIsXG4gIFwiLnltbFwiOiBcInlhbWxcIixcbiAgXCIudG9tbFwiOiBcInRvbWxcIixcbiAgXCIueG1sXCI6IFwieG1sXCIsXG4gIFwiLnNxbFwiOiBcInNxbFwiLFxuICBcIi5zaFwiOiBcImJhc2hcIixcbiAgXCIuYmFzaFwiOiBcImJhc2hcIixcbiAgXCIuenNoXCI6IFwienNoXCIsXG4gIFwiLmZpc2hcIjogXCJmaXNoXCIsXG4gIFwiLnBzMVwiOiBcInBvd2Vyc2hlbGxcIixcbiAgXCIuZG9ja2VyZmlsZVwiOiBcImRvY2tlcmZpbGVcIixcbiAgXCIuZ3JhcGhxbFwiOiBcImdyYXBocWxcIixcbiAgXCIucHJvdG9cIjogXCJwcm90b2J1ZlwiLFxuICBcIi5sdWFcIjogXCJsdWFcIixcbiAgXCIucGhwXCI6IFwicGhwXCIsXG4gIFwiLnJcIjogXCJyXCIsXG4gIFwiLnppZ1wiOiBcInppZ1wiLFxuICBcIi5leFwiOiBcImVsaXhpclwiLFxuICBcIi5leHNcIjogXCJlbGl4aXJcIixcbn1cblxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKHJhdzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgY29uc3QgcmUgPSAvKFxcdyspPVwiKFteXCJdKylcIi9nXG4gIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gbnVsbFxuICB3aGlsZSAoKG0gPSByZS5leGVjKHJhdykpICE9PSBudWxsKSB7XG4gICAgYXR0cnNbbVsxXSFdID0gbVsyXSFcbiAgfVxuICByZXR1cm4gYXR0cnNcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURpcmVjdGl2ZShcbiAgcmF3QXR0cnM6IHN0cmluZyxcbiAgZmlsZURpcjogc3RyaW5nLFxuICBkZXB0aDogbnVtYmVyLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYXR0cnMgPSBwYXJzZUF0dHJpYnV0ZXMocmF3QXR0cnMpXG4gIGNvbnN0IGZpbGUgPSBhdHRycy5maWxlXG4gIGlmICghZmlsZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IHJlc29sdmUoZmlsZURpciwgZmlsZSlcbiAgdHJ5IHtcbiAgICBsZXQgaW5jbHVkZWQgPSByZWFkRmlsZVN5bmMoYWJzb2x1dGVQYXRoLCBcInV0Zi04XCIpXG5cbiAgICBjb25zdCBleHQgPSBleHRuYW1lKGZpbGUpLnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBsYW5nID0gZXh0VG9MYW5nW2V4dF1cblxuICAgIGlmIChsYW5nICYmICFmaWxlLmVuZHNXaXRoKFwiLm1kXCIpKSB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGUuc3BsaXQoXCIvXCIpLnBvcCgpIVxuICAgICAgY29uc3QgdGl0bGUgPSBgdGl0bGU9XCIke2ZpbGVuYW1lfVwiYFxuICAgICAgY29uc3QgbWV0YSA9IGF0dHJzLm1ldGEgPyBgICR7YXR0cnMubWV0YX1gIDogXCJcIlxuICAgICAgcmV0dXJuIFwiYGBgXCIgKyBsYW5nICsgXCIgXCIgKyB0aXRsZSArIG1ldGEgKyBcIlxcblwiICsgaW5jbHVkZWQudHJpbUVuZCgpICsgXCJcXG5gYGBcIlxuICAgIH1cblxuICAgIGluY2x1ZGVkID0gaW5jbHVkZWQucmVwbGFjZShGUk9OVE1BVFRFUl9SRSwgXCJcIilcbiAgICByZXR1cm4gcmVzb2x2ZUluY2x1ZGVzKGluY2x1ZGVkLnRyaW0oKSwgYWJzb2x1dGVQYXRoLCBkZXB0aCArIDEpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG4vKiogUmVzb2x2ZXMgOjppbmNsdWRle2ZpbGU9XCIuLi5cIn0gZGlyZWN0aXZlcyBieSByZXBsYWNpbmcgdGhlbSB3aXRoIHJlZmVyZW5jZWQgZmlsZSBjb250ZW50cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbmNsdWRlcyhjb250ZW50OiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcsIGRlcHRoID0gMCk6IHN0cmluZyB7XG4gIGlmIChkZXB0aCA+IDUpIHJldHVybiBjb250ZW50XG5cbiAgY29uc3QgZmlsZURpciA9IGRpcm5hbWUoZmlsZVBhdGgpXG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdChcIlxcblwiKVxuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW11cbiAgbGV0IGZlbmNlTWFya2VyOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBmZW5jZU1hdGNoID0gRkVOQ0VfUkUuZXhlYyhsaW5lKVxuICAgIGlmIChmZW5jZU1hdGNoKSB7XG4gICAgICBpZiAoIWZlbmNlTWFya2VyKSB7XG4gICAgICAgIGZlbmNlTWFya2VyID0gZmVuY2VNYXRjaFsxXSFcbiAgICAgIH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKGZlbmNlTWFya2VyKSkge1xuICAgICAgICBmZW5jZU1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGZlbmNlTWFya2VyKSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlTWF0Y2ggPSBJTkNMVURFX1JFLmV4ZWMobGluZSlcbiAgICBpZiAoaW5jbHVkZU1hdGNoKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVEaXJlY3RpdmUoaW5jbHVkZU1hdGNoWzFdISwgZmlsZURpciwgZGVwdGgpXG4gICAgICByZXN1bHQucHVzaChyZXNvbHZlZCA/PyBsaW5lKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbihcIlxcblwiKVxufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3Jlc29sdmUtaW5jbHVkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVyRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQTtBQUN4QyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQTtBQUMvQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQTtBQUVqQyxNQUFNLFNBQVMsR0FBMkI7SUFDeEMsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLEtBQUs7SUFDYixLQUFLLEVBQUUsWUFBWTtJQUNuQixNQUFNLEVBQUUsS0FBSztJQUNiLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLE1BQU07SUFDYixLQUFLLEVBQUUsSUFBSTtJQUNYLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLEtBQUs7SUFDYixJQUFJLEVBQUUsR0FBRztJQUNULEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxFQUFFLEtBQUs7SUFDYixPQUFPLEVBQUUsTUFBTTtJQUNmLE9BQU8sRUFBRSxNQUFNO0lBQ2YsT0FBTyxFQUFFLE1BQU07SUFDZixPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxNQUFNO0lBQ2QsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsS0FBSztJQUNiLE1BQU0sRUFBRSxLQUFLO0lBQ2IsS0FBSyxFQUFFLE1BQU07SUFDYixPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxL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Q0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgeyBkaXJuYW1lLCBleHRuYW1lLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5cbmNvbnN0IElOQ0xVREVfUkUgPSAvXjo6aW5jbHVkZVxceyguKylcXH0kL1xuY29uc3QgRlJPTlRNQVRURVJfUkUgPSAvXi0tLVxcbltcXHNcXFNdKj9cXG4tLS1cXG4/L1xuY29uc3QgRkVOQ0VfUkUgPSAvXihgezMsfXx+ezMsfSkvXG5cbmNvbnN0IGV4dFRvTGFuZzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCIudHNcIjogXCJ0eXBlc2NyaXB0XCIsXG4gIFwiLnRzeFwiOiBcInRzeFwiLFxuICBcIi5qc1wiOiBcImphdmFzY3JpcHRcIixcbiAgXCIuanN4XCI6IFwianN4XCIsXG4gIFwiLnB5XCI6IFwicHl0aG9uXCIsXG4gIFwiLnJzXCI6IFwicnVzdFwiLFxuICBcIi5nb1wiOiBcImdvXCIsXG4gIFwiLnJiXCI6IFwicnVieVwiLFxuICBcIi5qYXZhXCI6IFwiamF2YVwiLFxuICBcIi5rdFwiOiBcImtvdGxpblwiLFxuICBcIi5zd2lmdFwiOiBcInN3aWZ0XCIsXG4gIFwiLmNcIjogXCJjXCIsXG4gIFwiLmNwcFwiOiBcImNwcFwiLFxuICBcIi5oXCI6IFwiY1wiLFxuICBcIi5jc1wiOiBcImNzaGFycFwiLFxuICBcIi5jc3NcIjogXCJjc3NcIixcbiAgXCIuc2Nzc1wiOiBcInNjc3NcIixcbiAgXCIuaHRtbFwiOiBcImh0bWxcIixcbiAgXCIuanNvblwiOiBcImpzb25cIixcbiAgXCIueWFtbFwiOiBcInlhbWxcIixcbiAgXCIueW1sXCI6IFwieWFtbFwiLFxuICBcIi50b21sXCI6IFwidG9tbFwiLFxuICBcIi54bWxcIjogXCJ4bWxcIixcbiAgXCIuc3FsXCI6IFwic3FsXCIsXG4gIFwiLnNoXCI6IFwiYmFzaFwiLFxuICBcIi5iYXNoXCI6IFwiYmFzaFwiLFxuICBcIi56c2hcIjogXCJ6c2hcIixcbiAgXCIuZmlzaFwiOiBcImZpc2hcIixcbiAgXCIucHMxXCI6IFwicG93ZXJzaGVsbFwiLFxuICBcIi5kb2NrZXJmaWxlXCI6IFwiZG9ja2VyZmlsZVwiLFxuICBcIi5ncmFwaHFsXCI6IFwiZ3JhcGhxbFwiLFxuICBcIi5wcm90b1wiOiBcInByb3RvYnVmXCIsXG4gIFwiLmx1YVwiOiBcImx1YVwiLFxuICBcIi5waHBcIjogXCJwaHBcIixcbiAgXCIuclwiOiBcInJcIixcbiAgXCIuemlnXCI6IFwiemlnXCIsXG4gIFwiLmV4XCI6IFwiZWxpeGlyXCIsXG4gIFwiLmV4c1wiOiBcImVsaXhpclwiLFxufVxuXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMocmF3OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgYXR0cnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICBjb25zdCByZSA9IC8oXFx3Kyk9XCIoW15cIl0rKVwiL2dcbiAgbGV0IG06IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsXG4gIHdoaWxlICgobSA9IHJlLmV4ZWMocmF3KSkgIT09IG51bGwpIHtcbiAgICBhdHRyc1ttWzFdIV0gPSBtWzJdIVxuICB9XG4gIHJldHVybiBhdHRyc1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRGlyZWN0aXZlKHJhd0F0dHJzOiBzdHJpbmcsIGZpbGVEaXI6IHN0cmluZywgZGVwdGg6IG51bWJlcikge1xuICBjb25zdCBhdHRycyA9IHBhcnNlQXR0cmlidXRlcyhyYXdBdHRycylcbiAgY29uc3QgZmlsZSA9IGF0dHJzLmZpbGVcbiAgaWYgKCFmaWxlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShmaWxlRGlyLCBmaWxlKVxuICB0cnkge1xuICAgIGxldCBpbmNsdWRlZCA9IGF3YWl0IHJlYWRGaWxlKGFic29sdXRlUGF0aCwgXCJ1dGYtOFwiKVxuXG4gICAgY29uc3QgZXh0ID0gZXh0bmFtZShmaWxlKS50b0xvd2VyQ2FzZSgpXG4gICAgY29uc3QgbGFuZyA9IGV4dFRvTGFuZ1tleHRdXG5cbiAgICBpZiAobGFuZyAmJiAhZmlsZS5lbmRzV2l0aChcIi5tZFwiKSkge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlLnNwbGl0KFwiL1wiKS5wb3AoKSFcbiAgICAgIGNvbnN0IHRpdGxlID0gYHRpdGxlPVwiJHtmaWxlbmFtZX1cImBcbiAgICAgIGNvbnN0IG1ldGEgPSBhdHRycy5tZXRhID8gYCAke2F0dHJzLm1ldGF9YCA6IFwiXCJcbiAgICAgIHJldHVybiBcImBgYFwiICsgbGFuZyArIFwiIFwiICsgdGl0bGUgKyBtZXRhICsgXCJcXG5cIiArIGluY2x1ZGVkLnRyaW1FbmQoKSArIFwiXFxuYGBgXCJcbiAgICB9XG5cbiAgICBpbmNsdWRlZCA9IGluY2x1ZGVkLnJlcGxhY2UoRlJPTlRNQVRURVJfUkUsIFwiXCIpXG4gICAgcmV0dXJuIHJlc29sdmVJbmNsdWRlcyhpbmNsdWRlZC50cmltKCksIGFic29sdXRlUGF0aCwgZGVwdGggKyAxKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqIFJlc29sdmVzIDo6aW5jbHVkZXtmaWxlPVwiLi4uXCJ9IGRpcmVjdGl2ZXMgYnkgcmVwbGFjaW5nIHRoZW0gd2l0aCByZWZlcmVuY2VkIGZpbGUgY29udGVudHMgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlSW5jbHVkZXMoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZGVwdGggPSAwLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKGRlcHRoID4gNSkgcmV0dXJuIGNvbnRlbnRcblxuICBjb25zdCBmaWxlRGlyID0gZGlybmFtZShmaWxlUGF0aClcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpXG4gIGNvbnN0IHJlc3VsdDogQXJyYXk8c3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+PiA9IFtdXG4gIGxldCBmZW5jZU1hcmtlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgZmVuY2VNYXRjaCA9IEZFTkNFX1JFLmV4ZWMobGluZSlcbiAgICBpZiAoZmVuY2VNYXRjaCkge1xuICAgICAgaWYgKCFmZW5jZU1hcmtlcikge1xuICAgICAgICBmZW5jZU1hcmtlciA9IGZlbmNlTWF0Y2hbMV0hXG4gICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aChmZW5jZU1hcmtlcikpIHtcbiAgICAgICAgZmVuY2VNYXJrZXIgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKGxpbmUpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChmZW5jZU1hcmtlcikge1xuICAgICAgcmVzdWx0LnB1c2gobGluZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgaW5jbHVkZU1hdGNoID0gSU5DTFVERV9SRS5leGVjKGxpbmUpXG4gICAgaWYgKGluY2x1ZGVNYXRjaCkge1xuICAgICAgY29uc3QgZGlyZWN0aXZlID0gcmVzb2x2ZURpcmVjdGl2ZShpbmNsdWRlTWF0Y2hbMV0hLCBmaWxlRGlyLCBkZXB0aClcbiAgICAgIHJlc3VsdC5wdXNoKGRpcmVjdGl2ZS50aGVuKHJlc29sdmVkID0+IHJlc29sdmVkID8/IGxpbmUpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwocmVzdWx0KSkuam9pbihcIlxcblwiKVxufVxuIl19
@@ -4,73 +4,73 @@ import { describe, expect, it } from "vite-plus/test";
4
4
  import { temporaryDirectory } from "tempy";
5
5
  import { resolveIncludes } from "./resolve-includes.js";
6
6
  describe("resolveIncludes", () => {
7
- it("should replace include directive with file content", () => {
7
+ it("should replace include directive with file content", async () => {
8
8
  const dir = temporaryDirectory();
9
9
  writeFileSync(join(dir, "snippet.md"), "Hello from snippet");
10
- const result = resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
10
+ const result = await resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
11
11
  expect(result).toBe("Hello from snippet");
12
12
  });
13
- it("should strip frontmatter from included files", () => {
13
+ it("should strip frontmatter from included files", async () => {
14
14
  const dir = temporaryDirectory();
15
15
  writeFileSync(join(dir, "snippet.md"), "---\ntitle: Test\n---\nContent here");
16
- const result = resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
16
+ const result = await resolveIncludes('::include{file="snippet.md"}', join(dir, "main.md"));
17
17
  expect(result).toBe("Content here");
18
18
  });
19
- it("should preserve surrounding content", () => {
19
+ it("should preserve surrounding content", async () => {
20
20
  const dir = temporaryDirectory();
21
21
  writeFileSync(join(dir, "snippet.md"), "Included text");
22
- const result = resolveIncludes('Before\n\n::include{file="snippet.md"}\n\nAfter', join(dir, "main.md"));
22
+ const result = await resolveIncludes('Before\n\n::include{file="snippet.md"}\n\nAfter', join(dir, "main.md"));
23
23
  expect(result).toBe("Before\n\nIncluded text\n\nAfter");
24
24
  });
25
- it("should keep directive when file is missing", () => {
26
- const result = resolveIncludes('::include{file="nonexistent.md"}', "/tmp/main.md");
25
+ it("should keep directive when file is missing", async () => {
26
+ const result = await resolveIncludes('::include{file="nonexistent.md"}', "/tmp/main.md");
27
27
  expect(result).toBe('::include{file="nonexistent.md"}');
28
28
  });
29
- it("should resolve nested includes", () => {
29
+ it("should resolve nested includes", async () => {
30
30
  const dir = temporaryDirectory();
31
31
  writeFileSync(join(dir, "inner.md"), "Inner content");
32
32
  writeFileSync(join(dir, "outer.md"), '::include{file="inner.md"}');
33
- const result = resolveIncludes('::include{file="outer.md"}', join(dir, "main.md"));
33
+ const result = await resolveIncludes('::include{file="outer.md"}', join(dir, "main.md"));
34
34
  expect(result).toBe("Inner content");
35
35
  });
36
- it("should limit recursion depth", () => {
36
+ it("should limit recursion depth", async () => {
37
37
  const dir = temporaryDirectory();
38
38
  writeFileSync(join(dir, "recursive.md"), '::include{file="recursive.md"}');
39
- const result = resolveIncludes('::include{file="recursive.md"}', join(dir, "main.md"));
39
+ const result = await resolveIncludes('::include{file="recursive.md"}', join(dir, "main.md"));
40
40
  expect(result).toBe('::include{file="recursive.md"}');
41
41
  });
42
- it("should resolve relative paths from included file location", () => {
42
+ it("should resolve relative paths from included file location", async () => {
43
43
  const dir = temporaryDirectory();
44
44
  mkdirSync(join(dir, "sub"));
45
45
  writeFileSync(join(dir, "sub", "child.md"), "Child content");
46
46
  writeFileSync(join(dir, "parent.md"), '::include{file="sub/child.md"}');
47
- const result = resolveIncludes('::include{file="parent.md"}', join(dir, "main.md"));
47
+ const result = await resolveIncludes('::include{file="parent.md"}', join(dir, "main.md"));
48
48
  expect(result).toBe("Child content");
49
49
  });
50
- it("should handle multiple includes in one file", () => {
50
+ it("should handle multiple includes in one file", async () => {
51
51
  const dir = temporaryDirectory();
52
52
  writeFileSync(join(dir, "a.md"), "Alpha");
53
53
  writeFileSync(join(dir, "b.md"), "Beta");
54
- const result = resolveIncludes('::include{file="a.md"}\n\n::include{file="b.md"}', join(dir, "main.md"));
54
+ const result = await resolveIncludes('::include{file="a.md"}\n\n::include{file="b.md"}', join(dir, "main.md"));
55
55
  expect(result).toBe("Alpha\n\nBeta");
56
56
  });
57
- it("should wrap code files in fenced blocks", () => {
57
+ it("should wrap code files in fenced blocks", async () => {
58
58
  const dir = temporaryDirectory();
59
59
  writeFileSync(join(dir, "example.ts"), 'const x = 1\nconst y = "hello"');
60
- const result = resolveIncludes('::include{file="example.ts"}', join(dir, "main.md"));
60
+ const result = await resolveIncludes('::include{file="example.ts"}', join(dir, "main.md"));
61
61
  expect(result).toBe('```typescript title="example.ts"\nconst x = 1\nconst y = "hello"\n```');
62
62
  });
63
- it("should pass meta to code fence", () => {
63
+ it("should pass meta to code fence", async () => {
64
64
  const dir = temporaryDirectory();
65
65
  writeFileSync(join(dir, "app.tsx"), "export default function App() {}");
66
- const result = resolveIncludes('::include{file="app.tsx" meta="{1} lineNumbers"}', join(dir, "main.md"));
66
+ const result = await resolveIncludes('::include{file="app.tsx" meta="{1} lineNumbers"}', join(dir, "main.md"));
67
67
  expect(result).toBe('```tsx title="app.tsx" {1} lineNumbers\nexport default function App() {}\n```');
68
68
  });
69
- it("should treat unknown extensions as markdown", () => {
69
+ it("should treat unknown extensions as markdown", async () => {
70
70
  const dir = temporaryDirectory();
71
71
  writeFileSync(join(dir, "notes.txt"), "Plain text");
72
- const result = resolveIncludes('::include{file="notes.txt"}', join(dir, "main.md"));
72
+ const result = await resolveIncludes('::include{file="notes.txt"}', join(dir, "main.md"));
73
73
  expect(result).toBe("Plain text");
74
74
  });
75
75
  });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUV2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQTtRQUNoQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQzVELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDcEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtRQUN0RCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLENBQUE7UUFDN0UsTUFBTSxNQUFNLEdBQUcsZUFBZSxD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QUFBO0lBRUYsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDbkYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNuQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXJTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5IH0gZnJvbSBcInRlbXB5XCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuL3Jlc29sdmUtaW5jbHVkZXMudHNcIlxuXG5kZXNjcmliZShcInJlc29sdmVJbmNsdWRlc1wiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIHJlcGxhY2UgaW5jbHVkZSBkaXJlY3RpdmUgd2l0aCBmaWxlIGNvbnRlbnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJzbmlwcGV0Lm1kXCIpLCBcIkhlbGxvIGZyb20gc25pcHBldFwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJzbmlwcGV0Lm1kXCJ9Jywgam9pbihkaXIsIFwibWFpbi5tZFwiKSlcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiSGVsbG8gZnJvbSBzbmlwcGV0XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc3RyaXAgZnJvbnRtYXR0ZXIgZnJvbSBpbmNsdWRlZCBmaWxlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInNuaXBwZXQubWRcIiksIFwiLS0tXFxudGl0bGU6IFRlc3RcXG4tLS1cXG5Db250ZW50IGhlcmVcIilcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwic25pcHBldC5tZFwifScsIGpvaW4oZGlyLCBcIm1haW4ubWRcIikpXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcIkNvbnRlbnQgaGVyZVwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHByZXNlcnZlIHN1cnJvdW5kaW5nIGNvbnRlbnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJzbmlwcGV0Lm1kXCIpLCBcIkluY2x1ZGVkIHRleHRcIilcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnQmVmb3JlXFxuXFxuOjppbmNsdWRle2ZpbGU9XCJzbmlwcGV0Lm1kXCJ9XFxuXFxuQWZ0ZXInLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcIkJlZm9yZVxcblxcbkluY2x1ZGVkIHRleHRcXG5cXG5BZnRlclwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGtlZXAgZGlyZWN0aXZlIHdoZW4gZmlsZSBpcyBtaXNzaW5nXCIsICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwibm9uZXhpc3RlbnQubWRcIn0nLCBcIi90bXAvbWFpbi5tZFwiKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJzo6aW5jbHVkZXtmaWxlPVwibm9uZXhpc3RlbnQubWRcIn0nKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlc29sdmUgbmVzdGVkIGluY2x1ZGVzXCIsICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwiaW5uZXIubWRcIiksIFwiSW5uZXIgY29udGVudFwiKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwib3V0ZXIubWRcIiksICc6OmluY2x1ZGV7ZmlsZT1cImlubmVyLm1kXCJ9JylcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwib3V0ZXIubWRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJJbm5lciBjb250ZW50XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbGltaXQgcmVjdXJzaW9uIGRlcHRoXCIsICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwicmVjdXJzaXZlLm1kXCIpLCAnOjppbmNsdWRle2ZpbGU9XCJyZWN1cnNpdmUubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJyZWN1cnNpdmUubWRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJzo6aW5jbHVkZXtmaWxlPVwicmVjdXJzaXZlLm1kXCJ9JylcbiAgfSlcblxuICBpdChcInNob3VsZCByZXNvbHZlIHJlbGF0aXZlIHBhdGhzIGZyb20gaW5jbHVkZWQgZmlsZSBsb2NhdGlvblwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICBta2RpclN5bmMoam9pbihkaXIsIFwic3ViXCIpKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwic3ViXCIsIFwiY2hpbGQubWRcIiksIFwiQ2hpbGQgY29udGVudFwiKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwicGFyZW50Lm1kXCIpLCAnOjppbmNsdWRle2ZpbGU9XCJzdWIvY2hpbGQubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJwYXJlbnQubWRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJDaGlsZCBjb250ZW50XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGluY2x1ZGVzIGluIG9uZSBmaWxlXCIsICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwiYS5tZFwiKSwgXCJBbHBoYVwiKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwiYi5tZFwiKSwgXCJCZXRhXCIpXG4gICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwiYS5tZFwifVxcblxcbjo6aW5jbHVkZXtmaWxlPVwiYi5tZFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiQWxwaGFcXG5cXG5CZXRhXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgd3JhcCBjb2RlIGZpbGVzIGluIGZlbmNlZCBibG9ja3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJleGFtcGxlLnRzXCIpLCAnY29uc3QgeCA9IDFcXG5jb25zdCB5ID0gXCJoZWxsb1wiJylcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlSW5jbHVkZXMoJzo6aW5jbHVkZXtmaWxlPVwiZXhhbXBsZS50c1wifScsIGpvaW4oZGlyLCBcIm1haW4ubWRcIikpXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0eXBlc2NyaXB0IHRpdGxlPVwiZXhhbXBsZS50c1wiXFxuY29uc3QgeCA9IDFcXG5jb25zdCB5ID0gXCJoZWxsb1wiXFxuYGBgJyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcGFzcyBtZXRhIHRvIGNvZGUgZmVuY2VcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJhcHAudHN4XCIpLCBcImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcCgpIHt9XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwiYXBwLnRzeFwiIG1ldGE9XCJ7MX0gbGluZU51bWJlcnNcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0c3ggdGl0bGU9XCJhcHAudHN4XCIgezF9IGxpbmVOdW1iZXJzXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwKCkge31cXG5gYGAnLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCB0cmVhdCB1bmtub3duIGV4dGVuc2lvbnMgYXMgbWFya2Rvd25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJub3Rlcy50eHRcIiksIFwiUGxhaW4gdGV4dFwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVJbmNsdWRlcygnOjppbmNsdWRle2ZpbGU9XCJub3Rlcy50eHRcIn0nLCBqb2luKGRpciwgXCJtYWluLm1kXCIpKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJQbGFpbiB0ZXh0XCIpXG4gIH0pXG59KVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1pbmNsdWRlcy51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUV2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNsRSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDNUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQ2xDLDhCQUE4QixFQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUNyQixDQUFBO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVELE1BQU0sR0FBRyxHQUFHLGtCQUFrQixFQUFFLENBQUE7UUFDaEMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLEVBQUUscUNBQXFDLENBQUMsQ0FBQTtRQUM3RSxNQUFN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SSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDckIsQ0FBQTtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2pCLCtFQUErRSxDQUNoRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQTtRQUNoQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FDbEMsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3JCLENBQUE7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyB0ZW1wb3JhcnlEaXJlY3RvcnkgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgcmVzb2x2ZUluY2x1ZGVzIH0gZnJvbSBcIi4vcmVzb2x2ZS1pbmNsdWRlcy50c1wiXG5cbmRlc2NyaWJlKFwicmVzb2x2ZUluY2x1ZGVzXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgcmVwbGFjZSBpbmNsdWRlIGRpcmVjdGl2ZSB3aXRoIGZpbGUgY29udGVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInNuaXBwZXQubWRcIiksIFwiSGVsbG8gZnJvbSBzbmlwcGV0XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwic25pcHBldC5tZFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiSGVsbG8gZnJvbSBzbmlwcGV0XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc3RyaXAgZnJvbnRtYXR0ZXIgZnJvbSBpbmNsdWRlZCBmaWxlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInNuaXBwZXQubWRcIiksIFwiLS0tXFxudGl0bGU6IFRlc3RcXG4tLS1cXG5Db250ZW50IGhlcmVcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnOjppbmNsdWRle2ZpbGU9XCJzbmlwcGV0Lm1kXCJ9JyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJDb250ZW50IGhlcmVcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBwcmVzZXJ2ZSBzdXJyb3VuZGluZyBjb250ZW50XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwic25pcHBldC5tZFwiKSwgXCJJbmNsdWRlZCB0ZXh0XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJ0JlZm9yZVxcblxcbjo6aW5jbHVkZXtmaWxlPVwic25pcHBldC5tZFwifVxcblxcbkFmdGVyJyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJCZWZvcmVcXG5cXG5JbmNsdWRlZCB0ZXh0XFxuXFxuQWZ0ZXJcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBrZWVwIGRpcmVjdGl2ZSB3aGVuIGZpbGUgaXMgbWlzc2luZ1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwibm9uZXhpc3RlbnQubWRcIn0nLFxuICAgICAgXCIvdG1wL21haW4ubWRcIixcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnOjppbmNsdWRle2ZpbGU9XCJub25leGlzdGVudC5tZFwifScpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmVzb2x2ZSBuZXN0ZWQgaW5jbHVkZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJpbm5lci5tZFwiKSwgXCJJbm5lciBjb250ZW50XCIpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJvdXRlci5tZFwiKSwgJzo6aW5jbHVkZXtmaWxlPVwiaW5uZXIubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cIm91dGVyLm1kXCJ9JyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJJbm5lciBjb250ZW50XCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbGltaXQgcmVjdXJzaW9uIGRlcHRoXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkaXIgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKVxuICAgIHdyaXRlRmlsZVN5bmMoam9pbihkaXIsIFwicmVjdXJzaXZlLm1kXCIpLCAnOjppbmNsdWRle2ZpbGU9XCJyZWN1cnNpdmUubWRcIn0nKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cInJlY3Vyc2l2ZS5tZFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKCc6OmluY2x1ZGV7ZmlsZT1cInJlY3Vyc2l2ZS5tZFwifScpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmVzb2x2ZSByZWxhdGl2ZSBwYXRocyBmcm9tIGluY2x1ZGVkIGZpbGUgbG9jYXRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgbWtkaXJTeW5jKGpvaW4oZGlyLCBcInN1YlwiKSlcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInN1YlwiLCBcImNoaWxkLm1kXCIpLCBcIkNoaWxkIGNvbnRlbnRcIilcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcInBhcmVudC5tZFwiKSwgJzo6aW5jbHVkZXtmaWxlPVwic3ViL2NoaWxkLm1kXCJ9JylcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnOjppbmNsdWRle2ZpbGU9XCJwYXJlbnQubWRcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcIkNoaWxkIGNvbnRlbnRcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgbXVsdGlwbGUgaW5jbHVkZXMgaW4gb25lIGZpbGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJhLm1kXCIpLCBcIkFscGhhXCIpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJiLm1kXCIpLCBcIkJldGFcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNvbHZlSW5jbHVkZXMoXG4gICAgICAnOjppbmNsdWRle2ZpbGU9XCJhLm1kXCJ9XFxuXFxuOjppbmNsdWRle2ZpbGU9XCJiLm1kXCJ9JyxcbiAgICAgIGpvaW4oZGlyLCBcIm1haW4ubWRcIiksXG4gICAgKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoXCJBbHBoYVxcblxcbkJldGFcIilcbiAgfSlcblxuICBpdChcInNob3VsZCB3cmFwIGNvZGUgZmlsZXMgaW4gZmVuY2VkIGJsb2Nrc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGlyID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4oZGlyLCBcImV4YW1wbGUudHNcIiksICdjb25zdCB4ID0gMVxcbmNvbnN0IHkgPSBcImhlbGxvXCInKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cImV4YW1wbGUudHNcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0eXBlc2NyaXB0IHRpdGxlPVwiZXhhbXBsZS50c1wiXFxuY29uc3QgeCA9IDFcXG5jb25zdCB5ID0gXCJoZWxsb1wiXFxuYGBgJyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcGFzcyBtZXRhIHRvIGNvZGUgZmVuY2VcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJhcHAudHN4XCIpLCBcImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcCgpIHt9XCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzb2x2ZUluY2x1ZGVzKFxuICAgICAgJzo6aW5jbHVkZXtmaWxlPVwiYXBwLnRzeFwiIG1ldGE9XCJ7MX0gbGluZU51bWJlcnNcIn0nLFxuICAgICAgam9pbihkaXIsIFwibWFpbi5tZFwiKSxcbiAgICApXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICdgYGB0c3ggdGl0bGU9XCJhcHAudHN4XCIgezF9IGxpbmVOdW1iZXJzXFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXBwKCkge31cXG5gYGAnLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCB0cmVhdCB1bmtub3duIGV4dGVuc2lvbnMgYXMgbWFya2Rvd25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRpciA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKGRpciwgXCJub3Rlcy50eHRcIiksIFwiUGxhaW4gdGV4dFwiKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc29sdmVJbmNsdWRlcyhcbiAgICAgICc6OmluY2x1ZGV7ZmlsZT1cIm5vdGVzLnR4dFwifScsXG4gICAgICBqb2luKGRpciwgXCJtYWluLm1kXCIpLFxuICAgIClcbiAgICBleHBlY3QocmVzdWx0KS50b0JlKFwiUGxhaW4gdGV4dFwiKVxuICB9KVxufSlcbiJdfQ==
@@ -21,6 +21,14 @@ export declare const Head: z.ZodObject<{
21
21
  links: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
22
22
  scripts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
23
23
  }, z.core.$strip>;
24
+ /** How automated systems may use the site's content, published as a
25
+ * `Content-Signal` line in the generated `robots.txt`. */
26
+ export type ContentSignals = z.infer<typeof ContentSignals>;
27
+ export declare const ContentSignals: z.ZodObject<{
28
+ search: z.ZodDefault<z.ZodBoolean>;
29
+ aiInput: z.ZodDefault<z.ZodBoolean>;
30
+ aiTrain: z.ZodDefault<z.ZodBoolean>;
31
+ }, z.core.$strip>;
24
32
  /**
25
33
  * User-provided configuration for Livemark.
26
34
  *
@@ -200,6 +208,12 @@ export declare const UserConfig: z.ZodObject<{
200
208
  links: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
201
209
  scripts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
202
210
  }, z.core.$strip>>;
211
+ contentSignals: z.ZodPrefault<z.ZodObject<{
212
+ search: z.ZodDefault<z.ZodBoolean>;
213
+ aiInput: z.ZodDefault<z.ZodBoolean>;
214
+ aiTrain: z.ZodDefault<z.ZodBoolean>;
215
+ }, z.core.$strip>>;
216
+ skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
203
217
  vite: z.ZodOptional<z.ZodUnknown>;
204
218
  }, z.core.$strip>;
205
219
  /** Website configuration injected at build time via Vite define.
@@ -468,6 +482,12 @@ export declare const Config: z.ZodObject<{
468
482
  links: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
469
483
  scripts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>>;
470
484
  }, z.core.$strip>>;
485
+ contentSignals: z.ZodPrefault<z.ZodObject<{
486
+ search: z.ZodDefault<z.ZodBoolean>;
487
+ aiInput: z.ZodDefault<z.ZodBoolean>;
488
+ aiTrain: z.ZodDefault<z.ZodBoolean>;
489
+ }, z.core.$strip>>;
490
+ skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
471
491
  vite: z.ZodOptional<z.ZodUnknown>;
472
492
  root: z.ZodString;
473
493
  configPath: z.ZodString;
@@ -8,6 +8,11 @@ export const Head = z.object({
8
8
  links: z.array(z.record(z.string(), z.string())).optional(),
9
9
  scripts: z.array(z.record(z.string(), z.string())).optional(),
10
10
  });
11
+ export const ContentSignals = z.object({
12
+ search: z.boolean().default(true),
13
+ aiInput: z.boolean().default(true),
14
+ aiTrain: z.boolean().default(true),
15
+ });
11
16
  export const UserConfig = z.object({
12
17
  site: z.string().optional(),
13
18
  // Stored as `unknown` in the schema (zod can't type a function and
@@ -29,6 +34,8 @@ export const UserConfig = z.object({
29
34
  sections: z.array(Section).optional(),
30
35
  patches: z.array(Patch).optional(),
31
36
  head: Head.optional(),
37
+ contentSignals: ContentSignals.prefault({}),
38
+ skills: z.union([z.string(), z.array(z.string())]).optional(),
32
39
  // Stored as `unknown` in the schema (zod can't type a Vite UserConfig
33
40
  // or a function returning one meaningfully); the public TypeScript
34
41
  // surface above lifts it back to ViteOverride for editor support.
@@ -52,4 +59,4 @@ export const SystemConfig = z.object({
52
59
  configPath: z.string(),
53
60
  });
54
61
  export const Config = UserConfig.merge(SystemConfig);
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL21vZGVscy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQXNCMUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDM0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDOUQsQ0FBQyxDQUFBO0FBY0YsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsbUVBQW1FO0lBQ25FLGtFQUFrRTtJQUNsRSxpRUFBaUU7SUFDakUsbUVBQW1FO0lBQ25FLGdFQUFnRTtJQUNoRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUM7SUFDMUQsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUN0RSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDOUQsY0FBYyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDMUQsYUFBYSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDeEQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQy9CLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7SUFDckIsc0VBQXNFO0lBQ3RFLG1FQUFtRTtJQUNuRSxrRUFBa0U7SUFDbEUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDN0IsQ0FBQyxDQUFBO0FBTUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDM0MsS0FBSyxFQUFFLElBQUk7SUFDWCxXQUFXLEVBQUUsSUFBSTtJQUNqQixJQUFJLEVBQUUsSUFBSTtJQUNWLE9BQU8sRUFBRSxJQUFJO0lBQ2IsSUFBSSxFQUFFLElBQUk7SUFDVixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLElBQUk7SUFDZCxJQUFJLEVBQUUsSUFBSTtDQUNYLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDUixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM1QixDQUFDLENBQUE7QUFNRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUN2QixDQUFDLENBQUE7QUFjRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52LCBVc2VyQ29uZmlnIGFzIFZpdGVVc2VyQ29uZmlnIH0gZnJvbSBcInZpdGVcIlxuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmsudHNcIlxuaW1wb3J0IHsgUGF0Y2ggfSBmcm9tIFwiLi9wYXRjaC50c1wiXG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSBcIi4vc2VjdGlvbi50c1wiXG5pbXBvcnQgeyBDb2RlVGhlbWVEYXJrLCBDb2RlVGhlbWVMaWdodCB9IGZyb20gXCIuL3RoZW1lLnRzXCJcblxuLyoqIEVzY2FwZSBoYXRjaCBmb3IgYXJiaXRyYXJ5IFZpdGUgY29uZmlnIOKAlCBhY2NlcHRzIGVpdGhlciBhIGNvbmZpZ1xuICogIG9iamVjdCAoc2ltcGxlIG92ZXJyaWRlcykgb3IgYSBmdW5jdGlvbiBmb3JtIChgKGVudikgPT4gY29uZmlnYCxcbiAqICBtYXRjaGluZyBWaXRlJ3Mgb3duIGBkZWZpbmVDb25maWdgKS4gTWVyZ2VkIG9uIHRvcCBvZiBsaXZlbWFyaydzXG4gKiAgZGVmYXVsdHMgdmlhIGBtZXJnZUNvbmZpZ2AsIHNvIHBsdWdpbiBhcnJheXMgY29uY2F0ZW5hdGUsIGRlZmluZXNcbiAqICBtZXJnZSwgZXRjLiBVc2UgdGhpcyBmb3IgZGVwbG95bWVudC10YXJnZXQgdHdlYWtzIChlLmcuIENGIFdvcmtlcnNcbiAqICB2aWEgYGVudmlyb25tZW50cy5zc3IucmVzb2x2ZS5jb25kaXRpb25zOiBbXCJ3b3JrZXJkXCIsIC4uLl1gKS4gKi9cbmV4cG9ydCB0eXBlIFZpdGVPdmVycmlkZSA9XG4gIHwgVml0ZVVzZXJDb25maWdcbiAgfCAoKGVudjogQ29uZmlnRW52KSA9PiBWaXRlVXNlckNvbmZpZyB8IFByb21pc2U8Vml0ZVVzZXJDb25maWc+KVxuXG4vKiogU3ViLXBhdGggbW91bnQuIFN0cmluZyBmb3JtIGlzIHVzZWQgYXMtaXM7IGZ1bmN0aW9uIGZvcm0gaXMgY2FsbGVkXG4gKiAgd2l0aCBWaXRlJ3MgYGNvbW1hbmRgIChgXCJzZXJ2ZVwiYCBpbiBkZXYsIGBcImJ1aWxkXCJgIGluIHByb2R1Y3Rpb24pIHNvXG4gKiAgdGhlIHVzZXIgY2FuIGJyYW5jaCAodHlwaWNhbCBjYXNlOiBzZXJ2ZSBhdCBgL2AgaW4gZGV2IGJ1dCBhdFxuICogIGAvcmVwby9gIGluIHByb2R1Y3Rpb24gZm9yIEdpdEh1YiBQYWdlcykuIFRoZSBidWlsZCBwaXBlbGluZVxuICogIHJlc29sdmVzIGl0IHRvIGEgc3RyaW5nIGJlZm9yZSBhbnkgcnVudGltZSBzZWVzIGl0LiAqL1xuZXhwb3J0IHR5cGUgQmFzZSA9IHN0cmluZyB8ICgoY29tbWFuZDogXCJidWlsZFwiIHwgXCJzZXJ2ZVwiKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQpXG5cbi8qKiBFeHRyYSBzaXRlLXdpZGUgYDxoZWFkPmAgdGFncywgYXBwZW5kZWQgYWZ0ZXIgTGl2ZW1hcmsncyBkZWZhdWx0cy4gQSBtZXRhIHRhZ1xuICogIHNoYXJpbmcgYSBkZWZhdWx0J3MgYG5hbWVgIG9yIGBwcm9wZXJ0eWAgcmVwbGFjZXMgaXQuICovXG5leHBvcnQgdHlwZSBIZWFkID0gei5pbmZlcjx0eXBlb2YgSGVhZD5cbmV4cG9ydCBjb25zdCBIZWFkID0gei5vYmplY3Qoe1xuICBtZXRhOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpKS5vcHRpb25hbCgpLFxuICBsaW5rczogei5hcnJheSh6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSkub3B0aW9uYWwoKSxcbiAgc2NyaXB0czogei5hcnJheSh6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSkub3B0aW9uYWwoKSxcbn0pXG5cbi8qKlxuICogVXNlci1wcm92aWRlZCBjb25maWd1cmF0aW9uIGZvciBMaXZlbWFyay5cbiAqXG4gKiBgdml0ZWAgYW5kIGBiYXNlYCBhcmUgbGlmdGVkIGZyb20gYHVua25vd25gIHRvIHRoZWlyIHB1YmxpYyB0eXBlcyBzb1xuICogYGRlZmluZUNvbmZpZ2Agc2hvd3MgdGhlIHJpZ2h0IHNoYXBlIGluIGVkaXRvcnMuIFVzZSB0aGlzIHR5cGUgZm9yXG4gKiB0aGUgaW5wdXQgdG8gYGRlZmluZUNvbmZpZ2Ag4oCUIGl0IGtlZXBzIGRlZmF1bHRlZCBmaWVsZHMgb3B0aW9uYWxcbiAqIChiZWNhdXNlIHpvZCBpbnB1dCDiiaAgb3V0cHV0IGZvciBmaWVsZHMgd2l0aCBgLmRlZmF1bHQoKWApLlxuICovXG5leHBvcnQgdHlwZSBVc2VyQ29uZmlnID0gT21pdDx6LmlucHV0PHR5cGVvZiBVc2VyQ29uZmlnPiwgXCJ2aXRlXCIgfCBcImJhc2VcIj4gJiB7XG4gIHZpdGU/OiBWaXRlT3ZlcnJpZGVcbiAgYmFzZT86IEJhc2Vcbn1cbmV4cG9ydCBjb25zdCBVc2VyQ29uZmlnID0gei5vYmplY3Qoe1xuICBzaXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIFN0b3JlZCBhcyBgdW5rbm93bmAgaW4gdGhlIHNjaGVtYSAoem9kIGNhbid0IHR5cGUgYSBmdW5jdGlvbiBhbmRcbiAgLy8gc3RyaW5nIHVuaW9uIG1lYW5pbmdmdWxseSk7IHRoZSBwdWJsaWMgVHlwZVNjcmlwdCBzdXJmYWNlIGFib3ZlXG4gIC8vIGxpZnRzIGl0IGJhY2sgdG8gYEJhc2VgIGZvciBlZGl0b3Igc3VwcG9ydC4gVGhlIGJ1aWxkIHBpcGVsaW5lXG4gIC8vIHJlc29sdmVzIGl0IHZpYSBgcmVzb2x2ZUJhc2UoKWAgYmVmb3JlIGFueSBydW50aW1lIGNvbnN1bWVyIHNlZXNcbiAgLy8gaXQsIHNvIHRoZSBydW50aW1lIGBXZWJzaXRlQ29uZmlnLmJhc2VgIGlzIHN0cmljdGx5IGBzdHJpbmdgLlxuICBiYXNlOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICBmYXZpY29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxvZ286IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkuZGVmYXVsdChcIkxpdmVtYXJrXCIpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5kZWZhdWx0KFwiTWFya2Rvd24gc2l0ZSBnZW5lcmF0b3JcIiksXG4gIGJhbm5lcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpbmNsdWRlOiB6LnVuaW9uKFt6LnN0cmluZygpLCB6LmFycmF5KHouc3RyaW5nKCkpXSkuZGVmYXVsdChcIioqLyoubWRcIiksXG4gIGV4Y2x1ZGU6IHoudW5pb24oW3ouc3RyaW5nKCksIHouYXJyYXkoei5zdHJpbmcoKSldKS5vcHRpb25hbCgpLFxuICBjb2RlVGhlbWVMaWdodDogQ29kZVRoZW1lTGlnaHQuZGVmYXVsdChcImNhdHBwdWNjaW4tbGF0dGVcIiksXG4gIGNvZGVUaGVtZURhcms6IENvZGVUaGVtZURhcmsuZGVmYXVsdChcImNhdHBwdWNjaW4tbW9jaGFcIiksXG4gIGxpbmtzOiB6LmFycmF5KExpbmspLm9wdGlvbmFsKCksXG4gIHNlY3Rpb25zOiB6LmFycmF5KFNlY3Rpb24pLm9wdGlvbmFsKCksXG4gIHBhdGNoZXM6IHouYXJyYXkoUGF0Y2gpLm9wdGlvbmFsKCksXG4gIGhlYWQ6IEhlYWQub3B0aW9uYWwoKSxcbiAgLy8gU3RvcmVkIGFzIGB1bmtub3duYCBpbiB0aGUgc2NoZW1hICh6b2QgY2FuJ3QgdHlwZSBhIFZpdGUgVXNlckNvbmZpZ1xuICAvLyBvciBhIGZ1bmN0aW9uIHJldHVybmluZyBvbmUgbWVhbmluZ2Z1bGx5KTsgdGhlIHB1YmxpYyBUeXBlU2NyaXB0XG4gIC8vIHN1cmZhY2UgYWJvdmUgbGlmdHMgaXQgYmFjayB0byBWaXRlT3ZlcnJpZGUgZm9yIGVkaXRvciBzdXBwb3J0LlxuICB2aXRlOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxufSlcblxuLyoqIFdlYnNpdGUgY29uZmlndXJhdGlvbiBpbmplY3RlZCBhdCBidWlsZCB0aW1lIHZpYSBWaXRlIGRlZmluZS5cbiAqICBgYmFzZWAgaXMgc3RyaWN0bHkgYSBzdHJpbmcgaGVyZSDigJQgdGhlIGJ1aWxkIHBpcGVsaW5lIGhhcyBhbHJlYWR5XG4gKiAgcmVzb2x2ZWQgYW55IGZ1bmN0aW9uIGZvcm0gdmlhIGByZXNvbHZlQmFzZSgpYC4gKi9cbmV4cG9ydCB0eXBlIFdlYnNpdGVDb25maWcgPSB6LmluZmVyPHR5cGVvZiBXZWJzaXRlQ29uZmlnPlxuZXhwb3J0IGNvbnN0IFdlYnNpdGVDb25maWcgPSBVc2VyQ29uZmlnLnBpY2soe1xuICB0aXRsZTogdHJ1ZSxcbiAgZGVzY3JpcHRpb246IHRydWUsXG4gIHNpdGU6IHRydWUsXG4gIGZhdmljb246IHRydWUsXG4gIGxvZ286IHRydWUsXG4gIGJhbm5lcjogdHJ1ZSxcbiAgbGlua3M6IHRydWUsXG4gIHNlY3Rpb25zOiB0cnVlLFxuICBoZWFkOiB0cnVlLFxufSkuZXh0ZW5kKHtcbiAgYmFzZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSlcblxuLyoqXG4gKiBTeXN0ZW0tY29tcHV0ZWQgY29uZmlndXJhdGlvbiBkZXJpdmVkIGZyb20gdGhlIGNvbmZpZyBmaWxlIGxvY2F0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTeXN0ZW1Db25maWcgPSB6LmluZmVyPHR5cGVvZiBTeXN0ZW1Db25maWc+XG5leHBvcnQgY29uc3QgU3lzdGVtQ29uZmlnID0gei5vYmplY3Qoe1xuICByb290OiB6LnN0cmluZygpLFxuICBjb25maWdQYXRoOiB6LnN0cmluZygpLFxufSlcblxuLyoqXG4gKiBGdWxseSByZXNvbHZlZCBMaXZlbWFyayBjb25maWd1cmF0aW9uLlxuICpcbiAqIGB2aXRlYCBzdGF5cyBgdW5rbm93bmAgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGUgcnVudGltZSBzY2hlbWFcbiAqIHByb2R1Y2VzIOKAlCBjb25zdW1lci1mYWNpbmcgdHlwaW5nIGhhcHBlbnMgdmlhIHtAbGluayBVc2VyQ29uZmlnfSBzb1xuICogYGRlZmluZUNvbmZpZ2Agc2hvd3MgdGhlIHJpZ2h0IHNoYXBlIGluIGVkaXRvcnMuIGBiYXNlYCBpcyBsaWZ0ZWQgdG9cbiAqIGBzdHJpbmcgfCB1bmRlZmluZWRgIGJlY2F1c2UgYGxvYWRDb25maWcoKWAgcmVzb2x2ZXMgYW55IGZ1bmN0aW9uXG4gKiBmb3JtIHZpYSBgcmVzb2x2ZUJhc2UoKWAgYmVmb3JlIHJldHVybmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZmlnID0gT21pdDx6LmluZmVyPHR5cGVvZiBDb25maWc+LCBcImJhc2VcIj4gJiB7XG4gIGJhc2U/OiBzdHJpbmdcbn1cbmV4cG9ydCBjb25zdCBDb25maWcgPSBVc2VyQ29uZmlnLm1lcmdlKFN5c3RlbUNvbmZpZylcbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL21vZGVscy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQXNCMUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDM0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDOUQsQ0FBQyxDQUFBO0FBS0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDckMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2pDLE9BQU8sRUFB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UUFBUSxFQUFFO0NBQzVCLENBQUMsQ0FBQTtBQU1GLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ3ZCLENBQUMsQ0FBQTtBQWNGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFVzZXJDb25maWcgYXMgVml0ZVVzZXJDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcIi4vbGluay50c1wiXG5pbXBvcnQgeyBQYXRjaCB9IGZyb20gXCIuL3BhdGNoLnRzXCJcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tIFwiLi9zZWN0aW9uLnRzXCJcbmltcG9ydCB7IENvZGVUaGVtZURhcmssIENvZGVUaGVtZUxpZ2h0IH0gZnJvbSBcIi4vdGhlbWUudHNcIlxuXG4vKiogRXNjYXBlIGhhdGNoIGZvciBhcmJpdHJhcnkgVml0ZSBjb25maWcg4oCUIGFjY2VwdHMgZWl0aGVyIGEgY29uZmlnXG4gKiAgb2JqZWN0IChzaW1wbGUgb3ZlcnJpZGVzKSBvciBhIGZ1bmN0aW9uIGZvcm0gKGAoZW52KSA9PiBjb25maWdgLFxuICogIG1hdGNoaW5nIFZpdGUncyBvd24gYGRlZmluZUNvbmZpZ2ApLiBNZXJnZWQgb24gdG9wIG9mIGxpdmVtYXJrJ3NcbiAqICBkZWZhdWx0cyB2aWEgYG1lcmdlQ29uZmlnYCwgc28gcGx1Z2luIGFycmF5cyBjb25jYXRlbmF0ZSwgZGVmaW5lc1xuICogIG1lcmdlLCBldGMuIFVzZSB0aGlzIGZvciBkZXBsb3ltZW50LXRhcmdldCB0d2Vha3MgKGUuZy4gQ0YgV29ya2Vyc1xuICogIHZpYSBgZW52aXJvbm1lbnRzLnNzci5yZXNvbHZlLmNvbmRpdGlvbnM6IFtcIndvcmtlcmRcIiwgLi4uXWApLiAqL1xuZXhwb3J0IHR5cGUgVml0ZU92ZXJyaWRlID1cbiAgfCBWaXRlVXNlckNvbmZpZ1xuICB8ICgoZW52OiBDb25maWdFbnYpID0+IFZpdGVVc2VyQ29uZmlnIHwgUHJvbWlzZTxWaXRlVXNlckNvbmZpZz4pXG5cbi8qKiBTdWItcGF0aCBtb3VudC4gU3RyaW5nIGZvcm0gaXMgdXNlZCBhcy1pczsgZnVuY3Rpb24gZm9ybSBpcyBjYWxsZWRcbiAqICB3aXRoIFZpdGUncyBgY29tbWFuZGAgKGBcInNlcnZlXCJgIGluIGRldiwgYFwiYnVpbGRcImAgaW4gcHJvZHVjdGlvbikgc29cbiAqICB0aGUgdXNlciBjYW4gYnJhbmNoICh0eXBpY2FsIGNhc2U6IHNlcnZlIGF0IGAvYCBpbiBkZXYgYnV0IGF0XG4gKiAgYC9yZXBvL2AgaW4gcHJvZHVjdGlvbiBmb3IgR2l0SHViIFBhZ2VzKS4gVGhlIGJ1aWxkIHBpcGVsaW5lXG4gKiAgcmVzb2x2ZXMgaXQgdG8gYSBzdHJpbmcgYmVmb3JlIGFueSBydW50aW1lIHNlZXMgaXQuICovXG5leHBvcnQgdHlwZSBCYXNlID0gc3RyaW5nIHwgKChjb21tYW5kOiBcImJ1aWxkXCIgfCBcInNlcnZlXCIpID0+IHN0cmluZyB8IHVuZGVmaW5lZClcblxuLyoqIEV4dHJhIHNpdGUtd2lkZSBgPGhlYWQ+YCB0YWdzLCBhcHBlbmRlZCBhZnRlciBMaXZlbWFyaydzIGRlZmF1bHRzLiBBIG1ldGEgdGFnXG4gKiAgc2hhcmluZyBhIGRlZmF1bHQncyBgbmFtZWAgb3IgYHByb3BlcnR5YCByZXBsYWNlcyBpdC4gKi9cbmV4cG9ydCB0eXBlIEhlYWQgPSB6LmluZmVyPHR5cGVvZiBIZWFkPlxuZXhwb3J0IGNvbnN0IEhlYWQgPSB6Lm9iamVjdCh7XG4gIG1ldGE6IHouYXJyYXkoei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkpLm9wdGlvbmFsKCksXG4gIGxpbmtzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpKS5vcHRpb25hbCgpLFxuICBzY3JpcHRzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpKS5vcHRpb25hbCgpLFxufSlcblxuLyoqIEhvdyBhdXRvbWF0ZWQgc3lzdGVtcyBtYXkgdXNlIHRoZSBzaXRlJ3MgY29udGVudCwgcHVibGlzaGVkIGFzIGFcbiAqICBgQ29udGVudC1TaWduYWxgIGxpbmUgaW4gdGhlIGdlbmVyYXRlZCBgcm9ib3RzLnR4dGAuICovXG5leHBvcnQgdHlwZSBDb250ZW50U2lnbmFscyA9IHouaW5mZXI8dHlwZW9mIENvbnRlbnRTaWduYWxzPlxuZXhwb3J0IGNvbnN0IENvbnRlbnRTaWduYWxzID0gei5vYmplY3Qoe1xuICBzZWFyY2g6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGFpSW5wdXQ6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGFpVHJhaW46IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG59KVxuXG4vKipcbiAqIFVzZXItcHJvdmlkZWQgY29uZmlndXJhdGlvbiBmb3IgTGl2ZW1hcmsuXG4gKlxuICogYHZpdGVgIGFuZCBgYmFzZWAgYXJlIGxpZnRlZCBmcm9tIGB1bmtub3duYCB0byB0aGVpciBwdWJsaWMgdHlwZXMgc29cbiAqIGBkZWZpbmVDb25maWdgIHNob3dzIHRoZSByaWdodCBzaGFwZSBpbiBlZGl0b3JzLiBVc2UgdGhpcyB0eXBlIGZvclxuICogdGhlIGlucHV0IHRvIGBkZWZpbmVDb25maWdgIOKAlCBpdCBrZWVwcyBkZWZhdWx0ZWQgZmllbGRzIG9wdGlvbmFsXG4gKiAoYmVjYXVzZSB6b2QgaW5wdXQg4omgIG91dHB1dCBmb3IgZmllbGRzIHdpdGggYC5kZWZhdWx0KClgKS5cbiAqL1xuZXhwb3J0IHR5cGUgVXNlckNvbmZpZyA9IE9taXQ8ei5pbnB1dDx0eXBlb2YgVXNlckNvbmZpZz4sIFwidml0ZVwiIHwgXCJiYXNlXCI+ICYge1xuICB2aXRlPzogVml0ZU92ZXJyaWRlXG4gIGJhc2U/OiBCYXNlXG59XG5leHBvcnQgY29uc3QgVXNlckNvbmZpZyA9IHoub2JqZWN0KHtcbiAgc2l0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvLyBTdG9yZWQgYXMgYHVua25vd25gIGluIHRoZSBzY2hlbWEgKHpvZCBjYW4ndCB0eXBlIGEgZnVuY3Rpb24gYW5kXG4gIC8vIHN0cmluZyB1bmlvbiBtZWFuaW5nZnVsbHkpOyB0aGUgcHVibGljIFR5cGVTY3JpcHQgc3VyZmFjZSBhYm92ZVxuICAvLyBsaWZ0cyBpdCBiYWNrIHRvIGBCYXNlYCBmb3IgZWRpdG9yIHN1cHBvcnQuIFRoZSBidWlsZCBwaXBlbGluZVxuICAvLyByZXNvbHZlcyBpdCB2aWEgYHJlc29sdmVCYXNlKClgIGJlZm9yZSBhbnkgcnVudGltZSBjb25zdW1lciBzZWVzXG4gIC8vIGl0LCBzbyB0aGUgcnVudGltZSBgV2Vic2l0ZUNvbmZpZy5iYXNlYCBpcyBzdHJpY3RseSBgc3RyaW5nYC5cbiAgYmFzZTogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgZmF2aWNvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsb2dvOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRpdGxlOiB6LnN0cmluZygpLmRlZmF1bHQoXCJMaXZlbWFya1wiKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkuZGVmYXVsdChcIk1hcmtkb3duIHNpdGUgZ2VuZXJhdG9yXCIpLFxuICBiYW5uZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaW5jbHVkZTogei51bmlvbihbei5zdHJpbmcoKSwgei5hcnJheSh6LnN0cmluZygpKV0pLmRlZmF1bHQoXCIqKi8qLm1kXCIpLFxuICBleGNsdWRlOiB6LnVuaW9uKFt6LnN0cmluZygpLCB6LmFycmF5KHouc3RyaW5nKCkpXSkub3B0aW9uYWwoKSxcbiAgY29kZVRoZW1lTGlnaHQ6IENvZGVUaGVtZUxpZ2h0LmRlZmF1bHQoXCJjYXRwcHVjY2luLWxhdHRlXCIpLFxuICBjb2RlVGhlbWVEYXJrOiBDb2RlVGhlbWVEYXJrLmRlZmF1bHQoXCJjYXRwcHVjY2luLW1vY2hhXCIpLFxuICBsaW5rczogei5hcnJheShMaW5rKS5vcHRpb25hbCgpLFxuICBzZWN0aW9uczogei5hcnJheShTZWN0aW9uKS5vcHRpb25hbCgpLFxuICBwYXRjaGVzOiB6LmFycmF5KFBhdGNoKS5vcHRpb25hbCgpLFxuICBoZWFkOiBIZWFkLm9wdGlvbmFsKCksXG4gIGNvbnRlbnRTaWduYWxzOiBDb250ZW50U2lnbmFscy5wcmVmYXVsdCh7fSksXG4gIHNraWxsczogei51bmlvbihbei5zdHJpbmcoKSwgei5hcnJheSh6LnN0cmluZygpKV0pLm9wdGlvbmFsKCksXG4gIC8vIFN0b3JlZCBhcyBgdW5rbm93bmAgaW4gdGhlIHNjaGVtYSAoem9kIGNhbid0IHR5cGUgYSBWaXRlIFVzZXJDb25maWdcbiAgLy8gb3IgYSBmdW5jdGlvbiByZXR1cm5pbmcgb25lIG1lYW5pbmdmdWxseSk7IHRoZSBwdWJsaWMgVHlwZVNjcmlwdFxuICAvLyBzdXJmYWNlIGFib3ZlIGxpZnRzIGl0IGJhY2sgdG8gVml0ZU92ZXJyaWRlIGZvciBlZGl0b3Igc3VwcG9ydC5cbiAgdml0ZTogei51bmtub3duKCkub3B0aW9uYWwoKSxcbn0pXG5cbi8qKiBXZWJzaXRlIGNvbmZpZ3VyYXRpb24gaW5qZWN0ZWQgYXQgYnVpbGQgdGltZSB2aWEgVml0ZSBkZWZpbmUuXG4gKiAgYGJhc2VgIGlzIHN0cmljdGx5IGEgc3RyaW5nIGhlcmUg4oCUIHRoZSBidWlsZCBwaXBlbGluZSBoYXMgYWxyZWFkeVxuICogIHJlc29sdmVkIGFueSBmdW5jdGlvbiBmb3JtIHZpYSBgcmVzb2x2ZUJhc2UoKWAuICovXG5leHBvcnQgdHlwZSBXZWJzaXRlQ29uZmlnID0gei5pbmZlcjx0eXBlb2YgV2Vic2l0ZUNvbmZpZz5cbmV4cG9ydCBjb25zdCBXZWJzaXRlQ29uZmlnID0gVXNlckNvbmZpZy5waWNrKHtcbiAgdGl0bGU6IHRydWUsXG4gIGRlc2NyaXB0aW9uOiB0cnVlLFxuICBzaXRlOiB0cnVlLFxuICBmYXZpY29uOiB0cnVlLFxuICBsb2dvOiB0cnVlLFxuICBiYW5uZXI6IHRydWUsXG4gIGxpbmtzOiB0cnVlLFxuICBzZWN0aW9uczogdHJ1ZSxcbiAgaGVhZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIGJhc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pXG5cbi8qKlxuICogU3lzdGVtLWNvbXB1dGVkIGNvbmZpZ3VyYXRpb24gZGVyaXZlZCBmcm9tIHRoZSBjb25maWcgZmlsZSBsb2NhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU3lzdGVtQ29uZmlnID0gei5pbmZlcjx0eXBlb2YgU3lzdGVtQ29uZmlnPlxuZXhwb3J0IGNvbnN0IFN5c3RlbUNvbmZpZyA9IHoub2JqZWN0KHtcbiAgcm9vdDogei5zdHJpbmcoKSxcbiAgY29uZmlnUGF0aDogei5zdHJpbmcoKSxcbn0pXG5cbi8qKlxuICogRnVsbHkgcmVzb2x2ZWQgTGl2ZW1hcmsgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBgdml0ZWAgc3RheXMgYHVua25vd25gIGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhlIHJ1bnRpbWUgc2NoZW1hXG4gKiBwcm9kdWNlcyDigJQgY29uc3VtZXItZmFjaW5nIHR5cGluZyBoYXBwZW5zIHZpYSB7QGxpbmsgVXNlckNvbmZpZ30gc29cbiAqIGBkZWZpbmVDb25maWdgIHNob3dzIHRoZSByaWdodCBzaGFwZSBpbiBlZGl0b3JzLiBgYmFzZWAgaXMgbGlmdGVkIHRvXG4gKiBgc3RyaW5nIHwgdW5kZWZpbmVkYCBiZWNhdXNlIGBsb2FkQ29uZmlnKClgIHJlc29sdmVzIGFueSBmdW5jdGlvblxuICogZm9ybSB2aWEgYHJlc29sdmVCYXNlKClgIGJlZm9yZSByZXR1cm5pbmcuXG4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZyA9IE9taXQ8ei5pbmZlcjx0eXBlb2YgQ29uZmlnPiwgXCJiYXNlXCI+ICYge1xuICBiYXNlPzogc3RyaW5nXG59XG5leHBvcnQgY29uc3QgQ29uZmlnID0gVXNlckNvbmZpZy5tZXJnZShTeXN0ZW1Db25maWcpXG4iXX0=
@@ -0,0 +1,17 @@
1
+ import type { Plugin } from "vite";
2
+ import type { Config } from "../models/config.ts";
3
+ export interface AgentsOptions {
4
+ config: Config;
5
+ }
6
+ /** Emit what AI agents look for into the client build: a Markdown twin of
7
+ * every article and section listing at `<path>index.md`, `llms.txt`, the Agent Skills index for
8
+ * `config.skills`, and a `_headers` file whose `Link` points agents at them. */
9
+ export declare function agents(opts: AgentsOptions): Plugin;
10
+ /** Render `_headers` (Cloudflare, Netlify): a `Link` on the home page naming
11
+ * `llms.txt`, its Markdown twin and the skills index, after any rules the
12
+ * project ships itself. */
13
+ export declare function renderHeaders(props: {
14
+ base?: string;
15
+ hasSkills: boolean;
16
+ existing?: string;
17
+ }): string;