livemark 0.7.2 → 0.9.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/README.md +115 -4
- package/package.json +15 -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 +44 -44
- 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 +12 -3
- 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 +5 -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/source/program.ts +18 -0
- package/source/settings.ts +6 -0
- package/{build/website → source}/vite.config.ts +14 -9
- 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 +104 -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 +200 -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 +58 -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.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 +67 -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/package.json +0 -138
- package/build/program.js +0 -18
- package/build/settings.js +0 -7
- 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/routeTree.gen.ts +0 -86
- /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}/plugins/vite-livemark.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
- /package/{build → target}/settings.d.ts +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
+
import { extractToc } from "./toc.js";
|
|
3
|
+
describe("extractToc", () => {
|
|
4
|
+
it("should extract headings with auto-generated slugs", () => {
|
|
5
|
+
const content = "## Introduction\n\n### Getting Started";
|
|
6
|
+
const toc = extractToc(content);
|
|
7
|
+
expect(toc).toEqual([
|
|
8
|
+
{ url: "#introduction", title: "Introduction", depth: 2 },
|
|
9
|
+
{ url: "#getting-started", title: "Getting Started", depth: 3 },
|
|
10
|
+
]);
|
|
11
|
+
});
|
|
12
|
+
it("should use custom id when [#custom-id] syntax is present", () => {
|
|
13
|
+
const content = "## My Section [#custom-id]\n\n### Sub Section";
|
|
14
|
+
const toc = extractToc(content);
|
|
15
|
+
expect(toc).toEqual([
|
|
16
|
+
{ url: "#custom-id", title: "My Section", depth: 2 },
|
|
17
|
+
{ url: "#sub-section", title: "Sub Section", depth: 3 },
|
|
18
|
+
]);
|
|
19
|
+
});
|
|
20
|
+
it("should strip [#id] from the displayed title", () => {
|
|
21
|
+
const content = "## Installation [#install]";
|
|
22
|
+
const toc = extractToc(content);
|
|
23
|
+
expect(toc).toEqual([{ url: "#install", title: "Installation", depth: 2 }]);
|
|
24
|
+
});
|
|
25
|
+
it("should handle inline formatting with custom ids", () => {
|
|
26
|
+
const content = "## **Bold** Title [#bold-title]";
|
|
27
|
+
const toc = extractToc(content);
|
|
28
|
+
expect(toc).toEqual([{ url: "#bold-title", title: "Bold Title", depth: 2 }]);
|
|
29
|
+
});
|
|
30
|
+
it("should handle code formatting with custom ids", () => {
|
|
31
|
+
const content = "## `config` Options [#config-opts]";
|
|
32
|
+
const toc = extractToc(content);
|
|
33
|
+
expect(toc).toEqual([
|
|
34
|
+
{ url: "#config-opts", title: "config Options", depth: 2 },
|
|
35
|
+
]);
|
|
36
|
+
});
|
|
37
|
+
it("should skip h1 headings", () => {
|
|
38
|
+
const content = "# Title\n\n## Section";
|
|
39
|
+
const toc = extractToc(content);
|
|
40
|
+
expect(toc).toEqual([{ url: "#section", title: "Section", depth: 2 }]);
|
|
41
|
+
});
|
|
42
|
+
it("should exclude [step] headings from TOC", () => {
|
|
43
|
+
const content = "## Overview\n\n### Install Dependencies [step]\n\n### Configure Project [step]";
|
|
44
|
+
const toc = extractToc(content);
|
|
45
|
+
expect(toc).toEqual([{ url: "#overview", title: "Overview", depth: 2 }]);
|
|
46
|
+
});
|
|
47
|
+
it("should skip headings with [!toc] annotation", () => {
|
|
48
|
+
const content = "## Visible\n\n## Hidden From TOC [!toc]\n\n## Also Visible";
|
|
49
|
+
const toc = extractToc(content);
|
|
50
|
+
expect(toc).toEqual([
|
|
51
|
+
{ url: "#visible", title: "Visible", depth: 2 },
|
|
52
|
+
{ url: "#also-visible", title: "Also Visible", depth: 2 },
|
|
53
|
+
]);
|
|
54
|
+
});
|
|
55
|
+
it("should include [toc] headings with annotation stripped from title", () => {
|
|
56
|
+
const content = "## Regular\n\n## TOC Only [toc]\n\n## Another";
|
|
57
|
+
const toc = extractToc(content);
|
|
58
|
+
expect(toc).toEqual([
|
|
59
|
+
{ url: "#regular", title: "Regular", depth: 2 },
|
|
60
|
+
{ url: "#toc-only", title: "TOC Only", depth: 2 },
|
|
61
|
+
{ url: "#another", title: "Another", depth: 2 },
|
|
62
|
+
]);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvaGVscGVycy90b2MudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXJDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7UUFDM0QsTUFBTSxPQUFPLEdBQUcsd0NBQXdDLENBQUE7UUFDeEQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbEIsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN6RCxFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtTQUNoRSxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7UUFDbEUsTUFBTSxPQUFPLEdBQUcsK0NBQStDLENBQUE7UUFDL0QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbEIsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNwRCxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1NBQ3hELENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxNQUFNLE9BQU8sR0FBRyw0QkFBNEIsQ0FBQTtRQUM1QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1FBQ3pELE1BQU0sT0FBTyxHQUFHLGlDQUFpQyxDQUFBO1FBQ2pELE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7UUFDdkQsTUFBTSxPQUFPLEdBQUcsb0NBQW9DLENBQUE7UUFDcEQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbEIsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1NBQzNELENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQTtRQUN2QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDeEUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1FBQ2pELE1BQU0sT0FBTyxHQUNYLGdGQUFnRixDQUFBO1FBQ2xGLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7UUFDckQsTUFBTSxPQUFPLEdBQUcsNERBQTRELENBQUE7UUFDNUUsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbEIsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMvQyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1NBQzFELENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEdBQUcsRUFBRTtRQUMzRSxNQUFNLE9BQU8sR0FBRywrQ0FBK0MsQ0FBQTtRQUMvRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNsQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQy9DLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDakQsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtTQUNoRCxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgZXh0cmFjdFRvYyB9IGZyb20gXCIuL3RvYy50c1wiXG5cbmRlc2NyaWJlKFwiZXh0cmFjdFRvY1wiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGV4dHJhY3QgaGVhZGluZ3Mgd2l0aCBhdXRvLWdlbmVyYXRlZCBzbHVnc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFwiIyMgSW50cm9kdWN0aW9uXFxuXFxuIyMjIEdldHRpbmcgU3RhcnRlZFwiXG4gICAgY29uc3QgdG9jID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGV4cGVjdCh0b2MpLnRvRXF1YWwoW1xuICAgICAgeyB1cmw6IFwiI2ludHJvZHVjdGlvblwiLCB0aXRsZTogXCJJbnRyb2R1Y3Rpb25cIiwgZGVwdGg6IDIgfSxcbiAgICAgIHsgdXJsOiBcIiNnZXR0aW5nLXN0YXJ0ZWRcIiwgdGl0bGU6IFwiR2V0dGluZyBTdGFydGVkXCIsIGRlcHRoOiAzIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCB1c2UgY3VzdG9tIGlkIHdoZW4gWyNjdXN0b20taWRdIHN5bnRheCBpcyBwcmVzZW50XCIsICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gXCIjIyBNeSBTZWN0aW9uIFsjY3VzdG9tLWlkXVxcblxcbiMjIyBTdWIgU2VjdGlvblwiXG4gICAgY29uc3QgdG9jID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGV4cGVjdCh0b2MpLnRvRXF1YWwoW1xuICAgICAgeyB1cmw6IFwiI2N1c3RvbS1pZFwiLCB0aXRsZTogXCJNeSBTZWN0aW9uXCIsIGRlcHRoOiAyIH0sXG4gICAgICB7IHVybDogXCIjc3ViLXNlY3Rpb25cIiwgdGl0bGU6IFwiU3ViIFNlY3Rpb25cIiwgZGVwdGg6IDMgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHN0cmlwIFsjaWRdIGZyb20gdGhlIGRpc3BsYXllZCB0aXRsZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFwiIyMgSW5zdGFsbGF0aW9uIFsjaW5zdGFsbF1cIlxuICAgIGNvbnN0IHRvYyA9IGV4dHJhY3RUb2MoY29udGVudClcbiAgICBleHBlY3QodG9jKS50b0VxdWFsKFt7IHVybDogXCIjaW5zdGFsbFwiLCB0aXRsZTogXCJJbnN0YWxsYXRpb25cIiwgZGVwdGg6IDIgfV0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIGlubGluZSBmb3JtYXR0aW5nIHdpdGggY3VzdG9tIGlkc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFwiIyMgKipCb2xkKiogVGl0bGUgWyNib2xkLXRpdGxlXVwiXG4gICAgY29uc3QgdG9jID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGV4cGVjdCh0b2MpLnRvRXF1YWwoW3sgdXJsOiBcIiNib2xkLXRpdGxlXCIsIHRpdGxlOiBcIkJvbGQgVGl0bGVcIiwgZGVwdGg6IDIgfV0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIGNvZGUgZm9ybWF0dGluZyB3aXRoIGN1c3RvbSBpZHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBcIiMjIGBjb25maWdgIE9wdGlvbnMgWyNjb25maWctb3B0c11cIlxuICAgIGNvbnN0IHRvYyA9IGV4dHJhY3RUb2MoY29udGVudClcbiAgICBleHBlY3QodG9jKS50b0VxdWFsKFtcbiAgICAgIHsgdXJsOiBcIiNjb25maWctb3B0c1wiLCB0aXRsZTogXCJjb25maWcgT3B0aW9uc1wiLCBkZXB0aDogMiB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc2tpcCBoMSBoZWFkaW5nc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFwiIyBUaXRsZVxcblxcbiMjIFNlY3Rpb25cIlxuICAgIGNvbnN0IHRvYyA9IGV4dHJhY3RUb2MoY29udGVudClcbiAgICBleHBlY3QodG9jKS50b0VxdWFsKFt7IHVybDogXCIjc2VjdGlvblwiLCB0aXRsZTogXCJTZWN0aW9uXCIsIGRlcHRoOiAyIH1dKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGV4Y2x1ZGUgW3N0ZXBdIGhlYWRpbmdzIGZyb20gVE9DXCIsICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID1cbiAgICAgIFwiIyMgT3ZlcnZpZXdcXG5cXG4jIyMgSW5zdGFsbCBEZXBlbmRlbmNpZXMgW3N0ZXBdXFxuXFxuIyMjIENvbmZpZ3VyZSBQcm9qZWN0IFtzdGVwXVwiXG4gICAgY29uc3QgdG9jID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGV4cGVjdCh0b2MpLnRvRXF1YWwoW3sgdXJsOiBcIiNvdmVydmlld1wiLCB0aXRsZTogXCJPdmVydmlld1wiLCBkZXB0aDogMiB9XSlcbiAgfSlcblxuICBpdChcInNob3VsZCBza2lwIGhlYWRpbmdzIHdpdGggWyF0b2NdIGFubm90YXRpb25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBcIiMjIFZpc2libGVcXG5cXG4jIyBIaWRkZW4gRnJvbSBUT0MgWyF0b2NdXFxuXFxuIyMgQWxzbyBWaXNpYmxlXCJcbiAgICBjb25zdCB0b2MgPSBleHRyYWN0VG9jKGNvbnRlbnQpXG4gICAgZXhwZWN0KHRvYykudG9FcXVhbChbXG4gICAgICB7IHVybDogXCIjdmlzaWJsZVwiLCB0aXRsZTogXCJWaXNpYmxlXCIsIGRlcHRoOiAyIH0sXG4gICAgICB7IHVybDogXCIjYWxzby12aXNpYmxlXCIsIHRpdGxlOiBcIkFsc28gVmlzaWJsZVwiLCBkZXB0aDogMiB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaW5jbHVkZSBbdG9jXSBoZWFkaW5ncyB3aXRoIGFubm90YXRpb24gc3RyaXBwZWQgZnJvbSB0aXRsZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFwiIyMgUmVndWxhclxcblxcbiMjIFRPQyBPbmx5IFt0b2NdXFxuXFxuIyMgQW5vdGhlclwiXG4gICAgY29uc3QgdG9jID0gZXh0cmFjdFRvYyhjb250ZW50KVxuICAgIGV4cGVjdCh0b2MpLnRvRXF1YWwoW1xuICAgICAgeyB1cmw6IFwiI3JlZ3VsYXJcIiwgdGl0bGU6IFwiUmVndWxhclwiLCBkZXB0aDogMiB9LFxuICAgICAgeyB1cmw6IFwiI3RvYy1vbmx5XCIsIHRpdGxlOiBcIlRPQyBPbmx5XCIsIGRlcHRoOiAyIH0sXG4gICAgICB7IHVybDogXCIjYW5vdGhlclwiLCB0aXRsZTogXCJBbm90aGVyXCIsIGRlcHRoOiAyIH0sXG4gICAgXSlcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
export function useInView() {
|
|
3
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
4
|
+
const elementRef = useRef(null);
|
|
5
|
+
const ref = useCallback((node) => {
|
|
6
|
+
elementRef.current = node;
|
|
7
|
+
}, []);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const node = elementRef.current;
|
|
10
|
+
if (!node)
|
|
11
|
+
return;
|
|
12
|
+
const observer = new IntersectionObserver(entries => {
|
|
13
|
+
if (entries[0]?.isIntersecting) {
|
|
14
|
+
setIsVisible(true);
|
|
15
|
+
observer.disconnect();
|
|
16
|
+
}
|
|
17
|
+
}, { threshold: 0.1 });
|
|
18
|
+
observer.observe(node);
|
|
19
|
+
return () => observer.disconnect();
|
|
20
|
+
}, []);
|
|
21
|
+
return { ref, isVisible };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9ob29rcy9pbi12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFaEUsTUFBTSxVQUFVLFNBQVM7SUFDdkIsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQTtJQUUvQyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUU7UUFDL0MsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7SUFDM0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRU4sU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDL0IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWpCLE1BQU0sUUFBUSxHQUFHLElBQUksb0JBQW9CLENBQ3ZDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUM7Z0JBQy9CLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDbEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQ25CLENBQUE7UUFFRCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3RCLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3BDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVOLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUE7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5WaWV3KCkge1xuICBjb25zdCBbaXNWaXNpYmxlLCBzZXRJc1Zpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKG5vZGU6IEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgZWxlbWVudFJlZi5jdXJyZW50ID0gbm9kZVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBlbGVtZW50UmVmLmN1cnJlbnRcbiAgICBpZiAoIW5vZGUpIHJldHVyblxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICBlbnRyaWVzID0+IHtcbiAgICAgICAgaWYgKGVudHJpZXNbMF0/LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2V0SXNWaXNpYmxlKHRydWUpXG4gICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHRocmVzaG9sZDogMC4xIH0sXG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShub2RlKVxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHsgcmVmLCBpc1Zpc2libGUgfVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const MOBILE_BREAKPOINT = 768;
|
|
2
|
+
export declare function useIsMobile(): boolean;
|
|
3
|
+
/** Synchronous, render-cycle-independent check.
|
|
4
|
+
* Use at event-handler call sites where React state may be momentarily stale
|
|
5
|
+
* (e.g. right after a SidebarProvider key remount). */
|
|
6
|
+
export declare function isMobileNow(): boolean;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useSyncExternalStore } from "react";
|
|
2
|
+
export const MOBILE_BREAKPOINT = 768;
|
|
3
|
+
export function useIsMobile() {
|
|
4
|
+
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
5
|
+
}
|
|
6
|
+
/** Synchronous, render-cycle-independent check.
|
|
7
|
+
* Use at event-handler call sites where React state may be momentarily stale
|
|
8
|
+
* (e.g. right after a SidebarProvider key remount). */
|
|
9
|
+
export function isMobileNow() {
|
|
10
|
+
if (typeof window === "undefined")
|
|
11
|
+
return false;
|
|
12
|
+
return window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`).matches;
|
|
13
|
+
}
|
|
14
|
+
function subscribe(callback) {
|
|
15
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
16
|
+
mql.addEventListener("change", callback);
|
|
17
|
+
return () => mql.removeEventListener("change", callback);
|
|
18
|
+
}
|
|
19
|
+
function getSnapshot() {
|
|
20
|
+
return window.innerWidth < MOBILE_BREAKPOINT;
|
|
21
|
+
}
|
|
22
|
+
function getServerSnapshot() {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvaG9va3MvbWVkaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUVwQyxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtBQUN4RSxDQUFDO0FBRUQ7O3dEQUV3RDtBQUN4RCxNQUFNLFVBQVUsV0FBVztJQUN6QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQTtBQUM3RSxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsUUFBb0I7SUFDckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLGlCQUFpQixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN4QyxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDMUQsQ0FBQztBQUVELFNBQVMsV0FBVztJQUNsQixPQUFPLE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUE7QUFDOUMsQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN5bmNFeHRlcm5hbFN0b3JlIH0gZnJvbSBcInJlYWN0XCJcblxuZXhwb3J0IGNvbnN0IE1PQklMRV9CUkVBS1BPSU5UID0gNzY4XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc01vYmlsZSgpIHtcbiAgcmV0dXJuIHVzZVN5bmNFeHRlcm5hbFN0b3JlKHN1YnNjcmliZSwgZ2V0U25hcHNob3QsIGdldFNlcnZlclNuYXBzaG90KVxufVxuXG4vKiogU3luY2hyb25vdXMsIHJlbmRlci1jeWNsZS1pbmRlcGVuZGVudCBjaGVjay5cbiAqICBVc2UgYXQgZXZlbnQtaGFuZGxlciBjYWxsIHNpdGVzIHdoZXJlIFJlYWN0IHN0YXRlIG1heSBiZSBtb21lbnRhcmlseSBzdGFsZVxuICogIChlLmcuIHJpZ2h0IGFmdGVyIGEgU2lkZWJhclByb3ZpZGVyIGtleSByZW1vdW50KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01vYmlsZU5vdygpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBmYWxzZVxuICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEoYChtYXgtd2lkdGg6ICR7TU9CSUxFX0JSRUFLUE9JTlQgLSAxfXB4KWApLm1hdGNoZXNcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIGNvbnN0IG1xbCA9IHdpbmRvdy5tYXRjaE1lZGlhKGAobWF4LXdpZHRoOiAke01PQklMRV9CUkVBS1BPSU5UIC0gMX1weClgKVxuICBtcWwuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBjYWxsYmFjaylcbiAgcmV0dXJuICgpID0+IG1xbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGNhbGxiYWNrKVxufVxuXG5mdW5jdGlvbiBnZXRTbmFwc2hvdCgpIHtcbiAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgTU9CSUxFX0JSRUFLUE9JTlRcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmVyU25hcHNob3QoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuIl19
|
package/target/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { defineConfig } from "./actions/config/define.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIi4vYWN0aW9ucy9jb25maWcvZGVmaW5lLnRzXCJcbiJdfQ==
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { TocItem } from "./toc.ts";
|
|
3
|
+
/** Frontmatter schema for a markdown article. */
|
|
4
|
+
export type Article = z.infer<typeof Article>;
|
|
5
|
+
export declare const Article: z.ZodObject<{
|
|
6
|
+
content: z.ZodString;
|
|
7
|
+
title: z.ZodOptional<z.ZodString>;
|
|
8
|
+
label: z.ZodOptional<z.ZodString>;
|
|
9
|
+
description: z.ZodOptional<z.ZodString>;
|
|
10
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
11
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
path: z.ZodOptional<z.ZodString>;
|
|
13
|
+
group: z.ZodOptional<z.ZodString>;
|
|
14
|
+
sidebar: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
toc: z.ZodDefault<z.ZodBoolean>;
|
|
16
|
+
image: z.ZodOptional<z.ZodString>;
|
|
17
|
+
author: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
18
|
+
date: z.ZodOptional<z.ZodString>;
|
|
19
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
20
|
+
sourceUrl: z.ZodOptional<z.ZodString>;
|
|
21
|
+
sourceAction: z.ZodDefault<z.ZodEnum<{
|
|
22
|
+
edit: "edit";
|
|
23
|
+
view: "view";
|
|
24
|
+
}>>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
/** Processed article ready for page rendering (result of content-collections transform). */
|
|
27
|
+
export interface ArticleView {
|
|
28
|
+
path: string;
|
|
29
|
+
title: string;
|
|
30
|
+
content: string;
|
|
31
|
+
file: string;
|
|
32
|
+
mdx: string;
|
|
33
|
+
tocItems: TocItem[];
|
|
34
|
+
toc?: boolean;
|
|
35
|
+
lastUpdated?: string;
|
|
36
|
+
sidebar?: boolean;
|
|
37
|
+
image?: string;
|
|
38
|
+
author?: string | string[];
|
|
39
|
+
date?: string;
|
|
40
|
+
tags?: string[];
|
|
41
|
+
sourceUrl?: string;
|
|
42
|
+
sourceAction?: "edit" | "view";
|
|
43
|
+
}
|
|
44
|
+
export interface ArticleNode {
|
|
45
|
+
path: string;
|
|
46
|
+
title: string;
|
|
47
|
+
label?: string;
|
|
48
|
+
icon: string;
|
|
49
|
+
children: ArticleNode[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A contiguous section of root articles sharing the same `group` label.
|
|
53
|
+
* `name: undefined` represents the leading ungrouped section (at most one).
|
|
54
|
+
*/
|
|
55
|
+
export interface ArticleGroup {
|
|
56
|
+
name?: string;
|
|
57
|
+
nodes: ArticleNode[];
|
|
58
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { nonEmptyString } from "../helpers/model.js";
|
|
3
|
+
export const Article = z.object({
|
|
4
|
+
content: z.string(),
|
|
5
|
+
title: nonEmptyString.optional(),
|
|
6
|
+
label: nonEmptyString.optional(),
|
|
7
|
+
description: nonEmptyString.optional(),
|
|
8
|
+
icon: nonEmptyString.optional(),
|
|
9
|
+
order: z.number().optional(),
|
|
10
|
+
path: nonEmptyString.optional(),
|
|
11
|
+
group: nonEmptyString.optional(),
|
|
12
|
+
sidebar: z.boolean().default(true),
|
|
13
|
+
toc: z.boolean().default(true),
|
|
14
|
+
image: nonEmptyString.optional(),
|
|
15
|
+
author: z.union([nonEmptyString, z.array(nonEmptyString)]).optional(),
|
|
16
|
+
date: nonEmptyString.optional(),
|
|
17
|
+
tags: z.array(nonEmptyString).optional(),
|
|
18
|
+
sourceUrl: nonEmptyString.optional(),
|
|
19
|
+
sourceAction: z.enum(["edit", "view"]).default("edit"),
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9tb2RlbHMvYXJ0aWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUtwRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUNoQyxLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUNoQyxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUN0QyxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUMvQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUMvQixLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUNoQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDbEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzlCLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNyRSxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtJQUMvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0NBQ3ZELENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG5vbkVtcHR5U3RyaW5nIH0gZnJvbSBcIi4uL2hlbHBlcnMvbW9kZWwudHNcIlxuaW1wb3J0IHR5cGUgeyBUb2NJdGVtIH0gZnJvbSBcIi4vdG9jLnRzXCJcblxuLyoqIEZyb250bWF0dGVyIHNjaGVtYSBmb3IgYSBtYXJrZG93biBhcnRpY2xlLiAqL1xuZXhwb3J0IHR5cGUgQXJ0aWNsZSA9IHouaW5mZXI8dHlwZW9mIEFydGljbGU+XG5leHBvcnQgY29uc3QgQXJ0aWNsZSA9IHoub2JqZWN0KHtcbiAgY29udGVudDogei5zdHJpbmcoKSxcbiAgdGl0bGU6IG5vbkVtcHR5U3RyaW5nLm9wdGlvbmFsKCksXG4gIGxhYmVsOiBub25FbXB0eVN0cmluZy5vcHRpb25hbCgpLFxuICBkZXNjcmlwdGlvbjogbm9uRW1wdHlTdHJpbmcub3B0aW9uYWwoKSxcbiAgaWNvbjogbm9uRW1wdHlTdHJpbmcub3B0aW9uYWwoKSxcbiAgb3JkZXI6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgcGF0aDogbm9uRW1wdHlTdHJpbmcub3B0aW9uYWwoKSxcbiAgZ3JvdXA6IG5vbkVtcHR5U3RyaW5nLm9wdGlvbmFsKCksXG4gIHNpZGViYXI6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIHRvYzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgaW1hZ2U6IG5vbkVtcHR5U3RyaW5nLm9wdGlvbmFsKCksXG4gIGF1dGhvcjogei51bmlvbihbbm9uRW1wdHlTdHJpbmcsIHouYXJyYXkobm9uRW1wdHlTdHJpbmcpXSkub3B0aW9uYWwoKSxcbiAgZGF0ZTogbm9uRW1wdHlTdHJpbmcub3B0aW9uYWwoKSxcbiAgdGFnczogei5hcnJheShub25FbXB0eVN0cmluZykub3B0aW9uYWwoKSxcbiAgc291cmNlVXJsOiBub25FbXB0eVN0cmluZy5vcHRpb25hbCgpLFxuICBzb3VyY2VBY3Rpb246IHouZW51bShbXCJlZGl0XCIsIFwidmlld1wiXSkuZGVmYXVsdChcImVkaXRcIiksXG59KVxuXG4vKiogUHJvY2Vzc2VkIGFydGljbGUgcmVhZHkgZm9yIHBhZ2UgcmVuZGVyaW5nIChyZXN1bHQgb2YgY29udGVudC1jb2xsZWN0aW9ucyB0cmFuc2Zvcm0pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlVmlldyB7XG4gIHBhdGg6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGNvbnRlbnQ6IHN0cmluZ1xuICBmaWxlOiBzdHJpbmdcbiAgbWR4OiBzdHJpbmdcbiAgdG9jSXRlbXM6IFRvY0l0ZW1bXVxuICB0b2M/OiBib29sZWFuXG4gIGxhc3RVcGRhdGVkPzogc3RyaW5nXG4gIHNpZGViYXI/OiBib29sZWFuXG4gIGltYWdlPzogc3RyaW5nXG4gIGF1dGhvcj86IHN0cmluZyB8IHN0cmluZ1tdXG4gIGRhdGU/OiBzdHJpbmdcbiAgdGFncz86IHN0cmluZ1tdXG4gIHNvdXJjZVVybD86IHN0cmluZ1xuICBzb3VyY2VBY3Rpb24/OiBcImVkaXRcIiB8IFwidmlld1wiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWNsZU5vZGUge1xuICBwYXRoOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICBsYWJlbD86IHN0cmluZ1xuICBpY29uOiBzdHJpbmdcbiAgY2hpbGRyZW46IEFydGljbGVOb2RlW11cbn1cblxuLyoqXG4gKiBBIGNvbnRpZ3VvdXMgc2VjdGlvbiBvZiByb290IGFydGljbGVzIHNoYXJpbmcgdGhlIHNhbWUgYGdyb3VwYCBsYWJlbC5cbiAqIGBuYW1lOiB1bmRlZmluZWRgIHJlcHJlc2VudHMgdGhlIGxlYWRpbmcgdW5ncm91cGVkIHNlY3Rpb24gKGF0IG1vc3Qgb25lKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlR3JvdXAge1xuICBuYW1lPzogc3RyaW5nXG4gIG5vZGVzOiBBcnRpY2xlTm9kZVtdXG59XG4iXX0=
|
|
@@ -136,6 +136,11 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
136
136
|
author: z.ZodOptional<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
137
137
|
date: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
138
138
|
tags: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
139
|
+
sourceUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
140
|
+
sourceAction: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
141
|
+
edit: "edit";
|
|
142
|
+
view: "view";
|
|
143
|
+
}>>>;
|
|
139
144
|
}, z.core.$strict>;
|
|
140
145
|
}, z.core.$strip>>>;
|
|
141
146
|
}, z.core.$strip>;
|
|
@@ -333,6 +338,11 @@ export declare const Config: z.ZodObject<{
|
|
|
333
338
|
author: z.ZodOptional<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
334
339
|
date: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
335
340
|
tags: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
341
|
+
sourceUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
342
|
+
sourceAction: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
343
|
+
edit: "edit";
|
|
344
|
+
view: "view";
|
|
345
|
+
}>>>;
|
|
336
346
|
}, z.core.$strict>;
|
|
337
347
|
}, z.core.$strip>>>;
|
|
338
348
|
root: z.ZodString;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Link } from "./link.js";
|
|
3
|
+
import { Patch } from "./patch.js";
|
|
4
|
+
import { Section } from "./section.js";
|
|
5
|
+
import { CodeThemeDark, CodeThemeLight } from "./theme.js";
|
|
6
|
+
export const UserConfig = z.object({
|
|
7
|
+
site: z.string().optional(),
|
|
8
|
+
favicon: z.string().optional(),
|
|
9
|
+
logo: z.string().optional(),
|
|
10
|
+
title: z.string().default("Livemark"),
|
|
11
|
+
description: z.string().default("Markdown site generator"),
|
|
12
|
+
include: z.union([z.string(), z.array(z.string())]),
|
|
13
|
+
exclude: z.union([z.string(), z.array(z.string())]).optional(),
|
|
14
|
+
codeThemeLight: CodeThemeLight.default("catppuccin-latte"),
|
|
15
|
+
codeThemeDark: CodeThemeDark.default("catppuccin-mocha"),
|
|
16
|
+
links: z.array(Link).optional(),
|
|
17
|
+
sections: z.array(Section).optional(),
|
|
18
|
+
patches: z.array(Patch).optional(),
|
|
19
|
+
});
|
|
20
|
+
export const WebsiteConfig = UserConfig.pick({
|
|
21
|
+
title: true,
|
|
22
|
+
description: true,
|
|
23
|
+
site: true,
|
|
24
|
+
favicon: true,
|
|
25
|
+
logo: true,
|
|
26
|
+
links: true,
|
|
27
|
+
sections: true,
|
|
28
|
+
});
|
|
29
|
+
export const SystemConfig = z.object({
|
|
30
|
+
root: z.string(),
|
|
31
|
+
configPath: z.string(),
|
|
32
|
+
});
|
|
33
|
+
export const Config = UserConfig.merge(SystemConfig);
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL21vZGVscy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU0xRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUM7SUFDMUQsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM5RCxjQUFjLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztJQUMxRCxhQUFhLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztJQUN4RCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3JDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUE7QUFJRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUMzQyxLQUFLLEVBQUUsSUFBSTtJQUNYLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLElBQUksRUFBRSxJQUFJO0lBQ1YsT0FBTyxFQUFFLElBQUk7SUFDYixJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLElBQUk7Q0FDZixDQUFDLENBQUE7QUFNRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUN2QixDQUFDLENBQUE7QUFNRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiLi9saW5rLnRzXCJcbmltcG9ydCB7IFBhdGNoIH0gZnJvbSBcIi4vcGF0Y2gudHNcIlxuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gXCIuL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgQ29kZVRoZW1lRGFyaywgQ29kZVRoZW1lTGlnaHQgfSBmcm9tIFwiLi90aGVtZS50c1wiXG5cbi8qKlxuICogVXNlci1wcm92aWRlZCBjb25maWd1cmF0aW9uIGZvciBMaXZlbWFyay5cbiAqL1xuZXhwb3J0IHR5cGUgVXNlckNvbmZpZyA9IHouaW5mZXI8dHlwZW9mIFVzZXJDb25maWc+XG5leHBvcnQgY29uc3QgVXNlckNvbmZpZyA9IHoub2JqZWN0KHtcbiAgc2l0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmYXZpY29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxvZ286IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkuZGVmYXVsdChcIkxpdmVtYXJrXCIpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5kZWZhdWx0KFwiTWFya2Rvd24gc2l0ZSBnZW5lcmF0b3JcIiksXG4gIGluY2x1ZGU6IHoudW5pb24oW3ouc3RyaW5nKCksIHouYXJyYXkoei5zdHJpbmcoKSldKSxcbiAgZXhjbHVkZTogei51bmlvbihbei5zdHJpbmcoKSwgei5hcnJheSh6LnN0cmluZygpKV0pLm9wdGlvbmFsKCksXG4gIGNvZGVUaGVtZUxpZ2h0OiBDb2RlVGhlbWVMaWdodC5kZWZhdWx0KFwiY2F0cHB1Y2Npbi1sYXR0ZVwiKSxcbiAgY29kZVRoZW1lRGFyazogQ29kZVRoZW1lRGFyay5kZWZhdWx0KFwiY2F0cHB1Y2Npbi1tb2NoYVwiKSxcbiAgbGlua3M6IHouYXJyYXkoTGluaykub3B0aW9uYWwoKSxcbiAgc2VjdGlvbnM6IHouYXJyYXkoU2VjdGlvbikub3B0aW9uYWwoKSxcbiAgcGF0Y2hlczogei5hcnJheShQYXRjaCkub3B0aW9uYWwoKSxcbn0pXG5cbi8qKiBXZWJzaXRlIGNvbmZpZ3VyYXRpb24gaW5qZWN0ZWQgYXQgYnVpbGQgdGltZSB2aWEgVml0ZSBkZWZpbmUgKi9cbmV4cG9ydCB0eXBlIFdlYnNpdGVDb25maWcgPSB6LmluZmVyPHR5cGVvZiBXZWJzaXRlQ29uZmlnPlxuZXhwb3J0IGNvbnN0IFdlYnNpdGVDb25maWcgPSBVc2VyQ29uZmlnLnBpY2soe1xuICB0aXRsZTogdHJ1ZSxcbiAgZGVzY3JpcHRpb246IHRydWUsXG4gIHNpdGU6IHRydWUsXG4gIGZhdmljb246IHRydWUsXG4gIGxvZ286IHRydWUsXG4gIGxpbmtzOiB0cnVlLFxuICBzZWN0aW9uczogdHJ1ZSxcbn0pXG5cbi8qKlxuICogU3lzdGVtLWNvbXB1dGVkIGNvbmZpZ3VyYXRpb24gZGVyaXZlZCBmcm9tIHRoZSBjb25maWcgZmlsZSBsb2NhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU3lzdGVtQ29uZmlnID0gei5pbmZlcjx0eXBlb2YgU3lzdGVtQ29uZmlnPlxuZXhwb3J0IGNvbnN0IFN5c3RlbUNvbmZpZyA9IHoub2JqZWN0KHtcbiAgcm9vdDogei5zdHJpbmcoKSxcbiAgY29uZmlnUGF0aDogei5zdHJpbmcoKSxcbn0pXG5cbi8qKlxuICogRnVsbHkgcmVzb2x2ZWQgTGl2ZW1hcmsgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZmlnID0gei5pbmZlcjx0eXBlb2YgQ29uZmlnPlxuZXhwb3J0IGNvbnN0IENvbmZpZyA9IFVzZXJDb25maWcubWVyZ2UoU3lzdGVtQ29uZmlnKVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const Link = z.object({
|
|
3
|
+
url: z.string(),
|
|
4
|
+
title: z.string(),
|
|
5
|
+
icon: z.string().optional(),
|
|
6
|
+
prefix: z.string().optional(),
|
|
7
|
+
position: z.enum(["header", "sidebar"]).default("header"),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9tb2RlbHMvbGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBSXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2YsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0NBQzFELENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuLyoqIEhlYWRlciBvciBzaWRlYmFyIGxpbmsgdG8gYW4gZXh0ZXJuYWwgVVJMLiAqL1xuZXhwb3J0IHR5cGUgTGluayA9IHouaW5mZXI8dHlwZW9mIExpbms+XG5leHBvcnQgY29uc3QgTGluayA9IHoub2JqZWN0KHtcbiAgdXJsOiB6LnN0cmluZygpLFxuICB0aXRsZTogei5zdHJpbmcoKSxcbiAgaWNvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcmVmaXg6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcG9zaXRpb246IHouZW51bShbXCJoZWFkZXJcIiwgXCJzaWRlYmFyXCJdKS5kZWZhdWx0KFwiaGVhZGVyXCIpLFxufSlcbiJdfQ==
|
|
@@ -17,5 +17,10 @@ export declare const Patch: z.ZodObject<{
|
|
|
17
17
|
author: z.ZodOptional<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
18
18
|
date: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
19
19
|
tags: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
20
|
+
sourceUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
21
|
+
sourceAction: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
22
|
+
edit: "edit";
|
|
23
|
+
view: "view";
|
|
24
|
+
}>>>;
|
|
20
25
|
}, z.core.$strict>;
|
|
21
26
|
}, z.core.$strip>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Article } from "./article.js";
|
|
3
|
+
export const Patch = z.object({
|
|
4
|
+
file: z.string(),
|
|
5
|
+
article: Article.omit({ content: true }).partial().strict(),
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvbW9kZWxzL3BhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUl0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTtDQUM1RCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSBcIi4vYXJ0aWNsZS50c1wiXG5cbi8qKiBQZXItZmlsZSBvdmVycmlkZSBmb3IgYXJ0aWNsZSBmcm9udG1hdHRlciBwcm92aWRlZCB2aWEgYGxpdmVtYXJrLmNvbmZpZy50c2AuICovXG5leHBvcnQgdHlwZSBQYXRjaCA9IHouaW5mZXI8dHlwZW9mIFBhdGNoPlxuZXhwb3J0IGNvbnN0IFBhdGNoID0gei5vYmplY3Qoe1xuICBmaWxlOiB6LnN0cmluZygpLFxuICBhcnRpY2xlOiBBcnRpY2xlLm9taXQoeyBjb250ZW50OiB0cnVlIH0pLnBhcnRpYWwoKS5zdHJpY3QoKSxcbn0pXG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const BaseSection = z.object({
|
|
3
|
+
icon: z.string().optional(),
|
|
4
|
+
title: z.string(),
|
|
5
|
+
prefix: z.string(),
|
|
6
|
+
position: z.enum(["header", "sidebar"]).default("header"),
|
|
7
|
+
});
|
|
8
|
+
export const ArticleSection = BaseSection.extend({
|
|
9
|
+
type: z.literal("article"),
|
|
10
|
+
});
|
|
11
|
+
export const BlogSection = BaseSection.extend({
|
|
12
|
+
type: z.literal("blog"),
|
|
13
|
+
});
|
|
14
|
+
export const ChangelogSection = BaseSection.extend({
|
|
15
|
+
type: z.literal("changelog"),
|
|
16
|
+
source: z.string(),
|
|
17
|
+
version: z.boolean().optional(),
|
|
18
|
+
});
|
|
19
|
+
export const Section = z.preprocess(input => {
|
|
20
|
+
if (input === null || typeof input !== "object" || Array.isArray(input)) {
|
|
21
|
+
return input;
|
|
22
|
+
}
|
|
23
|
+
const record = input;
|
|
24
|
+
return "type" in record ? record : { ...record, type: "article" };
|
|
25
|
+
}, z.discriminatedUnion("type", [ArticleSection, BlogSection, ChangelogSection]));
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9tb2RlbHMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXZCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0NBQzFELENBQUMsQ0FBQTtBQUlGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQy9DLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztDQUMzQixDQUFDLENBQUE7QUFJRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Q0FDeEIsQ0FBQyxDQUFBO0FBSUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDaEMsQ0FBQyxDQUFBO0FBUUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQ2pDLEtBQUssQ0FBQyxFQUFFO0lBQ04sSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBZ0MsQ0FBQTtJQUMvQyxPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUE7QUFDbkUsQ0FBQyxFQUNELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FDOUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgQmFzZVNlY3Rpb24gPSB6Lm9iamVjdCh7XG4gIGljb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCksXG4gIHByZWZpeDogei5zdHJpbmcoKSxcbiAgcG9zaXRpb246IHouZW51bShbXCJoZWFkZXJcIiwgXCJzaWRlYmFyXCJdKS5kZWZhdWx0KFwiaGVhZGVyXCIpLFxufSlcblxuLyoqIERlZmF1bHQgc2VjdGlvbjogcmVuZGVycyBhcnRpY2xlcy4gKi9cbmV4cG9ydCB0eXBlIEFydGljbGVTZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgQXJ0aWNsZVNlY3Rpb24+XG5leHBvcnQgY29uc3QgQXJ0aWNsZVNlY3Rpb24gPSBCYXNlU2VjdGlvbi5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcnRpY2xlXCIpLFxufSlcblxuLyoqIEJsb2cgc2VjdGlvbjogZGF0ZS1zb3J0ZWQgcG9zdHMgd2l0aCB0YWdzIGFuZCBpbmRleC4gKi9cbmV4cG9ydCB0eXBlIEJsb2dTZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgQmxvZ1NlY3Rpb24+XG5leHBvcnQgY29uc3QgQmxvZ1NlY3Rpb24gPSBCYXNlU2VjdGlvbi5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJibG9nXCIpLFxufSlcblxuLyoqIENoYW5nZWxvZyBzZWN0aW9uOiBzaW5nbGUgZmlsZSBvciBHaXRIdWIgcmVsZWFzZXMsIHNwbGl0IHBlciB2ZXJzaW9uLiAqL1xuZXhwb3J0IHR5cGUgQ2hhbmdlbG9nU2VjdGlvbiA9IHouaW5mZXI8dHlwZW9mIENoYW5nZWxvZ1NlY3Rpb24+XG5leHBvcnQgY29uc3QgQ2hhbmdlbG9nU2VjdGlvbiA9IEJhc2VTZWN0aW9uLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImNoYW5nZWxvZ1wiKSxcbiAgc291cmNlOiB6LnN0cmluZygpLFxuICB2ZXJzaW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcblxuLyoqXG4gKiBBIHNpdGUgc2VjdGlvbi4gRGlzY3JpbWluYXRlZCBvbiBgdHlwZWAuXG4gKiBXaGVuIGB0eXBlYCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBcImFydGljbGVcIiBzbyBwbGFpblxuICogYHsgdGl0bGUsIHByZWZpeCB9YCBlbnRyaWVzIGtlZXAgd29ya2luZy5cbiAqL1xuZXhwb3J0IHR5cGUgU2VjdGlvbiA9IHouaW5mZXI8dHlwZW9mIFNlY3Rpb24+XG5leHBvcnQgY29uc3QgU2VjdGlvbiA9IHoucHJlcHJvY2VzcyhcbiAgaW5wdXQgPT4ge1xuICAgIGlmIChpbnB1dCA9PT0gbnVsbCB8fCB0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBpbnB1dFxuICAgIH1cbiAgICBjb25zdCByZWNvcmQgPSBpbnB1dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHJldHVybiBcInR5cGVcIiBpbiByZWNvcmQgPyByZWNvcmQgOiB7IC4uLnJlY29yZCwgdHlwZTogXCJhcnRpY2xlXCIgfVxuICB9LFxuICB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW0FydGljbGVTZWN0aW9uLCBCbG9nU2VjdGlvbiwgQ2hhbmdlbG9nU2VjdGlvbl0pLFxuKVxuIl19
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Light syntax highlighting theme (Shiki) */
|
|
3
|
+
export const CodeThemeLight = z.enum([
|
|
4
|
+
"ayu-light",
|
|
5
|
+
"catppuccin-latte",
|
|
6
|
+
"everforest-light",
|
|
7
|
+
"github-light",
|
|
8
|
+
"github-light-default",
|
|
9
|
+
"github-light-high-contrast",
|
|
10
|
+
"gruvbox-light-hard",
|
|
11
|
+
"gruvbox-light-medium",
|
|
12
|
+
"gruvbox-light-soft",
|
|
13
|
+
"horizon-bright",
|
|
14
|
+
"kanagawa-lotus",
|
|
15
|
+
"light-plus",
|
|
16
|
+
"material-theme-lighter",
|
|
17
|
+
"min-light",
|
|
18
|
+
"night-owl-light",
|
|
19
|
+
"one-light",
|
|
20
|
+
"rose-pine-dawn",
|
|
21
|
+
"slack-ochin",
|
|
22
|
+
"snazzy-light",
|
|
23
|
+
"solarized-light",
|
|
24
|
+
"vitesse-light",
|
|
25
|
+
]);
|
|
26
|
+
/** Dark syntax highlighting theme (Shiki) */
|
|
27
|
+
export const CodeThemeDark = z.enum([
|
|
28
|
+
"andromeeda",
|
|
29
|
+
"aurora-x",
|
|
30
|
+
"ayu-dark",
|
|
31
|
+
"ayu-mirage",
|
|
32
|
+
"catppuccin-frappe",
|
|
33
|
+
"catppuccin-macchiato",
|
|
34
|
+
"catppuccin-mocha",
|
|
35
|
+
"dark-plus",
|
|
36
|
+
"dracula",
|
|
37
|
+
"dracula-soft",
|
|
38
|
+
"everforest-dark",
|
|
39
|
+
"github-dark",
|
|
40
|
+
"github-dark-default",
|
|
41
|
+
"github-dark-dimmed",
|
|
42
|
+
"github-dark-high-contrast",
|
|
43
|
+
"gruvbox-dark-hard",
|
|
44
|
+
"gruvbox-dark-medium",
|
|
45
|
+
"gruvbox-dark-soft",
|
|
46
|
+
"horizon",
|
|
47
|
+
"houston",
|
|
48
|
+
"kanagawa-dragon",
|
|
49
|
+
"kanagawa-wave",
|
|
50
|
+
"laserwave",
|
|
51
|
+
"material-theme",
|
|
52
|
+
"material-theme-darker",
|
|
53
|
+
"material-theme-ocean",
|
|
54
|
+
"material-theme-palenight",
|
|
55
|
+
"min-dark",
|
|
56
|
+
"monokai",
|
|
57
|
+
"night-owl",
|
|
58
|
+
"nord",
|
|
59
|
+
"one-dark-pro",
|
|
60
|
+
"plastic",
|
|
61
|
+
"poimandres",
|
|
62
|
+
"red",
|
|
63
|
+
"rose-pine",
|
|
64
|
+
"rose-pine-moon",
|
|
65
|
+
"slack-dark",
|
|
66
|
+
"solarized-dark",
|
|
67
|
+
"synthwave-84",
|
|
68
|
+
"tokyo-night",
|
|
69
|
+
"vesper",
|
|
70
|
+
"vitesse-black",
|
|
71
|
+
"vitesse-dark",
|
|
72
|
+
]);
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvbW9kZWxzL3RoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFdkIsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25DLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsNEJBQTRCO0lBQzVCLG9CQUFvQjtJQUNwQixzQkFBc0I7SUFDdEIsb0JBQW9CO0lBQ3BCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsZUFBZTtDQUNoQixDQUFDLENBQUE7QUFFRiw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsWUFBWTtJQUNaLFVBQVU7SUFDVixVQUFVO0lBQ1YsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQiwyQkFBMkI7SUFDM0IsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsU0FBUztJQUNULFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QiwwQkFBMEI7SUFDMUIsVUFBVTtJQUNWLFNBQVM7SUFDVCxXQUFXO0lBQ1gsTUFBTTtJQUNOLGNBQWM7SUFDZCxTQUFTO0lBQ1QsWUFBWTtJQUNaLEtBQUs7SUFDTCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGFBQWE7SUFDYixRQUFRO0lBQ1IsZUFBZTtJQUNmLGNBQWM7Q0FDZixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbi8qKiBMaWdodCBzeW50YXggaGlnaGxpZ2h0aW5nIHRoZW1lIChTaGlraSkgKi9cbmV4cG9ydCBjb25zdCBDb2RlVGhlbWVMaWdodCA9IHouZW51bShbXG4gIFwiYXl1LWxpZ2h0XCIsXG4gIFwiY2F0cHB1Y2Npbi1sYXR0ZVwiLFxuICBcImV2ZXJmb3Jlc3QtbGlnaHRcIixcbiAgXCJnaXRodWItbGlnaHRcIixcbiAgXCJnaXRodWItbGlnaHQtZGVmYXVsdFwiLFxuICBcImdpdGh1Yi1saWdodC1oaWdoLWNvbnRyYXN0XCIsXG4gIFwiZ3J1dmJveC1saWdodC1oYXJkXCIsXG4gIFwiZ3J1dmJveC1saWdodC1tZWRpdW1cIixcbiAgXCJncnV2Ym94LWxpZ2h0LXNvZnRcIixcbiAgXCJob3Jpem9uLWJyaWdodFwiLFxuICBcImthbmFnYXdhLWxvdHVzXCIsXG4gIFwibGlnaHQtcGx1c1wiLFxuICBcIm1hdGVyaWFsLXRoZW1lLWxpZ2h0ZXJcIixcbiAgXCJtaW4tbGlnaHRcIixcbiAgXCJuaWdodC1vd2wtbGlnaHRcIixcbiAgXCJvbmUtbGlnaHRcIixcbiAgXCJyb3NlLXBpbmUtZGF3blwiLFxuICBcInNsYWNrLW9jaGluXCIsXG4gIFwic25henp5LWxpZ2h0XCIsXG4gIFwic29sYXJpemVkLWxpZ2h0XCIsXG4gIFwidml0ZXNzZS1saWdodFwiLFxuXSlcblxuLyoqIERhcmsgc3ludGF4IGhpZ2hsaWdodGluZyB0aGVtZSAoU2hpa2kpICovXG5leHBvcnQgY29uc3QgQ29kZVRoZW1lRGFyayA9IHouZW51bShbXG4gIFwiYW5kcm9tZWVkYVwiLFxuICBcImF1cm9yYS14XCIsXG4gIFwiYXl1LWRhcmtcIixcbiAgXCJheXUtbWlyYWdlXCIsXG4gIFwiY2F0cHB1Y2Npbi1mcmFwcGVcIixcbiAgXCJjYXRwcHVjY2luLW1hY2NoaWF0b1wiLFxuICBcImNhdHBwdWNjaW4tbW9jaGFcIixcbiAgXCJkYXJrLXBsdXNcIixcbiAgXCJkcmFjdWxhXCIsXG4gIFwiZHJhY3VsYS1zb2Z0XCIsXG4gIFwiZXZlcmZvcmVzdC1kYXJrXCIsXG4gIFwiZ2l0aHViLWRhcmtcIixcbiAgXCJnaXRodWItZGFyay1kZWZhdWx0XCIsXG4gIFwiZ2l0aHViLWRhcmstZGltbWVkXCIsXG4gIFwiZ2l0aHViLWRhcmstaGlnaC1jb250cmFzdFwiLFxuICBcImdydXZib3gtZGFyay1oYXJkXCIsXG4gIFwiZ3J1dmJveC1kYXJrLW1lZGl1bVwiLFxuICBcImdydXZib3gtZGFyay1zb2Z0XCIsXG4gIFwiaG9yaXpvblwiLFxuICBcImhvdXN0b25cIixcbiAgXCJrYW5hZ2F3YS1kcmFnb25cIixcbiAgXCJrYW5hZ2F3YS13YXZlXCIsXG4gIFwibGFzZXJ3YXZlXCIsXG4gIFwibWF0ZXJpYWwtdGhlbWVcIixcbiAgXCJtYXRlcmlhbC10aGVtZS1kYXJrZXJcIixcbiAgXCJtYXRlcmlhbC10aGVtZS1vY2VhblwiLFxuICBcIm1hdGVyaWFsLXRoZW1lLXBhbGVuaWdodFwiLFxuICBcIm1pbi1kYXJrXCIsXG4gIFwibW9ub2thaVwiLFxuICBcIm5pZ2h0LW93bFwiLFxuICBcIm5vcmRcIixcbiAgXCJvbmUtZGFyay1wcm9cIixcbiAgXCJwbGFzdGljXCIsXG4gIFwicG9pbWFuZHJlc1wiLFxuICBcInJlZFwiLFxuICBcInJvc2UtcGluZVwiLFxuICBcInJvc2UtcGluZS1tb29uXCIsXG4gIFwic2xhY2stZGFya1wiLFxuICBcInNvbGFyaXplZC1kYXJrXCIsXG4gIFwic3ludGh3YXZlLTg0XCIsXG4gIFwidG9reW8tbmlnaHRcIixcbiAgXCJ2ZXNwZXJcIixcbiAgXCJ2aXRlc3NlLWJsYWNrXCIsXG4gIFwidml0ZXNzZS1kYXJrXCIsXG5dKVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL21vZGVscy90b2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVG9jSXRlbSB7XG4gIHVybDogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgZGVwdGg6IG51bWJlclxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Plugin } from "unified";
|
|
2
|
+
interface HastText {
|
|
3
|
+
type: "text";
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
type PropertyValue = boolean | number | string | null | undefined | Array<string | number>;
|
|
7
|
+
interface HastElement {
|
|
8
|
+
type: "element";
|
|
9
|
+
tagName: string;
|
|
10
|
+
properties: Record<string, PropertyValue>;
|
|
11
|
+
children: (HastElement | HastText)[];
|
|
12
|
+
}
|
|
13
|
+
interface HastRoot {
|
|
14
|
+
type: "root";
|
|
15
|
+
children: (HastElement | HastText)[];
|
|
16
|
+
}
|
|
17
|
+
/** Rehype plugin that applies Shiki syntax highlighting to inline code spans with a `{:lang}` prefix. */
|
|
18
|
+
export declare const rehypeInlineCode: Plugin<[], HastRoot>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
2
|
+
import { bundledLanguages, getSingletonHighlighter, } from "shiki";
|
|
3
|
+
const LANG_PREFIX = /^\{:(\w+)\}/;
|
|
4
|
+
function isBundledLanguage(lang) {
|
|
5
|
+
return lang in bundledLanguages;
|
|
6
|
+
}
|
|
7
|
+
/** Rehype plugin that applies Shiki syntax highlighting to inline code spans with a `{:lang}` prefix. */
|
|
8
|
+
export const rehypeInlineCode = () => {
|
|
9
|
+
return async (tree) => {
|
|
10
|
+
const highlighter = await getSingletonHighlighter({
|
|
11
|
+
themes: ["catppuccin-latte", "catppuccin-mocha"],
|
|
12
|
+
langs: [],
|
|
13
|
+
});
|
|
14
|
+
const nodes = [];
|
|
15
|
+
visit(tree, "element", (node, _index, parent) => {
|
|
16
|
+
if (node.type !== "element")
|
|
17
|
+
return;
|
|
18
|
+
if (node.tagName !== "code")
|
|
19
|
+
return;
|
|
20
|
+
if (parent && parent.type === "element" && parent.tagName === "pre")
|
|
21
|
+
return;
|
|
22
|
+
const textChild = node.children[0];
|
|
23
|
+
if (!textChild || textChild.type !== "text")
|
|
24
|
+
return;
|
|
25
|
+
const match = LANG_PREFIX.exec(textChild.value);
|
|
26
|
+
if (!match)
|
|
27
|
+
return;
|
|
28
|
+
const lang = match[1];
|
|
29
|
+
if (!isBundledLanguage(lang))
|
|
30
|
+
return;
|
|
31
|
+
const code = textChild.value.slice(match[0].length);
|
|
32
|
+
nodes.push({ node, lang, code });
|
|
33
|
+
});
|
|
34
|
+
for (const { node, lang, code } of nodes) {
|
|
35
|
+
await highlighter.loadLanguage(lang);
|
|
36
|
+
const result = highlighter.codeToHast(code, {
|
|
37
|
+
themes: { light: "catppuccin-latte", dark: "catppuccin-mocha" },
|
|
38
|
+
lang,
|
|
39
|
+
});
|
|
40
|
+
const pre = result.children[0];
|
|
41
|
+
if (pre && pre.type === "element" && "children" in pre) {
|
|
42
|
+
const codeEl = pre.children[0];
|
|
43
|
+
if (codeEl && codeEl.type === "element" && "children" in codeEl) {
|
|
44
|
+
node.children = codeEl.children.filter((c) => c.type === "element" || c.type === "text");
|
|
45
|
+
node.properties = {
|
|
46
|
+
...node.properties,
|
|
47
|
+
className: "shiki-inline",
|
|
48
|
+
style: codeEl.properties?.style,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVoeXBlLWlubGluZS1jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3BsdWdpbnMvcmVoeXBlLWlubGluZS1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN4QyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLE9BQU8sQ0FBQTtBQTZCZCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUE7QUFFakMsU0FBUyxpQkFBaUIsQ0FBQyxJQUFZO0lBQ3JDLE9BQU8sSUFBSSxJQUFJLGdCQUFnQixDQUFBO0FBQ2pDLENBQUM7QUFFRCx5R0FBeUc7QUFDekcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXlCLEdBQUcsRUFBRTtJQUN6RCxPQUFPLEtBQUssRUFBRSxJQUFjLEVBQUUsRUFBRTtRQUM5QixNQUFNLFdBQVcsR0FBRyxNQUFNLHVCQUF1QixDQUFDO1lBQ2hELE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO1lBQ2hELEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxLQUFLLEdBSUwsRUFBRSxDQUFBO1FBRVIsS0FBSyxDQUNILElBQUksRUFDSixTQUFTLEVBQ1QsQ0FDRSxJQUFjLEVBQ2QsTUFBMEIsRUFDMUIsTUFBNEIsRUFDNUIsRUFBRTtZQUNGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO2dCQUFFLE9BQU07WUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU07Z0JBQUUsT0FBTTtZQUNuQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUs7Z0JBQ2pFLE9BQU07WUFFUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxNQUFNO2dCQUFFLE9BQU07WUFFbkQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDL0MsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTTtZQUVsQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUE7WUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFBRSxPQUFNO1lBRXBDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2xDLENBQUMsQ0FDRixDQUFBO1FBRUQsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDcEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7Z0JBQzFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7Z0JBQy9ELElBQUk7YUFDTCxDQUFDLENBQUE7WUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzlCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDOUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksVUFBVSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNwQyxDQUFDLENBQUMsRUFBK0IsRUFBRSxDQUNqQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FDNUMsQ0FBQTtvQkFDRCxJQUFJLENBQUMsVUFBVSxHQUFHO3dCQUNoQixHQUFHLElBQUksQ0FBQyxVQUFVO3dCQUNsQixTQUFTLEVBQUUsY0FBYzt3QkFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSztxQkFDaEMsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuaW1wb3J0IHtcbiAgdHlwZSBCdW5kbGVkTGFuZ3VhZ2UsXG4gIGJ1bmRsZWRMYW5ndWFnZXMsXG4gIGdldFNpbmdsZXRvbkhpZ2hsaWdodGVyLFxufSBmcm9tIFwic2hpa2lcIlxuXG5pbnRlcmZhY2UgSGFzdFRleHQge1xuICB0eXBlOiBcInRleHRcIlxuICB2YWx1ZTogc3RyaW5nXG59XG5cbnR5cGUgUHJvcGVydHlWYWx1ZSA9XG4gIHwgYm9vbGVhblxuICB8IG51bWJlclxuICB8IHN0cmluZ1xuICB8IG51bGxcbiAgfCB1bmRlZmluZWRcbiAgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+XG5cbmludGVyZmFjZSBIYXN0RWxlbWVudCB7XG4gIHR5cGU6IFwiZWxlbWVudFwiXG4gIHRhZ05hbWU6IHN0cmluZ1xuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eVZhbHVlPlxuICBjaGlsZHJlbjogKEhhc3RFbGVtZW50IHwgSGFzdFRleHQpW11cbn1cblxuaW50ZXJmYWNlIEhhc3RSb290IHtcbiAgdHlwZTogXCJyb290XCJcbiAgY2hpbGRyZW46IChIYXN0RWxlbWVudCB8IEhhc3RUZXh0KVtdXG59XG5cbnR5cGUgSGFzdE5vZGUgPSBIYXN0Um9vdCB8IEhhc3RFbGVtZW50IHwgSGFzdFRleHRcblxuY29uc3QgTEFOR19QUkVGSVggPSAvXlxcezooXFx3KylcXH0vXG5cbmZ1bmN0aW9uIGlzQnVuZGxlZExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IGxhbmcgaXMgQnVuZGxlZExhbmd1YWdlIHtcbiAgcmV0dXJuIGxhbmcgaW4gYnVuZGxlZExhbmd1YWdlc1xufVxuXG4vKiogUmVoeXBlIHBsdWdpbiB0aGF0IGFwcGxpZXMgU2hpa2kgc3ludGF4IGhpZ2hsaWdodGluZyB0byBpbmxpbmUgY29kZSBzcGFucyB3aXRoIGEgYHs6bGFuZ31gIHByZWZpeC4gKi9cbmV4cG9ydCBjb25zdCByZWh5cGVJbmxpbmVDb2RlOiBQbHVnaW48W10sIEhhc3RSb290PiA9ICgpID0+IHtcbiAgcmV0dXJuIGFzeW5jICh0cmVlOiBIYXN0Um9vdCkgPT4ge1xuICAgIGNvbnN0IGhpZ2hsaWdodGVyID0gYXdhaXQgZ2V0U2luZ2xldG9uSGlnaGxpZ2h0ZXIoe1xuICAgICAgdGhlbWVzOiBbXCJjYXRwcHVjY2luLWxhdHRlXCIsIFwiY2F0cHB1Y2Npbi1tb2NoYVwiXSxcbiAgICAgIGxhbmdzOiBbXSxcbiAgICB9KVxuXG4gICAgY29uc3Qgbm9kZXM6IHtcbiAgICAgIG5vZGU6IEhhc3RFbGVtZW50XG4gICAgICBsYW5nOiBCdW5kbGVkTGFuZ3VhZ2VcbiAgICAgIGNvZGU6IHN0cmluZ1xuICAgIH1bXSA9IFtdXG5cbiAgICB2aXNpdChcbiAgICAgIHRyZWUsXG4gICAgICBcImVsZW1lbnRcIixcbiAgICAgIChcbiAgICAgICAgbm9kZTogSGFzdE5vZGUsXG4gICAgICAgIF9pbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgICAgICBwYXJlbnQ6IEhhc3ROb2RlIHwgdW5kZWZpbmVkLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiZWxlbWVudFwiKSByZXR1cm5cbiAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gXCJjb2RlXCIpIHJldHVyblxuICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC50eXBlID09PSBcImVsZW1lbnRcIiAmJiBwYXJlbnQudGFnTmFtZSA9PT0gXCJwcmVcIilcbiAgICAgICAgICByZXR1cm5cblxuICAgICAgICBjb25zdCB0ZXh0Q2hpbGQgPSBub2RlLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmICghdGV4dENoaWxkIHx8IHRleHRDaGlsZC50eXBlICE9PSBcInRleHRcIikgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSBMQU5HX1BSRUZJWC5leGVjKHRleHRDaGlsZC52YWx1ZSlcbiAgICAgICAgaWYgKCFtYXRjaCkgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgbGFuZyA9IG1hdGNoWzFdIVxuICAgICAgICBpZiAoIWlzQnVuZGxlZExhbmd1YWdlKGxhbmcpKSByZXR1cm5cblxuICAgICAgICBjb25zdCBjb2RlID0gdGV4dENoaWxkLnZhbHVlLnNsaWNlKG1hdGNoWzBdLmxlbmd0aClcbiAgICAgICAgbm9kZXMucHVzaCh7IG5vZGUsIGxhbmcsIGNvZGUgfSlcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCB7IG5vZGUsIGxhbmcsIGNvZGUgfSBvZiBub2Rlcykge1xuICAgICAgYXdhaXQgaGlnaGxpZ2h0ZXIubG9hZExhbmd1YWdlKGxhbmcpXG4gICAgICBjb25zdCByZXN1bHQgPSBoaWdobGlnaHRlci5jb2RlVG9IYXN0KGNvZGUsIHtcbiAgICAgICAgdGhlbWVzOiB7IGxpZ2h0OiBcImNhdHBwdWNjaW4tbGF0dGVcIiwgZGFyazogXCJjYXRwcHVjY2luLW1vY2hhXCIgfSxcbiAgICAgICAgbGFuZyxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHByZSA9IHJlc3VsdC5jaGlsZHJlblswXVxuICAgICAgaWYgKHByZSAmJiBwcmUudHlwZSA9PT0gXCJlbGVtZW50XCIgJiYgXCJjaGlsZHJlblwiIGluIHByZSkge1xuICAgICAgICBjb25zdCBjb2RlRWwgPSBwcmUuY2hpbGRyZW5bMF1cbiAgICAgICAgaWYgKGNvZGVFbCAmJiBjb2RlRWwudHlwZSA9PT0gXCJlbGVtZW50XCIgJiYgXCJjaGlsZHJlblwiIGluIGNvZGVFbCkge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBjb2RlRWwuY2hpbGRyZW4uZmlsdGVyKFxuICAgICAgICAgICAgKGMpOiBjIGlzIEhhc3RFbGVtZW50IHwgSGFzdFRleHQgPT5cbiAgICAgICAgICAgICAgYy50eXBlID09PSBcImVsZW1lbnRcIiB8fCBjLnR5cGUgPT09IFwidGV4dFwiLFxuICAgICAgICAgIClcbiAgICAgICAgICBub2RlLnByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAuLi5ub2RlLnByb3BlcnRpZXMsXG4gICAgICAgICAgICBjbGFzc05hbWU6IFwic2hpa2ktaW5saW5lXCIsXG4gICAgICAgICAgICBzdHlsZTogY29kZUVsLnByb3BlcnRpZXM/LnN0eWxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface HastNode {
|
|
2
|
+
type: string;
|
|
3
|
+
tagName?: string;
|
|
4
|
+
properties?: Record<string, unknown>;
|
|
5
|
+
children?: HastNode[];
|
|
6
|
+
}
|
|
7
|
+
/** Give each GFM task-list checkbox an accessible name so screen readers and
|
|
8
|
+
* axe-based audits don't flag them as form controls without labels. */
|
|
9
|
+
export declare function rehypeTaskListA11y(): (tree: HastNode) => void;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
2
|
+
/** Give each GFM task-list checkbox an accessible name so screen readers and
|
|
3
|
+
* axe-based audits don't flag them as form controls without labels. */
|
|
4
|
+
export function rehypeTaskListA11y() {
|
|
5
|
+
return (tree) => {
|
|
6
|
+
visit(tree, "element", (node) => {
|
|
7
|
+
if (node.tagName !== "li")
|
|
8
|
+
return;
|
|
9
|
+
const classes = node.properties?.className;
|
|
10
|
+
const hasTaskClass = Array.isArray(classes) && classes.includes("task-list-item");
|
|
11
|
+
if (!hasTaskClass)
|
|
12
|
+
return;
|
|
13
|
+
for (const child of node.children ?? []) {
|
|
14
|
+
if (child.type !== "element")
|
|
15
|
+
continue;
|
|
16
|
+
if (child.tagName !== "input")
|
|
17
|
+
continue;
|
|
18
|
+
if (child.properties?.type !== "checkbox")
|
|
19
|
+
continue;
|
|
20
|
+
child.properties = {
|
|
21
|
+
...child.properties,
|
|
22
|
+
ariaLabel: child.properties?.checked ? "Completed task" : "Task",
|
|
23
|
+
};
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVoeXBlLXRhc2stbGlzdC1hMTF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3BsdWdpbnMvcmVoeXBlLXRhc2stbGlzdC1hMTF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQVN4Qzt1RUFDdUU7QUFDdkUsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLENBQUMsSUFBYyxFQUFFLEVBQUU7UUFDeEIsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFjLEVBQUUsRUFBRTtZQUN4QyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSTtnQkFBRSxPQUFNO1lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFBO1lBQzFDLE1BQU0sWUFBWSxHQUNoQixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFNO1lBRXpCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7b0JBQUUsU0FBUTtnQkFDdEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU87b0JBQUUsU0FBUTtnQkFDdkMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxVQUFVO29CQUFFLFNBQVE7Z0JBQ25ELEtBQUssQ0FBQyxVQUFVLEdBQUc7b0JBQ2pCLEdBQUcsS0FBSyxDQUFDLFVBQVU7b0JBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU07aUJBQ2pFLENBQUE7Z0JBQ0QsTUFBSztZQUNQLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2aXNpdCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCJcblxuaW50ZXJmYWNlIEhhc3ROb2RlIHtcbiAgdHlwZTogc3RyaW5nXG4gIHRhZ05hbWU/OiBzdHJpbmdcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNoaWxkcmVuPzogSGFzdE5vZGVbXVxufVxuXG4vKiogR2l2ZSBlYWNoIEdGTSB0YXNrLWxpc3QgY2hlY2tib3ggYW4gYWNjZXNzaWJsZSBuYW1lIHNvIHNjcmVlbiByZWFkZXJzIGFuZFxuICogYXhlLWJhc2VkIGF1ZGl0cyBkb24ndCBmbGFnIHRoZW0gYXMgZm9ybSBjb250cm9scyB3aXRob3V0IGxhYmVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWh5cGVUYXNrTGlzdEExMXkoKSB7XG4gIHJldHVybiAodHJlZTogSGFzdE5vZGUpID0+IHtcbiAgICB2aXNpdCh0cmVlLCBcImVsZW1lbnRcIiwgKG5vZGU6IEhhc3ROb2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS50YWdOYW1lICE9PSBcImxpXCIpIHJldHVyblxuICAgICAgY29uc3QgY2xhc3NlcyA9IG5vZGUucHJvcGVydGllcz8uY2xhc3NOYW1lXG4gICAgICBjb25zdCBoYXNUYXNrQ2xhc3MgPVxuICAgICAgICBBcnJheS5pc0FycmF5KGNsYXNzZXMpICYmIGNsYXNzZXMuaW5jbHVkZXMoXCJ0YXNrLWxpc3QtaXRlbVwiKVxuICAgICAgaWYgKCFoYXNUYXNrQ2xhc3MpIHJldHVyblxuXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4gPz8gW10pIHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IFwiZWxlbWVudFwiKSBjb250aW51ZVxuICAgICAgICBpZiAoY2hpbGQudGFnTmFtZSAhPT0gXCJpbnB1dFwiKSBjb250aW51ZVxuICAgICAgICBpZiAoY2hpbGQucHJvcGVydGllcz8udHlwZSAhPT0gXCJjaGVja2JveFwiKSBjb250aW51ZVxuICAgICAgICBjaGlsZC5wcm9wZXJ0aWVzID0ge1xuICAgICAgICAgIC4uLmNoaWxkLnByb3BlcnRpZXMsXG4gICAgICAgICAgYXJpYUxhYmVsOiBjaGlsZC5wcm9wZXJ0aWVzPy5jaGVja2VkID8gXCJDb21wbGV0ZWQgdGFza1wiIDogXCJUYXNrXCIsXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Root } from "mdast";
|
|
2
|
+
import type { Plugin } from "unified";
|
|
3
|
+
/** Walk a mdast tree and convert :abbr text directives into Abbr JSX elements */
|
|
4
|
+
export declare function transformAbbrDirectives(tree: Root): void;
|
|
5
|
+
/** Remark plugin that converts :abbr text directives into Abbr JSX elements */
|
|
6
|
+
export declare const remarkAbbr: Plugin<[], Root>;
|