@takazudo/zudo-doc 5.28.2 → 6.0.1
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/CHANGELOG.md +33 -0
- package/README.md +49 -16
- package/bin/gen-z-index.mjs +18 -18
- package/dist/agent-docs/identity.d.ts +4 -0
- package/dist/agent-docs/identity.js +24 -0
- package/dist/agent-docs/index.d.ts +5 -0
- package/dist/agent-docs/index.js +5 -0
- package/dist/agent-docs/limits.d.ts +11 -0
- package/dist/agent-docs/limits.js +24 -0
- package/dist/agent-docs/search.d.ts +14 -0
- package/dist/agent-docs/search.js +82 -0
- package/dist/agent-docs/tokenize.d.ts +2 -0
- package/dist/agent-docs/tokenize.js +22 -0
- package/dist/agent-docs/types.d.ts +68 -0
- package/dist/agent-docs/types.js +0 -0
- package/dist/ai-chat-modal/index.d.ts +1 -4
- package/dist/ai-chat-modal/index.js +183 -123
- package/dist/asset-components/asset-card.d.ts +1 -2
- package/dist/asset-components/asset-card.js +12 -12
- package/dist/asset-components/asset-code.d.ts +1 -2
- package/dist/asset-components/asset-code.js +10 -10
- package/dist/asset-components/shared.d.ts +3 -4
- package/dist/asset-components/shared.js +4 -4
- package/dist/asset-index-page/body.d.ts +5 -6
- package/dist/asset-index-page/body.js +6 -6
- package/dist/asset-index-page/index.d.ts +1 -2
- package/dist/asset-index-page/index.js +1 -1
- package/dist/asset-page/body.d.ts +5 -9
- package/dist/asset-page/body.js +3 -3
- package/dist/asset-page/components.d.ts +16 -17
- package/dist/asset-page/components.js +10 -9
- package/dist/asset-page/index.d.ts +1 -2
- package/dist/asset-page/index.js +1 -1
- package/dist/auto-logo/index.d.ts +1 -2
- package/dist/auto-logo/index.js +2 -2
- package/dist/body-foot-util/body-foot-util-area.d.ts +3 -4
- package/dist/body-foot-util/body-foot-util-area.js +1 -2
- package/dist/body-foot-util/edit-link.d.ts +2 -3
- package/dist/body-foot-util/edit-link.js +1 -2
- package/dist/breadcrumb/breadcrumb.d.ts +6 -6
- package/dist/breadcrumb/breadcrumb.js +3 -4
- package/dist/catalog.js +1 -1
- package/dist/category-nav/index.d.ts +1 -2
- package/dist/category-nav/index.js +11 -5
- package/dist/category-tree-nav/index.d.ts +1 -2
- package/dist/category-tree-nav/index.js +3 -3
- package/dist/chrome/derive.d.ts +18 -27
- package/dist/chrome/derive.js +47 -29
- package/dist/chrome/index.d.ts +5 -5
- package/dist/chrome/index.js +1 -1
- package/dist/chrome/island-data.d.ts +4 -0
- package/dist/chrome/island-data.js +52 -0
- package/dist/chrome/primary-slots.d.ts +2 -3
- package/dist/chrome-bindings.d.ts +30 -22
- package/dist/code-group/index.d.ts +3 -4
- package/dist/code-group/index.js +3 -7
- package/dist/code-syntax/code-block-enhancer.d.ts +1 -2
- package/dist/code-syntax/code-block-enhancer.js +2 -2
- package/dist/code-syntax/mermaid-init.d.ts +1 -2
- package/dist/code-syntax/mermaid-init.js +5 -2
- package/dist/code-syntax/tabs-init-script.js +1 -1
- package/dist/code-syntax/tabs-init.d.ts +1 -2
- package/dist/code-syntax/tabs-init.js +2 -2
- package/dist/code-syntax/tabs.d.ts +6 -6
- package/dist/code-syntax/tabs.js +8 -8
- package/dist/compiled.css +2937 -2942
- package/dist/config/component-tokens.d.ts +1 -1
- package/dist/config/component-tokens.js +22 -0
- package/dist/config-assertions/index.d.ts +13 -0
- package/dist/config-assertions/index.js +14 -0
- package/dist/config.d.ts +36 -17
- package/dist/config.js +23 -95
- package/dist/content/content-blockquote.d.ts +2 -3
- package/dist/content/content-blockquote.js +3 -3
- package/dist/content/content-code.d.ts +3 -4
- package/dist/content/content-code.js +5 -5
- package/dist/content/content-link.d.ts +3 -4
- package/dist/content/content-link.js +10 -10
- package/dist/content/content-ol.d.ts +2 -3
- package/dist/content/content-ol.js +5 -4
- package/dist/content/content-paragraph.d.ts +2 -3
- package/dist/content/content-paragraph.js +1 -1
- package/dist/content/content-strong.d.ts +2 -3
- package/dist/content/content-strong.js +3 -3
- package/dist/content/content-table.d.ts +2 -3
- package/dist/content/content-table.js +4 -4
- package/dist/content/content-ul.d.ts +2 -3
- package/dist/content/content-ul.js +4 -4
- package/dist/content/heading-h2.d.ts +2 -3
- package/dist/content/heading-h2.js +4 -4
- package/dist/content/heading-h3.d.ts +2 -3
- package/dist/content/heading-h3.js +4 -4
- package/dist/content/heading-h4.d.ts +2 -3
- package/dist/content/heading-h4.js +4 -4
- package/dist/content-admonition/index.d.ts +3 -4
- package/dist/content-admonition/index.js +2 -2
- package/dist/content.css +35 -33
- package/dist/design-token-panel-bootstrap-controller.d.ts +178 -0
- package/dist/design-token-panel-bootstrap-controller.js +359 -0
- package/dist/design-token-panel-bootstrap-island.d.ts +5 -0
- package/dist/design-token-panel-bootstrap-island.js +19 -0
- package/dist/design-token-panel-bootstrap.d.ts +5 -195
- package/dist/design-token-panel-bootstrap.js +3 -288
- package/dist/desktop-sidebar-toggle-island/index.d.ts +2 -7
- package/dist/desktop-sidebar-toggle-island/index.js +2 -58
- package/dist/desktop-sidebar-toggle-island/island.d.ts +4 -0
- package/dist/desktop-sidebar-toggle-island/island.js +43 -0
- package/dist/desktop-sidebar-toggle-island/storage.d.ts +4 -0
- package/dist/desktop-sidebar-toggle-island/storage.js +29 -0
- package/dist/desktop-toc-toggle-island/index.d.ts +2 -7
- package/dist/desktop-toc-toggle-island/index.js +2 -58
- package/dist/desktop-toc-toggle-island/island.d.ts +4 -0
- package/dist/desktop-toc-toggle-island/island.js +43 -0
- package/dist/desktop-toc-toggle-island/storage.d.ts +4 -0
- package/dist/desktop-toc-toggle-island/storage.js +29 -0
- package/dist/details/details.d.ts +3 -4
- package/dist/details/details.js +1 -1
- package/dist/doc-body-end/index.d.ts +1 -2
- package/dist/doc-body-end/index.js +1 -1
- package/dist/doc-body-end-islands/design-token-panel-island.d.ts +2 -2
- package/dist/doc-body-end-islands/design-token-panel-island.js +3 -7
- package/dist/doc-body-end-islands/index.d.ts +4 -21
- package/dist/doc-body-end-islands/index.js +5 -3
- package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +3 -13
- package/dist/doc-body-end-islands/theme-pack-switcher-island.js +11 -13
- package/dist/doc-content-header/index.d.ts +1 -2
- package/dist/doc-content-header/index.js +1 -1
- package/dist/doc-history/index.d.ts +1 -1
- package/dist/doc-history/index.js +166 -141
- package/dist/doc-history-area/index.d.ts +6 -4
- package/dist/doc-history-area/index.js +17 -16
- package/dist/doc-metainfo-area/index.d.ts +2 -3
- package/dist/doc-metainfo-area/index.js +1 -1
- package/dist/doc-page-renderer/index.d.ts +13 -7
- package/dist/doc-page-renderer/index.js +10 -1
- package/dist/doc-page-shell/index.d.ts +20 -7
- package/dist/doc-page-shell/index.js +17 -6
- package/dist/doc-pager/index.d.ts +1 -2
- package/dist/doc-pager/index.js +3 -3
- package/dist/doc-tags-area/index.d.ts +2 -3
- package/dist/doc-tags-area/index.js +1 -1
- package/dist/doclayout/doc-layout-with-defaults.d.ts +9 -9
- package/dist/doclayout/doc-layout-with-defaults.js +5 -15
- package/dist/doclayout/doc-layout.d.ts +26 -27
- package/dist/doclayout/doc-layout.js +23 -14
- package/dist/docs-schema/index.d.ts +4 -0
- package/dist/docs-schema/index.js +1 -0
- package/dist/extract-headings/index.js +43 -12
- package/dist/factory-context/index.d.ts +22 -19
- package/dist/features.css +75 -8
- package/dist/find-in-page/find-bar.d.ts +4 -2
- package/dist/find-in-page/find-bar.js +58 -69
- package/dist/find-in-page/index.d.ts +2 -8
- package/dist/find-in-page/index.js +33 -30
- package/dist/footer/footer.d.ts +3 -4
- package/dist/footer/footer.js +3 -3
- package/dist/footer-with-defaults/index.d.ts +2 -3
- package/dist/footer-with-defaults/index.js +1 -1
- package/dist/frontmatter-preview-defaults/index.js +1 -0
- package/dist/head/doc-head.d.ts +1 -1
- package/dist/head/doc-head.js +24 -32
- package/dist/head/og-tags.d.ts +1 -1
- package/dist/head/og-tags.js +8 -7
- package/dist/head/twitter-card.d.ts +1 -1
- package/dist/head/twitter-card.js +1 -1
- package/dist/head-with-defaults/index.d.ts +7 -2
- package/dist/head-with-defaults/index.js +46 -32
- package/dist/header/header.d.ts +8 -8
- package/dist/header/header.js +9 -11
- package/dist/header/types.d.ts +7 -7
- package/dist/header-with-defaults/index.d.ts +3 -4
- package/dist/header-with-defaults/index.js +27 -14
- package/dist/home-intro/index.d.ts +2 -5
- package/dist/home-intro/index.js +7 -5
- package/dist/home-intro/prepare.js +4 -3
- package/dist/home-page/index.d.ts +3 -3
- package/dist/home-page/index.js +19 -17
- package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -4
- package/dist/html-preview-wrapper/highlighted-code.js +19 -17
- package/dist/html-preview-wrapper/html-preview-wrapper.d.ts +4 -25
- package/dist/html-preview-wrapper/html-preview-wrapper.js +2 -87
- package/dist/html-preview-wrapper/html-preview.d.ts +3 -10
- package/dist/html-preview-wrapper/html-preview.js +13 -37
- package/dist/html-preview-wrapper/index.d.ts +2 -1
- package/dist/html-preview-wrapper/index.js +1 -1
- package/dist/html-preview-wrapper/preview-base.d.ts +3 -5
- package/dist/html-preview-wrapper/preview-base.js +56 -59
- package/dist/html-preview-wrapper/wrapper.d.ts +20 -0
- package/dist/html-preview-wrapper/wrapper.js +37 -0
- package/dist/hydration-pending.d.ts +3 -5
- package/dist/hydration-pending.js +7 -5
- package/dist/i18n-version/language-switcher.d.ts +5 -32
- package/dist/i18n-version/language-switcher.js +5 -106
- package/dist/i18n-version/switcher-generated-scripts.d.ts +2 -0
- package/dist/i18n-version/switcher-generated-scripts.js +107 -0
- package/dist/i18n-version/switcher-url-state.d.ts +76 -0
- package/dist/i18n-version/switcher-url-state.js +103 -0
- package/dist/i18n-version/version-banner.d.ts +2 -3
- package/dist/i18n-version/version-banner.js +1 -1
- package/dist/i18n-version/version-switcher.d.ts +5 -50
- package/dist/i18n-version/version-switcher.js +5 -157
- package/dist/icons/index.d.ts +18 -19
- package/dist/icons/index.js +17 -33
- package/dist/image-enlarge/index.d.ts +1 -10
- package/dist/image-enlarge/index.js +80 -55
- package/dist/image-enlarge/public.d.ts +2 -0
- package/dist/image-enlarge/public.js +6 -0
- package/dist/image-enlarge/ssr-fallback.d.ts +2 -0
- package/dist/image-enlarge/ssr-fallback.js +8 -0
- package/dist/index.d.ts +11 -4
- package/dist/inline-version-switcher/index.d.ts +1 -2
- package/dist/inline-version-switcher/index.js +1 -1
- package/dist/island-types/index.d.ts +2 -2
- package/dist/island-types/index.js +1 -5
- package/dist/math-block/index.d.ts +4 -7
- package/dist/math-block/index.js +5 -5
- package/dist/mcp/handler.d.ts +8 -0
- package/dist/mcp/handler.js +129 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/loader.d.ts +19 -0
- package/dist/mcp/loader.js +202 -0
- package/dist/mdx-components/index.js +40 -108
- package/dist/mermaid-enlarge/index.d.ts +1 -8
- package/dist/mermaid-enlarge/index.js +174 -158
- package/dist/mermaid-enlarge/public.d.ts +2 -0
- package/dist/mermaid-enlarge/public.js +6 -0
- package/dist/mermaid-enlarge/ssr-fallback.d.ts +2 -0
- package/dist/mermaid-enlarge/ssr-fallback.js +8 -0
- package/dist/metainfo/doc-metainfo.d.ts +2 -3
- package/dist/metainfo/doc-metainfo.js +1 -4
- package/dist/metainfo/doc-tags.d.ts +2 -3
- package/dist/metainfo/doc-tags.js +1 -1
- package/dist/metainfo/frontmatter-preview.d.ts +3 -4
- package/dist/metainfo/frontmatter-preview.js +1 -1
- package/dist/nav-data-prep/index.js +6 -4
- package/dist/nav-indexing/category-nav.d.ts +2 -3
- package/dist/nav-indexing/category-nav.js +1 -2
- package/dist/nav-indexing/category-tree-nav.d.ts +2 -3
- package/dist/nav-indexing/category-tree-nav.js +1 -1
- package/dist/nav-indexing/doc-card-grid.d.ts +2 -3
- package/dist/nav-indexing/doc-card-grid.js +1 -2
- package/dist/nav-indexing/docs-sitemap.d.ts +2 -3
- package/dist/nav-indexing/docs-sitemap.js +2 -2
- package/dist/nav-indexing/index.d.ts +1 -1
- package/dist/nav-indexing/nav-card-grid.d.ts +2 -3
- package/dist/nav-indexing/nav-card-grid.js +1 -2
- package/dist/nav-indexing/note-tray-index-parts/card-list.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index-parts/card-list.js +4 -4
- package/dist/nav-indexing/note-tray-index-parts/date-line.d.ts +2 -3
- package/dist/nav-indexing/note-tray-index-parts/date-line.js +1 -1
- package/dist/nav-indexing/note-tray-index-parts/index-list.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index-parts/index-list.js +2 -2
- package/dist/nav-indexing/note-tray-index-parts/timeline.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index-parts/timeline.js +2 -2
- package/dist/nav-indexing/note-tray-index.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index.js +1 -1
- package/dist/nav-indexing/site-tree-nav-demo.d.ts +2 -3
- package/dist/nav-indexing/site-tree-nav-demo.js +2 -2
- package/dist/nav-indexing/tag-nav.d.ts +1 -2
- package/dist/nav-indexing/tag-nav.js +1 -1
- package/dist/nav-indexing/types.d.ts +2 -2
- package/dist/nav-indexing/versions-page-content.d.ts +2 -3
- package/dist/nav-indexing/versions-page-content.js +8 -8
- package/dist/note-tray-index/index.d.ts +1 -2
- package/dist/note-tray-index/index.js +1 -1
- package/dist/page-loading/page-loading-overlay.d.ts +1 -2
- package/dist/page-loading/page-loading-overlay.js +3 -5
- package/dist/plugins/agent-export.d.ts +3 -0
- package/dist/plugins/agent-export.js +34 -0
- package/dist/plugins/internal/agent-export/chunk.d.ts +5 -0
- package/dist/plugins/internal/agent-export/chunk.js +90 -0
- package/dist/plugins/internal/agent-export/index.d.ts +24 -0
- package/dist/plugins/internal/agent-export/index.js +123 -0
- package/dist/plugins/internal/agent-export/normalize.d.ts +5 -0
- package/dist/plugins/internal/agent-export/normalize.js +73 -0
- package/dist/plugins/internal/llms-txt/dev-middleware.d.ts +6 -0
- package/dist/plugins/internal/llms-txt/dev-middleware.js +8 -3
- package/dist/plugins/internal/llms-txt/emit.js +23 -6
- package/dist/plugins/internal/llms-txt/generate.d.ts +7 -1
- package/dist/plugins/internal/llms-txt/generate.js +9 -2
- package/dist/plugins/internal/llms-txt/load.d.ts +2 -0
- package/dist/plugins/internal/llms-txt/load.js +20 -4
- package/dist/plugins/internal/llms-txt/types.d.ts +10 -0
- package/dist/plugins/routes.js +4 -0
- package/dist/preset.d.ts +19 -9
- package/dist/preset.js +20 -1
- package/dist/route-context-payload/index.js +1 -1
- package/dist/routes/404.d.ts +2 -3
- package/dist/routes/404.js +1 -1
- package/dist/routes/_chrome.d.ts +5 -5
- package/dist/routes/_chrome.js +7 -2
- package/dist/routes/_context.d.ts +4 -4
- package/dist/routes/_design-token-panel-bootstrap.d.ts +1 -4
- package/dist/routes/_design-token-panel-bootstrap.js +9 -1
- package/dist/routes/docs-slug.d.ts +2 -3
- package/dist/routes/docs-tags-index.d.ts +2 -3
- package/dist/routes/docs-tags-index.js +1 -1
- package/dist/routes/docs-tags-tag.d.ts +2 -3
- package/dist/routes/docs-tags-tag.js +1 -1
- package/dist/routes/docs-versions.d.ts +2 -3
- package/dist/routes/docs-versions.js +1 -1
- package/dist/routes/files-path.d.ts +2 -3
- package/dist/routes/files-path.js +1 -1
- package/dist/routes/index.d.ts +2 -3
- package/dist/routes/index.js +1 -1
- package/dist/routes/locale-docs-slug.d.ts +2 -3
- package/dist/routes/locale-docs-tags-index.d.ts +2 -3
- package/dist/routes/locale-docs-tags-index.js +1 -1
- package/dist/routes/locale-docs-tags-tag.d.ts +2 -3
- package/dist/routes/locale-docs-tags-tag.js +1 -1
- package/dist/routes/locale-docs-versions.d.ts +2 -3
- package/dist/routes/locale-docs-versions.js +1 -1
- package/dist/routes/locale-files-path.d.ts +2 -3
- package/dist/routes/locale-files-path.js +1 -1
- package/dist/routes/locale-index.d.ts +2 -3
- package/dist/routes/locale-index.js +1 -1
- package/dist/routes/mcp.d.ts +5 -0
- package/dist/routes/mcp.js +25 -0
- package/dist/routes/v-docs-slug.d.ts +2 -3
- package/dist/routes/v-locale-docs-slug.d.ts +2 -3
- package/dist/search-widget/index.d.ts +1 -2
- package/dist/search-widget/index.js +4 -7
- package/dist/search-widget-script/generated-script.js +12 -5
- package/dist/settings-defaults.d.ts +2 -0
- package/dist/settings-defaults.js +93 -0
- package/dist/settings.d.ts +8 -2
- package/dist/sidebar/client-data.d.ts +18 -0
- package/dist/sidebar/client-data.js +47 -0
- package/dist/sidebar/index.d.ts +3 -1
- package/dist/sidebar/index.js +3 -1
- package/dist/sidebar/sidebar.d.ts +12 -44
- package/dist/sidebar/sidebar.js +4 -3
- package/dist/sidebar/types.d.ts +14 -0
- package/dist/sidebar-prepaint/index.d.ts +1 -2
- package/dist/sidebar-prepaint/index.js +4 -6
- package/dist/sidebar-resizer/sidebar-resizer-init.d.ts +2 -3
- package/dist/sidebar-resizer/sidebar-resizer-init.js +3 -3
- package/dist/sidebar-toggle-island/index.d.ts +8 -11
- package/dist/sidebar-toggle-island/index.js +75 -62
- package/dist/sidebar-tree/build-tree.js +5 -6
- package/dist/sidebar-tree/types.d.ts +2 -0
- package/dist/sidebar-tree-island/index.d.ts +4 -19
- package/dist/sidebar-tree-island/index.js +782 -436
- package/dist/sidebar-tree-island/scope-state.d.ts +38 -0
- package/dist/sidebar-tree-island/scope-state.js +151 -0
- package/dist/sidebar-tree-island/sidebar-scroll-preserve.js +6 -2
- package/dist/sidebar-utils/index.d.ts +17 -19
- package/dist/sidebar-utils/index.js +100 -3
- package/dist/sidebar-utils/scope.d.ts +11 -0
- package/dist/sidebar-utils/scope.js +67 -0
- package/dist/sidebar-with-defaults/index.d.ts +1 -2
- package/dist/sidebar-with-defaults/index.js +19 -18
- package/dist/site-schema/nav-tree.js +15 -15
- package/dist/site-schema/types.d.ts +1 -0
- package/dist/site-tree-nav/index.d.ts +2 -3
- package/dist/site-tree-nav/index.js +11 -12
- package/dist/site-tree-nav/normalize-island-props.d.ts +16 -0
- package/dist/site-tree-nav/normalize-island-props.js +122 -0
- package/dist/site-tree-nav-island/index.d.ts +3 -3
- package/dist/site-tree-nav-island/index.js +243 -144
- package/dist/smart-break/index.d.ts +3 -4
- package/dist/smart-break/index.js +1 -1
- package/dist/tab-item/tab-item.d.ts +3 -4
- package/dist/tab-item/tab-item.js +1 -1
- package/dist/tag-pages/index.d.ts +3 -3
- package/dist/tag-pages/index.js +10 -10
- package/dist/theme/color-scheme-provider.d.ts +3 -3
- package/dist/theme/color-scheme-provider.js +3 -3
- package/dist/theme/theme-pack-provider.d.ts +1 -1
- package/dist/theme/theme-pack-provider.js +3 -3
- package/dist/theme/theme-toggle.d.ts +2 -3
- package/dist/theme/theme-toggle.js +1 -1
- package/dist/theme-pack-dialog/index.d.ts +1 -1
- package/dist/theme-pack-dialog/index.js +69 -75
- package/dist/theme-pack-dialog/theme-pack-card.d.ts +3 -4
- package/dist/theme-pack-dialog/theme-pack-card.js +19 -17
- package/dist/theme-pack-switcher/index.d.ts +4 -5
- package/dist/theme-pack-switcher/index.js +52 -49
- package/dist/theme-packs/academia/meta.json +1 -1
- package/dist/theme-packs/academia/pack.css +1 -1
- package/dist/theme-packs/bauhaus/meta.json +1 -1
- package/dist/theme-packs/bauhaus/pack.css +2 -2
- package/dist/theme-packs/blueprint/meta.json +1 -1
- package/dist/theme-packs/blueprint/pack.css +2 -2
- package/dist/theme-packs/botanica/meta.json +1 -1
- package/dist/theme-packs/botanica/pack.css +2 -2
- package/dist/theme-packs/broadsheet/meta.json +1 -1
- package/dist/theme-packs/broadsheet/pack.css +2 -2
- package/dist/theme-packs/brutalist/meta.json +1 -1
- package/dist/theme-packs/brutalist/pack.css +2 -2
- package/dist/theme-packs/eink/meta.json +1 -1
- package/dist/theme-packs/eink/pack.css +1 -1
- package/dist/theme-packs/futura-editorial/meta.json +1 -1
- package/dist/theme-packs/futura-editorial/pack.css +2 -2
- package/dist/theme-packs/hearth/meta.json +1 -1
- package/dist/theme-packs/hearth/pack.css +2 -2
- package/dist/theme-packs/ledger/meta.json +1 -1
- package/dist/theme-packs/ledger/pack.css +1 -1
- package/dist/theme-packs/manuscript/meta.json +1 -1
- package/dist/theme-packs/manuscript/pack.css +1 -1
- package/dist/theme-packs/matcha/meta.json +1 -1
- package/dist/theme-packs/matcha/pack.css +2 -2
- package/dist/theme-packs/nocturne/meta.json +1 -1
- package/dist/theme-packs/nocturne/pack.css +2 -2
- package/dist/theme-packs/observatory/meta.json +1 -1
- package/dist/theme-packs/observatory/pack.css +2 -2
- package/dist/theme-packs/onyx/meta.json +1 -1
- package/dist/theme-packs/onyx/pack.css +2 -2
- package/dist/theme-packs/phosphor/meta.json +1 -1
- package/dist/theme-packs/phosphor/pack.css +2 -2
- package/dist/theme-packs/riso/meta.json +1 -1
- package/dist/theme-packs/riso/pack.css +2 -2
- package/dist/theme-packs/sakura/meta.json +1 -1
- package/dist/theme-packs/sakura/pack.css +2 -2
- package/dist/theme-packs/scandi/meta.json +1 -1
- package/dist/theme-packs/scandi/pack.css +1 -1
- package/dist/theme-packs/solar/meta.json +1 -1
- package/dist/theme-packs/solar/pack.css +1 -1
- package/dist/theme-packs/sumi/meta.json +1 -1
- package/dist/theme-packs/sumi/pack.css +2 -2
- package/dist/theme-packs/swissgrid/meta.json +1 -1
- package/dist/theme-packs/swissgrid/pack.css +1 -1
- package/dist/theme-packs/timberline/meta.json +1 -1
- package/dist/theme-packs/timberline/pack.css +2 -2
- package/dist/theme-packs/washi/meta.json +1 -1
- package/dist/theme-packs/washi/pack.css +2 -2
- package/dist/theme-toggle/index.d.ts +1 -1
- package/dist/theme-toggle/index.js +154 -167
- package/dist/theme.css +47 -121
- package/dist/toc/mobile-toc.d.ts +3 -5
- package/dist/toc/mobile-toc.js +29 -27
- package/dist/toc/toc.d.ts +3 -4
- package/dist/toc/toc.js +18 -18
- package/dist/toc/use-active-heading.d.ts +5 -4
- package/dist/toc/use-active-heading.js +36 -30
- package/dist/toc-prepaint/index.d.ts +1 -2
- package/dist/toc-prepaint/index.js +4 -6
- package/dist/transitions/nested-island-props-refresh.d.ts +3 -16
- package/dist/transitions/nested-island-props-refresh.js +133 -151
- package/dist/transitions/page-events.d.ts +8 -13
- package/dist/tree-nav-shared/index.d.ts +4 -5
- package/dist/tree-nav-shared/index.js +6 -7
- package/dist/use-modal-dialog/index.d.ts +9 -63
- package/dist/use-modal-dialog/index.js +41 -59
- package/dist/versions-page/index.d.ts +3 -3
- package/dist/versions-page/index.js +5 -5
- package/dist/wind/index.d.ts +5 -0
- package/dist/wind/index.js +169 -0
- package/dist/wind.json +498 -0
- package/dist/z-index-defaults/index.d.ts +4 -4
- package/dist/zdtp-loader.d.ts +7 -0
- package/dist/zdtp-loader.js +8 -0
- package/eject/asset-components/asset-card.tsx +14 -16
- package/eject/asset-components/asset-code.tsx +10 -12
- package/eject/asset-components/shared.tsx +5 -7
- package/eject/breadcrumb/breadcrumb.tsx +15 -16
- package/eject/code-group/index.tsx +4 -10
- package/eject/content-admonition/index.tsx +5 -6
- package/eject/desktop-sidebar-toggle-island/index.ts +4 -0
- package/eject/desktop-sidebar-toggle-island/island.tsx +50 -0
- package/eject/desktop-sidebar-toggle-island/storage.ts +27 -0
- package/eject/details/details.tsx +3 -5
- package/eject/doc-history/index.tsx +193 -179
- package/eject/doc-pager/index.tsx +3 -4
- package/eject/footer/footer.tsx +7 -9
- package/eject/header/header.tsx +42 -54
- package/eject/header/nav-overflow-script.ts +1 -1
- package/eject/header/types.ts +12 -13
- package/eject/image-enlarge/index.tsx +84 -69
- package/eject/image-enlarge/public.ts +2 -0
- package/eject/image-enlarge/ssr-fallback.tsx +7 -0
- package/eject/page-loading/page-loading-overlay.tsx +8 -15
- package/eject/sidebar/client-data.ts +68 -0
- package/eject/sidebar/index.ts +3 -0
- package/eject/sidebar/sidebar.tsx +16 -97
- package/eject/sidebar/types.ts +15 -0
- package/eject/sidebar-toggle-island/index.tsx +103 -102
- package/eject/sidebar-tree-island/index.tsx +827 -615
- package/eject/sidebar-tree-island/scope-state.ts +154 -0
- package/eject/sidebar-tree-island/sidebar-scroll-preserve.ts +8 -2
- package/eject/site-tree-nav-island/index.tsx +349 -222
- package/eject/tab-item/tab-item.tsx +2 -4
- package/eject/theme-toggle/hydration-pending.ts +6 -10
- package/eject/theme-toggle/index.tsx +133 -173
- package/eject/toc/mobile-toc.tsx +27 -31
- package/eject/toc/toc.tsx +21 -24
- package/eject/toc/use-active-heading.ts +43 -38
- package/package.json +40 -22
- package/routes-src/404.tsx +2 -3
- package/routes-src/_chrome.tsx +7 -2
- package/routes-src/_design-token-panel-bootstrap.tsx +1 -63
- package/routes-src/docs-slug.tsx +2 -3
- package/routes-src/docs-tags-index.tsx +2 -3
- package/routes-src/docs-tags-tag.tsx +2 -3
- package/routes-src/docs-versions.tsx +2 -3
- package/routes-src/files-path.tsx +2 -4
- package/routes-src/index.tsx +2 -3
- package/routes-src/locale-docs-slug.tsx +2 -3
- package/routes-src/locale-docs-tags-index.tsx +2 -3
- package/routes-src/locale-docs-tags-tag.tsx +2 -3
- package/routes-src/locale-docs-versions.tsx +2 -3
- package/routes-src/locale-files-path.tsx +2 -4
- package/routes-src/locale-index.tsx +2 -3
- package/routes-src/mcp.tsx +25 -0
- package/routes-src/v-docs-slug.tsx +2 -3
- package/routes-src/v-locale-docs-slug.tsx +2 -3
- package/tsconfig.base.json +1 -1
- package/dist/safelist.css +0 -2
- package/dist/theme-no-reset.css +0 -379
- package/eject/desktop-sidebar-toggle-island/index.tsx +0 -110
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
5
|
+
import { agentItemKey, agentPageKey } from "../../../agent-docs/identity.js";
|
|
6
|
+
import { AGENT_MAX_ITEMS, AGENT_MAX_MANIFEST_BYTES, AGENT_MAX_SEARCH_INDEX_BYTES } from "../../../agent-docs/limits.js";
|
|
7
|
+
import { collectMdFiles, isExcluded, parseMarkdownFile, slugToUrl, stripMarkdown } from "../../../md-utils/index.js";
|
|
8
|
+
import { chunkAgentText } from "./chunk.js";
|
|
9
|
+
import { normalizeAgentMarkdown } from "./normalize.js";
|
|
10
|
+
const hash = (value) => createHash("sha256").update(value).digest("hex");
|
|
11
|
+
const json = (value) => JSON.stringify(value);
|
|
12
|
+
const order = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
13
|
+
function canonical(value) {
|
|
14
|
+
if (Array.isArray(value)) return value.map(canonical);
|
|
15
|
+
if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).sort(([a], [b]) => order(a, b)).map(([key, item]) => [key, canonical(item)]));
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
function prefix(base) {
|
|
19
|
+
return base === "/" ? "" : `/${base.replace(/^\/+|\/+$/g, "")}`;
|
|
20
|
+
}
|
|
21
|
+
function artifactUrl(options, path) {
|
|
22
|
+
const pathname = `${prefix(options.base)}/agent/v1/${path}`;
|
|
23
|
+
return options.siteUrl ? `${options.siteUrl.replace(/\/$/, "")}${pathname}` : pathname;
|
|
24
|
+
}
|
|
25
|
+
function projectAgentCorpus(options) {
|
|
26
|
+
const roots = [{ code: options.defaultLocale, dir: options.defaultLocaleDir, default: true }, ...(options.locales ?? []).map(({ code, dir }) => ({ code, dir, default: false }))];
|
|
27
|
+
const seen = /* @__PURE__ */ new Set();
|
|
28
|
+
const sources = roots.flatMap((root) => collectMdFiles(resolve(root.dir)).flatMap(({ filePath, slug: fileSlug }) => {
|
|
29
|
+
const parsed = parseMarkdownFile(filePath);
|
|
30
|
+
if (!parsed || isExcluded(parsed.data)) return [];
|
|
31
|
+
const slug = parsed.data.slug ?? fileSlug;
|
|
32
|
+
const url = slugToUrl(slug, root.default ? null : root.code, options.base, options.siteUrl);
|
|
33
|
+
return [{ root, filePath, parsed, slug, url }];
|
|
34
|
+
}));
|
|
35
|
+
const sourceUrls = new Map(sources.map((source) => [source.filePath, source.url]));
|
|
36
|
+
const documents = sources.map(({ root, filePath, parsed, slug, url }) => {
|
|
37
|
+
const id = agentPageKey(root.code, slug);
|
|
38
|
+
if (seen.has(id)) throw new Error(`Duplicate agent page ID: ${id}`);
|
|
39
|
+
seen.add(id);
|
|
40
|
+
const normalized = normalizeAgentMarkdown(parsed.content, url, (target) => {
|
|
41
|
+
try {
|
|
42
|
+
const source = new URL(target, pathToFileURL(filePath));
|
|
43
|
+
if (!/\.mdx?$/.test(source.pathname)) return void 0;
|
|
44
|
+
const page = sourceUrls.get(fileURLToPath(source));
|
|
45
|
+
return page === void 0 ? void 0 : page + source.search + source.hash;
|
|
46
|
+
} catch {
|
|
47
|
+
return void 0;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const title = parsed.data.title ?? slug;
|
|
51
|
+
const description = parsed.data.description ?? stripMarkdown(parsed.content).split("\n").find(Boolean) ?? "";
|
|
52
|
+
const metadata = {
|
|
53
|
+
locale: root.code,
|
|
54
|
+
pageId: id,
|
|
55
|
+
...description ? { description } : {},
|
|
56
|
+
...normalized.unsupportedDynamicContent ? { unsupportedDynamicContent: true } : {}
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
id,
|
|
60
|
+
key: id,
|
|
61
|
+
locale: root.code,
|
|
62
|
+
slug,
|
|
63
|
+
title,
|
|
64
|
+
description,
|
|
65
|
+
url,
|
|
66
|
+
text: normalized.text,
|
|
67
|
+
unsupportedDynamicContent: normalized.unsupportedDynamicContent,
|
|
68
|
+
parts: chunkAgentText(normalized.text, title, url, metadata)
|
|
69
|
+
};
|
|
70
|
+
}).sort((a, b) => order(a.locale, b.locale) || order(a.slug, b.slug));
|
|
71
|
+
const site = { name: options.siteName, url: options.siteUrl ?? "", base: options.base };
|
|
72
|
+
const locales = roots.map(({ code }) => code);
|
|
73
|
+
const fingerprint = hash(json(canonical({ schemaVersion: 1, site, defaultLocale: options.defaultLocale, locales, documents })));
|
|
74
|
+
const pages = /* @__PURE__ */ new Map();
|
|
75
|
+
const items = /* @__PURE__ */ new Map();
|
|
76
|
+
const indexed = [];
|
|
77
|
+
const manifest = { schemaVersion: 1, fingerprint, site, defaultLocale: options.defaultLocale, locales, searchIndex: { url: artifactUrl(options, "search-index.json"), sha256: "" }, documents: [], items: [] };
|
|
78
|
+
for (const doc of documents) {
|
|
79
|
+
pages.set(doc.key, doc.text);
|
|
80
|
+
const itemIds = [];
|
|
81
|
+
doc.parts.forEach((text, index2) => {
|
|
82
|
+
const part = index2 + 1;
|
|
83
|
+
const id = agentItemKey(doc.id, part);
|
|
84
|
+
itemIds.push(id);
|
|
85
|
+
const item = { id, title: doc.parts.length === 1 ? doc.title : `${doc.title} (part ${part}/${doc.parts.length})`, text, url: doc.url, metadata: { locale: doc.locale, pageId: doc.id, fingerprint, part, partCount: doc.parts.length, ...doc.description ? { description: doc.description } : {}, ...doc.unsupportedDynamicContent ? { unsupportedDynamicContent: true } : {} } };
|
|
86
|
+
const bytes = json(item);
|
|
87
|
+
items.set(id, bytes);
|
|
88
|
+
indexed.push(item);
|
|
89
|
+
manifest.items.push({ id, key: id, pageId: doc.id, url: doc.url, artifactUrl: artifactUrl(options, `items/${id}.json`), sha256: hash(bytes), part, partCount: doc.parts.length });
|
|
90
|
+
});
|
|
91
|
+
manifest.documents.push({ id: doc.id, key: doc.key, locale: doc.locale, title: doc.title, url: doc.url, markdownUrl: artifactUrl(options, `pages/${doc.key}.md`), itemIds });
|
|
92
|
+
}
|
|
93
|
+
if (indexed.length > AGENT_MAX_ITEMS) throw new Error("Agent corpus exceeds the item limit.");
|
|
94
|
+
const index = { schemaVersion: 1, fingerprint, items: indexed };
|
|
95
|
+
const indexBytes = json(index);
|
|
96
|
+
if (Buffer.byteLength(indexBytes) > AGENT_MAX_SEARCH_INDEX_BYTES) throw new Error("Agent search index exceeds the byte limit.");
|
|
97
|
+
manifest.searchIndex.sha256 = hash(indexBytes);
|
|
98
|
+
if (Buffer.byteLength(json(manifest)) > AGENT_MAX_MANIFEST_BYTES) throw new Error("Agent manifest exceeds the byte limit.");
|
|
99
|
+
return { manifest, index, pages, items };
|
|
100
|
+
}
|
|
101
|
+
function emitAgentCorpus(options) {
|
|
102
|
+
const corpus = projectAgentCorpus(options);
|
|
103
|
+
const segment = options.copyPublicWithBase === false ? "" : prefix(options.base).slice(1);
|
|
104
|
+
const root = join(options.outDir, segment, "agent", "v1");
|
|
105
|
+
rmSync(root, { recursive: true, force: true });
|
|
106
|
+
mkdirSync(join(root, "items"), { recursive: true });
|
|
107
|
+
mkdirSync(join(root, "pages"), { recursive: true });
|
|
108
|
+
const written = [];
|
|
109
|
+
const write = (path, body) => {
|
|
110
|
+
const target = join(root, path);
|
|
111
|
+
writeFileSync(target, body);
|
|
112
|
+
written.push(target);
|
|
113
|
+
};
|
|
114
|
+
write("manifest.json", json(corpus.manifest));
|
|
115
|
+
write("search-index.json", json(corpus.index));
|
|
116
|
+
for (const [key, body] of corpus.items) write(`items/${key}.json`, body);
|
|
117
|
+
for (const [key, body] of corpus.pages) write(`pages/${key}.md`, body);
|
|
118
|
+
return written;
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
emitAgentCorpus,
|
|
122
|
+
projectAgentCorpus
|
|
123
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Normalize MDX for a published text corpus without evaluating its modules. */
|
|
2
|
+
export declare function normalizeAgentMarkdown(source: string, pageUrl: string, resolveSourceLink?: (target: string) => string | undefined): {
|
|
3
|
+
text: string;
|
|
4
|
+
unsupportedDynamicContent: boolean;
|
|
5
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
function normalizeAgentMarkdown(source, pageUrl, resolveSourceLink) {
|
|
2
|
+
let unsupportedDynamicContent = false;
|
|
3
|
+
const literals = [];
|
|
4
|
+
let marker = "\0agent-code:";
|
|
5
|
+
while (source.includes(marker)) marker += ":";
|
|
6
|
+
const shield = (value) => `${marker}${literals.push(value) - 1}\0`;
|
|
7
|
+
let fence;
|
|
8
|
+
const fenced = [];
|
|
9
|
+
const lines = source.replace(/\r\n?/g, "\n").split("\n");
|
|
10
|
+
const prose = [];
|
|
11
|
+
for (const line of lines) {
|
|
12
|
+
const match = line.match(/^ {0,3}(`{3,}|~{3,})(.*)$/);
|
|
13
|
+
if (fence) {
|
|
14
|
+
fenced.push(line);
|
|
15
|
+
if (match && match[1][0] === fence[0] && match[1].length >= fence.length && !match[2].trim()) {
|
|
16
|
+
prose.push(shield(fenced.join("\n")));
|
|
17
|
+
fenced.length = 0;
|
|
18
|
+
fence = void 0;
|
|
19
|
+
}
|
|
20
|
+
} else if (match) {
|
|
21
|
+
fence = match[1];
|
|
22
|
+
fenced.push(line);
|
|
23
|
+
} else prose.push(line);
|
|
24
|
+
}
|
|
25
|
+
if (fenced.length) prose.push(shield(fenced.join("\n")));
|
|
26
|
+
let text = prose.join("\n");
|
|
27
|
+
const runs = [...text.matchAll(/`+/g)];
|
|
28
|
+
let offset = 0;
|
|
29
|
+
let protectedText = "";
|
|
30
|
+
for (let i = 0; i < runs.length; i++) {
|
|
31
|
+
const opening = runs[i];
|
|
32
|
+
const closingIndex = runs.findIndex((run, j) => j > i && run[0].length === opening[0].length);
|
|
33
|
+
if (closingIndex < 0) continue;
|
|
34
|
+
const end = runs[closingIndex].index + opening[0].length;
|
|
35
|
+
protectedText += text.slice(offset, opening.index) + shield(text.slice(opening.index, end));
|
|
36
|
+
offset = end;
|
|
37
|
+
i = closingIndex;
|
|
38
|
+
}
|
|
39
|
+
text = protectedText + text.slice(offset);
|
|
40
|
+
text = text.replace(/\{\/\*[\s\S]*?\*\/\}/g, "");
|
|
41
|
+
text = text.replace(/^[ \t]*import[ \t]+(?:type[ \t]+)?(?:[\w$]+[ \t]*,[ \t]*)?\{[^}]*\}[ \t]*from[ \t]*["'][^"'\n]+["'][ \t]*;?[ \t]*$/gm, "");
|
|
42
|
+
text = text.replace(/^\s*(?:import|export)[^\S\n]+.*$/gm, "");
|
|
43
|
+
const resolveLink = (target) => {
|
|
44
|
+
if (/^(?:[a-z][a-z\d+.-]*:|\/|\{)/i.test(target)) return target;
|
|
45
|
+
const sourceUrl = resolveSourceLink?.(target);
|
|
46
|
+
if (sourceUrl !== void 0) return sourceUrl;
|
|
47
|
+
try {
|
|
48
|
+
const absolute = new URL(target, new URL(pageUrl, "https://agent.invalid"));
|
|
49
|
+
return absolute.origin === "https://agent.invalid" ? absolute.pathname + absolute.search + absolute.hash : absolute.toString();
|
|
50
|
+
} catch {
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
text = text.replace(
|
|
55
|
+
/(!?\[[^\]]*\]\()(?:<([^>]+)>|([^\s)]+))([^)]*\))/g,
|
|
56
|
+
(_all, before, angled, plain, after) => shield(before + (angled !== void 0 ? `<${resolveLink(angled)}>` : resolveLink(plain)) + after)
|
|
57
|
+
);
|
|
58
|
+
text = text.replace(
|
|
59
|
+
/^( {0,3}\[[^\]]+\]:[ \t]*)(?:<([^>]+)>|([^\s]+))/gm,
|
|
60
|
+
(_all, before, angled, plain) => shield(before + (angled !== void 0 ? `<${resolveLink(angled)}>` : resolveLink(plain)))
|
|
61
|
+
);
|
|
62
|
+
text = text.replace(/<([A-Z][\w.]*)\b[^>]*>/g, () => {
|
|
63
|
+
unsupportedDynamicContent = true;
|
|
64
|
+
return "[Dynamic content unavailable in text export]";
|
|
65
|
+
});
|
|
66
|
+
text = text.replace(/<\/([A-Z][\w.]*)\s*>/g, "");
|
|
67
|
+
text = text.replace(/<\/?[a-z][\w-]*(?=[\s/>])[^>]*>/g, "");
|
|
68
|
+
for (let i = literals.length - 1; i >= 0; i--) text = text.replaceAll(`${marker}${i}\0`, () => literals[i]);
|
|
69
|
+
return { text: text.trim(), unsupportedDynamicContent };
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
normalizeAgentMarkdown
|
|
73
|
+
};
|
|
@@ -19,6 +19,12 @@ export interface LlmsTxtDevMiddlewareOptions extends LlmsTxtSiteMeta {
|
|
|
19
19
|
base: string;
|
|
20
20
|
/** Optional absolute site URL; see `LlmsTxtLoadOptions.siteUrl`. */
|
|
21
21
|
siteUrl?: string;
|
|
22
|
+
/** Actual default locale code; needed to match agent-export page IDs. */
|
|
23
|
+
defaultLocale?: string;
|
|
24
|
+
/** Link slim-index docs to agent-export Markdown artifacts when enabled. */
|
|
25
|
+
agentExport?: boolean;
|
|
26
|
+
/** Include the stateless read-only endpoint in the slim index when enabled. */
|
|
27
|
+
mcp?: boolean;
|
|
22
28
|
/** Default-locale content directory. */
|
|
23
29
|
defaultLocaleDir: string;
|
|
24
30
|
/** Additional locales (e.g. `[{ code: "ja", dir: "src/content/docs-ja" }]`). */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { loadLlmsAssetEntries } from "./assets.js";
|
|
2
2
|
import { generateLlmsFullTxt, generateLlmsTxt } from "./generate.js";
|
|
3
|
-
import { loadDocEntries } from "./load.js";
|
|
3
|
+
import { loadDocEntries, withLlmsBase } from "./load.js";
|
|
4
4
|
const LLMS_KIND_PATTERN = /^(?:\/(.+?))?\/(llms|llms-full)\.txt$/;
|
|
5
5
|
function createLlmsTxtDevMiddleware(options, logger) {
|
|
6
6
|
const meta = {
|
|
@@ -13,6 +13,10 @@ function createLlmsTxtDevMiddleware(options, logger) {
|
|
|
13
13
|
);
|
|
14
14
|
const base = options.base ?? "";
|
|
15
15
|
const siteUrl = options.siteUrl || void 0;
|
|
16
|
+
const generationOptions = {
|
|
17
|
+
agentExport: options.agentExport === true,
|
|
18
|
+
...options.mcp === true ? { mcpEndpointUrl: withLlmsBase("/mcp", base, siteUrl) } : {}
|
|
19
|
+
};
|
|
16
20
|
return (req, res, next) => {
|
|
17
21
|
const url = req.url ?? "";
|
|
18
22
|
const match = matchLlmsRoute(stripBase(url, base), localeCodes);
|
|
@@ -38,7 +42,8 @@ function createLlmsTxtDevMiddleware(options, logger) {
|
|
|
38
42
|
contentDir,
|
|
39
43
|
locale: match.locale,
|
|
40
44
|
base,
|
|
41
|
-
siteUrl
|
|
45
|
+
siteUrl,
|
|
46
|
+
...options.agentExport === true ? { agentExportLocale: match.locale ?? options.defaultLocale ?? "en" } : {}
|
|
42
47
|
});
|
|
43
48
|
const assets = loadLlmsAssetEntries({
|
|
44
49
|
projectRoot: options.projectRoot,
|
|
@@ -47,7 +52,7 @@ function createLlmsTxtDevMiddleware(options, logger) {
|
|
|
47
52
|
}).filter(
|
|
48
53
|
(asset) => match.locale === null ? asset.locale === void 0 : asset.locale === match.locale
|
|
49
54
|
);
|
|
50
|
-
const body = match.kind === "llms" ? generateLlmsTxt(entries, meta, assets) : generateLlmsFullTxt(entries, meta, assets);
|
|
55
|
+
const body = match.kind === "llms" ? generateLlmsTxt(entries, meta, assets, generationOptions) : generateLlmsFullTxt(entries, meta, assets);
|
|
51
56
|
res.statusCode = 200;
|
|
52
57
|
res.setHeader("Content-Type", "text/plain; charset=utf-8");
|
|
53
58
|
res.end(body);
|
|
@@ -2,7 +2,7 @@ import { mkdirSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { generateLlmsFullTxt, generateLlmsTxt } from "./generate.js";
|
|
4
4
|
import { loadLlmsAssetEntries } from "./assets.js";
|
|
5
|
-
import { loadDocEntries } from "./load.js";
|
|
5
|
+
import { loadDocEntries, withLlmsBase } from "./load.js";
|
|
6
6
|
function assetsForLocale(assets, locale) {
|
|
7
7
|
return assets.filter(
|
|
8
8
|
(asset) => locale === null ? asset.locale === void 0 : asset.locale === locale
|
|
@@ -19,23 +19,36 @@ function emitLlmsTxt(options) {
|
|
|
19
19
|
locales = [],
|
|
20
20
|
logger,
|
|
21
21
|
projectRoot,
|
|
22
|
-
assetScan
|
|
22
|
+
assetScan,
|
|
23
|
+
defaultLocale,
|
|
24
|
+
agentExport,
|
|
25
|
+
mcp
|
|
23
26
|
} = options;
|
|
24
27
|
const meta = { siteName, siteDescription };
|
|
25
28
|
const written = [];
|
|
26
29
|
const assetEntries = loadLlmsAssetEntries({ projectRoot, assetScan, siteUrl });
|
|
30
|
+
const generationOptions = {
|
|
31
|
+
agentExport: agentExport === true,
|
|
32
|
+
...mcp === true ? { mcpEndpointUrl: withLlmsBase("/mcp", base, siteUrl) } : {}
|
|
33
|
+
};
|
|
27
34
|
const defaultEntries = loadDocEntries({
|
|
28
35
|
contentDir: defaultLocaleDir,
|
|
29
36
|
locale: null,
|
|
30
37
|
base,
|
|
31
|
-
siteUrl
|
|
38
|
+
siteUrl,
|
|
39
|
+
...agentExport === true ? { agentExportLocale: defaultLocale ?? "en" } : {}
|
|
32
40
|
});
|
|
33
41
|
mkdirSync(outDir, { recursive: true });
|
|
34
42
|
const defaultIndexPath = join(outDir, "llms.txt");
|
|
35
43
|
const defaultFullPath = join(outDir, "llms-full.txt");
|
|
36
44
|
writeFileSync(
|
|
37
45
|
defaultIndexPath,
|
|
38
|
-
generateLlmsTxt(
|
|
46
|
+
generateLlmsTxt(
|
|
47
|
+
defaultEntries,
|
|
48
|
+
meta,
|
|
49
|
+
assetsForLocale(assetEntries, null),
|
|
50
|
+
generationOptions
|
|
51
|
+
)
|
|
39
52
|
);
|
|
40
53
|
writeFileSync(
|
|
41
54
|
defaultFullPath,
|
|
@@ -50,14 +63,18 @@ function emitLlmsTxt(options) {
|
|
|
50
63
|
contentDir: dir,
|
|
51
64
|
locale: code,
|
|
52
65
|
base,
|
|
53
|
-
siteUrl
|
|
66
|
+
siteUrl,
|
|
67
|
+
...agentExport === true ? { agentExportLocale: code } : {}
|
|
54
68
|
});
|
|
55
69
|
const localeDir = join(outDir, code);
|
|
56
70
|
mkdirSync(localeDir, { recursive: true });
|
|
57
71
|
const indexPath = join(localeDir, "llms.txt");
|
|
58
72
|
const fullPath = join(localeDir, "llms-full.txt");
|
|
59
73
|
const localeAssets = assetsForLocale(assetEntries, code);
|
|
60
|
-
writeFileSync(
|
|
74
|
+
writeFileSync(
|
|
75
|
+
indexPath,
|
|
76
|
+
generateLlmsTxt(localeEntries, meta, localeAssets, generationOptions)
|
|
77
|
+
);
|
|
61
78
|
writeFileSync(fullPath, generateLlmsFullTxt(localeEntries, meta, localeAssets));
|
|
62
79
|
written.push(indexPath, fullPath);
|
|
63
80
|
logger?.info(
|
|
@@ -10,11 +10,17 @@
|
|
|
10
10
|
* — the file shape is part of the project's public surface.
|
|
11
11
|
*/
|
|
12
12
|
import { type LlmsAssetEntry, type LlmsDocEntry, type LlmsTxtSiteMeta } from "./types.js";
|
|
13
|
+
export interface LlmsTxtGenerationOptions {
|
|
14
|
+
/** Replace eligible document links with their per-page Markdown artifacts. */
|
|
15
|
+
agentExport?: boolean;
|
|
16
|
+
/** Add an MCP discovery section with this base-aware endpoint URL. */
|
|
17
|
+
mcpEndpointUrl?: string;
|
|
18
|
+
}
|
|
13
19
|
/**
|
|
14
20
|
* Slim index — site header followed by a markdown bullet per page with
|
|
15
21
|
* `[title](url): description`.
|
|
16
22
|
*/
|
|
17
|
-
export declare function generateLlmsTxt(entries: readonly LlmsDocEntry[], meta: LlmsTxtSiteMeta, assets?: readonly LlmsAssetEntry[]): string;
|
|
23
|
+
export declare function generateLlmsTxt(entries: readonly LlmsDocEntry[], meta: LlmsTxtSiteMeta, assets?: readonly LlmsAssetEntry[], options?: LlmsTxtGenerationOptions): string;
|
|
18
24
|
/**
|
|
19
25
|
* Full content concatenation — site header followed by every page's
|
|
20
26
|
* stripped body separated by `---` rules.
|
|
@@ -33,7 +33,7 @@ function renderAssetBody(entry) {
|
|
|
33
33
|
return `${content}
|
|
34
34
|
${TRUNCATED_ASSET_MARKER}`;
|
|
35
35
|
}
|
|
36
|
-
function generateLlmsTxt(entries, meta, assets = []) {
|
|
36
|
+
function generateLlmsTxt(entries, meta, assets = [], options = {}) {
|
|
37
37
|
const lines = [];
|
|
38
38
|
lines.push(`# ${meta.siteName}`);
|
|
39
39
|
lines.push("");
|
|
@@ -42,7 +42,8 @@ function generateLlmsTxt(entries, meta, assets = []) {
|
|
|
42
42
|
lines.push("## Docs");
|
|
43
43
|
lines.push("");
|
|
44
44
|
for (const entry of entries) {
|
|
45
|
-
|
|
45
|
+
const url = options.agentExport && entry.agentMarkdownUrl ? entry.agentMarkdownUrl : entry.url;
|
|
46
|
+
lines.push(`- [${entry.title}](${url}): ${entry.description}`);
|
|
46
47
|
}
|
|
47
48
|
lines.push("");
|
|
48
49
|
if (assets.length > 0) {
|
|
@@ -53,6 +54,12 @@ function generateLlmsTxt(entries, meta, assets = []) {
|
|
|
53
54
|
}
|
|
54
55
|
lines.push("");
|
|
55
56
|
}
|
|
57
|
+
if (options.mcpEndpointUrl !== void 0) {
|
|
58
|
+
lines.push("## MCP");
|
|
59
|
+
lines.push("");
|
|
60
|
+
lines.push(`- [Read-only MCP endpoint](${options.mcpEndpointUrl})`);
|
|
61
|
+
lines.push("");
|
|
62
|
+
}
|
|
56
63
|
return lines.join("\n");
|
|
57
64
|
}
|
|
58
65
|
function generateLlmsFullTxt(entries, meta, assets = []) {
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* surface is unchanged.
|
|
10
10
|
*/
|
|
11
11
|
import type { LlmsDocEntry, LlmsTxtLoadOptions } from "./types.js";
|
|
12
|
+
/** Resolve an artifact path with the same base/site URL rules as agent-export. */
|
|
13
|
+
export declare function withLlmsBase(path: string, base: string, siteUrl?: string): string;
|
|
12
14
|
export { collectMdFiles, isExcluded, parseMarkdownFile, slugToUrl, } from "../../../md-utils/index.js";
|
|
13
15
|
/**
|
|
14
16
|
* Build the sorted {@link LlmsDocEntry} list for a single content root.
|
|
@@ -6,7 +6,13 @@ import {
|
|
|
6
6
|
slugToUrl,
|
|
7
7
|
stripMarkdown
|
|
8
8
|
} from "../../../md-utils/index.js";
|
|
9
|
+
import { agentPageKey } from "../../../agent-docs/identity.js";
|
|
9
10
|
import { stripImportsAndJsx } from "./strip.js";
|
|
11
|
+
function withLlmsBase(path, base, siteUrl) {
|
|
12
|
+
const basePrefix = base === "/" ? "" : `/${base.replace(/^\/+|\/+$/g, "")}`;
|
|
13
|
+
const pathname = `${basePrefix}/${path.replace(/^\/+/, "")}`;
|
|
14
|
+
return siteUrl ? `${siteUrl.replace(/\/$/, "")}${pathname}` : pathname;
|
|
15
|
+
}
|
|
10
16
|
import {
|
|
11
17
|
collectMdFiles as collectMdFiles2,
|
|
12
18
|
isExcluded as isExcluded2,
|
|
@@ -14,7 +20,7 @@ import {
|
|
|
14
20
|
slugToUrl as slugToUrl2
|
|
15
21
|
} from "../../../md-utils/index.js";
|
|
16
22
|
function loadDocEntries(options) {
|
|
17
|
-
const { contentDir, locale, base, siteUrl } = options;
|
|
23
|
+
const { contentDir, locale, base, siteUrl, agentExportLocale } = options;
|
|
18
24
|
const absDir = resolve(contentDir);
|
|
19
25
|
const files = collectMdFiles(absDir);
|
|
20
26
|
const entries = [];
|
|
@@ -29,13 +35,22 @@ function loadDocEntries(options) {
|
|
|
29
35
|
const stripped = stripMarkdown(content);
|
|
30
36
|
description = stripped.split("\n").find((l) => l.trim().length > 0) ?? "";
|
|
31
37
|
}
|
|
32
|
-
|
|
38
|
+
const entry = {
|
|
33
39
|
title: data.title ?? slug,
|
|
34
40
|
description,
|
|
35
41
|
url: slugToUrl(slug, locale, base, siteUrl),
|
|
36
42
|
content: stripImportsAndJsx(content),
|
|
37
43
|
sidebarPosition: data.sidebar_position
|
|
38
|
-
}
|
|
44
|
+
};
|
|
45
|
+
if (agentExportLocale !== void 0) {
|
|
46
|
+
const pageId = agentPageKey(agentExportLocale, slug);
|
|
47
|
+
entry.agentMarkdownUrl = withLlmsBase(
|
|
48
|
+
`/agent/v1/pages/${pageId}.md`,
|
|
49
|
+
base,
|
|
50
|
+
siteUrl
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
entries.push(entry);
|
|
39
54
|
}
|
|
40
55
|
entries.sort((a, b) => {
|
|
41
56
|
const posA = a.sidebarPosition ?? Number.MAX_SAFE_INTEGER;
|
|
@@ -49,5 +64,6 @@ export {
|
|
|
49
64
|
isExcluded2 as isExcluded,
|
|
50
65
|
loadDocEntries,
|
|
51
66
|
parseMarkdownFile2 as parseMarkdownFile,
|
|
52
|
-
slugToUrl2 as slugToUrl
|
|
67
|
+
slugToUrl2 as slugToUrl,
|
|
68
|
+
withLlmsBase
|
|
53
69
|
};
|
|
@@ -41,6 +41,8 @@ export interface LlmsDocEntry {
|
|
|
41
41
|
content: string;
|
|
42
42
|
/** `frontmatter.sidebar_position`, undefined when not declared. */
|
|
43
43
|
sidebarPosition: number | undefined;
|
|
44
|
+
/** Base-aware Markdown artifact URL; present only when agent export is enabled. */
|
|
45
|
+
agentMarkdownUrl?: string;
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* One generated asset-viewer page in the llms outputs.
|
|
@@ -101,6 +103,8 @@ export interface LlmsTxtLoadOptions {
|
|
|
101
103
|
* empty, URLs are returned path-only for projects that omit `siteUrl`.
|
|
102
104
|
*/
|
|
103
105
|
siteUrl?: string;
|
|
106
|
+
/** Actual locale code used by the agent export page identity, including for the default locale. */
|
|
107
|
+
agentExportLocale?: string;
|
|
104
108
|
}
|
|
105
109
|
/**
|
|
106
110
|
* Top-level options for {@link emitLlmsTxt}. The current zfb plugin supplies
|
|
@@ -113,6 +117,12 @@ export interface LlmsTxtEmitOptions extends LlmsTxtSiteMeta {
|
|
|
113
117
|
base: string;
|
|
114
118
|
/** Optional absolute site URL; see {@link LlmsTxtLoadOptions}. */
|
|
115
119
|
siteUrl?: string;
|
|
120
|
+
/** Actual default locale code; needed to match agent-export page IDs. */
|
|
121
|
+
defaultLocale?: string;
|
|
122
|
+
/** Link slim-index docs to agent-export Markdown artifacts when enabled. */
|
|
123
|
+
agentExport?: boolean;
|
|
124
|
+
/** Include the stateless read-only endpoint in the slim index when enabled. */
|
|
125
|
+
mcp?: boolean;
|
|
116
126
|
/**
|
|
117
127
|
* Default-locale content directory. Emitted at `outDir/llms.txt` and
|
|
118
128
|
* `outDir/llms-full.txt`.
|
package/dist/plugins/routes.js
CHANGED
|
@@ -27,6 +27,10 @@ function deriveRoutes(settings, options) {
|
|
|
27
27
|
const hasVersions = Array.isArray(settings.versions) && settings.versions.length > 0;
|
|
28
28
|
const docTags = settings.docTags === true;
|
|
29
29
|
const aiAssistant = settings.aiAssistant === true;
|
|
30
|
+
if (settings.mcp === true) {
|
|
31
|
+
const base = `/${String(settings.base ?? "").split("/").filter(Boolean).join("/")}`.replace(/\/$/, "");
|
|
32
|
+
routes.push({ pattern: `${base}/mcp`, entrypoint: "@takazudo/zudo-doc/routes/mcp", opts: { prerender: false }, includedInDtpShadowDiagnostic: false });
|
|
33
|
+
}
|
|
30
34
|
if (options.packageOwnedRoutes === false) {
|
|
31
35
|
if (options.assetViewer === true) {
|
|
32
36
|
routes.push({
|
package/dist/preset.d.ts
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* `zudoDocPreset()` returns the zfb config fragment that every zudo-doc
|
|
5
5
|
* project previously hand-wrote in its `zfb.config.ts` (collections loop,
|
|
6
6
|
* markdown.features, class-mode codeHighlight, resolveMarkdownLinks,
|
|
7
|
-
* stripMdExt, trailingSlash, minifyHtml,
|
|
8
|
-
* config spreads this fragment into
|
|
9
|
-
* project-specific shell fields
|
|
10
|
-
* `
|
|
7
|
+
* stripMdExt, trailingSlash, minifyHtml, integration plugins, and the
|
|
8
|
+
* package-owned wind preset). The host config spreads this fragment into
|
|
9
|
+
* `defineConfig` and supplies project-specific shell fields (`port`, `bundle`,
|
|
10
|
+
* `base`, `adapter`, and an optional top-level `wind` override).
|
|
11
11
|
*
|
|
12
12
|
* ──────────────────────────────────────────────────────────────────────────
|
|
13
13
|
* NODE-BUILTIN-FREE EVAL GRAPH (non-negotiable — guarded by a unit test)
|
|
@@ -29,13 +29,14 @@
|
|
|
29
29
|
* specifier and dispatches lifecycle hooks against it; importing the
|
|
30
30
|
* plugin modules here would pull their `node:fs` / `node:path` graph into
|
|
31
31
|
* the config eval.
|
|
32
|
-
* -
|
|
33
|
-
*
|
|
32
|
+
* - Runtime dependencies are `zod` (for `z.toJSONSchema`) and zfb's
|
|
33
|
+
* `definePreset` helper (for the package-owned wind fragment). Both bundle
|
|
34
|
+
* cleanly under `--platform=neutral` (verified: zero `node:*`).
|
|
34
35
|
*/
|
|
35
36
|
import { z } from "zod";
|
|
37
|
+
import type { DirectiveSpec, ZfbConfig } from "@takazudo/zfb/config";
|
|
36
38
|
import type { ColorScheme } from "./color-scheme-utils.js";
|
|
37
39
|
import type { AssetViewerIndexingConfig, TagVocabularyEntry, FaviconConfig, HomeConfig } from "./settings.js";
|
|
38
|
-
import type { DirectiveSpec } from "@takazudo/zfb/config";
|
|
39
40
|
/** A single locale's content directory (`settings.locales[code]`). */
|
|
40
41
|
export interface PresetLocaleConfig {
|
|
41
42
|
dir: string;
|
|
@@ -118,6 +119,10 @@ export interface PresetSettings {
|
|
|
118
119
|
transclude?: boolean;
|
|
119
120
|
onBrokenMarkdownLinks: "warn" | "error" | "ignore";
|
|
120
121
|
llmsTxt?: boolean;
|
|
122
|
+
/** Generate the package-owned static agent documentation feed. */
|
|
123
|
+
agentExport?: boolean;
|
|
124
|
+
/** Enable the stateless read-only MCP endpoint; requires `agentExport: true`. */
|
|
125
|
+
mcp?: boolean;
|
|
121
126
|
changelogs?: PresetChangelogConfig[] | false;
|
|
122
127
|
/** Metadata fields shown in the doc metadata area. */
|
|
123
128
|
docMetainfoFields?: Array<"created" | "updated" | "author">;
|
|
@@ -305,14 +310,21 @@ export interface PresetMarkdown {
|
|
|
305
310
|
footnoteDefinition: boolean;
|
|
306
311
|
};
|
|
307
312
|
}
|
|
313
|
+
/** MCP-only bundler options required for SDK CommonJS dependency resolution. */
|
|
314
|
+
export interface PresetBundle {
|
|
315
|
+
mainFields: string[];
|
|
316
|
+
}
|
|
308
317
|
export interface PresetCodeHighlight {
|
|
309
318
|
mode: "class";
|
|
310
319
|
defaultStylesheet: true;
|
|
311
320
|
}
|
|
312
321
|
/** The config fragment returned by {@link zudoDocPreset}. */
|
|
313
322
|
export interface ZudoDocPresetResult {
|
|
323
|
+
presets: Partial<ZfbConfig>[];
|
|
314
324
|
collections: PresetCollection[];
|
|
315
325
|
plugins: PresetPlugin[];
|
|
326
|
+
/** Present only when MCP is enabled. */
|
|
327
|
+
bundle?: PresetBundle;
|
|
316
328
|
markdown: PresetMarkdown;
|
|
317
329
|
codeHighlight: PresetCodeHighlight;
|
|
318
330
|
resolveMarkdownLinks: PresetResolveMarkdownLinks;
|
|
@@ -327,9 +339,7 @@ export interface ZudoDocPresetResult {
|
|
|
327
339
|
*
|
|
328
340
|
* ```ts
|
|
329
341
|
* export default defineConfig({
|
|
330
|
-
* framework: "preact",
|
|
331
342
|
* port: 4321,
|
|
332
|
-
* tailwind: { enabled: true },
|
|
333
343
|
* bundle: { exclude: [...] },
|
|
334
344
|
* base: settings.base,
|
|
335
345
|
* adapter: "@takazudo/zfb-adapter-cloudflare",
|
package/dist/preset.js
CHANGED
|
@@ -4,9 +4,11 @@ import {
|
|
|
4
4
|
assertNoEmptyStringFaviconOrLogo,
|
|
5
5
|
assertZdtpBundlingConsistent,
|
|
6
6
|
assertValidSearchMaxBodyLength,
|
|
7
|
+
assertAgentDocsConsistent,
|
|
7
8
|
resolvesBundleZdtp,
|
|
8
9
|
warnAmbiguousDropdownCategoryMatch
|
|
9
10
|
} from "./config-assertions/index.js";
|
|
11
|
+
import { zudoDocWindPreset } from "./wind/index.js";
|
|
10
12
|
function zudoDocPreset({
|
|
11
13
|
settings,
|
|
12
14
|
buildDocsSchema,
|
|
@@ -19,11 +21,14 @@ function zudoDocPreset({
|
|
|
19
21
|
assertNoEmptyStringFaviconOrLogo(settings);
|
|
20
22
|
assertZdtpBundlingConsistent(settings);
|
|
21
23
|
assertValidSearchMaxBodyLength(settings.searchMaxBodyLength);
|
|
24
|
+
assertAgentDocsConsistent(settings);
|
|
22
25
|
warnAmbiguousDropdownCategoryMatch(settings.headerNav);
|
|
23
26
|
const docsSchemaJson = z.toJSONSchema(buildDocsSchema());
|
|
24
27
|
return {
|
|
28
|
+
presets: [zudoDocWindPreset],
|
|
25
29
|
collections: buildCollections(settings, docsSchemaJson),
|
|
26
30
|
plugins: buildPlugins(settings, { translations, tagVocabulary, colorSchemes }),
|
|
31
|
+
...settings.mcp === true ? { bundle: { mainFields: ["module", "main"] } } : {},
|
|
27
32
|
markdown: {
|
|
28
33
|
features: buildMarkdownFeatures(settings, directiveVocabulary),
|
|
29
34
|
...settings.cjkFriendly !== void 0 ? { cjkFriendly: settings.cjkFriendly } : {},
|
|
@@ -183,7 +188,7 @@ function buildPlugins(settings, routeContext) {
|
|
|
183
188
|
// the route catalog from `settings.locales` / `settings.versions`. Listed
|
|
184
189
|
// FIRST so an injected route is registered before the other plugins'
|
|
185
190
|
// preBuild work runs (ordering is cosmetic — injection happens in `setup`).
|
|
186
|
-
...effectivePackageOwnedRoutes || assetViewer || homeIntro ? [
|
|
191
|
+
...effectivePackageOwnedRoutes || assetViewer || homeIntro || settings.mcp === true ? [
|
|
187
192
|
{
|
|
188
193
|
name: "@takazudo/zudo-doc/plugins/routes",
|
|
189
194
|
options: {
|
|
@@ -285,12 +290,26 @@ function buildPlugins(settings, routeContext) {
|
|
|
285
290
|
siteDescription: settings.siteDescription,
|
|
286
291
|
base: settings.base,
|
|
287
292
|
siteUrl: settings.siteUrl,
|
|
293
|
+
defaultLocale: settings.defaultLocale ?? "en",
|
|
294
|
+
agentExport: settings.agentExport === true,
|
|
295
|
+
mcp: settings.mcp === true,
|
|
288
296
|
defaultLocaleDir: settings.docsDir,
|
|
289
297
|
locales: localeArray,
|
|
290
298
|
assetScan
|
|
291
299
|
}
|
|
292
300
|
}
|
|
293
301
|
] : [],
|
|
302
|
+
...settings.agentExport ? [{
|
|
303
|
+
name: "@takazudo/zudo-doc/plugins/agent-export",
|
|
304
|
+
options: {
|
|
305
|
+
siteName: settings.siteName,
|
|
306
|
+
siteUrl: settings.siteUrl,
|
|
307
|
+
base: settings.base,
|
|
308
|
+
defaultLocale: settings.defaultLocale ?? "en",
|
|
309
|
+
defaultLocaleDir: settings.docsDir,
|
|
310
|
+
locales: localeArray
|
|
311
|
+
}
|
|
312
|
+
}] : [],
|
|
294
313
|
...Array.isArray(settings.changelogs) && settings.changelogs.length > 0 ? [
|
|
295
314
|
{
|
|
296
315
|
name: "@takazudo/zudo-doc/plugins/changelog",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_SETTINGS } from "../
|
|
1
|
+
import { DEFAULT_SETTINGS } from "../settings-defaults.js";
|
|
2
2
|
import { defaultTranslations } from "../i18n-defaults/index.js";
|
|
3
3
|
import { defaultColorSchemes } from "../color-schemes-defaults/index.js";
|
|
4
4
|
import { buildThemePackRegistry } from "../theme-packs-registry/build-registry.js";
|
package/dist/routes/404.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type { JSX } from "preact";
|
|
2
|
+
import type { Child } from "@takazudo/zfb/zudo-react";
|
|
4
3
|
export declare const frontmatter: {
|
|
5
4
|
title: string;
|
|
6
5
|
};
|
|
7
|
-
export default function NotFoundPage():
|
|
6
|
+
export default function NotFoundPage(): Child;
|
package/dist/routes/404.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "
|
|
1
|
+
import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
2
2
|
import { DocLayoutWithDefaults } from "../doclayout/index.js";
|
|
3
3
|
import { resolveThemePackSsrSlug } from "../theme/theme-pack-provider.js";
|
|
4
4
|
import { settings, defaultLocale, withBase, themePackRegistry } from "./_context.js";
|