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.
- package/build/actions/config/define.d.ts +6 -0
- package/build/content/article.js +4 -11
- package/build/content-collections.js +3 -5
- package/build/helpers/agent-skills.d.ts +22 -0
- package/build/helpers/agent-skills.js +46 -0
- package/build/helpers/agent-skills.unit.d.ts +1 -0
- package/build/helpers/agent-skills.unit.js +49 -0
- package/build/helpers/article.d.ts +13 -0
- package/build/helpers/article.js +17 -1
- package/build/helpers/head.d.ts +7 -2
- package/build/helpers/head.js +13 -2
- package/build/helpers/head.unit.js +4 -2
- package/build/helpers/llms.d.ts +33 -0
- package/build/helpers/llms.js +72 -0
- package/build/helpers/llms.unit.d.ts +1 -0
- package/build/helpers/llms.unit.js +98 -0
- package/build/helpers/resolve-includes.d.ts +1 -1
- package/build/helpers/resolve-includes.js +8 -8
- package/build/helpers/resolve-includes.unit.js +23 -23
- package/build/models/config.d.ts +20 -0
- package/build/models/config.js +8 -1
- package/build/plugins/vite-agents.d.ts +17 -0
- package/build/plugins/vite-agents.js +110 -0
- package/build/plugins/vite-agents.unit.d.ts +1 -0
- package/build/plugins/vite-agents.unit.js +20 -0
- package/build/plugins/vite-robots.d.ts +4 -2
- package/build/plugins/vite-robots.js +15 -2
- package/build/plugins/vite-robots.unit.js +5 -1
- package/build/vite.config.js +3 -1
- package/package.json +4 -2
- package/skills/livemark-configuration/SKILL.md +4 -0
- package/skills/livemark-customization/SKILL.md +1 -0
- package/source/content/article.ts +8 -13
- package/source/content-collections.ts +2 -5
- package/source/helpers/agent-skills.ts +59 -0
- package/source/helpers/agent-skills.unit.ts +56 -0
- package/source/helpers/article.ts +17 -0
- package/source/helpers/head.ts +12 -1
- package/source/helpers/head.unit.ts +3 -1
- package/source/helpers/llms.ts +109 -0
- package/source/helpers/llms.unit.ts +115 -0
- package/source/helpers/resolve-includes.ts +12 -12
- package/source/helpers/resolve-includes.unit.ts +46 -22
- package/source/models/config.ts +11 -0
- package/source/plugins/vite-agents.ts +137 -0
- package/source/plugins/vite-agents.unit.ts +26 -0
- package/source/plugins/vite-robots.ts +18 -3
- package/source/plugins/vite-robots.unit.ts +7 -0
- 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 {
|
|
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 =
|
|
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
|
|
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,
|
|
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==
|
package/build/models/config.d.ts
CHANGED
|
@@ -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;
|
package/build/models/config.js
CHANGED
|
@@ -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;
|