livemark 0.10.4 → 0.11.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/{target → build}/actions/changelog/build.d.ts +4 -1
- package/build/actions/changelog/build.js +192 -0
- package/build/actions/config/load.d.ts +12 -0
- package/build/actions/config/load.js +41 -0
- package/build/actions/config/load.unit.js +39 -0
- package/build/actions/target/build.d.ts +29 -0
- package/build/actions/target/build.js +87 -0
- package/build/commands/build.js +15 -0
- package/{target → build}/commands/escape.d.ts +1 -1
- package/build/commands/escape.js +62 -0
- package/build/commands/preview.js +19 -0
- package/build/commands/start.js +20 -0
- package/build/components/Breadcrumbs.js +14 -0
- package/build/components/Layout.js +66 -0
- package/build/components/SidebarArticles.js +46 -0
- package/build/components/SidebarLinks.js +27 -0
- package/build/components/SidebarSections.js +37 -0
- package/build/components/SiteTitle.js +13 -0
- package/build/content/article.js +55 -0
- package/build/content/tag.js +31 -0
- package/build/content-collections.js +218 -0
- package/{target → build}/models/config.d.ts +17 -1
- package/build/models/config.js +38 -0
- package/build/plugins/vite-livemark.d.ts +12 -0
- package/build/plugins/vite-livemark.js +165 -0
- package/build/routes/__root.js +68 -0
- package/build/settings.d.ts +9 -0
- package/build/settings.js +25 -0
- package/build/vite.config.js +30 -0
- package/package.json +15 -9
- package/source/actions/changelog/build.ts +11 -6
- package/source/actions/config/load.ts +21 -6
- package/source/actions/config/load.unit.ts +19 -2
- package/source/actions/target/build.ts +89 -0
- package/source/commands/build.ts +1 -0
- package/source/commands/escape.ts +18 -11
- package/source/commands/preview.ts +1 -0
- package/source/commands/start.ts +1 -0
- package/source/components/Breadcrumbs.tsx +2 -1
- package/source/components/Layout.tsx +3 -2
- package/source/components/SidebarArticles.tsx +2 -1
- package/source/components/SidebarLinks.tsx +2 -1
- package/source/components/SidebarSections.tsx +2 -1
- package/source/components/SiteTitle.tsx +5 -10
- package/source/content/article.ts +2 -1
- package/source/content/tag.ts +2 -1
- package/source/content-collections.ts +1 -1
- package/source/env.d.ts +2 -2
- package/source/models/config.ts +22 -1
- package/source/plugins/vite-livemark.ts +168 -94
- package/source/routeTree.gen.ts +86 -0
- package/source/routes/__root.tsx +7 -9
- package/source/settings.ts +13 -2
- package/source/vite.config.ts +4 -73
- package/target/actions/changelog/build.js +0 -187
- package/target/actions/config/load.d.ts +0 -5
- package/target/actions/config/load.js +0 -25
- package/target/actions/config/load.unit.js +0 -25
- package/target/commands/build.js +0 -14
- package/target/commands/escape.js +0 -56
- package/target/commands/preview.js +0 -18
- package/target/commands/start.js +0 -19
- package/target/components/Breadcrumbs.js +0 -13
- package/target/components/Layout.js +0 -65
- package/target/components/SidebarArticles.js +0 -45
- package/target/components/SidebarLinks.js +0 -26
- package/target/components/SidebarSections.js +0 -36
- package/target/components/SiteTitle.js +0 -12
- package/target/content/article.js +0 -54
- package/target/content/tag.js +0 -30
- package/target/content-collections.js +0 -218
- package/target/models/config.js +0 -34
- package/target/plugins/vite-livemark.d.ts +0 -18
- package/target/plugins/vite-livemark.js +0 -111
- package/target/routes/__root.js +0 -69
- package/target/settings.d.ts +0 -5
- package/target/settings.js +0 -15
- package/target/vite.config.js +0 -90
- /package/{target → build}/actions/changelog/build.unit.d.ts +0 -0
- /package/{target → build}/actions/changelog/build.unit.js +0 -0
- /package/{target → build}/actions/config/define.d.ts +0 -0
- /package/{target → build}/actions/config/define.js +0 -0
- /package/{target → build}/actions/config/define.unit.d.ts +0 -0
- /package/{target → build}/actions/config/define.unit.js +0 -0
- /package/{target → build}/actions/config/load.unit.d.ts +0 -0
- /package/{target → build}/client.d.ts +0 -0
- /package/{target → build}/client.js +0 -0
- /package/{target → build}/commands/build.d.ts +0 -0
- /package/{target → build}/commands/preview.d.ts +0 -0
- /package/{target → build}/commands/start.d.ts +0 -0
- /package/{target → build}/components/Abbr.d.ts +0 -0
- /package/{target → build}/components/Abbr.js +0 -0
- /package/{target → build}/components/AnsiCode.d.ts +0 -0
- /package/{target → build}/components/AnsiCode.js +0 -0
- /package/{target → build}/components/Article.d.ts +0 -0
- /package/{target → build}/components/Article.js +0 -0
- /package/{target → build}/components/BackToTop.d.ts +0 -0
- /package/{target → build}/components/BackToTop.js +0 -0
- /package/{target → build}/components/Banner.d.ts +0 -0
- /package/{target → build}/components/Banner.js +0 -0
- /package/{target → build}/components/BlogIndex.d.ts +0 -0
- /package/{target → build}/components/BlogIndex.js +0 -0
- /package/{target → build}/components/Breadcrumbs.d.ts +0 -0
- /package/{target → build}/components/Callout.d.ts +0 -0
- /package/{target → build}/components/Callout.js +0 -0
- /package/{target → build}/components/Card.d.ts +0 -0
- /package/{target → build}/components/Card.js +0 -0
- /package/{target → build}/components/Cards.d.ts +0 -0
- /package/{target → build}/components/Cards.js +0 -0
- /package/{target → build}/components/ChangelogIndex.d.ts +0 -0
- /package/{target → build}/components/ChangelogIndex.js +0 -0
- /package/{target → build}/components/CodeBlock.d.ts +0 -0
- /package/{target → build}/components/CodeBlock.js +0 -0
- /package/{target → build}/components/CodeTabs.d.ts +0 -0
- /package/{target → build}/components/CodeTabs.js +0 -0
- /package/{target → build}/components/Column.d.ts +0 -0
- /package/{target → build}/components/Column.js +0 -0
- /package/{target → build}/components/Columns.d.ts +0 -0
- /package/{target → build}/components/Columns.js +0 -0
- /package/{target → build}/components/Content.d.ts +0 -0
- /package/{target → build}/components/Content.js +0 -0
- /package/{target → build}/components/ContentTab.d.ts +0 -0
- /package/{target → build}/components/ContentTab.js +0 -0
- /package/{target → build}/components/ContentTabs.d.ts +0 -0
- /package/{target → build}/components/ContentTabs.js +0 -0
- /package/{target → build}/components/DefaultCatchBoundary.d.ts +0 -0
- /package/{target → build}/components/DefaultCatchBoundary.js +0 -0
- /package/{target → build}/components/DefinitionList.d.ts +0 -0
- /package/{target → build}/components/DefinitionList.js +0 -0
- /package/{target → build}/components/Details.d.ts +0 -0
- /package/{target → build}/components/Details.js +0 -0
- /package/{target → build}/components/FileTree.d.ts +0 -0
- /package/{target → build}/components/FileTree.js +0 -0
- /package/{target → build}/components/Footer.d.ts +0 -0
- /package/{target → build}/components/Footer.js +0 -0
- /package/{target → build}/components/FootnoteRef.d.ts +0 -0
- /package/{target → build}/components/FootnoteRef.js +0 -0
- /package/{target → build}/components/Heading.d.ts +0 -0
- /package/{target → build}/components/Heading.js +0 -0
- /package/{target → build}/components/InlineBadge.d.ts +0 -0
- /package/{target → build}/components/InlineBadge.js +0 -0
- /package/{target → build}/components/InlineIcon.d.ts +0 -0
- /package/{target → build}/components/InlineIcon.js +0 -0
- /package/{target → build}/components/InlineToc.d.ts +0 -0
- /package/{target → build}/components/InlineToc.js +0 -0
- /package/{target → build}/components/Layout.d.ts +0 -0
- /package/{target → build}/components/LinkButton.d.ts +0 -0
- /package/{target → build}/components/LinkButton.js +0 -0
- /package/{target → build}/components/Mermaid.d.ts +0 -0
- /package/{target → build}/components/Mermaid.js +0 -0
- /package/{target → build}/components/MermaidRenderer.d.ts +0 -0
- /package/{target → build}/components/MermaidRenderer.js +0 -0
- /package/{target → build}/components/NotFound.d.ts +0 -0
- /package/{target → build}/components/NotFound.js +0 -0
- /package/{target → build}/components/PackageTabs.d.ts +0 -0
- /package/{target → build}/components/PackageTabs.js +0 -0
- /package/{target → build}/components/PageToolbar.d.ts +0 -0
- /package/{target → build}/components/PageToolbar.js +0 -0
- /package/{target → build}/components/PrevNext.d.ts +0 -0
- /package/{target → build}/components/PrevNext.js +0 -0
- /package/{target → build}/components/Search.d.ts +0 -0
- /package/{target → build}/components/Search.js +0 -0
- /package/{target → build}/components/SearchDialog.d.ts +0 -0
- /package/{target → build}/components/SearchDialog.js +0 -0
- /package/{target → build}/components/Section.d.ts +0 -0
- /package/{target → build}/components/Section.js +0 -0
- /package/{target → build}/components/SectionHeader.d.ts +0 -0
- /package/{target → build}/components/SectionHeader.js +0 -0
- /package/{target → build}/components/Sidebar.d.ts +0 -0
- /package/{target → build}/components/Sidebar.js +0 -0
- /package/{target → build}/components/SidebarArticles.d.ts +0 -0
- /package/{target → build}/components/SidebarLinks.d.ts +0 -0
- /package/{target → build}/components/SidebarPosts.d.ts +0 -0
- /package/{target → build}/components/SidebarPosts.js +0 -0
- /package/{target → build}/components/SidebarReleases.d.ts +0 -0
- /package/{target → build}/components/SidebarReleases.js +0 -0
- /package/{target → build}/components/SidebarSections.d.ts +0 -0
- /package/{target → build}/components/SiteTitle.d.ts +0 -0
- /package/{target → build}/components/SortableTable.d.ts +0 -0
- /package/{target → build}/components/SortableTable.js +0 -0
- /package/{target → build}/components/SoundCloud.d.ts +0 -0
- /package/{target → build}/components/SoundCloud.js +0 -0
- /package/{target → build}/components/TagIndex.d.ts +0 -0
- /package/{target → build}/components/TagIndex.js +0 -0
- /package/{target → build}/components/Theme.d.ts +0 -0
- /package/{target → build}/components/Theme.js +0 -0
- /package/{target → build}/components/Toc.d.ts +0 -0
- /package/{target → build}/components/Toc.js +0 -0
- /package/{target → build}/components/YouTube.d.ts +0 -0
- /package/{target → build}/components/YouTube.js +0 -0
- /package/{target → build}/components/ZoomImage.d.ts +0 -0
- /package/{target → build}/components/ZoomImage.js +0 -0
- /package/{target → build}/content/article.d.ts +0 -0
- /package/{target → build}/content/tag.d.ts +0 -0
- /package/{target → build}/content-collections.d.ts +0 -0
- /package/{target → build}/elements/accordion.d.ts +0 -0
- /package/{target → build}/elements/accordion.js +0 -0
- /package/{target → build}/elements/alert-dialog.d.ts +0 -0
- /package/{target → build}/elements/alert-dialog.js +0 -0
- /package/{target → build}/elements/alert.d.ts +0 -0
- /package/{target → build}/elements/alert.js +0 -0
- /package/{target → build}/elements/aspect-ratio.d.ts +0 -0
- /package/{target → build}/elements/aspect-ratio.js +0 -0
- /package/{target → build}/elements/avatar.d.ts +0 -0
- /package/{target → build}/elements/avatar.js +0 -0
- /package/{target → build}/elements/badge.d.ts +0 -0
- /package/{target → build}/elements/badge.js +0 -0
- /package/{target → build}/elements/breadcrumb.d.ts +0 -0
- /package/{target → build}/elements/breadcrumb.js +0 -0
- /package/{target → build}/elements/button-group.d.ts +0 -0
- /package/{target → build}/elements/button-group.js +0 -0
- /package/{target → build}/elements/button.d.ts +0 -0
- /package/{target → build}/elements/button.js +0 -0
- /package/{target → build}/elements/calendar.d.ts +0 -0
- /package/{target → build}/elements/calendar.js +0 -0
- /package/{target → build}/elements/card.d.ts +0 -0
- /package/{target → build}/elements/card.js +0 -0
- /package/{target → build}/elements/carousel.d.ts +0 -0
- /package/{target → build}/elements/carousel.js +0 -0
- /package/{target → build}/elements/chart.d.ts +0 -0
- /package/{target → build}/elements/chart.js +0 -0
- /package/{target → build}/elements/checkbox.d.ts +0 -0
- /package/{target → build}/elements/checkbox.js +0 -0
- /package/{target → build}/elements/collapsible.d.ts +0 -0
- /package/{target → build}/elements/collapsible.js +0 -0
- /package/{target → build}/elements/command.d.ts +0 -0
- /package/{target → build}/elements/command.js +0 -0
- /package/{target → build}/elements/context-menu.d.ts +0 -0
- /package/{target → build}/elements/context-menu.js +0 -0
- /package/{target → build}/elements/dialog.d.ts +0 -0
- /package/{target → build}/elements/dialog.js +0 -0
- /package/{target → build}/elements/direction.d.ts +0 -0
- /package/{target → build}/elements/direction.js +0 -0
- /package/{target → build}/elements/drawer.d.ts +0 -0
- /package/{target → build}/elements/drawer.js +0 -0
- /package/{target → build}/elements/dropdown-menu.d.ts +0 -0
- /package/{target → build}/elements/dropdown-menu.js +0 -0
- /package/{target → build}/elements/empty.d.ts +0 -0
- /package/{target → build}/elements/empty.js +0 -0
- /package/{target → build}/elements/field.d.ts +0 -0
- /package/{target → build}/elements/field.js +0 -0
- /package/{target → build}/elements/hover-card.d.ts +0 -0
- /package/{target → build}/elements/hover-card.js +0 -0
- /package/{target → build}/elements/input-group.d.ts +0 -0
- /package/{target → build}/elements/input-group.js +0 -0
- /package/{target → build}/elements/input-otp.d.ts +0 -0
- /package/{target → build}/elements/input-otp.js +0 -0
- /package/{target → build}/elements/input.d.ts +0 -0
- /package/{target → build}/elements/input.js +0 -0
- /package/{target → build}/elements/item.d.ts +0 -0
- /package/{target → build}/elements/item.js +0 -0
- /package/{target → build}/elements/kbd.d.ts +0 -0
- /package/{target → build}/elements/kbd.js +0 -0
- /package/{target → build}/elements/label.d.ts +0 -0
- /package/{target → build}/elements/label.js +0 -0
- /package/{target → build}/elements/menubar.d.ts +0 -0
- /package/{target → build}/elements/menubar.js +0 -0
- /package/{target → build}/elements/native-select.d.ts +0 -0
- /package/{target → build}/elements/native-select.js +0 -0
- /package/{target → build}/elements/navigation-menu.d.ts +0 -0
- /package/{target → build}/elements/navigation-menu.js +0 -0
- /package/{target → build}/elements/pagination.d.ts +0 -0
- /package/{target → build}/elements/pagination.js +0 -0
- /package/{target → build}/elements/popover.d.ts +0 -0
- /package/{target → build}/elements/popover.js +0 -0
- /package/{target → build}/elements/progress.d.ts +0 -0
- /package/{target → build}/elements/progress.js +0 -0
- /package/{target → build}/elements/radio-group.d.ts +0 -0
- /package/{target → build}/elements/radio-group.js +0 -0
- /package/{target → build}/elements/resizable.d.ts +0 -0
- /package/{target → build}/elements/resizable.js +0 -0
- /package/{target → build}/elements/scroll-area.d.ts +0 -0
- /package/{target → build}/elements/scroll-area.js +0 -0
- /package/{target → build}/elements/select.d.ts +0 -0
- /package/{target → build}/elements/select.js +0 -0
- /package/{target → build}/elements/separator.d.ts +0 -0
- /package/{target → build}/elements/separator.js +0 -0
- /package/{target → build}/elements/sheet.d.ts +0 -0
- /package/{target → build}/elements/sheet.js +0 -0
- /package/{target → build}/elements/sidebar.d.ts +0 -0
- /package/{target → build}/elements/sidebar.js +0 -0
- /package/{target → build}/elements/skeleton.d.ts +0 -0
- /package/{target → build}/elements/skeleton.js +0 -0
- /package/{target → build}/elements/slider.d.ts +0 -0
- /package/{target → build}/elements/slider.js +0 -0
- /package/{target → build}/elements/sonner.d.ts +0 -0
- /package/{target → build}/elements/sonner.js +0 -0
- /package/{target → build}/elements/spinner.d.ts +0 -0
- /package/{target → build}/elements/spinner.js +0 -0
- /package/{target → build}/elements/switch.d.ts +0 -0
- /package/{target → build}/elements/switch.js +0 -0
- /package/{target → build}/elements/table.d.ts +0 -0
- /package/{target → build}/elements/table.js +0 -0
- /package/{target → build}/elements/tabs.d.ts +0 -0
- /package/{target → build}/elements/tabs.js +0 -0
- /package/{target → build}/elements/textarea.d.ts +0 -0
- /package/{target → build}/elements/textarea.js +0 -0
- /package/{target → build}/elements/toggle-group.d.ts +0 -0
- /package/{target → build}/elements/toggle-group.js +0 -0
- /package/{target → build}/elements/toggle.d.ts +0 -0
- /package/{target → build}/elements/toggle.js +0 -0
- /package/{target → build}/elements/tooltip.d.ts +0 -0
- /package/{target → build}/elements/tooltip.js +0 -0
- /package/{target → build}/entrypoints/main.d.ts +0 -0
- /package/{target → build}/entrypoints/main.js +0 -0
- /package/{target → build}/helpers/article-icon.d.ts +0 -0
- /package/{target → build}/helpers/article-icon.js +0 -0
- /package/{target → build}/helpers/article.d.ts +0 -0
- /package/{target → build}/helpers/article.js +0 -0
- /package/{target → build}/helpers/changelog-source.d.ts +0 -0
- /package/{target → build}/helpers/changelog-source.js +0 -0
- /package/{target → build}/helpers/changelog-source.unit.d.ts +0 -0
- /package/{target → build}/helpers/changelog-source.unit.js +0 -0
- /package/{target → build}/helpers/dynamic-icon-resolver.d.ts +0 -0
- /package/{target → build}/helpers/dynamic-icon-resolver.js +0 -0
- /package/{target → build}/helpers/dynamic-icon.d.ts +0 -0
- /package/{target → build}/helpers/dynamic-icon.js +0 -0
- /package/{target → build}/helpers/favicon.d.ts +0 -0
- /package/{target → build}/helpers/favicon.js +0 -0
- /package/{target → build}/helpers/model.d.ts +0 -0
- /package/{target → build}/helpers/model.js +0 -0
- /package/{target → build}/helpers/program.d.ts +0 -0
- /package/{target → build}/helpers/program.js +0 -0
- /package/{target → build}/helpers/resolve-asset-path.d.ts +0 -0
- /package/{target → build}/helpers/resolve-asset-path.js +0 -0
- /package/{target → build}/helpers/resolve-includes.d.ts +0 -0
- /package/{target → build}/helpers/resolve-includes.js +0 -0
- /package/{target → build}/helpers/resolve-includes.unit.d.ts +0 -0
- /package/{target → build}/helpers/resolve-includes.unit.js +0 -0
- /package/{target → build}/helpers/search-text.d.ts +0 -0
- /package/{target → build}/helpers/search-text.js +0 -0
- /package/{target → build}/helpers/section.d.ts +0 -0
- /package/{target → build}/helpers/section.js +0 -0
- /package/{target → build}/helpers/section.unit.d.ts +0 -0
- /package/{target → build}/helpers/section.unit.js +0 -0
- /package/{target → build}/helpers/theme.d.ts +0 -0
- /package/{target → build}/helpers/theme.js +0 -0
- /package/{target → build}/helpers/toc-context.d.ts +0 -0
- /package/{target → build}/helpers/toc-context.js +0 -0
- /package/{target → build}/helpers/toc.d.ts +0 -0
- /package/{target → build}/helpers/toc.js +0 -0
- /package/{target → build}/helpers/toc.unit.d.ts +0 -0
- /package/{target → build}/helpers/toc.unit.js +0 -0
- /package/{target → build}/hooks/in-view.d.ts +0 -0
- /package/{target → build}/hooks/in-view.js +0 -0
- /package/{target → build}/hooks/media.d.ts +0 -0
- /package/{target → build}/hooks/media.js +0 -0
- /package/{target → build}/index.d.ts +0 -0
- /package/{target → build}/index.js +0 -0
- /package/{target → build}/models/article.d.ts +0 -0
- /package/{target → build}/models/article.js +0 -0
- /package/{target → build}/models/link.d.ts +0 -0
- /package/{target → build}/models/link.js +0 -0
- /package/{target → build}/models/patch.d.ts +0 -0
- /package/{target → build}/models/patch.js +0 -0
- /package/{target → build}/models/section.d.ts +0 -0
- /package/{target → build}/models/section.js +0 -0
- /package/{target → build}/models/theme.d.ts +0 -0
- /package/{target → build}/models/theme.js +0 -0
- /package/{target → build}/models/toc.d.ts +0 -0
- /package/{target → build}/models/toc.js +0 -0
- /package/{target → build}/plugins/rehype-inline-code.d.ts +0 -0
- /package/{target → build}/plugins/rehype-inline-code.js +0 -0
- /package/{target → build}/plugins/rehype-task-list-a11y.d.ts +0 -0
- /package/{target → build}/plugins/rehype-task-list-a11y.js +0 -0
- /package/{target → build}/plugins/remark-abbr.d.ts +0 -0
- /package/{target → build}/plugins/remark-abbr.js +0 -0
- /package/{target → build}/plugins/remark-abbr.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-abbr.unit.js +0 -0
- /package/{target → build}/plugins/remark-ansi.d.ts +0 -0
- /package/{target → build}/plugins/remark-ansi.js +0 -0
- /package/{target → build}/plugins/remark-ansi.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-ansi.unit.js +0 -0
- /package/{target → build}/plugins/remark-badge.d.ts +0 -0
- /package/{target → build}/plugins/remark-badge.js +0 -0
- /package/{target → build}/plugins/remark-badge.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-badge.unit.js +0 -0
- /package/{target → build}/plugins/remark-button.d.ts +0 -0
- /package/{target → build}/plugins/remark-button.js +0 -0
- /package/{target → build}/plugins/remark-button.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-button.unit.js +0 -0
- /package/{target → build}/plugins/remark-callout.d.ts +0 -0
- /package/{target → build}/plugins/remark-callout.js +0 -0
- /package/{target → build}/plugins/remark-card.d.ts +0 -0
- /package/{target → build}/plugins/remark-card.js +0 -0
- /package/{target → build}/plugins/remark-code-tabs.d.ts +0 -0
- /package/{target → build}/plugins/remark-code-tabs.js +0 -0
- /package/{target → build}/plugins/remark-columns.d.ts +0 -0
- /package/{target → build}/plugins/remark-columns.js +0 -0
- /package/{target → build}/plugins/remark-custom-heading-id.d.ts +0 -0
- /package/{target → build}/plugins/remark-custom-heading-id.js +0 -0
- /package/{target → build}/plugins/remark-custom-heading-id.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-custom-heading-id.unit.js +0 -0
- /package/{target → build}/plugins/remark-deflist.d.ts +0 -0
- /package/{target → build}/plugins/remark-deflist.js +0 -0
- /package/{target → build}/plugins/remark-details.d.ts +0 -0
- /package/{target → build}/plugins/remark-details.js +0 -0
- /package/{target → build}/plugins/remark-filetree.d.ts +0 -0
- /package/{target → build}/plugins/remark-filetree.js +0 -0
- /package/{target → build}/plugins/remark-filetree.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-filetree.unit.js +0 -0
- /package/{target → build}/plugins/remark-github-callout.d.ts +0 -0
- /package/{target → build}/plugins/remark-github-callout.js +0 -0
- /package/{target → build}/plugins/remark-icon.d.ts +0 -0
- /package/{target → build}/plugins/remark-icon.js +0 -0
- /package/{target → build}/plugins/remark-image.d.ts +0 -0
- /package/{target → build}/plugins/remark-image.js +0 -0
- /package/{target → build}/plugins/remark-media.d.ts +0 -0
- /package/{target → build}/plugins/remark-media.js +0 -0
- /package/{target → build}/plugins/remark-media.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-media.unit.js +0 -0
- /package/{target → build}/plugins/remark-mermaid.d.ts +0 -0
- /package/{target → build}/plugins/remark-mermaid.js +0 -0
- /package/{target → build}/plugins/remark-npm.d.ts +0 -0
- /package/{target → build}/plugins/remark-npm.js +0 -0
- /package/{target → build}/plugins/remark-passthrough-directive.d.ts +0 -0
- /package/{target → build}/plugins/remark-passthrough-directive.js +0 -0
- /package/{target → build}/plugins/remark-steps.d.ts +0 -0
- /package/{target → build}/plugins/remark-steps.js +0 -0
- /package/{target → build}/plugins/remark-steps.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-steps.unit.js +0 -0
- /package/{target → build}/plugins/remark-tab.d.ts +0 -0
- /package/{target → build}/plugins/remark-tab.js +0 -0
- /package/{target → build}/plugins/remark-tab.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-tab.unit.js +0 -0
- /package/{target → build}/plugins/remark-toc.d.ts +0 -0
- /package/{target → build}/plugins/remark-toc.js +0 -0
- /package/{target → build}/plugins/remark-toc.unit.d.ts +0 -0
- /package/{target → build}/plugins/remark-toc.unit.js +0 -0
- /package/{target → build}/plugins/shiki-icon.d.ts +0 -0
- /package/{target → build}/plugins/shiki-icon.js +0 -0
- /package/{target → build}/plugins/shiki-line-highlight.d.ts +0 -0
- /package/{target → build}/plugins/shiki-line-highlight.js +0 -0
- /package/{target → build}/program.d.ts +0 -0
- /package/{target → build}/program.js +0 -0
- /package/{target → build}/routeTree.gen.d.ts +0 -0
- /package/{target → build}/routeTree.gen.js +0 -0
- /package/{target → build}/router.d.ts +0 -0
- /package/{target → build}/router.js +0 -0
- /package/{target → build}/routes/$.d.ts +0 -0
- /package/{target → build}/routes/$.js +0 -0
- /package/{target → build}/routes/__root.d.ts +0 -0
- /package/{target → build}/server.d.ts +0 -0
- /package/{target → build}/server.js +0 -0
- /package/{target → build}/utils/style.d.ts +0 -0
- /package/{target → build}/utils/style.js +0 -0
- /package/{target → build}/vite.config.d.ts +0 -0
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
-
import { dirname, join, resolve } from "node:path";
|
|
3
|
-
import slugify from "@sindresorhus/slugify";
|
|
4
|
-
import { toString as mdastToString } from "mdast-util-to-string";
|
|
5
|
-
import remarkParse from "remark-parse";
|
|
6
|
-
import remarkStringify from "remark-stringify";
|
|
7
|
-
import { unified } from "unified";
|
|
8
|
-
import { visit } from "unist-util-visit";
|
|
9
|
-
import { isGitHubUrl, parseGitHubRepo } from "../../helpers/changelog-source.js";
|
|
10
|
-
const CACHE_DIR = ".livemark/cache/changelog";
|
|
11
|
-
const META_FILE = ".livemark/cache/changelog.meta.json";
|
|
12
|
-
const parser = unified().use(remarkParse);
|
|
13
|
-
const stringifier = unified().use(remarkStringify, {
|
|
14
|
-
bullet: "-",
|
|
15
|
-
fences: true,
|
|
16
|
-
emphasis: "_",
|
|
17
|
-
});
|
|
18
|
-
export function cacheIncludeGlob() {
|
|
19
|
-
return `${CACHE_DIR}/**/*.md`;
|
|
20
|
-
}
|
|
21
|
-
/** Build the per-version changelog cache files for a changelog section */
|
|
22
|
-
export async function buildChangelog(section, config) {
|
|
23
|
-
const cacheDir = join(config.root, CACHE_DIR);
|
|
24
|
-
const metaPath = join(config.root, META_FILE);
|
|
25
|
-
const entries = isGitHubUrl(section.source)
|
|
26
|
-
? await buildFromGitHub(section.source, metaPath, cacheDir)
|
|
27
|
-
: await buildFromLocal(section.source, config.root);
|
|
28
|
-
if (entries === undefined)
|
|
29
|
-
return;
|
|
30
|
-
await rm(cacheDir, { recursive: true, force: true });
|
|
31
|
-
await mkdir(cacheDir, { recursive: true });
|
|
32
|
-
for (const entry of entries) {
|
|
33
|
-
const markdown = wrapFrontmatter(entry, section);
|
|
34
|
-
await writeFile(join(cacheDir, `${entry.slug}.md`), markdown, "utf-8");
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
async function buildFromLocal(source, root) {
|
|
38
|
-
const filePath = resolve(root, source);
|
|
39
|
-
const body = await readFile(filePath, "utf-8");
|
|
40
|
-
return splitLocalChangelog(body);
|
|
41
|
-
}
|
|
42
|
-
/** Parse CHANGELOG.md into per-version entries using mdast */
|
|
43
|
-
export function splitLocalChangelog(body) {
|
|
44
|
-
const tree = parser.parse(body);
|
|
45
|
-
const entries = [];
|
|
46
|
-
let current;
|
|
47
|
-
for (const child of tree.children) {
|
|
48
|
-
if (child.type === "heading" && child.depth === 2) {
|
|
49
|
-
if (current)
|
|
50
|
-
entries.push(finalizeEntry(current));
|
|
51
|
-
current = { heading: mdastToString(child), children: [] };
|
|
52
|
-
}
|
|
53
|
-
else if (current) {
|
|
54
|
-
current.children.push(child);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (current)
|
|
58
|
-
entries.push(finalizeEntry(current));
|
|
59
|
-
return entries;
|
|
60
|
-
}
|
|
61
|
-
function finalizeEntry(input) {
|
|
62
|
-
const versionMatch = input.heading.match(/^\[?([^\]\s]+)\]?/);
|
|
63
|
-
const version = versionMatch?.[1] ?? input.heading;
|
|
64
|
-
const dateMatch = input.heading.match(/\d{4}-\d{2}-\d{2}/);
|
|
65
|
-
const body = renderEntryBody(input.children);
|
|
66
|
-
return {
|
|
67
|
-
slug: slugify(version),
|
|
68
|
-
title: version,
|
|
69
|
-
date: dateMatch?.[0],
|
|
70
|
-
body,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
/** Serialize an entry's mdast children back to markdown */
|
|
74
|
-
function renderEntryBody(children) {
|
|
75
|
-
const root = { type: "root", children };
|
|
76
|
-
return stringifier.stringify(root).trimEnd();
|
|
77
|
-
}
|
|
78
|
-
/** Drop the body's leading h1 (typically the conventional-changelog
|
|
79
|
-
* `# 0.7.2 (2026-04-25)` boilerplate that duplicates the article's title),
|
|
80
|
-
* shift h2–h6 up by one so subsection headings become h1 / h2 / …, and
|
|
81
|
-
* escape stray `<` outside code so MDX doesn't mistake them for JSX. */
|
|
82
|
-
function processBody(body) {
|
|
83
|
-
const tree = parser.parse(body);
|
|
84
|
-
visit(tree, "heading", node => {
|
|
85
|
-
if (node.depth > 1)
|
|
86
|
-
node.depth = (node.depth - 1);
|
|
87
|
-
});
|
|
88
|
-
if (tree.children[0]?.type === "heading" && tree.children[0].depth === 1) {
|
|
89
|
-
tree.children.shift();
|
|
90
|
-
}
|
|
91
|
-
return escapeMdxAngles(stringifier.stringify(tree).trimEnd());
|
|
92
|
-
}
|
|
93
|
-
/** Escape `<` to `\<` outside fenced code blocks and inline backtick spans
|
|
94
|
-
* so commit messages with placeholders like `<subdir>` don't get parsed as
|
|
95
|
-
* JSX by MDX. */
|
|
96
|
-
function escapeMdxAngles(markdown) {
|
|
97
|
-
let inFence = false;
|
|
98
|
-
return markdown
|
|
99
|
-
.split("\n")
|
|
100
|
-
.map(line => {
|
|
101
|
-
if (line.startsWith("```")) {
|
|
102
|
-
inFence = !inFence;
|
|
103
|
-
return line;
|
|
104
|
-
}
|
|
105
|
-
if (inFence)
|
|
106
|
-
return line;
|
|
107
|
-
return line.replace(/`[^`]*`|</g, match => match === "<" ? "\\<" : match);
|
|
108
|
-
})
|
|
109
|
-
.join("\n");
|
|
110
|
-
}
|
|
111
|
-
async function buildFromGitHub(source, metaPath, cacheDir) {
|
|
112
|
-
const parsed = parseGitHubRepo(source);
|
|
113
|
-
if (!parsed) {
|
|
114
|
-
throw new Error(`Could not parse GitHub repo from source: ${source}`);
|
|
115
|
-
}
|
|
116
|
-
const url = `https://api.github.com/repos/${parsed.owner}/${parsed.repo}/releases?per_page=100`;
|
|
117
|
-
const headers = {
|
|
118
|
-
Accept: "application/vnd.github+json",
|
|
119
|
-
"X-GitHub-Api-Version": "2022-11-28",
|
|
120
|
-
};
|
|
121
|
-
const token = process.env.GITHUB_TOKEN;
|
|
122
|
-
if (token)
|
|
123
|
-
headers.Authorization = `Bearer ${token}`;
|
|
124
|
-
const meta = await readMeta(metaPath);
|
|
125
|
-
const hasCache = await exists(cacheDir);
|
|
126
|
-
if (meta && hasCache)
|
|
127
|
-
headers["If-None-Match"] = meta.etag;
|
|
128
|
-
const res = await fetch(url, { headers });
|
|
129
|
-
if (res.status === 304)
|
|
130
|
-
return undefined;
|
|
131
|
-
if (!res.ok) {
|
|
132
|
-
const remaining = res.headers.get("x-ratelimit-remaining");
|
|
133
|
-
const reset = res.headers.get("x-ratelimit-reset");
|
|
134
|
-
const msg = `GitHub API ${res.status} ${res.statusText} (rate-limit remaining: ${remaining ?? "?"}, reset: ${reset ?? "?"})`;
|
|
135
|
-
if (hasCache) {
|
|
136
|
-
console.warn(`${msg} — falling back to cached changelog`);
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
throw new Error(msg);
|
|
140
|
-
}
|
|
141
|
-
const releases = (await res.json());
|
|
142
|
-
const etag = res.headers.get("etag");
|
|
143
|
-
if (etag) {
|
|
144
|
-
await mkdir(dirname(metaPath), { recursive: true });
|
|
145
|
-
await writeFile(metaPath, JSON.stringify({ etag, fetchedAt: new Date().toISOString() }, null, 2), "utf-8");
|
|
146
|
-
}
|
|
147
|
-
return releases.map(release => ({
|
|
148
|
-
slug: slugify(release.tag_name),
|
|
149
|
-
title: release.tag_name,
|
|
150
|
-
date: release.published_at ?? undefined,
|
|
151
|
-
body: (release.body ?? "").trim(),
|
|
152
|
-
sourceUrl: release.html_url ?? undefined,
|
|
153
|
-
}));
|
|
154
|
-
}
|
|
155
|
-
function wrapFrontmatter(entry, section) {
|
|
156
|
-
const lines = [
|
|
157
|
-
"---",
|
|
158
|
-
`title: ${entry.title}`,
|
|
159
|
-
`path: ${section.prefix}${entry.slug}/`,
|
|
160
|
-
];
|
|
161
|
-
if (entry.date)
|
|
162
|
-
lines.push(`date: ${entry.date}`);
|
|
163
|
-
if (entry.sourceUrl) {
|
|
164
|
-
lines.push(`sourceUrl: ${entry.sourceUrl}`, "sourceAction: view");
|
|
165
|
-
}
|
|
166
|
-
lines.push("---", "", `# ${entry.title}`, "", processBody(entry.body));
|
|
167
|
-
return lines.join("\n");
|
|
168
|
-
}
|
|
169
|
-
async function readMeta(metaPath) {
|
|
170
|
-
try {
|
|
171
|
-
const raw = await readFile(metaPath, "utf-8");
|
|
172
|
-
return JSON.parse(raw);
|
|
173
|
-
}
|
|
174
|
-
catch {
|
|
175
|
-
return undefined;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
async function exists(path) {
|
|
179
|
-
try {
|
|
180
|
-
await access(path);
|
|
181
|
-
return true;
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEQsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRSxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQXVCaEYsTUFBTSxTQUFTLEdBQUcsMkJBQTJCLENBQUE7QUFDN0MsTUFBTSxTQUFTLEdBQUcscUNBQXFDLENBQUE7QUFFdkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQ3pDLE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUU7SUFDakQsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLFFBQVEsRUFBRSxHQUFHO0NBQ2QsQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLEdBQUcsU0FBUyxVQUFVLENBQUE7QUFDL0IsQ0FBQztBQUVELDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsT0FBeUIsRUFDekIsTUFBYztJQUVkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRTdDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDM0QsQ0FBQyxDQUFDLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXJELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFNO0lBRWpDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDcEQsTUFBTSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFFMUMsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2hELE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDeEUsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsY0FBYyxDQUFDLE1BQWMsRUFBRSxJQUFZO0lBQ3hELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVELDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBUyxDQUFBO0lBQ3ZDLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUE7SUFDcEMsSUFBSSxPQUFpRSxDQUFBO0lBRXJFLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUNqRCxPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQTtRQUMzRCxDQUFDO2FBQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksT0FBTztRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDakQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBR3RCO0lBQ0MsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUM3RCxNQUFNLE9BQU8sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFBO0lBQ2xELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDMUQsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDdEIsS0FBSyxFQUFFLE9BQU87UUFDZCxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUk7S0FDTCxDQUFBO0FBQ0gsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxTQUFTLGVBQWUsQ0FBQyxRQUF1QjtJQUM5QyxNQUFNLElBQUksR0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUE7SUFDN0MsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQzlDLENBQUM7QUFFRDs7O3dFQUd3RTtBQUN4RSxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFTLENBQUE7SUFDdkMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQXNCLENBQUE7SUFDeEUsQ0FBQyxDQUFDLENBQUE7SUFDRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDL0QsQ0FBQztBQUVEOztpQkFFaUI7QUFDakIsU0FBUyxlQUFlLENBQUMsUUFBZ0I7SUFDdkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFBO0lBQ25CLE9BQU8sUUFBUTtTQUNaLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDWCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDVixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUE7WUFDbEIsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsSUFBSSxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUN4QyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDOUIsQ0FBQTtJQUNILENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNmLENBQUM7QUFFRCxLQUFLLFVBQVUsZUFBZSxDQUM1QixNQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsUUFBZ0I7SUFFaEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLGdDQUFnQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLHdCQUF3QixDQUFBO0lBQy9GLE1BQU0sT0FBTyxHQUEyQjtRQUN0QyxNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDLHNCQUFzQixFQUFFLFlBQVk7S0FDckMsQ0FBQTtJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFBO0lBQ3RDLElBQUksS0FBSztRQUFFLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQTtJQUVwRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN2QyxJQUFJLElBQUksSUFBSSxRQUFRO1FBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7SUFFMUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUV6QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBRXhDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDWixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQzFELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDbEQsTUFBTSxHQUFHLEdBQUcsY0FBYyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLDJCQUEyQixTQUFTLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQTtRQUM1SCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcscUNBQXFDLENBQUMsQ0FBQTtZQUN6RCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBYyxDQUFBO0lBQ2hELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNuRCxNQUFNLFNBQVMsQ0FDYixRQUFRLEVBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FDWixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBc0IsRUFDakUsSUFBSSxFQUNKLENBQUMsQ0FDRixFQUNELE9BQU8sQ0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQy9CLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUTtRQUN2QixJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksSUFBSSxTQUFTO1FBQ3ZDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFO1FBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVM7S0FDekMsQ0FBQyxDQUFDLENBQUE7QUFDTCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBcUIsRUFBRSxPQUF5QjtJQUN2RSxNQUFNLEtBQUssR0FBRztRQUNaLEtBQUs7UUFDTCxVQUFVLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDdkIsU0FBUyxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUc7S0FDeEMsQ0FBQTtJQUNELElBQUksS0FBSyxDQUFDLElBQUk7UUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDakQsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN0RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDekIsQ0FBQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUMsUUFBZ0I7SUFDdEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWMsQ0FBQTtJQUNyQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsTUFBTSxDQUFDLElBQVk7SUFDaEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFjY2VzcywgbWtkaXIsIHJlYWRGaWxlLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHNsdWdpZnkgZnJvbSBcIkBzaW5kcmVzb3JodXMvc2x1Z2lmeVwiXG5pbXBvcnQgdHlwZSB7IFJvb3QsIFJvb3RDb250ZW50IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB7IHRvU3RyaW5nIGFzIG1kYXN0VG9TdHJpbmcgfSBmcm9tIFwibWRhc3QtdXRpbC10by1zdHJpbmdcIlxuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gXCJyZW1hcmstcGFyc2VcIlxuaW1wb3J0IHJlbWFya1N0cmluZ2lmeSBmcm9tIFwicmVtYXJrLXN0cmluZ2lmeVwiXG5pbXBvcnQgeyB1bmlmaWVkIH0gZnJvbSBcInVuaWZpZWRcIlxuaW1wb3J0IHsgdmlzaXQgfSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB0eXBlIHsgQ2hhbmdlbG9nU2VjdGlvbiB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VjdGlvbi50c1wiXG5pbXBvcnQgeyBpc0dpdEh1YlVybCwgcGFyc2VHaXRIdWJSZXBvIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvY2hhbmdlbG9nLXNvdXJjZS50c1wiXG5cbmludGVyZmFjZSBSZWxlYXNlIHtcbiAgdGFnX25hbWU6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwdWJsaXNoZWRfYXQ/OiBzdHJpbmcgfCBudWxsXG4gIGJvZHk/OiBzdHJpbmcgfCBudWxsXG4gIGh0bWxfdXJsPzogc3RyaW5nIHwgbnVsbFxufVxuXG5pbnRlcmZhY2UgQ2FjaGVNZXRhIHtcbiAgZXRhZzogc3RyaW5nXG4gIGZldGNoZWRBdDogc3RyaW5nXG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dFbnRyeSB7XG4gIHNsdWc6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU/OiBzdHJpbmdcbiAgYm9keTogc3RyaW5nXG4gIHNvdXJjZVVybD86IHN0cmluZ1xufVxuXG5jb25zdCBDQUNIRV9ESVIgPSBcIi5saXZlbWFyay9jYWNoZS9jaGFuZ2Vsb2dcIlxuY29uc3QgTUVUQV9GSUxFID0gXCIubGl2ZW1hcmsvY2FjaGUvY2hhbmdlbG9nLm1ldGEuanNvblwiXG5cbmNvbnN0IHBhcnNlciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpXG5jb25zdCBzdHJpbmdpZmllciA9IHVuaWZpZWQoKS51c2UocmVtYXJrU3RyaW5naWZ5LCB7XG4gIGJ1bGxldDogXCItXCIsXG4gIGZlbmNlczogdHJ1ZSxcbiAgZW1waGFzaXM6IFwiX1wiLFxufSlcblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlSW5jbHVkZUdsb2IoKSB7XG4gIHJldHVybiBgJHtDQUNIRV9ESVJ9LyoqLyoubWRgXG59XG5cbi8qKiBCdWlsZCB0aGUgcGVyLXZlcnNpb24gY2hhbmdlbG9nIGNhY2hlIGZpbGVzIGZvciBhIGNoYW5nZWxvZyBzZWN0aW9uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDaGFuZ2Vsb2coXG4gIHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24sXG4gIGNvbmZpZzogQ29uZmlnLFxuKSB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihjb25maWcucm9vdCwgQ0FDSEVfRElSKVxuICBjb25zdCBtZXRhUGF0aCA9IGpvaW4oY29uZmlnLnJvb3QsIE1FVEFfRklMRSlcblxuICBjb25zdCBlbnRyaWVzID0gaXNHaXRIdWJVcmwoc2VjdGlvbi5zb3VyY2UpXG4gICAgPyBhd2FpdCBidWlsZEZyb21HaXRIdWIoc2VjdGlvbi5zb3VyY2UsIG1ldGFQYXRoLCBjYWNoZURpcilcbiAgICA6IGF3YWl0IGJ1aWxkRnJvbUxvY2FsKHNlY3Rpb24uc291cmNlLCBjb25maWcucm9vdClcblxuICBpZiAoZW50cmllcyA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICBhd2FpdCBybShjYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gIGF3YWl0IG1rZGlyKGNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IG1hcmtkb3duID0gd3JhcEZyb250bWF0dGVyKGVudHJ5LCBzZWN0aW9uKVxuICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKGNhY2hlRGlyLCBgJHtlbnRyeS5zbHVnfS5tZGApLCBtYXJrZG93biwgXCJ1dGYtOFwiKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUxvY2FsKHNvdXJjZTogc3RyaW5nLCByb290OiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZVBhdGggPSByZXNvbHZlKHJvb3QsIHNvdXJjZSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpXG4gIHJldHVybiBzcGxpdExvY2FsQ2hhbmdlbG9nKGJvZHkpXG59XG5cbi8qKiBQYXJzZSBDSEFOR0VMT0cubWQgaW50byBwZXItdmVyc2lvbiBlbnRyaWVzIHVzaW5nIG1kYXN0ICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRMb2NhbENoYW5nZWxvZyhib2R5OiBzdHJpbmcpOiBDaGFuZ2Vsb2dFbnRyeVtdIHtcbiAgY29uc3QgdHJlZSA9IHBhcnNlci5wYXJzZShib2R5KSBhcyBSb290XG4gIGNvbnN0IGVudHJpZXM6IENoYW5nZWxvZ0VudHJ5W10gPSBbXVxuICBsZXQgY3VycmVudDogeyBoZWFkaW5nOiBzdHJpbmc7IGNoaWxkcmVuOiBSb290Q29udGVudFtdIH0gfCB1bmRlZmluZWRcblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRyZWUuY2hpbGRyZW4pIHtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gXCJoZWFkaW5nXCIgJiYgY2hpbGQuZGVwdGggPT09IDIpIHtcbiAgICAgIGlmIChjdXJyZW50KSBlbnRyaWVzLnB1c2goZmluYWxpemVFbnRyeShjdXJyZW50KSlcbiAgICAgIGN1cnJlbnQgPSB7IGhlYWRpbmc6IG1kYXN0VG9TdHJpbmcoY2hpbGQpLCBjaGlsZHJlbjogW10gfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudCkge1xuICAgICAgY3VycmVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKVxuICAgIH1cbiAgfVxuICBpZiAoY3VycmVudCkgZW50cmllcy5wdXNoKGZpbmFsaXplRW50cnkoY3VycmVudCkpXG4gIHJldHVybiBlbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplRW50cnkoaW5wdXQ6IHtcbiAgaGVhZGluZzogc3RyaW5nXG4gIGNoaWxkcmVuOiBSb290Q29udGVudFtdXG59KTogQ2hhbmdlbG9nRW50cnkge1xuICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSBpbnB1dC5oZWFkaW5nLm1hdGNoKC9eXFxbPyhbXlxcXVxcc10rKVxcXT8vKVxuICBjb25zdCB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoPy5bMV0gPz8gaW5wdXQuaGVhZGluZ1xuICBjb25zdCBkYXRlTWF0Y2ggPSBpbnB1dC5oZWFkaW5nLm1hdGNoKC9cXGR7NH0tXFxkezJ9LVxcZHsyfS8pXG4gIGNvbnN0IGJvZHkgPSByZW5kZXJFbnRyeUJvZHkoaW5wdXQuY2hpbGRyZW4pXG4gIHJldHVybiB7XG4gICAgc2x1Zzogc2x1Z2lmeSh2ZXJzaW9uKSxcbiAgICB0aXRsZTogdmVyc2lvbixcbiAgICBkYXRlOiBkYXRlTWF0Y2g/LlswXSxcbiAgICBib2R5LFxuICB9XG59XG5cbi8qKiBTZXJpYWxpemUgYW4gZW50cnkncyBtZGFzdCBjaGlsZHJlbiBiYWNrIHRvIG1hcmtkb3duICovXG5mdW5jdGlvbiByZW5kZXJFbnRyeUJvZHkoY2hpbGRyZW46IFJvb3RDb250ZW50W10pIHtcbiAgY29uc3Qgcm9vdDogUm9vdCA9IHsgdHlwZTogXCJyb290XCIsIGNoaWxkcmVuIH1cbiAgcmV0dXJuIHN0cmluZ2lmaWVyLnN0cmluZ2lmeShyb290KS50cmltRW5kKClcbn1cblxuLyoqIERyb3AgdGhlIGJvZHkncyBsZWFkaW5nIGgxICh0eXBpY2FsbHkgdGhlIGNvbnZlbnRpb25hbC1jaGFuZ2Vsb2dcbiAqIGAjIDAuNy4yICgyMDI2LTA0LTI1KWAgYm9pbGVycGxhdGUgdGhhdCBkdXBsaWNhdGVzIHRoZSBhcnRpY2xlJ3MgdGl0bGUpLFxuICogc2hpZnQgaDLigJNoNiB1cCBieSBvbmUgc28gc3Vic2VjdGlvbiBoZWFkaW5ncyBiZWNvbWUgaDEgLyBoMiAvIOKApiwgYW5kXG4gKiBlc2NhcGUgc3RyYXkgYDxgIG91dHNpZGUgY29kZSBzbyBNRFggZG9lc24ndCBtaXN0YWtlIHRoZW0gZm9yIEpTWC4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NCb2R5KGJvZHk6IHN0cmluZykge1xuICBjb25zdCB0cmVlID0gcGFyc2VyLnBhcnNlKGJvZHkpIGFzIFJvb3RcbiAgdmlzaXQodHJlZSwgXCJoZWFkaW5nXCIsIG5vZGUgPT4ge1xuICAgIGlmIChub2RlLmRlcHRoID4gMSkgbm9kZS5kZXB0aCA9IChub2RlLmRlcHRoIC0gMSkgYXMgMSB8IDIgfCAzIHwgNCB8IDVcbiAgfSlcbiAgaWYgKHRyZWUuY2hpbGRyZW5bMF0/LnR5cGUgPT09IFwiaGVhZGluZ1wiICYmIHRyZWUuY2hpbGRyZW5bMF0uZGVwdGggPT09IDEpIHtcbiAgICB0cmVlLmNoaWxkcmVuLnNoaWZ0KClcbiAgfVxuICByZXR1cm4gZXNjYXBlTWR4QW5nbGVzKHN0cmluZ2lmaWVyLnN0cmluZ2lmeSh0cmVlKS50cmltRW5kKCkpXG59XG5cbi8qKiBFc2NhcGUgYDxgIHRvIGBcXDxgIG91dHNpZGUgZmVuY2VkIGNvZGUgYmxvY2tzIGFuZCBpbmxpbmUgYmFja3RpY2sgc3BhbnNcbiAqIHNvIGNvbW1pdCBtZXNzYWdlcyB3aXRoIHBsYWNlaG9sZGVycyBsaWtlIGA8c3ViZGlyPmAgZG9uJ3QgZ2V0IHBhcnNlZCBhc1xuICogSlNYIGJ5IE1EWC4gKi9cbmZ1bmN0aW9uIGVzY2FwZU1keEFuZ2xlcyhtYXJrZG93bjogc3RyaW5nKSB7XG4gIGxldCBpbkZlbmNlID0gZmFsc2VcbiAgcmV0dXJuIG1hcmtkb3duXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcChsaW5lID0+IHtcbiAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJgYGBcIikpIHtcbiAgICAgICAgaW5GZW5jZSA9ICFpbkZlbmNlXG4gICAgICAgIHJldHVybiBsaW5lXG4gICAgICB9XG4gICAgICBpZiAoaW5GZW5jZSkgcmV0dXJuIGxpbmVcbiAgICAgIHJldHVybiBsaW5lLnJlcGxhY2UoL2BbXmBdKmB8PC9nLCBtYXRjaCA9PlxuICAgICAgICBtYXRjaCA9PT0gXCI8XCIgPyBcIlxcXFw8XCIgOiBtYXRjaCxcbiAgICAgIClcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUdpdEh1YihcbiAgc291cmNlOiBzdHJpbmcsXG4gIG1ldGFQYXRoOiBzdHJpbmcsXG4gIGNhY2hlRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPENoYW5nZWxvZ0VudHJ5W10gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VHaXRIdWJSZXBvKHNvdXJjZSlcbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBHaXRIdWIgcmVwbyBmcm9tIHNvdXJjZTogJHtzb3VyY2V9YClcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7cGFyc2VkLm93bmVyfS8ke3BhcnNlZC5yZXBvfS9yZWxlYXNlcz9wZXJfcGFnZT0xMDBgXG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvblwiLFxuICAgIFwiWC1HaXRIdWItQXBpLVZlcnNpb25cIjogXCIyMDIyLTExLTI4XCIsXG4gIH1cblxuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTlxuICBpZiAodG9rZW4pIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gXG5cbiAgY29uc3QgbWV0YSA9IGF3YWl0IHJlYWRNZXRhKG1ldGFQYXRoKVxuICBjb25zdCBoYXNDYWNoZSA9IGF3YWl0IGV4aXN0cyhjYWNoZURpcilcbiAgaWYgKG1ldGEgJiYgaGFzQ2FjaGUpIGhlYWRlcnNbXCJJZi1Ob25lLU1hdGNoXCJdID0gbWV0YS5ldGFnXG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7IGhlYWRlcnMgfSlcblxuICBpZiAocmVzLnN0YXR1cyA9PT0gMzA0KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSByZXMuaGVhZGVycy5nZXQoXCJ4LXJhdGVsaW1pdC1yZW1haW5pbmdcIilcbiAgICBjb25zdCByZXNldCA9IHJlcy5oZWFkZXJzLmdldChcIngtcmF0ZWxpbWl0LXJlc2V0XCIpXG4gICAgY29uc3QgbXNnID0gYEdpdEh1YiBBUEkgJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fSAocmF0ZS1saW1pdCByZW1haW5pbmc6ICR7cmVtYWluaW5nID8/IFwiP1wifSwgcmVzZXQ6ICR7cmVzZXQgPz8gXCI/XCJ9KWBcbiAgICBpZiAoaGFzQ2FjaGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHttc2d9IOKAlCBmYWxsaW5nIGJhY2sgdG8gY2FjaGVkIGNoYW5nZWxvZ2ApXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpXG4gIH1cblxuICBjb25zdCByZWxlYXNlcyA9IChhd2FpdCByZXMuanNvbigpKSBhcyBSZWxlYXNlW11cbiAgY29uc3QgZXRhZyA9IHJlcy5oZWFkZXJzLmdldChcImV0YWdcIilcbiAgaWYgKGV0YWcpIHtcbiAgICBhd2FpdCBta2RpcihkaXJuYW1lKG1ldGFQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBtZXRhUGF0aCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7IGV0YWcsIGZldGNoZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0gc2F0aXNmaWVzIENhY2hlTWV0YSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgICksXG4gICAgICBcInV0Zi04XCIsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VzLm1hcChyZWxlYXNlID0+ICh7XG4gICAgc2x1Zzogc2x1Z2lmeShyZWxlYXNlLnRhZ19uYW1lKSxcbiAgICB0aXRsZTogcmVsZWFzZS50YWdfbmFtZSxcbiAgICBkYXRlOiByZWxlYXNlLnB1Ymxpc2hlZF9hdCA/PyB1bmRlZmluZWQsXG4gICAgYm9keTogKHJlbGVhc2UuYm9keSA/PyBcIlwiKS50cmltKCksXG4gICAgc291cmNlVXJsOiByZWxlYXNlLmh0bWxfdXJsID8/IHVuZGVmaW5lZCxcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHdyYXBGcm9udG1hdHRlcihlbnRyeTogQ2hhbmdlbG9nRW50cnksIHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24pIHtcbiAgY29uc3QgbGluZXMgPSBbXG4gICAgXCItLS1cIixcbiAgICBgdGl0bGU6ICR7ZW50cnkudGl0bGV9YCxcbiAgICBgcGF0aDogJHtzZWN0aW9uLnByZWZpeH0ke2VudHJ5LnNsdWd9L2AsXG4gIF1cbiAgaWYgKGVudHJ5LmRhdGUpIGxpbmVzLnB1c2goYGRhdGU6ICR7ZW50cnkuZGF0ZX1gKVxuICBpZiAoZW50cnkuc291cmNlVXJsKSB7XG4gICAgbGluZXMucHVzaChgc291cmNlVXJsOiAke2VudHJ5LnNvdXJjZVVybH1gLCBcInNvdXJjZUFjdGlvbjogdmlld1wiKVxuICB9XG4gIGxpbmVzLnB1c2goXCItLS1cIiwgXCJcIiwgYCMgJHtlbnRyeS50aXRsZX1gLCBcIlwiLCBwcm9jZXNzQm9keShlbnRyeS5ib2R5KSlcbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIilcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZE1ldGEobWV0YVBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVNZXRhIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgcmVhZEZpbGUobWV0YVBhdGgsIFwidXRmLThcIilcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlTWV0YVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhpc3RzKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGF3YWl0IGFjY2VzcyhwYXRoKVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
-
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
-
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
-
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
-
});
|
|
6
|
-
}
|
|
7
|
-
return path;
|
|
8
|
-
};
|
|
9
|
-
import { dirname, resolve } from "node:path";
|
|
10
|
-
import { pathToFileURL } from "node:url";
|
|
11
|
-
import { defineConfig } from "./define.js";
|
|
12
|
-
/**
|
|
13
|
-
* Load and validate a config file, checking --config/-c CLI arg, then cwd.
|
|
14
|
-
*/
|
|
15
|
-
export async function loadConfig(path) {
|
|
16
|
-
const configIndex = process.argv.findIndex(a => a === "-c" || a === "--config");
|
|
17
|
-
const cliPath = configIndex !== -1 ? process.argv[configIndex + 1] : undefined;
|
|
18
|
-
const resolved = resolve(path ?? cliPath ?? "livemark.config.ts");
|
|
19
|
-
// Cache-bust the ESM import so dev-server restart reloads edits on disk.
|
|
20
|
-
const url = `${pathToFileURL(resolved).href}?t=${Date.now()}`;
|
|
21
|
-
const module = await import(__rewriteRelativeImportExtension(url));
|
|
22
|
-
const input = defineConfig(module.default);
|
|
23
|
-
return { ...input, root: dirname(resolved), configPath: resolved };
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUl4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTFDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsSUFBYTtJQUM1QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxVQUFVLENBQ3BDLENBQUE7SUFDRCxNQUFNLE9BQU8sR0FBRyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDOUUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksb0JBQW9CLENBQUMsQ0FBQTtJQUNqRSx5RUFBeUU7SUFDekUsTUFBTSxHQUFHLEdBQUcsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFBO0lBQzdELE1BQU0sTUFBTSxHQUE0QixNQUFNLE1BQU0sa0NBQUMsR0FBRyxFQUFDLENBQUE7SUFDekQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFxQyxDQUFDLENBQUE7SUFDeEUsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFBO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCJcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgeyBVc2VyQ29uZmlnIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIi4vZGVmaW5lLnRzXCJcblxuLyoqXG4gKiBMb2FkIGFuZCB2YWxpZGF0ZSBhIGNvbmZpZyBmaWxlLCBjaGVja2luZyAtLWNvbmZpZy8tYyBDTEkgYXJnLCB0aGVuIGN3ZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDb25maWcocGF0aD86IHN0cmluZyk6IFByb21pc2U8Q29uZmlnPiB7XG4gIGNvbnN0IGNvbmZpZ0luZGV4ID0gcHJvY2Vzcy5hcmd2LmZpbmRJbmRleChcbiAgICBhID0+IGEgPT09IFwiLWNcIiB8fCBhID09PSBcIi0tY29uZmlnXCIsXG4gIClcbiAgY29uc3QgY2xpUGF0aCA9IGNvbmZpZ0luZGV4ICE9PSAtMSA/IHByb2Nlc3MuYXJndltjb25maWdJbmRleCArIDFdIDogdW5kZWZpbmVkXG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZShwYXRoID8/IGNsaVBhdGggPz8gXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgLy8gQ2FjaGUtYnVzdCB0aGUgRVNNIGltcG9ydCBzbyBkZXYtc2VydmVyIHJlc3RhcnQgcmVsb2FkcyBlZGl0cyBvbiBkaXNrLlxuICBjb25zdCB1cmwgPSBgJHtwYXRoVG9GaWxlVVJMKHJlc29sdmVkKS5ocmVmfT90PSR7RGF0ZS5ub3coKX1gXG4gIGNvbnN0IG1vZHVsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBhd2FpdCBpbXBvcnQodXJsKVxuICBjb25zdCBpbnB1dCA9IGRlZmluZUNvbmZpZyhtb2R1bGUuZGVmYXVsdCBhcyB6LmlucHV0PHR5cGVvZiBVc2VyQ29uZmlnPilcbiAgcmV0dXJuIHsgLi4uaW5wdXQsIHJvb3Q6IGRpcm5hbWUocmVzb2x2ZWQpLCBjb25maWdQYXRoOiByZXNvbHZlZCB9XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { temporaryDirectoryTask } from "tempy";
|
|
4
|
-
import { describe, expect, it } from "vite-plus/test";
|
|
5
|
-
import { loadConfig } from "./load.js";
|
|
6
|
-
describe("loadConfig", () => {
|
|
7
|
-
it("should throw when no config file exists", async () => {
|
|
8
|
-
await expect(loadConfig("/nonexistent/config.ts")).rejects.toThrow();
|
|
9
|
-
});
|
|
10
|
-
it("should load config from explicit path", () => temporaryDirectoryTask(async (tmpDir) => {
|
|
11
|
-
const configPath = join(tmpDir, "livemark.config.ts");
|
|
12
|
-
fs.writeFileSync(configPath, 'export default { include: "articles/**/*.mdx" }\n');
|
|
13
|
-
const config = await loadConfig(configPath);
|
|
14
|
-
expect(config.include).toBe("articles/**/*.mdx");
|
|
15
|
-
expect(config.root).toBe(tmpDir);
|
|
16
|
-
}));
|
|
17
|
-
it("should apply defaults when fields are omitted", () => temporaryDirectoryTask(async (tmpDir) => {
|
|
18
|
-
const configPath = join(tmpDir, "livemark.config.ts");
|
|
19
|
-
fs.writeFileSync(configPath, "export default {}\n");
|
|
20
|
-
const config = await loadConfig(configPath);
|
|
21
|
-
expect(config.include).toBe("**/*.md");
|
|
22
|
-
expect(config.title).toBe("Livemark");
|
|
23
|
-
}));
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc291cmNlL2FjdGlvbnMvY29uZmlnL2xvYWQudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV0QyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUMxQixFQUFFLENBQUMseUNBQXlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkQsTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDdEUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFLENBQy9DLHNCQUFzQixDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtRQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDckQsRUFBRSxDQUFDLGFBQWEsQ0FDZCxVQUFVLEVBQ1YsbURBQW1ELENBQ3BELENBQUE7UUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFTCxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFLENBQ3ZELHNCQUFzQixDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtRQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDckQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUscUJBQXFCLENBQUMsQ0FBQTtRQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ1AsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayB9IGZyb20gXCJ0ZW1weVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSBcIi4vbG9hZC50c1wiXG5cbmRlc2NyaWJlKFwibG9hZENvbmZpZ1wiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIHRocm93IHdoZW4gbm8gY29uZmlnIGZpbGUgZXhpc3RzXCIsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleHBlY3QobG9hZENvbmZpZyhcIi9ub25leGlzdGVudC9jb25maWcudHNcIikpLnJlamVjdHMudG9UaHJvdygpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbG9hZCBjb25maWcgZnJvbSBleHBsaWNpdCBwYXRoXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyB0bXBEaXIgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4odG1wRGlyLCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgY29uZmlnUGF0aCxcbiAgICAgICAgJ2V4cG9ydCBkZWZhdWx0IHsgaW5jbHVkZTogXCJhcnRpY2xlcy8qKi8qLm1keFwiIH1cXG4nLFxuICAgICAgKVxuICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZyhjb25maWdQYXRoKVxuICAgICAgZXhwZWN0KGNvbmZpZy5pbmNsdWRlKS50b0JlKFwiYXJ0aWNsZXMvKiovKi5tZHhcIilcbiAgICAgIGV4cGVjdChjb25maWcucm9vdCkudG9CZSh0bXBEaXIpXG4gICAgfSkpXG5cbiAgaXQoXCJzaG91bGQgYXBwbHkgZGVmYXVsdHMgd2hlbiBmaWVsZHMgYXJlIG9taXR0ZWRcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHRtcERpciA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbih0bXBEaXIsIFwibGl2ZW1hcmsuY29uZmlnLnRzXCIpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGNvbmZpZ1BhdGgsIFwiZXhwb3J0IGRlZmF1bHQge31cXG5cIilcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoY29uZmlnUGF0aClcbiAgICAgIGV4cGVjdChjb25maWcuaW5jbHVkZSkudG9CZShcIioqLyoubWRcIilcbiAgICAgIGV4cGVjdChjb25maWcudGl0bGUpLnRvQmUoXCJMaXZlbWFya1wiKVxuICAgIH0pKVxufSlcbiJdfQ==
|
package/target/commands/build.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { createBuilder } from "vite";
|
|
4
|
-
const configFile = join(import.meta.dirname, "..", "..", "source", "vite.config.ts");
|
|
5
|
-
/**
|
|
6
|
-
* Build the site for production.
|
|
7
|
-
*/
|
|
8
|
-
export const build = new Command("build")
|
|
9
|
-
.description("Build the site for production")
|
|
10
|
-
.action(async () => {
|
|
11
|
-
const builder = await createBuilder({ configFile });
|
|
12
|
-
await builder.buildApp();
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQ25CLElBQUksRUFDSixJQUFJLEVBQ0osUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ3RDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQztLQUM1QyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDakIsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0FBQzFCLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIlxuaW1wb3J0IHsgY3JlYXRlQnVpbGRlciB9IGZyb20gXCJ2aXRlXCJcblxuY29uc3QgY29uZmlnRmlsZSA9IGpvaW4oXG4gIGltcG9ydC5tZXRhLmRpcm5hbWUsXG4gIFwiLi5cIixcbiAgXCIuLlwiLFxuICBcInNvdXJjZVwiLFxuICBcInZpdGUuY29uZmlnLnRzXCIsXG4pXG5cbi8qKlxuICogQnVpbGQgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZCA9IG5ldyBDb21tYW5kKFwiYnVpbGRcIilcbiAgLmRlc2NyaXB0aW9uKFwiQnVpbGQgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb25cIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIoeyBjb25maWdGaWxlIH0pXG4gICAgYXdhaXQgYnVpbGRlci5idWlsZEFwcCgpXG4gIH0pXG4iXX0=
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { Command } from "commander";
|
|
4
|
-
import pc from "picocolors";
|
|
5
|
-
import { OVERRIDE_SUBDIRS } from "../settings.js";
|
|
6
|
-
const defaultsRoot = join(import.meta.dirname, "..", "..", "source");
|
|
7
|
-
/**
|
|
8
|
-
* List or copy overridable livemark files into `.livemark/`.
|
|
9
|
-
*
|
|
10
|
-
* Without an argument, prints every file you can shadow. With a path, copies
|
|
11
|
-
* the default from the livemark package into `.livemark/<path>`; fails if the
|
|
12
|
-
* destination already exists.
|
|
13
|
-
*/
|
|
14
|
-
export const escape = new Command("escape")
|
|
15
|
-
.description("List or copy overridable livemark files into .livemark/")
|
|
16
|
-
.argument("[path]", "path relative to .livemark/ (e.g. components/Footer.tsx)")
|
|
17
|
-
.action((relPath) => {
|
|
18
|
-
if (!relPath) {
|
|
19
|
-
for (const file of listOverridable())
|
|
20
|
-
console.log(file);
|
|
21
|
-
console.log(pc.dim("\nRun 'livemark escape <path>' to copy a file into .livemark/"));
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const [first] = relPath.split("/");
|
|
25
|
-
if (!first || !OVERRIDE_SUBDIRS.includes(first) || relPath.includes("..")) {
|
|
26
|
-
console.error(pc.red(`Error: '${relPath}' is not under an overridable subdir (${OVERRIDE_SUBDIRS.join(", ")})`));
|
|
27
|
-
process.exit(1);
|
|
28
|
-
}
|
|
29
|
-
const src = join(defaultsRoot, relPath);
|
|
30
|
-
if (!existsSync(src) || !statSync(src).isFile()) {
|
|
31
|
-
console.error(pc.red(`Error: '${relPath}' is not a livemark file`));
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
const dest = join(process.cwd(), ".livemark", relPath);
|
|
35
|
-
if (existsSync(dest)) {
|
|
36
|
-
console.error(pc.red(`Error: .livemark/${relPath} already exists`));
|
|
37
|
-
process.exit(1);
|
|
38
|
-
}
|
|
39
|
-
mkdirSync(dirname(dest), { recursive: true });
|
|
40
|
-
writeFileSync(dest, readFileSync(src));
|
|
41
|
-
console.log(`Copied ${pc.dim(relPath)} → ${pc.green(`.livemark/${relPath}`)}`);
|
|
42
|
-
});
|
|
43
|
-
function listOverridable() {
|
|
44
|
-
const files = [];
|
|
45
|
-
for (const subdir of OVERRIDE_SUBDIRS) {
|
|
46
|
-
const dir = join(defaultsRoot, subdir);
|
|
47
|
-
if (!existsSync(dir))
|
|
48
|
-
continue;
|
|
49
|
-
for (const entry of readdirSync(dir)) {
|
|
50
|
-
if (statSync(join(dir, entry)).isFile())
|
|
51
|
-
files.push(`${subdir}/${entry}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return files.sort();
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbW1hbmRzL2VzY2FwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUE7QUFDaEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFakQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBRXBFOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUM7S0FDeEMsV0FBVyxDQUFDLHlEQUF5RCxDQUFDO0tBQ3RFLFFBQVEsQ0FDUCxRQUFRLEVBQ1IsMERBQTBELENBQzNEO0tBQ0EsTUFBTSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO0lBQzNCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLEtBQUssTUFBTSxJQUFJLElBQUksZUFBZSxFQUFFO1lBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2RCxPQUFPLENBQUMsR0FBRyxDQUNULEVBQUUsQ0FBQyxHQUFHLENBQUMsK0RBQStELENBQUMsQ0FDeEUsQ0FBQTtRQUNELE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUUsT0FBTyxDQUFDLEtBQUssQ0FDWCxFQUFFLENBQUMsR0FBRyxDQUNKLFdBQVcsT0FBTyx5Q0FBeUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQzFGLENBQ0YsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLE9BQU8sMEJBQTBCLENBQUMsQ0FBQyxDQUFBO1FBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3RELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLG9CQUFvQixPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQTtRQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDN0MsYUFBYSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUNULFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUNsRSxDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFSixTQUFTLGVBQWU7SUFDdEIsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQzFCLEtBQUssTUFBTSxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQUUsU0FBUTtRQUM5QixLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIG1rZGlyU3luYyxcbiAgcmVhZGRpclN5bmMsXG4gIHJlYWRGaWxlU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCBwYyBmcm9tIFwicGljb2NvbG9yc1wiXG5pbXBvcnQgeyBPVkVSUklERV9TVUJESVJTIH0gZnJvbSBcIi4uL3NldHRpbmdzLnRzXCJcblxuY29uc3QgZGVmYXVsdHNSb290ID0gam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJzb3VyY2VcIilcblxuLyoqXG4gKiBMaXN0IG9yIGNvcHkgb3ZlcnJpZGFibGUgbGl2ZW1hcmsgZmlsZXMgaW50byBgLmxpdmVtYXJrL2AuXG4gKlxuICogV2l0aG91dCBhbiBhcmd1bWVudCwgcHJpbnRzIGV2ZXJ5IGZpbGUgeW91IGNhbiBzaGFkb3cuIFdpdGggYSBwYXRoLCBjb3BpZXNcbiAqIHRoZSBkZWZhdWx0IGZyb20gdGhlIGxpdmVtYXJrIHBhY2thZ2UgaW50byBgLmxpdmVtYXJrLzxwYXRoPmA7IGZhaWxzIGlmIHRoZVxuICogZGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGUgPSBuZXcgQ29tbWFuZChcImVzY2FwZVwiKVxuICAuZGVzY3JpcHRpb24oXCJMaXN0IG9yIGNvcHkgb3ZlcnJpZGFibGUgbGl2ZW1hcmsgZmlsZXMgaW50byAubGl2ZW1hcmsvXCIpXG4gIC5hcmd1bWVudChcbiAgICBcIltwYXRoXVwiLFxuICAgIFwicGF0aCByZWxhdGl2ZSB0byAubGl2ZW1hcmsvIChlLmcuIGNvbXBvbmVudHMvRm9vdGVyLnRzeClcIixcbiAgKVxuICAuYWN0aW9uKChyZWxQYXRoPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFyZWxQYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgbGlzdE92ZXJyaWRhYmxlKCkpIGNvbnNvbGUubG9nKGZpbGUpXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgcGMuZGltKFwiXFxuUnVuICdsaXZlbWFyayBlc2NhcGUgPHBhdGg+JyB0byBjb3B5IGEgZmlsZSBpbnRvIC5saXZlbWFyay9cIiksXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBbZmlyc3RdID0gcmVsUGF0aC5zcGxpdChcIi9cIilcbiAgICBpZiAoIWZpcnN0IHx8ICFPVkVSUklERV9TVUJESVJTLmluY2x1ZGVzKGZpcnN0KSB8fCByZWxQYXRoLmluY2x1ZGVzKFwiLi5cIikpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIHBjLnJlZChcbiAgICAgICAgICBgRXJyb3I6ICcke3JlbFBhdGh9JyBpcyBub3QgdW5kZXIgYW4gb3ZlcnJpZGFibGUgc3ViZGlyICgke09WRVJSSURFX1NVQkRJUlMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuXG4gICAgY29uc3Qgc3JjID0gam9pbihkZWZhdWx0c1Jvb3QsIHJlbFBhdGgpXG4gICAgaWYgKCFleGlzdHNTeW5jKHNyYykgfHwgIXN0YXRTeW5jKHNyYykuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocGMucmVkKGBFcnJvcjogJyR7cmVsUGF0aH0nIGlzIG5vdCBhIGxpdmVtYXJrIGZpbGVgKSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cblxuICAgIGNvbnN0IGRlc3QgPSBqb2luKHByb2Nlc3MuY3dkKCksIFwiLmxpdmVtYXJrXCIsIHJlbFBhdGgpXG4gICAgaWYgKGV4aXN0c1N5bmMoZGVzdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocGMucmVkKGBFcnJvcjogLmxpdmVtYXJrLyR7cmVsUGF0aH0gYWxyZWFkeSBleGlzdHNgKSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cblxuICAgIG1rZGlyU3luYyhkaXJuYW1lKGRlc3QpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgIHdyaXRlRmlsZVN5bmMoZGVzdCwgcmVhZEZpbGVTeW5jKHNyYykpXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgQ29waWVkICR7cGMuZGltKHJlbFBhdGgpfSDihpIgJHtwYy5ncmVlbihgLmxpdmVtYXJrLyR7cmVsUGF0aH1gKX1gLFxuICAgIClcbiAgfSlcblxuZnVuY3Rpb24gbGlzdE92ZXJyaWRhYmxlKCkge1xuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSBbXVxuICBmb3IgKGNvbnN0IHN1YmRpciBvZiBPVkVSUklERV9TVUJESVJTKSB7XG4gICAgY29uc3QgZGlyID0gam9pbihkZWZhdWx0c1Jvb3QsIHN1YmRpcilcbiAgICBpZiAoIWV4aXN0c1N5bmMoZGlyKSkgY29udGludWVcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlYWRkaXJTeW5jKGRpcikpIHtcbiAgICAgIGlmIChzdGF0U3luYyhqb2luKGRpciwgZW50cnkpKS5pc0ZpbGUoKSkgZmlsZXMucHVzaChgJHtzdWJkaXJ9LyR7ZW50cnl9YClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGVzLnNvcnQoKVxufVxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { preview as vitePreview } from "vite";
|
|
4
|
-
const configFile = join(import.meta.dirname, "..", "..", "source", "vite.config.ts");
|
|
5
|
-
/**
|
|
6
|
-
* Preview the production build locally.
|
|
7
|
-
*/
|
|
8
|
-
export const preview = new Command("preview")
|
|
9
|
-
.description("Preview the production build locally")
|
|
10
|
-
.action(async () => {
|
|
11
|
-
const server = await vitePreview({
|
|
12
|
-
configFile,
|
|
13
|
-
preview: { port: 8000, host: true },
|
|
14
|
-
});
|
|
15
|
-
server.printUrls();
|
|
16
|
-
server.bindCLIShortcuts({ print: true });
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21tYW5kcy9wcmV2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFDbkIsSUFBSSxFQUNKLElBQUksRUFDSixRQUFRLEVBQ1IsZ0JBQWdCLENBQ2pCLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDMUMsV0FBVyxDQUFDLHNDQUFzQyxDQUFDO0tBQ25ELE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQztRQUMvQixVQUFVO1FBQ1YsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0tBQ3BDLENBQUMsQ0FBQTtJQUNGLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUMxQyxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCB7IHByZXZpZXcgYXMgdml0ZVByZXZpZXcgfSBmcm9tIFwidml0ZVwiXG5cbmNvbnN0IGNvbmZpZ0ZpbGUgPSBqb2luKFxuICBpbXBvcnQubWV0YS5kaXJuYW1lLFxuICBcIi4uXCIsXG4gIFwiLi5cIixcbiAgXCJzb3VyY2VcIixcbiAgXCJ2aXRlLmNvbmZpZy50c1wiLFxuKVxuXG4vKipcbiAqIFByZXZpZXcgdGhlIHByb2R1Y3Rpb24gYnVpbGQgbG9jYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZXZpZXcgPSBuZXcgQ29tbWFuZChcInByZXZpZXdcIilcbiAgLmRlc2NyaXB0aW9uKFwiUHJldmlldyB0aGUgcHJvZHVjdGlvbiBidWlsZCBsb2NhbGx5XCIpXG4gIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHZpdGVQcmV2aWV3KHtcbiAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICBwcmV2aWV3OiB7IHBvcnQ6IDgwMDAsIGhvc3Q6IHRydWUgfSxcbiAgICB9KVxuICAgIHNlcnZlci5wcmludFVybHMoKVxuICAgIHNlcnZlci5iaW5kQ0xJU2hvcnRjdXRzKHsgcHJpbnQ6IHRydWUgfSlcbiAgfSlcbiJdfQ==
|
package/target/commands/start.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { createServer } from "vite";
|
|
4
|
-
const configFile = join(import.meta.dirname, "..", "..", "source", "vite.config.ts");
|
|
5
|
-
/**
|
|
6
|
-
* Start a development server.
|
|
7
|
-
*/
|
|
8
|
-
export const start = new Command("start")
|
|
9
|
-
.description("Start a live server")
|
|
10
|
-
.action(async () => {
|
|
11
|
-
const server = await createServer({
|
|
12
|
-
configFile,
|
|
13
|
-
server: { port: 8000, host: true },
|
|
14
|
-
});
|
|
15
|
-
await server.listen();
|
|
16
|
-
server.printUrls();
|
|
17
|
-
server.bindCLIShortcuts({ print: true });
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tbWFuZHMvc3RhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQ25CLElBQUksRUFDSixJQUFJLEVBQ0osUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ3RDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztLQUNsQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUM7UUFDaEMsVUFBVTtRQUNWLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtLQUNuQyxDQUFDLENBQUE7SUFDRixNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNyQixNQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDMUMsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tIFwidml0ZVwiXG5cbmNvbnN0IGNvbmZpZ0ZpbGUgPSBqb2luKFxuICBpbXBvcnQubWV0YS5kaXJuYW1lLFxuICBcIi4uXCIsXG4gIFwiLi5cIixcbiAgXCJzb3VyY2VcIixcbiAgXCJ2aXRlLmNvbmZpZy50c1wiLFxuKVxuXG4vKipcbiAqIFN0YXJ0IGEgZGV2ZWxvcG1lbnQgc2VydmVyLlxuICovXG5leHBvcnQgY29uc3Qgc3RhcnQgPSBuZXcgQ29tbWFuZChcInN0YXJ0XCIpXG4gIC5kZXNjcmlwdGlvbihcIlN0YXJ0IGEgbGl2ZSBzZXJ2ZXJcIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgY3JlYXRlU2VydmVyKHtcbiAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICBzZXJ2ZXI6IHsgcG9ydDogODAwMCwgaG9zdDogdHJ1ZSB9LFxuICAgIH0pXG4gICAgYXdhaXQgc2VydmVyLmxpc3RlbigpXG4gICAgc2VydmVyLnByaW50VXJscygpXG4gICAgc2VydmVyLmJpbmRDTElTaG9ydGN1dHMoeyBwcmludDogdHJ1ZSB9KVxuICB9KVxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Link, useLocation, useMatches } from "@tanstack/react-router";
|
|
3
|
-
import { currentSection } from "../content/article.js";
|
|
4
|
-
export function Breadcrumbs() {
|
|
5
|
-
const matches = useMatches();
|
|
6
|
-
const last = matches[matches.length - 1];
|
|
7
|
-
const loaderData = last?.loaderData;
|
|
8
|
-
const pathname = useLocation({ select: l => l.pathname });
|
|
9
|
-
const section = currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`);
|
|
10
|
-
return (_jsxs("nav", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [
|
|
11
|
-
_jsx(Link, { to: "/", className: "hover:text-foreground transition-colors", children: section?.title ?? import.meta.env.CONFIG.title }), _jsx("span", { children: "/" }), loaderData?.title && (_jsx("span", { className: "text-foreground font-medium", children: loaderData.title }))] }));
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJlYWRjcnVtYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9CcmVhZGNydW1icy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUV0RCxNQUFNLFVBQVUsV0FBVztJQUN6QixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQTtJQUM1QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEVBQUUsVUFBNEMsQ0FBQTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFdkUsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLHlEQUF5RDtZQUN0RSxLQUFDLElBQUksSUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLFNBQVMsRUFBQyx5Q0FBeUMsWUFDN0QsT0FBTyxFQUFFLEtBQUssSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssR0FDMUMsRUFDUCwrQkFBYyxFQUNiLFVBQVUsRUFBRSxLQUFLLElBQUksQ0FDcEIsZUFBTSxTQUFTLEVBQUMsNkJBQTZCLFlBQUUsVUFBVSxDQUFDLEtBQUssR0FBUSxDQUN4RSxJQUNHLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2hlcyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCJcbmltcG9ydCB7IGN1cnJlbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbnRlbnQvYXJ0aWNsZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBCcmVhZGNydW1icygpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKVxuICBjb25zdCBsYXN0ID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IGxvYWRlckRhdGEgPSBsYXN0Py5sb2FkZXJEYXRhIGFzIHsgdGl0bGU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcbiAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKGAvJHtwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2ApXG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgIDxMaW5rIHRvPVwiL1wiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICB7c2VjdGlvbj8udGl0bGUgPz8gaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy50aXRsZX1cbiAgICAgIDwvTGluaz5cbiAgICAgIDxzcGFuPi88L3NwYW4+XG4gICAgICB7bG9hZGVyRGF0YT8udGl0bGUgJiYgKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWZvcmVncm91bmQgZm9udC1tZWRpdW1cIj57bG9hZGVyRGF0YS50aXRsZX08L3NwYW4+XG4gICAgICApfVxuICAgIDwvbmF2PlxuICApXG59XG4iXX0=
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Link, useLocation, useMatch } from "@tanstack/react-router";
|
|
3
|
-
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
4
|
-
import { ExternalLink } from "lucide-react";
|
|
5
|
-
import { currentSection, sectionFirstArticle, sectionFlatArticles, sortedArticles, } from "../content/article.js";
|
|
6
|
-
import { DynamicIcon } from "../helpers/dynamic-icon.js";
|
|
7
|
-
import { sectionIcon } from "../helpers/section.js";
|
|
8
|
-
import { SidebarInset, SidebarProvider, SidebarTrigger, useSidebar, } from "../elements/sidebar.js";
|
|
9
|
-
import { BackToTop } from "./BackToTop.js";
|
|
10
|
-
import { Banner } from "./Banner.js";
|
|
11
|
-
import { Sidebar } from "./Sidebar.js";
|
|
12
|
-
import { SiteTitle } from "./SiteTitle.js";
|
|
13
|
-
function splatFor(pathname) {
|
|
14
|
-
return { _splat: pathname.replace(/^\/|\/$/g, "") };
|
|
15
|
-
}
|
|
16
|
-
export function Layout(props) {
|
|
17
|
-
const pathname = useLocation({ select: l => l.pathname });
|
|
18
|
-
const articleRoute = useMatch({ from: "/$", shouldThrow: false });
|
|
19
|
-
const activeSection = articleRoute
|
|
20
|
-
? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
|
|
21
|
-
: undefined;
|
|
22
|
-
useHotkey("J", () => window.scrollBy({ top: window.innerHeight * 0.8, behavior: "smooth" }));
|
|
23
|
-
useHotkey("K", () => window.scrollBy({ top: -window.innerHeight * 0.8, behavior: "smooth" }));
|
|
24
|
-
const sections = import.meta.env.CONFIG.sections;
|
|
25
|
-
const header = (_jsxs("header", { className: "sticky top-0 z-20 flex h-16 shrink-0 items-center border-b bg-background", children: [
|
|
26
|
-
_jsx("div", { className: `flex items-center self-stretch pl-4 ${props.withSidebar ? "pr-4" : "md:pr-20"}`, children: props.withSidebar ? (_jsxs(_Fragment, { children: [
|
|
27
|
-
_jsx("div", { className: "hidden md:flex", children: _jsx(SidebarTrigger, {}) }), _jsx(Link, { to: "/", className: "md:hidden flex items-center gap-2", children: _jsx(SiteTitle, {}) })
|
|
28
|
-
] })) : (_jsx(Link, { to: "/", className: "flex items-center gap-2", children: _jsx(SiteTitle, {}) })) }), _jsxs("div", { className: "hidden md:flex flex-1 items-center gap-8 self-stretch px-6 text-sm", children: [sections?.length ? (sections
|
|
29
|
-
.filter(section => section.position === "header")
|
|
30
|
-
.map(section => {
|
|
31
|
-
const isActive = activeSection?.prefix === section.prefix;
|
|
32
|
-
const target = section.type === "blog" || section.type === "changelog"
|
|
33
|
-
? section.prefix
|
|
34
|
-
: sectionFirstArticle.get(section.prefix);
|
|
35
|
-
const latestVersion = section.type === "changelog" && section.version
|
|
36
|
-
? sortedArticles.find(a => a.path === sectionFlatArticles.get(section.prefix)?.[0])?.title
|
|
37
|
-
: undefined;
|
|
38
|
-
return (_jsxs(Link, { to: target === "/" ? "/" : "/$", params: target && target !== "/" ? splatFor(target) : {}, className: `inline-flex items-center gap-1.5 text-foreground ${isActive
|
|
39
|
-
? "font-medium border-b-2 border-foreground pb-0.5 -mb-0.5"
|
|
40
|
-
: "opacity-80 hover:opacity-100 transition-opacity"}`, children: [
|
|
41
|
-
_jsx(DynamicIcon, { name: sectionIcon(section), className: "size-3.5" }), _jsxs("span", { children: [section.title, latestVersion && (_jsxs("span", { className: "opacity-80", children: [" (", latestVersion, ")"] }))] })
|
|
42
|
-
] }, section.prefix));
|
|
43
|
-
})) : (_jsx(Link, { to: "/", className: "text-foreground font-medium underline underline-offset-4", children: "Docs" })), import.meta.env.CONFIG.links
|
|
44
|
-
?.filter(link => link.position === "header" &&
|
|
45
|
-
(!link.prefix || link.prefix === activeSection?.prefix))
|
|
46
|
-
.map(link => (_jsxs("a", { href: link.url, target: "_blank", rel: "noopener noreferrer", className: "text-foreground opacity-80 hover:opacity-100 transition-opacity", children: [link.icon && (_jsx(DynamicIcon, { name: link.icon, className: "inline size-3.5 align-[-0.125em]" })), " ", link.title, " ", _jsx(ExternalLink, { className: "inline size-3 align-[-0.125em]" })
|
|
47
|
-
] }, link.url))), _jsx(Banner, {})
|
|
48
|
-
] }), _jsx("div", { className: "md:hidden ml-auto pr-2", children: _jsx(SidebarTrigger, {}) })
|
|
49
|
-
] }));
|
|
50
|
-
return (_jsx(SidebarProvider, { defaultOpen: !!props.withSidebar, children: _jsx(SidebarShell, { withSidebar: props.withSidebar, header: header, children: props.children }) }, props.withSidebar ? "sidebar" : "mini"));
|
|
51
|
-
}
|
|
52
|
-
function SidebarShell(props) {
|
|
53
|
-
const { isMobile, setOpenMobile } = useSidebar();
|
|
54
|
-
const onClick = (event) => {
|
|
55
|
-
if (!isMobile)
|
|
56
|
-
return;
|
|
57
|
-
if (event.target.closest("a"))
|
|
58
|
-
setOpenMobile(false);
|
|
59
|
-
};
|
|
60
|
-
return (_jsxs("div", { style: { display: "contents" }, onClick: onClick, children: [
|
|
61
|
-
_jsx(Sidebar, { withSidebar: props.withSidebar }), _jsxs(SidebarInset, { children: [props.header, _jsx("main", { className: "flex-1", children: props.children }), _jsx(BackToTop, {})
|
|
62
|
-
] })
|
|
63
|
-
] }));
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFBO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNkIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBRTNDLFNBQVMsUUFBUSxDQUFDLFFBQWdCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUd0QjtJQUNDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVB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S0FBSyxDQUFDLFFBQVEsR0FBUSxFQUNoRCxLQUFDLFNBQVMsS0FBRztvQkFDQTtZQUNYLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHsgRXh0ZXJuYWxMaW5rIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZpcnN0QXJ0aWNsZSxcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcbmltcG9ydCB7IHNlY3Rpb25JY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFySW5zZXQsXG4gIFNpZGViYXJQcm92aWRlcixcbiAgU2lkZWJhclRyaWdnZXIsXG4gIHVzZVNpZGViYXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy9zaWRlYmFyLnRzeFwiXG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tIFwiLi9CYWNrVG9Ub3AudHN4XCJcbmltcG9ydCB7IEJhbm5lciB9IGZyb20gXCIuL0Jhbm5lci50c3hcIlxuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gXCIuL1NpZGViYXIudHN4XCJcbmltcG9ydCB7IFNpdGVUaXRsZSB9IGZyb20gXCIuL1NpdGVUaXRsZS50c3hcIlxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExheW91dChwcm9wczoge1xuICB3aXRoU2lkZWJhcj86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuXG4gIHVzZUhvdGtleShcIkpcIiwgKCkgPT5cbiAgICB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcbiAgdXNlSG90a2V5KFwiS1wiLCAoKSA9PlxuICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogLXdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcblxuICBjb25zdCBzZWN0aW9ucyA9IGltcG9ydC5tZXRhLmVudi5DT05GSUcuc2VjdGlvbnNcblxuICBjb25zdCBoZWFkZXIgPSAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJzdGlja3kgdG9wLTAgei0yMCBmbGV4IGgtMTYgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGJvcmRlci1iIGJnLWJhY2tncm91bmRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHBsLTQgJHtwcm9wcy53aXRoU2lkZWJhciA/IFwicHItNFwiIDogXCJtZDpwci0yMFwifWB9XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy53aXRoU2lkZWJhciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleFwiPlxuICAgICAgICAgICAgICA8U2lkZWJhclRyaWdnZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPExpbmsgdG89XCIvXCIgY2xhc3NOYW1lPVwibWQ6aGlkZGVuIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGluayB0bz1cIi9cIiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPFNpdGVUaXRsZSAvPlxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyIGdhcC04IHNlbGYtc3RyZXRjaCBweC02IHRleHQtc21cIj5cbiAgICAgICAge3NlY3Rpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoc2VjdGlvbiA9PiBzZWN0aW9uLnBvc2l0aW9uID09PSBcImhlYWRlclwiKVxuICAgICAgICAgICAgLm1hcChzZWN0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVTZWN0aW9uPy5wcmVmaXggPT09IHNlY3Rpb24ucHJlZml4XG4gICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbi50eXBlID09PSBcImJsb2dcIiB8fCBzZWN0aW9uLnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgICAgICAgICAgID8gc2VjdGlvbi5wcmVmaXhcbiAgICAgICAgICAgICAgICAgIDogc2VjdGlvbkZpcnN0QXJ0aWNsZS5nZXQoc2VjdGlvbi5wcmVmaXgpXG4gICAgICAgICAgICAgIGNvbnN0IGxhdGVzdFZlcnNpb24gPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24udHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIiAmJiBzZWN0aW9uLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgID8gc29ydGVkQXJ0aWNsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICBhID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhLnBhdGggPT09IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHNlY3Rpb24ucHJlZml4KT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICApPy50aXRsZVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAga2V5PXtzZWN0aW9uLnByZWZpeH1cbiAgICAgICAgICAgICAgICAgIHRvPXt0YXJnZXQgPT09IFwiL1wiID8gXCIvXCIgOiBcIi8kXCJ9XG4gICAgICAgICAgICAgICAgICBwYXJhbXM9e3RhcmdldCAmJiB0YXJnZXQgIT09IFwiL1wiID8gc3BsYXRGb3IodGFyZ2V0KSA6IHt9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1mb3JlZ3JvdW5kICR7XG4gICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImZvbnQtbWVkaXVtIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmQgcGItMC41IC1tYi0wLjVcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT17c2VjdGlvbkljb24oc2VjdGlvbil9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpemUtMy41XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3NlY3Rpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHtsYXRlc3RWZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTgwXCI+ICh7bGF0ZXN0VmVyc2lvbn0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCIvXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSB1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb2NzXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgICB7aW1wb3J0Lm1ldGEuZW52LkNPTkZJRy5saW5rc1xuICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgbGluayA9PlxuICAgICAgICAgICAgICBsaW5rLnBvc2l0aW9uID09PSBcImhlYWRlclwiICYmXG4gICAgICAgICAgICAgICghbGluay5wcmVmaXggfHwgbGluay5wcmVmaXggPT09IGFjdGl2ZVNlY3Rpb24/LnByZWZpeCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAobGluayA9PiAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBrZXk9e2xpbmsudXJsfVxuICAgICAgICAgICAgICBocmVmPXtsaW5rLnVybH1cbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsaW5rLmljb24gJiYgKFxuICAgICAgICAgICAgICAgIDxEeW5hbWljSWNvblxuICAgICAgICAgICAgICAgICAgbmFtZT17bGluay5pY29ufVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lIHNpemUtMy41IGFsaWduLVstMC4xMjVlbV1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9e1wiIFwifVxuICAgICAgICAgICAgICB7bGluay50aXRsZX17XCIgXCJ9XG4gICAgICAgICAgICAgIDxFeHRlcm5hbExpbmsgY2xhc3NOYW1lPVwiaW5saW5lIHNpemUtMyBhbGlnbi1bLTAuMTI1ZW1dXCIgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPEJhbm5lciAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1kOmhpZGRlbiBtbC1hdXRvIHByLTJcIj5cbiAgICAgICAgPFNpZGViYXJUcmlnZ2VyIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNpZGViYXJQcm92aWRlclxuICAgICAga2V5PXtwcm9wcy53aXRoU2lkZWJhciA/IFwic2lkZWJhclwiIDogXCJtaW5pXCJ9XG4gICAgICBkZWZhdWx0T3Blbj17ISFwcm9wcy53aXRoU2lkZWJhcn1cbiAgICA+XG4gICAgICA8U2lkZWJhclNoZWxsIHdpdGhTaWRlYmFyPXtwcm9wcy53aXRoU2lkZWJhcn0gaGVhZGVyPXtoZWFkZXJ9PlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L1NpZGViYXJTaGVsbD5cbiAgICA8L1NpZGViYXJQcm92aWRlcj5cbiAgKVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyU2hlbGwocHJvcHM6IHtcbiAgd2l0aFNpZGViYXI/OiBib29sZWFuXG4gIGhlYWRlcjogUmVhY3QuUmVhY3ROb2RlXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IHsgaXNNb2JpbGUsIHNldE9wZW5Nb2JpbGUgfSA9IHVzZVNpZGViYXIoKVxuICBjb25zdCBvbkNsaWNrID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNNb2JpbGUpIHJldHVyblxuICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFwiYVwiKSkgc2V0T3Blbk1vYmlsZShmYWxzZSlcbiAgfVxuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJjb250ZW50c1wiIH19IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPFNpZGViYXIgd2l0aFNpZGViYXI9e3Byb3BzLndpdGhTaWRlYmFyfSAvPlxuICAgICAgPFNpZGViYXJJbnNldD5cbiAgICAgICAge3Byb3BzLmhlYWRlcn1cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xXCI+e3Byb3BzLmNoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPEJhY2tUb1RvcCAvPlxuICAgICAgPC9TaWRlYmFySW5zZXQ+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ==
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Link, useLocation } from "@tanstack/react-router";
|
|
3
|
-
import { ChevronRight } from "lucide-react";
|
|
4
|
-
import { articleGroups, currentSection, sectionArticleGroups, } from "../content/article.js";
|
|
5
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "../elements/collapsible.js";
|
|
6
|
-
import { SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, } from "../elements/sidebar.js";
|
|
7
|
-
import { resolveArticleIcon } from "../helpers/article-icon.js";
|
|
8
|
-
/** Article-tree body slot for the Sidebar shell */
|
|
9
|
-
export function SidebarArticles() {
|
|
10
|
-
const pathname = useLocation({ select: l => l.pathname });
|
|
11
|
-
const configSections = import.meta.env.CONFIG.sections;
|
|
12
|
-
const section = currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`);
|
|
13
|
-
const groups = configSections?.length
|
|
14
|
-
? (sectionArticleGroups.get(section?.prefix ?? "__default__") ??
|
|
15
|
-
articleGroups)
|
|
16
|
-
: articleGroups;
|
|
17
|
-
return (_jsx(_Fragment, { children: groups.map((group, index) => (_jsxs(SidebarGroup, { children: [group.name && (_jsx(SidebarGroupLabel, { className: "uppercase font-mono text-xs tracking-widest", children: group.name })), _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: group.nodes.map(node => (_jsx(NavNode, { node: node, currentPath: pathname }, node.path))) }) })
|
|
18
|
-
] }, group.name ?? `__unnamed-${index}`))) }));
|
|
19
|
-
}
|
|
20
|
-
function splatFor(pathname) {
|
|
21
|
-
return { _splat: pathname.replace(/^\/|\/$/g, "") };
|
|
22
|
-
}
|
|
23
|
-
function isActive(articlePathname, currentPath) {
|
|
24
|
-
const normalized = `/${currentPath.replace(/^\/|\/$/g, "")}/`;
|
|
25
|
-
return articlePathname === normalized;
|
|
26
|
-
}
|
|
27
|
-
function NavNode(props) {
|
|
28
|
-
const { node, currentPath } = props;
|
|
29
|
-
const Icon = resolveArticleIcon(node.icon);
|
|
30
|
-
const active = isActive(node.path, currentPath);
|
|
31
|
-
if (node.children.length === 0) {
|
|
32
|
-
return (_jsx(SidebarMenuItem, { children: _jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx(Link, { to: "/$", params: splatFor(node.path) }), children: [
|
|
33
|
-
_jsx(Icon, { className: "size-4" }), _jsx("span", { children: node.label ?? node.title })
|
|
34
|
-
] }) }));
|
|
35
|
-
}
|
|
36
|
-
return (_jsx(SidebarMenuItem, { children: _jsxs(Collapsible, { defaultOpen: true, className: "group/collapsible", children: [
|
|
37
|
-
_jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx(Link, { to: "/$", params: splatFor(node.path) }), children: [
|
|
38
|
-
_jsx(Icon, { className: "size-4" }), _jsx("span", { children: node.label ?? node.title })
|
|
39
|
-
] }), _jsx(CollapsibleTrigger, { "aria-label": `Toggle ${node.label ?? node.title} submenu`, className: "absolute right-1 top-1.5 p-1 rounded-md hover:bg-sidebar-accent", children: _jsx(ChevronRight, { className: "size-3.5 transition-transform group-data-[open]/collapsible:rotate-90" }) }), _jsx(CollapsibleContent, { children: _jsx(SidebarMenuSub, { children: node.children.map(child => {
|
|
40
|
-
const childIsActive = isActive(child.path, currentPath);
|
|
41
|
-
return (_jsx(SidebarMenuSubItem, { children: _jsx(SidebarMenuSubButton, { isActive: childIsActive, className: childIsActive ? "" : "opacity-75", render: _jsx(Link, { to: "/$", params: splatFor(child.path) }), children: _jsx("span", { children: child.label ?? child.title }) }) }, child.path));
|
|
42
|
-
}) }) })
|
|
43
|
-
] }) }));
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhckFydGljbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2lkZWJhckFydGljbGVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsY0FBYyxFQUNkLG9CQUFvQixHQUNyQixNQUFNLHVCQUF1QixDQUFBO0FBQzlCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLDRCQUE2QixDQUFBO0FBQ3BDLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRy9ELG1EQUFtRDtBQUNuRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUV6RCxNQUFNLGNBQWMsR0FBRyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQTtJQUN0RCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkUsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFFLE1BQU07UUFDbkMsQ0FBQyxDQUFDLENBQUMsb0JBQW9C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QixLQUFDLGtCQUFrQixrQkFDTCxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssVUFBVSxFQUN4RCxTQUFTLEVBQUMsaUVBQWlFLFlBRTNFLEtBQUMsWUFBWSxJQUFDLFNBQVMsRUFBQyx1RUFBdUUsR0FBRyxHQUMvRSxFQUNyQixLQUFDLGtCQUFrQixjQUNqQixLQUFDLGNBQWMsY0FDWixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDekIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUE7NEJBQ3ZELE9BQU8sQ0FDTCxLQUFDLGtCQUFrQixjQUNqQixLQUFDLG9CQUFvQixJQUNuQixRQUFRLEVBQUUsYUFBYSxFQUN2QixTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFDNUMsTUFBTSxFQUFFLEtBQUMsSUFBSSxJQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUksWUFFdEQseUJBQU8sS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFRLEdBQ3BCLElBUEEsS0FBSyxDQUFDLElBQUksQ0FRZCxDQUN0QixDQUFBO3dCQUNILENBQUMsQ0FBQyxHQUNhLEdBQ0U7Z0JBQ1QsR0FDRSxDQUNuQixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmssIHVzZUxvY2F0aW9uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgQ2hldnJvblJpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBhcnRpY2xlR3JvdXBzLFxuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkFydGljbGVHcm91cHMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHtcbiAgQ29sbGFwc2libGUsXG4gIENvbGxhcHNpYmxlQ29udGVudCxcbiAgQ29sbGFwc2libGVUcmlnZ2VyLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvY29sbGFwc2libGUudHN4XCJcbmltcG9ydCB7XG4gIFNpZGViYXJHcm91cCxcbiAgU2lkZWJhckdyb3VwQ29udGVudCxcbiAgU2lkZWJhckdyb3VwTGFiZWwsXG4gIFNpZGViYXJNZW51LFxuICBTaWRlYmFyTWVudUJ1dHRvbixcbiAgU2lkZWJhck1lbnVJdGVtLFxuICBTaWRlYmFyTWVudVN1YixcbiAgU2lkZWJhck1lbnVTdWJCdXR0b24sXG4gIFNpZGViYXJNZW51U3ViSXRlbSxcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL3NpZGViYXIudHN4XCJcbmltcG9ydCB7IHJlc29sdmVBcnRpY2xlSWNvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2FydGljbGUtaWNvbi50c1wiXG5pbXBvcnQgdHlwZSB7IEFydGljbGVOb2RlIH0gZnJvbSBcIi4uL21vZGVscy9hcnRpY2xlLnRzXCJcblxuLyoqIEFydGljbGUtdHJlZSBib2R5IHNsb3QgZm9yIHRoZSBTaWRlYmFyIHNoZWxsICovXG5leHBvcnQgZnVuY3Rpb24gU2lkZWJhckFydGljbGVzKCkge1xuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcblxuICBjb25zdCBjb25maWdTZWN0aW9ucyA9IGltcG9ydC5tZXRhLmVudi5DT05GSUcuc2VjdGlvbnNcbiAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKGAvJHtwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2ApXG4gIGNvbnN0IGdyb3VwcyA9IGNvbmZpZ1NlY3Rpb25zPy5sZW5ndGhcbiAgICA/IChzZWN0aW9uQXJ0aWNsZUdyb3Vwcy5nZXQoc2VjdGlvbj8ucHJlZml4ID8/IFwiX19kZWZhdWx0X19cIikgPz9cbiAgICAgIGFydGljbGVHcm91cHMpXG4gICAgOiBhcnRpY2xlR3JvdXBzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2dyb3Vwcy5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICA8U2lkZWJhckdyb3VwIGtleT17Z3JvdXAubmFtZSA/PyBgX191bm5hbWVkLSR7aW5kZXh9YH0+XG4gICAgICAgICAge2dyb3VwLm5hbWUgJiYgKFxuICAgICAgICAgICAgPFNpZGViYXJHcm91cExhYmVsIGNsYXNzTmFtZT1cInVwcGVyY2FzZSBmb250LW1vbm8gdGV4dC14cyB0cmFja2luZy13aWRlc3RcIj5cbiAgICAgICAgICAgICAge2dyb3VwLm5hbWV9XG4gICAgICAgICAgICA8L1NpZGViYXJHcm91cExhYmVsPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFNpZGViYXJHcm91cENvbnRlbnQ+XG4gICAgICAgICAgICA8U2lkZWJhck1lbnU+XG4gICAgICAgICAgICAgIHtncm91cC5ub2Rlcy5tYXAobm9kZSA9PiAoXG4gICAgICAgICAgICAgICAgPE5hdk5vZGUga2V5PXtub2RlLnBhdGh9IG5vZGU9e25vZGV9IGN1cnJlbnRQYXRoPXtwYXRobmFtZX0gLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NpZGViYXJNZW51PlxuICAgICAgICAgIDwvU2lkZWJhckdyb3VwQ29udGVudD5cbiAgICAgICAgPC9TaWRlYmFyR3JvdXA+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKVxufVxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZnVuY3Rpb24gaXNBY3RpdmUoYXJ0aWNsZVBhdGhuYW1lOiBzdHJpbmcsIGN1cnJlbnRQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGAvJHtjdXJyZW50UGF0aC5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2BcbiAgcmV0dXJuIGFydGljbGVQYXRobmFtZSA9PT0gbm9ybWFsaXplZFxufVxuXG5mdW5jdGlvbiBOYXZOb2RlKHByb3BzOiB7IG5vZGU6IEFydGljbGVOb2RlOyBjdXJyZW50UGF0aDogc3RyaW5nIH0pIHtcbiAgY29uc3QgeyBub2RlLCBjdXJyZW50UGF0aCB9ID0gcHJvcHNcbiAgY29uc3QgSWNvbiA9IHJlc29sdmVBcnRpY2xlSWNvbihub2RlLmljb24pXG4gIGNvbnN0IGFjdGl2ZSA9IGlzQWN0aXZlKG5vZGUucGF0aCwgY3VycmVudFBhdGgpXG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTaWRlYmFyTWVudUl0ZW0+XG4gICAgICAgIDxTaWRlYmFyTWVudUJ1dHRvblxuICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmV9XG4gICAgICAgICAgY2xhc3NOYW1lPXthY3RpdmUgPyBcIlwiIDogXCJvcGFjaXR5LTc1XCJ9XG4gICAgICAgICAgcmVuZGVyPXs8TGluayB0bz1cIi8kXCIgcGFyYW1zPXtzcGxhdEZvcihub2RlLnBhdGgpfSAvPn1cbiAgICAgICAgPlxuICAgICAgICAgIDxJY29uIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICAgPHNwYW4+e25vZGUubGFiZWwgPz8gbm9kZS50aXRsZX08L3NwYW4+XG4gICAgICAgIDwvU2lkZWJhck1lbnVCdXR0b24+XG4gICAgICA8L1NpZGViYXJNZW51SXRlbT5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTaWRlYmFyTWVudUl0ZW0+XG4gICAgICA8Q29sbGFwc2libGUgZGVmYXVsdE9wZW4gY2xhc3NOYW1lPVwiZ3JvdXAvY29sbGFwc2libGVcIj5cbiAgICAgICAgPFNpZGViYXJNZW51QnV0dG9uXG4gICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICByZW5kZXI9ezxMaW5rIHRvPVwiLyRcIiBwYXJhbXM9e3NwbGF0Rm9yKG5vZGUucGF0aCl9IC8+fVxuICAgICAgICA+XG4gICAgICAgICAgPEljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgICA8c3Bhbj57bm9kZS5sYWJlbCA/PyBub2RlLnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgPC9TaWRlYmFyTWVudUJ1dHRvbj5cbiAgICAgICAgPENvbGxhcHNpYmxlVHJpZ2dlclxuICAgICAgICAgIGFyaWEtbGFiZWw9e2BUb2dnbGUgJHtub2RlLmxhYmVsID8/IG5vZGUudGl0bGV9IHN1Ym1lbnVgfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTEgdG9wLTEuNSBwLTEgcm91bmRlZC1tZCBob3ZlcjpiZy1zaWRlYmFyLWFjY2VudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInNpemUtMy41IHRyYW5zaXRpb24tdHJhbnNmb3JtIGdyb3VwLWRhdGEtW29wZW5dL2NvbGxhcHNpYmxlOnJvdGF0ZS05MFwiIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGVUcmlnZ2VyPlxuICAgICAgICA8Q29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDxTaWRlYmFyTWVudVN1Yj5cbiAgICAgICAgICAgIHtub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkSXNBY3RpdmUgPSBpc0FjdGl2ZShjaGlsZC5wYXRoLCBjdXJyZW50UGF0aClcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8U2lkZWJhck1lbnVTdWJJdGVtIGtleT17Y2hpbGQucGF0aH0+XG4gICAgICAgICAgICAgICAgICA8U2lkZWJhck1lbnVTdWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e2NoaWxkSXNBY3RpdmV9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2hpbGRJc0FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXs8TGluayB0bz1cIi8kXCIgcGFyYW1zPXtzcGxhdEZvcihjaGlsZC5wYXRoKX0gLz59XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPntjaGlsZC5sYWJlbCA/PyBjaGlsZC50aXRsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L1NpZGViYXJNZW51U3ViQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU2lkZWJhck1lbnVTdWJJdGVtPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NpZGViYXJNZW51U3ViPlxuICAgICAgICA8L0NvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgPC9TaWRlYmFyTWVudUl0ZW0+XG4gIClcbn1cbiJdfQ==
|