livemark 0.7.1 → 0.8.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/package.json +14 -14
- package/source/actions/changelog/build.ts +245 -0
- package/source/actions/changelog/build.unit.ts +69 -0
- package/source/actions/config/define.ts +11 -0
- package/source/actions/config/define.unit.ts +33 -0
- package/source/actions/config/load.ts +22 -0
- package/source/actions/config/load.unit.ts +30 -0
- package/source/commands/build.ts +21 -0
- package/source/commands/escape.ts +77 -0
- package/source/commands/preview.ts +25 -0
- package/source/commands/start.ts +26 -0
- package/{build/website → source}/components/Article.tsx +12 -2
- package/{build/website → source}/components/Callout.tsx +1 -1
- package/{build/website → source}/components/Layout.tsx +3 -14
- package/{build/website → source}/components/LinkButton.tsx +1 -1
- package/{build/website → source}/components/PageToolbar.tsx +21 -8
- package/{build/website → source}/components/Section.tsx +1 -1
- package/{build/website → source}/components/SectionHeader.tsx +1 -1
- package/{build/website/components/MiniSidebar.tsx → source/components/Sidebar.tsx} +21 -5
- package/{build/website/components/Sidebar.tsx → source/components/SidebarArticles.tsx} +22 -55
- package/source/components/SidebarPosts.tsx +129 -0
- package/source/components/SidebarReleases.tsx +85 -0
- package/{build/website → source}/content-collections.ts +2 -2
- package/{build/website → source}/elements/accordion.tsx +1 -1
- package/{build/website → source}/elements/alert-dialog.tsx +1 -1
- package/{build/website → source}/elements/alert.tsx +1 -1
- package/{build/website → source}/elements/aspect-ratio.tsx +1 -1
- package/{build/website → source}/elements/avatar.tsx +1 -1
- package/{build/website → source}/elements/badge.tsx +1 -1
- package/{build/website → source}/elements/breadcrumb.tsx +1 -1
- package/{build/website → source}/elements/button-group.tsx +1 -1
- package/{build/website → source}/elements/button.tsx +1 -1
- package/{build/website → source}/elements/calendar.tsx +1 -1
- package/{build/website → source}/elements/card.tsx +1 -1
- package/{build/website → source}/elements/carousel.tsx +1 -1
- package/{build/website → source}/elements/chart.tsx +1 -1
- package/{build/website → source}/elements/checkbox.tsx +1 -1
- package/{build/website → source}/elements/command.tsx +1 -1
- package/{build/website → source}/elements/context-menu.tsx +1 -1
- package/{build/website → source}/elements/dialog.tsx +1 -1
- package/{build/website → source}/elements/drawer.tsx +1 -1
- package/{build/website → source}/elements/dropdown-menu.tsx +1 -1
- package/{build/website → source}/elements/empty.tsx +1 -1
- package/{build/website → source}/elements/field.tsx +1 -1
- package/{build/website → source}/elements/hover-card.tsx +1 -1
- package/{build/website → source}/elements/input-group.tsx +1 -1
- package/{build/website → source}/elements/input-otp.tsx +1 -1
- package/{build/website → source}/elements/input.tsx +1 -1
- package/{build/website → source}/elements/item.tsx +1 -1
- package/{build/website → source}/elements/kbd.tsx +1 -1
- package/{build/website → source}/elements/label.tsx +1 -1
- package/{build/website → source}/elements/menubar.tsx +1 -1
- package/{build/website → source}/elements/native-select.tsx +1 -1
- package/{build/website → source}/elements/navigation-menu.tsx +1 -1
- package/{build/website → source}/elements/pagination.tsx +1 -1
- package/{build/website → source}/elements/popover.tsx +1 -1
- package/{build/website → source}/elements/progress.tsx +1 -1
- package/{build/website → source}/elements/radio-group.tsx +1 -1
- package/{build/website → source}/elements/resizable.tsx +1 -1
- package/{build/website → source}/elements/scroll-area.tsx +1 -1
- package/{build/website → source}/elements/select.tsx +1 -1
- package/{build/website → source}/elements/separator.tsx +1 -1
- package/{build/website → source}/elements/sheet.tsx +1 -1
- package/{build/website → source}/elements/sidebar.tsx +7 -4
- package/{build/website → source}/elements/skeleton.tsx +1 -1
- package/{build/website → source}/elements/slider.tsx +1 -1
- package/{build/website → source}/elements/spinner.tsx +1 -1
- package/{build/website → source}/elements/switch.tsx +1 -1
- package/{build/website → source}/elements/table.tsx +1 -1
- package/{build/website → source}/elements/tabs.tsx +1 -1
- package/{build/website → source}/elements/textarea.tsx +1 -1
- package/{build/website → source}/elements/toggle-group.tsx +1 -1
- package/{build/website → source}/elements/toggle.tsx +1 -1
- package/{build/website → source}/elements/tooltip.tsx +1 -1
- package/source/entrypoints/main.ts +12 -0
- package/{build/website → source}/env.d.ts +1 -1
- package/source/helpers/program.ts +6 -0
- package/{build/website → source}/helpers/section.ts +1 -1
- package/source/hooks/media.ts +29 -0
- package/source/index.ts +1 -0
- package/{build/website → source}/models/article.ts +4 -0
- package/source/models/config.ts +51 -0
- package/source/models/link.ts +11 -0
- package/source/models/patch.ts +9 -0
- package/source/models/section.ts +45 -0
- package/source/models/theme.ts +74 -0
- package/{build/website → source}/plugins/vite-livemark.ts +0 -7
- package/source/program.ts +18 -0
- package/source/settings.ts +6 -0
- package/{build/website → source}/vite.config.ts +4 -3
- package/{build → target}/actions/changelog/build.d.ts +1 -0
- package/target/actions/changelog/build.js +187 -0
- package/target/actions/changelog/build.unit.js +66 -0
- package/target/actions/config/define.js +8 -0
- package/target/actions/config/define.unit.js +29 -0
- package/target/actions/config/load.js +25 -0
- package/target/actions/config/load.unit.js +23 -0
- package/target/client.d.ts +1 -0
- package/target/client.js +6 -0
- package/target/commands/build.js +14 -0
- package/target/commands/escape.js +56 -0
- package/target/commands/preview.js +18 -0
- package/target/commands/start.js +19 -0
- package/target/components/Abbr.d.ts +5 -0
- package/target/components/Abbr.js +9 -0
- package/target/components/AnsiCode.d.ts +4 -0
- package/target/components/AnsiCode.js +6 -0
- package/target/components/Article.d.ts +5 -0
- package/target/components/Article.js +105 -0
- package/target/components/BackToTop.d.ts +3 -0
- package/target/components/BackToTop.js +19 -0
- package/target/components/Banner.d.ts +2 -0
- package/target/components/Banner.js +12 -0
- package/target/components/BlogIndex.d.ts +4 -0
- package/target/components/BlogIndex.js +62 -0
- package/target/components/Breadcrumbs.d.ts +1 -0
- package/target/components/Breadcrumbs.js +13 -0
- package/target/components/Callout.d.ts +8 -0
- package/target/components/Callout.js +43 -0
- package/target/components/Card.d.ts +7 -0
- package/target/components/Card.js +17 -0
- package/target/components/Cards.d.ts +4 -0
- package/target/components/Cards.js +6 -0
- package/target/components/ChangelogIndex.d.ts +4 -0
- package/target/components/ChangelogIndex.js +57 -0
- package/target/components/CodeBlock.d.ts +1 -0
- package/target/components/CodeBlock.js +47 -0
- package/target/components/CodeTabs.d.ts +6 -0
- package/target/components/CodeTabs.js +49 -0
- package/target/components/Column.d.ts +4 -0
- package/target/components/Column.js +6 -0
- package/target/components/Columns.d.ts +5 -0
- package/target/components/Columns.js +10 -0
- package/target/components/Content.d.ts +3 -0
- package/target/components/Content.js +5 -0
- package/target/components/ContentTab.d.ts +5 -0
- package/target/components/ContentTab.js +6 -0
- package/target/components/ContentTabs.d.ts +5 -0
- package/target/components/ContentTabs.js +47 -0
- package/target/components/DefaultCatchBoundary.d.ts +2 -0
- package/target/components/DefaultCatchBoundary.js +20 -0
- package/target/components/DefinitionList.d.ts +7 -0
- package/target/components/DefinitionList.js +14 -0
- package/target/components/Details.d.ts +5 -0
- package/target/components/Details.js +13 -0
- package/target/components/FileTree.d.ts +4 -0
- package/target/components/FileTree.js +17 -0
- package/target/components/Footer.d.ts +2 -0
- package/target/components/Footer.js +9 -0
- package/target/components/FootnoteRef.d.ts +3 -0
- package/target/components/FootnoteRef.js +31 -0
- package/target/components/Heading.d.ts +8 -0
- package/target/components/Heading.js +18 -0
- package/target/components/InlineBadge.d.ts +5 -0
- package/target/components/InlineBadge.js +7 -0
- package/target/components/InlineIcon.d.ts +5 -0
- package/target/components/InlineIcon.js +10 -0
- package/target/components/InlineToc.d.ts +4 -0
- package/target/components/InlineToc.js +14 -0
- package/target/components/Layout.d.ts +4 -0
- package/target/components/Layout.js +65 -0
- package/target/components/LinkButton.d.ts +7 -0
- package/target/components/LinkButton.js +11 -0
- package/target/components/Mermaid.d.ts +4 -0
- package/target/components/Mermaid.js +8 -0
- package/target/components/MermaidRenderer.d.ts +4 -0
- package/target/components/MermaidRenderer.js +32 -0
- package/target/components/NotFound.d.ts +3 -0
- package/target/components/NotFound.js +10 -0
- package/target/components/PackageTabs.d.ts +9 -0
- package/target/components/PackageTabs.js +28 -0
- package/target/components/PageToolbar.d.ts +7 -0
- package/target/components/PageToolbar.js +34 -0
- package/target/components/PrevNext.d.ts +4 -0
- package/target/components/PrevNext.js +34 -0
- package/target/components/Search.d.ts +2 -0
- package/target/components/Search.js +16 -0
- package/target/components/SearchDialog.d.ts +5 -0
- package/target/components/SearchDialog.js +139 -0
- package/target/components/Section.d.ts +5 -0
- package/target/components/Section.js +8 -0
- package/target/components/SectionHeader.d.ts +7 -0
- package/target/components/SectionHeader.js +7 -0
- package/target/components/Sidebar.d.ts +4 -0
- package/target/components/Sidebar.js +33 -0
- package/target/components/SidebarArticles.d.ts +2 -0
- package/target/components/SidebarArticles.js +45 -0
- package/target/components/SidebarLinks.d.ts +4 -0
- package/target/components/SidebarLinks.js +26 -0
- package/target/components/SidebarPosts.d.ts +2 -0
- package/target/components/SidebarPosts.js +53 -0
- package/target/components/SidebarReleases.d.ts +2 -0
- package/target/components/SidebarReleases.js +35 -0
- package/target/components/SidebarSections.d.ts +4 -0
- package/target/components/SidebarSections.js +36 -0
- package/target/components/SiteTitle.d.ts +2 -0
- package/target/components/SiteTitle.js +12 -0
- package/target/components/SortableTable.d.ts +5 -0
- package/target/components/SortableTable.js +63 -0
- package/target/components/SoundCloud.d.ts +4 -0
- package/target/components/SoundCloud.js +7 -0
- package/target/components/TagIndex.d.ts +5 -0
- package/target/components/TagIndex.js +64 -0
- package/target/components/Theme.d.ts +1 -0
- package/target/components/Theme.js +21 -0
- package/target/components/Toc.d.ts +12 -0
- package/target/components/Toc.js +128 -0
- package/target/components/YouTube.d.ts +4 -0
- package/target/components/YouTube.js +6 -0
- package/target/components/ZoomImage.d.ts +4 -0
- package/target/components/ZoomImage.js +26 -0
- package/target/content/article.d.ts +43 -0
- package/target/content/article.js +54 -0
- package/target/content/tag.d.ts +2 -0
- package/target/content/tag.js +30 -0
- package/target/content-collections.d.ts +2 -0
- package/target/content-collections.js +192 -0
- package/target/elements/accordion.d.ts +6 -0
- package/target/elements/accordion.js +19 -0
- package/target/elements/alert-dialog.d.ts +18 -0
- package/target/elements/alert-dialog.js +44 -0
- package/target/elements/alert.d.ts +9 -0
- package/target/elements/alert.js +28 -0
- package/target/elements/aspect-ratio.d.ts +4 -0
- package/target/elements/aspect-ratio.js +9 -0
- package/target/elements/avatar.d.ts +11 -0
- package/target/elements/avatar.js +23 -0
- package/target/elements/badge.d.ts +7 -0
- package/target/elements/badge.js +34 -0
- package/target/elements/breadcrumb.d.ts +9 -0
- package/target/elements/breadcrumb.js +39 -0
- package/target/elements/button-group.d.ts +10 -0
- package/target/elements/button-group.js +37 -0
- package/target/elements/button.d.ts +8 -0
- package/target/elements/button.js +35 -0
- package/target/elements/calendar.d.ts +10 -0
- package/target/elements/calendar.js +76 -0
- package/target/elements/card.d.ts +11 -0
- package/target/elements/card.js +25 -0
- package/target/elements/carousel.d.ts +28 -0
- package/target/elements/carousel.js +95 -0
- package/target/elements/chart.d.ts +44 -0
- package/target/elements/chart.js +140 -0
- package/target/elements/checkbox.d.ts +3 -0
- package/target/elements/checkbox.js +9 -0
- package/target/elements/collapsible.d.ts +5 -0
- package/target/elements/collapsible.js +13 -0
- package/target/elements/command.d.ts +23 -0
- package/target/elements/command.js +42 -0
- package/target/elements/context-menu.d.ts +29 -0
- package/target/elements/context-menu.js +54 -0
- package/target/elements/dialog.d.ts +16 -0
- package/target/elements/dialog.js +41 -0
- package/target/elements/direction.d.ts +1 -0
- package/target/elements/direction.js +2 -0
- package/target/elements/drawer.d.ts +12 -0
- package/target/elements/drawer.js +38 -0
- package/target/elements/dropdown-menu.d.ts +24 -0
- package/target/elements/dropdown-menu.js +54 -0
- package/target/elements/empty.d.ts +11 -0
- package/target/elements/empty.js +34 -0
- package/target/elements/field.d.ts +24 -0
- package/target/elements/field.js +69 -0
- package/target/elements/hover-card.d.ts +5 -0
- package/target/elements/hover-card.js +14 -0
- package/target/elements/input-group.d.ts +18 -0
- package/target/elements/input-group.js +60 -0
- package/target/elements/input-otp.d.ts +11 -0
- package/target/elements/input-otp.js +21 -0
- package/target/elements/input.d.ts +2 -0
- package/target/elements/input.js +8 -0
- package/target/elements/item.d.ts +21 -0
- package/target/elements/item.js +79 -0
- package/target/elements/kbd.d.ts +3 -0
- package/target/elements/kbd.js +10 -0
- package/target/elements/label.d.ts +2 -0
- package/target/elements/label.js +8 -0
- package/target/elements/menubar.d.ts +29 -0
- package/target/elements/menubar.js +58 -0
- package/target/elements/native-select.d.ts +8 -0
- package/target/elements/native-select.js +16 -0
- package/target/elements/navigation-menu.d.ts +11 -0
- package/target/elements/navigation-menu.js +34 -0
- package/target/elements/pagination.d.ts +17 -0
- package/target/elements/pagination.js +33 -0
- package/target/elements/popover.d.ts +9 -0
- package/target/elements/popover.js +23 -0
- package/target/elements/progress.d.ts +7 -0
- package/target/elements/progress.js +21 -0
- package/target/elements/radio-group.d.ts +5 -0
- package/target/elements/radio-group.js +12 -0
- package/target/elements/resizable.d.ts +7 -0
- package/target/elements/resizable.js +14 -0
- package/target/elements/scroll-area.d.ts +4 -0
- package/target/elements/scroll-area.js +13 -0
- package/target/elements/select.d.ts +15 -0
- package/target/elements/select.js +39 -0
- package/target/elements/separator.d.ts +3 -0
- package/target/elements/separator.js +8 -0
- package/target/elements/sheet.d.ts +13 -0
- package/target/elements/sheet.js +41 -0
- package/target/elements/sidebar.d.ts +63 -0
- package/target/elements/sidebar.js +272 -0
- package/target/elements/skeleton.d.ts +2 -0
- package/target/elements/skeleton.js +7 -0
- package/target/elements/slider.d.ts +3 -0
- package/target/elements/slider.js +15 -0
- package/target/elements/sonner.d.ts +3 -0
- package/target/elements/sonner.js +23 -0
- package/target/elements/spinner.d.ts +2 -0
- package/target/elements/spinner.js +8 -0
- package/target/elements/switch.d.ts +5 -0
- package/target/elements/switch.js +8 -0
- package/target/elements/table.d.ts +9 -0
- package/target/elements/table.js +28 -0
- package/target/elements/tabs.d.ts +10 -0
- package/target/elements/tabs.js +29 -0
- package/target/elements/textarea.d.ts +2 -0
- package/target/elements/textarea.js +7 -0
- package/target/elements/toggle-group.d.ts +10 -0
- package/target/elements/toggle-group.js +24 -0
- package/target/elements/toggle.d.ts +8 -0
- package/target/elements/toggle.js +26 -0
- package/target/elements/tooltip.d.ts +6 -0
- package/target/elements/tooltip.js +18 -0
- package/target/entrypoints/main.js +12 -0
- package/target/helpers/article-icon.d.ts +3 -0
- package/target/helpers/article-icon.js +34 -0
- package/target/helpers/article.d.ts +24 -0
- package/target/helpers/article.js +73 -0
- package/target/helpers/changelog-source.d.ts +7 -0
- package/target/helpers/changelog-source.js +16 -0
- package/target/helpers/changelog-source.unit.d.ts +1 -0
- package/target/helpers/changelog-source.unit.js +33 -0
- package/target/helpers/dynamic-icon-resolver.d.ts +5 -0
- package/target/helpers/dynamic-icon-resolver.js +17 -0
- package/target/helpers/dynamic-icon.d.ts +5 -0
- package/target/helpers/dynamic-icon.js +8 -0
- package/target/helpers/favicon.d.ts +2 -0
- package/target/helpers/favicon.js +11 -0
- package/target/helpers/model.d.ts +3 -0
- package/target/helpers/model.js +4 -0
- package/target/helpers/program.js +5 -0
- package/target/helpers/resolve-asset-path.d.ts +2 -0
- package/target/helpers/resolve-asset-path.js +9 -0
- package/target/helpers/resolve-includes.d.ts +2 -0
- package/target/helpers/resolve-includes.js +113 -0
- package/target/helpers/resolve-includes.unit.d.ts +1 -0
- package/target/helpers/resolve-includes.unit.js +76 -0
- package/target/helpers/search-text.d.ts +2 -0
- package/target/helpers/search-text.js +16 -0
- package/target/helpers/section.d.ts +13 -0
- package/target/helpers/section.js +39 -0
- package/target/helpers/section.unit.d.ts +1 -0
- package/target/helpers/section.unit.js +62 -0
- package/target/helpers/theme.d.ts +5 -0
- package/target/helpers/theme.js +23 -0
- package/target/helpers/toc-context.d.ts +5 -0
- package/target/helpers/toc-context.js +8 -0
- package/target/helpers/toc.d.ts +3 -0
- package/target/helpers/toc.js +41 -0
- package/target/helpers/toc.unit.d.ts +1 -0
- package/target/helpers/toc.unit.js +65 -0
- package/target/hooks/in-view.d.ts +4 -0
- package/target/hooks/in-view.js +23 -0
- package/target/hooks/media.d.ts +6 -0
- package/target/hooks/media.js +25 -0
- package/target/index.js +2 -0
- package/target/models/article.d.ts +57 -0
- package/target/models/article.js +21 -0
- package/{build → target}/models/config.d.ts +10 -0
- package/target/models/config.js +34 -0
- package/target/models/link.js +9 -0
- package/{build → target}/models/patch.d.ts +5 -0
- package/target/models/patch.js +7 -0
- package/target/models/section.js +26 -0
- package/target/models/theme.js +73 -0
- package/target/models/toc.d.ts +5 -0
- package/target/models/toc.js +2 -0
- package/target/plugins/rehype-inline-code.d.ts +19 -0
- package/target/plugins/rehype-inline-code.js +55 -0
- package/target/plugins/rehype-task-list-a11y.d.ts +10 -0
- package/target/plugins/rehype-task-list-a11y.js +29 -0
- package/target/plugins/remark-abbr.d.ts +6 -0
- package/target/plugins/remark-abbr.js +39 -0
- package/target/plugins/remark-abbr.unit.d.ts +1 -0
- package/target/plugins/remark-abbr.unit.js +79 -0
- package/target/plugins/remark-ansi.d.ts +8 -0
- package/target/plugins/remark-ansi.js +239 -0
- package/target/plugins/remark-ansi.unit.d.ts +1 -0
- package/target/plugins/remark-ansi.unit.js +134 -0
- package/target/plugins/remark-badge.d.ts +6 -0
- package/target/plugins/remark-badge.js +43 -0
- package/target/plugins/remark-badge.unit.d.ts +1 -0
- package/target/plugins/remark-badge.unit.js +76 -0
- package/target/plugins/remark-button.d.ts +6 -0
- package/target/plugins/remark-button.js +52 -0
- package/target/plugins/remark-button.unit.d.ts +1 -0
- package/target/plugins/remark-button.unit.js +105 -0
- package/target/plugins/remark-callout.d.ts +4 -0
- package/target/plugins/remark-callout.js +39 -0
- package/target/plugins/remark-card.d.ts +4 -0
- package/target/plugins/remark-card.js +66 -0
- package/target/plugins/remark-code-tabs.d.ts +4 -0
- package/target/plugins/remark-code-tabs.js +72 -0
- package/target/plugins/remark-columns.d.ts +4 -0
- package/target/plugins/remark-columns.js +54 -0
- package/target/plugins/remark-custom-heading-id.d.ts +14 -0
- package/target/plugins/remark-custom-heading-id.js +54 -0
- package/target/plugins/remark-custom-heading-id.unit.d.ts +1 -0
- package/target/plugins/remark-custom-heading-id.unit.js +91 -0
- package/target/plugins/remark-deflist.d.ts +4 -0
- package/target/plugins/remark-deflist.js +31 -0
- package/target/plugins/remark-details.d.ts +4 -0
- package/target/plugins/remark-details.js +33 -0
- package/target/plugins/remark-filetree.d.ts +12 -0
- package/target/plugins/remark-filetree.js +61 -0
- package/target/plugins/remark-filetree.unit.d.ts +1 -0
- package/target/plugins/remark-filetree.unit.js +87 -0
- package/target/plugins/remark-github-callout.d.ts +4 -0
- package/target/plugins/remark-github-callout.js +62 -0
- package/target/plugins/remark-icon.d.ts +4 -0
- package/target/plugins/remark-icon.js +36 -0
- package/target/plugins/remark-image.d.ts +9 -0
- package/target/plugins/remark-image.js +26 -0
- package/target/plugins/remark-media.d.ts +6 -0
- package/target/plugins/remark-media.js +52 -0
- package/target/plugins/remark-media.unit.d.ts +1 -0
- package/target/plugins/remark-media.unit.js +54 -0
- package/target/plugins/remark-mermaid.d.ts +4 -0
- package/target/plugins/remark-mermaid.js +20 -0
- package/target/plugins/remark-npm.d.ts +4 -0
- package/target/plugins/remark-npm.js +32 -0
- package/target/plugins/remark-steps.d.ts +6 -0
- package/target/plugins/remark-steps.js +30 -0
- package/target/plugins/remark-steps.unit.d.ts +1 -0
- package/target/plugins/remark-steps.unit.js +65 -0
- package/target/plugins/remark-tab.d.ts +6 -0
- package/target/plugins/remark-tab.js +76 -0
- package/target/plugins/remark-tab.unit.d.ts +1 -0
- package/target/plugins/remark-tab.unit.js +156 -0
- package/target/plugins/remark-toc.d.ts +6 -0
- package/target/plugins/remark-toc.js +33 -0
- package/target/plugins/remark-toc.unit.d.ts +1 -0
- package/target/plugins/remark-toc.unit.js +57 -0
- package/target/plugins/shiki-icon.d.ts +16 -0
- package/target/plugins/shiki-icon.js +66 -0
- package/target/plugins/shiki-line-highlight.d.ts +27 -0
- package/target/plugins/shiki-line-highlight.js +140 -0
- package/target/plugins/vite-livemark.d.ts +13 -0
- package/target/plugins/vite-livemark.js +76 -0
- package/target/program.js +18 -0
- package/target/routeTree.gen.d.ts +57 -0
- package/target/routeTree.gen.js +27 -0
- package/target/router.d.ts +6 -0
- package/target/router.js +26 -0
- package/target/routes/$.d.ts +1 -0
- package/target/routes/$.js +85 -0
- package/target/routes/__root.d.ts +1 -0
- package/target/routes/__root.js +69 -0
- package/target/server.d.ts +2 -0
- package/target/server.js +7 -0
- package/target/settings.d.ts +2 -0
- package/target/settings.js +7 -0
- package/target/utils/style.d.ts +2 -0
- package/target/utils/style.js +6 -0
- package/target/vite.config.d.ts +2 -0
- package/target/vite.config.js +64 -0
- package/build/actions/changelog/build.js +0 -158
- package/build/actions/changelog/build.unit.js +0 -66
- package/build/actions/config/define.js +0 -8
- package/build/actions/config/define.unit.js +0 -29
- package/build/actions/config/load.js +0 -25
- package/build/actions/config/load.unit.js +0 -23
- package/build/commands/build.js +0 -14
- package/build/commands/escape.js +0 -56
- package/build/commands/preview.js +0 -18
- package/build/commands/start.js +0 -19
- package/build/docs/markdown/includes/example.d.ts +0 -58
- package/build/docs/markdown/includes/example.js +0 -5
- package/build/entrypoints/main.js +0 -12
- package/build/helpers/program.js +0 -5
- package/build/index.js +0 -2
- package/build/livemark.config.d.ts +0 -58
- package/build/livemark.config.js +0 -25
- package/build/models/config.js +0 -34
- package/build/models/link.js +0 -9
- package/build/models/patch.js +0 -7
- package/build/models/section.js +0 -26
- package/build/models/theme.js +0 -73
- package/build/program.js +0 -16
- package/build/vite.config.d.ts +0 -2
- package/build/vite.config.js +0 -48
- package/build/website/components/BlogSidebar.tsx +0 -162
- package/build/website/components/ChangelogSidebar.tsx +0 -120
- package/build/website/hooks/media.ts +0 -19
- /package/{build/website → source}/assets/logo.svg +0 -0
- /package/{build/website → source}/client.tsx +0 -0
- /package/{build/website → source}/components/Abbr.tsx +0 -0
- /package/{build/website → source}/components/AnsiCode.tsx +0 -0
- /package/{build/website → source}/components/BackToTop.tsx +0 -0
- /package/{build/website → source}/components/Banner.tsx +0 -0
- /package/{build/website → source}/components/BlogIndex.tsx +0 -0
- /package/{build/website → source}/components/Breadcrumbs.tsx +0 -0
- /package/{build/website → source}/components/Card.tsx +0 -0
- /package/{build/website → source}/components/Cards.tsx +0 -0
- /package/{build/website → source}/components/ChangelogIndex.tsx +0 -0
- /package/{build/website → source}/components/CodeBlock.tsx +0 -0
- /package/{build/website → source}/components/CodeTabs.tsx +0 -0
- /package/{build/website → source}/components/Column.tsx +0 -0
- /package/{build/website → source}/components/Columns.tsx +0 -0
- /package/{build/website → source}/components/Content.tsx +0 -0
- /package/{build/website → source}/components/ContentTab.tsx +0 -0
- /package/{build/website → source}/components/ContentTabs.tsx +0 -0
- /package/{build/website → source}/components/DefaultCatchBoundary.tsx +0 -0
- /package/{build/website → source}/components/DefinitionList.tsx +0 -0
- /package/{build/website → source}/components/Details.tsx +0 -0
- /package/{build/website → source}/components/FileTree.tsx +0 -0
- /package/{build/website → source}/components/Footer.tsx +0 -0
- /package/{build/website → source}/components/FootnoteRef.tsx +0 -0
- /package/{build/website → source}/components/Heading.tsx +0 -0
- /package/{build/website → source}/components/InlineBadge.tsx +0 -0
- /package/{build/website → source}/components/InlineIcon.tsx +0 -0
- /package/{build/website → source}/components/InlineToc.tsx +0 -0
- /package/{build/website → source}/components/Mermaid.tsx +0 -0
- /package/{build/website → source}/components/MermaidRenderer.tsx +0 -0
- /package/{build/website → source}/components/NotFound.tsx +0 -0
- /package/{build/website → source}/components/PackageTabs.tsx +0 -0
- /package/{build/website → source}/components/PrevNext.tsx +0 -0
- /package/{build/website → source}/components/Search.tsx +0 -0
- /package/{build/website → source}/components/SearchDialog.tsx +0 -0
- /package/{build/website → source}/components/SidebarLinks.tsx +0 -0
- /package/{build/website → source}/components/SidebarSections.tsx +0 -0
- /package/{build/website → source}/components/SiteTitle.tsx +0 -0
- /package/{build/website → source}/components/SortableTable.tsx +0 -0
- /package/{build/website → source}/components/SoundCloud.tsx +0 -0
- /package/{build/website → source}/components/TagIndex.tsx +0 -0
- /package/{build/website → source}/components/Theme.tsx +0 -0
- /package/{build/website → source}/components/Toc.tsx +0 -0
- /package/{build/website → source}/components/YouTube.tsx +0 -0
- /package/{build/website → source}/components/ZoomImage.tsx +0 -0
- /package/{build/website → source}/content/article.ts +0 -0
- /package/{build/website → source}/content/tag.ts +0 -0
- /package/{build/website → source}/elements/collapsible.tsx +0 -0
- /package/{build/website → source}/elements/direction.tsx +0 -0
- /package/{build/website → source}/elements/sonner.tsx +0 -0
- /package/{build/website → source}/helpers/article-icon.ts +0 -0
- /package/{build/website → source}/helpers/article.ts +0 -0
- /package/{build/website → source}/helpers/changelog-source.ts +0 -0
- /package/{build/website → source}/helpers/changelog-source.unit.ts +0 -0
- /package/{build/website → source}/helpers/dynamic-icon-resolver.tsx +0 -0
- /package/{build/website → source}/helpers/dynamic-icon.tsx +0 -0
- /package/{build/website → source}/helpers/favicon.ts +0 -0
- /package/{build/website → source}/helpers/model.ts +0 -0
- /package/{build/website → source}/helpers/resolve-asset-path.ts +0 -0
- /package/{build/website → source}/helpers/resolve-includes.ts +0 -0
- /package/{build/website → source}/helpers/resolve-includes.unit.ts +0 -0
- /package/{build/website → source}/helpers/search-text.ts +0 -0
- /package/{build/website → source}/helpers/section.unit.ts +0 -0
- /package/{build/website → source}/helpers/theme.ts +0 -0
- /package/{build/website → source}/helpers/toc-context.ts +0 -0
- /package/{build/website → source}/helpers/toc.ts +0 -0
- /package/{build/website → source}/helpers/toc.unit.ts +0 -0
- /package/{build/website → source}/hooks/in-view.ts +0 -0
- /package/{build/website → source}/models/toc.ts +0 -0
- /package/{build/website → source}/plugins/rehype-inline-code.ts +0 -0
- /package/{build/website → source}/plugins/rehype-task-list-a11y.ts +0 -0
- /package/{build/website → source}/plugins/remark-abbr.ts +0 -0
- /package/{build/website → source}/plugins/remark-abbr.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-ansi.ts +0 -0
- /package/{build/website → source}/plugins/remark-ansi.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-badge.ts +0 -0
- /package/{build/website → source}/plugins/remark-badge.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-button.ts +0 -0
- /package/{build/website → source}/plugins/remark-button.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-callout.ts +0 -0
- /package/{build/website → source}/plugins/remark-card.ts +0 -0
- /package/{build/website → source}/plugins/remark-code-tabs.ts +0 -0
- /package/{build/website → source}/plugins/remark-columns.ts +0 -0
- /package/{build/website → source}/plugins/remark-custom-heading-id.ts +0 -0
- /package/{build/website → source}/plugins/remark-custom-heading-id.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-deflist.ts +0 -0
- /package/{build/website → source}/plugins/remark-details.ts +0 -0
- /package/{build/website → source}/plugins/remark-filetree.ts +0 -0
- /package/{build/website → source}/plugins/remark-filetree.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-github-callout.ts +0 -0
- /package/{build/website → source}/plugins/remark-icon.ts +0 -0
- /package/{build/website → source}/plugins/remark-image.ts +0 -0
- /package/{build/website → source}/plugins/remark-media.ts +0 -0
- /package/{build/website → source}/plugins/remark-media.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-mermaid.ts +0 -0
- /package/{build/website → source}/plugins/remark-npm.ts +0 -0
- /package/{build/website → source}/plugins/remark-steps.ts +0 -0
- /package/{build/website → source}/plugins/remark-steps.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-tab.ts +0 -0
- /package/{build/website → source}/plugins/remark-tab.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-toc.ts +0 -0
- /package/{build/website → source}/plugins/remark-toc.unit.ts +0 -0
- /package/{build/website → source}/plugins/shiki-icon.ts +0 -0
- /package/{build/website → source}/plugins/shiki-line-highlight.ts +0 -0
- /package/{build/website → source}/routeTree.gen.ts +0 -0
- /package/{build/website → source}/router.tsx +0 -0
- /package/{build/website → source}/routes/$.tsx +0 -0
- /package/{build/website → source}/routes/__root.tsx +0 -0
- /package/{build/website → source}/server.ts +0 -0
- /package/{build/website → source}/styles/general.css +0 -0
- /package/{build/website → source}/styles/markdown.css +0 -0
- /package/{build/website/helpers → source/utils}/style.ts +0 -0
- /package/{build → target}/actions/changelog/build.unit.d.ts +0 -0
- /package/{build → target}/actions/config/define.d.ts +0 -0
- /package/{build → target}/actions/config/define.unit.d.ts +0 -0
- /package/{build → target}/actions/config/load.d.ts +0 -0
- /package/{build → target}/actions/config/load.unit.d.ts +0 -0
- /package/{build → target}/commands/build.d.ts +0 -0
- /package/{build → target}/commands/escape.d.ts +0 -0
- /package/{build → target}/commands/preview.d.ts +0 -0
- /package/{build → target}/commands/start.d.ts +0 -0
- /package/{build → target}/entrypoints/main.d.ts +0 -0
- /package/{build → target}/helpers/program.d.ts +0 -0
- /package/{build → target}/index.d.ts +0 -0
- /package/{build → target}/models/link.d.ts +0 -0
- /package/{build → target}/models/section.d.ts +0 -0
- /package/{build → target}/models/theme.d.ts +0 -0
- /package/{build → target}/program.d.ts +0 -0
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
-
import { 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 "../../website/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
|
-
/** Shift h2–h6 up by one so the version becomes the article's h1 */
|
|
79
|
-
function promoteHeadings(body) {
|
|
80
|
-
const tree = parser.parse(body);
|
|
81
|
-
visit(tree, "heading", node => {
|
|
82
|
-
if (node.depth > 1)
|
|
83
|
-
node.depth = (node.depth - 1);
|
|
84
|
-
});
|
|
85
|
-
return stringifier.stringify(tree).trimEnd();
|
|
86
|
-
}
|
|
87
|
-
async function buildFromGitHub(source, metaPath, cacheDir) {
|
|
88
|
-
const parsed = parseGitHubRepo(source);
|
|
89
|
-
if (!parsed) {
|
|
90
|
-
throw new Error(`Could not parse GitHub repo from source: ${source}`);
|
|
91
|
-
}
|
|
92
|
-
const url = `https://api.github.com/repos/${parsed.owner}/${parsed.repo}/releases?per_page=100`;
|
|
93
|
-
const headers = {
|
|
94
|
-
Accept: "application/vnd.github+json",
|
|
95
|
-
"X-GitHub-Api-Version": "2022-11-28",
|
|
96
|
-
};
|
|
97
|
-
const token = process.env.GITHUB_TOKEN;
|
|
98
|
-
if (token)
|
|
99
|
-
headers.Authorization = `Bearer ${token}`;
|
|
100
|
-
const meta = await readMeta(metaPath);
|
|
101
|
-
const hasCache = await exists(cacheDir);
|
|
102
|
-
if (meta && hasCache)
|
|
103
|
-
headers["If-None-Match"] = meta.etag;
|
|
104
|
-
const res = await fetch(url, { headers });
|
|
105
|
-
if (res.status === 304)
|
|
106
|
-
return undefined;
|
|
107
|
-
if (!res.ok) {
|
|
108
|
-
const remaining = res.headers.get("x-ratelimit-remaining");
|
|
109
|
-
const reset = res.headers.get("x-ratelimit-reset");
|
|
110
|
-
const msg = `GitHub API ${res.status} ${res.statusText} (rate-limit remaining: ${remaining ?? "?"}, reset: ${reset ?? "?"})`;
|
|
111
|
-
if (hasCache) {
|
|
112
|
-
console.warn(`${msg} — falling back to cached changelog`);
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
throw new Error(msg);
|
|
116
|
-
}
|
|
117
|
-
const releases = (await res.json());
|
|
118
|
-
const etag = res.headers.get("etag");
|
|
119
|
-
if (etag) {
|
|
120
|
-
await writeFile(metaPath, JSON.stringify({ etag, fetchedAt: new Date().toISOString() }, null, 2), "utf-8");
|
|
121
|
-
}
|
|
122
|
-
return releases.map(release => ({
|
|
123
|
-
slug: slugify(release.tag_name),
|
|
124
|
-
title: release.tag_name,
|
|
125
|
-
date: release.published_at?.slice(0, 10),
|
|
126
|
-
body: (release.body ?? "").trim(),
|
|
127
|
-
}));
|
|
128
|
-
}
|
|
129
|
-
function wrapFrontmatter(entry, section) {
|
|
130
|
-
const lines = [
|
|
131
|
-
"---",
|
|
132
|
-
`title: ${entry.title}`,
|
|
133
|
-
`path: ${section.prefix}${entry.slug}/`,
|
|
134
|
-
];
|
|
135
|
-
if (entry.date)
|
|
136
|
-
lines.push(`date: ${entry.date}`);
|
|
137
|
-
lines.push("---", "", `# ${entry.title}`, "", promoteHeadings(entry.body));
|
|
138
|
-
return lines.join("\n");
|
|
139
|
-
}
|
|
140
|
-
async function readMeta(metaPath) {
|
|
141
|
-
try {
|
|
142
|
-
const raw = await readFile(metaPath, "utf-8");
|
|
143
|
-
return JSON.parse(raw);
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
async function exists(path) {
|
|
150
|
-
try {
|
|
151
|
-
await access(path);
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hY3Rpb25zL2NoYW5nZWxvZy9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sT0FBTyxNQUFNLHVCQUF1QixDQUFBO0FBRTNDLE9BQU8sRUFBRSxRQUFRLElBQUksYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDaEUsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sZUFBZSxNQUFNLGtCQUFrQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDakMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR3hDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZUFBZSxHQUNoQixNQUFNLDJDQUEyQyxDQUFBO0FBcUJsRCxNQUFNLFNBQVMsR0FBRywyQkFBMkIsQ0FBQTtBQUM3QyxNQUFNLFNBQVMsR0FBRyxxQ0FBcUMsQ0FBQTtBQUV2RCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDekMsTUFBTSxXQUFXLEdBQUcsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRTtJQUNqRCxNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRSxJQUFJO0lBQ1osUUFBUSxFQUFFLEdBQUc7Q0FDZCxDQUFDLENBQUE7QUFFRixNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sR0FBRyxTQUFTLFVBQVUsQ0FBQTtBQUMvQixDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxPQUF5QixFQUN6QixNQUFjO0lBRWQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFN0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDekMsQ0FBQyxDQUFDLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUMzRCxDQUFDLENBQUMsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFckQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU07SUFFakMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNwRCxNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUUxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDaEQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxjQUFjLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDeEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDOUMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZO0lBQzlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFTLENBQUE7SUFDdkMsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQTtJQUNwQyxJQUFJLE9BQWlFLENBQUE7SUFFckUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ2pELE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFBO1FBQzNELENBQUM7YUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNqRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FHdEI7SUFDQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQzdELE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUE7SUFDbEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUMxRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVDLE9BQU87UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUN0QixLQUFLLEVBQUUsT0FBTztRQUNkLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSTtLQUNMLENBQUE7QUFDSCxDQUFDO0FBRUQsMkRBQTJEO0FBQzNELFNBQVMsZUFBZSxDQUFDLFFBQXVCO0lBQzlDLE1BQU0sSUFBSSxHQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQTtJQUM3QyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDOUMsQ0FBQztBQUVELG9FQUFvRTtBQUNwRSxTQUFTLGVBQWUsQ0FBQyxJQUFZO0lBQ25DLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFTLENBQUE7SUFDdkMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQXNCLENBQUE7SUFDeEUsQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDOUMsQ0FBQztBQUVELEtBQUssVUFBVSxlQUFlLENBQzVCLE1BQWMsRUFDZCxRQUFnQixFQUNoQixRQUFnQjtJQUVoQixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsZ0NBQWdDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksd0JBQXdCLENBQUE7SUFDL0YsTUFBTSxPQUFPLEdBQTJCO1FBQ3RDLE1BQU0sRUFBRSw2QkFBNkI7UUFDckMsc0JBQXNCLEVBQUUsWUFBWTtLQUNyQyxDQUFBO0lBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUE7SUFDdEMsSUFBSSxLQUFLO1FBQUUsT0FBTyxDQUFDLGFBQWEsR0FBRyxVQUFVLEtBQUssRUFBRSxDQUFBO0lBRXBELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3ZDLElBQUksSUFBSSxJQUFJLFFBQVE7UUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtJQUUxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBRXpDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNaLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDMUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUNsRCxNQUFNLEdBQUcsR0FBRyxjQUFjLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsMkJBQTJCLFNBQVMsSUFBSSxHQUFHLFlBQVksS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFBO1FBQzVILElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxxQ0FBcUMsQ0FBQyxDQUFBO1lBQ3pELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFjLENBQUE7SUFDaEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sU0FBUyxDQUNiLFFBQVEsRUFDUixJQUFJLENBQUMsU0FBUyxDQUNaLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFzQixFQUNqRSxJQUFJLEVBQ0osQ0FBQyxDQUNGLEVBQ0QsT0FBTyxDQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDL0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQ3ZCLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFO0tBQ2xDLENBQUMsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQXFCLEVBQUUsT0FBeUI7SUFDdkUsTUFBTSxLQUFLLEdBQUc7UUFDWixLQUFLO1FBQ0wsVUFBVSxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLFNBQVMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHO0tBQ3hDLENBQUE7SUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJO1FBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN0QyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxNQUFNLENBQUMsSUFBWTtJQUNoQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWNjZXNzLCBta2RpciwgcmVhZEZpbGUsIHJtLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgc2x1Z2lmeSBmcm9tIFwiQHNpbmRyZXNvcmh1cy9zbHVnaWZ5XCJcbmltcG9ydCB0eXBlIHsgUm9vdCwgUm9vdENvbnRlbnQgfSBmcm9tIFwibWRhc3RcIlxuaW1wb3J0IHsgdG9TdHJpbmcgYXMgbWRhc3RUb1N0cmluZyB9IGZyb20gXCJtZGFzdC11dGlsLXRvLXN0cmluZ1wiXG5pbXBvcnQgcmVtYXJrUGFyc2UgZnJvbSBcInJlbWFyay1wYXJzZVwiXG5pbXBvcnQgcmVtYXJrU3RyaW5naWZ5IGZyb20gXCJyZW1hcmstc3RyaW5naWZ5XCJcbmltcG9ydCB7IHVuaWZpZWQgfSBmcm9tIFwidW5pZmllZFwiXG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCJcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHR5cGUgeyBDaGFuZ2Vsb2dTZWN0aW9uIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zZWN0aW9uLnRzXCJcbmltcG9ydCB7XG4gIGlzR2l0SHViVXJsLFxuICBwYXJzZUdpdEh1YlJlcG8sXG59IGZyb20gXCIuLi8uLi93ZWJzaXRlL2hlbHBlcnMvY2hhbmdlbG9nLXNvdXJjZS50c1wiXG5cbmludGVyZmFjZSBSZWxlYXNlIHtcbiAgdGFnX25hbWU6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwdWJsaXNoZWRfYXQ/OiBzdHJpbmcgfCBudWxsXG4gIGJvZHk/OiBzdHJpbmcgfCBudWxsXG59XG5cbmludGVyZmFjZSBDYWNoZU1ldGEge1xuICBldGFnOiBzdHJpbmdcbiAgZmV0Y2hlZEF0OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIENoYW5nZWxvZ0VudHJ5IHtcbiAgc2x1Zzogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgZGF0ZT86IHN0cmluZ1xuICBib2R5OiBzdHJpbmdcbn1cblxuY29uc3QgQ0FDSEVfRElSID0gXCIubGl2ZW1hcmsvY2FjaGUvY2hhbmdlbG9nXCJcbmNvbnN0IE1FVEFfRklMRSA9IFwiLmxpdmVtYXJrL2NhY2hlL2NoYW5nZWxvZy5tZXRhLmpzb25cIlxuXG5jb25zdCBwYXJzZXIgPSB1bmlmaWVkKCkudXNlKHJlbWFya1BhcnNlKVxuY29uc3Qgc3RyaW5naWZpZXIgPSB1bmlmaWVkKCkudXNlKHJlbWFya1N0cmluZ2lmeSwge1xuICBidWxsZXQ6IFwiLVwiLFxuICBmZW5jZXM6IHRydWUsXG4gIGVtcGhhc2lzOiBcIl9cIixcbn0pXG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUluY2x1ZGVHbG9iKCkge1xuICByZXR1cm4gYCR7Q0FDSEVfRElSfS8qKi8qLm1kYFxufVxuXG4vKiogQnVpbGQgdGhlIHBlci12ZXJzaW9uIGNoYW5nZWxvZyBjYWNoZSBmaWxlcyBmb3IgYSBjaGFuZ2Vsb2cgc2VjdGlvbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ2hhbmdlbG9nKFxuICBzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uLFxuICBjb25maWc6IENvbmZpZyxcbikge1xuICBjb25zdCBjYWNoZURpciA9IGpvaW4oY29uZmlnLnJvb3QsIENBQ0hFX0RJUilcbiAgY29uc3QgbWV0YVBhdGggPSBqb2luKGNvbmZpZy5yb290LCBNRVRBX0ZJTEUpXG5cbiAgY29uc3QgZW50cmllcyA9IGlzR2l0SHViVXJsKHNlY3Rpb24uc291cmNlKVxuICAgID8gYXdhaXQgYnVpbGRGcm9tR2l0SHViKHNlY3Rpb24uc291cmNlLCBtZXRhUGF0aCwgY2FjaGVEaXIpXG4gICAgOiBhd2FpdCBidWlsZEZyb21Mb2NhbChzZWN0aW9uLnNvdXJjZSwgY29uZmlnLnJvb3QpXG5cbiAgaWYgKGVudHJpZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG5cbiAgYXdhaXQgcm0oY2FjaGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICBhd2FpdCBta2RpcihjYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBtYXJrZG93biA9IHdyYXBGcm9udG1hdHRlcihlbnRyeSwgc2VjdGlvbilcbiAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihjYWNoZURpciwgYCR7ZW50cnkuc2x1Z30ubWRgKSwgbWFya2Rvd24sIFwidXRmLThcIilcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEZyb21Mb2NhbChzb3VyY2U6IHN0cmluZywgcm9vdDogc3RyaW5nKSB7XG4gIGNvbnN0IGZpbGVQYXRoID0gcmVzb2x2ZShyb290LCBzb3VyY2UpXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgXCJ1dGYtOFwiKVxuICByZXR1cm4gc3BsaXRMb2NhbENoYW5nZWxvZyhib2R5KVxufVxuXG4vKiogUGFyc2UgQ0hBTkdFTE9HLm1kIGludG8gcGVyLXZlcnNpb24gZW50cmllcyB1c2luZyBtZGFzdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0TG9jYWxDaGFuZ2Vsb2coYm9keTogc3RyaW5nKTogQ2hhbmdlbG9nRW50cnlbXSB7XG4gIGNvbnN0IHRyZWUgPSBwYXJzZXIucGFyc2UoYm9keSkgYXMgUm9vdFxuICBjb25zdCBlbnRyaWVzOiBDaGFuZ2Vsb2dFbnRyeVtdID0gW11cbiAgbGV0IGN1cnJlbnQ6IHsgaGVhZGluZzogc3RyaW5nOyBjaGlsZHJlbjogUm9vdENvbnRlbnRbXSB9IHwgdW5kZWZpbmVkXG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiB0cmVlLmNoaWxkcmVuKSB7XG4gICAgaWYgKGNoaWxkLnR5cGUgPT09IFwiaGVhZGluZ1wiICYmIGNoaWxkLmRlcHRoID09PSAyKSB7XG4gICAgICBpZiAoY3VycmVudCkgZW50cmllcy5wdXNoKGZpbmFsaXplRW50cnkoY3VycmVudCkpXG4gICAgICBjdXJyZW50ID0geyBoZWFkaW5nOiBtZGFzdFRvU3RyaW5nKGNoaWxkKSwgY2hpbGRyZW46IFtdIH1cbiAgICB9IGVsc2UgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGN1cnJlbnQuY2hpbGRyZW4ucHVzaChjaGlsZClcbiAgICB9XG4gIH1cbiAgaWYgKGN1cnJlbnQpIGVudHJpZXMucHVzaChmaW5hbGl6ZUVudHJ5KGN1cnJlbnQpKVxuICByZXR1cm4gZW50cmllc1xufVxuXG5mdW5jdGlvbiBmaW5hbGl6ZUVudHJ5KGlucHV0OiB7XG4gIGhlYWRpbmc6IHN0cmluZ1xuICBjaGlsZHJlbjogUm9vdENvbnRlbnRbXVxufSk6IENoYW5nZWxvZ0VudHJ5IHtcbiAgY29uc3QgdmVyc2lvbk1hdGNoID0gaW5wdXQuaGVhZGluZy5tYXRjaCgvXlxcWz8oW15cXF1cXHNdKylcXF0/LylcbiAgY29uc3QgdmVyc2lvbiA9IHZlcnNpb25NYXRjaD8uWzFdID8/IGlucHV0LmhlYWRpbmdcbiAgY29uc3QgZGF0ZU1hdGNoID0gaW5wdXQuaGVhZGluZy5tYXRjaCgvXFxkezR9LVxcZHsyfS1cXGR7Mn0vKVxuICBjb25zdCBib2R5ID0gcmVuZGVyRW50cnlCb2R5KGlucHV0LmNoaWxkcmVuKVxuICByZXR1cm4ge1xuICAgIHNsdWc6IHNsdWdpZnkodmVyc2lvbiksXG4gICAgdGl0bGU6IHZlcnNpb24sXG4gICAgZGF0ZTogZGF0ZU1hdGNoPy5bMF0sXG4gICAgYm9keSxcbiAgfVxufVxuXG4vKiogU2VyaWFsaXplIGFuIGVudHJ5J3MgbWRhc3QgY2hpbGRyZW4gYmFjayB0byBtYXJrZG93biAqL1xuZnVuY3Rpb24gcmVuZGVyRW50cnlCb2R5KGNoaWxkcmVuOiBSb290Q29udGVudFtdKSB7XG4gIGNvbnN0IHJvb3Q6IFJvb3QgPSB7IHR5cGU6IFwicm9vdFwiLCBjaGlsZHJlbiB9XG4gIHJldHVybiBzdHJpbmdpZmllci5zdHJpbmdpZnkocm9vdCkudHJpbUVuZCgpXG59XG5cbi8qKiBTaGlmdCBoMuKAk2g2IHVwIGJ5IG9uZSBzbyB0aGUgdmVyc2lvbiBiZWNvbWVzIHRoZSBhcnRpY2xlJ3MgaDEgKi9cbmZ1bmN0aW9uIHByb21vdGVIZWFkaW5ncyhib2R5OiBzdHJpbmcpIHtcbiAgY29uc3QgdHJlZSA9IHBhcnNlci5wYXJzZShib2R5KSBhcyBSb290XG4gIHZpc2l0KHRyZWUsIFwiaGVhZGluZ1wiLCBub2RlID0+IHtcbiAgICBpZiAobm9kZS5kZXB0aCA+IDEpIG5vZGUuZGVwdGggPSAobm9kZS5kZXB0aCAtIDEpIGFzIDEgfCAyIHwgMyB8IDQgfCA1XG4gIH0pXG4gIHJldHVybiBzdHJpbmdpZmllci5zdHJpbmdpZnkodHJlZSkudHJpbUVuZCgpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUdpdEh1YihcbiAgc291cmNlOiBzdHJpbmcsXG4gIG1ldGFQYXRoOiBzdHJpbmcsXG4gIGNhY2hlRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPENoYW5nZWxvZ0VudHJ5W10gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VHaXRIdWJSZXBvKHNvdXJjZSlcbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBHaXRIdWIgcmVwbyBmcm9tIHNvdXJjZTogJHtzb3VyY2V9YClcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7cGFyc2VkLm93bmVyfS8ke3BhcnNlZC5yZXBvfS9yZWxlYXNlcz9wZXJfcGFnZT0xMDBgXG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvblwiLFxuICAgIFwiWC1HaXRIdWItQXBpLVZlcnNpb25cIjogXCIyMDIyLTExLTI4XCIsXG4gIH1cblxuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTlxuICBpZiAodG9rZW4pIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gXG5cbiAgY29uc3QgbWV0YSA9IGF3YWl0IHJlYWRNZXRhKG1ldGFQYXRoKVxuICBjb25zdCBoYXNDYWNoZSA9IGF3YWl0IGV4aXN0cyhjYWNoZURpcilcbiAgaWYgKG1ldGEgJiYgaGFzQ2FjaGUpIGhlYWRlcnNbXCJJZi1Ob25lLU1hdGNoXCJdID0gbWV0YS5ldGFnXG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7IGhlYWRlcnMgfSlcblxuICBpZiAocmVzLnN0YXR1cyA9PT0gMzA0KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSByZXMuaGVhZGVycy5nZXQoXCJ4LXJhdGVsaW1pdC1yZW1haW5pbmdcIilcbiAgICBjb25zdCByZXNldCA9IHJlcy5oZWFkZXJzLmdldChcIngtcmF0ZWxpbWl0LXJlc2V0XCIpXG4gICAgY29uc3QgbXNnID0gYEdpdEh1YiBBUEkgJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fSAocmF0ZS1saW1pdCByZW1haW5pbmc6ICR7cmVtYWluaW5nID8/IFwiP1wifSwgcmVzZXQ6ICR7cmVzZXQgPz8gXCI/XCJ9KWBcbiAgICBpZiAoaGFzQ2FjaGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHttc2d9IOKAlCBmYWxsaW5nIGJhY2sgdG8gY2FjaGVkIGNoYW5nZWxvZ2ApXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpXG4gIH1cblxuICBjb25zdCByZWxlYXNlcyA9IChhd2FpdCByZXMuanNvbigpKSBhcyBSZWxlYXNlW11cbiAgY29uc3QgZXRhZyA9IHJlcy5oZWFkZXJzLmdldChcImV0YWdcIilcbiAgaWYgKGV0YWcpIHtcbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBtZXRhUGF0aCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7IGV0YWcsIGZldGNoZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0gc2F0aXNmaWVzIENhY2hlTWV0YSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgICksXG4gICAgICBcInV0Zi04XCIsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VzLm1hcChyZWxlYXNlID0+ICh7XG4gICAgc2x1Zzogc2x1Z2lmeShyZWxlYXNlLnRhZ19uYW1lKSxcbiAgICB0aXRsZTogcmVsZWFzZS50YWdfbmFtZSxcbiAgICBkYXRlOiByZWxlYXNlLnB1Ymxpc2hlZF9hdD8uc2xpY2UoMCwgMTApLFxuICAgIGJvZHk6IChyZWxlYXNlLmJvZHkgPz8gXCJcIikudHJpbSgpLFxuICB9KSlcbn1cblxuZnVuY3Rpb24gd3JhcEZyb250bWF0dGVyKGVudHJ5OiBDaGFuZ2Vsb2dFbnRyeSwgc2VjdGlvbjogQ2hhbmdlbG9nU2VjdGlvbikge1xuICBjb25zdCBsaW5lcyA9IFtcbiAgICBcIi0tLVwiLFxuICAgIGB0aXRsZTogJHtlbnRyeS50aXRsZX1gLFxuICAgIGBwYXRoOiAke3NlY3Rpb24ucHJlZml4fSR7ZW50cnkuc2x1Z30vYCxcbiAgXVxuICBpZiAoZW50cnkuZGF0ZSkgbGluZXMucHVzaChgZGF0ZTogJHtlbnRyeS5kYXRlfWApXG4gIGxpbmVzLnB1c2goXCItLS1cIiwgXCJcIiwgYCMgJHtlbnRyeS50aXRsZX1gLCBcIlwiLCBwcm9tb3RlSGVhZGluZ3MoZW50cnkuYm9keSkpXG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRNZXRhKG1ldGFQYXRoOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlTWV0YSB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlYWRGaWxlKG1ldGFQYXRoLCBcInV0Zi04XCIpXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZU1ldGFcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4aXN0cyhwYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhY2Nlc3MocGF0aClcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
-
import { splitLocalChangelog } from "./build.js";
|
|
3
|
-
describe("splitLocalChangelog", () => {
|
|
4
|
-
it("splits by h2 headings", () => {
|
|
5
|
-
const input = `# Changelog
|
|
6
|
-
|
|
7
|
-
## [0.2.0] - 2026-04-15
|
|
8
|
-
|
|
9
|
-
### Added
|
|
10
|
-
|
|
11
|
-
- Foo
|
|
12
|
-
|
|
13
|
-
## [0.1.0] - 2026-04-10
|
|
14
|
-
|
|
15
|
-
Initial release.
|
|
16
|
-
`;
|
|
17
|
-
const entries = splitLocalChangelog(input);
|
|
18
|
-
expect(entries).toHaveLength(2);
|
|
19
|
-
expect(entries[0]?.title).toBe("0.2.0");
|
|
20
|
-
expect(entries[0]?.date).toBe("2026-04-15");
|
|
21
|
-
expect(entries[0]?.slug).toBe("0-2-0");
|
|
22
|
-
expect(entries[1]?.title).toBe("0.1.0");
|
|
23
|
-
expect(entries[1]?.date).toBe("2026-04-10");
|
|
24
|
-
});
|
|
25
|
-
it("preserves h3 heading structure in body", () => {
|
|
26
|
-
const input = `## 1.0.0
|
|
27
|
-
|
|
28
|
-
### Added
|
|
29
|
-
|
|
30
|
-
- Thing one
|
|
31
|
-
`;
|
|
32
|
-
const entries = splitLocalChangelog(input);
|
|
33
|
-
expect(entries[0]?.body).toContain("### Added");
|
|
34
|
-
expect(entries[0]?.body).toContain("- Thing one");
|
|
35
|
-
});
|
|
36
|
-
it("ignores ## inside fenced code blocks", () => {
|
|
37
|
-
const input = `## 1.0.0
|
|
38
|
-
|
|
39
|
-
Some prose.
|
|
40
|
-
|
|
41
|
-
\`\`\`md
|
|
42
|
-
## Not a real version heading
|
|
43
|
-
\`\`\`
|
|
44
|
-
|
|
45
|
-
## 0.9.0
|
|
46
|
-
|
|
47
|
-
Older.
|
|
48
|
-
`;
|
|
49
|
-
const entries = splitLocalChangelog(input);
|
|
50
|
-
expect(entries).toHaveLength(2);
|
|
51
|
-
expect(entries[0]?.title).toBe("1.0.0");
|
|
52
|
-
expect(entries[0]?.body).toContain("Not a real version heading");
|
|
53
|
-
expect(entries[1]?.title).toBe("0.9.0");
|
|
54
|
-
});
|
|
55
|
-
it("handles bare version headings without brackets or date", () => {
|
|
56
|
-
const input = `## v1.2.3
|
|
57
|
-
|
|
58
|
-
Release notes.
|
|
59
|
-
`;
|
|
60
|
-
const entries = splitLocalChangelog(input);
|
|
61
|
-
expect(entries[0]?.title).toBe("v1.2.3");
|
|
62
|
-
expect(entries[0]?.slug).toBe("v1-2-3");
|
|
63
|
-
expect(entries[0]?.date).toBeUndefined();
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvY2hhbmdlbG9nL2J1aWxkLnVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRWhELFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtRQUMvQixNQUFNLEtBQUssR0FBRzs7Ozs7Ozs7Ozs7Q0FXakIsQ0FBQTtRQUNHLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDN0MsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELE1BQU0sS0FBSyxHQUFHOzs7OztDQUtqQixDQUFBO1FBQ0csTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDbkQsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1FBQzlDLE1BQU0sS0FBSyxHQUFHOzs7Ozs7Ozs7OztDQVdqQixDQUFBO1FBQ0csTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1FBQ2hFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEdBQUcsRUFBRTtRQUNoRSxNQUFNLEtBQUssR0FBRzs7O0NBR2pCLENBQUE7UUFDRyxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMxQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN4QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzFDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBzcGxpdExvY2FsQ2hhbmdlbG9nIH0gZnJvbSBcIi4vYnVpbGQudHNcIlxuXG5kZXNjcmliZShcInNwbGl0TG9jYWxDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcInNwbGl0cyBieSBoMiBoZWFkaW5nc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyBDaGFuZ2Vsb2dcblxuIyMgWzAuMi4wXSAtIDIwMjYtMDQtMTVcblxuIyMjIEFkZGVkXG5cbi0gRm9vXG5cbiMjIFswLjEuMF0gLSAyMDI2LTA0LTEwXG5cbkluaXRpYWwgcmVsZWFzZS5cbmBcbiAgICBjb25zdCBlbnRyaWVzID0gc3BsaXRMb2NhbENoYW5nZWxvZyhpbnB1dClcbiAgICBleHBlY3QoZW50cmllcykudG9IYXZlTGVuZ3RoKDIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnRpdGxlKS50b0JlKFwiMC4yLjBcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uZGF0ZSkudG9CZShcIjIwMjYtMDQtMTVcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uc2x1ZykudG9CZShcIjAtMi0wXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMV0/LnRpdGxlKS50b0JlKFwiMC4xLjBcIilcbiAgICBleHBlY3QoZW50cmllc1sxXT8uZGF0ZSkudG9CZShcIjIwMjYtMDQtMTBcIilcbiAgfSlcblxuICBpdChcInByZXNlcnZlcyBoMyBoZWFkaW5nIHN0cnVjdHVyZSBpbiBib2R5XCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGAjIyAxLjAuMFxuXG4jIyMgQWRkZWRcblxuLSBUaGluZyBvbmVcbmBcbiAgICBjb25zdCBlbnRyaWVzID0gc3BsaXRMb2NhbENoYW5nZWxvZyhpbnB1dClcbiAgICBleHBlY3QoZW50cmllc1swXT8uYm9keSkudG9Db250YWluKFwiIyMjIEFkZGVkXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmJvZHkpLnRvQ29udGFpbihcIi0gVGhpbmcgb25lXCIpXG4gIH0pXG5cbiAgaXQoXCJpZ25vcmVzICMjIGluc2lkZSBmZW5jZWQgY29kZSBibG9ja3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIDEuMC4wXG5cblNvbWUgcHJvc2UuXG5cblxcYFxcYFxcYG1kXG4jIyBOb3QgYSByZWFsIHZlcnNpb24gaGVhZGluZ1xuXFxgXFxgXFxgXG5cbiMjIDAuOS4wXG5cbk9sZGVyLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3QoZW50cmllc1swXT8udGl0bGUpLnRvQmUoXCIxLjAuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5ib2R5KS50b0NvbnRhaW4oXCJOb3QgYSByZWFsIHZlcnNpb24gaGVhZGluZ1wiKVxuICAgIGV4cGVjdChlbnRyaWVzWzFdPy50aXRsZSkudG9CZShcIjAuOS4wXCIpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGJhcmUgdmVyc2lvbiBoZWFkaW5ncyB3aXRob3V0IGJyYWNrZXRzIG9yIGRhdGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIHYxLjIuM1xuXG5SZWxlYXNlIG5vdGVzLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy50aXRsZSkudG9CZShcInYxLjIuM1wiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5zbHVnKS50b0JlKFwidjEtMi0zXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmRhdGUpLnRvQmVVbmRlZmluZWQoKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { UserConfig } from "../../models/config.js";
|
|
2
|
-
/**
|
|
3
|
-
* Validate and fill defaults for a partial config object.
|
|
4
|
-
*/
|
|
5
|
-
export function defineConfig(input) {
|
|
6
|
-
return UserConfig.parse(input);
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9jb25maWcvZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVuRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQWlDO0lBRWpDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBVc2VyQ29uZmlnIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25maWcudHNcIlxuXG4vKipcbiAqIFZhbGlkYXRlIGFuZCBmaWxsIGRlZmF1bHRzIGZvciBhIHBhcnRpYWwgY29uZmlnIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbmZpZyhcbiAgaW5wdXQ6IHouaW5wdXQ8dHlwZW9mIFVzZXJDb25maWc+LFxuKTogei5vdXRwdXQ8dHlwZW9mIFVzZXJDb25maWc+IHtcbiAgcmV0dXJuIFVzZXJDb25maWcucGFyc2UoaW5wdXQpXG59XG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
-
import { defineConfig } from "./define.js";
|
|
3
|
-
describe("defineConfig", () => {
|
|
4
|
-
it("should accept include as a string", () => {
|
|
5
|
-
const config = defineConfig({ include: "articles/**/*.mdx" });
|
|
6
|
-
expect(config.include).toBe("articles/**/*.mdx");
|
|
7
|
-
});
|
|
8
|
-
it("should accept include as an array", () => {
|
|
9
|
-
const config = defineConfig({
|
|
10
|
-
include: ["articles/**/*.mdx", "guides/**/*.mdx"],
|
|
11
|
-
});
|
|
12
|
-
expect(config.include).toEqual(["articles/**/*.mdx", "guides/**/*.mdx"]);
|
|
13
|
-
});
|
|
14
|
-
it("should accept optional exclude", () => {
|
|
15
|
-
const config = defineConfig({
|
|
16
|
-
include: "**/*.mdx",
|
|
17
|
-
exclude: "drafts/**",
|
|
18
|
-
});
|
|
19
|
-
expect(config.exclude).toBe("drafts/**");
|
|
20
|
-
});
|
|
21
|
-
it("should allow omitting exclude", () => {
|
|
22
|
-
const config = defineConfig({ include: "**/*.mdx" });
|
|
23
|
-
expect(config.exclude).toBeUndefined();
|
|
24
|
-
});
|
|
25
|
-
it("should reject missing include", () => {
|
|
26
|
-
expect(() => defineConfig({})).toThrow();
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hY3Rpb25zL2NvbmZpZy9kZWZpbmUudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQTtRQUM3RCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2xELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUM7U0FDbEQsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7SUFDMUUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztZQUMxQixPQUFPLEVBQUUsVUFBVTtZQUNuQixPQUFPLEVBQUUsV0FBVztTQUNyQixDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMxQyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2pELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiLi9kZWZpbmUudHNcIlxuXG5kZXNjcmliZShcImRlZmluZUNvbmZpZ1wiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGFjY2VwdCBpbmNsdWRlIGFzIGEgc3RyaW5nXCIsICgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBkZWZpbmVDb25maWcoeyBpbmNsdWRlOiBcImFydGljbGVzLyoqLyoubWR4XCIgfSlcbiAgICBleHBlY3QoY29uZmlnLmluY2x1ZGUpLnRvQmUoXCJhcnRpY2xlcy8qKi8qLm1keFwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGFjY2VwdCBpbmNsdWRlIGFzIGFuIGFycmF5XCIsICgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBkZWZpbmVDb25maWcoe1xuICAgICAgaW5jbHVkZTogW1wiYXJ0aWNsZXMvKiovKi5tZHhcIiwgXCJndWlkZXMvKiovKi5tZHhcIl0sXG4gICAgfSlcbiAgICBleHBlY3QoY29uZmlnLmluY2x1ZGUpLnRvRXF1YWwoW1wiYXJ0aWNsZXMvKiovKi5tZHhcIiwgXCJndWlkZXMvKiovKi5tZHhcIl0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgYWNjZXB0IG9wdGlvbmFsIGV4Y2x1ZGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGRlZmluZUNvbmZpZyh7XG4gICAgICBpbmNsdWRlOiBcIioqLyoubWR4XCIsXG4gICAgICBleGNsdWRlOiBcImRyYWZ0cy8qKlwiLFxuICAgIH0pXG4gICAgZXhwZWN0KGNvbmZpZy5leGNsdWRlKS50b0JlKFwiZHJhZnRzLyoqXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgb21pdHRpbmcgZXhjbHVkZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gZGVmaW5lQ29uZmlnKHsgaW5jbHVkZTogXCIqKi8qLm1keFwiIH0pXG4gICAgZXhwZWN0KGNvbmZpZy5leGNsdWRlKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcblxuICBpdChcInNob3VsZCByZWplY3QgbWlzc2luZyBpbmNsdWRlXCIsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gZGVmaW5lQ29uZmlnKHt9IGFzIGFueSkpLnRvVGhyb3coKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvY29uZmlnL2xvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBSXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFhO0lBQzVDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUN4QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FDcEMsQ0FBQTtJQUNELE1BQU0sT0FBTyxHQUFHLFdBQVcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUM5RSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxDQUFBO0lBQ2pFLHlFQUF5RTtJQUN6RSxNQUFNLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUE7SUFDN0QsTUFBTSxNQUFNLEdBQTRCLE1BQU0sTUFBTSxrQ0FBQyxHQUFHLEVBQUMsQ0FBQTtJQUN6RCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQXFDLENBQUMsQ0FBQTtJQUN4RSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUE7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB7IFVzZXJDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiLi9kZWZpbmUudHNcIlxuXG4vKipcbiAqIExvYWQgYW5kIHZhbGlkYXRlIGEgY29uZmlnIGZpbGUsIGNoZWNraW5nIC0tY29uZmlnLy1jIENMSSBhcmcsIHRoZW4gY3dkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvbmZpZyhwYXRoPzogc3RyaW5nKTogUHJvbWlzZTxDb25maWc+IHtcbiAgY29uc3QgY29uZmlnSW5kZXggPSBwcm9jZXNzLmFyZ3YuZmluZEluZGV4KFxuICAgIGEgPT4gYSA9PT0gXCItY1wiIHx8IGEgPT09IFwiLS1jb25maWdcIixcbiAgKVxuICBjb25zdCBjbGlQYXRoID0gY29uZmlnSW5kZXggIT09IC0xID8gcHJvY2Vzcy5hcmd2W2NvbmZpZ0luZGV4ICsgMV0gOiB1bmRlZmluZWRcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKHBhdGggPz8gY2xpUGF0aCA/PyBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAvLyBDYWNoZS1idXN0IHRoZSBFU00gaW1wb3J0IHNvIGRldi1zZXJ2ZXIgcmVzdGFydCByZWxvYWRzIGVkaXRzIG9uIGRpc2suXG4gIGNvbnN0IHVybCA9IGAke3BhdGhUb0ZpbGVVUkwocmVzb2x2ZWQpLmhyZWZ9P3Q9JHtEYXRlLm5vdygpfWBcbiAgY29uc3QgbW9kdWxlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGF3YWl0IGltcG9ydCh1cmwpXG4gIGNvbnN0IGlucHV0ID0gZGVmaW5lQ29uZmlnKG1vZHVsZS5kZWZhdWx0IGFzIHouaW5wdXQ8dHlwZW9mIFVzZXJDb25maWc+KVxuICByZXR1cm4geyAuLi5pbnB1dCwgcm9vdDogZGlybmFtZShyZXNvbHZlZCksIGNvbmZpZ1BhdGg6IHJlc29sdmVkIH1cbn1cbiJdfQ==
|
|
@@ -1,23 +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 validate loaded config", () => temporaryDirectoryTask(async (tmpDir) => {
|
|
18
|
-
const configPath = join(tmpDir, "livemark.config.ts");
|
|
19
|
-
fs.writeFileSync(configPath, "export default {}\n");
|
|
20
|
-
await expect(loadConfig(configPath)).rejects.toThrow();
|
|
21
|
-
}));
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9jb25maWcvbG9hZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXRDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2RCxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUN0RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUUsQ0FDL0Msc0JBQXNCLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUNyRCxFQUFFLENBQUMsYUFBYSxDQUNkLFVBQVUsRUFDVixtREFBbUQsQ0FDcEQsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVMLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUUsQ0FDdkMsc0JBQXNCLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUNyRCxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ1AsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayB9IGZyb20gXCJ0ZW1weVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSBcIi4vbG9hZC50c1wiXG5cbmRlc2NyaWJlKFwibG9hZENvbmZpZ1wiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIHRocm93IHdoZW4gbm8gY29uZmlnIGZpbGUgZXhpc3RzXCIsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleHBlY3QobG9hZENvbmZpZyhcIi9ub25leGlzdGVudC9jb25maWcudHNcIikpLnJlamVjdHMudG9UaHJvdygpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbG9hZCBjb25maWcgZnJvbSBleHBsaWNpdCBwYXRoXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyB0bXBEaXIgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4odG1wRGlyLCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgY29uZmlnUGF0aCxcbiAgICAgICAgJ2V4cG9ydCBkZWZhdWx0IHsgaW5jbHVkZTogXCJhcnRpY2xlcy8qKi8qLm1keFwiIH1cXG4nLFxuICAgICAgKVxuICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZyhjb25maWdQYXRoKVxuICAgICAgZXhwZWN0KGNvbmZpZy5pbmNsdWRlKS50b0JlKFwiYXJ0aWNsZXMvKiovKi5tZHhcIilcbiAgICAgIGV4cGVjdChjb25maWcucm9vdCkudG9CZSh0bXBEaXIpXG4gICAgfSkpXG5cbiAgaXQoXCJzaG91bGQgdmFsaWRhdGUgbG9hZGVkIGNvbmZpZ1wiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgdG1wRGlyID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKHRtcERpciwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoY29uZmlnUGF0aCwgXCJleHBvcnQgZGVmYXVsdCB7fVxcblwiKVxuICAgICAgYXdhaXQgZXhwZWN0KGxvYWRDb25maWcoY29uZmlnUGF0aCkpLnJlamVjdHMudG9UaHJvdygpXG4gICAgfSkpXG59KVxuIl19
|
package/build/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, "..", "website", "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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jb21tYW5kcy9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtBQUUvRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDdEMsV0FBVyxDQUFDLCtCQUErQixDQUFDO0tBQzVDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNqQixNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDbkQsTUFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUE7QUFDMUIsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiXG5pbXBvcnQgeyBjcmVhdGVCdWlsZGVyIH0gZnJvbSBcInZpdGVcIlxuXG5jb25zdCBjb25maWdGaWxlID0gam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcIi4uXCIsIFwid2Vic2l0ZVwiLCBcInZpdGUuY29uZmlnLnRzXCIpXG5cbi8qKlxuICogQnVpbGQgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZCA9IG5ldyBDb21tYW5kKFwiYnVpbGRcIilcbiAgLmRlc2NyaXB0aW9uKFwiQnVpbGQgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb25cIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIoeyBjb25maWdGaWxlIH0pXG4gICAgYXdhaXQgYnVpbGRlci5idWlsZEFwcCgpXG4gIH0pXG4iXX0=
|
package/build/commands/escape.js
DELETED
|
@@ -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 "../website/plugins/vite-livemark.js";
|
|
6
|
-
const defaultsRoot = join(import.meta.dirname, "..", "website");
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbWFuZHMvZXNjYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUNSLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUV0RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUUvRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ3hDLFdBQVcsQ0FBQyx5REFBeUQsQ0FBQztLQUN0RSxRQUFRLENBQ1AsUUFBUSxFQUNSLDBEQUEwRCxDQUMzRDtLQUNBLE1BQU0sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtJQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLGVBQWUsRUFBRTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxFQUFFLENBQUMsR0FBRyxDQUFDLCtEQUErRCxDQUFDLENBQ3hFLENBQUE7UUFDRCxPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxLQUFLLENBQ1gsRUFBRSxDQUFDLEdBQUcsQ0FDSixXQUFXLE9BQU8seUNBQXlDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUMxRixDQUNGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxPQUFPLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtRQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN0RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7UUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FDbEUsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUosU0FBUyxlQUFlO0lBQ3RCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUMxQixLQUFLLE1BQU0sTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUFFLFNBQVE7UUFDOUIsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIHJlYWRkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHN0YXRTeW5jLFxuICB3cml0ZUZpbGVTeW5jLFxufSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiXG5pbXBvcnQgcGMgZnJvbSBcInBpY29jb2xvcnNcIlxuaW1wb3J0IHsgT1ZFUlJJREVfU1VCRElSUyB9IGZyb20gXCIuLi93ZWJzaXRlL3BsdWdpbnMvdml0ZS1saXZlbWFyay50c1wiXG5cbmNvbnN0IGRlZmF1bHRzUm9vdCA9IGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiLCBcIndlYnNpdGVcIilcblxuLyoqXG4gKiBMaXN0IG9yIGNvcHkgb3ZlcnJpZGFibGUgbGl2ZW1hcmsgZmlsZXMgaW50byBgLmxpdmVtYXJrL2AuXG4gKlxuICogV2l0aG91dCBhbiBhcmd1bWVudCwgcHJpbnRzIGV2ZXJ5IGZpbGUgeW91IGNhbiBzaGFkb3cuIFdpdGggYSBwYXRoLCBjb3BpZXNcbiAqIHRoZSBkZWZhdWx0IGZyb20gdGhlIGxpdmVtYXJrIHBhY2thZ2UgaW50byBgLmxpdmVtYXJrLzxwYXRoPmA7IGZhaWxzIGlmIHRoZVxuICogZGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGUgPSBuZXcgQ29tbWFuZChcImVzY2FwZVwiKVxuICAuZGVzY3JpcHRpb24oXCJMaXN0IG9yIGNvcHkgb3ZlcnJpZGFibGUgbGl2ZW1hcmsgZmlsZXMgaW50byAubGl2ZW1hcmsvXCIpXG4gIC5hcmd1bWVudChcbiAgICBcIltwYXRoXVwiLFxuICAgIFwicGF0aCByZWxhdGl2ZSB0byAubGl2ZW1hcmsvIChlLmcuIGNvbXBvbmVudHMvRm9vdGVyLnRzeClcIixcbiAgKVxuICAuYWN0aW9uKChyZWxQYXRoPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFyZWxQYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgbGlzdE92ZXJyaWRhYmxlKCkpIGNvbnNvbGUubG9nKGZpbGUpXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgcGMuZGltKFwiXFxuUnVuICdsaXZlbWFyayBlc2NhcGUgPHBhdGg+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, "..", "website", "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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2NvbW1hbmRzL3ByZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRTdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQztLQUMxQyxXQUFXLENBQUMsc0NBQXNDLENBQUM7S0FDbkQsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDO1FBQy9CLFVBQVU7UUFDVixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7S0FDcEMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ2xCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQzFDLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIlxuaW1wb3J0IHsgcHJldmlldyBhcyB2aXRlUHJldmlldyB9IGZyb20gXCJ2aXRlXCJcblxuY29uc3QgY29uZmlnRmlsZSA9IGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiLCBcIndlYnNpdGVcIiwgXCJ2aXRlLmNvbmZpZy50c1wiKVxuXG4vKipcbiAqIFByZXZpZXcgdGhlIHByb2R1Y3Rpb24gYnVpbGQgbG9jYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZXZpZXcgPSBuZXcgQ29tbWFuZChcInByZXZpZXdcIilcbiAgLmRlc2NyaXB0aW9uKFwiUHJldmlldyB0aGUgcHJvZHVjdGlvbiBidWlsZCBsb2NhbGx5XCIpXG4gIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHZpdGVQcmV2aWV3KHtcbiAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICBwcmV2aWV3OiB7IHBvcnQ6IDgwMDAsIGhvc3Q6IHRydWUgfSxcbiAgICB9KVxuICAgIHNlcnZlci5wcmludFVybHMoKVxuICAgIHNlcnZlci5iaW5kQ0xJU2hvcnRjdXRzKHsgcHJpbnQ6IHRydWUgfSlcbiAgfSlcbiJdfQ==
|
package/build/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, "..", "website", "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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jb21tYW5kcy9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtBQUUvRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDdEMsV0FBVyxDQUFDLHFCQUFxQixDQUFDO0tBQ2xDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQztRQUNoQyxVQUFVO1FBQ1YsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0tBQ25DLENBQUMsQ0FBQTtJQUNGLE1BQU0sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUMxQyxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gXCJ2aXRlXCJcblxuY29uc3QgY29uZmlnRmlsZSA9IGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiLCBcIndlYnNpdGVcIiwgXCJ2aXRlLmNvbmZpZy50c1wiKVxuXG4vKipcbiAqIFN0YXJ0IGEgZGV2ZWxvcG1lbnQgc2VydmVyLlxuICovXG5leHBvcnQgY29uc3Qgc3RhcnQgPSBuZXcgQ29tbWFuZChcInN0YXJ0XCIpXG4gIC5kZXNjcmlwdGlvbihcIlN0YXJ0IGEgbGl2ZSBzZXJ2ZXJcIilcbiAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgY3JlYXRlU2VydmVyKHtcbiAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICBzZXJ2ZXI6IHsgcG9ydDogODAwMCwgaG9zdDogdHJ1ZSB9LFxuICAgIH0pXG4gICAgYXdhaXQgc2VydmVyLmxpc3RlbigpXG4gICAgc2VydmVyLnByaW50VXJscygpXG4gICAgc2VydmVyLmJpbmRDTElTaG9ydGN1dHMoeyBwcmludDogdHJ1ZSB9KVxuICB9KVxuIl19
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
site?: string | undefined;
|
|
3
|
-
favicon?: string | undefined;
|
|
4
|
-
logo?: string | undefined;
|
|
5
|
-
title: string;
|
|
6
|
-
description: string;
|
|
7
|
-
include: string | string[];
|
|
8
|
-
exclude?: string | string[] | undefined;
|
|
9
|
-
codeThemeLight: "ayu-light" | "catppuccin-latte" | "everforest-light" | "github-light" | "github-light-default" | "github-light-high-contrast" | "gruvbox-light-hard" | "gruvbox-light-medium" | "gruvbox-light-soft" | "horizon-bright" | "kanagawa-lotus" | "light-plus" | "material-theme-lighter" | "min-light" | "night-owl-light" | "one-light" | "rose-pine-dawn" | "slack-ochin" | "snazzy-light" | "solarized-light" | "vitesse-light";
|
|
10
|
-
codeThemeDark: "andromeeda" | "aurora-x" | "ayu-dark" | "ayu-mirage" | "catppuccin-frappe" | "catppuccin-macchiato" | "catppuccin-mocha" | "dark-plus" | "dracula" | "dracula-soft" | "everforest-dark" | "github-dark" | "github-dark-default" | "github-dark-dimmed" | "github-dark-high-contrast" | "gruvbox-dark-hard" | "gruvbox-dark-medium" | "gruvbox-dark-soft" | "horizon" | "houston" | "kanagawa-dragon" | "kanagawa-wave" | "laserwave" | "material-theme" | "material-theme-darker" | "material-theme-ocean" | "material-theme-palenight" | "min-dark" | "monokai" | "night-owl" | "nord" | "one-dark-pro" | "plastic" | "poimandres" | "red" | "rose-pine" | "rose-pine-moon" | "slack-dark" | "solarized-dark" | "synthwave-84" | "tokyo-night" | "vesper" | "vitesse-black" | "vitesse-dark";
|
|
11
|
-
links?: {
|
|
12
|
-
url: string;
|
|
13
|
-
title: string;
|
|
14
|
-
icon?: string | undefined;
|
|
15
|
-
prefix?: string | undefined;
|
|
16
|
-
position: "header" | "sidebar";
|
|
17
|
-
}[] | undefined;
|
|
18
|
-
sections?: ({
|
|
19
|
-
icon?: string | undefined;
|
|
20
|
-
title: string;
|
|
21
|
-
prefix: string;
|
|
22
|
-
position: "header" | "sidebar";
|
|
23
|
-
type: "article";
|
|
24
|
-
} | {
|
|
25
|
-
icon?: string | undefined;
|
|
26
|
-
title: string;
|
|
27
|
-
prefix: string;
|
|
28
|
-
position: "header" | "sidebar";
|
|
29
|
-
type: "blog";
|
|
30
|
-
} | {
|
|
31
|
-
icon?: string | undefined;
|
|
32
|
-
title: string;
|
|
33
|
-
prefix: string;
|
|
34
|
-
position: "header" | "sidebar";
|
|
35
|
-
type: "changelog";
|
|
36
|
-
source: string;
|
|
37
|
-
version?: boolean | undefined;
|
|
38
|
-
})[] | undefined;
|
|
39
|
-
patches?: {
|
|
40
|
-
file: string;
|
|
41
|
-
article: {
|
|
42
|
-
title?: string | undefined;
|
|
43
|
-
label?: string | undefined;
|
|
44
|
-
description?: string | undefined;
|
|
45
|
-
icon?: string | undefined;
|
|
46
|
-
order?: number | undefined;
|
|
47
|
-
path?: string | undefined;
|
|
48
|
-
group?: string | undefined;
|
|
49
|
-
sidebar?: boolean | undefined;
|
|
50
|
-
toc?: boolean | undefined;
|
|
51
|
-
image?: string | undefined;
|
|
52
|
-
author?: string | string[] | undefined;
|
|
53
|
-
date?: string | undefined;
|
|
54
|
-
tags?: string[] | undefined;
|
|
55
|
-
};
|
|
56
|
-
}[] | undefined;
|
|
57
|
-
};
|
|
58
|
-
export default _default;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from "livemark";
|
|
2
|
-
export default defineConfig({
|
|
3
|
-
include: "docs/*.md",
|
|
4
|
-
});
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RvY3MvbWFya2Rvd24vaW5jbHVkZXMvZXhhbXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXZDLGVBQWUsWUFBWSxDQUFDO0lBQzFCLE9BQU8sRUFBRSxXQUFXO0NBQ3JCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJsaXZlbWFya1wiXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIGluY2x1ZGU6IFwiZG9jcy8qLm1kXCIsXG59KVxuIl19
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
process.removeAllListeners("warning");
|
|
3
|
-
process.on("warning", warning => {
|
|
4
|
-
if (warning.name === "ExperimentalWarning") {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
console.warn(warning);
|
|
8
|
-
});
|
|
9
|
-
const { program } = await import("../program.js");
|
|
10
|
-
program.parse();
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2VudHJ5cG9pbnRzL21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUNyQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtJQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztRQUMzQyxPQUFNO0lBQ1IsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDdkIsQ0FBQyxDQUFDLENBQUE7QUFFRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7QUFDakQsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyhcIndhcm5pbmdcIilcbnByb2Nlc3Mub24oXCJ3YXJuaW5nXCIsIHdhcm5pbmcgPT4ge1xuICBpZiAod2FybmluZy5uYW1lID09PSBcIkV4cGVyaW1lbnRhbFdhcm5pbmdcIikge1xuICAgIHJldHVyblxuICB9XG4gIGNvbnNvbGUud2Fybih3YXJuaW5nKVxufSlcblxuY29uc3QgeyBwcm9ncmFtIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi9wcm9ncmFtLnRzXCIpXG5wcm9ncmFtLnBhcnNlKClcbiJdfQ==
|
package/build/helpers/program.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import pc from "picocolors";
|
|
2
|
-
export const helpConfiguration = {
|
|
3
|
-
styleTitle: str => pc.bold(str.toUpperCase().replace(":", "")),
|
|
4
|
-
};
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2hlbHBlcnMvcHJvZ3JhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0IsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXNCO0lBQ2xELFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDL0QsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSGVscENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCJcbmltcG9ydCBwYyBmcm9tIFwicGljb2NvbG9yc1wiXG5cbmV4cG9ydCBjb25zdCBoZWxwQ29uZmlndXJhdGlvbjogSGVscENvbmZpZ3VyYXRpb24gPSB7XG4gIHN0eWxlVGl0bGU6IHN0ciA9PiBwYy5ib2xkKHN0ci50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoXCI6XCIsIFwiXCIpKSxcbn1cbiJdfQ==
|
package/build/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { defineConfig } from "./actions/config/define.js";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiLi9hY3Rpb25zL2NvbmZpZy9kZWZpbmUudHNcIlxuIl19
|