livemark 0.19.0 → 0.21.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 +4 -0
- package/build/components/Layout.js +6 -4
- package/build/components/Sidebar.js +7 -3
- package/build/components/SiteLink.d.ts +12 -0
- package/build/components/SiteLink.js +27 -0
- package/build/content/article.d.ts +3 -0
- package/build/helpers/section.d.ts +10 -0
- package/build/helpers/section.js +9 -1
- package/build/helpers/section.unit.js +36 -2
- package/build/models/config.d.ts +12 -0
- package/build/models/section.d.ts +8 -0
- package/build/models/section.js +2 -1
- package/build/plugins/vite-robots.d.ts +17 -0
- package/build/plugins/vite-robots.js +40 -0
- package/build/plugins/vite-robots.unit.d.ts +1 -0
- package/build/plugins/vite-robots.unit.js +20 -0
- package/build/vite.config.js +3 -1
- package/package.json +14 -15
- package/source/components/Layout.tsx +10 -5
- package/source/components/Sidebar.tsx +9 -2
- package/source/components/SiteLink.tsx +46 -0
- package/source/helpers/section.ts +9 -0
- package/source/helpers/section.unit.ts +42 -0
- package/source/models/section.ts +1 -0
- package/source/plugins/vite-robots.ts +51 -0
- package/source/plugins/vite-robots.unit.ts +32 -0
- package/source/vite.config.ts +2 -0
|
@@ -26,6 +26,7 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
26
26
|
position: "header" | "sidebar";
|
|
27
27
|
siteTitle?: string | undefined;
|
|
28
28
|
siteDescription?: string | undefined;
|
|
29
|
+
siteLink?: string | undefined;
|
|
29
30
|
type: "article";
|
|
30
31
|
prefix: string;
|
|
31
32
|
} | {
|
|
@@ -34,6 +35,7 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
34
35
|
position: "header" | "sidebar";
|
|
35
36
|
siteTitle?: string | undefined;
|
|
36
37
|
siteDescription?: string | undefined;
|
|
38
|
+
siteLink?: string | undefined;
|
|
37
39
|
type: "blog";
|
|
38
40
|
prefix: string;
|
|
39
41
|
} | {
|
|
@@ -42,6 +44,7 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
42
44
|
position: "header" | "sidebar";
|
|
43
45
|
siteTitle?: string | undefined;
|
|
44
46
|
siteDescription?: string | undefined;
|
|
47
|
+
siteLink?: string | undefined;
|
|
45
48
|
type: "changelog";
|
|
46
49
|
prefix: string;
|
|
47
50
|
source: string;
|
|
@@ -52,6 +55,7 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
52
55
|
position: "header" | "sidebar";
|
|
53
56
|
siteTitle?: string | undefined;
|
|
54
57
|
siteDescription?: string | undefined;
|
|
58
|
+
siteLink?: string | undefined;
|
|
55
59
|
type: "custom";
|
|
56
60
|
url: string;
|
|
57
61
|
})[] | undefined;
|
|
@@ -5,11 +5,12 @@ import { useHotkey } from "@tanstack/react-hotkeys";
|
|
|
5
5
|
import { currentSection, sectionFirstArticle, sectionFlatArticles, sortedArticles, } from "../content/article.js";
|
|
6
6
|
import { DynamicIcon } from "../helpers/dynamic-icon.js";
|
|
7
7
|
import { prefixUrl } from "../helpers/prefix-url.js";
|
|
8
|
-
import { customSectionActive } from "../helpers/section.js";
|
|
8
|
+
import { activeSiteLink, customSectionActive } from "../helpers/section.js";
|
|
9
9
|
import { SidebarInset, SidebarProvider, SidebarTrigger, useSidebar, } from "../elements/sidebar.js";
|
|
10
10
|
import { BackToTop } from "./BackToTop.js";
|
|
11
11
|
import { Banner } from "./Banner.js";
|
|
12
12
|
import { Sidebar } from "./Sidebar.js";
|
|
13
|
+
import { SiteLink } from "./SiteLink.js";
|
|
13
14
|
import { SiteTitle } from "./SiteTitle.js";
|
|
14
15
|
function splatFor(pathname) {
|
|
15
16
|
return { _splat: pathname.replace(/^\/|\/$/g, "") };
|
|
@@ -20,13 +21,14 @@ export function Layout(props) {
|
|
|
20
21
|
const activeSection = articleRoute
|
|
21
22
|
? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
|
|
22
23
|
: undefined;
|
|
24
|
+
const siteLinkTarget = activeSiteLink(pathname, config.sections ?? []);
|
|
23
25
|
useHotkey("J", () => window.scrollBy({ top: window.innerHeight * 0.8, behavior: "smooth" }));
|
|
24
26
|
useHotkey("K", () => window.scrollBy({ top: -window.innerHeight * 0.8, behavior: "smooth" }));
|
|
25
27
|
const sections = config.sections;
|
|
26
28
|
const header = (_jsxs("header", { className: "sticky top-0 z-20 flex h-16 shrink-0 items-center border-b bg-background", children: [
|
|
27
29
|
_jsx("div", { className: `flex items-center self-stretch pl-4 ${props.withSidebar ? "pr-4" : "lg:pr-20"}`, children: props.withSidebar ? (_jsxs(_Fragment, { children: [
|
|
28
|
-
_jsx("div", { className: "hidden lg:flex", children: _jsx(SidebarTrigger, {}) }), _jsx(
|
|
29
|
-
] })) : (_jsx(
|
|
30
|
+
_jsx("div", { className: "hidden lg:flex", children: _jsx(SidebarTrigger, {}) }), _jsx(SiteLink, { to: siteLinkTarget, className: "lg:hidden flex items-center gap-2", children: _jsx(SiteTitle, {}) })
|
|
31
|
+
] })) : (_jsx(SiteLink, { to: siteLinkTarget, className: "flex items-center gap-2", children: _jsx(SiteTitle, {}) })) }), _jsxs("div", { className: "hidden lg:flex flex-1 items-center gap-8 self-stretch px-6 text-sm", children: [sections?.length ? (sections
|
|
30
32
|
.filter(section => section.position === "header")
|
|
31
33
|
.map(section => {
|
|
32
34
|
const icon = section.icon;
|
|
@@ -69,4 +71,4 @@ function SidebarShell(props) {
|
|
|
69
71
|
] })
|
|
70
72
|
] }));
|
|
71
73
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxHQUNYLE1BQU0sd0JBQXlCLENBQUE7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWlCLENBQUE7QUFFM0MsU0FBUyxRQUFRLENBQUMsUUFBZ0I7SUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBR3RCO0lBQ0MsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUs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YUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDaEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUF1QyxFQUFFLEVBQUU7UUFDMUQsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQ3JCLElBQUssS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0RSxDQUFDLENBQUE7SUFDRCxPQUFPLENBQ0wsZUFBSyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU87WUFDbkQsS0FBQyxPQUFPLElBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEdBQUksRUFDM0MsTUFBQyxZQUFZLGVBQ1YsS0FBSyxDQUFDLE1BQU0sRUFDYixlQUFNLFNBQVMsRUFBQyxRQUFRLFlBQUUsS0FBSyxDQUFDLFFBQVEsR0FBUSxFQUNoRCxLQUFDLFNBQVMsS0FBRztvQkFDQTtZQUNYLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHtcbiAgY3VycmVudFNlY3Rpb24sXG4gIHNlY3Rpb25GaXJzdEFydGljbGUsXG4gIHNlY3Rpb25GbGF0QXJ0aWNsZXMsXG4gIHNvcnRlZEFydGljbGVzLFxufSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IER5bmFtaWNJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvZHluYW1pYy1pY29uLnRzeFwiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi4vaGVscGVycy9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IGN1c3RvbVNlY3Rpb25BY3RpdmUgfSBmcm9tIFwiLi4vaGVscGVycy9zZWN0aW9uLnRzXCJcbmltcG9ydCB7XG4gIFNpZGViYXJJbnNldCxcbiAgU2lkZWJhclByb3ZpZGVyLFxuICBTaWRlYmFyVHJpZ2dlcixcbiAgdXNlU2lkZWJhcixcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL3NpZGViYXIudHN4XCJcbmltcG9ydCB7IEJhY2tUb1RvcCB9IGZyb20gXCIuL0JhY2tUb1RvcC50c3hcIlxuaW1wb3J0IHsgQmFubmVyIH0gZnJvbSBcIi4vQmFubmVyLnRzeFwiXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSBcIi4vU2lkZWJhci50c3hcIlxuaW1wb3J0IHsgU2l0ZVRpdGxlIH0gZnJvbSBcIi4vU2l0ZVRpdGxlLnRzeFwiXG5cbmZ1bmN0aW9uIHNwbGF0Rm9yKHBhdGhuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgX3NwbGF0OiBwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIikgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTGF5b3V0KHByb3BzOiB7XG4gIHdpdGhTaWRlYmFyPzogYm9vbGVhblxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcbiAgY29uc3QgYXJ0aWNsZVJvdXRlID0gdXNlTWF0Y2goeyBmcm9tOiBcIi8kXCIsIHNob3VsZFRocm93OiBmYWxzZSB9KVxuICBjb25zdCBhY3RpdmVTZWN0aW9uID0gYXJ0aWNsZVJvdXRlXG4gICAgPyBjdXJyZW50U2VjdGlvbihgLyR7cGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpfS9gKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgdXNlSG90a2V5KFwiSlwiLCAoKSA9PlxuICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogd2luZG93LmlubmVySGVpZ2h0ICogMC44LCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KSxcbiAgKVxuICB1c2VIb3RrZXkoXCJLXCIsICgpID0+XG4gICAgd2luZG93LnNjcm9sbEJ5KHsgdG9wOiAtd2luZG93LmlubmVySGVpZ2h0ICogMC44LCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KSxcbiAgKVxuXG4gIGNvbnN0IHNlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zXG5cbiAgY29uc3QgaGVhZGVyID0gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwic3RpY2t5IHRvcC0wIHotMjAgZmxleCBoLTE2IHNocmluay0wIGl0ZW1zLWNlbnRlciBib3JkZXItYiBiZy1iYWNrZ3JvdW5kXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGZsZXggaXRlbXMtY2VudGVyIHNlbGYtc3RyZXRjaCBwbC00ICR7cHJvcHMud2l0aFNpZGViYXIgPyBcInByLTRcIiA6IFwibGc6cHItMjBcIn1gfVxuICAgICAgPlxuICAgICAgICB7cHJvcHMud2l0aFNpZGViYXIgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIGxnOmZsZXhcIj5cbiAgICAgICAgICAgICAgPFNpZGViYXJUcmlnZ2VyIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxMaW5rIHRvPVwiL1wiIGNsYXNzTmFtZT1cImxnOmhpZGRlbiBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICA8U2l0ZVRpdGxlIC8+XG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPExpbmsgdG89XCIvXCIgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIGxnOmZsZXggZmxleC0xIGl0ZW1zLWNlbnRlciBnYXAtOCBzZWxmLXN0cmV0Y2ggcHgtNiB0ZXh0LXNtXCI+XG4gICAgICAgIHtzZWN0aW9ucz8ubGVuZ3RoID8gKFxuICAgICAgICAgIHNlY3Rpb25zXG4gICAgICAgICAgICAuZmlsdGVyKHNlY3Rpb24gPT4gc2VjdGlvbi5wb3NpdGlvbiA9PT0gXCJoZWFkZXJcIilcbiAgICAgICAgICAgIC5tYXAoc2VjdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGljb24gPSBzZWN0aW9uLmljb25cbiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24udHlwZSA9PT0gXCJjdXN0b21cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gY3VzdG9tU2VjdGlvbkFjdGl2ZShzZWN0aW9uLnVybCwgcGF0aG5hbWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2VjdGlvbi51cmx9XG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e3ByZWZpeFVybChzZWN0aW9uLnVybCwgY29uZmlnLmJhc2UpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LWZvcmVncm91bmQgJHtcbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZvbnQtbWVkaXVtIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmQgcGItMC41IC1tYi0wLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIm9wYWNpdHktODAgaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpY29uICYmIDxEeW5hbWljSWNvbiBuYW1lPXtpY29ufSBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+fVxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VjdGlvbi50aXRsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlU2VjdGlvbj8ucHJlZml4ID09PSBzZWN0aW9uLnByZWZpeFxuICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24udHlwZSA9PT0gXCJibG9nXCIgfHwgc2VjdGlvbi50eXBlID09PSBcImNoYW5nZWxvZ1wiXG4gICAgICAgICAgICAgICAgICA/IHNlY3Rpb24ucHJlZml4XG4gICAgICAgICAgICAgICAgICA6IHNlY3Rpb25GaXJzdEFydGljbGUuZ2V0KHNlY3Rpb24ucHJlZml4KVxuICAgICAgICAgICAgICBjb25zdCBsYXRlc3RWZXJzaW9uID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uLnR5cGUgPT09IFwiY2hhbmdlbG9nXCIgJiYgc2VjdGlvbi52ZXJzaW9uXG4gICAgICAgICAgICAgICAgICA/IHNvcnRlZEFydGljbGVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgYSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5wYXRoID09PSBzZWN0aW9uRmxhdEFydGljbGVzLmdldChzZWN0aW9uLnByZWZpeCk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgKT8udGl0bGVcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgIGtleT17c2VjdGlvbi5wcmVmaXh9XG4gICAgICAgICAgICAgICAgICB0bz17dGFyZ2V0ID09PSBcIi9cIiA/IFwiL1wiIDogXCIvJFwifVxuICAgICAgICAgICAgICAgICAgcGFyYW1zPXt0YXJnZXQgJiYgdGFyZ2V0ICE9PSBcIi9cIiA/IHNwbGF0Rm9yKHRhcmdldCkgOiB7fX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQtZm9yZWdyb3VuZCAke1xuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgID8gXCJmb250LW1lZGl1bSBib3JkZXItYi0yIGJvcmRlci1mb3JlZ3JvdW5kIHBiLTAuNSAtbWItMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwib3BhY2l0eS04MCBob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHlcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2ljb24gJiYgPER5bmFtaWNJY29uIG5hbWU9e2ljb259IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz59XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3NlY3Rpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHtsYXRlc3RWZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTgwXCI+ICh7bGF0ZXN0VmVyc2lvbn0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCIvXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSB1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb2NzXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgICB7Y29uZmlnLmxpbmtzXG4gICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICBsaW5rID0+XG4gICAgICAgICAgICAgIGxpbmsucG9zaXRpb24gPT09IFwiaGVhZGVyXCIgJiZcbiAgICAgICAgICAgICAgKCFsaW5rLnByZWZpeCB8fCBsaW5rLnByZWZpeCA9PT0gYWN0aXZlU2VjdGlvbj8ucHJlZml4KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcChsaW5rID0+IChcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGtleT17bGluay51cmx9XG4gICAgICAgICAgICAgIGhyZWY9e3ByZWZpeFVybChsaW5rLnVybCwgY29uZmlnLmJhc2UpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWZvcmVncm91bmQgb3BhY2l0eS04MCBob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGluay5pY29uICYmIChcbiAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9e2xpbmsuaWNvbn1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZSBzaXplLTMuNSBhbGlnbi1bLTAuMTI1ZW1dXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfXtcIiBcIn1cbiAgICAgICAgICAgICAge2xpbmsudGl0bGV9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDxCYW5uZXIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZzpoaWRkZW4gbWwtYXV0byBwci0yXCI+XG4gICAgICAgIDxTaWRlYmFyVHJpZ2dlciAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTaWRlYmFyUHJvdmlkZXJcbiAgICAgIGtleT17cHJvcHMud2l0aFNpZGViYXIgPyBcInNpZGViYXJcIiA6IFwibWluaVwifVxuICAgICAgZGVmYXVsdE9wZW49eyEhcHJvcHMud2l0aFNpZGViYXJ9XG4gICAgPlxuICAgICAgPFNpZGViYXJTaGVsbCB3aXRoU2lkZWJhcj17cHJvcHMud2l0aFNpZGViYXJ9IGhlYWRlcj17aGVhZGVyfT5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9TaWRlYmFyU2hlbGw+XG4gICAgPC9TaWRlYmFyUHJvdmlkZXI+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhclNoZWxsKHByb3BzOiB7XG4gIHdpdGhTaWRlYmFyPzogYm9vbGVhblxuICBoZWFkZXI6IFJlYWN0LlJlYWN0Tm9kZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICBjb25zdCB7IGlzTW9iaWxlLCBzZXRPcGVuTW9iaWxlIH0gPSB1c2VTaWRlYmFyKClcbiAgY29uc3Qgb25DbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzTW9iaWxlKSByZXR1cm5cbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcImFcIikpIHNldE9wZW5Nb2JpbGUoZmFsc2UpXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiY29udGVudHNcIiB9fSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxTaWRlYmFyIHdpdGhTaWRlYmFyPXtwcm9wcy53aXRoU2lkZWJhcn0gLz5cbiAgICAgIDxTaWRlYmFySW5zZXQ+XG4gICAgICAgIHtwcm9wcy5oZWFkZXJ9XG4gICAgICAgIDxtYWluIGNsYXNzTmFtZT1cImZsZXgtMVwiPntwcm9wcy5jaGlsZHJlbn08L21haW4+XG4gICAgICAgIDxCYWNrVG9Ub3AgLz5cbiAgICAgIDwvU2lkZWJhckluc2V0PlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBRTNDLFNBQVMsUUFBUSxDQUFDLFFBQWdCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFV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LENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FNM0IsQ0FDbkIsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUlyQjtJQUNDLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDaEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUF1QyxFQUFFLEVBQUU7UUFDMUQsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQ3JCLElBQUssS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0RSxDQUFDLENBQUE7SUFDRCxPQUFPLENBQ0wsZUFBSyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU87WUFDbkQsS0FBQyxPQUFPLElBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEdBQUksRUFDM0MsTUFBQyxZQUFZLGVBQ1YsS0FBSyxDQUFDLE1BQU0sRUFDYixlQUFNLFNBQVMsRUFBQyxRQUFRLFlBQUUsS0FBSyxDQUFDLFFBQVEsR0FBUSxFQUNoRCxLQUFDLFNBQVMsS0FBRztvQkFDQTtZQUNYLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHtcbiAgY3VycmVudFNlY3Rpb24sXG4gIHNlY3Rpb25GaXJzdEFydGljbGUsXG4gIHNlY3Rpb25GbGF0QXJ0aWNsZXMsXG4gIHNvcnRlZEFydGljbGVzLFxufSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IER5bmFtaWNJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvZHluYW1pYy1pY29uLnRzeFwiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi4vaGVscGVycy9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IGFjdGl2ZVNpdGVMaW5rLCBjdXN0b21TZWN0aW9uQWN0aXZlIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFySW5zZXQsXG4gIFNpZGViYXJQcm92aWRlcixcbiAgU2lkZWJhclRyaWdnZXIsXG4gIHVzZVNpZGViYXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy9zaWRlYmFyLnRzeFwiXG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tIFwiLi9CYWNrVG9Ub3AudHN4XCJcbmltcG9ydCB7IEJhbm5lciB9IGZyb20gXCIuL0Jhbm5lci50c3hcIlxuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gXCIuL1NpZGViYXIudHN4XCJcbmltcG9ydCB7IFNpdGVMaW5rIH0gZnJvbSBcIi4vU2l0ZUxpbmsudHN4XCJcbmltcG9ydCB7IFNpdGVUaXRsZSB9IGZyb20gXCIuL1NpdGVUaXRsZS50c3hcIlxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExheW91dChwcm9wczoge1xuICB3aXRoU2lkZWJhcj86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBzaXRlTGlua1RhcmdldCA9IGFjdGl2ZVNpdGVMaW5rKHBhdGhuYW1lLCBjb25maWcuc2VjdGlvbnMgPz8gW10pXG5cbiAgdXNlSG90a2V5KFwiSlwiLCAoKSA9PlxuICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogd2luZG93LmlubmVySGVpZ2h0ICogMC44LCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KSxcbiAgKVxuICB1c2VIb3RrZXkoXCJLXCIsICgpID0+XG4gICAgd2luZG93LnNjcm9sbEJ5KHsgdG9wOiAtd2luZG93LmlubmVySGVpZ2h0ICogMC44LCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KSxcbiAgKVxuXG4gIGNvbnN0IHNlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zXG5cbiAgY29uc3QgaGVhZGVyID0gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwic3RpY2t5IHRvcC0wIHotMjAgZmxleCBoLTE2IHNocmluay0wIGl0ZW1zLWNlbnRlciBib3JkZXItYiBiZy1iYWNrZ3JvdW5kXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YGZsZXggaXRlbXMtY2VudGVyIHNlbGYtc3RyZXRjaCBwbC00ICR7cHJvcHMud2l0aFNpZGViYXIgPyBcInByLTRcIiA6IFwibGc6cHItMjBcIn1gfVxuICAgICAgPlxuICAgICAgICB7cHJvcHMud2l0aFNpZGViYXIgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIGxnOmZsZXhcIj5cbiAgICAgICAgICAgICAgPFNpZGViYXJUcmlnZ2VyIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxTaXRlTGlua1xuICAgICAgICAgICAgICB0bz17c2l0ZUxpbmtUYXJnZXR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxnOmhpZGRlbiBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICAgIDwvU2l0ZUxpbms+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNpdGVMaW5rIHRvPXtzaXRlTGlua1RhcmdldH0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICA8L1NpdGVMaW5rPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBsZzpmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXIgZ2FwLTggc2VsZi1zdHJldGNoIHB4LTYgdGV4dC1zbVwiPlxuICAgICAgICB7c2VjdGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgICAgICBzZWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcihzZWN0aW9uID0+IHNlY3Rpb24ucG9zaXRpb24gPT09IFwiaGVhZGVyXCIpXG4gICAgICAgICAgICAubWFwKHNlY3Rpb24gPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpY29uID0gc2VjdGlvbi5pY29uXG4gICAgICAgICAgICAgIGlmIChzZWN0aW9uLnR5cGUgPT09IFwiY3VzdG9tXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGN1c3RvbVNlY3Rpb25BY3RpdmUoc2VjdGlvbi51cmwsIHBhdGhuYW1lKVxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24udXJsfVxuICAgICAgICAgICAgICAgICAgICBocmVmPXtwcmVmaXhVcmwoc2VjdGlvbi51cmwsIGNvbmZpZy5iYXNlKX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1mb3JlZ3JvdW5kICR7XG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmb250LW1lZGl1bSBib3JkZXItYi0yIGJvcmRlci1mb3JlZ3JvdW5kIHBiLTAuNSAtbWItMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aWNvbiAmJiA8RHluYW1pY0ljb24gbmFtZT17aWNvbn0gY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3NlY3Rpb24udGl0bGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVNlY3Rpb24/LnByZWZpeCA9PT0gc2VjdGlvbi5wcmVmaXhcbiAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uLnR5cGUgPT09IFwiYmxvZ1wiIHx8IHNlY3Rpb24udHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIlxuICAgICAgICAgICAgICAgICAgPyBzZWN0aW9uLnByZWZpeFxuICAgICAgICAgICAgICAgICAgOiBzZWN0aW9uRmlyc3RBcnRpY2xlLmdldChzZWN0aW9uLnByZWZpeClcbiAgICAgICAgICAgICAgY29uc3QgbGF0ZXN0VmVyc2lvbiA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbi50eXBlID09PSBcImNoYW5nZWxvZ1wiICYmIHNlY3Rpb24udmVyc2lvblxuICAgICAgICAgICAgICAgICAgPyBzb3J0ZWRBcnRpY2xlcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIGEgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGEucGF0aCA9PT0gc2VjdGlvbkZsYXRBcnRpY2xlcy5nZXQoc2VjdGlvbi5wcmVmaXgpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICk/LnRpdGxlXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ucHJlZml4fVxuICAgICAgICAgICAgICAgICAgdG89e3RhcmdldCA9PT0gXCIvXCIgPyBcIi9cIiA6IFwiLyRcIn1cbiAgICAgICAgICAgICAgICAgIHBhcmFtcz17dGFyZ2V0ICYmIHRhcmdldCAhPT0gXCIvXCIgPyBzcGxhdEZvcih0YXJnZXQpIDoge319XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LWZvcmVncm91bmQgJHtcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiZm9udC1tZWRpdW0gYm9yZGVyLWItMiBib3JkZXItZm9yZWdyb3VuZCBwYi0wLjUgLW1iLTAuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIm9wYWNpdHktODAgaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtpY29uICYmIDxEeW5hbWljSWNvbiBuYW1lPXtpY29ufSBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+fVxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICB7bGF0ZXN0VmVyc2lvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwib3BhY2l0eS04MFwiPiAoe2xhdGVzdFZlcnNpb259KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIHRvPVwiL1wiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWZvcmVncm91bmQgZm9udC1tZWRpdW0gdW5kZXJsaW5lIHVuZGVybGluZS1vZmZzZXQtNFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRG9jc1xuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgICAge2NvbmZpZy5saW5rc1xuICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgbGluayA9PlxuICAgICAgICAgICAgICBsaW5rLnBvc2l0aW9uID09PSBcImhlYWRlclwiICYmXG4gICAgICAgICAgICAgICghbGluay5wcmVmaXggfHwgbGluay5wcmVmaXggPT09IGFjdGl2ZVNlY3Rpb24/LnByZWZpeCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAobGluayA9PiAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBrZXk9e2xpbmsudXJsfVxuICAgICAgICAgICAgICBocmVmPXtwcmVmaXhVcmwobGluay51cmwsIGNvbmZpZy5iYXNlKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1mb3JlZ3JvdW5kIG9wYWNpdHktODAgaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xpbmsuaWNvbiAmJiAoXG4gICAgICAgICAgICAgICAgPER5bmFtaWNJY29uXG4gICAgICAgICAgICAgICAgICBuYW1lPXtsaW5rLmljb259XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUgc2l6ZS0zLjUgYWxpZ24tWy0wLjEyNWVtXVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX17XCIgXCJ9XG4gICAgICAgICAgICAgIHtsaW5rLnRpdGxlfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICkpfVxuICAgICAgICA8QmFubmVyIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGc6aGlkZGVuIG1sLWF1dG8gcHItMlwiPlxuICAgICAgICA8U2lkZWJhclRyaWdnZXIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZWJhclByb3ZpZGVyXG4gICAgICBrZXk9e3Byb3BzLndpdGhTaWRlYmFyID8gXCJzaWRlYmFyXCIgOiBcIm1pbmlcIn1cbiAgICAgIGRlZmF1bHRPcGVuPXshIXByb3BzLndpdGhTaWRlYmFyfVxuICAgID5cbiAgICAgIDxTaWRlYmFyU2hlbGwgd2l0aFNpZGViYXI9e3Byb3BzLndpdGhTaWRlYmFyfSBoZWFkZXI9e2hlYWRlcn0+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvU2lkZWJhclNoZWxsPlxuICAgIDwvU2lkZWJhclByb3ZpZGVyPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJTaGVsbChwcm9wczoge1xuICB3aXRoU2lkZWJhcj86IGJvb2xlYW5cbiAgaGVhZGVyOiBSZWFjdC5SZWFjdE5vZGVcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgeyBpc01vYmlsZSwgc2V0T3Blbk1vYmlsZSB9ID0gdXNlU2lkZWJhcigpXG4gIGNvbnN0IG9uQ2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc01vYmlsZSkgcmV0dXJuXG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXCJhXCIpKSBzZXRPcGVuTW9iaWxlKGZhbHNlKVxuICB9XG4gIHJldHVybiAoXG4gICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfX0gb25DbGljaz17b25DbGlja30+XG4gICAgICA8U2lkZWJhciB3aXRoU2lkZWJhcj17cHJvcHMud2l0aFNpZGViYXJ9IC8+XG4gICAgICA8U2lkZWJhckluc2V0PlxuICAgICAgICB7cHJvcHMuaGVhZGVyfVxuICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJmbGV4LTFcIj57cHJvcHMuY2hpbGRyZW59PC9tYWluPlxuICAgICAgICA8QmFja1RvVG9wIC8+XG4gICAgICA8L1NpZGViYXJJbnNldD5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { config } from "livemark:virtual";
|
|
3
|
+
import { useLocation, useMatch } from "@tanstack/react-router";
|
|
3
4
|
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
4
5
|
import { currentSection } from "../content/article.js";
|
|
6
|
+
import { activeSiteLink } from "../helpers/section.js";
|
|
5
7
|
import { Sidebar as SidebarRoot, SidebarContent, SidebarFooter, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarRail, useSidebar, } from "../elements/sidebar.js";
|
|
6
8
|
import { Search } from "./Search.js";
|
|
7
9
|
import { SidebarArticles } from "./SidebarArticles.js";
|
|
@@ -9,6 +11,7 @@ import { SidebarLinks } from "./SidebarLinks.js";
|
|
|
9
11
|
import { SidebarPosts } from "./SidebarPosts.js";
|
|
10
12
|
import { SidebarReleases } from "./SidebarReleases.js";
|
|
11
13
|
import { SidebarSections } from "./SidebarSections.js";
|
|
14
|
+
import { SiteLink } from "./SiteLink.js";
|
|
12
15
|
import { SiteTitle } from "./SiteTitle.js";
|
|
13
16
|
import { Theme } from "./Theme.js";
|
|
14
17
|
/** Application sidebar shell: header, body slot picked by section.type, footer */
|
|
@@ -23,8 +26,9 @@ export function Sidebar(props) {
|
|
|
23
26
|
const section = articleRoute
|
|
24
27
|
? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
|
|
25
28
|
: undefined;
|
|
29
|
+
const siteLinkTarget = activeSiteLink(pathname, config.sections ?? []);
|
|
26
30
|
return (_jsxs(SidebarRoot, { children: [
|
|
27
|
-
_jsx(SidebarHeader, { children: _jsx(SidebarMenu, { children: _jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { size: "lg", render: _jsx(
|
|
31
|
+
_jsx(SidebarHeader, { children: _jsx(SidebarMenu, { children: _jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { size: "lg", render: _jsx(SiteLink, { to: siteLinkTarget }), children: _jsx(SiteTitle, {}) }) }) }) }), _jsxs(SidebarContent, { children: [
|
|
28
32
|
_jsx(SidebarSections, {}), props.withSidebar && section?.type === "blog" && _jsx(SidebarPosts, {}), props.withSidebar && section?.type === "changelog" && (_jsx(SidebarReleases, {})), props.withSidebar &&
|
|
29
33
|
section?.type !== "blog" &&
|
|
30
34
|
section?.type !== "changelog" && _jsx(SidebarArticles, {}), _jsx(SidebarLinks, {})
|
|
@@ -33,4 +37,4 @@ export function Sidebar(props) {
|
|
|
33
37
|
] }), _jsx(SidebarRail, {})
|
|
34
38
|
] }));
|
|
35
39
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL1NpZGViYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsT0FBTyxJQUFJLFdBQVcsRUFDdEIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW9CLENBQUE7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBdUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQWEsQ0FBQTtBQUVuQyxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFnQztJQUN0RCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFFaEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDbEIsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLFFBQVE7WUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUNwRCxDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0sT0FBTyxHQUFHLFlBQVk7UUFDMUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDekQsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNiLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUV0RSxPQUFPLENBQ0wsTUFBQyxXQUFXO1lBQ1YsS0FBQyxhQUFhLGNBQ1osS0FBQyxXQUFXLGNBQ1YsS0FBQyxlQUFlLGNBQ2QsS0FBQyxpQkFBaUIsSUFDaEIsSUFBSSxFQUFDLElBQUksRUFDVCxNQUFNLEVBQUUsS0FBQyxRQUFRLElBQUMsRUFBRSxFQUFFLGNBQWMsR0FBSSxZQUV4QyxLQUFDLFNBQVMsS0FBRyxHQUNLLEdBQ0osR0FDTixHQUNBLEVBQ2hCLE1BQUMsY0FBYztvQkFDYixLQUFDLGVBQWUsS0FBRyxFQUNsQixLQUFLLENBQUMsV0FBVyxJQUFJLE9BQU8sRUFBRSxJQUFJLEtBQUssTUFBTSxJQUFJLEtBQUMsWUFBWSxLQUFHLEVBQ2pFLEtBQUssQ0FBQyxXQUFXLElBQUksT0FBTyxFQUFFLElBQUksS0FBSyxXQUFXLElBQUksQ0FDckQsS0FBQyxlQUFlLEtBQUcsQ0FDcEIsRUFDQSxLQUFLLENBQUMsV0FBVzt3QkFDaEIsT0FBTyxFQUFFLElBQUksS0FBSyxNQUFNO3dCQUN4QixPQUFPLEVBQUUsSUFBSSxLQUFLLFdBQVcsSUFBSSxLQUFDLGVBQWUsS0FBRyxFQUN0RCxLQUFDLFlBQVksS0FBRztvQkFDRCxFQUNqQixNQUFDLGFBQWEsSUFBQyxTQUFTLEVBQUMsZUFBZTtvQkFDdEMsS0FBQyxNQUFNLEtBQUcsRUFDVixLQUFDLEtBQUssS0FBRztvQkFDSyxFQUNoQixLQUFDLFdBQVcsS0FBRztZQUNILENBQ2YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHsgY3VycmVudFNlY3Rpb24gfSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IGFjdGl2ZVNpdGVMaW5rIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFyIGFzIFNpZGViYXJSb290LFxuICBTaWRlYmFyQ29udGVudCxcbiAgU2lkZWJhckZvb3RlcixcbiAgU2lkZWJhckhlYWRlcixcbiAgU2lkZWJhck1lbnUsXG4gIFNpZGViYXJNZW51QnV0dG9uLFxuICBTaWRlYmFyTWVudUl0ZW0sXG4gIFNpZGViYXJSYWlsLFxuICB1c2VTaWRlYmFyLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvc2lkZWJhci50c3hcIlxuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSBcIi4vU2VhcmNoLnRzeFwiXG5pbXBvcnQgeyBTaWRlYmFyQXJ0aWNsZXMgfSBmcm9tIFwiLi9TaWRlYmFyQXJ0aWNsZXMudHN4XCJcbmltcG9ydCB7IFNpZGViYXJMaW5rcyB9IGZyb20gXCIuL1NpZGViYXJMaW5rcy50c3hcIlxuaW1wb3J0IHsgU2lkZWJhclBvc3RzIH0gZnJvbSBcIi4vU2lkZWJhclBvc3RzLnRzeFwiXG5pbXBvcnQgeyBTaWRlYmFyUmVsZWFzZXMgfSBmcm9tIFwiLi9TaWRlYmFyUmVsZWFzZXMudHN4XCJcbmltcG9ydCB7IFNpZGViYXJTZWN0aW9ucyB9IGZyb20gXCIuL1NpZGViYXJTZWN0aW9ucy50c3hcIlxuaW1wb3J0IHsgU2l0ZUxpbmsgfSBmcm9tIFwiLi9TaXRlTGluay50c3hcIlxuaW1wb3J0IHsgU2l0ZVRpdGxlIH0gZnJvbSBcIi4vU2l0ZVRpdGxlLnRzeFwiXG5pbXBvcnQgeyBUaGVtZSB9IGZyb20gXCIuL1RoZW1lLnRzeFwiXG5cbi8qKiBBcHBsaWNhdGlvbiBzaWRlYmFyIHNoZWxsOiBoZWFkZXIsIGJvZHkgc2xvdCBwaWNrZWQgYnkgc2VjdGlvbi50eXBlLCBmb290ZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBTaWRlYmFyKHByb3BzOiB7IHdpdGhTaWRlYmFyPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlTG9jYXRpb24oeyBzZWxlY3Q6IGwgPT4gbC5wYXRobmFtZSB9KVxuICBjb25zdCBhcnRpY2xlUm91dGUgPSB1c2VNYXRjaCh7IGZyb206IFwiLyRcIiwgc2hvdWxkVGhyb3c6IGZhbHNlIH0pXG4gIGNvbnN0IHsgdG9nZ2xlU2lkZWJhciwgaXNNb2JpbGUgfSA9IHVzZVNpZGViYXIoKVxuXG4gIHVzZUhvdGtleShcIlNcIiwgKCkgPT4ge1xuICAgIGlmIChwcm9wcy53aXRoU2lkZWJhciB8fCBpc01vYmlsZSkgdG9nZ2xlU2lkZWJhcigpXG4gIH0pXG5cbiAgY29uc3Qgc2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBzaXRlTGlua1RhcmdldCA9IGFjdGl2ZVNpdGVMaW5rKHBhdGhuYW1lLCBjb25maWcuc2VjdGlvbnMgPz8gW10pXG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZWJhclJvb3Q+XG4gICAgICA8U2lkZWJhckhlYWRlcj5cbiAgICAgICAgPFNpZGViYXJNZW51PlxuICAgICAgICAgIDxTaWRlYmFyTWVudUl0ZW0+XG4gICAgICAgICAgICA8U2lkZWJhck1lbnVCdXR0b25cbiAgICAgICAgICAgICAgc2l6ZT1cImxnXCJcbiAgICAgICAgICAgICAgcmVuZGVyPXs8U2l0ZUxpbmsgdG89e3NpdGVMaW5rVGFyZ2V0fSAvPn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFNpdGVUaXRsZSAvPlxuICAgICAgICAgICAgPC9TaWRlYmFyTWVudUJ1dHRvbj5cbiAgICAgICAgICA8L1NpZGViYXJNZW51SXRlbT5cbiAgICAgICAgPC9TaWRlYmFyTWVudT5cbiAgICAgIDwvU2lkZWJhckhlYWRlcj5cbiAgICAgIDxTaWRlYmFyQ29udGVudD5cbiAgICAgICAgPFNpZGViYXJTZWN0aW9ucyAvPlxuICAgICAgICB7cHJvcHMud2l0aFNpZGViYXIgJiYgc2VjdGlvbj8udHlwZSA9PT0gXCJibG9nXCIgJiYgPFNpZGViYXJQb3N0cyAvPn1cbiAgICAgICAge3Byb3BzLndpdGhTaWRlYmFyICYmIHNlY3Rpb24/LnR5cGUgPT09IFwiY2hhbmdlbG9nXCIgJiYgKFxuICAgICAgICAgIDxTaWRlYmFyUmVsZWFzZXMgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLndpdGhTaWRlYmFyICYmXG4gICAgICAgICAgc2VjdGlvbj8udHlwZSAhPT0gXCJibG9nXCIgJiZcbiAgICAgICAgICBzZWN0aW9uPy50eXBlICE9PSBcImNoYW5nZWxvZ1wiICYmIDxTaWRlYmFyQXJ0aWNsZXMgLz59XG4gICAgICAgIDxTaWRlYmFyTGlua3MgLz5cbiAgICAgIDwvU2lkZWJhckNvbnRlbnQ+XG4gICAgICA8U2lkZWJhckZvb3RlciBjbGFzc05hbWU9XCJwLTQgc3BhY2UteS0yXCI+XG4gICAgICAgIDxTZWFyY2ggLz5cbiAgICAgICAgPFRoZW1lIC8+XG4gICAgICA8L1NpZGViYXJGb290ZXI+XG4gICAgICA8U2lkZWJhclJhaWwgLz5cbiAgICA8L1NpZGViYXJSb290PlxuICApXG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/** Wrapper for the SiteTitle's link target. Picks `<Link>` for internal
|
|
3
|
+
* paths (rooted at `/`) and a plain `<a>` for absolute URLs (`http(s)`,
|
|
4
|
+
* protocol-relative, `mailto:`). Designed to be used both directly
|
|
5
|
+
* (`<SiteLink to={...}>...</SiteLink>`) and as the `render` element of
|
|
6
|
+
* a `SidebarMenuButton`, which means props (`className`, children) are
|
|
7
|
+
* forwarded onto the underlying anchor or Link. */
|
|
8
|
+
export declare function SiteLink(props: {
|
|
9
|
+
to: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { config } from "livemark:virtual";
|
|
3
|
+
import { Link } from "@tanstack/react-router";
|
|
4
|
+
import { prefixUrl } from "../helpers/prefix-url.js";
|
|
5
|
+
/** Wrapper for the SiteTitle's link target. Picks `<Link>` for internal
|
|
6
|
+
* paths (rooted at `/`) and a plain `<a>` for absolute URLs (`http(s)`,
|
|
7
|
+
* protocol-relative, `mailto:`). Designed to be used both directly
|
|
8
|
+
* (`<SiteLink to={...}>...</SiteLink>`) and as the `render` element of
|
|
9
|
+
* a `SidebarMenuButton`, which means props (`className`, children) are
|
|
10
|
+
* forwarded onto the underlying anchor or Link. */
|
|
11
|
+
export function SiteLink(props) {
|
|
12
|
+
if (isAbsolute(props.to)) {
|
|
13
|
+
return (_jsx("a", { href: prefixUrl(props.to, config.base), className: props.className, children: props.children }));
|
|
14
|
+
}
|
|
15
|
+
if (props.to === "/") {
|
|
16
|
+
return (_jsx(Link, { to: "/", className: props.className, children: props.children }));
|
|
17
|
+
}
|
|
18
|
+
const splat = props.to.replace(/^\/|\/$/g, "");
|
|
19
|
+
return (_jsx(Link, { to: "/$", params: { _splat: splat }, className: props.className, children: props.children }));
|
|
20
|
+
}
|
|
21
|
+
function isAbsolute(url) {
|
|
22
|
+
return (url.startsWith("http://") ||
|
|
23
|
+
url.startsWith("https://") ||
|
|
24
|
+
url.startsWith("//") ||
|
|
25
|
+
url.startsWith("mailto:"));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2l0ZUxpbmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9TaXRlTGluay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRXBEOzs7OztvREFLb0Q7QUFDcEQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUl4QjtJQUNDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FDTCxZQUFHLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLFlBQ2xFLEtBQUssQ0FBQyxRQUFRLEdBQ2IsQ0FDTCxDQUFBO0lBQ0gsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQ0wsS0FBQyxJQUFJLElBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsWUFDcEMsS0FBSyxDQUFDLFFBQVEsR0FDVixDQUNSLENBQUE7SUFDSCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzlDLE9BQU8sQ0FDTCxLQUFDLElBQUksSUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsWUFDaEUsS0FBSyxDQUFDLFFBQVEsR0FDVixDQUNSLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVztJQUM3QixPQUFPLENBQ0wsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFDekIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDMUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDcEIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tIFwibGl2ZW1hcms6dmlydHVhbFwiXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgcHJlZml4VXJsIH0gZnJvbSBcIi4uL2hlbHBlcnMvcHJlZml4LXVybC50c1wiXG5cbi8qKiBXcmFwcGVyIGZvciB0aGUgU2l0ZVRpdGxlJ3MgbGluayB0YXJnZXQuIFBpY2tzIGA8TGluaz5gIGZvciBpbnRlcm5hbFxuICogIHBhdGhzIChyb290ZWQgYXQgYC9gKSBhbmQgYSBwbGFpbiBgPGE+YCBmb3IgYWJzb2x1dGUgVVJMcyAoYGh0dHAocylgLFxuICogIHByb3RvY29sLXJlbGF0aXZlLCBgbWFpbHRvOmApLiBEZXNpZ25lZCB0byBiZSB1c2VkIGJvdGggZGlyZWN0bHlcbiAqICAoYDxTaXRlTGluayB0bz17Li4ufT4uLi48L1NpdGVMaW5rPmApIGFuZCBhcyB0aGUgYHJlbmRlcmAgZWxlbWVudCBvZlxuICogIGEgYFNpZGViYXJNZW51QnV0dG9uYCwgd2hpY2ggbWVhbnMgcHJvcHMgKGBjbGFzc05hbWVgLCBjaGlsZHJlbikgYXJlXG4gKiAgZm9yd2FyZGVkIG9udG8gdGhlIHVuZGVybHlpbmcgYW5jaG9yIG9yIExpbmsuICovXG5leHBvcnQgZnVuY3Rpb24gU2l0ZUxpbmsocHJvcHM6IHtcbiAgdG86IHN0cmluZ1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGVcbn0pIHtcbiAgaWYgKGlzQWJzb2x1dGUocHJvcHMudG8pKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e3ByZWZpeFVybChwcm9wcy50bywgY29uZmlnLmJhc2UpfSBjbGFzc05hbWU9e3Byb3BzLmNsYXNzTmFtZX0+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvYT5cbiAgICApXG4gIH1cbiAgaWYgKHByb3BzLnRvID09PSBcIi9cIikge1xuICAgIHJldHVybiAoXG4gICAgICA8TGluayB0bz1cIi9cIiBjbGFzc05hbWU9e3Byb3BzLmNsYXNzTmFtZX0+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvTGluaz5cbiAgICApXG4gIH1cbiAgY29uc3Qgc3BsYXQgPSBwcm9wcy50by5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIilcbiAgcmV0dXJuIChcbiAgICA8TGluayB0bz1cIi8kXCIgcGFyYW1zPXt7IF9zcGxhdDogc3BsYXQgfX0gY2xhc3NOYW1lPXtwcm9wcy5jbGFzc05hbWV9PlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvTGluaz5cbiAgKVxufVxuXG5mdW5jdGlvbiBpc0Fic29sdXRlKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiAoXG4gICAgdXJsLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpIHx8XG4gICAgdXJsLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSB8fFxuICAgIHVybC5zdGFydHNXaXRoKFwiLy9cIikgfHxcbiAgICB1cmwuc3RhcnRzV2l0aChcIm1haWx0bzpcIilcbiAgKVxufVxuIl19
|
|
@@ -26,6 +26,7 @@ export declare function currentSection(path: string): {
|
|
|
26
26
|
position: "header" | "sidebar";
|
|
27
27
|
siteTitle?: string | undefined;
|
|
28
28
|
siteDescription?: string | undefined;
|
|
29
|
+
siteLink?: string | undefined;
|
|
29
30
|
type: "article";
|
|
30
31
|
prefix: string;
|
|
31
32
|
} | {
|
|
@@ -34,6 +35,7 @@ export declare function currentSection(path: string): {
|
|
|
34
35
|
position: "header" | "sidebar";
|
|
35
36
|
siteTitle?: string | undefined;
|
|
36
37
|
siteDescription?: string | undefined;
|
|
38
|
+
siteLink?: string | undefined;
|
|
37
39
|
type: "blog";
|
|
38
40
|
prefix: string;
|
|
39
41
|
} | {
|
|
@@ -42,6 +44,7 @@ export declare function currentSection(path: string): {
|
|
|
42
44
|
position: "header" | "sidebar";
|
|
43
45
|
siteTitle?: string | undefined;
|
|
44
46
|
siteDescription?: string | undefined;
|
|
47
|
+
siteLink?: string | undefined;
|
|
45
48
|
type: "changelog";
|
|
46
49
|
prefix: string;
|
|
47
50
|
source: string;
|
|
@@ -6,12 +6,19 @@ import type { Section } from "../models/section.ts";
|
|
|
6
6
|
* `customSectionActive` so a custom URL of `/` only activates on
|
|
7
7
|
* the home page itself. Custom sections with absolute URLs never
|
|
8
8
|
* match. Longest match wins. */
|
|
9
|
+
/** Resolve where the SiteTitle should link to for the current pathname.
|
|
10
|
+
* If the active section sets `siteLink`, returns that — otherwise falls
|
|
11
|
+
* back to `/` (the home page). The returned value may be an internal
|
|
12
|
+
* path (`/foo/`) or an absolute URL (`https://…`); rendering decides
|
|
13
|
+
* which element to use. */
|
|
14
|
+
export declare function activeSiteLink(pathname: string, sections: Section[]): string;
|
|
9
15
|
export declare function activeSiteSection(pathname: string, sections: Section[]): {
|
|
10
16
|
icon?: string | undefined;
|
|
11
17
|
title: string;
|
|
12
18
|
position: "header" | "sidebar";
|
|
13
19
|
siteTitle?: string | undefined;
|
|
14
20
|
siteDescription?: string | undefined;
|
|
21
|
+
siteLink?: string | undefined;
|
|
15
22
|
type: "article";
|
|
16
23
|
prefix: string;
|
|
17
24
|
} | {
|
|
@@ -20,6 +27,7 @@ export declare function activeSiteSection(pathname: string, sections: Section[])
|
|
|
20
27
|
position: "header" | "sidebar";
|
|
21
28
|
siteTitle?: string | undefined;
|
|
22
29
|
siteDescription?: string | undefined;
|
|
30
|
+
siteLink?: string | undefined;
|
|
23
31
|
type: "blog";
|
|
24
32
|
prefix: string;
|
|
25
33
|
} | {
|
|
@@ -28,6 +36,7 @@ export declare function activeSiteSection(pathname: string, sections: Section[])
|
|
|
28
36
|
position: "header" | "sidebar";
|
|
29
37
|
siteTitle?: string | undefined;
|
|
30
38
|
siteDescription?: string | undefined;
|
|
39
|
+
siteLink?: string | undefined;
|
|
31
40
|
type: "changelog";
|
|
32
41
|
prefix: string;
|
|
33
42
|
source: string;
|
|
@@ -38,6 +47,7 @@ export declare function activeSiteSection(pathname: string, sections: Section[])
|
|
|
38
47
|
position: "header" | "sidebar";
|
|
39
48
|
siteTitle?: string | undefined;
|
|
40
49
|
siteDescription?: string | undefined;
|
|
50
|
+
siteLink?: string | undefined;
|
|
41
51
|
type: "custom";
|
|
42
52
|
url: string;
|
|
43
53
|
} | undefined;
|
package/build/helpers/section.js
CHANGED
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
* `customSectionActive` so a custom URL of `/` only activates on
|
|
6
6
|
* the home page itself. Custom sections with absolute URLs never
|
|
7
7
|
* match. Longest match wins. */
|
|
8
|
+
/** Resolve where the SiteTitle should link to for the current pathname.
|
|
9
|
+
* If the active section sets `siteLink`, returns that — otherwise falls
|
|
10
|
+
* back to `/` (the home page). The returned value may be an internal
|
|
11
|
+
* path (`/foo/`) or an absolute URL (`https://…`); rendering decides
|
|
12
|
+
* which element to use. */
|
|
13
|
+
export function activeSiteLink(pathname, sections) {
|
|
14
|
+
return activeSiteSection(pathname, sections)?.siteLink ?? "/";
|
|
15
|
+
}
|
|
8
16
|
export function activeSiteSection(pathname, sections) {
|
|
9
17
|
const current = `/${pathname.replace(/^\/|\/$/g, "")}/`;
|
|
10
18
|
let best;
|
|
@@ -77,4 +85,4 @@ export function partitionBySection(articles, sections) {
|
|
|
77
85
|
}
|
|
78
86
|
return buckets;
|
|
79
87
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7OztpQ0FNaUM7QUFDakM7Ozs7NEJBSTRCO0FBQzVCLE1BQU0sVUFBVSxjQUFjLENBQUMsUUFBZ0IsRUFBRSxRQUFtQjtJQUNsRSxPQUFPLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLElBQUksR0FBRyxDQUFBO0FBQy9ELENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxRQUFtQjtJQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUE7SUFDdkQsSUFBSSxJQUF5QixDQUFBO0lBQzdCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUNmLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLE1BQU07WUFBRSxTQUFRO1FBQ3JCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEtBQUssR0FBRztZQUFFLFNBQVE7UUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQUUsU0FBUTtRQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxHQUFHLENBQUMsQ0FBQTtZQUNSLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxDQUFVO0lBQ3BDLElB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IGZyb20gXCIuLi9tb2RlbHMvc2VjdGlvbi50c1wiXG5cbi8qKiBSZXR1cm4gdGhlIHNlY3Rpb24gd2hvc2UgcHJlZml4IG9yIGludGVybmFsLVVSTCBiZXN0IG1hdGNoZXMgdGhlXG4gKiAgZ2l2ZW4gcGF0aG5hbWUuIFJvdXRlZCBzZWN0aW9ucyAoYXJ0aWNsZS9ibG9nL2NoYW5nZWxvZykgbWF0Y2ggYnlcbiAqICBgcHJlZml4YC4gQ3VzdG9tIHNlY3Rpb25zIHdpdGggaW50ZXJuYWwgVVJMcyAoYC9gLWxlYWRpbmcsIG5vdFxuICogIGAvL2ApIG1hdGNoIGJ5IHRoZWlyIFVSTCDigJQgd2l0aCB0aGUgc2FtZSBleGFjdC1gL2AgZ3VhcmQgYXNcbiAqICBgY3VzdG9tU2VjdGlvbkFjdGl2ZWAgc28gYSBjdXN0b20gVVJMIG9mIGAvYCBvbmx5IGFjdGl2YXRlcyBvblxuICogIHRoZSBob21lIHBhZ2UgaXRzZWxmLiBDdXN0b20gc2VjdGlvbnMgd2l0aCBhYnNvbHV0ZSBVUkxzIG5ldmVyXG4gKiAgbWF0Y2guIExvbmdlc3QgbWF0Y2ggd2lucy4gKi9cbi8qKiBSZXNvbHZlIHdoZXJlIHRoZSBTaXRlVGl0bGUgc2hvdWxkIGxpbmsgdG8gZm9yIHRoZSBjdXJyZW50IHBhdGhuYW1lLlxuICogIElmIHRoZSBhY3RpdmUgc2VjdGlvbiBzZXRzIGBzaXRlTGlua2AsIHJldHVybnMgdGhhdCDigJQgb3RoZXJ3aXNlIGZhbGxzXG4gKiAgYmFjayB0byBgL2AgKHRoZSBob21lIHBhZ2UpLiBUaGUgcmV0dXJuZWQgdmFsdWUgbWF5IGJlIGFuIGludGVybmFsXG4gKiAgcGF0aCAoYC9mb28vYCkgb3IgYW4gYWJzb2x1dGUgVVJMIChgaHR0cHM6Ly/igKZgKTsgcmVuZGVyaW5nIGRlY2lkZXNcbiAqICB3aGljaCBlbGVtZW50IHRvIHVzZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmVTaXRlTGluayhwYXRobmFtZTogc3RyaW5nLCBzZWN0aW9uczogU2VjdGlvbltdKSB7XG4gIHJldHVybiBhY3RpdmVTaXRlU2VjdGlvbihwYXRobmFtZSwgc2VjdGlvbnMpPy5zaXRlTGluayA/PyBcIi9cIlxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZlU2l0ZVNlY3Rpb24ocGF0aG5hbWU6IHN0cmluZywgc2VjdGlvbnM6IFNlY3Rpb25bXSkge1xuICBjb25zdCBjdXJyZW50ID0gYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBsZXQgYmVzdDogU2VjdGlvbiB8IHVuZGVmaW5lZFxuICBsZXQgYmVzdExlbiA9IDBcbiAgZm9yIChjb25zdCBzIG9mIHNlY3Rpb25zKSB7XG4gICAgY29uc3QgcHJlZml4ID0gc2VjdGlvbk1hdGNoUHJlZml4KHMpXG4gICAgaWYgKCFwcmVmaXgpIGNvbnRpbnVlXG4gICAgaWYgKHMudHlwZSA9PT0gXCJjdXN0b21cIiAmJiBwcmVmaXggPT09IFwiL1wiICYmIGN1cnJlbnQgIT09IFwiL1wiKSBjb250aW51ZVxuICAgIGlmICghY3VycmVudC5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlXG4gICAgaWYgKHByZWZpeC5sZW5ndGggPiBiZXN0TGVuKSB7XG4gICAgICBiZXN0ID0gc1xuICAgICAgYmVzdExlbiA9IHByZWZpeC5sZW5ndGhcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Rcbn1cblxuZnVuY3Rpb24gc2VjdGlvbk1hdGNoUHJlZml4KHM6IFNlY3Rpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAocy50eXBlICE9PSBcImN1c3RvbVwiKSByZXR1cm4gcy5wcmVmaXhcbiAgaWYgKCFzLnVybC5zdGFydHNXaXRoKFwiL1wiKSB8fCBzLnVybC5zdGFydHNXaXRoKFwiLy9cIikpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3Qgc3RyaXBwZWQgPSBzLnVybC5zcGxpdCgvWz8jXS8pWzBdID8/IFwiXCJcbiAgcmV0dXJuIGAvJHtzdHJpcHBlZC5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2Bcbn1cblxuLyoqIFdoZXRoZXIgYSBjdXN0b20gc2VjdGlvbidzIFVSTCBzaG91bGQgaGlnaGxpZ2h0IGFzIGFjdGl2ZSBmb3IgdGhlXG4gKiAgY3VycmVudCBwYXRobmFtZS4gT25seSBgL2AtbGVhZGluZyBpbnRlcm5hbCBwYXRocyBwYXJ0aWNpcGF0ZTtcbiAqICBwcm90b2NvbC1hYnNvbHV0ZSAoYGh0dHBzOi8v4oCmYCwgYC8vY2Ru4oCmYCkgVVJMcyBuZXZlciBoaWdobGlnaHQuXG4gKiAgTWF0Y2ggc2VtYW50aWNzIG1pcnJvciByb3V0ZWQgc2VjdGlvbnMg4oCUIGV4YWN0IHBhdGggb3IgYW55XG4gKiAgZGVzY2VuZGFudC4gQSBVUkwgb2YgYC9gIG9ubHkgaGlnaGxpZ2h0cyB0aGUgaG9tZSBwYWdlIGl0c2VsZlxuICogIChvdGhlcndpc2UgaXQgd291bGQgYWx3YXlzIG1hdGNoKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b21TZWN0aW9uQWN0aXZlKHVybDogc3RyaW5nLCBwYXRobmFtZTogc3RyaW5nKSB7XG4gIGlmICghdXJsLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHVybC5zdGFydHNXaXRoKFwiLy9cIikpIHJldHVybiBmYWxzZVxuICBjb25zdCBzdHJpcHBlZCA9IHVybC5zcGxpdCgvWz8jXS8pWzBdID8/IFwiXCJcbiAgY29uc3QgdGFyZ2V0ID0gYC8ke3N0cmlwcGVkLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBjb25zdCBjdXJyZW50ID0gYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBpZiAodGFyZ2V0ID09PSBcIi9cIikgcmV0dXJuIGN1cnJlbnQgPT09IFwiL1wiXG4gIHJldHVybiBjdXJyZW50ID09PSB0YXJnZXQgfHwgY3VycmVudC5zdGFydHNXaXRoKHRhcmdldClcbn1cblxuLyoqIEZpbmQgdGhlIHNlY3Rpb24gd2hvc2UgcHJlZml4IGlzIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgYXJ0aWNsZSBwYXRoICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hTZWN0aW9uPFMgZXh0ZW5kcyB7IHByZWZpeDogc3RyaW5nIH0+KFxuICBhcnRpY2xlUGF0aDogc3RyaW5nLFxuICBzZWN0aW9uczogU1tdLFxuKTogUyB8IHVuZGVmaW5lZCB7XG4gIGxldCBiZXN0OiBTIHwgdW5kZWZpbmVkXG4gIGxldCBiZXN0TGVuID0gMFxuICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICBpZiAoXG4gICAgICBhcnRpY2xlUGF0aC5zdGFydHNXaXRoKHNlY3Rpb24ucHJlZml4KSAmJlxuICAgICAgc2VjdGlvbi5wcmVmaXgubGVuZ3RoID4gYmVzdExlblxuICAgICkge1xuICAgICAgYmVzdCA9IHNlY3Rpb25cbiAgICAgIGJlc3RMZW4gPSBzZWN0aW9uLnByZWZpeC5sZW5ndGhcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Rcbn1cblxuLyoqIFNwbGl0IGFydGljbGVzIGludG8gcGVyLXNlY3Rpb24gYnVja2V0cy4gVW5tYXRjaGVkIGFydGljbGVzIGdvIHRvIFwiX19kZWZhdWx0X19cIiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpdGlvbkJ5U2VjdGlvbjxUIGV4dGVuZHMgeyBwYXRoOiBzdHJpbmcgfT4oXG4gIGFydGljbGVzOiBUW10sXG4gIHNlY3Rpb25zOiB7IHByZWZpeDogc3RyaW5nIH1bXSxcbik6IE1hcDxzdHJpbmcsIFRbXT4ge1xuICBjb25zdCBidWNrZXRzID0gbmV3IE1hcDxzdHJpbmcsIFRbXT4oKVxuICBmb3IgKGNvbnN0IGFydGljbGUgb2YgYXJ0aWNsZXMpIHtcbiAgICBjb25zdCBzZWN0aW9uID0gbWF0Y2hTZWN0aW9uKGFydGljbGUucGF0aCwgc2VjdGlvbnMpXG4gICAgY29uc3Qga2V5ID0gc2VjdGlvbj8ucHJlZml4ID8/IFwiX19kZWZhdWx0X19cIlxuICAgIGNvbnN0IGJ1Y2tldCA9IGJ1Y2tldHMuZ2V0KGtleSlcbiAgICBpZiAoYnVja2V0KSB7XG4gICAgICBidWNrZXQucHVzaChhcnRpY2xlKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWNrZXRzLnNldChrZXksIFthcnRpY2xlXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJ1Y2tldHNcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
-
import { activeSiteSection, customSectionActive, matchSection, partitionBySection, } from "./section.js";
|
|
2
|
+
import { activeSiteLink, activeSiteSection, customSectionActive, matchSection, partitionBySection, } from "./section.js";
|
|
3
3
|
describe("matchSection", () => {
|
|
4
4
|
const sections = [
|
|
5
5
|
{ title: "Docs", prefix: "/" },
|
|
@@ -144,4 +144,38 @@ describe("activeSiteSection", () => {
|
|
|
144
144
|
expect(activeSiteSection("/anything/", [blog, apiCustom])).toBeUndefined();
|
|
145
145
|
});
|
|
146
146
|
});
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvc2VjdGlvbi51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixrQkFBa0IsR0FDbkIsTUFBTSxjQUFjLENBQUE7QUFFckIsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7SUFDNUIsTUFBTSxRQUFRLEdBQUc7UUFDZixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUNqQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRTtLQUM1QyxDQUFBO0lBRUQsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUM1RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7UUFDbEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUks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SUFBSSxDQUN0RSxLQUFLLENBQ04sQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3pFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtRQUMzRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNwRSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxHQUFHLEVBQUU7UUFDM0UsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDNUUsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB0eXBlIHsgU2VjdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBhY3RpdmVTaXRlU2VjdGlvbixcbiAgY3VzdG9tU2VjdGlvbkFjdGl2ZSxcbiAgbWF0Y2hTZWN0aW9uLFxuICBwYXJ0aXRpb25CeVNlY3Rpb24sXG59IGZyb20gXCIuL3NlY3Rpb24udHNcIlxuXG5kZXNjcmliZShcIm1hdGNoU2VjdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHsgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiIH0sXG4gICAgeyB0aXRsZTogXCJBUElcIiwgcHJlZml4OiBcIi9hcGkvXCIgfSxcbiAgICB7IHRpdGxlOiBcIkFQSSBBdXRoXCIsIHByZWZpeDogXCIvYXBpL2F1dGgvXCIgfSxcbiAgXVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIHRoZSBtb3N0IHNwZWNpZmljIHByZWZpeFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9hcGkvYXV0aC9sb2dpbi9cIiwgc2VjdGlvbnMpPy50aXRsZSkudG9CZShcIkFQSSBBdXRoXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggYSBsZXNzIHNwZWNpZmljIHByZWZpeCB3aGVuIG5vIGRlZXBlciBtYXRjaFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9hcGkvdXNlcnMvXCIsIHNlY3Rpb25zKT8udGl0bGUpLnRvQmUoXCJBUElcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCByb290IHNlY3Rpb24gYXMgZmFsbGJhY2tcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChtYXRjaFNlY3Rpb24oXCIvZ2V0dGluZy1zdGFydGVkL1wiLCBzZWN0aW9ucyk/LnRpdGxlKS50b0JlKFwiRG9jc1wiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiBubyBzZWN0aW9uIG1hdGNoZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG5hcnJvdyA9IFt7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9XVxuICAgIGV4cGVjdChtYXRjaFNlY3Rpb24oXCIvZ2V0dGluZy1zdGFydGVkL1wiLCBuYXJyb3cpKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBhIHNpbmdsZSByb290IHNlY3Rpb24gZm9yIGFsbCBhcnRpY2xlc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IFt7IHRpdGxlOiBcIkRvY3NcIiwgcHJlZml4OiBcIi9cIiB9XVxuICAgIGV4cGVjdChtYXRjaFNlY3Rpb24oXCIvYW55dGhpbmcvZGVlcC9wYXRoL1wiLCByb290KT8udGl0bGUpLnRvQmUoXCJEb2NzXCIpXG4gIH0pXG59KVxuXG5kZXNjcmliZShcInBhcnRpdGlvbkJ5U2VjdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHsgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiIH0sXG4gICAgeyB0aXRsZTogXCJBUElcIiwgcHJlZml4OiBcIi9hcGkvXCIgfSxcbiAgXVxuXG4gIGNvbnN0IGFydGljbGVzID0gW1xuICAgIHsgcGF0aDogXCIvZ2V0dGluZy1zdGFydGVkL1wiIH0sXG4gICAgeyBwYXRoOiBcIi9ndWlkZS9cIiB9LFxuICAgIHsgcGF0aDogXCIvYXBpL3VzZXJzL1wiIH0sXG4gICAgeyBwYXRoOiBcIi9hcGkvYXV0aC9cIiB9LFxuICBdXG5cbiAgaXQoXCJzaG91bGQgc3BsaXQgYXJ0aWNsZXMgaW50byBzZWN0aW9uIGJ1Y2tldHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnRpdGlvbkJ5U2VjdGlvbihhcnRpY2xlcywgc2VjdGlvbnMpXG4gICAgZXhwZWN0KHJlc3VsdC5nZXQoXCIvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2dldHRpbmctc3RhcnRlZC9cIixcbiAgICAgIFwiL2d1aWRlL1wiLFxuICAgIF0pXG4gICAgZXhwZWN0KHJlc3VsdC5nZXQoXCIvYXBpL1wiKT8ubWFwKGEgPT4gYS5wYXRoKSkudG9FcXVhbChbXG4gICAgICBcIi9hcGkvdXNlcnMvXCIsXG4gICAgICBcIi9hcGkvYXV0aC9cIixcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHB1dCB1bm1hdGNoZWQgYXJ0aWNsZXMgaW4gX19kZWZhdWx0X18gYnVja2V0XCIsICgpID0+IHtcbiAgICBjb25zdCBuYXJyb3cgPSBbeyB0aXRsZTogXCJBUElcIiwgcHJlZml4OiBcIi9hcGkvXCIgfV1cbiAgICBjb25zdCByZXN1bHQgPSBwYXJ0aXRpb25CeVNlY3Rpb24oYXJ0aWNsZXMsIG5hcnJvdylcbiAgICBleHBlY3QocmVzdWx0LmdldChcIl9fZGVmYXVsdF9fXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2dldHRpbmctc3RhcnRlZC9cIixcbiAgICAgIFwiL2d1aWRlL1wiLFxuICAgIF0pXG4gICAgZXhwZWN0KHJlc3VsdC5nZXQoXCIvYXBpL1wiKT8ubWFwKGEgPT4gYS5wYXRoKSkudG9FcXVhbChbXG4gICAgICBcIi9hcGkvdXNlcnMvXCIsXG4gICAgICBcIi9hcGkvYXV0aC9cIixcbiAgICBdKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJjdXN0b21TZWN0aW9uQWN0aXZlXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGFuIGFic29sdXRlIGh0dHAgdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcImh0dHBzOi8veC5jb20veVwiLCBcIi95L1wiKSkudG9CZShmYWxzZSlcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcImh0dHA6Ly94LmNvbS95XCIsIFwiL3kvXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG5vdCBtYXRjaCBhIHByb3RvY29sLXJlbGF0aXZlIHVybFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvL2Nkbi54LmNvbS95XCIsIFwiL3kvXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG5vdCBtYXRjaCBhIGhhc2ggdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIiNzZWN0aW9uXCIsIFwiL3NlY3Rpb24vXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIHRoZSBleGFjdCBwYXRoXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dFwiLCBcIi9hYm91dC9cIikpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dC9cIiwgXCIvYWJvdXQvXCIpKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggYSBkZXNjZW5kYW50IHBhdGhcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0XCIsIFwiL2Fib3V0L3RlYW0vXCIpKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGEgc2libGluZyBwYXRoIHdpdGggc2hhcmVkIHByZWZpeFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXRcIiwgXCIvYWJvdXR1cy9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggZXhhY3Qgcm9vdCBvbmx5XCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9cIiwgXCIvXCIpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvXCIsIFwiL2Fib3V0L1wiKSkudG9CZShmYWxzZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBpZ25vcmUgcXVlcnkgYW5kIGhhc2ggb24gdGhlIHVybFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXQ/eD0xXCIsIFwiL2Fib3V0L1wiKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0I3RvcFwiLCBcIi9hYm91dC90ZWFtL1wiKSkudG9CZSh0cnVlKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJhY3RpdmVTaXRlU2VjdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IGRvY3M6IFNlY3Rpb24gPSB7XG4gICAgdHlwZTogXCJhcnRpY2xlXCIsXG4gICAgdGl0bGU6IFwiRG9jc1wiLFxuICAgIHByZWZpeDogXCIvXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cbiAgY29uc3QgYmxvZzogU2VjdGlvbiA9IHtcbiAgICB0eXBlOiBcImJsb2dcIixcbiAgICB0aXRsZTogXCJCbG9nXCIsXG4gICAgcHJlZml4OiBcIi9ibG9nL1wiLFxuICAgIHBvc2l0aW9uOiBcImhlYWRlclwiLFxuICB9XG4gIGNvbnN0IGFwaUN1c3RvbTogU2VjdGlvbiA9IHtcbiAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgIHRpdGxlOiBcIkFQSVwiLFxuICAgIHVybDogXCIvYXBpL3YyXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cbiAgY29uc3QgZ2l0aHViQ3VzdG9tOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgdGl0bGU6IFwiR2l0SHViXCIsXG4gICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9leGFtcGxlL3JlcG9cIixcbiAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgfVxuICBjb25zdCBob21lQ3VzdG9tOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgdGl0bGU6IFwiSG9tZVwiLFxuICAgIHVybDogXCIvXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cblxuICBpdChcInNob3VsZCByZXR1cm4gdGhlIHJvdXRlZCBzZWN0aW9uIG1hdGNoaW5nIGJ5IHByZWZpeFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFjdGl2ZVNpdGVTZWN0aW9uKFwiL2Jsb2cvcG9zdC9cIiwgW2RvY3MsIGJsb2ddKT8udGl0bGUpLnRvQmUoXCJCbG9nXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmV0dXJuIHRoZSBjdXN0b20gc2VjdGlvbiBtYXRjaGluZyBieSBpbnRlcm5hbCB1cmxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hcGkvdjIvdXNlcnMvXCIsIFtkb2NzLCBhcGlDdXN0b21dKT8udGl0bGUpLnRvQmUoXG4gICAgICBcIkFQSVwiLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCBwaWNrIHRoZSBsb25nZXN0IG1hdGNoIGFtb25nIG92ZXJsYXBwaW5nIHByZWZpeGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYmxvZy9wb3N0L1wiLCBbZG9jcywgYmxvZ10pPy50aXRsZSkudG9CZShcIkJsb2dcIilcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYXBpL3YyL2Zvby9cIiwgW2RvY3MsIGFwaUN1c3RvbV0pPy50aXRsZSkudG9CZShcbiAgICAgIFwiQVBJXCIsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGlnbm9yZSBjdXN0b20gc2VjdGlvbnMgd2l0aCBhYnNvbHV0ZSBVUkxzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYW55dGhpbmcvXCIsIFtnaXRodWJDdXN0b21dKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggY3VzdG9tIFVSTCBgL2Agb25seSBvbiB0aGUgaG9tZSBwYWdlXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvXCIsIFtob21lQ3VzdG9tXSk/LnRpdGxlKS50b0JlKFwiSG9tZVwiKVxuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hYm91dC9cIiwgW2hvbWVDdXN0b21dKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbGV0IHJvdXRlZCBgL2AgbWF0Y2ggZGVzY2VuZGFudHMgd2hpbGUgY3VzdG9tIGAvYCBkb2VzIG5vdFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFjdGl2ZVNpdGVTZWN0aW9uKFwiL2Fib3V0L1wiLCBbZG9jcywgaG9tZUN1c3RvbV0pPy50aXRsZSkudG9CZShcIkRvY3NcIilcbiAgfSlcblxuICBpdChcInNob3VsZCByZXR1cm4gdW5kZWZpbmVkIHdoZW4gbm8gc2VjdGlvbiBtYXRjaGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYW55dGhpbmcvXCIsIFtibG9nLCBhcGlDdXN0b21dKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG59KVxuIl19
|
|
147
|
+
describe("activeSiteLink", () => {
|
|
148
|
+
const docs = {
|
|
149
|
+
type: "article",
|
|
150
|
+
title: "Docs",
|
|
151
|
+
prefix: "/",
|
|
152
|
+
position: "header",
|
|
153
|
+
};
|
|
154
|
+
const blog = {
|
|
155
|
+
type: "blog",
|
|
156
|
+
title: "Blog",
|
|
157
|
+
prefix: "/blog/",
|
|
158
|
+
position: "header",
|
|
159
|
+
siteLink: "/blog/",
|
|
160
|
+
};
|
|
161
|
+
const externalCustom = {
|
|
162
|
+
type: "custom",
|
|
163
|
+
title: "GitHub",
|
|
164
|
+
url: "/github",
|
|
165
|
+
position: "header",
|
|
166
|
+
siteLink: "https://github.com/example/repo",
|
|
167
|
+
};
|
|
168
|
+
it("should default to '/' when no section matches", () => {
|
|
169
|
+
expect(activeSiteLink("/anything/", [blog])).toBe("/");
|
|
170
|
+
});
|
|
171
|
+
it("should default to '/' when matching section has no siteLink", () => {
|
|
172
|
+
expect(activeSiteLink("/about/", [docs])).toBe("/");
|
|
173
|
+
});
|
|
174
|
+
it("should return the matching section's siteLink", () => {
|
|
175
|
+
expect(activeSiteLink("/blog/post/", [blog])).toBe("/blog/");
|
|
176
|
+
});
|
|
177
|
+
it("should support absolute URLs as the siteLink", () => {
|
|
178
|
+
expect(activeSiteLink("/github/", [externalCustom])).toBe("https://github.com/example/repo");
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvc2VjdGlvbi51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFDTCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osa0JBQWtCLEdBQ25CLE1BQU0sY0FBYyxDQUFBO0FBRXJCLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDakMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUU7S0FDNUMsQ0FBQTtJQUVELEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7UUFDL0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDNUUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMERBQTBELEVBQUUsR0FBRyxFQUFFO1FBQ2xFLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7UUFDL0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMs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O0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHtcbiAgYWN0aXZlU2l0ZUxpbmssXG4gIGFjdGl2ZVNpdGVTZWN0aW9uLFxuICBjdXN0b21TZWN0aW9uQWN0aXZlLFxuICBtYXRjaFNlY3Rpb24sXG4gIHBhcnRpdGlvbkJ5U2VjdGlvbixcbn0gZnJvbSBcIi4vc2VjdGlvbi50c1wiXG5cbmRlc2NyaWJlKFwibWF0Y2hTZWN0aW9uXCIsICgpID0+IHtcbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAgeyB0aXRsZTogXCJEb2NzXCIsIHByZWZpeDogXCIvXCIgfSxcbiAgICB7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9LFxuICAgIHsgdGl0bGU6IFwiQVBJIEF1dGhcIiwgcHJlZml4OiBcIi9hcGkvYXV0aC9cIiB9LFxuICBdXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggdGhlIG1vc3Qgc3BlY2lmaWMgcHJlZml4XCIsICgpID0+IHtcbiAgICBleHBlY3QobWF0Y2hTZWN0aW9uKFwiL2FwaS9hdXRoL2xvZ2luL1wiLCBzZWN0aW9ucyk/LnRpdGxlKS50b0JlKFwiQVBJIEF1dGhcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBhIGxlc3Mgc3BlY2lmaWMgcHJlZml4IHdoZW4gbm8gZGVlcGVyIG1hdGNoXCIsICgpID0+IHtcbiAgICBleHBlY3QobWF0Y2hTZWN0aW9uKFwiL2FwaS91c2Vycy9cIiwgc2VjdGlvbnMpPy50aXRsZSkudG9CZShcIkFQSVwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIHJvb3Qgc2VjdGlvbiBhcyBmYWxsYmFja1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9nZXR0aW5nLXN0YXJ0ZWQvXCIsIHNlY3Rpb25zKT8udGl0bGUpLnRvQmUoXCJEb2NzXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCB3aGVuIG5vIHNlY3Rpb24gbWF0Y2hlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgbmFycm93ID0gW3sgdGl0bGU6IFwiQVBJXCIsIHByZWZpeDogXCIvYXBpL1wiIH1dXG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9nZXR0aW5nLXN0YXJ0ZWQvXCIsIG5hcnJvdykpLnRvQmVVbmRlZmluZWQoKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIGEgc2luZ2xlIHJvb3Qgc2VjdGlvbiBmb3IgYWxsIGFydGljbGVzXCIsICgpID0+IHtcbiAgICBjb25zdCByb290ID0gW3sgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiIH1dXG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9hbnl0aGluZy9kZWVwL3BhdGgvXCIsIHJvb3QpPy50aXRsZSkudG9CZShcIkRvY3NcIilcbiAgfSlcbn0pXG5cbmRlc2NyaWJlKFwicGFydGl0aW9uQnlTZWN0aW9uXCIsICgpID0+IHtcbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAgeyB0aXRsZTogXCJEb2NzXCIsIHByZWZpeDogXCIvXCIgfSxcbiAgICB7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9LFxuICBdXG5cbiAgY29uc3QgYXJ0aWNsZXMgPSBbXG4gICAgeyBwYXRoOiBcIi9nZXR0aW5nLXN0YXJ0ZWQvXCIgfSxcbiAgICB7IHBhdGg6IFwiL2d1aWRlL1wiIH0sXG4gICAgeyBwYXRoOiBcIi9hcGkvdXNlcnMvXCIgfSxcbiAgICB7IHBhdGg6IFwiL2FwaS9hdXRoL1wiIH0sXG4gIF1cblxuICBpdChcInNob3VsZCBzcGxpdCBhcnRpY2xlcyBpbnRvIHNlY3Rpb24gYnVja2V0c1wiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gcGFydGl0aW9uQnlTZWN0aW9uKGFydGljbGVzLCBzZWN0aW9ucylcbiAgICBleHBlY3QocmVzdWx0LmdldChcIi9cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgXCIvZ2V0dGluZy1zdGFydGVkL1wiLFxuICAgICAgXCIvZ3VpZGUvXCIsXG4gICAgXSlcbiAgICBleHBlY3QocmVzdWx0LmdldChcIi9hcGkvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2FwaS91c2Vycy9cIixcbiAgICAgIFwiL2FwaS9hdXRoL1wiLFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcHV0IHVubWF0Y2hlZCBhcnRpY2xlcyBpbiBfX2RlZmF1bHRfXyBidWNrZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG5hcnJvdyA9IFt7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9XVxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnRpdGlvbkJ5U2VjdGlvbihhcnRpY2xlcywgbmFycm93KVxuICAgIGV4cGVjdChyZXN1bHQuZ2V0KFwiX19kZWZhdWx0X19cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgXCIvZ2V0dGluZy1zdGFydGVkL1wiLFxuICAgICAgXCIvZ3VpZGUvXCIsXG4gICAgXSlcbiAgICBleHBlY3QocmVzdWx0LmdldChcIi9hcGkvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2FwaS91c2Vycy9cIixcbiAgICAgIFwiL2FwaS9hdXRoL1wiLFxuICAgIF0pXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImN1c3RvbVNlY3Rpb25BY3RpdmVcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBub3QgbWF0Y2ggYW4gYWJzb2x1dGUgaHR0cCB1cmxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiaHR0cHM6Ly94LmNvbS95XCIsIFwiL3kvXCIpKS50b0JlKGZhbHNlKVxuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiaHR0cDovL3guY29tL3lcIiwgXCIveS9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGEgcHJvdG9jb2wtcmVsYXRpdmUgdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi8vY2RuLnguY29tL3lcIiwgXCIveS9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGEgaGFzaCB1cmxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiI3NlY3Rpb25cIiwgXCIvc2VjdGlvbi9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggdGhlIGV4YWN0IHBhdGhcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0XCIsIFwiL2Fib3V0L1wiKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0L1wiLCBcIi9hYm91dC9cIikpLnRvQmUodHJ1ZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBhIGRlc2NlbmRhbnQgcGF0aFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXRcIiwgXCIvYWJvdXQvdGVhbS9cIikpLnRvQmUodHJ1ZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBub3QgbWF0Y2ggYSBzaWJsaW5nIHBhdGggd2l0aCBzaGFyZWQgcHJlZml4XCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dFwiLCBcIi9hYm91dHVzL1wiKSkudG9CZShmYWxzZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBleGFjdCByb290IG9ubHlcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL1wiLCBcIi9cIikpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9cIiwgXCIvYWJvdXQvXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGlnbm9yZSBxdWVyeSBhbmQgaGFzaCBvbiB0aGUgdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dD94PTFcIiwgXCIvYWJvdXQvXCIpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXQjdG9wXCIsIFwiL2Fib3V0L3RlYW0vXCIpKS50b0JlKHRydWUpXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImFjdGl2ZVNpdGVTZWN0aW9uXCIsICgpID0+IHtcbiAgY29uc3QgZG9jczogU2VjdGlvbiA9IHtcbiAgICB0eXBlOiBcImFydGljbGVcIixcbiAgICB0aXRsZTogXCJEb2NzXCIsXG4gICAgcHJlZml4OiBcIi9cIixcbiAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgfVxuICBjb25zdCBibG9nOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiYmxvZ1wiLFxuICAgIHRpdGxlOiBcIkJsb2dcIixcbiAgICBwcmVmaXg6IFwiL2Jsb2cvXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cbiAgY29uc3QgYXBpQ3VzdG9tOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgdGl0bGU6IFwiQVBJXCIsXG4gICAgdXJsOiBcIi9hcGkvdjJcIixcbiAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgfVxuICBjb25zdCBnaXRodWJDdXN0b206IFNlY3Rpb24gPSB7XG4gICAgdHlwZTogXCJjdXN0b21cIixcbiAgICB0aXRsZTogXCJHaXRIdWJcIixcbiAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL2V4YW1wbGUvcmVwb1wiLFxuICAgIHBvc2l0aW9uOiBcImhlYWRlclwiLFxuICB9XG4gIGNvbnN0IGhvbWVDdXN0b206IFNlY3Rpb24gPSB7XG4gICAgdHlwZTogXCJjdXN0b21cIixcbiAgICB0aXRsZTogXCJIb21lXCIsXG4gICAgdXJsOiBcIi9cIixcbiAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgfVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgcm91dGVkIHNlY3Rpb24gbWF0Y2hpbmcgYnkgcHJlZml4XCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYmxvZy9wb3N0L1wiLCBbZG9jcywgYmxvZ10pPy50aXRsZSkudG9CZShcIkJsb2dcIilcbiAgfSlcblxuICBpdChcInNob3VsZCByZXR1cm4gdGhlIGN1c3RvbSBzZWN0aW9uIG1hdGNoaW5nIGJ5IGludGVybmFsIHVybFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFjdGl2ZVNpdGVTZWN0aW9uKFwiL2FwaS92Mi91c2Vycy9cIiwgW2RvY3MsIGFwaUN1c3RvbV0pPy50aXRsZSkudG9CZShcbiAgICAgIFwiQVBJXCIsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHBpY2sgdGhlIGxvbmdlc3QgbWF0Y2ggYW1vbmcgb3ZlcmxhcHBpbmcgcHJlZml4ZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9ibG9nL3Bvc3QvXCIsIFtkb2NzLCBibG9nXSk/LnRpdGxlKS50b0JlKFwiQmxvZ1wiKVxuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hcGkvdjIvZm9vL1wiLCBbZG9jcywgYXBpQ3VzdG9tXSk/LnRpdGxlKS50b0JlKFxuICAgICAgXCJBUElcIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaWdub3JlIGN1c3RvbSBzZWN0aW9ucyB3aXRoIGFic29sdXRlIFVSTHNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hbnl0aGluZy9cIiwgW2dpdGh1YkN1c3RvbV0pKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBjdXN0b20gVVJMIGAvYCBvbmx5IG9uIHRoZSBob21lIHBhZ2VcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9cIiwgW2hvbWVDdXN0b21dKT8udGl0bGUpLnRvQmUoXCJIb21lXCIpXG4gICAgZXhwZWN0KGFjdGl2ZVNpdGVTZWN0aW9uKFwiL2Fib3V0L1wiLCBbaG9tZUN1c3RvbV0pKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcblxuICBpdChcInNob3VsZCBsZXQgcm91dGVkIGAvYCBtYXRjaCBkZXNjZW5kYW50cyB3aGlsZSBjdXN0b20gYC9gIGRvZXMgbm90XCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYWJvdXQvXCIsIFtkb2NzLCBob21lQ3VzdG9tXSk/LnRpdGxlKS50b0JlKFwiRG9jc1wiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiBubyBzZWN0aW9uIG1hdGNoZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hbnl0aGluZy9cIiwgW2Jsb2csIGFwaUN1c3RvbV0pKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcbn0pXG5cbmRlc2NyaWJlKFwiYWN0aXZlU2l0ZUxpbmtcIiwgKCkgPT4ge1xuICBjb25zdCBkb2NzOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiYXJ0aWNsZVwiLFxuICAgIHRpdGxlOiBcIkRvY3NcIixcbiAgICBwcmVmaXg6IFwiL1wiLFxuICAgIHBvc2l0aW9uOiBcImhlYWRlclwiLFxuICB9XG4gIGNvbnN0IGJsb2c6IFNlY3Rpb24gPSB7XG4gICAgdHlwZTogXCJibG9nXCIsXG4gICAgdGl0bGU6IFwiQmxvZ1wiLFxuICAgIHByZWZpeDogXCIvYmxvZy9cIixcbiAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgICBzaXRlTGluazogXCIvYmxvZy9cIixcbiAgfVxuICBjb25zdCBleHRlcm5hbEN1c3RvbTogU2VjdGlvbiA9IHtcbiAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgIHRpdGxlOiBcIkdpdEh1YlwiLFxuICAgIHVybDogXCIvZ2l0aHViXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gICAgc2l0ZUxpbms6IFwiaHR0cHM6Ly9naXRodWIuY29tL2V4YW1wbGUvcmVwb1wiLFxuICB9XG5cbiAgaXQoXCJzaG91bGQgZGVmYXVsdCB0byAnLycgd2hlbiBubyBzZWN0aW9uIG1hdGNoZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlTGluayhcIi9hbnl0aGluZy9cIiwgW2Jsb2ddKSkudG9CZShcIi9cIilcbiAgfSlcblxuICBpdChcInNob3VsZCBkZWZhdWx0IHRvICcvJyB3aGVuIG1hdGNoaW5nIHNlY3Rpb24gaGFzIG5vIHNpdGVMaW5rXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZUxpbmsoXCIvYWJvdXQvXCIsIFtkb2NzXSkpLnRvQmUoXCIvXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmV0dXJuIHRoZSBtYXRjaGluZyBzZWN0aW9uJ3Mgc2l0ZUxpbmtcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlTGluayhcIi9ibG9nL3Bvc3QvXCIsIFtibG9nXSkpLnRvQmUoXCIvYmxvZy9cIilcbiAgfSlcblxuICBpdChcInNob3VsZCBzdXBwb3J0IGFic29sdXRlIFVSTHMgYXMgdGhlIHNpdGVMaW5rXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZUxpbmsoXCIvZ2l0aHViL1wiLCBbZXh0ZXJuYWxDdXN0b21dKSkudG9CZShcbiAgICAgIFwiaHR0cHM6Ly9naXRodWIuY29tL2V4YW1wbGUvcmVwb1wiLFxuICAgIClcbiAgfSlcbn0pXG4iXX0=
|
package/build/models/config.d.ts
CHANGED
|
@@ -122,6 +122,7 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
122
122
|
}>>;
|
|
123
123
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
124
124
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
125
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
125
126
|
type: z.ZodLiteral<"article">;
|
|
126
127
|
prefix: z.ZodString;
|
|
127
128
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -133,6 +134,7 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
133
134
|
}>>;
|
|
134
135
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
135
136
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
137
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
136
138
|
type: z.ZodLiteral<"blog">;
|
|
137
139
|
prefix: z.ZodString;
|
|
138
140
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -144,6 +146,7 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
144
146
|
}>>;
|
|
145
147
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
146
148
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
149
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
147
150
|
type: z.ZodLiteral<"changelog">;
|
|
148
151
|
prefix: z.ZodString;
|
|
149
152
|
source: z.ZodString;
|
|
@@ -157,6 +160,7 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
157
160
|
}>>;
|
|
158
161
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
159
162
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
163
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
160
164
|
type: z.ZodLiteral<"custom">;
|
|
161
165
|
url: z.ZodString;
|
|
162
166
|
}, z.core.$strip>], "type">>>>;
|
|
@@ -213,6 +217,7 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
213
217
|
}>>;
|
|
214
218
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
215
219
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
220
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
216
221
|
type: z.ZodLiteral<"article">;
|
|
217
222
|
prefix: z.ZodString;
|
|
218
223
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -224,6 +229,7 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
224
229
|
}>>;
|
|
225
230
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
226
231
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
232
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
227
233
|
type: z.ZodLiteral<"blog">;
|
|
228
234
|
prefix: z.ZodString;
|
|
229
235
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -235,6 +241,7 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
235
241
|
}>>;
|
|
236
242
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
237
243
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
244
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
238
245
|
type: z.ZodLiteral<"changelog">;
|
|
239
246
|
prefix: z.ZodString;
|
|
240
247
|
source: z.ZodString;
|
|
@@ -248,6 +255,7 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
248
255
|
}>>;
|
|
249
256
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
250
257
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
258
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
251
259
|
type: z.ZodLiteral<"custom">;
|
|
252
260
|
url: z.ZodString;
|
|
253
261
|
}, z.core.$strip>], "type">>>>;
|
|
@@ -370,6 +378,7 @@ export declare const Config: z.ZodObject<{
|
|
|
370
378
|
}>>;
|
|
371
379
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
372
380
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
381
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
373
382
|
type: z.ZodLiteral<"article">;
|
|
374
383
|
prefix: z.ZodString;
|
|
375
384
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -381,6 +390,7 @@ export declare const Config: z.ZodObject<{
|
|
|
381
390
|
}>>;
|
|
382
391
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
383
392
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
393
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
384
394
|
type: z.ZodLiteral<"blog">;
|
|
385
395
|
prefix: z.ZodString;
|
|
386
396
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -392,6 +402,7 @@ export declare const Config: z.ZodObject<{
|
|
|
392
402
|
}>>;
|
|
393
403
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
394
404
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
405
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
395
406
|
type: z.ZodLiteral<"changelog">;
|
|
396
407
|
prefix: z.ZodString;
|
|
397
408
|
source: z.ZodString;
|
|
@@ -405,6 +416,7 @@ export declare const Config: z.ZodObject<{
|
|
|
405
416
|
}>>;
|
|
406
417
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
407
418
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
419
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
408
420
|
type: z.ZodLiteral<"custom">;
|
|
409
421
|
url: z.ZodString;
|
|
410
422
|
}, z.core.$strip>], "type">>>>;
|
|
@@ -10,6 +10,7 @@ export declare const ArticleSection: z.ZodObject<{
|
|
|
10
10
|
}>>;
|
|
11
11
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
12
12
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
13
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
13
14
|
type: z.ZodLiteral<"article">;
|
|
14
15
|
prefix: z.ZodString;
|
|
15
16
|
}, z.core.$strip>;
|
|
@@ -24,6 +25,7 @@ export declare const BlogSection: z.ZodObject<{
|
|
|
24
25
|
}>>;
|
|
25
26
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
26
27
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
28
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
27
29
|
type: z.ZodLiteral<"blog">;
|
|
28
30
|
prefix: z.ZodString;
|
|
29
31
|
}, z.core.$strip>;
|
|
@@ -38,6 +40,7 @@ export declare const ChangelogSection: z.ZodObject<{
|
|
|
38
40
|
}>>;
|
|
39
41
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
40
42
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
43
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
41
44
|
type: z.ZodLiteral<"changelog">;
|
|
42
45
|
prefix: z.ZodString;
|
|
43
46
|
source: z.ZodString;
|
|
@@ -56,6 +59,7 @@ export declare const CustomSection: z.ZodObject<{
|
|
|
56
59
|
}>>;
|
|
57
60
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
58
61
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
62
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
59
63
|
type: z.ZodLiteral<"custom">;
|
|
60
64
|
url: z.ZodString;
|
|
61
65
|
}, z.core.$strip>;
|
|
@@ -74,6 +78,7 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
74
78
|
}>>;
|
|
75
79
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
76
80
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
81
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
77
82
|
type: z.ZodLiteral<"article">;
|
|
78
83
|
prefix: z.ZodString;
|
|
79
84
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -85,6 +90,7 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
85
90
|
}>>;
|
|
86
91
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
87
92
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
93
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
88
94
|
type: z.ZodLiteral<"blog">;
|
|
89
95
|
prefix: z.ZodString;
|
|
90
96
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -96,6 +102,7 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
96
102
|
}>>;
|
|
97
103
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
98
104
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
105
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
99
106
|
type: z.ZodLiteral<"changelog">;
|
|
100
107
|
prefix: z.ZodString;
|
|
101
108
|
source: z.ZodString;
|
|
@@ -109,6 +116,7 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
109
116
|
}>>;
|
|
110
117
|
siteTitle: z.ZodOptional<z.ZodString>;
|
|
111
118
|
siteDescription: z.ZodOptional<z.ZodString>;
|
|
119
|
+
siteLink: z.ZodOptional<z.ZodString>;
|
|
112
120
|
type: z.ZodLiteral<"custom">;
|
|
113
121
|
url: z.ZodString;
|
|
114
122
|
}, z.core.$strip>], "type">>;
|
package/build/models/section.js
CHANGED
|
@@ -5,6 +5,7 @@ const BaseSection = z.object({
|
|
|
5
5
|
position: z.enum(["header", "sidebar"]).default("header"),
|
|
6
6
|
siteTitle: z.string().optional(),
|
|
7
7
|
siteDescription: z.string().optional(),
|
|
8
|
+
siteLink: z.string().optional(),
|
|
8
9
|
});
|
|
9
10
|
export const ArticleSection = BaseSection.extend({
|
|
10
11
|
type: z.literal("article"),
|
|
@@ -36,4 +37,4 @@ export const Section = z.preprocess(input => {
|
|
|
36
37
|
ChangelogSection,
|
|
37
38
|
CustomSection,
|
|
38
39
|
]));
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9tb2RlbHMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXZCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3pELFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3RDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2hDLENBQUMsQ0FBQTtBQUlGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQy9DLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUMxQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNuQixDQUFDLENBQUE7QUFJRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdkIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDbkIsQ0FBQyxDQUFBO0FBSUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDaEMsQ0FBQyxDQUFBO0FBTUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ2hCLENBQUMsQ0FBQTtBQVFGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsVUFBVSxDQUNqQyxLQUFLLENBQUMsRUFBRTtJQUNOLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUE7SUFDL0MsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQ25FLENBQUMsRUFDRCxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO0lBQzNCLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGFBQWE7Q0FDZCxDQUFDLENBQ0gsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgQmFzZVNlY3Rpb24gPSB6Lm9iamVjdCh7XG4gIGljb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCksXG4gIHBvc2l0aW9uOiB6LmVudW0oW1wiaGVhZGVyXCIsIFwic2lkZWJhclwiXSkuZGVmYXVsdChcImhlYWRlclwiKSxcbiAgc2l0ZVRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNpdGVEZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaXRlTGluazogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSlcblxuLyoqIERlZmF1bHQgc2VjdGlvbjogcmVuZGVycyBhcnRpY2xlcy4gKi9cbmV4cG9ydCB0eXBlIEFydGljbGVTZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgQXJ0aWNsZVNlY3Rpb24+XG5leHBvcnQgY29uc3QgQXJ0aWNsZVNlY3Rpb24gPSBCYXNlU2VjdGlvbi5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcnRpY2xlXCIpLFxuICBwcmVmaXg6IHouc3RyaW5nKCksXG59KVxuXG4vKiogQmxvZyBzZWN0aW9uOiBkYXRlLXNvcnRlZCBwb3N0cyB3aXRoIHRhZ3MgYW5kIGluZGV4LiAqL1xuZXhwb3J0IHR5cGUgQmxvZ1NlY3Rpb24gPSB6LmluZmVyPHR5cGVvZiBCbG9nU2VjdGlvbj5cbmV4cG9ydCBjb25zdCBCbG9nU2VjdGlvbiA9IEJhc2VTZWN0aW9uLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImJsb2dcIiksXG4gIHByZWZpeDogei5zdHJpbmcoKSxcbn0pXG5cbi8qKiBDaGFuZ2Vsb2cgc2VjdGlvbjogc2luZ2xlIGZpbGUgb3IgR2l0SHViIHJlbGVhc2VzLCBzcGxpdCBwZXIgdmVyc2lvbi4gKi9cbmV4cG9ydCB0eXBlIENoYW5nZWxvZ1NlY3Rpb24gPSB6LmluZmVyPHR5cGVvZiBDaGFuZ2Vsb2dTZWN0aW9uPlxuZXhwb3J0IGNvbnN0IENoYW5nZWxvZ1NlY3Rpb24gPSBCYXNlU2VjdGlvbi5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJjaGFuZ2Vsb2dcIiksXG4gIHByZWZpeDogei5zdHJpbmcoKSxcbiAgc291cmNlOiB6LnN0cmluZygpLFxuICB2ZXJzaW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcblxuLyoqIEN1c3RvbSBzZWN0aW9uOiByZW5kZXJzIGFzIGEgbGluayB0byBhbiBhcmJpdHJhcnkgVVJMIOKAlCBhYnNvbHV0ZVxuICogIChgaHR0cHM6Ly/igKZgKSBvciBpbnRlcm5hbCAoYC9jaGFuZ2Vsb2dgKS4gSW50ZXJuYWwgVVJMcyBwYXJ0aWNpcGF0ZVxuICogIGluIGFjdGl2ZS1zdGF0ZSBoaWdobGlnaHRpbmcgbGlrZSByb3V0ZWQgc2VjdGlvbnMuICovXG5leHBvcnQgdHlwZSBDdXN0b21TZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgQ3VzdG9tU2VjdGlvbj5cbmV4cG9ydCBjb25zdCBDdXN0b21TZWN0aW9uID0gQmFzZVNlY3Rpb24uZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiY3VzdG9tXCIpLFxuICB1cmw6IHouc3RyaW5nKCksXG59KVxuXG4vKipcbiAqIEEgc2l0ZSBzZWN0aW9uLiBEaXNjcmltaW5hdGVkIG9uIGB0eXBlYC5cbiAqIFdoZW4gYHR5cGVgIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIFwiYXJ0aWNsZVwiIHNvIHBsYWluXG4gKiBgeyB0aXRsZSwgcHJlZml4IH1gIGVudHJpZXMga2VlcCB3b3JraW5nLlxuICovXG5leHBvcnQgdHlwZSBTZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgU2VjdGlvbj5cbmV4cG9ydCBjb25zdCBTZWN0aW9uID0gei5wcmVwcm9jZXNzKFxuICBpbnB1dCA9PiB7XG4gICAgaWYgKGlucHV0ID09PSBudWxsIHx8IHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgcmV0dXJuIGlucHV0XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZCA9IGlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgcmV0dXJuIFwidHlwZVwiIGluIHJlY29yZCA/IHJlY29yZCA6IHsgLi4ucmVjb3JkLCB0eXBlOiBcImFydGljbGVcIiB9XG4gIH0sXG4gIHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gICAgQXJ0aWNsZVNlY3Rpb24sXG4gICAgQmxvZ1NlY3Rpb24sXG4gICAgQ2hhbmdlbG9nU2VjdGlvbixcbiAgICBDdXN0b21TZWN0aW9uLFxuICBdKSxcbilcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
import type { Config } from "../models/config.ts";
|
|
3
|
+
export interface RobotsOptions {
|
|
4
|
+
config: Config;
|
|
5
|
+
}
|
|
6
|
+
/** Emit a default `robots.txt` into the client build output, with a
|
|
7
|
+
* `Sitemap:` line pointing at the TanStack-Start-generated `sitemap.xml`
|
|
8
|
+
* when {@link Config.site} is set. Skipped when the consumer ships
|
|
9
|
+
* their own `.livemark/public/robots.txt` so the standard publicDir
|
|
10
|
+
* overlay wins — Vite copies the publicDir before writeBundle, so
|
|
11
|
+
* unconditional emitFile would silently overwrite the override. */
|
|
12
|
+
export declare function robots(opts: RobotsOptions): Plugin;
|
|
13
|
+
/** Render the body of a permissive default `robots.txt`. A `Sitemap:`
|
|
14
|
+
* line is appended only when `site` is set, because the directive
|
|
15
|
+
* requires a fully-qualified URL; `base` is included so the URL matches
|
|
16
|
+
* where the build (and the `sitemap.xml` inside it) is actually mounted. */
|
|
17
|
+
export declare function renderRobots(config: Pick<Config, "site" | "base">): string;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/** Emit a default `robots.txt` into the client build output, with a
|
|
4
|
+
* `Sitemap:` line pointing at the TanStack-Start-generated `sitemap.xml`
|
|
5
|
+
* when {@link Config.site} is set. Skipped when the consumer ships
|
|
6
|
+
* their own `.livemark/public/robots.txt` so the standard publicDir
|
|
7
|
+
* overlay wins — Vite copies the publicDir before writeBundle, so
|
|
8
|
+
* unconditional emitFile would silently overwrite the override. */
|
|
9
|
+
export function robots(opts) {
|
|
10
|
+
const overrideFile = join(opts.config.root, ".livemark", "public", "robots.txt");
|
|
11
|
+
return {
|
|
12
|
+
name: "livemark:robots",
|
|
13
|
+
applyToEnvironment(env) {
|
|
14
|
+
return env.name === "client";
|
|
15
|
+
},
|
|
16
|
+
generateBundle() {
|
|
17
|
+
if (existsSync(overrideFile))
|
|
18
|
+
return;
|
|
19
|
+
this.emitFile({
|
|
20
|
+
type: "asset",
|
|
21
|
+
fileName: "robots.txt",
|
|
22
|
+
source: renderRobots(opts.config),
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Render the body of a permissive default `robots.txt`. A `Sitemap:`
|
|
28
|
+
* line is appended only when `site` is set, because the directive
|
|
29
|
+
* requires a fully-qualified URL; `base` is included so the URL matches
|
|
30
|
+
* where the build (and the `sitemap.xml` inside it) is actually mounted. */
|
|
31
|
+
export function renderRobots(config) {
|
|
32
|
+
const lines = ["User-agent: *", "Allow: /"];
|
|
33
|
+
if (config.site) {
|
|
34
|
+
const host = config.site.replace(/\/+$/, "");
|
|
35
|
+
const base = config.base ?? "";
|
|
36
|
+
lines.push("", `Sitemap: ${host}${base}/sitemap.xml`);
|
|
37
|
+
}
|
|
38
|
+
return `${lines.join("\n")}\n`;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1yb2JvdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy92aXRlLXJvYm90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFRaEM7Ozs7O29FQUtvRTtBQUNwRSxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQW1CO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQ2hCLFdBQVcsRUFDWCxRQUFRLEVBQ1IsWUFBWSxDQUNiLENBQUE7SUFDRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixrQkFBa0IsQ0FBQyxHQUFHO1lBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUE7UUFDOUIsQ0FBQztRQUNELGNBQWM7WUFDWixJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQUUsT0FBTTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNaLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDbEMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs2RUFHNkU7QUFDN0UsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFxQztJQUNoRSxNQUFNLEtBQUssR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUMzQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7UUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsWUFBWSxJQUFJLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBQ0QsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInZpdGVcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUm9ib3RzT3B0aW9ucyB7XG4gIGNvbmZpZzogQ29uZmlnXG59XG5cbi8qKiBFbWl0IGEgZGVmYXVsdCBgcm9ib3RzLnR4dGAgaW50byB0aGUgY2xpZW50IGJ1aWxkIG91dHB1dCwgd2l0aCBhXG4gKiAgYFNpdGVtYXA6YCBsaW5lIHBvaW50aW5nIGF0IHRoZSBUYW5TdGFjay1TdGFydC1nZW5lcmF0ZWQgYHNpdGVtYXAueG1sYFxuICogIHdoZW4ge0BsaW5rIENvbmZpZy5zaXRlfSBpcyBzZXQuIFNraXBwZWQgd2hlbiB0aGUgY29uc3VtZXIgc2hpcHNcbiAqICB0aGVpciBvd24gYC5saXZlbWFyay9wdWJsaWMvcm9ib3RzLnR4dGAgc28gdGhlIHN0YW5kYXJkIHB1YmxpY0RpclxuICogIG92ZXJsYXkgd2lucyDigJQgVml0ZSBjb3BpZXMgdGhlIHB1YmxpY0RpciBiZWZvcmUgd3JpdGVCdW5kbGUsIHNvXG4gKiAgdW5jb25kaXRpb25hbCBlbWl0RmlsZSB3b3VsZCBzaWxlbnRseSBvdmVyd3JpdGUgdGhlIG92ZXJyaWRlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvYm90cyhvcHRzOiBSb2JvdHNPcHRpb25zKTogUGx1Z2luIHtcbiAgY29uc3Qgb3ZlcnJpZGVGaWxlID0gam9pbihcbiAgICBvcHRzLmNvbmZpZy5yb290LFxuICAgIFwiLmxpdmVtYXJrXCIsXG4gICAgXCJwdWJsaWNcIixcbiAgICBcInJvYm90cy50eHRcIixcbiAgKVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwibGl2ZW1hcms6cm9ib3RzXCIsXG4gICAgYXBwbHlUb0Vudmlyb25tZW50KGVudikge1xuICAgICAgcmV0dXJuIGVudi5uYW1lID09PSBcImNsaWVudFwiXG4gICAgfSxcbiAgICBnZW5lcmF0ZUJ1bmRsZSgpIHtcbiAgICAgIGlmIChleGlzdHNTeW5jKG92ZXJyaWRlRmlsZSkpIHJldHVyblxuICAgICAgdGhpcy5lbWl0RmlsZSh7XG4gICAgICAgIHR5cGU6IFwiYXNzZXRcIixcbiAgICAgICAgZmlsZU5hbWU6IFwicm9ib3RzLnR4dFwiLFxuICAgICAgICBzb3VyY2U6IHJlbmRlclJvYm90cyhvcHRzLmNvbmZpZyksXG4gICAgICB9KVxuICAgIH0sXG4gIH1cbn1cblxuLyoqIFJlbmRlciB0aGUgYm9keSBvZiBhIHBlcm1pc3NpdmUgZGVmYXVsdCBgcm9ib3RzLnR4dGAuIEEgYFNpdGVtYXA6YFxuICogIGxpbmUgaXMgYXBwZW5kZWQgb25seSB3aGVuIGBzaXRlYCBpcyBzZXQsIGJlY2F1c2UgdGhlIGRpcmVjdGl2ZVxuICogIHJlcXVpcmVzIGEgZnVsbHktcXVhbGlmaWVkIFVSTDsgYGJhc2VgIGlzIGluY2x1ZGVkIHNvIHRoZSBVUkwgbWF0Y2hlc1xuICogIHdoZXJlIHRoZSBidWlsZCAoYW5kIHRoZSBgc2l0ZW1hcC54bWxgIGluc2lkZSBpdCkgaXMgYWN0dWFsbHkgbW91bnRlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJSb2JvdHMoY29uZmlnOiBQaWNrPENvbmZpZywgXCJzaXRlXCIgfCBcImJhc2VcIj4pIHtcbiAgY29uc3QgbGluZXMgPSBbXCJVc2VyLWFnZW50OiAqXCIsIFwiQWxsb3c6IC9cIl1cbiAgaWYgKGNvbmZpZy5zaXRlKSB7XG4gICAgY29uc3QgaG9zdCA9IGNvbmZpZy5zaXRlLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICBjb25zdCBiYXNlID0gY29uZmlnLmJhc2UgPz8gXCJcIlxuICAgIGxpbmVzLnB1c2goXCJcIiwgYFNpdGVtYXA6ICR7aG9zdH0ke2Jhc2V9L3NpdGVtYXAueG1sYClcbiAgfVxuICByZXR1cm4gYCR7bGluZXMuam9pbihcIlxcblwiKX1cXG5gXG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
+
import { renderRobots } from "./vite-robots.js";
|
|
3
|
+
describe("renderRobots", () => {
|
|
4
|
+
it("emits an allow-all body when site is not set", () => {
|
|
5
|
+
expect(renderRobots({})).toBe("User-agent: *\nAllow: /\n");
|
|
6
|
+
});
|
|
7
|
+
it("appends a Sitemap line when site is set", () => {
|
|
8
|
+
expect(renderRobots({ site: "https://livemark.dev" })).toBe("User-agent: *\nAllow: /\n\nSitemap: https://livemark.dev/sitemap.xml\n");
|
|
9
|
+
});
|
|
10
|
+
it("strips a trailing slash from site before composing the URL", () => {
|
|
11
|
+
expect(renderRobots({ site: "https://livemark.dev/" })).toBe("User-agent: *\nAllow: /\n\nSitemap: https://livemark.dev/sitemap.xml\n");
|
|
12
|
+
});
|
|
13
|
+
it("includes the base path so the URL matches the build mount", () => {
|
|
14
|
+
expect(renderRobots({ site: "https://user.github.io", base: "/repo" })).toBe("User-agent: *\nAllow: /\n\nSitemap: https://user.github.io/repo/sitemap.xml\n");
|
|
15
|
+
});
|
|
16
|
+
it("ignores base when site is not set", () => {
|
|
17
|
+
expect(renderRobots({ base: "/repo" })).toBe("User-agent: *\nAllow: /\n");
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1yb2JvdHMudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3ZpdGUtcm9ib3RzLnVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRS9DLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQzVELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDekQsd0VBQXdFLENBQ3pFLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7UUFDcEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFELHdFQUF3RSxDQUN6RSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO1FBQ25FLE1BQU0sQ0FDSixZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQ2hFLENBQUMsSUFBSSxDQUNKLCtFQUErRSxDQUNoRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQzNFLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyByZW5kZXJSb2JvdHMgfSBmcm9tIFwiLi92aXRlLXJvYm90cy50c1wiXG5cbmRlc2NyaWJlKFwicmVuZGVyUm9ib3RzXCIsICgpID0+IHtcbiAgaXQoXCJlbWl0cyBhbiBhbGxvdy1hbGwgYm9keSB3aGVuIHNpdGUgaXMgbm90IHNldFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlbmRlclJvYm90cyh7fSkpLnRvQmUoXCJVc2VyLWFnZW50OiAqXFxuQWxsb3c6IC9cXG5cIilcbiAgfSlcblxuICBpdChcImFwcGVuZHMgYSBTaXRlbWFwIGxpbmUgd2hlbiBzaXRlIGlzIHNldFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlbmRlclJvYm90cyh7IHNpdGU6IFwiaHR0cHM6Ly9saXZlbWFyay5kZXZcIiB9KSkudG9CZShcbiAgICAgIFwiVXNlci1hZ2VudDogKlxcbkFsbG93OiAvXFxuXFxuU2l0ZW1hcDogaHR0cHM6Ly9saXZlbWFyay5kZXYvc2l0ZW1hcC54bWxcXG5cIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzdHJpcHMgYSB0cmFpbGluZyBzbGFzaCBmcm9tIHNpdGUgYmVmb3JlIGNvbXBvc2luZyB0aGUgVVJMXCIsICgpID0+IHtcbiAgICBleHBlY3QocmVuZGVyUm9ib3RzKHsgc2l0ZTogXCJodHRwczovL2xpdmVtYXJrLmRldi9cIiB9KSkudG9CZShcbiAgICAgIFwiVXNlci1hZ2VudDogKlxcbkFsbG93OiAvXFxuXFxuU2l0ZW1hcDogaHR0cHM6Ly9saXZlbWFyay5kZXYvc2l0ZW1hcC54bWxcXG5cIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJpbmNsdWRlcyB0aGUgYmFzZSBwYXRoIHNvIHRoZSBVUkwgbWF0Y2hlcyB0aGUgYnVpbGQgbW91bnRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIHJlbmRlclJvYm90cyh7IHNpdGU6IFwiaHR0cHM6Ly91c2VyLmdpdGh1Yi5pb1wiLCBiYXNlOiBcIi9yZXBvXCIgfSksXG4gICAgKS50b0JlKFxuICAgICAgXCJVc2VyLWFnZW50OiAqXFxuQWxsb3c6IC9cXG5cXG5TaXRlbWFwOiBodHRwczovL3VzZXIuZ2l0aHViLmlvL3JlcG8vc2l0ZW1hcC54bWxcXG5cIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJpZ25vcmVzIGJhc2Ugd2hlbiBzaXRlIGlzIG5vdCBzZXRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChyZW5kZXJSb2JvdHMoeyBiYXNlOiBcIi9yZXBvXCIgfSkpLnRvQmUoXCJVc2VyLWFnZW50OiAqXFxuQWxsb3c6IC9cXG5cIilcbiAgfSlcbn0pXG4iXX0=
|
package/build/vite.config.js
CHANGED
|
@@ -7,10 +7,12 @@ import { defineConfig } from "vite";
|
|
|
7
7
|
import svgr from "vite-plugin-svgr";
|
|
8
8
|
import { loadConfig } from "./actions/config/load.js";
|
|
9
9
|
import { livemark } from "./plugins/vite-livemark.js";
|
|
10
|
+
import { robots } from "./plugins/vite-robots.js";
|
|
10
11
|
const config = await loadConfig();
|
|
11
12
|
export default defineConfig({
|
|
12
13
|
plugins: [
|
|
13
14
|
livemark({ config }),
|
|
15
|
+
robots({ config }),
|
|
14
16
|
devtools(),
|
|
15
17
|
tailwind(),
|
|
16
18
|
contentCollections({ configPath: "content-collections.ts" }),
|
|
@@ -41,4 +43,4 @@ export default defineConfig({
|
|
|
41
43
|
svgr(),
|
|
42
44
|
],
|
|
43
45
|
});
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2Uvdml0ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRCxPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ2pFLE9BQU8sS0FBSyxNQUFNLHNCQUFzQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDbkMsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQTtBQUVqQyxlQUFlLFlBQVksQ0FBQztJQUMxQixPQUFPLEVBQUU7UUFDUCxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQixRQUFRLEVBQUU7UUFDVixRQUFRLEVBQUU7UUFDVixrQkFBa0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO1FBQzVELGFBQWEsQ0FBQztZQUNaLFlBQVksRUFBRSxHQUFHO1lBQ2pCLGlFQUFpRTtZQUNqRSxnRUFBZ0U7WUFDaEUseURBQXlEO1lBQ3pELEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4RCxnRUFBZ0U7WUFDaEUsb0VBQW9FO1lBQ3BFLGtFQUFrRTtZQUNsRSw2QkFBNkI7WUFDN0IsU0FBUyxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJO2dCQUNiLFVBQVUsRUFBRSxJQUFJO2dCQUNoQix3QkFBd0IsRUFBRSxLQUFLO2FBQ2hDO1lBQ0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNsQixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUN0QyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQ3RCLE1BQU0sRUFBRTtnQkFDTixrQkFBa0IsRUFBRSxrQkFBa0I7Z0JBQ3RDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSTthQUN0QjtTQUNGLENBQUM7UUFDRixLQUFLLEVBQUU7UUFDUCxJQUFJLEVBQUU7S0FDUDtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb250ZW50Q29sbGVjdGlvbnMgZnJvbSBcIkBjb250ZW50LWNvbGxlY3Rpb25zL3ZpdGVcIlxuaW1wb3J0IHRhaWx3aW5kIGZyb20gXCJAdGFpbHdpbmRjc3Mvdml0ZVwiXG5pbXBvcnQgeyBkZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svZGV2dG9vbHMtdml0ZVwiXG5pbXBvcnQgeyB0YW5zdGFja1N0YXJ0IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1zdGFydC9wbHVnaW4vdml0ZVwiXG5pbXBvcnQgcmVhY3QgZnJvbSBcIkB2aXRlanMvcGx1Z2luLXJlYWN0XCJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBzdmdyIGZyb20gXCJ2aXRlLXBsdWdpbi1zdmdyXCJcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzXCJcbmltcG9ydCB7IGxpdmVtYXJrIH0gZnJvbSBcIi4vcGx1Z2lucy92aXRlLWxpdmVtYXJrLnRzXCJcbmltcG9ydCB7IHJvYm90cyB9IGZyb20gXCIuL3BsdWdpbnMvdml0ZS1yb2JvdHMudHNcIlxuXG5jb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKClcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW1xuICAgIGxpdmVtYXJrKHsgY29uZmlnIH0pLFxuICAgIHJvYm90cyh7IGNvbmZpZyB9KSxcbiAgICBkZXZ0b29scygpLFxuICAgIHRhaWx3aW5kKCksXG4gICAgY29udGVudENvbGxlY3Rpb25zKHsgY29uZmlnUGF0aDogXCJjb250ZW50LWNvbGxlY3Rpb25zLnRzXCIgfSksXG4gICAgdGFuc3RhY2tTdGFydCh7XG4gICAgICBzcmNEaXJlY3Rvcnk6IFwiLlwiLFxuICAgICAgLy8gU2VlZCBwYXRoIG11c3QgbWF0Y2ggd2hhdCB0aGUgY3Jhd2xlciBwcm9kdWNlcyAocm91dGVyLWVtaXR0ZWRcbiAgICAgIC8vIGhyZWZzIGluY2x1ZGUgdGhlIGJhc2VwYXRoKSwgb3RoZXJ3aXNlIHByZXJlbmRlciByZWNvcmRzIGJvdGhcbiAgICAgIC8vIHNoYXBlcyBhbmQgdGhlIHNpdGVtYXAgZW5kcyB1cCB3aXRoIGR1cGxpY2F0ZSBlbnRyaWVzLlxuICAgICAgcGFnZXM6IFt7IHBhdGg6IGNvbmZpZy5iYXNlID8gYCR7Y29uZmlnLmJhc2V9L2AgOiBcIi9cIiB9XSxcbiAgICAgIC8vIERpc2FibGUgcm91dGUtdHJlZSBhdXRvLWRpc2NvdmVyeTogaXQgcHJvZHVjZXMgYmFzZXBhdGgtbmFpdmVcbiAgICAgIC8vIHBhdGhzIChlLmcuIGAvYCkgdGhhdCBkdXBsaWNhdGUgdGhlIGNyYXdsLWRlcml2ZWQgcHJlZml4ZWQgcGF0aHMsXG4gICAgICAvLyBibG9hdGluZyBwYWdlcy5qc29uIGFuZCBzaXRlbWFwLiBDcmF3bGluZyBmcm9tIHRoZSBzZWVkIGFscmVhZHlcbiAgICAgIC8vIHJlYWNoZXMgZXZlcnkgbGlua2VkIHBhZ2UuXG4gICAgICBwcmVyZW5kZXI6IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgY3Jhd2xMaW5rczogdHJ1ZSxcbiAgICAgICAgYXV0b1N0YXRpY1BhdGhzRGlzY292ZXJ5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzaXRlbWFwOiBjb25maWcuc2l0ZVxuICAgICAgICA/IHsgZW5hYmxlZDogdHJ1ZSwgaG9zdDogY29uZmlnLnNpdGUgfVxuICAgICAgICA6IHsgZW5hYmxlZDogZmFsc2UgfSxcbiAgICAgIHJvdXRlcjoge1xuICAgICAgICBnZW5lcmF0ZWRSb3V0ZVRyZWU6IFwicm91dGVUcmVlLmdlbi50c1wiLFxuICAgICAgICBiYXNlcGF0aDogY29uZmlnLmJhc2UsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJlYWN0KCksXG4gICAgc3ZncigpLFxuICBdLFxufSlcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livemark",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "Livemark description",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Evgeny Karev",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@shikijs/twoslash": "^4.0.2",
|
|
34
34
|
"@sindresorhus/slugify": "^3.0.0",
|
|
35
35
|
"@tailwindcss/typography": "^0.5.19",
|
|
36
|
-
"@tailwindcss/vite": "4.
|
|
37
|
-
"@tanstack/devtools-vite": "0.
|
|
36
|
+
"@tailwindcss/vite": "4.3.0",
|
|
37
|
+
"@tanstack/devtools-vite": "0.7.0",
|
|
38
38
|
"@tanstack/react-devtools": "0.10.0",
|
|
39
39
|
"@tanstack/react-hotkeys": "^0.9.1",
|
|
40
40
|
"@tanstack/react-query": "5.91.3",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"unified": "^11.0.5",
|
|
88
88
|
"unist-util-visit": "^5.1.0",
|
|
89
89
|
"vaul": "1.1.2",
|
|
90
|
-
"vite": "8.0.
|
|
90
|
+
"vite": "8.0.13",
|
|
91
91
|
"vite-plugin-svgr": "5.2.0",
|
|
92
92
|
"zod": "4.3.6"
|
|
93
93
|
},
|
|
@@ -96,10 +96,8 @@
|
|
|
96
96
|
"@semantic-release/exec": "7.1.0",
|
|
97
97
|
"@types/node": "24.2.0",
|
|
98
98
|
"@typescript/native-preview": "7.0.0-dev.20260316.1",
|
|
99
|
-
"@vitest/coverage-v8": "4.1.
|
|
99
|
+
"@vitest/coverage-v8": "4.1.6",
|
|
100
100
|
"conventional-changelog-conventionalcommits": "9.1.0",
|
|
101
|
-
"husky": "9.1.7",
|
|
102
|
-
"is-ci": "4.1.0",
|
|
103
101
|
"lefthook": "2.1.1",
|
|
104
102
|
"livemark": "link:.",
|
|
105
103
|
"npm-check-updates": "18.0.1",
|
|
@@ -107,8 +105,7 @@
|
|
|
107
105
|
"react-dom": "19.2.4",
|
|
108
106
|
"semantic-release": "24.2.9",
|
|
109
107
|
"tempy": "3.2.0",
|
|
110
|
-
"vite-plus": "0.1.
|
|
111
|
-
"vitest-polly": "2.1.0",
|
|
108
|
+
"vite-plus": "0.1.21",
|
|
112
109
|
"wrangler": "4.85.0"
|
|
113
110
|
},
|
|
114
111
|
"peerDependencies": {
|
|
@@ -117,21 +114,23 @@
|
|
|
117
114
|
},
|
|
118
115
|
"engines": {
|
|
119
116
|
"node": "^24.0.0",
|
|
120
|
-
"pnpm": "^
|
|
117
|
+
"pnpm": "^11.0.0"
|
|
121
118
|
},
|
|
122
119
|
"scripts": {
|
|
123
120
|
"build": "tsgo --project tsconfig.build.json",
|
|
124
|
-
"
|
|
125
|
-
"clean": "rm -rf pnpm-lock.yaml node_modules build",
|
|
121
|
+
"deps": "ncu -u",
|
|
126
122
|
"docs:build": "node source/entrypoints/main.ts build",
|
|
127
123
|
"docs:start": "node source/entrypoints/main.ts start",
|
|
128
124
|
"format": "vp fmt",
|
|
125
|
+
"leaks": "gitleaks git --config=.gitleaks.toml --verbose --redact",
|
|
129
126
|
"lint": "vp fmt --check && vp lint",
|
|
130
127
|
"release": "pnpm publish --access public --ignore-scripts --no-git-checks",
|
|
131
|
-
"
|
|
128
|
+
"scan": "pnpm leaks && pnpm vulns",
|
|
132
129
|
"start": "node source/entrypoints/main.ts",
|
|
133
|
-
"unit": "vp test",
|
|
134
130
|
"test": "pnpm lint && pnpm type && pnpm unit",
|
|
135
|
-
"type": "tsgo --noEmit"
|
|
131
|
+
"type": "tsgo --noEmit",
|
|
132
|
+
"unit": "vp test",
|
|
133
|
+
"vers": "pnpm version --no-git-tag-version",
|
|
134
|
+
"vulns": "semgrep --config=p/typescript --config=p/nodejs --config=p/owasp-top-ten --config=p/secrets --exclude=\"**/fixtures/**\" --metrics=off"
|
|
136
135
|
}
|
|
137
136
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "../content/article.ts"
|
|
10
10
|
import { DynamicIcon } from "../helpers/dynamic-icon.tsx"
|
|
11
11
|
import { prefixUrl } from "../helpers/prefix-url.ts"
|
|
12
|
-
import { customSectionActive } from "../helpers/section.ts"
|
|
12
|
+
import { activeSiteLink, customSectionActive } from "../helpers/section.ts"
|
|
13
13
|
import {
|
|
14
14
|
SidebarInset,
|
|
15
15
|
SidebarProvider,
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
import { BackToTop } from "./BackToTop.tsx"
|
|
20
20
|
import { Banner } from "./Banner.tsx"
|
|
21
21
|
import { Sidebar } from "./Sidebar.tsx"
|
|
22
|
+
import { SiteLink } from "./SiteLink.tsx"
|
|
22
23
|
import { SiteTitle } from "./SiteTitle.tsx"
|
|
23
24
|
|
|
24
25
|
function splatFor(pathname: string) {
|
|
@@ -34,6 +35,7 @@ export function Layout(props: {
|
|
|
34
35
|
const activeSection = articleRoute
|
|
35
36
|
? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
|
|
36
37
|
: undefined
|
|
38
|
+
const siteLinkTarget = activeSiteLink(pathname, config.sections ?? [])
|
|
37
39
|
|
|
38
40
|
useHotkey("J", () =>
|
|
39
41
|
window.scrollBy({ top: window.innerHeight * 0.8, behavior: "smooth" }),
|
|
@@ -54,14 +56,17 @@ export function Layout(props: {
|
|
|
54
56
|
<div className="hidden lg:flex">
|
|
55
57
|
<SidebarTrigger />
|
|
56
58
|
</div>
|
|
57
|
-
<
|
|
59
|
+
<SiteLink
|
|
60
|
+
to={siteLinkTarget}
|
|
61
|
+
className="lg:hidden flex items-center gap-2"
|
|
62
|
+
>
|
|
58
63
|
<SiteTitle />
|
|
59
|
-
</
|
|
64
|
+
</SiteLink>
|
|
60
65
|
</>
|
|
61
66
|
) : (
|
|
62
|
-
<
|
|
67
|
+
<SiteLink to={siteLinkTarget} className="flex items-center gap-2">
|
|
63
68
|
<SiteTitle />
|
|
64
|
-
</
|
|
69
|
+
</SiteLink>
|
|
65
70
|
)}
|
|
66
71
|
</div>
|
|
67
72
|
<div className="hidden lg:flex flex-1 items-center gap-8 self-stretch px-6 text-sm">
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { config } from "livemark:virtual"
|
|
2
|
+
import { useLocation, useMatch } from "@tanstack/react-router"
|
|
2
3
|
import { useHotkey } from "@tanstack/react-hotkeys"
|
|
3
4
|
import { currentSection } from "../content/article.ts"
|
|
5
|
+
import { activeSiteLink } from "../helpers/section.ts"
|
|
4
6
|
import {
|
|
5
7
|
Sidebar as SidebarRoot,
|
|
6
8
|
SidebarContent,
|
|
@@ -18,6 +20,7 @@ import { SidebarLinks } from "./SidebarLinks.tsx"
|
|
|
18
20
|
import { SidebarPosts } from "./SidebarPosts.tsx"
|
|
19
21
|
import { SidebarReleases } from "./SidebarReleases.tsx"
|
|
20
22
|
import { SidebarSections } from "./SidebarSections.tsx"
|
|
23
|
+
import { SiteLink } from "./SiteLink.tsx"
|
|
21
24
|
import { SiteTitle } from "./SiteTitle.tsx"
|
|
22
25
|
import { Theme } from "./Theme.tsx"
|
|
23
26
|
|
|
@@ -34,13 +37,17 @@ export function Sidebar(props: { withSidebar?: boolean }) {
|
|
|
34
37
|
const section = articleRoute
|
|
35
38
|
? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
|
|
36
39
|
: undefined
|
|
40
|
+
const siteLinkTarget = activeSiteLink(pathname, config.sections ?? [])
|
|
37
41
|
|
|
38
42
|
return (
|
|
39
43
|
<SidebarRoot>
|
|
40
44
|
<SidebarHeader>
|
|
41
45
|
<SidebarMenu>
|
|
42
46
|
<SidebarMenuItem>
|
|
43
|
-
<SidebarMenuButton
|
|
47
|
+
<SidebarMenuButton
|
|
48
|
+
size="lg"
|
|
49
|
+
render={<SiteLink to={siteLinkTarget} />}
|
|
50
|
+
>
|
|
44
51
|
<SiteTitle />
|
|
45
52
|
</SidebarMenuButton>
|
|
46
53
|
</SidebarMenuItem>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { config } from "livemark:virtual"
|
|
2
|
+
import { Link } from "@tanstack/react-router"
|
|
3
|
+
import type { ReactNode } from "react"
|
|
4
|
+
import { prefixUrl } from "../helpers/prefix-url.ts"
|
|
5
|
+
|
|
6
|
+
/** Wrapper for the SiteTitle's link target. Picks `<Link>` for internal
|
|
7
|
+
* paths (rooted at `/`) and a plain `<a>` for absolute URLs (`http(s)`,
|
|
8
|
+
* protocol-relative, `mailto:`). Designed to be used both directly
|
|
9
|
+
* (`<SiteLink to={...}>...</SiteLink>`) and as the `render` element of
|
|
10
|
+
* a `SidebarMenuButton`, which means props (`className`, children) are
|
|
11
|
+
* forwarded onto the underlying anchor or Link. */
|
|
12
|
+
export function SiteLink(props: {
|
|
13
|
+
to: string
|
|
14
|
+
className?: string
|
|
15
|
+
children?: ReactNode
|
|
16
|
+
}) {
|
|
17
|
+
if (isAbsolute(props.to)) {
|
|
18
|
+
return (
|
|
19
|
+
<a href={prefixUrl(props.to, config.base)} className={props.className}>
|
|
20
|
+
{props.children}
|
|
21
|
+
</a>
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
if (props.to === "/") {
|
|
25
|
+
return (
|
|
26
|
+
<Link to="/" className={props.className}>
|
|
27
|
+
{props.children}
|
|
28
|
+
</Link>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
const splat = props.to.replace(/^\/|\/$/g, "")
|
|
32
|
+
return (
|
|
33
|
+
<Link to="/$" params={{ _splat: splat }} className={props.className}>
|
|
34
|
+
{props.children}
|
|
35
|
+
</Link>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function isAbsolute(url: string) {
|
|
40
|
+
return (
|
|
41
|
+
url.startsWith("http://") ||
|
|
42
|
+
url.startsWith("https://") ||
|
|
43
|
+
url.startsWith("//") ||
|
|
44
|
+
url.startsWith("mailto:")
|
|
45
|
+
)
|
|
46
|
+
}
|
|
@@ -7,6 +7,15 @@ import type { Section } from "../models/section.ts"
|
|
|
7
7
|
* `customSectionActive` so a custom URL of `/` only activates on
|
|
8
8
|
* the home page itself. Custom sections with absolute URLs never
|
|
9
9
|
* match. Longest match wins. */
|
|
10
|
+
/** Resolve where the SiteTitle should link to for the current pathname.
|
|
11
|
+
* If the active section sets `siteLink`, returns that — otherwise falls
|
|
12
|
+
* back to `/` (the home page). The returned value may be an internal
|
|
13
|
+
* path (`/foo/`) or an absolute URL (`https://…`); rendering decides
|
|
14
|
+
* which element to use. */
|
|
15
|
+
export function activeSiteLink(pathname: string, sections: Section[]) {
|
|
16
|
+
return activeSiteSection(pathname, sections)?.siteLink ?? "/"
|
|
17
|
+
}
|
|
18
|
+
|
|
10
19
|
export function activeSiteSection(pathname: string, sections: Section[]) {
|
|
11
20
|
const current = `/${pathname.replace(/^\/|\/$/g, "")}/`
|
|
12
21
|
let best: Section | undefined
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from "vite-plus/test"
|
|
2
2
|
import type { Section } from "../models/section.ts"
|
|
3
3
|
import {
|
|
4
|
+
activeSiteLink,
|
|
4
5
|
activeSiteSection,
|
|
5
6
|
customSectionActive,
|
|
6
7
|
matchSection,
|
|
@@ -180,3 +181,44 @@ describe("activeSiteSection", () => {
|
|
|
180
181
|
expect(activeSiteSection("/anything/", [blog, apiCustom])).toBeUndefined()
|
|
181
182
|
})
|
|
182
183
|
})
|
|
184
|
+
|
|
185
|
+
describe("activeSiteLink", () => {
|
|
186
|
+
const docs: Section = {
|
|
187
|
+
type: "article",
|
|
188
|
+
title: "Docs",
|
|
189
|
+
prefix: "/",
|
|
190
|
+
position: "header",
|
|
191
|
+
}
|
|
192
|
+
const blog: Section = {
|
|
193
|
+
type: "blog",
|
|
194
|
+
title: "Blog",
|
|
195
|
+
prefix: "/blog/",
|
|
196
|
+
position: "header",
|
|
197
|
+
siteLink: "/blog/",
|
|
198
|
+
}
|
|
199
|
+
const externalCustom: Section = {
|
|
200
|
+
type: "custom",
|
|
201
|
+
title: "GitHub",
|
|
202
|
+
url: "/github",
|
|
203
|
+
position: "header",
|
|
204
|
+
siteLink: "https://github.com/example/repo",
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
it("should default to '/' when no section matches", () => {
|
|
208
|
+
expect(activeSiteLink("/anything/", [blog])).toBe("/")
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
it("should default to '/' when matching section has no siteLink", () => {
|
|
212
|
+
expect(activeSiteLink("/about/", [docs])).toBe("/")
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
it("should return the matching section's siteLink", () => {
|
|
216
|
+
expect(activeSiteLink("/blog/post/", [blog])).toBe("/blog/")
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
it("should support absolute URLs as the siteLink", () => {
|
|
220
|
+
expect(activeSiteLink("/github/", [externalCustom])).toBe(
|
|
221
|
+
"https://github.com/example/repo",
|
|
222
|
+
)
|
|
223
|
+
})
|
|
224
|
+
})
|
package/source/models/section.ts
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { existsSync } from "node:fs"
|
|
2
|
+
import { join } from "node:path"
|
|
3
|
+
import type { Plugin } from "vite"
|
|
4
|
+
import type { Config } from "../models/config.ts"
|
|
5
|
+
|
|
6
|
+
export interface RobotsOptions {
|
|
7
|
+
config: Config
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Emit a default `robots.txt` into the client build output, with a
|
|
11
|
+
* `Sitemap:` line pointing at the TanStack-Start-generated `sitemap.xml`
|
|
12
|
+
* when {@link Config.site} is set. Skipped when the consumer ships
|
|
13
|
+
* their own `.livemark/public/robots.txt` so the standard publicDir
|
|
14
|
+
* overlay wins — Vite copies the publicDir before writeBundle, so
|
|
15
|
+
* unconditional emitFile would silently overwrite the override. */
|
|
16
|
+
export function robots(opts: RobotsOptions): Plugin {
|
|
17
|
+
const overrideFile = join(
|
|
18
|
+
opts.config.root,
|
|
19
|
+
".livemark",
|
|
20
|
+
"public",
|
|
21
|
+
"robots.txt",
|
|
22
|
+
)
|
|
23
|
+
return {
|
|
24
|
+
name: "livemark:robots",
|
|
25
|
+
applyToEnvironment(env) {
|
|
26
|
+
return env.name === "client"
|
|
27
|
+
},
|
|
28
|
+
generateBundle() {
|
|
29
|
+
if (existsSync(overrideFile)) return
|
|
30
|
+
this.emitFile({
|
|
31
|
+
type: "asset",
|
|
32
|
+
fileName: "robots.txt",
|
|
33
|
+
source: renderRobots(opts.config),
|
|
34
|
+
})
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Render the body of a permissive default `robots.txt`. A `Sitemap:`
|
|
40
|
+
* line is appended only when `site` is set, because the directive
|
|
41
|
+
* requires a fully-qualified URL; `base` is included so the URL matches
|
|
42
|
+
* where the build (and the `sitemap.xml` inside it) is actually mounted. */
|
|
43
|
+
export function renderRobots(config: Pick<Config, "site" | "base">) {
|
|
44
|
+
const lines = ["User-agent: *", "Allow: /"]
|
|
45
|
+
if (config.site) {
|
|
46
|
+
const host = config.site.replace(/\/+$/, "")
|
|
47
|
+
const base = config.base ?? ""
|
|
48
|
+
lines.push("", `Sitemap: ${host}${base}/sitemap.xml`)
|
|
49
|
+
}
|
|
50
|
+
return `${lines.join("\n")}\n`
|
|
51
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test"
|
|
2
|
+
import { renderRobots } from "./vite-robots.ts"
|
|
3
|
+
|
|
4
|
+
describe("renderRobots", () => {
|
|
5
|
+
it("emits an allow-all body when site is not set", () => {
|
|
6
|
+
expect(renderRobots({})).toBe("User-agent: *\nAllow: /\n")
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
it("appends a Sitemap line when site is set", () => {
|
|
10
|
+
expect(renderRobots({ site: "https://livemark.dev" })).toBe(
|
|
11
|
+
"User-agent: *\nAllow: /\n\nSitemap: https://livemark.dev/sitemap.xml\n",
|
|
12
|
+
)
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it("strips a trailing slash from site before composing the URL", () => {
|
|
16
|
+
expect(renderRobots({ site: "https://livemark.dev/" })).toBe(
|
|
17
|
+
"User-agent: *\nAllow: /\n\nSitemap: https://livemark.dev/sitemap.xml\n",
|
|
18
|
+
)
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it("includes the base path so the URL matches the build mount", () => {
|
|
22
|
+
expect(
|
|
23
|
+
renderRobots({ site: "https://user.github.io", base: "/repo" }),
|
|
24
|
+
).toBe(
|
|
25
|
+
"User-agent: *\nAllow: /\n\nSitemap: https://user.github.io/repo/sitemap.xml\n",
|
|
26
|
+
)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it("ignores base when site is not set", () => {
|
|
30
|
+
expect(renderRobots({ base: "/repo" })).toBe("User-agent: *\nAllow: /\n")
|
|
31
|
+
})
|
|
32
|
+
})
|
package/source/vite.config.ts
CHANGED
|
@@ -7,12 +7,14 @@ import { defineConfig } from "vite"
|
|
|
7
7
|
import svgr from "vite-plugin-svgr"
|
|
8
8
|
import { loadConfig } from "./actions/config/load.ts"
|
|
9
9
|
import { livemark } from "./plugins/vite-livemark.ts"
|
|
10
|
+
import { robots } from "./plugins/vite-robots.ts"
|
|
10
11
|
|
|
11
12
|
const config = await loadConfig()
|
|
12
13
|
|
|
13
14
|
export default defineConfig({
|
|
14
15
|
plugins: [
|
|
15
16
|
livemark({ config }),
|
|
17
|
+
robots({ config }),
|
|
16
18
|
devtools(),
|
|
17
19
|
tailwind(),
|
|
18
20
|
contentCollections({ configPath: "content-collections.ts" }),
|