livemark 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/actions/config/define.d.ts +6 -0
- package/build/content/article.js +4 -11
- package/build/content-collections.js +2 -4
- 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/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 +109 -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 +3 -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 +1 -4
- 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/models/config.ts +11 -0
- package/source/plugins/vite-agents.ts +135 -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
|
@@ -84,5 +84,11 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
84
84
|
links?: Record<string, string>[] | undefined;
|
|
85
85
|
scripts?: Record<string, string>[] | undefined;
|
|
86
86
|
} | undefined;
|
|
87
|
+
contentSignals: {
|
|
88
|
+
search: boolean;
|
|
89
|
+
aiInput: boolean;
|
|
90
|
+
aiTrain: boolean;
|
|
91
|
+
};
|
|
92
|
+
skills?: string | string[] | undefined;
|
|
87
93
|
vite?: unknown;
|
|
88
94
|
};
|
package/build/content/article.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { config } from "livemark:virtual";
|
|
2
2
|
import { allArticles } from "content-collections";
|
|
3
|
-
import { buildArticleTree, flattenArticleTree } from "../helpers/article.js";
|
|
3
|
+
import { buildArticleTree, compareArticleDate, compareArticleOrder, flattenArticleTree, } from "../helpers/article.js";
|
|
4
4
|
import { matchSection, partitionBySection } from "../helpers/section.js";
|
|
5
5
|
/**
|
|
6
6
|
* Articles sorted by frontmatter `order`:
|
|
7
7
|
* positive values first (ascending), then unordered, then negative values
|
|
8
8
|
* (so `order: -1` lands at the very end, `-2` just before it, and so on).
|
|
9
9
|
*/
|
|
10
|
-
export const sortedArticles = [...allArticles].sort(
|
|
10
|
+
export const sortedArticles = [...allArticles].sort(compareArticleOrder);
|
|
11
11
|
/** The article whose path is `/`, if any (rendered in place at the root) */
|
|
12
12
|
export const homeArticle = sortedArticles.find(a => a.path === "/");
|
|
13
13
|
/** Sidebar tree derived from the article path hierarchy */
|
|
@@ -16,13 +16,6 @@ export const articleTree = buildArticleTree(sortedArticles);
|
|
|
16
16
|
export const flatArticles = flattenArticleTree(articleTree);
|
|
17
17
|
/** The first article in sidebar order, used as the default landing page */
|
|
18
18
|
export const firstArticle = sortedArticles.find(a => a.path === flatArticles[0]);
|
|
19
|
-
function orderKey(order) {
|
|
20
|
-
if (order === undefined)
|
|
21
|
-
return Number.MAX_SAFE_INTEGER / 2;
|
|
22
|
-
if (order < 0)
|
|
23
|
-
return Number.MAX_SAFE_INTEGER + order;
|
|
24
|
-
return order;
|
|
25
|
-
}
|
|
26
19
|
const configSections = config.sections;
|
|
27
20
|
/** Route-bound sections (everything except `custom`). Custom sections
|
|
28
21
|
* are pure links — they have no `prefix` and don't claim a URL space. */
|
|
@@ -39,7 +32,7 @@ if (routedSections.length) {
|
|
|
39
32
|
for (const [key, bucket] of buckets) {
|
|
40
33
|
const section = sectionByPrefix.get(key);
|
|
41
34
|
const sorted = section?.type === "blog" || section?.type === "changelog"
|
|
42
|
-
? [...bucket].sort(
|
|
35
|
+
? [...bucket].sort(compareArticleDate)
|
|
43
36
|
: bucket;
|
|
44
37
|
const tree = buildArticleTree(sorted);
|
|
45
38
|
const flat = flattenArticleTree(tree);
|
|
@@ -54,4 +47,4 @@ export function currentSection(path) {
|
|
|
54
47
|
return undefined;
|
|
55
48
|
return matchSection(path, routedSections);
|
|
56
49
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb250ZW50L2FydGljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVqRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRXhFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0FBRXhFLDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7QUFFbkUsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUUzRCwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRTNELDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFaEYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtBQUV0QzswRUFDMEU7QUFDMUUsTUFBTSxjQUFjLEdBQUcsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO0FBRTdFLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQTtBQUVuRSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUE7QUFFOUQsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFBO0FBRXhFLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNsRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FDVixPQUFPLEVBQUUsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLEVBQUUsSUFBSSxLQUFLLFdBQVc7WUFDdkQsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNaLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNsQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7QUFDSCxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUM1QyxPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUE7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbmltcG9ydCB7IGFsbEFydGljbGVzIH0gZnJvbSBcImNvbnRlbnQtY29sbGVjdGlvbnNcIlxuaW1wb3J0IHR5cGUgeyBBcnRpY2xlTm9kZSB9IGZyb20gXCIuLi9tb2RlbHMvYXJ0aWNsZS50c1wiXG5pbXBvcnQge1xuICBidWlsZEFydGljbGVUcmVlLFxuICBjb21wYXJlQXJ0aWNsZURhdGUsXG4gIGNvbXBhcmVBcnRpY2xlT3JkZXIsXG4gIGZsYXR0ZW5BcnRpY2xlVHJlZSxcbn0gZnJvbSBcIi4uL2hlbHBlcnMvYXJ0aWNsZS50c1wiXG5pbXBvcnQgeyBtYXRjaFNlY3Rpb24sIHBhcnRpdGlvbkJ5U2VjdGlvbiB9IGZyb20gXCIuLi9oZWxwZXJzL3NlY3Rpb24udHNcIlxuXG4vKipcbiAqIEFydGljbGVzIHNvcnRlZCBieSBmcm9udG1hdHRlciBgb3JkZXJgOlxuICogcG9zaXRpdmUgdmFsdWVzIGZpcnN0IChhc2NlbmRpbmcpLCB0aGVuIHVub3JkZXJlZCwgdGhlbiBuZWdhdGl2ZSB2YWx1ZXNcbiAqIChzbyBgb3JkZXI6IC0xYCBsYW5kcyBhdCB0aGUgdmVyeSBlbmQsIGAtMmAganVzdCBiZWZvcmUgaXQsIGFuZCBzbyBvbikuXG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0ZWRBcnRpY2xlcyA9IFsuLi5hbGxBcnRpY2xlc10uc29ydChjb21wYXJlQXJ0aWNsZU9yZGVyKVxuXG4vKiogVGhlIGFydGljbGUgd2hvc2UgcGF0aCBpcyBgL2AsIGlmIGFueSAocmVuZGVyZWQgaW4gcGxhY2UgYXQgdGhlIHJvb3QpICovXG5leHBvcnQgY29uc3QgaG9tZUFydGljbGUgPSBzb3J0ZWRBcnRpY2xlcy5maW5kKGEgPT4gYS5wYXRoID09PSBcIi9cIilcblxuLyoqIFNpZGViYXIgdHJlZSBkZXJpdmVkIGZyb20gdGhlIGFydGljbGUgcGF0aCBoaWVyYXJjaHkgKi9cbmV4cG9ydCBjb25zdCBhcnRpY2xlVHJlZSA9IGJ1aWxkQXJ0aWNsZVRyZWUoc29ydGVkQXJ0aWNsZXMpXG5cbi8qKiBBcnRpY2xlcyBpbiBkZXB0aC1maXJzdCBvcmRlciBhY3Jvc3MgdGhlIHRyZWUgKG1hdGNoZXMgc2lkZWJhciB3YWxrKSAqL1xuZXhwb3J0IGNvbnN0IGZsYXRBcnRpY2xlcyA9IGZsYXR0ZW5BcnRpY2xlVHJlZShhcnRpY2xlVHJlZSlcblxuLyoqIFRoZSBmaXJzdCBhcnRpY2xlIGluIHNpZGViYXIgb3JkZXIsIHVzZWQgYXMgdGhlIGRlZmF1bHQgbGFuZGluZyBwYWdlICovXG5leHBvcnQgY29uc3QgZmlyc3RBcnRpY2xlID0gc29ydGVkQXJ0aWNsZXMuZmluZChhID0+IGEucGF0aCA9PT0gZmxhdEFydGljbGVzWzBdKVxuXG5jb25zdCBjb25maWdTZWN0aW9ucyA9IGNvbmZpZy5zZWN0aW9uc1xuXG4vKiogUm91dGUtYm91bmQgc2VjdGlvbnMgKGV2ZXJ5dGhpbmcgZXhjZXB0IGBjdXN0b21gKS4gQ3VzdG9tIHNlY3Rpb25zXG4gKiAgYXJlIHB1cmUgbGlua3Mg4oCUIHRoZXkgaGF2ZSBubyBgcHJlZml4YCBhbmQgZG9uJ3QgY2xhaW0gYSBVUkwgc3BhY2UuICovXG5jb25zdCByb3V0ZWRTZWN0aW9ucyA9IGNvbmZpZ1NlY3Rpb25zPy5maWx0ZXIocyA9PiBzLnR5cGUgIT09IFwiY3VzdG9tXCIpID8/IFtdXG5cbi8qKiBQZXItc2VjdGlvbiBhcnRpY2xlIHRyZWUsIGtleWVkIGJ5IHNlY3Rpb24gcHJlZml4ICovXG5leHBvcnQgY29uc3Qgc2VjdGlvbkFydGljbGVUcmVlcyA9IG5ldyBNYXA8c3RyaW5nLCBBcnRpY2xlTm9kZVtdPigpXG5cbi8qKiBQZXItc2VjdGlvbiBmbGF0IGFydGljbGUgbGlzdHMsIGtleWVkIGJ5IHNlY3Rpb24gcHJlZml4ICovXG5leHBvcnQgY29uc3Qgc2VjdGlvbkZsYXRBcnRpY2xlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKVxuXG4vKiogUGVyLXNlY3Rpb24gZmlyc3QgYXJ0aWNsZSBwYXRoLCBrZXllZCBieSBzZWN0aW9uIHByZWZpeCAqL1xuZXhwb3J0IGNvbnN0IHNlY3Rpb25GaXJzdEFydGljbGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPigpXG5cbmlmIChyb3V0ZWRTZWN0aW9ucy5sZW5ndGgpIHtcbiAgY29uc3Qgc2VjdGlvbkJ5UHJlZml4ID0gbmV3IE1hcChyb3V0ZWRTZWN0aW9ucy5tYXAocyA9PiBbcy5wcmVmaXgsIHNdKSlcbiAgY29uc3QgYnVja2V0cyA9IHBhcnRpdGlvbkJ5U2VjdGlvbihzb3J0ZWRBcnRpY2xlcywgcm91dGVkU2VjdGlvbnMpXG4gIGZvciAoY29uc3QgW2tleSwgYnVja2V0XSBvZiBidWNrZXRzKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25CeVByZWZpeC5nZXQoa2V5KVxuICAgIGNvbnN0IHNvcnRlZCA9XG4gICAgICBzZWN0aW9uPy50eXBlID09PSBcImJsb2dcIiB8fCBzZWN0aW9uPy50eXBlID09PSBcImNoYW5nZWxvZ1wiXG4gICAgICAgID8gWy4uLmJ1Y2tldF0uc29ydChjb21wYXJlQXJ0aWNsZURhdGUpXG4gICAgICAgIDogYnVja2V0XG4gICAgY29uc3QgdHJlZSA9IGJ1aWxkQXJ0aWNsZVRyZWUoc29ydGVkKVxuICAgIGNvbnN0IGZsYXQgPSBmbGF0dGVuQXJ0aWNsZVRyZWUodHJlZSlcbiAgICBzZWN0aW9uQXJ0aWNsZVRyZWVzLnNldChrZXksIHRyZWUpXG4gICAgc2VjdGlvbkZsYXRBcnRpY2xlcy5zZXQoa2V5LCBmbGF0KVxuICAgIHNlY3Rpb25GaXJzdEFydGljbGUuc2V0KGtleSwgZmxhdFswXSlcbiAgfVxufVxuXG4vKiogRmluZCB3aGljaCByb3V0ZWQgY29uZmlnIHNlY3Rpb24gYW4gYXJ0aWNsZSBwYXRoIGJlbG9uZ3MgdG8gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJyZW50U2VjdGlvbihwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKCFyb3V0ZWRTZWN0aW9ucy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIG1hdGNoU2VjdGlvbihwYXRoLCByb3V0ZWRTZWN0aW9ucylcbn1cbiJdfQ==
|
|
@@ -46,6 +46,7 @@ import { transformerIcon } from "./plugins/shiki-icon.js";
|
|
|
46
46
|
import { resolveAssetPath } from "./helpers/resolve-asset-path.js";
|
|
47
47
|
import { resolveIncludes } from "./helpers/resolve-includes.js";
|
|
48
48
|
import { extractSearchText } from "./helpers/search-text.js";
|
|
49
|
+
import { stripLeadingH1 } from "./helpers/llms.js";
|
|
49
50
|
import { extractToc } from "./helpers/toc.js";
|
|
50
51
|
const config = await loadConfig();
|
|
51
52
|
const changelogSections = config.sections?.filter(s => s.type === "changelog") ?? [];
|
|
@@ -88,9 +89,6 @@ function getLastUpdated(filePath) {
|
|
|
88
89
|
return undefined;
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
|
-
function stripLeadingH1(content) {
|
|
92
|
-
return content.replace(/^[ \t]*#\s+[^\n]*\n+/, "");
|
|
93
|
-
}
|
|
94
92
|
function extractTitle(content, path) {
|
|
95
93
|
const match = /^#\s+(.+)$/m.exec(content);
|
|
96
94
|
if (match)
|
|
@@ -218,4 +216,4 @@ export default defineConfig({
|
|
|
218
216
|
// @ts-expect-error tsgo picks wrong overload when rehype-slug augments unified types
|
|
219
217
|
content: [articles],
|
|
220
218
|
});
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9jb250ZW50LWNvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLFdBQVcsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RCxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sb0JBQW9CLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDN0MsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFDM0MsT0FB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TUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDN0MsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUs7WUFDckIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNqRSxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ2IsT0FBTztZQUNMLEdBQUcsR0FBRztZQUNOLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVztZQUNYLEtBQUs7WUFDTCxLQUFLO1lBQ0wsSUFBSTtZQUNKLElBQUk7WUFDSixRQUFRO1lBQ1IsVUFBVTtZQUNWLEdBQUc7U0FDSixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQTtBQUVGLGVBQWUsWUFBWSxDQUFDO0lBQzFCLHFGQUFxRjtJQUNyRixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Q0FDcEIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBiYXNlbmFtZSwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IERFRkFVTFRfRVhDTFVERVMgfSBmcm9tIFwiLi9zZXR0aW5ncy50c1wiXG5pbXBvcnQgeyBkZWZpbmVDb2xsZWN0aW9uLCBkZWZpbmVDb25maWcgfSBmcm9tIFwiQGNvbnRlbnQtY29sbGVjdGlvbnMvY29yZVwiXG5pbXBvcnQgeyBjb21waWxlTURYIH0gZnJvbSBcIkBjb250ZW50LWNvbGxlY3Rpb25zL21keFwiXG5pbXBvcnQgcmVoeXBlU2hpa2kgZnJvbSBcIkBzaGlraWpzL3JlaHlwZVwiXG5pbXBvcnQgeyB0cmFuc2Zvcm1lclR3b3NsYXNoIH0gZnJvbSBcIkBzaGlraWpzL3R3b3NsYXNoXCJcbmltcG9ydCByZWh5cGVLYXRleCBmcm9tIFwicmVoeXBlLWthdGV4XCJcbmltcG9ydCByZWh5cGVTbHVnIGZyb20gXCJyZWh5cGUtc2x1Z1wiXG5pbXBvcnQgcmVtYXJrRGVmaW5pdGlvbkxpc3QgZnJvbSBcInJlbWFyay1kZWZpbml0aW9uLWxpc3RcIlxuaW1wb3J0IHJlbWFya0RpcmVjdGl2ZSBmcm9tIFwicmVtYXJrLWRpcmVjdGl2ZVwiXG5pbXBvcnQgcmVtYXJrR2Vtb2ppIGZyb20gXCJyZW1hcmstZ2Vtb2ppXCJcbmltcG9ydCByZW1hcmtHZm0gZnJvbSBcInJlbWFyay1nZm1cIlxuaW1wb3J0IHJlbWFya01hdGggZnJvbSBcInJlbWFyay1tYXRoXCJcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzXCJcbmltcG9ydCB7IGJ1aWxkQ2hhbmdlbG9nLCBjYWNoZUluY2x1ZGVHbG9iIH0gZnJvbSBcIi4vYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHNcIlxuaW1wb3J0IHsgQXJ0aWNsZSB9IGZyb20gXCIuL21vZGVscy9hcnRpY2xlLnRzXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHJlbWFya0N1c3RvbUhlYWRpbmdJZCBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1jdXN0b20taGVhZGluZy1pZC50c1wiXG5pbXBvcnQgeyByZW1hcmtDYWxsb3V0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY2FsbG91dC50c1wiXG5pbXBvcnQgeyByZW1hcmtDYXJkIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY2FyZC50c1wiXG5pbXBvcnQgeyByZW1hcmtDb2x1bW5zIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY29sdW1ucy50c1wiXG5pbXBvcnQgeyByZW1hcmtUYWIgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay10YWIudHNcIlxuaW1wb3J0IHsgcmVtYXJrQmFkZ2UgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1iYWRnZS50c1wiXG5pbXBvcnQgeyByZW1hcmtCdXR0b24gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1idXR0b24udHNcIlxuaW1wb3J0IHsgcmVtYXJrQWJiciB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWFiYnIudHNcIlxuaW1wb3J0IHsgcmVtYXJrRGVmbGlzdCB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWRlZmxpc3QudHNcIlxuaW1wb3J0IHsgcmVtYXJrRGV0YWlscyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWRldGFpbHMudHNcIlxuaW1wb3J0IHsgcmVtYXJrRmlsZXRyZWUgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1maWxldHJlZS50c1wiXG5pbXBvcnQgeyByZW1hcmtJY29uIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstaWNvbi50c1wiXG5pbXBvcnQgeyByZW1hcmtDb2RlVGFicyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWNvZGUtdGFicy50c1wiXG5pbXBvcnQgeyByZW1hcmtHaXRodWJDYWxsb3V0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstZ2l0aHViLWNhbGxvdXQudHNcIlxuaW1wb3J0IHsgcmVtYXJrSW1hZ2UgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1pbWFnZS50c1wiXG5pbXBvcnQgeyByZW1hcmtNZWRpYSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLW1lZGlhLnRzXCJcbmltcG9ydCB7IHJlbWFya0Fuc2kgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1hbnNpLnRzXCJcbmltcG9ydCB7IHJlbWFya01lcm1haWQgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1tZXJtYWlkLnRzXCJcbmltcG9ydCB7IHJlbWFya1RvYyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXRvYy50c1wiXG5pbXBvcnQgeyByZW1hcmtOcG0gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1ucG0udHNcIlxuaW1wb3J0IHsgcmVtYXJrU3RlcHMgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1zdGVwcy50c1wiXG5pbXBvcnQgeyByZW1hcmtQYXNzdGhyb3VnaERpcmVjdGl2ZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXBhc3N0aHJvdWdoLWRpcmVjdGl2ZS50c1wiXG5pbXBvcnQge1xuICB0cmFuc2Zvcm1lckxpbmVIaWdobGlnaHQsXG4gIHRyYW5zZm9ybWVyTm90YXRpb25zLFxufSBmcm9tIFwiLi9wbHVnaW5zL3NoaWtpLWxpbmUtaGlnaGxpZ2h0LnRzXCJcbmltcG9ydCB7IHJlaHlwZUlubGluZUNvZGUgfSBmcm9tIFwiLi9wbHVnaW5zL3JlaHlwZS1pbmxpbmUtY29kZS50c1wiXG5pbXBvcnQgeyByZWh5cGVUYXNrTGlzdEExMXkgfSBmcm9tIFwiLi9wbHVnaW5zL3JlaHlwZS10YXNrLWxpc3QtYTExeS50c1wiXG5pbXBvcnQgeyB0cmFuc2Zvcm1lckljb24gfSBmcm9tIFwiLi9wbHVnaW5zL3NoaWtpLWljb24udHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUFzc2V0UGF0aCB9IGZyb20gXCIuL2hlbHBlcnMvcmVzb2x2ZS1hc3NldC1wYXRoLnRzXCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy50c1wiXG5pbXBvcnQgeyBleHRyYWN0U2VhcmNoVGV4dCB9IGZyb20gXCIuL2hlbHBlcnMvc2VhcmNoLXRleHQudHNcIlxuaW1wb3J0IHsgZXh0cmFjdFRvYyB9IGZyb20gXCIuL2hlbHBlcnMvdG9jLnRzXCJcblxuY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZygpXG5cbmNvbnN0IGNoYW5nZWxvZ1NlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zPy5maWx0ZXIocyA9PiBzLnR5cGUgPT09IFwiY2hhbmdlbG9nXCIpID8/IFtdXG5mb3IgKGNvbnN0IHNlY3Rpb24gb2YgY2hhbmdlbG9nU2VjdGlvbnMpIHtcbiAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc2VjdGlvbiwgY29uZmlnKVxufVxuXG5jb25zdCBjb25maWdJbmNsdWRlID0gQXJyYXkuaXNBcnJheShjb25maWcuaW5jbHVkZSkgPyBjb25maWcuaW5jbHVkZSA6IFtjb25maWcuaW5jbHVkZV1cbmNvbnN0IGluY2x1ZGUgPSBbXG4gIC4uLmNvbmZpZ0luY2x1ZGUsXG4gIC4uLmNoYW5nZWxvZ1NlY3Rpb25zLm1hcChzZWN0aW9uID0+IGNhY2hlSW5jbHVkZUdsb2Ioc2VjdGlvbiwgY29uZmlnKSksXG5dXG5cbmNvbnN0IHVzZXJFeGNsdWRlID0gY29uZmlnLmV4Y2x1ZGVcbiAgPyBBcnJheS5pc0FycmF5KGNvbmZpZy5leGNsdWRlKVxuICAgID8gY29uZmlnLmV4Y2x1ZGVcbiAgICA6IFtjb25maWcuZXhjbHVkZV1cbiAgOiBbXVxuLy8gV2hlbiB0aGUgY29uc3VtZXIgZG9lc24ndCBoYXZlIGEgLmdpdGlnbm9yZSwgZmFsbCBiYWNrIHRvIGEgc2Vuc2libGVcbi8vIGZsb29yIHNvIGAqKi8qLm1kYCBkb2Vzbid0IHN3ZWVwIHVwIGV2ZXJ5IFJFQURNRS5tZCB1bmRlciBub2RlX21vZHVsZXMsXG4vLyBidWlsZCBvdXRwdXRzLCBldGMuIFdpdGggYSAuZ2l0aWdub3JlIHByZXNlbnQgd2UgdHJ1c3QgdGhlIHVzZXIuXG5jb25zdCBoYXNHaXRpZ25vcmUgPSBleGlzdHNTeW5jKHJlc29sdmUoY29uZmlnLnJvb3QsIFwiLmdpdGlnbm9yZVwiKSlcbmNvbnN0IGRlZmF1bHRFeGNsdWRlID0gaGFzR2l0aWdub3JlID8gW10gOiBbLi4uREVGQVVMVF9FWENMVURFU11cbmNvbnN0IGV4Y2x1ZGUgPSBbLi4uZGVmYXVsdEV4Y2x1ZGUsIC4uLnVzZXJFeGNsdWRlXVxuXG4vLyBjb250ZW50LWNvbGxlY3Rpb25zIGNvbXBpbGVzIHRoaXMgZmlsZSB0byAuY29udGVudC1jb2xsZWN0aW9ucy9jYWNoZS87XG4vLyBnb2luZyB1cCAyIGxldmVscyByZWNvbnN0cnVjdHMgdGhlIGJhc2VEaXJlY3RvcnkgaXQgdXNlcyBmb3IgcGF0aCByZXNvbHV0aW9uXG5jb25zdCBiYXNlRGlyID0gcmVzb2x2ZShpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uLy4uXCIpXG5jb25zdCBkaXJlY3RvcnkgPSByZWxhdGl2ZShiYXNlRGlyLCBjb25maWcucm9vdCkgfHwgXCIuXCJcblxuZnVuY3Rpb24gdG9QYXRoKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgbmFtZSA9IGJhc2VuYW1lKGZpbGVQYXRoKS5yZXBsYWNlKC9cXC5cXHcrJC8sIFwiXCIpXG4gIHJldHVybiBzbHVnaWZ5KG5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldExhc3RVcGRhdGVkKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBleGVjU3luYyhgZ2l0IGxvZyAtMSAtLWZvcm1hdD0lY0kgLS0gXCIke2ZpbGVQYXRofVwiYCwge1xuICAgICAgY3dkOiBjb25maWcucm9vdCxcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgfSkudHJpbSgpXG4gICAgcmV0dXJuIHRpbWVzdGFtcCB8fCB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwTGVhZGluZ0gxKGNvbnRlbnQ6IHN0cmluZykge1xuICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9eWyBcXHRdKiNcXHMrW15cXG5dKlxcbisvLCBcIlwiKVxufVxuXG5mdW5jdGlvbiBleHRyYWN0VGl0bGUoY29udGVudDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF0Y2ggPSAvXiNcXHMrKC4rKSQvbS5leGVjKGNvbnRlbnQpXG4gIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoWzFdIVxuICByZXR1cm4gKFxuICAgIHBhdGhcbiAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgIC5wb3AoKVxuICAgICAgPy5yZXBsYWNlKC9cXC5cXHcrJC8sIFwiXCIpID8/IHBhdGhcbiAgKVxufVxuXG5jb25zdCBhcnRpY2xlcyA9IGRlZmluZUNvbGxlY3Rpb24oe1xuICBuYW1lOiBcImFydGljbGVzXCIsXG4gIGRpcmVjdG9yeSxcbiAgaW5jbHVkZSxcbiAgZXhjbHVkZSxcbiAgc2NoZW1hOiBBcnRpY2xlLFxuICB0cmFuc2Zvcm06IGFzeW5jIChkb2N1bWVudCwgY29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHBhdGNoID0gY29uZmlnLnBhdGNoZXM/LmZpbmQocCA9PiBwLmZpbGUgPT09IGRvY3VtZW50Ll9tZXRhLmZpbGVQYXRoKVxuICAgIGNvbnN0IGRvYyA9IHBhdGNoID8geyAuLi5kb2N1bWVudCwgLi4ucGF0Y2guYXJ0aWNsZSB9IDogZG9jdW1lbnRcbiAgICBjb25zdCBmaWxlUGF0aCA9IHJlc29sdmUoY29uZmlnLnJvb3QsIGRvYy5fbWV0YS5maWxlUGF0aClcbiAgICBjb25zdCBjb250ZW50ID0gcmVzb2x2ZUluY2x1ZGVzKGRvYy5jb250ZW50LCBmaWxlUGF0aClcbiAgICBjb25zdCB0aXRsZSA9IGRvYy50aXRsZSA/PyBleHRyYWN0VGl0bGUoY29udGVudCwgZG9jLl9tZXRhLnBhdGgpXG4gICAgY29uc3QgaWNvbiA9IGRvYy5pY29uXG4gICAgY29uc3QgcGF0aCA9IGRvYy5wYXRoID8/IHRvUGF0aChkb2MuX21ldGEuZmlsZVBhdGgpXG4gICAgLy8gVGhlIGFydGljbGUncyBoMSBpcyByZW5kZXJlZCBmcm9tIGB0aXRsZWAgYnkgdGhlIGxheW91dCwgc28gc3RyaXAgYW55XG4gICAgLy8gbGVhZGluZyBoMSBpbiB0aGUgYm9keSB0byBhdm9pZCB0d28gaDFzIHNpZGUtYnktc2lkZSAoZXNwZWNpYWxseSB3aGVuXG4gICAgLy8gYSBjb250ZW50IHBhdGNoIG92ZXJyaWRlcyB0aGUgdGl0bGUgdG8gc29tZXRoaW5nIGRpZmZlcmVudCBmcm9tIHRoZVxuICAgIC8vIGJvZHkncyBvd24gaGVhZGluZykuXG4gICAgY29uc3QgYm9keUNvbnRlbnQgPSBzdHJpcExlYWRpbmdIMShjb250ZW50KVxuICAgIGNvbnN0IG1keCA9IGF3YWl0IGNvbXBpbGVNRFgoXG4gICAgICBjb250ZXh0LFxuICAgICAgeyAuLi5kb2MsIGNvbnRlbnQ6IGJvZHlDb250ZW50IH0sXG4gICAgICB7XG4gICAgICAgIHJlbWFya1BsdWdpbnM6IFtcbiAgICAgICAgICByZW1hcmtHZm0sXG4gICAgICAgICAgcmVtYXJrR2Vtb2ppLFxuICAgICAgICAgIHJlbWFya0RlZmluaXRpb25MaXN0LFxuICAgICAgICAgIHJlbWFya0RlZmxpc3QsXG4gICAgICAgICAgcmVtYXJrTWF0aCxcbiAgICAgICAgICByZW1hcmtEaXJlY3RpdmUsXG4gICAgICAgICAgcmVtYXJrQ2FsbG91dCxcbiAgICAgICAgICByZW1hcmtDYXJkLFxuICAgICAgICAgIHJlbWFya0NvbHVtbnMsXG4gICAgICAgICAgcmVtYXJrVGFiLFxuICAgICAgICAgIHJlbWFya0RldGFpbHMsXG4gICAgICAgICAgcmVtYXJrRmlsZXRyZWUsXG4gICAgICAgICAgcmVtYXJrSWNvbixcbiAgICAgICAgICByZW1hcmtCYWRnZSxcbiAgICAgICAgICByZW1hcmtCdXR0b24sXG4gICAgICAgICAgcmVtYXJrQWJicixcbiAgICAgICAgICByZW1hcmtHaXRodWJDYWxsb3V0LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHJlbWFya0ltYWdlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZShjb25maWcucm9vdCwgZG9jLl9tZXRhLmZpbGVQYXRoKSxcbiAgICAgICAgICAgICAgcm9vdDogY29uZmlnLnJvb3QsXG4gICAgICAgICAgICAgIGJhc2U6IGNvbmZpZy5iYXNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlbWFya0Fuc2ksXG4gICAgICAgICAgcmVtYXJrTWVybWFpZCxcbiAgICAgICAgICByZW1hcmtNZWRpYSxcbiAgICAgICAgICByZW1hcmtUb2MsXG4gICAgICAgICAgcmVtYXJrTnBtLFxuICAgICAgICAgIHJlbWFya0NvZGVUYWJzLFxuICAgICAgICAgIHJlbWFya1N0ZXBzLFxuICAgICAgICAgIHJlbWFya0N1c3RvbUhlYWRpbmdJZCxcbiAgICAgICAgICAvLyBSdW4gbGFzdDogYW55dGhpbmcgc3RpbGwgdHlwZWQgYXMgYSBkaXJlY3RpdmUgYWZ0ZXIgZXZlcnkgaGFuZGxlclxuICAgICAgICAgIC8vIGFib3ZlIGlzIHVuaW50ZW5kZWQgKGUuZy4gYDMuMjoxYCwgYHBvcnQ6ODA4MGApIOKAlCBwYXNzdGhyb3VnaCBhc1xuICAgICAgICAgIC8vIHBsYWluIHRleHQgc28gaXQgZG9lc24ndCByZW5kZXIgYXMgYW4gZW1wdHkgc3Bhbi9kaXYuXG4gICAgICAgICAgcmVtYXJrUGFzc3Rocm91Z2hEaXJlY3RpdmUsXG4gICAgICAgIF0sXG4gICAgICAgIHJlaHlwZVBsdWdpbnM6IFtcbiAgICAgICAgICBbXG4gICAgICAgICAgICByZWh5cGVTaGlraSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGhlbWVzOiB7XG4gICAgICAgICAgICAgICAgbGlnaHQ6IGNvbmZpZy5jb2RlVGhlbWVMaWdodCxcbiAgICAgICAgICAgICAgICBkYXJrOiBjb25maWcuY29kZVRoZW1lRGFyayxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gQSBmZW5jZSB3aXRoIG5vIG9yIGFuIHVua25vd24gbGFuZyBpcyBvdGhlcndpc2Ugc2tpcHBlZCBieSBTaGlraSBhbmRcbiAgICAgICAgICAgICAgLy8gcmVuZGVycyB3aXRob3V0IGxpbmUgcGFkZGluZywgdGhlbWUgY29sb3VycyBvciB0cmFuc2Zvcm1lcnMuXG4gICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIGZhbGxiYWNrTGFuZ3VhZ2U6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAvLyBEYXJrZW4gY2F0cHB1Y2Npbi1sYXR0ZSdzIGdyZWVuICh0aGUgY29sb3VyIHVzZWQgZm9yIHN0cmluZ3MgYW5kXG4gICAgICAgICAgICAgIC8vIHNvbWUgY29tbWVudHMpIOKAlCB0aGUgdGhlbWUgZGVmYXVsdCAjNDBBMDJCIGxhbmRzIGF0IDMuMjoxIG9uIHRoZVxuICAgICAgICAgICAgICAvLyBjb2RlLWJsb2NrIGJhY2tncm91bmQsIGJlbG93IHRoZSBXQ0FHIEFBIDQuNToxIHRocmVzaG9sZC5cbiAgICAgICAgICAgICAgY29sb3JSZXBsYWNlbWVudHM6IHtcbiAgICAgICAgICAgICAgICBcImNhdHBwdWNjaW4tbGF0dGVcIjoge1xuICAgICAgICAgICAgICAgICAgXCIjNDBhMDJiXCI6IFwiIzJhN2UxNlwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVyczogW1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVyVHdvc2xhc2goeyBleHBsaWNpdFRyaWdnZXI6IHRydWUgfSksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZXJJY29uKCksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZXJOb3RhdGlvbnMoKSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lckxpbmVIaWdobGlnaHQoKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcGFyc2VNZXRhU3RyaW5nOiAobWV0YTogc3RyaW5nKSA9PiAoeyBcImRhdGEtbWV0YVwiOiBtZXRhIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlaHlwZUlubGluZUNvZGUsXG4gICAgICAgICAgcmVoeXBlU2x1ZyxcbiAgICAgICAgICByZWh5cGVLYXRleCxcbiAgICAgICAgICByZWh5cGVUYXNrTGlzdEExMXksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIClcbiAgICBjb25zdCB0b2NJdGVtcyA9IGV4dHJhY3RUb2MoY29udGVudClcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXh0cmFjdFNlYXJjaFRleHQoY29udGVudClcbiAgICBjb25zdCBsYXN0VXBkYXRlZCA9IGdldExhc3RVcGRhdGVkKGRvYy5fbWV0YS5maWxlUGF0aClcbiAgICBjb25zdCBpbWFnZSA9IGRvYy5pbWFnZVxuICAgICAgPyByZXNvbHZlQXNzZXRQYXRoKGRvYy5pbWFnZSwgZmlsZVBhdGgsIGNvbmZpZy5yb290LCBjb25maWcuYmFzZSlcbiAgICAgIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRvYyxcbiAgICAgIGZpbGU6IGRvYy5fbWV0YS5maWxlUGF0aCxcbiAgICAgIGxhc3RVcGRhdGVkLFxuICAgICAgaW1hZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIGljb24sXG4gICAgICBwYXRoLFxuICAgICAgdG9jSXRlbXMsXG4gICAgICBzZWFyY2hUZXh0LFxuICAgICAgbWR4LFxuICAgIH1cbiAgfSxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgdHNnbyBwaWNrcyB3cm9uZyBvdmVybG9hZCB3aGVuIHJlaHlwZS1zbHVnIGF1Z21lbnRzIHVuaWZpZWQgdHlwZXNcbiAgY29udGVudDogW2FydGljbGVzXSxcbn0pXG4iXX0=
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9jb250ZW50LWNvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLFdBQVcsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RCxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sb0JBQW9CLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDN0MsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFDM0MsT0FB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TSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUs7WUFDckIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNqRSxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ2IsT0FBTztZQUNMLEdBQUcsR0FBRztZQUNOLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVztZQUNYLEtBQUs7WUFDTCxLQUFLO1lBQ0wsSUFBSTtZQUNKLElBQUk7WUFDSixRQUFRO1lBQ1IsVUFBVTtZQUNWLEdBQUc7U0FDSixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQTtBQUVGLGVBQWUsWUFBWSxDQUFDO0lBQzFCLHFGQUFxRjtJQUNyRixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Q0FDcEIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBiYXNlbmFtZSwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IERFRkFVTFRfRVhDTFVERVMgfSBmcm9tIFwiLi9zZXR0aW5ncy50c1wiXG5pbXBvcnQgeyBkZWZpbmVDb2xsZWN0aW9uLCBkZWZpbmVDb25maWcgfSBmcm9tIFwiQGNvbnRlbnQtY29sbGVjdGlvbnMvY29yZVwiXG5pbXBvcnQgeyBjb21waWxlTURYIH0gZnJvbSBcIkBjb250ZW50LWNvbGxlY3Rpb25zL21keFwiXG5pbXBvcnQgcmVoeXBlU2hpa2kgZnJvbSBcIkBzaGlraWpzL3JlaHlwZVwiXG5pbXBvcnQgeyB0cmFuc2Zvcm1lclR3b3NsYXNoIH0gZnJvbSBcIkBzaGlraWpzL3R3b3NsYXNoXCJcbmltcG9ydCByZWh5cGVLYXRleCBmcm9tIFwicmVoeXBlLWthdGV4XCJcbmltcG9ydCByZWh5cGVTbHVnIGZyb20gXCJyZWh5cGUtc2x1Z1wiXG5pbXBvcnQgcmVtYXJrRGVmaW5pdGlvbkxpc3QgZnJvbSBcInJlbWFyay1kZWZpbml0aW9uLWxpc3RcIlxuaW1wb3J0IHJlbWFya0RpcmVjdGl2ZSBmcm9tIFwicmVtYXJrLWRpcmVjdGl2ZVwiXG5pbXBvcnQgcmVtYXJrR2Vtb2ppIGZyb20gXCJyZW1hcmstZ2Vtb2ppXCJcbmltcG9ydCByZW1hcmtHZm0gZnJvbSBcInJlbWFyay1nZm1cIlxuaW1wb3J0IHJlbWFya01hdGggZnJvbSBcInJlbWFyay1tYXRoXCJcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzXCJcbmltcG9ydCB7IGJ1aWxkQ2hhbmdlbG9nLCBjYWNoZUluY2x1ZGVHbG9iIH0gZnJvbSBcIi4vYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHNcIlxuaW1wb3J0IHsgQXJ0aWNsZSB9IGZyb20gXCIuL21vZGVscy9hcnRpY2xlLnRzXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHJlbWFya0N1c3RvbUhlYWRpbmdJZCBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1jdXN0b20taGVhZGluZy1pZC50c1wiXG5pbXBvcnQgeyByZW1hcmtDYWxsb3V0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY2FsbG91dC50c1wiXG5pbXBvcnQgeyByZW1hcmtDYXJkIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY2FyZC50c1wiXG5pbXBvcnQgeyByZW1hcmtDb2x1bW5zIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstY29sdW1ucy50c1wiXG5pbXBvcnQgeyByZW1hcmtUYWIgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay10YWIudHNcIlxuaW1wb3J0IHsgcmVtYXJrQmFkZ2UgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1iYWRnZS50c1wiXG5pbXBvcnQgeyByZW1hcmtCdXR0b24gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1idXR0b24udHNcIlxuaW1wb3J0IHsgcmVtYXJrQWJiciB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWFiYnIudHNcIlxuaW1wb3J0IHsgcmVtYXJrRGVmbGlzdCB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWRlZmxpc3QudHNcIlxuaW1wb3J0IHsgcmVtYXJrRGV0YWlscyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWRldGFpbHMudHNcIlxuaW1wb3J0IHsgcmVtYXJrRmlsZXRyZWUgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1maWxldHJlZS50c1wiXG5pbXBvcnQgeyByZW1hcmtJY29uIH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstaWNvbi50c1wiXG5pbXBvcnQgeyByZW1hcmtDb2RlVGFicyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLWNvZGUtdGFicy50c1wiXG5pbXBvcnQgeyByZW1hcmtHaXRodWJDYWxsb3V0IH0gZnJvbSBcIi4vcGx1Z2lucy9yZW1hcmstZ2l0aHViLWNhbGxvdXQudHNcIlxuaW1wb3J0IHsgcmVtYXJrSW1hZ2UgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1pbWFnZS50c1wiXG5pbXBvcnQgeyByZW1hcmtNZWRpYSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLW1lZGlhLnRzXCJcbmltcG9ydCB7IHJlbWFya0Fuc2kgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1hbnNpLnRzXCJcbmltcG9ydCB7IHJlbWFya01lcm1haWQgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1tZXJtYWlkLnRzXCJcbmltcG9ydCB7IHJlbWFya1RvYyB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXRvYy50c1wiXG5pbXBvcnQgeyByZW1hcmtOcG0gfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1ucG0udHNcIlxuaW1wb3J0IHsgcmVtYXJrU3RlcHMgfSBmcm9tIFwiLi9wbHVnaW5zL3JlbWFyay1zdGVwcy50c1wiXG5pbXBvcnQgeyByZW1hcmtQYXNzdGhyb3VnaERpcmVjdGl2ZSB9IGZyb20gXCIuL3BsdWdpbnMvcmVtYXJrLXBhc3N0aHJvdWdoLWRpcmVjdGl2ZS50c1wiXG5pbXBvcnQge1xuICB0cmFuc2Zvcm1lckxpbmVIaWdobGlnaHQsXG4gIHRyYW5zZm9ybWVyTm90YXRpb25zLFxufSBmcm9tIFwiLi9wbHVnaW5zL3NoaWtpLWxpbmUtaGlnaGxpZ2h0LnRzXCJcbmltcG9ydCB7IHJlaHlwZUlubGluZUNvZGUgfSBmcm9tIFwiLi9wbHVnaW5zL3JlaHlwZS1pbmxpbmUtY29kZS50c1wiXG5pbXBvcnQgeyByZWh5cGVUYXNrTGlzdEExMXkgfSBmcm9tIFwiLi9wbHVnaW5zL3JlaHlwZS10YXNrLWxpc3QtYTExeS50c1wiXG5pbXBvcnQgeyB0cmFuc2Zvcm1lckljb24gfSBmcm9tIFwiLi9wbHVnaW5zL3NoaWtpLWljb24udHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUFzc2V0UGF0aCB9IGZyb20gXCIuL2hlbHBlcnMvcmVzb2x2ZS1hc3NldC1wYXRoLnRzXCJcbmltcG9ydCB7IHJlc29sdmVJbmNsdWRlcyB9IGZyb20gXCIuL2hlbHBlcnMvcmVzb2x2ZS1pbmNsdWRlcy50c1wiXG5pbXBvcnQgeyBleHRyYWN0U2VhcmNoVGV4dCB9IGZyb20gXCIuL2hlbHBlcnMvc2VhcmNoLXRleHQudHNcIlxuaW1wb3J0IHsgc3RyaXBMZWFkaW5nSDEgfSBmcm9tIFwiLi9oZWxwZXJzL2xsbXMudHNcIlxuaW1wb3J0IHsgZXh0cmFjdFRvYyB9IGZyb20gXCIuL2hlbHBlcnMvdG9jLnRzXCJcblxuY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZygpXG5cbmNvbnN0IGNoYW5nZWxvZ1NlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zPy5maWx0ZXIocyA9PiBzLnR5cGUgPT09IFwiY2hhbmdlbG9nXCIpID8/IFtdXG5mb3IgKGNvbnN0IHNlY3Rpb24gb2YgY2hhbmdlbG9nU2VjdGlvbnMpIHtcbiAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc2VjdGlvbiwgY29uZmlnKVxufVxuXG5jb25zdCBjb25maWdJbmNsdWRlID0gQXJyYXkuaXNBcnJheShjb25maWcuaW5jbHVkZSkgPyBjb25maWcuaW5jbHVkZSA6IFtjb25maWcuaW5jbHVkZV1cbmNvbnN0IGluY2x1ZGUgPSBbXG4gIC4uLmNvbmZpZ0luY2x1ZGUsXG4gIC4uLmNoYW5nZWxvZ1NlY3Rpb25zLm1hcChzZWN0aW9uID0+IGNhY2hlSW5jbHVkZUdsb2Ioc2VjdGlvbiwgY29uZmlnKSksXG5dXG5cbmNvbnN0IHVzZXJFeGNsdWRlID0gY29uZmlnLmV4Y2x1ZGVcbiAgPyBBcnJheS5pc0FycmF5KGNvbmZpZy5leGNsdWRlKVxuICAgID8gY29uZmlnLmV4Y2x1ZGVcbiAgICA6IFtjb25maWcuZXhjbHVkZV1cbiAgOiBbXVxuLy8gV2hlbiB0aGUgY29uc3VtZXIgZG9lc24ndCBoYXZlIGEgLmdpdGlnbm9yZSwgZmFsbCBiYWNrIHRvIGEgc2Vuc2libGVcbi8vIGZsb29yIHNvIGAqKi8qLm1kYCBkb2Vzbid0IHN3ZWVwIHVwIGV2ZXJ5IFJFQURNRS5tZCB1bmRlciBub2RlX21vZHVsZXMsXG4vLyBidWlsZCBvdXRwdXRzLCBldGMuIFdpdGggYSAuZ2l0aWdub3JlIHByZXNlbnQgd2UgdHJ1c3QgdGhlIHVzZXIuXG5jb25zdCBoYXNHaXRpZ25vcmUgPSBleGlzdHNTeW5jKHJlc29sdmUoY29uZmlnLnJvb3QsIFwiLmdpdGlnbm9yZVwiKSlcbmNvbnN0IGRlZmF1bHRFeGNsdWRlID0gaGFzR2l0aWdub3JlID8gW10gOiBbLi4uREVGQVVMVF9FWENMVURFU11cbmNvbnN0IGV4Y2x1ZGUgPSBbLi4uZGVmYXVsdEV4Y2x1ZGUsIC4uLnVzZXJFeGNsdWRlXVxuXG4vLyBjb250ZW50LWNvbGxlY3Rpb25zIGNvbXBpbGVzIHRoaXMgZmlsZSB0byAuY29udGVudC1jb2xsZWN0aW9ucy9jYWNoZS87XG4vLyBnb2luZyB1cCAyIGxldmVscyByZWNvbnN0cnVjdHMgdGhlIGJhc2VEaXJlY3RvcnkgaXQgdXNlcyBmb3IgcGF0aCByZXNvbHV0aW9uXG5jb25zdCBiYXNlRGlyID0gcmVzb2x2ZShpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uLy4uXCIpXG5jb25zdCBkaXJlY3RvcnkgPSByZWxhdGl2ZShiYXNlRGlyLCBjb25maWcucm9vdCkgfHwgXCIuXCJcblxuZnVuY3Rpb24gdG9QYXRoKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgbmFtZSA9IGJhc2VuYW1lKGZpbGVQYXRoKS5yZXBsYWNlKC9cXC5cXHcrJC8sIFwiXCIpXG4gIHJldHVybiBzbHVnaWZ5KG5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldExhc3RVcGRhdGVkKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBleGVjU3luYyhgZ2l0IGxvZyAtMSAtLWZvcm1hdD0lY0kgLS0gXCIke2ZpbGVQYXRofVwiYCwge1xuICAgICAgY3dkOiBjb25maWcucm9vdCxcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgfSkudHJpbSgpXG4gICAgcmV0dXJuIHRpbWVzdGFtcCB8fCB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUaXRsZShjb250ZW50OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBjb25zdCBtYXRjaCA9IC9eI1xccysoLispJC9tLmV4ZWMoY29udGVudClcbiAgaWYgKG1hdGNoKSByZXR1cm4gbWF0Y2hbMV0hXG4gIHJldHVybiAoXG4gICAgcGF0aFxuICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgLnBvcCgpXG4gICAgICA/LnJlcGxhY2UoL1xcLlxcdyskLywgXCJcIikgPz8gcGF0aFxuICApXG59XG5cbmNvbnN0IGFydGljbGVzID0gZGVmaW5lQ29sbGVjdGlvbih7XG4gIG5hbWU6IFwiYXJ0aWNsZXNcIixcbiAgZGlyZWN0b3J5LFxuICBpbmNsdWRlLFxuICBleGNsdWRlLFxuICBzY2hlbWE6IEFydGljbGUsXG4gIHRyYW5zZm9ybTogYXN5bmMgKGRvY3VtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcGF0Y2ggPSBjb25maWcucGF0Y2hlcz8uZmluZChwID0+IHAuZmlsZSA9PT0gZG9jdW1lbnQuX21ldGEuZmlsZVBhdGgpXG4gICAgY29uc3QgZG9jID0gcGF0Y2ggPyB7IC4uLmRvY3VtZW50LCAuLi5wYXRjaC5hcnRpY2xlIH0gOiBkb2N1bWVudFxuICAgIGNvbnN0IGZpbGVQYXRoID0gcmVzb2x2ZShjb25maWcucm9vdCwgZG9jLl9tZXRhLmZpbGVQYXRoKVxuICAgIGNvbnN0IGNvbnRlbnQgPSByZXNvbHZlSW5jbHVkZXMoZG9jLmNvbnRlbnQsIGZpbGVQYXRoKVxuICAgIGNvbnN0IHRpdGxlID0gZG9jLnRpdGxlID8/IGV4dHJhY3RUaXRsZShjb250ZW50LCBkb2MuX21ldGEucGF0aClcbiAgICBjb25zdCBpY29uID0gZG9jLmljb25cbiAgICBjb25zdCBwYXRoID0gZG9jLnBhdGggPz8gdG9QYXRoKGRvYy5fbWV0YS5maWxlUGF0aClcbiAgICAvLyBUaGUgYXJ0aWNsZSdzIGgxIGlzIHJlbmRlcmVkIGZyb20gYHRpdGxlYCBieSB0aGUgbGF5b3V0LCBzbyBzdHJpcCBhbnlcbiAgICAvLyBsZWFkaW5nIGgxIGluIHRoZSBib2R5IHRvIGF2b2lkIHR3byBoMXMgc2lkZS1ieS1zaWRlIChlc3BlY2lhbGx5IHdoZW5cbiAgICAvLyBhIGNvbnRlbnQgcGF0Y2ggb3ZlcnJpZGVzIHRoZSB0aXRsZSB0byBzb21ldGhpbmcgZGlmZmVyZW50IGZyb20gdGhlXG4gICAgLy8gYm9keSdzIG93biBoZWFkaW5nKS5cbiAgICBjb25zdCBib2R5Q29udGVudCA9IHN0cmlwTGVhZGluZ0gxKGNvbnRlbnQpXG4gICAgY29uc3QgbWR4ID0gYXdhaXQgY29tcGlsZU1EWChcbiAgICAgIGNvbnRleHQsXG4gICAgICB7IC4uLmRvYywgY29udGVudDogYm9keUNvbnRlbnQgfSxcbiAgICAgIHtcbiAgICAgICAgcmVtYXJrUGx1Z2luczogW1xuICAgICAgICAgIHJlbWFya0dmbSxcbiAgICAgICAgICByZW1hcmtHZW1vamksXG4gICAgICAgICAgcmVtYXJrRGVmaW5pdGlvbkxpc3QsXG4gICAgICAgICAgcmVtYXJrRGVmbGlzdCxcbiAgICAgICAgICByZW1hcmtNYXRoLFxuICAgICAgICAgIHJlbWFya0RpcmVjdGl2ZSxcbiAgICAgICAgICByZW1hcmtDYWxsb3V0LFxuICAgICAgICAgIHJlbWFya0NhcmQsXG4gICAgICAgICAgcmVtYXJrQ29sdW1ucyxcbiAgICAgICAgICByZW1hcmtUYWIsXG4gICAgICAgICAgcmVtYXJrRGV0YWlscyxcbiAgICAgICAgICByZW1hcmtGaWxldHJlZSxcbiAgICAgICAgICByZW1hcmtJY29uLFxuICAgICAgICAgIHJlbWFya0JhZGdlLFxuICAgICAgICAgIHJlbWFya0J1dHRvbixcbiAgICAgICAgICByZW1hcmtBYmJyLFxuICAgICAgICAgIHJlbWFya0dpdGh1YkNhbGxvdXQsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgcmVtYXJrSW1hZ2UsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlKGNvbmZpZy5yb290LCBkb2MuX21ldGEuZmlsZVBhdGgpLFxuICAgICAgICAgICAgICByb290OiBjb25maWcucm9vdCxcbiAgICAgICAgICAgICAgYmFzZTogY29uZmlnLmJhc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVtYXJrQW5zaSxcbiAgICAgICAgICByZW1hcmtNZXJtYWlkLFxuICAgICAgICAgIHJlbWFya01lZGlhLFxuICAgICAgICAgIHJlbWFya1RvYyxcbiAgICAgICAgICByZW1hcmtOcG0sXG4gICAgICAgICAgcmVtYXJrQ29kZVRhYnMsXG4gICAgICAgICAgcmVtYXJrU3RlcHMsXG4gICAgICAgICAgcmVtYXJrQ3VzdG9tSGVhZGluZ0lkLFxuICAgICAgICAgIC8vIFJ1biBsYXN0OiBhbnl0aGluZyBzdGlsbCB0eXBlZCBhcyBhIGRpcmVjdGl2ZSBhZnRlciBldmVyeSBoYW5kbGVyXG4gICAgICAgICAgLy8gYWJvdmUgaXMgdW5pbnRlbmRlZCAoZS5nLiBgMy4yOjFgLCBgcG9ydDo4MDgwYCkg4oCUIHBhc3N0aHJvdWdoIGFzXG4gICAgICAgICAgLy8gcGxhaW4gdGV4dCBzbyBpdCBkb2Vzbid0IHJlbmRlciBhcyBhbiBlbXB0eSBzcGFuL2Rpdi5cbiAgICAgICAgICByZW1hcmtQYXNzdGhyb3VnaERpcmVjdGl2ZSxcbiAgICAgICAgXSxcbiAgICAgICAgcmVoeXBlUGx1Z2luczogW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIHJlaHlwZVNoaWtpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aGVtZXM6IHtcbiAgICAgICAgICAgICAgICBsaWdodDogY29uZmlnLmNvZGVUaGVtZUxpZ2h0LFxuICAgICAgICAgICAgICAgIGRhcms6IGNvbmZpZy5jb2RlVGhlbWVEYXJrLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvLyBBIGZlbmNlIHdpdGggbm8gb3IgYW4gdW5rbm93biBsYW5nIGlzIG90aGVyd2lzZSBza2lwcGVkIGJ5IFNoaWtpIGFuZFxuICAgICAgICAgICAgICAvLyByZW5kZXJzIHdpdGhvdXQgbGluZSBwYWRkaW5nLCB0aGVtZSBjb2xvdXJzIG9yIHRyYW5zZm9ybWVycy5cbiAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgZmFsbGJhY2tMYW5ndWFnZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIC8vIERhcmtlbiBjYXRwcHVjY2luLWxhdHRlJ3MgZ3JlZW4gKHRoZSBjb2xvdXIgdXNlZCBmb3Igc3RyaW5ncyBhbmRcbiAgICAgICAgICAgICAgLy8gc29tZSBjb21tZW50cykg4oCUIHRoZSB0aGVtZSBkZWZhdWx0ICM0MEEwMkIgbGFuZHMgYXQgMy4yOjEgb24gdGhlXG4gICAgICAgICAgICAgIC8vIGNvZGUtYmxvY2sgYmFja2dyb3VuZCwgYmVsb3cgdGhlIFdDQUcgQUEgNC41OjEgdGhyZXNob2xkLlxuICAgICAgICAgICAgICBjb2xvclJlcGxhY2VtZW50czoge1xuICAgICAgICAgICAgICAgIFwiY2F0cHB1Y2Npbi1sYXR0ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcIiM0MGEwMmJcIjogXCIjMmE3ZTE2XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZXJzOiBbXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZXJUd29zbGFzaCh7IGV4cGxpY2l0VHJpZ2dlcjogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lckljb24oKSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lck5vdGF0aW9ucygpLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVyTGluZUhpZ2hsaWdodCgpLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwYXJzZU1ldGFTdHJpbmc6IChtZXRhOiBzdHJpbmcpID0+ICh7IFwiZGF0YS1tZXRhXCI6IG1ldGEgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVoeXBlSW5saW5lQ29kZSxcbiAgICAgICAgICByZWh5cGVTbHVnLFxuICAgICAgICAgIHJlaHlwZUthdGV4LFxuICAgICAgICAgIHJlaHlwZVRhc2tMaXN0QTExeSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKVxuICAgIGNvbnN0IHRvY0l0ZW1zID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGNvbnN0IHNlYXJjaFRleHQgPSBleHRyYWN0U2VhcmNoVGV4dChjb250ZW50KVxuICAgIGNvbnN0IGxhc3RVcGRhdGVkID0gZ2V0TGFzdFVwZGF0ZWQoZG9jLl9tZXRhLmZpbGVQYXRoKVxuICAgIGNvbnN0IGltYWdlID0gZG9jLmltYWdlXG4gICAgICA/IHJlc29sdmVBc3NldFBhdGgoZG9jLmltYWdlLCBmaWxlUGF0aCwgY29uZmlnLnJvb3QsIGNvbmZpZy5iYXNlKVxuICAgICAgOiB1bmRlZmluZWRcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZG9jLFxuICAgICAgZmlsZTogZG9jLl9tZXRhLmZpbGVQYXRoLFxuICAgICAgbGFzdFVwZGF0ZWQsXG4gICAgICBpbWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgaWNvbixcbiAgICAgIHBhdGgsXG4gICAgICB0b2NJdGVtcyxcbiAgICAgIHNlYXJjaFRleHQsXG4gICAgICBtZHgsXG4gICAgfVxuICB9LFxufSlcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciB0c2dvIHBpY2tzIHdyb25nIG92ZXJsb2FkIHdoZW4gcmVoeXBlLXNsdWcgYXVnbWVudHMgdW5pZmllZCB0eXBlc1xuICBjb250ZW50OiBbYXJ0aWNsZXNdLFxufSlcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** A `SKILL.md` published for agents, with the raw bytes its digest covers. */
|
|
2
|
+
export interface AgentSkill {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
source: Buffer;
|
|
6
|
+
}
|
|
7
|
+
/** Read every `SKILL.md` the `skills` globs match, in a stable order. */
|
|
8
|
+
export declare function loadAgentSkills(props: {
|
|
9
|
+
root: string;
|
|
10
|
+
patterns: string[];
|
|
11
|
+
}): {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
source: NonSharedBuffer;
|
|
15
|
+
}[];
|
|
16
|
+
/** Where a skill is published inside the build output (no base). */
|
|
17
|
+
export declare function buildSkillFileName(name: string): string;
|
|
18
|
+
/** Render the Agent Skills discovery index (v0.2.0) for the published skills. */
|
|
19
|
+
export declare function renderSkillsIndex(props: {
|
|
20
|
+
skills: AgentSkill[];
|
|
21
|
+
base?: string;
|
|
22
|
+
}): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { globSync, readFileSync } from "node:fs";
|
|
3
|
+
import { resolve, sep } from "node:path";
|
|
4
|
+
import { parse } from "yaml";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
const SKILLS_SCHEMA = "https://schemas.agentskills.io/discovery/0.2.0/schema.json";
|
|
7
|
+
const FRONTMATTER_RE = /^---\r?\n([\s\S]*?)\r?\n---/;
|
|
8
|
+
const SkillFrontmatter = z.object({
|
|
9
|
+
name: z
|
|
10
|
+
.string()
|
|
11
|
+
.max(64)
|
|
12
|
+
.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/),
|
|
13
|
+
description: z.string().min(1).max(1024),
|
|
14
|
+
});
|
|
15
|
+
/** Read every `SKILL.md` the `skills` globs match, in a stable order. */
|
|
16
|
+
export function loadAgentSkills(props) {
|
|
17
|
+
// Windows globs with `\`, which would leak into messages and change the sort.
|
|
18
|
+
return globSync(props.patterns, { cwd: props.root })
|
|
19
|
+
.map(file => file.split(sep).join("/"))
|
|
20
|
+
.sort()
|
|
21
|
+
.map(file => {
|
|
22
|
+
const source = readFileSync(resolve(props.root, file));
|
|
23
|
+
const frontmatter = FRONTMATTER_RE.exec(source.toString("utf-8"))?.[1] ?? "";
|
|
24
|
+
const parsed = SkillFrontmatter.safeParse(parse(frontmatter));
|
|
25
|
+
if (!parsed.success) {
|
|
26
|
+
throw new Error(`${file}: a published skill needs a frontmatter \`name\` (lowercase, hyphenated) and \`description\``);
|
|
27
|
+
}
|
|
28
|
+
return { ...parsed.data, source };
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** Where a skill is published inside the build output (no base). */
|
|
32
|
+
export function buildSkillFileName(name) {
|
|
33
|
+
return `.well-known/agent-skills/${name}/SKILL.md`;
|
|
34
|
+
}
|
|
35
|
+
/** Render the Agent Skills discovery index (v0.2.0) for the published skills. */
|
|
36
|
+
export function renderSkillsIndex(props) {
|
|
37
|
+
const skills = props.skills.map(skill => ({
|
|
38
|
+
name: skill.name,
|
|
39
|
+
type: "skill-md",
|
|
40
|
+
description: skill.description,
|
|
41
|
+
url: `${props.base ?? ""}/${buildSkillFileName(skill.name)}`,
|
|
42
|
+
digest: `sha256:${createHash("sha256").update(skill.source).digest("hex")}`,
|
|
43
|
+
}));
|
|
44
|
+
return `${JSON.stringify({ $schema: SKILLS_SCHEMA, skills }, null, 2)}\n`;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtc2tpbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvYWdlbnQtc2tpbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXZCLE1BQU0sYUFBYSxHQUFHLDREQUE0RCxDQUFBO0FBQ2xGLE1BQU0sY0FBYyxHQUFHLDZCQUE2QixDQUFBO0FBRXBELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxJQUFJLEVBQUUsQ0FBQztTQUNKLE1BQU0sRUFBRTtTQUNSLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDUCxLQUFLLENBQUMsMEJBQTBCLENBQUM7SUFDcEMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztDQUN6QyxDQUFDLENBQUE7QUFTRix5RUFBeUU7QUFDekUsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUEyQztJQUN6RSw4RUFBOEU7SUFDOUUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEMsSUFBSSxFQUFFO1NBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ1YsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDdEQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUUsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksOEZBQThGLENBQ3RHLENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUNuQyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVk7SUFDN0MsT0FBTyw0QkFBNEIsSUFBSSxXQUFXLENBQUE7QUFDcEQsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBOEM7SUFDOUUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNoQixJQUFJLEVBQUUsVUFBVTtRQUNoQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDOUIsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzVELE1BQU0sRUFBRSxVQUFVLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtLQUM1RSxDQUFDLENBQUMsQ0FBQTtJQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgeyBnbG9iU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgcmVzb2x2ZSwgc2VwIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJ5YW1sXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgU0tJTExTX1NDSEVNQSA9IFwiaHR0cHM6Ly9zY2hlbWFzLmFnZW50c2tpbGxzLmlvL2Rpc2NvdmVyeS8wLjIuMC9zY2hlbWEuanNvblwiXG5jb25zdCBGUk9OVE1BVFRFUl9SRSA9IC9eLS0tXFxyP1xcbihbXFxzXFxTXSo/KVxccj9cXG4tLS0vXG5cbmNvbnN0IFNraWxsRnJvbnRtYXR0ZXIgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHpcbiAgICAuc3RyaW5nKClcbiAgICAubWF4KDY0KVxuICAgIC5yZWdleCgvXlthLXowLTldKygtW2EtejAtOV0rKSokLyksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm1pbigxKS5tYXgoMTAyNCksXG59KVxuXG4vKiogQSBgU0tJTEwubWRgIHB1Ymxpc2hlZCBmb3IgYWdlbnRzLCB3aXRoIHRoZSByYXcgYnl0ZXMgaXRzIGRpZ2VzdCBjb3ZlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50U2tpbGwge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBzb3VyY2U6IEJ1ZmZlclxufVxuXG4vKiogUmVhZCBldmVyeSBgU0tJTEwubWRgIHRoZSBgc2tpbGxzYCBnbG9icyBtYXRjaCwgaW4gYSBzdGFibGUgb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFnZW50U2tpbGxzKHByb3BzOiB7IHJvb3Q6IHN0cmluZzsgcGF0dGVybnM6IHN0cmluZ1tdIH0pIHtcbiAgLy8gV2luZG93cyBnbG9icyB3aXRoIGBcXGAsIHdoaWNoIHdvdWxkIGxlYWsgaW50byBtZXNzYWdlcyBhbmQgY2hhbmdlIHRoZSBzb3J0LlxuICByZXR1cm4gZ2xvYlN5bmMocHJvcHMucGF0dGVybnMsIHsgY3dkOiBwcm9wcy5yb290IH0pXG4gICAgLm1hcChmaWxlID0+IGZpbGUuc3BsaXQoc2VwKS5qb2luKFwiL1wiKSlcbiAgICAuc29ydCgpXG4gICAgLm1hcChmaWxlID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJlYWRGaWxlU3luYyhyZXNvbHZlKHByb3BzLnJvb3QsIGZpbGUpKVxuICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBGUk9OVE1BVFRFUl9SRS5leGVjKHNvdXJjZS50b1N0cmluZyhcInV0Zi04XCIpKT8uWzFdID8/IFwiXCJcbiAgICAgIGNvbnN0IHBhcnNlZCA9IFNraWxsRnJvbnRtYXR0ZXIuc2FmZVBhcnNlKHBhcnNlKGZyb250bWF0dGVyKSlcbiAgICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke2ZpbGV9OiBhIHB1Ymxpc2hlZCBza2lsbCBuZWVkcyBhIGZyb250bWF0dGVyIFxcYG5hbWVcXGAgKGxvd2VyY2FzZSwgaHlwaGVuYXRlZCkgYW5kIFxcYGRlc2NyaXB0aW9uXFxgYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4ucGFyc2VkLmRhdGEsIHNvdXJjZSB9XG4gICAgfSlcbn1cblxuLyoqIFdoZXJlIGEgc2tpbGwgaXMgcHVibGlzaGVkIGluc2lkZSB0aGUgYnVpbGQgb3V0cHV0IChubyBiYXNlKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNraWxsRmlsZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBgLndlbGwta25vd24vYWdlbnQtc2tpbGxzLyR7bmFtZX0vU0tJTEwubWRgXG59XG5cbi8qKiBSZW5kZXIgdGhlIEFnZW50IFNraWxscyBkaXNjb3ZlcnkgaW5kZXggKHYwLjIuMCkgZm9yIHRoZSBwdWJsaXNoZWQgc2tpbGxzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNraWxsc0luZGV4KHByb3BzOiB7IHNraWxsczogQWdlbnRTa2lsbFtdOyBiYXNlPzogc3RyaW5nIH0pIHtcbiAgY29uc3Qgc2tpbGxzID0gcHJvcHMuc2tpbGxzLm1hcChza2lsbCA9PiAoe1xuICAgIG5hbWU6IHNraWxsLm5hbWUsXG4gICAgdHlwZTogXCJza2lsbC1tZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBza2lsbC5kZXNjcmlwdGlvbixcbiAgICB1cmw6IGAke3Byb3BzLmJhc2UgPz8gXCJcIn0vJHtidWlsZFNraWxsRmlsZU5hbWUoc2tpbGwubmFtZSl9YCxcbiAgICBkaWdlc3Q6IGBzaGEyNTY6JHtjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShza2lsbC5zb3VyY2UpLmRpZ2VzdChcImhleFwiKX1gLFxuICB9KSlcbiAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KHsgJHNjaGVtYTogU0tJTExTX1NDSEVNQSwgc2tpbGxzIH0sIG51bGwsIDIpfVxcbmBcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
5
|
+
import { temporaryDirectory } from "tempy";
|
|
6
|
+
import { loadAgentSkills, renderSkillsIndex } from "./agent-skills.js";
|
|
7
|
+
function writeSkill(root, dir, source) {
|
|
8
|
+
mkdirSync(join(root, "skills", dir), { recursive: true });
|
|
9
|
+
writeFileSync(join(root, "skills", dir, "SKILL.md"), source);
|
|
10
|
+
}
|
|
11
|
+
describe("loadAgentSkills", () => {
|
|
12
|
+
it("reads name and description from each matched SKILL.md", () => {
|
|
13
|
+
const root = temporaryDirectory();
|
|
14
|
+
writeSkill(root, "b", "---\nname: beta\ndescription: >\n Folded\n text\n---\n# B\n");
|
|
15
|
+
writeSkill(root, "a", "---\nname: alpha\ndescription: First\n---\n# A\n");
|
|
16
|
+
const skills = loadAgentSkills({ root, patterns: ["skills/*/SKILL.md"] });
|
|
17
|
+
expect(skills.map(s => [s.name, s.description])).toEqual([
|
|
18
|
+
["alpha", "First"],
|
|
19
|
+
["beta", "Folded text\n"],
|
|
20
|
+
]);
|
|
21
|
+
});
|
|
22
|
+
it("rejects a skill whose name agents cannot address", () => {
|
|
23
|
+
const root = temporaryDirectory();
|
|
24
|
+
writeSkill(root, "a", "---\nname: Not Valid\ndescription: First\n---\n");
|
|
25
|
+
expect(() => loadAgentSkills({ root, patterns: ["skills/*/SKILL.md"] })).toThrow("skills/a/SKILL.md");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("renderSkillsIndex", () => {
|
|
29
|
+
it("publishes each skill with a digest of its exact bytes", () => {
|
|
30
|
+
const source = Buffer.from("---\nname: alpha\ndescription: First\n---\n");
|
|
31
|
+
const index = JSON.parse(renderSkillsIndex({
|
|
32
|
+
skills: [{ name: "alpha", description: "First", source }],
|
|
33
|
+
base: "/repo",
|
|
34
|
+
}));
|
|
35
|
+
expect(index).toEqual({
|
|
36
|
+
$schema: "https://schemas.agentskills.io/discovery/0.2.0/schema.json",
|
|
37
|
+
skills: [
|
|
38
|
+
{
|
|
39
|
+
name: "alpha",
|
|
40
|
+
type: "skill-md",
|
|
41
|
+
description: "First",
|
|
42
|
+
url: "/repo/.well-known/agent-skills/alpha/SKILL.md",
|
|
43
|
+
digest: `sha256:${createHash("sha256").update(source).digest("hex")}`,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtc2tpbGxzLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvaGVscGVycy9hZ2VudC1za2lsbHMudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSxTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLE1BQWM7SUFDM0QsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDekQsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUM5RCxDQUFDO0FBRUQsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMvQixFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELE1BQU0sSUFBSSxHQUFHLGtCQUFrQixFQUFFLENBQUE7UUFDakMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsK0RBQStELENBQUMsQ0FBQTtRQUN0RixVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxrREFBa0QsQ0FBQyxDQUFBO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN2RCxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7WUFDbEIsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDO1NBQzFCLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsRUFBRSxDQUFBO1FBQ2pDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGlEQUFpRCxDQUFDLENBQUE7UUFDeEUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDOUUsbUJBQW1CLENBQ3BCLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtRQUN6RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0QixpQkFBaUIsQ0FBQztZQUNoQixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6RCxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FDSCxDQUFBO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNwQixPQUFPLEVBQUUsNERBQTREO1lBQ3JFLE1BQU0sRUFBRTtnQkFDTjtvQkFDRSxJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsV0FBVyxFQUFFLE9BQU87b0JBQ3BCLEdBQUcsRUFBRSwrQ0FBK0M7b0JBQ3BELE1BQU0sRUFBRSxVQUFVLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUN0RTthQUNGO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHsgbWtkaXJTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5IH0gZnJvbSBcInRlbXB5XCJcbmltcG9ydCB7IGxvYWRBZ2VudFNraWxscywgcmVuZGVyU2tpbGxzSW5kZXggfSBmcm9tIFwiLi9hZ2VudC1za2lsbHMudHNcIlxuXG5mdW5jdGlvbiB3cml0ZVNraWxsKHJvb3Q6IHN0cmluZywgZGlyOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSB7XG4gIG1rZGlyU3luYyhqb2luKHJvb3QsIFwic2tpbGxzXCIsIGRpciksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHdyaXRlRmlsZVN5bmMoam9pbihyb290LCBcInNraWxsc1wiLCBkaXIsIFwiU0tJTEwubWRcIiksIHNvdXJjZSlcbn1cblxuZGVzY3JpYmUoXCJsb2FkQWdlbnRTa2lsbHNcIiwgKCkgPT4ge1xuICBpdChcInJlYWRzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIGZyb20gZWFjaCBtYXRjaGVkIFNLSUxMLm1kXCIsICgpID0+IHtcbiAgICBjb25zdCByb290ID0gdGVtcG9yYXJ5RGlyZWN0b3J5KClcbiAgICB3cml0ZVNraWxsKHJvb3QsIFwiYlwiLCBcIi0tLVxcbm5hbWU6IGJldGFcXG5kZXNjcmlwdGlvbjogPlxcbiAgRm9sZGVkXFxuICB0ZXh0XFxuLS0tXFxuIyBCXFxuXCIpXG4gICAgd3JpdGVTa2lsbChyb290LCBcImFcIiwgXCItLS1cXG5uYW1lOiBhbHBoYVxcbmRlc2NyaXB0aW9uOiBGaXJzdFxcbi0tLVxcbiMgQVxcblwiKVxuICAgIGNvbnN0IHNraWxscyA9IGxvYWRBZ2VudFNraWxscyh7IHJvb3QsIHBhdHRlcm5zOiBbXCJza2lsbHMvKi9TS0lMTC5tZFwiXSB9KVxuICAgIGV4cGVjdChza2lsbHMubWFwKHMgPT4gW3MubmFtZSwgcy5kZXNjcmlwdGlvbl0pKS50b0VxdWFsKFtcbiAgICAgIFtcImFscGhhXCIsIFwiRmlyc3RcIl0sXG4gICAgICBbXCJiZXRhXCIsIFwiRm9sZGVkIHRleHRcXG5cIl0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInJlamVjdHMgYSBza2lsbCB3aG9zZSBuYW1lIGFnZW50cyBjYW5ub3QgYWRkcmVzc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRlbXBvcmFyeURpcmVjdG9yeSgpXG4gICAgd3JpdGVTa2lsbChyb290LCBcImFcIiwgXCItLS1cXG5uYW1lOiBOb3QgVmFsaWRcXG5kZXNjcmlwdGlvbjogRmlyc3RcXG4tLS1cXG5cIilcbiAgICBleHBlY3QoKCkgPT4gbG9hZEFnZW50U2tpbGxzKHsgcm9vdCwgcGF0dGVybnM6IFtcInNraWxscy8qL1NLSUxMLm1kXCJdIH0pKS50b1Rocm93KFxuICAgICAgXCJza2lsbHMvYS9TS0lMTC5tZFwiLFxuICAgIClcbiAgfSlcbn0pXG5cbmRlc2NyaWJlKFwicmVuZGVyU2tpbGxzSW5kZXhcIiwgKCkgPT4ge1xuICBpdChcInB1Ymxpc2hlcyBlYWNoIHNraWxsIHdpdGggYSBkaWdlc3Qgb2YgaXRzIGV4YWN0IGJ5dGVzXCIsICgpID0+IHtcbiAgICBjb25zdCBzb3VyY2UgPSBCdWZmZXIuZnJvbShcIi0tLVxcbm5hbWU6IGFscGhhXFxuZGVzY3JpcHRpb246IEZpcnN0XFxuLS0tXFxuXCIpXG4gICAgY29uc3QgaW5kZXggPSBKU09OLnBhcnNlKFxuICAgICAgcmVuZGVyU2tpbGxzSW5kZXgoe1xuICAgICAgICBza2lsbHM6IFt7IG5hbWU6IFwiYWxwaGFcIiwgZGVzY3JpcHRpb246IFwiRmlyc3RcIiwgc291cmNlIH1dLFxuICAgICAgICBiYXNlOiBcIi9yZXBvXCIsXG4gICAgICB9KSxcbiAgICApXG4gICAgZXhwZWN0KGluZGV4KS50b0VxdWFsKHtcbiAgICAgICRzY2hlbWE6IFwiaHR0cHM6Ly9zY2hlbWFzLmFnZW50c2tpbGxzLmlvL2Rpc2NvdmVyeS8wLjIuMC9zY2hlbWEuanNvblwiLFxuICAgICAgc2tpbGxzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImFscGhhXCIsXG4gICAgICAgICAgdHlwZTogXCJza2lsbC1tZFwiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZpcnN0XCIsXG4gICAgICAgICAgdXJsOiBcIi9yZXBvLy53ZWxsLWtub3duL2FnZW50LXNraWxscy9hbHBoYS9TS0lMTC5tZFwiLFxuICAgICAgICAgIGRpZ2VzdDogYHNoYTI1Njoke2NyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHNvdXJjZSkuZGlnZXN0KFwiaGV4XCIpfWAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gIH0pXG59KVxuIl19
|
|
@@ -8,3 +8,16 @@ export declare function buildArticleTree(articles: {
|
|
|
8
8
|
}[]): ArticleNode[];
|
|
9
9
|
/** Depth-first flatten of an article tree into a list of paths */
|
|
10
10
|
export declare function flattenArticleTree(nodes: ArticleNode[]): string[];
|
|
11
|
+
/** Sort comparator on frontmatter `order`: positive ascending, then unordered,
|
|
12
|
+
* then negative (so `order: -1` lands last) */
|
|
13
|
+
export declare function compareArticleOrder(a: {
|
|
14
|
+
order?: number;
|
|
15
|
+
}, b: {
|
|
16
|
+
order?: number;
|
|
17
|
+
}): number;
|
|
18
|
+
/** Sort comparator putting the newest `date` first, as blog and changelog list */
|
|
19
|
+
export declare function compareArticleDate(a: {
|
|
20
|
+
date?: string;
|
|
21
|
+
}, b: {
|
|
22
|
+
date?: string;
|
|
23
|
+
}): number;
|
package/build/helpers/article.js
CHANGED
|
@@ -37,4 +37,20 @@ export function flattenArticleTree(nodes) {
|
|
|
37
37
|
}
|
|
38
38
|
return result;
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
/** Sort comparator on frontmatter `order`: positive ascending, then unordered,
|
|
41
|
+
* then negative (so `order: -1` lands last) */
|
|
42
|
+
export function compareArticleOrder(a, b) {
|
|
43
|
+
return orderKey(a.order) - orderKey(b.order);
|
|
44
|
+
}
|
|
45
|
+
/** Sort comparator putting the newest `date` first, as blog and changelog list */
|
|
46
|
+
export function compareArticleDate(a, b) {
|
|
47
|
+
return new Date(b.date ?? 0).getTime() - new Date(a.date ?? 0).getTime();
|
|
48
|
+
}
|
|
49
|
+
function orderKey(order) {
|
|
50
|
+
if (order === undefined)
|
|
51
|
+
return Number.MAX_SAFE_INTEGER / 2;
|
|
52
|
+
if (order < 0)
|
|
53
|
+
return Number.MAX_SAFE_INTEGER + order;
|
|
54
|
+
return order;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL2FydGljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsUUFLRztJQUVILE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFBO0lBRTlDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFBO0lBRS9CLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLElBQUk7WUFBRSxTQUFRO1FBQ25CLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUMvQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzFDLE1BQU0sVUFBVSxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBRS9ELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQW9CO0lBQ3JELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQTtJQUMzQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7Z0RBQ2dEO0FBQ2hELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxDQUFxQixFQUFFLENBQXFCO0lBQzlFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzlDLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGtCQUFrQixDQUFDLENBQW9CLEVBQUUsQ0FBb0I7SUFDM0UsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDMUUsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUMzRCxJQUFJLEtBQUssR0FBRyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFBO0lBQ3JELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXJ0aWNsZU5vZGUgfSBmcm9tIFwiLi4vbW9kZWxzL2FydGljbGUudHNcIlxuXG4vKiogQnVpbGQgYSB0cmVlIGZyb20gYSBmbGF0IHNvcnRlZCBsaXN0IG9mIGFydGljbGVzIGJhc2VkIG9uIHBhdGggaGllcmFyY2h5ICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBcnRpY2xlVHJlZShcbiAgYXJ0aWNsZXM6IHtcbiAgICBwYXRoOiBzdHJpbmdcbiAgICB0aXRsZTogc3RyaW5nXG4gICAgbGFiZWw/OiBzdHJpbmdcbiAgICBpY29uPzogc3RyaW5nXG4gIH1bXSxcbikge1xuICBjb25zdCBub2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFydGljbGVOb2RlPigpXG5cbiAgZm9yIChjb25zdCBhcnRpY2xlIG9mIGFydGljbGVzKSB7XG4gICAgbm9kZU1hcC5zZXQoYXJ0aWNsZS5wYXRoLCB7XG4gICAgICBwYXRoOiBhcnRpY2xlLnBhdGgsXG4gICAgICB0aXRsZTogYXJ0aWNsZS50aXRsZSxcbiAgICAgIGxhYmVsOiBhcnRpY2xlLmxhYmVsLFxuICAgICAgaWNvbjogYXJ0aWNsZS5pY29uLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCByb290czogQXJ0aWNsZU5vZGVbXSA9IFtdXG5cbiAgZm9yIChjb25zdCBhcnRpY2xlIG9mIGFydGljbGVzKSB7XG4gICAgY29uc3Qgbm9kZSA9IG5vZGVNYXAuZ2V0KGFydGljbGUucGF0aClcbiAgICBpZiAoIW5vZGUpIGNvbnRpbnVlXG4gICAgY29uc3QgdHJpbW1lZCA9IGFydGljbGUucGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIilcbiAgICBjb25zdCBsYXN0U2xhc2ggPSB0cmltbWVkLmxhc3RJbmRleE9mKFwiL1wiKVxuICAgIGNvbnN0IHBhcmVudFBhdGggPSBsYXN0U2xhc2ggPiAwID8gYCR7dHJpbW1lZC5zbGljZSgwLCBsYXN0U2xhc2gpfS9gIDogXCJcIlxuICAgIGNvbnN0IHBhcmVudCA9IHBhcmVudFBhdGggPyBub2RlTWFwLmdldChwYXJlbnRQYXRoKSA6IHVuZGVmaW5lZFxuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdHMucHVzaChub2RlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByb290c1xufVxuXG4vKiogRGVwdGgtZmlyc3QgZmxhdHRlbiBvZiBhbiBhcnRpY2xlIHRyZWUgaW50byBhIGxpc3Qgb2YgcGF0aHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuQXJ0aWNsZVRyZWUobm9kZXM6IEFydGljbGVOb2RlW10pIHtcbiAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdXG4gIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgIHJlc3VsdC5wdXNoKG5vZGUucGF0aClcbiAgICByZXN1bHQucHVzaCguLi5mbGF0dGVuQXJ0aWNsZVRyZWUobm9kZS5jaGlsZHJlbikpXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKiogU29ydCBjb21wYXJhdG9yIG9uIGZyb250bWF0dGVyIGBvcmRlcmA6IHBvc2l0aXZlIGFzY2VuZGluZywgdGhlbiB1bm9yZGVyZWQsXG4gKiAgdGhlbiBuZWdhdGl2ZSAoc28gYG9yZGVyOiAtMWAgbGFuZHMgbGFzdCkgKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlQXJ0aWNsZU9yZGVyKGE6IHsgb3JkZXI/OiBudW1iZXIgfSwgYjogeyBvcmRlcj86IG51bWJlciB9KSB7XG4gIHJldHVybiBvcmRlcktleShhLm9yZGVyKSAtIG9yZGVyS2V5KGIub3JkZXIpXG59XG5cbi8qKiBTb3J0IGNvbXBhcmF0b3IgcHV0dGluZyB0aGUgbmV3ZXN0IGBkYXRlYCBmaXJzdCwgYXMgYmxvZyBhbmQgY2hhbmdlbG9nIGxpc3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlQXJ0aWNsZURhdGUoYTogeyBkYXRlPzogc3RyaW5nIH0sIGI6IHsgZGF0ZT86IHN0cmluZyB9KSB7XG4gIHJldHVybiBuZXcgRGF0ZShiLmRhdGUgPz8gMCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5kYXRlID8/IDApLmdldFRpbWUoKVxufVxuXG5mdW5jdGlvbiBvcmRlcktleShvcmRlcj86IG51bWJlcikge1xuICBpZiAob3JkZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIC8gMlxuICBpZiAob3JkZXIgPCAwKSByZXR1cm4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgKyBvcmRlclxuICByZXR1cm4gb3JkZXJcbn1cbiJdfQ==
|
package/build/helpers/head.d.ts
CHANGED
|
@@ -46,8 +46,13 @@ export declare function buildPageHead(props: {
|
|
|
46
46
|
name: string;
|
|
47
47
|
content: string;
|
|
48
48
|
})[];
|
|
49
|
-
links: {
|
|
49
|
+
links: ({
|
|
50
50
|
rel: string;
|
|
51
51
|
href: string;
|
|
52
|
-
|
|
52
|
+
type?: undefined;
|
|
53
|
+
} | {
|
|
54
|
+
rel: string;
|
|
55
|
+
type: string;
|
|
56
|
+
href: string;
|
|
57
|
+
})[];
|
|
53
58
|
};
|
package/build/helpers/head.js
CHANGED
|
@@ -57,7 +57,18 @@ export function buildPageHead(props) {
|
|
|
57
57
|
...(url ? [{ property: "og:url", content: url }] : []),
|
|
58
58
|
...(image ? [{ property: "og:image", content: image }] : []),
|
|
59
59
|
],
|
|
60
|
-
links:
|
|
60
|
+
links: [
|
|
61
|
+
...(url ? [{ rel: "canonical", href: url }] : []),
|
|
62
|
+
...(props.isArticle
|
|
63
|
+
? [
|
|
64
|
+
{
|
|
65
|
+
rel: "alternate",
|
|
66
|
+
type: "text/markdown",
|
|
67
|
+
href: prefixUrl(`${props.path}index.md`, props.config.base),
|
|
68
|
+
},
|
|
69
|
+
]
|
|
70
|
+
: []),
|
|
71
|
+
],
|
|
61
72
|
};
|
|
62
73
|
}
|
|
63
74
|
function buildAbsoluteUrl(site, base, url) {
|
|
@@ -66,4 +77,4 @@ function buildAbsoluteUrl(site, base, url) {
|
|
|
66
77
|
return prefixed;
|
|
67
78
|
return `${site}${prefixed}`;
|
|
68
79
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL2hlYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBUzdDLE1BQU0sVUFBVSxhQUFhLENBQUMsS0FJN0I7SUFDQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQzNCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJO1FBQzNCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2FBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO2FBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxHQUFHLEVBQUUsV0FBVztZQUNoQixJQUFJLEVBQUUscUJBQXFCO1lBQzNCLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssV0FBVztZQUMzQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE9BQU87UUFDTCxJQUFJLEVBQUU7WUFDSixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7WUFD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Q0FBQztRQUFFLE9BQU8sUUFBUSxDQUFBO0lBQzNFLE9BQU8sR0FBRyxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUE7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB0eXBlIHsgV2Vic2l0ZUNvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB7IGZhdmljb25UeXBlIH0gZnJvbSBcIi4vZmF2aWNvbi50c1wiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IGJ1aWxkVGhlbWVTY3JpcHQgfSBmcm9tIFwiLi90aGVtZS50c1wiXG5cbi8qKiBTaXRlLXdpZGUgYDxoZWFkPmAgdGFncyB0aGUgcm9vdCByb3V0ZSByZW5kZXJzIG9uIGV2ZXJ5IHBhZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RIZWFkIHtcbiAgbWV0YTogQXJyYXk8UmVhY3QuSlNYLkludHJpbnNpY0VsZW1lbnRzW1wibWV0YVwiXT5cbiAgbGlua3M6IEFycmF5PFJlYWN0LkpTWC5JbnRyaW5zaWNFbGVtZW50c1tcImxpbmtcIl0+XG4gIHNjcmlwdHM6IEFycmF5PFJlYWN0LkpTWC5JbnRyaW5zaWNFbGVtZW50c1tcInNjcmlwdFwiXT5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm9vdEhlYWQocHJvcHM6IHtcbiAgY29uZmlnOiBXZWJzaXRlQ29uZmlnXG4gIGRlZmF1bHRGYXZpY29uOiBzdHJpbmdcbiAgc3R5bGVzaGVldHM6IHN0cmluZ1tdXG59KSB7XG4gIGNvbnN0IGNvbmZpZyA9IHByb3BzLmNvbmZpZ1xuICBjb25zdCBmYXZpY29uID0gcHJlZml4VXJsKFxuICAgIGNvbmZpZy5mYXZpY29uID8/IGNvbmZpZy5sb2dvID8/IHByb3BzLmRlZmF1bHRGYXZpY29uLFxuICAgIGNvbmZpZy5iYXNlLFxuICApXG4gIGNvbnN0IGZlZWRMaW5rcyA9IGNvbmZpZy5zaXRlXG4gICAgPyAoY29uZmlnLnNlY3Rpb25zID8/IFtdKVxuICAgICAgICAuZmlsdGVyKHMgPT4gcy50eXBlID09PSBcImJsb2dcIilcbiAgICAgICAgLm1hcChzID0+ICh7XG4gICAgICAgICAgcmVsOiBcImFsdGVybmF0ZVwiLFxuICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vcnNzK3htbFwiLFxuICAgICAgICAgIHRpdGxlOiBgJHtzLnNpdGVUaXRsZSA/PyBzLnRpdGxlfSBSU1MgRmVlZGAsXG4gICAgICAgICAgaHJlZjogcHJlZml4VXJsKGAke3MucHJlZml4fXJzcy54bWxgLCBjb25maWcuYmFzZSksXG4gICAgICAgIH0pKVxuICAgIDogW11cbiAgcmV0dXJuIHtcbiAgICBtZXRhOiBbXG4gICAgICB7IGNoYXJTZXQ6IFwidXRmLThcIiB9LFxuICAgICAgeyB0aXRsZTogY29uZmlnLnRpdGxlIH0sXG4gICAgICB7IG5hbWU6IFwiZGVzY3JpcHRpb25cIiwgY29udGVudDogY29uZmlnLmRlc2NyaXB0aW9uIH0sXG4gICAgICB7IHByb3BlcnR5OiBcIm9nOnRpdGxlXCIsIGNvbnRlbnQ6IGNvbmZpZy50aXRsZSB9LFxuICAgICAgeyBwcm9wZXJ0eTogXCJvZzpkZXNjcmlwdGlvblwiLCBjb250ZW50OiBjb25maWcuZGVzY3JpcHRpb24gfSxcbiAgICAgIHsgcHJvcGVydHk6IFwib2c6c2l0ZV9uYW1lXCIsIGNvbnRlbnQ6IGNvbmZpZy50aXRsZSB9LFxuICAgICAgeyBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsIGNvbnRlbnQ6IFwid2Vic2l0ZVwiIH0sXG4gICAgICB7IG5hbWU6IFwidmlld3BvcnRcIiwgY29udGVudDogXCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIH0sXG4gICAgICAuLi4oY29uZmlnLmhlYWQ/Lm1ldGEgPz8gW10pLFxuICAgIF0sXG4gICAgbGlua3M6IFtcbiAgICAgIHsgcmVsOiBcImljb25cIiwgaHJlZjogZmF2aWNvbiwgdHlwZTogZmF2aWNvblR5cGUoZmF2aWNvbikgfSxcbiAgICAgIHsgcmVsOiBcInNob3J0Y3V0IGljb25cIiwgaHJlZjogZmF2aWNvbiwgdHlwZTogZmF2aWNvblR5cGUoZmF2aWNvbikgfSxcbiAgICAgIC4uLnByb3BzLnN0eWxlc2hlZXRzLm1hcChocmVmID0+ICh7IHJlbDogXCJzdHlsZXNoZWV0XCIsIGhyZWYgfSkpLFxuICAgICAgLi4uZmVlZExpbmtzLFxuICAgICAgLi4uKGNvbmZpZy5oZWFkPy5saW5rcyA/PyBbXSksXG4gICAgXSxcbiAgICBzY3JpcHRzOiBbeyBjaGlsZHJlbjogYnVpbGRUaGVtZVNjcmlwdCgpIH0sIC4uLihjb25maWcuaGVhZD8uc2NyaXB0cyA/PyBbXSldLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhZ2VIZWFkKHByb3BzOiB7XG4gIGNvbmZpZzogV2Vic2l0ZUNvbmZpZ1xuICBwYXRoOiBzdHJpbmdcbiAgdGl0bGU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgaW1hZ2U/OiBzdHJpbmdcbiAgaXNBcnRpY2xlPzogYm9vbGVhblxufSkge1xuICBjb25zdCBzaXRlID0gcHJvcHMuY29uZmlnLnNpdGU/LnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgY29uc3QgdXJsID0gc2l0ZSA/IGJ1aWxkQWJzb2x1dGVVcmwoc2l0ZSwgcHJvcHMuY29uZmlnLmJhc2UsIHByb3BzLnBhdGgpIDogdW5kZWZpbmVkXG4gIGNvbnN0IGltYWdlID1cbiAgICBzaXRlICYmIHByb3BzLmltYWdlXG4gICAgICA/IGJ1aWxkQWJzb2x1dGVVcmwoc2l0ZSwgcHJvcHMuY29uZmlnLmJhc2UsIHByb3BzLmltYWdlKVxuICAgICAgOiB1bmRlZmluZWRcbiAgcmV0dXJuIHtcbiAgICBtZXRhOiBbXG4gICAgICAuLi4ocHJvcHMudGl0bGVcbiAgICAgICAgPyBbeyB0aXRsZTogcHJvcHMudGl0bGUgfSwgeyBwcm9wZXJ0eTogXCJvZzp0aXRsZVwiLCBjb250ZW50OiBwcm9wcy50aXRsZSB9XVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLihwcm9wcy5kZXNjcmlwdGlvblxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHsgbmFtZTogXCJkZXNjcmlwdGlvblwiLCBjb250ZW50OiBwcm9wcy5kZXNjcmlwdGlvbiB9LFxuICAgICAgICAgICAgeyBwcm9wZXJ0eTogXCJvZzpkZXNjcmlwdGlvblwiLCBjb250ZW50OiBwcm9wcy5kZXNjcmlwdGlvbiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4ocHJvcHMuaXNBcnRpY2xlID8gW3sgcHJvcGVydHk6IFwib2c6dHlwZVwiLCBjb250ZW50OiBcImFydGljbGVcIiB9XSA6IFtdKSxcbiAgICAgIC4uLih1cmwgPyBbeyBwcm9wZXJ0eTogXCJvZzp1cmxcIiwgY29udGVudDogdXJsIH1dIDogW10pLFxuICAgICAgLi4uKGltYWdlID8gW3sgcHJvcGVydHk6IFwib2c6aW1hZ2VcIiwgY29udGVudDogaW1hZ2UgfV0gOiBbXSksXG4gICAgXSxcbiAgICBsaW5rczogW1xuICAgICAgLi4uKHVybCA/IFt7IHJlbDogXCJjYW5vbmljYWxcIiwgaHJlZjogdXJsIH1dIDogW10pLFxuICAgICAgLi4uKHByb3BzLmlzQXJ0aWNsZVxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVsOiBcImFsdGVybmF0ZVwiLFxuICAgICAgICAgICAgICB0eXBlOiBcInRleHQvbWFya2Rvd25cIixcbiAgICAgICAgICAgICAgaHJlZjogcHJlZml4VXJsKGAke3Byb3BzLnBhdGh9aW5kZXgubWRgLCBwcm9wcy5jb25maWcuYmFzZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgXSxcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFic29sdXRlVXJsKHNpdGU6IHN0cmluZywgYmFzZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB1cmw6IHN0cmluZykge1xuICBjb25zdCBwcmVmaXhlZCA9IHByZWZpeFVybCh1cmwsIGJhc2UpXG4gIGlmICghcHJlZml4ZWQuc3RhcnRzV2l0aChcIi9cIikgfHwgcHJlZml4ZWQuc3RhcnRzV2l0aChcIi8vXCIpKSByZXR1cm4gcHJlZml4ZWRcbiAgcmV0dXJuIGAke3NpdGV9JHtwcmVmaXhlZH1gXG59XG4iXX0=
|
|
@@ -73,7 +73,9 @@ describe("buildPageHead", () => {
|
|
|
73
73
|
{ property: "og:description", content: "How to" },
|
|
74
74
|
{ property: "og:type", content: "article" },
|
|
75
75
|
]);
|
|
76
|
-
expect(head.links).toEqual([
|
|
76
|
+
expect(head.links).toEqual([
|
|
77
|
+
{ rel: "alternate", type: "text/markdown", href: "/guide/index.md" },
|
|
78
|
+
]);
|
|
77
79
|
});
|
|
78
80
|
it("adds absolute url, canonical and image when site is set", () => {
|
|
79
81
|
const head = buildPageHead({
|
|
@@ -105,4 +107,4 @@ describe("buildPageHead", () => {
|
|
|
105
107
|
expect(head.meta).toEqual([]);
|
|
106
108
|
});
|
|
107
109
|
});
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvaGVhZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXhELE1BQU0sTUFBTSxHQUFrQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBRXJFLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7UUFDdEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLE1BQU07WUFDTixjQUFjLEVBQUUsV0FBVztZQUMzQixXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDeEIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDO1lBQ2hDLEdBQUcsRUFBRSxNQUFNO1lBQ1gsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLGVBQWU7U0FDdEIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ3hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RD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Q0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUM7WUFDekIsTUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2xELElBQUksRUFBRSxHQUFHO1lBQ1QsS0FBSyxFQUFFLG1DQUFtQztTQUMzQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUMvQixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsbUNBQW1DO1NBQzdDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQTtRQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHR5cGUgeyBXZWJzaXRlQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHsgYnVpbGRQYWdlSGVhZCwgYnVpbGRSb290SGVhZCB9IGZyb20gXCIuL2hlYWQudHNcIlxuXG5jb25zdCBjb25maWc6IFdlYnNpdGVDb25maWcgPSB7IHRpdGxlOiBcIkRvY3NcIiwgZGVzY3JpcHRpb246IFwiQmx1cmJcIiB9XG5cbmRlc2NyaWJlKFwiYnVpbGRSb290SGVhZFwiLCAoKSA9PiB7XG4gIGl0KFwiYnVpbGRzIHRoZSBkZWZhdWx0IHNpdGUgdGFnc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaGVhZCA9IGJ1aWxkUm9vdEhlYWQoe1xuICAgICAgY29uZmlnLFxuICAgICAgZGVmYXVsdEZhdmljb246IFwiL2xvZ28uc3ZnXCIsXG4gICAgICBzdHlsZXNoZWV0czogW1wiL2EuY3NzXCJdLFxuICAgIH0pXG4gICAgZXhwZWN0KGhlYWQubWV0YSkudG9Db250YWluRXF1YWwoeyBwcm9wZXJ0eTogXCJvZzp0aXRsZVwiLCBjb250ZW50OiBcIkRvY3NcIiB9KVxuICAgIGV4cGVjdChoZWFkLmxpbmtzKS50b0NvbnRhaW5FcXVhbCh7XG4gICAgICByZWw6IFwiaWNvblwiLFxuICAgICAgaHJlZjogXCIvbG9nby5zdmdcIixcbiAgICAgIHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgIH0pXG4gICAgZXhwZWN0KGhlYWQubGlua3MpLnRvQ29udGFpbkVxdWFsKHsgcmVsOiBcInN0eWxlc2hlZXRcIiwgaHJlZjogXCIvYS5jc3NcIiB9KVxuICAgIGV4cGVjdChoZWFkLnNjcmlwdHMpLnRvSGF2ZUxlbmd0aCgxKVxuICB9KVxuXG4gIGl0KFwiYXBwZW5kcyBjb25maWcgaGVhZCB0YWdzIGFmdGVyIHRoZSBkZWZhdWx0c1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaGVhZCA9IGJ1aWxkUm9vdEhlYWQoe1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgaGVhZDoge1xuICAgICAgICAgIG1ldGE6IFt7IHByb3BlcnR5OiBcIm9nOnR5cGVcIiwgY29udGVudDogXCJib29rXCIgfV0sXG4gICAgICAgICAgbGlua3M6IFt7IHJlbDogXCJtZVwiLCBocmVmOiBcImh0dHBzOi8veC5jb20vbWVcIiB9XSxcbiAgICAgICAgICBzY3JpcHRzOiBbeyBzcmM6IFwiaHR0cHM6Ly9jZG4uZXhhbXBsZS5jb20vYS5qc1wiIH1dLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRGYXZpY29uOiBcIi9sb2dvLnN2Z1wiLFxuICAgICAgc3R5bGVzaGVldHM6IFtdLFxuICAgIH0pXG4gICAgZXhwZWN0KGhlYWQubWV0YS5hdCgtMSkpLnRvRXF1YWwoeyBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsIGNvbnRlbnQ6IFwiYm9va1wiIH0pXG4gICAgZXhwZWN0KGhlYWQubGlua3MuYXQoLTEpKS50b0VxdWFsKHsgcmVsOiBcIm1lXCIsIGhyZWY6IFwiaHR0cHM6Ly94LmNvbS9tZVwiIH0pXG4gICAgZXhwZWN0KGhlYWQuc2NyaXB0cy5hdCgtMSkpLnRvRXF1YWwoeyBzcmM6IFwiaHR0cHM6Ly9jZG4uZXhhbXBsZS5jb20vYS5qc1wiIH0pXG4gIH0pXG5cbiAgaXQoXCJsaW5rcyBibG9nIGZlZWRzIG9ubHkgd2hlbiBzaXRlIGlzIHNldFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VjdGlvbnM6IFdlYnNpdGVDb25maWdbXCJzZWN0aW9uc1wiXSA9IFtcbiAgICAgIHsgdHlwZTogXCJibG9nXCIsIHRpdGxlOiBcIkJsb2dcIiwgcHJlZml4OiBcIi9ibG9nL1wiLCBwb3NpdGlvbjogXCJoZWFkZXJcIiB9LFxuICAgIF1cbiAgICBjb25zdCB3aXRob3V0U2l0ZSA9IGJ1aWxkUm9vdEhlYWQoe1xuICAgICAgY29uZmlnOiB7IC4uLmNvbmZpZywgc2VjdGlvbnMgfSxcbiAgICAgIGRlZmF1bHRGYXZpY29uOiBcIi9sb2dvLnN2Z1wiLFxuICAgICAgc3R5bGVzaGVldHM6IFtdLFxuICAgIH0pXG4gICAgY29uc3Qgd2l0aFNpdGUgPSBidWlsZFJvb3RIZWFkKHtcbiAgICAgIGNvbmZpZzogeyAuLi5jb25maWcsIHNlY3Rpb25zLCBzaXRlOiBcImh0dHBzOi8vZXhhbXBsZS5jb21cIiwgYmFzZTogXCIvcmVwb1wiIH0sXG4gICAgICBkZWZhdWx0RmF2aWNvbjogXCIvbG9nby5zdmdcIixcbiAgICAgIHN0eWxlc2hlZXRzOiBbXSxcbiAgICB9KVxuICAgIGV4cGVjdCh3aXRob3V0U2l0ZS5saW5rcy5zb21lKGwgPT4gbC5yZWwgPT09IFwiYWx0ZXJuYXRlXCIpKS50b0JlKGZhbHNlKVxuICAgIGV4cGVjdCh3aXRoU2l0ZS5saW5rcykudG9Db250YWluRXF1YWwoe1xuICAgICAgcmVsOiBcImFsdGVybmF0ZVwiLFxuICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9yc3MreG1sXCIsXG4gICAgICB0aXRsZTogXCJCbG9nIFJTUyBGZWVkXCIsXG4gICAgICBocmVmOiBcIi9yZXBvL2Jsb2cvcnNzLnhtbFwiLFxuICAgIH0pXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImJ1aWxkUGFnZUhlYWRcIiwgKCkgPT4ge1xuICBpdChcImVtaXRzIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgYXJ0aWNsZSB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBoZWFkID0gYnVpbGRQYWdlSGVhZCh7XG4gICAgICBjb25maWcsXG4gICAgICBwYXRoOiBcIi9ndWlkZS9cIixcbiAgICAgIHRpdGxlOiBcIkd1aWRlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJIb3cgdG9cIixcbiAgICAgIGlzQXJ0aWNsZTogdHJ1ZSxcbiAgICB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEpLnRvRXF1YWwoW1xuICAgICAgeyB0aXRsZTogXCJHdWlkZVwiIH0sXG4gICAgICB7IHByb3BlcnR5OiBcIm9nOnRpdGxlXCIsIGNvbnRlbnQ6IFwiR3VpZGVcIiB9LFxuICAgICAgeyBuYW1lOiBcImRlc2NyaXB0aW9uXCIsIGNvbnRlbnQ6IFwiSG93IHRvXCIgfSxcbiAgICAgIHsgcHJvcGVydHk6IFwib2c6ZGVzY3JpcHRpb25cIiwgY29udGVudDogXCJIb3cgdG9cIiB9LFxuICAgICAgeyBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsIGNvbnRlbnQ6IFwiYXJ0aWNsZVwiIH0sXG4gICAgXSlcbiAgICBleHBlY3QoaGVhZC5saW5rcykudG9FcXVhbChbXSlcbiAgfSlcblxuICBpdChcImFkZHMgYWJzb2x1dGUgdXJsLCBjYW5vbmljYWwgYW5kIGltYWdlIHdoZW4gc2l0ZSBpcyBzZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGhlYWQgPSBidWlsZFBhZ2VIZWFkKHtcbiAgICAgIGNvbmZpZzogeyAuLi5jb25maWcsIHNpdGU6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9cIiwgYmFzZTogXCIvcmVwb1wiIH0sXG4gICAgICBwYXRoOiBcIi9ndWlkZS9cIixcbiAgICAgIGltYWdlOiBcIi9yZXBvL2Fzc2V0cy9jb3Zlci5wbmdcIixcbiAgICB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEpLnRvRXF1YWwoW1xuICAgICAgeyBwcm9wZXJ0eTogXCJvZzp1cmxcIiwgY29udGVudDogXCJodHRwczovL2V4YW1wbGUuY29tL3JlcG8vZ3VpZGUvXCIgfSxcbiAgICAgIHsgcHJvcGVydHk6IFwib2c6aW1hZ2VcIiwgY29udGVudDogXCJodHRwczovL2V4YW1wbGUuY29tL3JlcG8vYXNzZXRzL2NvdmVyLnBuZ1wiIH0sXG4gICAgXSlcbiAgICBleHBlY3QoaGVhZC5saW5rcykudG9FcXVhbChbXG4gICAgICB7IHJlbDogXCJjYW5vbmljYWxcIiwgaHJlZjogXCJodHRwczovL2V4YW1wbGUuY29tL3JlcG8vZ3VpZGUvXCIgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwia2VlcHMgYW4gYWxyZWFkeSBhYnNvbHV0ZSBpbWFnZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaGVhZCA9IGJ1aWxkUGFnZUhlYWQoe1xuICAgICAgY29uZmlnOiB7IC4uLmNvbmZpZywgc2l0ZTogXCJodHRwczovL2V4YW1wbGUuY29tXCIgfSxcbiAgICAgIHBhdGg6IFwiL1wiLFxuICAgICAgaW1hZ2U6IFwiaHR0cHM6Ly9jZG4uZXhhbXBsZS5jb20vY292ZXIucG5nXCIsXG4gICAgfSlcbiAgICBleHBlY3QoaGVhZC5tZXRhKS50b0NvbnRhaW5FcXVhbCh7XG4gICAgICBwcm9wZXJ0eTogXCJvZzppbWFnZVwiLFxuICAgICAgY29udGVudDogXCJodHRwczovL2Nkbi5leGFtcGxlLmNvbS9jb3Zlci5wbmdcIixcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwic2tpcHMgb2c6aW1hZ2Ugd2l0aG91dCBzaXRlXCIsICgpID0+IHtcbiAgICBjb25zdCBoZWFkID0gYnVpbGRQYWdlSGVhZCh7IGNvbmZpZywgcGF0aDogXCIvXCIsIGltYWdlOiBcIi9jb3Zlci5wbmdcIiB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEpLnRvRXF1YWwoW10pXG4gIH0pXG59KVxuIl19
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvaGVhZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXhELE1BQU0sTUFBTSxHQUFrQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBRXJFLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7UUFDdEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLE1BQU07WUFDTixjQUFjLEVBQUUsV0FBVztZQUMzQixXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDeEIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDO1lBQ2hDLEdBQUcsRUFBRSxNQUFNO1lBQ1gsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLGVBQWU7U0FDdEIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ3hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUM7WUFDekIsTUFBTSxFQUFFO2dCQUNOLEdBQUcsTUFBTTtnQkFDVCxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDaEQsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDO29CQUNoRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSw4QkFBOEIsRUFBRSxDQUFDO2lCQUNuRDthQUNGO1lBQ0QsY0FBYyxFQUFFLFdBQVc7WUFDM0IsV0FBVyxFQUFFLEVBQUU7U0FDaEIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLDhCQUE4QixFQUFFLENBQUMsQ0FBQTtJQUM5RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxRQUFRLEdBQThCO1lBQzFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtTQUN0RSxDQUFBO1FBQ0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQ2hDLE1BQU0sRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUMvQixjQUFjLEVBQUUsV0FBVztZQUMzQixXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUE7UUFDRixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUM7WUFDN0IsTUFBTSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzNFLGNBQWMsRUFBRSxXQUFXO1lBQzNCLFdBQVcsRUFBRSxFQUFFO1NBQ2hCLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDcEMsR0FBRyxFQUFFLFdBQVc7WUFDaEIsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixLQUFLLEVBQUUsZUFBZTtZQUN0QixJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUE7QUFFRixRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixFQUFFLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO1FBQ25ELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQztZQUN6QixNQUFNO1lBQ04sSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsT0FBTztZQUNkLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3hCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNsQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtZQUMxQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUMxQyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1lBQ2pELEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO1NBQzVDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3pCLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtTQUNyRSxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxHQUFHLEVBQUU7UUFDakUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLE1BQU0sRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ2xFLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLHdCQUF3QjtTQUNoQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN4QixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFO1lBQ2xFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsMkNBQTJDLEVBQUU7U0FDL0UsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDekIsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRTtTQUM5RCxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7UUFDekMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLE1BQU0sRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNsRCxJQUFJLEVBQUUsR0FBRztZQUNULEtBQUssRUFBRSxtQ0FBbUM7U0FDM0MsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDL0IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLG1DQUFtQztTQUM3QyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7UUFDckMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDL0IsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB0eXBlIHsgV2Vic2l0ZUNvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB7IGJ1aWxkUGFnZUhlYWQsIGJ1aWxkUm9vdEhlYWQgfSBmcm9tIFwiLi9oZWFkLnRzXCJcblxuY29uc3QgY29uZmlnOiBXZWJzaXRlQ29uZmlnID0geyB0aXRsZTogXCJEb2NzXCIsIGRlc2NyaXB0aW9uOiBcIkJsdXJiXCIgfVxuXG5kZXNjcmliZShcImJ1aWxkUm9vdEhlYWRcIiwgKCkgPT4ge1xuICBpdChcImJ1aWxkcyB0aGUgZGVmYXVsdCBzaXRlIHRhZ3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGhlYWQgPSBidWlsZFJvb3RIZWFkKHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGRlZmF1bHRGYXZpY29uOiBcIi9sb2dvLnN2Z1wiLFxuICAgICAgc3R5bGVzaGVldHM6IFtcIi9hLmNzc1wiXSxcbiAgICB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEpLnRvQ29udGFpbkVxdWFsKHsgcHJvcGVydHk6IFwib2c6dGl0bGVcIiwgY29udGVudDogXCJEb2NzXCIgfSlcbiAgICBleHBlY3QoaGVhZC5saW5rcykudG9Db250YWluRXF1YWwoe1xuICAgICAgcmVsOiBcImljb25cIixcbiAgICAgIGhyZWY6IFwiL2xvZ28uc3ZnXCIsXG4gICAgICB0eXBlOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICB9KVxuICAgIGV4cGVjdChoZWFkLmxpbmtzKS50b0NvbnRhaW5FcXVhbCh7IHJlbDogXCJzdHlsZXNoZWV0XCIsIGhyZWY6IFwiL2EuY3NzXCIgfSlcbiAgICBleHBlY3QoaGVhZC5zY3JpcHRzKS50b0hhdmVMZW5ndGgoMSlcbiAgfSlcblxuICBpdChcImFwcGVuZHMgY29uZmlnIGhlYWQgdGFncyBhZnRlciB0aGUgZGVmYXVsdHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGhlYWQgPSBidWlsZFJvb3RIZWFkKHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIGhlYWQ6IHtcbiAgICAgICAgICBtZXRhOiBbeyBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsIGNvbnRlbnQ6IFwiYm9va1wiIH1dLFxuICAgICAgICAgIGxpbmtzOiBbeyByZWw6IFwibWVcIiwgaHJlZjogXCJodHRwczovL3guY29tL21lXCIgfV0sXG4gICAgICAgICAgc2NyaXB0czogW3sgc3JjOiBcImh0dHBzOi8vY2RuLmV4YW1wbGUuY29tL2EuanNcIiB9XSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0RmF2aWNvbjogXCIvbG9nby5zdmdcIixcbiAgICAgIHN0eWxlc2hlZXRzOiBbXSxcbiAgICB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEuYXQoLTEpKS50b0VxdWFsKHsgcHJvcGVydHk6IFwib2c6dHlwZVwiLCBjb250ZW50OiBcImJvb2tcIiB9KVxuICAgIGV4cGVjdChoZWFkLmxpbmtzLmF0KC0xKSkudG9FcXVhbCh7IHJlbDogXCJtZVwiLCBocmVmOiBcImh0dHBzOi8veC5jb20vbWVcIiB9KVxuICAgIGV4cGVjdChoZWFkLnNjcmlwdHMuYXQoLTEpKS50b0VxdWFsKHsgc3JjOiBcImh0dHBzOi8vY2RuLmV4YW1wbGUuY29tL2EuanNcIiB9KVxuICB9KVxuXG4gIGl0KFwibGlua3MgYmxvZyBmZWVkcyBvbmx5IHdoZW4gc2l0ZSBpcyBzZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNlY3Rpb25zOiBXZWJzaXRlQ29uZmlnW1wic2VjdGlvbnNcIl0gPSBbXG4gICAgICB7IHR5cGU6IFwiYmxvZ1wiLCB0aXRsZTogXCJCbG9nXCIsIHByZWZpeDogXCIvYmxvZy9cIiwgcG9zaXRpb246IFwiaGVhZGVyXCIgfSxcbiAgICBdXG4gICAgY29uc3Qgd2l0aG91dFNpdGUgPSBidWlsZFJvb3RIZWFkKHtcbiAgICAgIGNvbmZpZzogeyAuLi5jb25maWcsIHNlY3Rpb25zIH0sXG4gICAgICBkZWZhdWx0RmF2aWNvbjogXCIvbG9nby5zdmdcIixcbiAgICAgIHN0eWxlc2hlZXRzOiBbXSxcbiAgICB9KVxuICAgIGNvbnN0IHdpdGhTaXRlID0gYnVpbGRSb290SGVhZCh7XG4gICAgICBjb25maWc6IHsgLi4uY29uZmlnLCBzZWN0aW9ucywgc2l0ZTogXCJodHRwczovL2V4YW1wbGUuY29tXCIsIGJhc2U6IFwiL3JlcG9cIiB9LFxuICAgICAgZGVmYXVsdEZhdmljb246IFwiL2xvZ28uc3ZnXCIsXG4gICAgICBzdHlsZXNoZWV0czogW10sXG4gICAgfSlcbiAgICBleHBlY3Qod2l0aG91dFNpdGUubGlua3Muc29tZShsID0+IGwucmVsID09PSBcImFsdGVybmF0ZVwiKSkudG9CZShmYWxzZSlcbiAgICBleHBlY3Qod2l0aFNpdGUubGlua3MpLnRvQ29udGFpbkVxdWFsKHtcbiAgICAgIHJlbDogXCJhbHRlcm5hdGVcIixcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vcnNzK3htbFwiLFxuICAgICAgdGl0bGU6IFwiQmxvZyBSU1MgRmVlZFwiLFxuICAgICAgaHJlZjogXCIvcmVwby9ibG9nL3Jzcy54bWxcIixcbiAgICB9KVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJidWlsZFBhZ2VIZWFkXCIsICgpID0+IHtcbiAgaXQoXCJlbWl0cyB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIGFydGljbGUgdHlwZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaGVhZCA9IGJ1aWxkUGFnZUhlYWQoe1xuICAgICAgY29uZmlnLFxuICAgICAgcGF0aDogXCIvZ3VpZGUvXCIsXG4gICAgICB0aXRsZTogXCJHdWlkZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSG93IHRvXCIsXG4gICAgICBpc0FydGljbGU6IHRydWUsXG4gICAgfSlcbiAgICBleHBlY3QoaGVhZC5tZXRhKS50b0VxdWFsKFtcbiAgICAgIHsgdGl0bGU6IFwiR3VpZGVcIiB9LFxuICAgICAgeyBwcm9wZXJ0eTogXCJvZzp0aXRsZVwiLCBjb250ZW50OiBcIkd1aWRlXCIgfSxcbiAgICAgIHsgbmFtZTogXCJkZXNjcmlwdGlvblwiLCBjb250ZW50OiBcIkhvdyB0b1wiIH0sXG4gICAgICB7IHByb3BlcnR5OiBcIm9nOmRlc2NyaXB0aW9uXCIsIGNvbnRlbnQ6IFwiSG93IHRvXCIgfSxcbiAgICAgIHsgcHJvcGVydHk6IFwib2c6dHlwZVwiLCBjb250ZW50OiBcImFydGljbGVcIiB9LFxuICAgIF0pXG4gICAgZXhwZWN0KGhlYWQubGlua3MpLnRvRXF1YWwoW1xuICAgICAgeyByZWw6IFwiYWx0ZXJuYXRlXCIsIHR5cGU6IFwidGV4dC9tYXJrZG93blwiLCBocmVmOiBcIi9ndWlkZS9pbmRleC5tZFwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcImFkZHMgYWJzb2x1dGUgdXJsLCBjYW5vbmljYWwgYW5kIGltYWdlIHdoZW4gc2l0ZSBpcyBzZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGhlYWQgPSBidWlsZFBhZ2VIZWFkKHtcbiAgICAgIGNvbmZpZzogeyAuLi5jb25maWcsIHNpdGU6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9cIiwgYmFzZTogXCIvcmVwb1wiIH0sXG4gICAgICBwYXRoOiBcIi9ndWlkZS9cIixcbiAgICAgIGltYWdlOiBcIi9yZXBvL2Fzc2V0cy9jb3Zlci5wbmdcIixcbiAgICB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEpLnRvRXF1YWwoW1xuICAgICAgeyBwcm9wZXJ0eTogXCJvZzp1cmxcIiwgY29udGVudDogXCJodHRwczovL2V4YW1wbGUuY29tL3JlcG8vZ3VpZGUvXCIgfSxcbiAgICAgIHsgcHJvcGVydHk6IFwib2c6aW1hZ2VcIiwgY29udGVudDogXCJodHRwczovL2V4YW1wbGUuY29tL3JlcG8vYXNzZXRzL2NvdmVyLnBuZ1wiIH0sXG4gICAgXSlcbiAgICBleHBlY3QoaGVhZC5saW5rcykudG9FcXVhbChbXG4gICAgICB7IHJlbDogXCJjYW5vbmljYWxcIiwgaHJlZjogXCJodHRwczovL2V4YW1wbGUuY29tL3JlcG8vZ3VpZGUvXCIgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwia2VlcHMgYW4gYWxyZWFkeSBhYnNvbHV0ZSBpbWFnZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaGVhZCA9IGJ1aWxkUGFnZUhlYWQoe1xuICAgICAgY29uZmlnOiB7IC4uLmNvbmZpZywgc2l0ZTogXCJodHRwczovL2V4YW1wbGUuY29tXCIgfSxcbiAgICAgIHBhdGg6IFwiL1wiLFxuICAgICAgaW1hZ2U6IFwiaHR0cHM6Ly9jZG4uZXhhbXBsZS5jb20vY292ZXIucG5nXCIsXG4gICAgfSlcbiAgICBleHBlY3QoaGVhZC5tZXRhKS50b0NvbnRhaW5FcXVhbCh7XG4gICAgICBwcm9wZXJ0eTogXCJvZzppbWFnZVwiLFxuICAgICAgY29udGVudDogXCJodHRwczovL2Nkbi5leGFtcGxlLmNvbS9jb3Zlci5wbmdcIixcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwic2tpcHMgb2c6aW1hZ2Ugd2l0aG91dCBzaXRlXCIsICgpID0+IHtcbiAgICBjb25zdCBoZWFkID0gYnVpbGRQYWdlSGVhZCh7IGNvbmZpZywgcGF0aDogXCIvXCIsIGltYWdlOiBcIi9jb3Zlci5wbmdcIiB9KVxuICAgIGV4cGVjdChoZWFkLm1ldGEpLnRvRXF1YWwoW10pXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Config } from "../models/config.ts";
|
|
2
|
+
import type { RoutedSection } from "../models/section.ts";
|
|
3
|
+
/** The slice of a built article that agent-facing files are rendered from. */
|
|
4
|
+
export interface LlmsArticle {
|
|
5
|
+
path: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
order?: number;
|
|
9
|
+
date?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Render `llms.txt`: the site title and description, then one Markdown link
|
|
12
|
+
* per article twin, grouped under each routed section in sidebar order. */
|
|
13
|
+
export declare function renderLlmsText(props: {
|
|
14
|
+
config: Pick<Config, "title" | "description" | "site" | "base" | "sections">;
|
|
15
|
+
articles: LlmsArticle[];
|
|
16
|
+
}): string;
|
|
17
|
+
/** Render the Markdown twin of a section's index page (a blog or changelog
|
|
18
|
+
* listing), which has no article of its own: links to the section's articles. */
|
|
19
|
+
export declare function renderSectionIndex(props: {
|
|
20
|
+
config: Pick<Config, "site" | "base" | "sections">;
|
|
21
|
+
section: RoutedSection;
|
|
22
|
+
articles: LlmsArticle[];
|
|
23
|
+
}): string;
|
|
24
|
+
/** Render the Markdown twin of an article: its title and description as the
|
|
25
|
+
* rendered page shows them, then the body without its own leading h1. */
|
|
26
|
+
export declare function renderMarkdownTwin(props: {
|
|
27
|
+
article: LlmsArticle;
|
|
28
|
+
content: string;
|
|
29
|
+
}): string;
|
|
30
|
+
/** Path of an article's Markdown twin inside the build output (no base). */
|
|
31
|
+
export declare function buildTwinFileName(path: string): string;
|
|
32
|
+
/** Drop a leading h1 so a title set by frontmatter or a patch is not shown twice */
|
|
33
|
+
export declare function stripLeadingH1(content: string): string;
|