@astrojs/starlight 0.41.10 → 0.42.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/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/components/MobileMenuToggle.astro +65 -0
- package/{components → dist/components}/PageFrame.astro +32 -8
- package/dist/components-internals/Icons.d.ts +415 -0
- package/dist/components-internals/Icons.js +140 -0
- package/dist/components-internals/SidebarPersistState.d.ts +1 -0
- package/dist/components-internals/SidebarPersistState.js +53 -0
- package/dist/components-internals/TableOfContents/starlight-toc.d.ts +18 -0
- package/dist/components-internals/TableOfContents/starlight-toc.js +88 -0
- package/dist/constants.d.ts +4 -0
- package/dist/constants.js +4 -0
- package/{expressive-code.d.ts → dist/expressive-code.d.ts} +6 -13
- package/dist/expressive-code.js +31 -0
- package/dist/global.d.ts +62 -0
- package/dist/global.js +2 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +109 -0
- package/dist/integrations/aside-utils.d.ts +9 -0
- package/dist/integrations/aside-utils.js +35 -0
- package/dist/integrations/expressive-code/hast.d.ts +1 -0
- package/dist/integrations/expressive-code/hast.js +2 -0
- package/dist/integrations/expressive-code/index.d.ts +60 -0
- package/dist/integrations/expressive-code/index.js +48 -0
- package/dist/integrations/expressive-code/preprocessor.d.ts +17 -0
- package/dist/integrations/expressive-code/preprocessor.js +76 -0
- package/dist/integrations/expressive-code/themes/night-owl-dark.js +4 -0
- package/dist/integrations/expressive-code/themes/night-owl-light.js +4 -0
- package/dist/integrations/expressive-code/theming.d.ts +16 -0
- package/dist/integrations/expressive-code/theming.js +71 -0
- package/dist/integrations/expressive-code/translations.d.ts +8 -0
- package/dist/integrations/expressive-code/translations.js +26 -0
- package/dist/integrations/markdown-icon.d.ts +8 -0
- package/dist/integrations/markdown-icon.js +14 -0
- package/dist/integrations/markdown-plugins.d.ts +18 -0
- package/dist/integrations/markdown-plugins.js +36 -0
- package/dist/integrations/markdown-processor.d.ts +29 -0
- package/dist/integrations/markdown-processor.js +44 -0
- package/dist/integrations/pagefind.d.ts +7 -0
- package/dist/integrations/pagefind.js +34 -0
- package/dist/integrations/rehype-code-rtl-support.d.ts +21 -0
- package/dist/integrations/rehype-code-rtl-support.js +36 -0
- package/dist/integrations/rehype-heading-links.d.ts +10 -0
- package/dist/integrations/rehype-heading-links.js +57 -0
- package/dist/integrations/remark-asides.d.ts +32 -0
- package/dist/integrations/remark-asides.js +166 -0
- package/dist/integrations/remark-rehype.d.ts +17 -0
- package/dist/integrations/remark-rehype.js +51 -0
- package/dist/integrations/satteri.d.ts +13 -0
- package/dist/integrations/satteri.js +209 -0
- package/dist/integrations/shared/absolutePathToLang.d.ts +10 -0
- package/dist/integrations/shared/absolutePathToLang.js +13 -0
- package/dist/integrations/shared/localeToLang.d.ts +10 -0
- package/dist/integrations/shared/localeToLang.js +13 -0
- package/dist/integrations/shared/slugToLocale.d.ts +12 -0
- package/dist/integrations/shared/slugToLocale.js +15 -0
- package/dist/integrations/sitemap.d.ts +12 -0
- package/dist/integrations/sitemap.js +19 -0
- package/dist/integrations/vite-layer-order.d.ts +15 -0
- package/dist/integrations/vite-layer-order.js +56 -0
- package/dist/integrations/vite-lazy-barrel-optimization.d.ts +12 -0
- package/dist/integrations/vite-lazy-barrel-optimization.js +33 -0
- package/dist/integrations/vite-virtual-modules.d.ts +14 -0
- package/dist/integrations/vite-virtual-modules.js +108 -0
- package/dist/internal.d.ts +3 -0
- package/dist/internal.js +3 -0
- package/dist/loaders.d.ts +20 -0
- package/dist/loaders.js +49 -0
- package/dist/locals.d.ts +15 -0
- package/dist/locals.js +33 -0
- package/dist/package.js +4 -0
- package/{props.ts → dist/props.d.ts} +6 -4
- package/dist/props.js +1 -0
- package/dist/route-data.d.ts +7 -0
- package/dist/route-data.js +6 -0
- package/dist/schema.d.ts +426 -0
- package/dist/schema.js +103 -0
- package/dist/schemas/badge.d.ts +86 -0
- package/dist/schemas/badge.js +39 -0
- package/dist/schemas/components.d.ts +236 -0
- package/dist/schemas/components.js +36 -0
- package/dist/schemas/expressiveCode.d.ts +7 -0
- package/dist/schemas/expressiveCode.js +5 -0
- package/dist/schemas/favicon.d.ts +9 -0
- package/dist/schemas/favicon.js +32 -0
- package/dist/schemas/head.d.ts +33 -0
- package/dist/schemas/head.js +41 -0
- package/dist/schemas/hero.d.ts +319 -0
- package/dist/schemas/hero.js +73 -0
- package/dist/schemas/i18n.d.ts +125 -0
- package/dist/schemas/i18n.js +76 -0
- package/dist/schemas/icon.d.ts +284 -0
- package/dist/schemas/icon.js +7 -0
- package/dist/schemas/locale.d.ts +20 -0
- package/dist/schemas/locale.js +11 -0
- package/dist/schemas/logo.d.ts +32 -0
- package/dist/schemas/logo.js +14 -0
- package/dist/schemas/pagefind.d.ts +166 -0
- package/dist/schemas/pagefind.js +31 -0
- package/dist/schemas/prevNextLink.d.ts +10 -0
- package/dist/schemas/prevNextLink.js +14 -0
- package/dist/schemas/sidebar.d.ts +205 -0
- package/dist/schemas/sidebar.js +71 -0
- package/dist/schemas/site-title.d.ts +7 -0
- package/dist/schemas/site-title.js +17 -0
- package/dist/schemas/social.d.ts +292 -0
- package/dist/schemas/social.js +18 -0
- package/dist/schemas/tableOfContents.d.ts +24 -0
- package/dist/schemas/tableOfContents.js +16 -0
- package/{style → dist/style}/anchor-links.css +13 -1
- package/dist/translations/ar.js +36 -0
- package/dist/translations/ca.js +46 -0
- package/dist/translations/cs.js +46 -0
- package/dist/translations/da.js +33 -0
- package/dist/translations/de.js +33 -0
- package/dist/translations/el.js +33 -0
- package/dist/translations/en.js +33 -0
- package/dist/translations/es.js +46 -0
- package/dist/translations/fa.js +33 -0
- package/dist/translations/fi.js +33 -0
- package/dist/translations/fr.js +36 -0
- package/dist/translations/gl.js +46 -0
- package/dist/translations/he.js +33 -0
- package/dist/translations/hi.js +36 -0
- package/dist/translations/hu.js +46 -0
- package/dist/translations/id.js +33 -0
- package/dist/translations/index.d.ts +48 -0
- package/dist/translations/index.js +75 -0
- package/dist/translations/it.js +36 -0
- package/dist/translations/ja.js +36 -0
- package/dist/translations/ko.js +36 -0
- package/dist/translations/lv.js +33 -0
- package/dist/translations/nb.js +33 -0
- package/dist/translations/nl.js +33 -0
- package/dist/translations/pl.js +36 -0
- package/dist/translations/pt.js +36 -0
- package/dist/translations/ro.js +33 -0
- package/dist/translations/ru.js +36 -0
- package/dist/translations/sk.js +33 -0
- package/dist/translations/sv.js +33 -0
- package/dist/translations/th.js +33 -0
- package/dist/translations/tr.js +33 -0
- package/dist/translations/uk.js +33 -0
- package/dist/translations/vi.js +33 -0
- package/dist/translations/zh-CN.js +36 -0
- package/dist/translations/zh-TW.js +36 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.js +1 -0
- package/{user-components → dist/user-components}/FileTree.astro +1 -1
- package/{user-components → dist/user-components}/Steps.astro +1 -1
- package/{user-components → dist/user-components}/TabItem.astro +1 -1
- package/{user-components → dist/user-components}/Tabs.astro +1 -1
- package/dist/user-components/file-tree-icons.d.ts +178 -0
- package/dist/user-components/file-tree-icons.js +632 -0
- package/dist/user-components/file-tree-processor.d.ts +16 -0
- package/dist/user-components/file-tree-processor.js +132 -0
- package/dist/user-components/steps-processor.d.ts +10 -0
- package/dist/user-components/steps-processor.js +39 -0
- package/dist/user-components/tabs-processor.d.ts +23 -0
- package/dist/user-components/tabs-processor.js +70 -0
- package/dist/utils/base.d.ts +7 -0
- package/dist/utils/base.js +15 -0
- package/dist/utils/canonical.d.ts +10 -0
- package/dist/utils/canonical.js +14 -0
- package/dist/utils/collection-fs.d.ts +13 -0
- package/dist/utils/collection-fs.js +19 -0
- package/{utils/collection.ts → dist/utils/collection.d.ts} +9 -20
- package/dist/utils/collection.js +26 -0
- package/dist/utils/createPathFormatter.d.ts +9 -0
- package/dist/utils/createPathFormatter.js +35 -0
- package/dist/utils/createTranslationSystem.d.ts +23 -0
- package/dist/utils/createTranslationSystem.js +84 -0
- package/dist/utils/error-map.d.ts +23 -0
- package/dist/utils/error-map.js +125 -0
- package/dist/utils/format-path.d.ts +4 -0
- package/dist/utils/format-path.js +9 -0
- package/dist/utils/generateToC.d.ts +14 -0
- package/dist/utils/generateToC.js +25 -0
- package/dist/utils/git.d.ts +12 -0
- package/dist/utils/git.js +71 -0
- package/dist/utils/gitInlined.d.ts +6 -0
- package/dist/utils/gitInlined.js +11 -0
- package/dist/utils/head.d.ts +7 -0
- package/dist/utils/head.js +233 -0
- package/dist/utils/i18n.d.ts +50 -0
- package/dist/utils/i18n.js +141 -0
- package/dist/utils/localizedUrl.d.ts +8 -0
- package/dist/utils/localizedUrl.js +28 -0
- package/dist/utils/navigation.d.ts +19 -0
- package/dist/utils/navigation.js +353 -0
- package/dist/utils/path.d.ts +21 -0
- package/dist/utils/path.js +51 -0
- package/dist/utils/plugins.d.ts +721 -0
- package/dist/utils/plugins.js +174 -0
- package/dist/utils/routing/data.d.ts +20 -0
- package/dist/utils/routing/data.js +127 -0
- package/dist/utils/routing/index.d.ts +21 -0
- package/dist/utils/routing/index.js +106 -0
- package/dist/utils/routing/middleware.d.ts +11 -0
- package/dist/utils/routing/middleware.js +65 -0
- package/dist/utils/routing/types.d.ts +93 -0
- package/dist/utils/routing/types.js +1 -0
- package/dist/utils/slugs.d.ts +45 -0
- package/dist/utils/slugs.js +104 -0
- package/dist/utils/starlight-page.d.ts +36 -0
- package/dist/utils/starlight-page.js +120 -0
- package/dist/utils/translations-fs.d.ts +15 -0
- package/dist/utils/translations-fs.js +39 -0
- package/dist/utils/translations.d.ts +20 -0
- package/dist/utils/translations.js +29 -0
- package/dist/utils/types.d.ts +5 -0
- package/dist/utils/types.js +1 -0
- package/dist/utils/url.d.ts +7 -0
- package/{utils/url.ts → dist/utils/url.js} +5 -4
- package/dist/utils/user-config.d.ts +2055 -0
- package/dist/utils/user-config.js +136 -0
- package/dist/utils/validateLogoImports.d.ts +5 -0
- package/dist/utils/validateLogoImports.js +16 -0
- package/dist/utils/zodDeepMerge.d.ts +16 -0
- package/dist/utils/zodDeepMerge.js +53 -0
- package/package.json +62 -33
- package/CHANGELOG.md +0 -3043
- package/components/MobileMenuToggle.astro +0 -114
- package/components-internals/Icons.ts +0 -248
- package/components-internals/SidebarPersistState.ts +0 -71
- package/components-internals/TableOfContents/starlight-toc.ts +0 -127
- package/constants.ts +0 -4
- package/expressive-code.mjs +0 -23
- package/global.d.ts +0 -11
- package/i18n.d.ts +0 -18
- package/index.ts +0 -200
- package/integrations/aside-utils.ts +0 -41
- package/integrations/expressive-code/hast.d.ts +0 -5
- package/integrations/expressive-code/hast.mjs +0 -9
- package/integrations/expressive-code/index.ts +0 -125
- package/integrations/expressive-code/preprocessor.ts +0 -126
- package/integrations/expressive-code/themes/night-owl-dark.jsonc +0 -1796
- package/integrations/expressive-code/themes/night-owl-light.jsonc +0 -1695
- package/integrations/expressive-code/theming.ts +0 -105
- package/integrations/expressive-code/translations.ts +0 -36
- package/integrations/markdown-icon.ts +0 -13
- package/integrations/markdown-plugins.ts +0 -71
- package/integrations/markdown-processor.ts +0 -64
- package/integrations/pagefind.ts +0 -60
- package/integrations/rehype-code-rtl-support.ts +0 -37
- package/integrations/rehype-heading-links.ts +0 -79
- package/integrations/remark-asides.ts +0 -219
- package/integrations/remark-rehype.ts +0 -87
- package/integrations/satteri.ts +0 -265
- package/integrations/shared/absolutePathToLang.ts +0 -26
- package/integrations/shared/localeToLang.ts +0 -15
- package/integrations/shared/slugToLocale.ts +0 -18
- package/integrations/sitemap.ts +0 -23
- package/integrations/vite-layer-order.ts +0 -69
- package/integrations/vite-lazy-barrel-optimization.ts +0 -40
- package/integrations/vite-virtual-modules.ts +0 -175
- package/internal.ts +0 -6
- package/loaders.ts +0 -63
- package/locals.d.ts +0 -43
- package/locals.ts +0 -43
- package/route-data.ts +0 -11
- package/schema.ts +0 -167
- package/schemas/badge.ts +0 -40
- package/schemas/components.ts +0 -265
- package/schemas/expressiveCode.ts +0 -12
- package/schemas/favicon.ts +0 -40
- package/schemas/head.ts +0 -50
- package/schemas/hero.ts +0 -69
- package/schemas/i18n.ts +0 -244
- package/schemas/icon.ts +0 -7
- package/schemas/logo.ts +0 -28
- package/schemas/pagefind.ts +0 -128
- package/schemas/prevNextLink.ts +0 -18
- package/schemas/sidebar.ts +0 -163
- package/schemas/site-title.ts +0 -20
- package/schemas/social.ts +0 -23
- package/schemas/tableOfContents.ts +0 -21
- package/translations/README.md +0 -14
- package/translations/ar.json +0 -33
- package/translations/ca.json +0 -43
- package/translations/cs.json +0 -43
- package/translations/da.json +0 -30
- package/translations/de.json +0 -30
- package/translations/el.json +0 -30
- package/translations/en.json +0 -30
- package/translations/es.json +0 -43
- package/translations/fa.json +0 -30
- package/translations/fi.json +0 -30
- package/translations/fr.json +0 -33
- package/translations/gl.json +0 -43
- package/translations/he.json +0 -30
- package/translations/hi.json +0 -33
- package/translations/hu.json +0 -43
- package/translations/id.json +0 -30
- package/translations/index.ts +0 -76
- package/translations/it.json +0 -33
- package/translations/ja.json +0 -33
- package/translations/ko.json +0 -33
- package/translations/lv.json +0 -30
- package/translations/nb.json +0 -30
- package/translations/nl.json +0 -30
- package/translations/pl.json +0 -33
- package/translations/pt.json +0 -33
- package/translations/ro.json +0 -30
- package/translations/ru.json +0 -33
- package/translations/sk.json +0 -30
- package/translations/sv.json +0 -30
- package/translations/th.json +0 -30
- package/translations/tr.json +0 -30
- package/translations/uk.json +0 -30
- package/translations/vi.json +0 -30
- package/translations/zh-CN.json +0 -33
- package/translations/zh-TW.json +0 -33
- package/types.ts +0 -7
- package/user-components/file-tree-icons.ts +0 -782
- package/user-components/rehype-file-tree.ts +0 -251
- package/user-components/rehype-steps.ts +0 -85
- package/user-components/rehype-tabs.ts +0 -121
- package/utils/base.ts +0 -15
- package/utils/canonical.ts +0 -19
- package/utils/collection-fs.ts +0 -20
- package/utils/createPathFormatter.ts +0 -60
- package/utils/createTranslationSystem.ts +0 -137
- package/utils/error-map.ts +0 -222
- package/utils/format-path.ts +0 -7
- package/utils/generateToC.ts +0 -33
- package/utils/git.ts +0 -121
- package/utils/gitInlined.ts +0 -20
- package/utils/head.ts +0 -235
- package/utils/i18n.ts +0 -221
- package/utils/localizedUrl.ts +0 -51
- package/utils/navigation.ts +0 -566
- package/utils/path.ts +0 -58
- package/utils/plugins.ts +0 -498
- package/utils/routing/data.ts +0 -154
- package/utils/routing/index.ts +0 -135
- package/utils/routing/middleware.ts +0 -81
- package/utils/routing/types.ts +0 -101
- package/utils/slugs.ts +0 -119
- package/utils/starlight-page.ts +0 -205
- package/utils/translations-fs.ts +0 -54
- package/utils/translations.ts +0 -57
- package/utils/types.ts +0 -15
- package/utils/user-config.ts +0 -348
- package/utils/validateLogoImports.ts +0 -21
- package/utils/zodDeepMerge.ts +0 -144
- package/virtual-internal.d.ts +0 -149
- package/virtual.d.ts +0 -27
- /package/{components → dist/components}/AnchorHeading.astro +0 -0
- /package/{components → dist/components}/Banner.astro +0 -0
- /package/{components → dist/components}/ContentNotice.astro +0 -0
- /package/{components → dist/components}/ContentPanel.astro +0 -0
- /package/{components → dist/components}/DraftContentNotice.astro +0 -0
- /package/{components → dist/components}/EditLink.astro +0 -0
- /package/{components → dist/components}/FallbackContentNotice.astro +0 -0
- /package/{components → dist/components}/Footer.astro +0 -0
- /package/{components → dist/components}/Head.astro +0 -0
- /package/{components → dist/components}/Header.astro +0 -0
- /package/{components → dist/components}/Hero.astro +0 -0
- /package/{components → dist/components}/LanguageSelect.astro +0 -0
- /package/{components → dist/components}/LastUpdated.astro +0 -0
- /package/{components → dist/components}/MarkdownContent.astro +0 -0
- /package/{components → dist/components}/MobileMenuFooter.astro +0 -0
- /package/{components → dist/components}/MobileTableOfContents.astro +0 -0
- /package/{components → dist/components}/Page.astro +0 -0
- /package/{components → dist/components}/PageSidebar.astro +0 -0
- /package/{components → dist/components}/PageTitle.astro +0 -0
- /package/{components → dist/components}/Pagination.astro +0 -0
- /package/{components → dist/components}/Search.astro +0 -0
- /package/{components → dist/components}/Select.astro +0 -0
- /package/{components → dist/components}/Sidebar.astro +0 -0
- /package/{components → dist/components}/SidebarPersister.astro +0 -0
- /package/{components → dist/components}/SidebarRestorePoint.astro +0 -0
- /package/{components → dist/components}/SidebarSublist.astro +0 -0
- /package/{components → dist/components}/SiteTitle.astro +0 -0
- /package/{components → dist/components}/SkipLink.astro +0 -0
- /package/{components → dist/components}/SocialIcons.astro +0 -0
- /package/{components → dist/components}/StarlightPage.astro +0 -0
- /package/{components → dist/components}/TableOfContents.astro +0 -0
- /package/{components → dist/components}/ThemeProvider.astro +0 -0
- /package/{components → dist/components}/ThemeSelect.astro +0 -0
- /package/{components → dist/components}/TwoColumnContent.astro +0 -0
- /package/{components-internals → dist/components-internals}/TableOfContents/TableOfContentsList.astro +0 -0
- /package/{components.ts → dist/components.ts} +0 -0
- /package/{routes → dist/routes}/common.astro +0 -0
- /package/{routes → dist/routes}/ssr/404.astro +0 -0
- /package/{routes → dist/routes}/ssr/index.astro +0 -0
- /package/{routes → dist/routes}/static/404.astro +0 -0
- /package/{routes → dist/routes}/static/index.astro +0 -0
- /package/{style → dist/style}/asides.css +0 -0
- /package/{style → dist/style}/layers.css +0 -0
- /package/{style → dist/style}/markdown.css +0 -0
- /package/{style → dist/style}/print.css +0 -0
- /package/{style → dist/style}/props.css +0 -0
- /package/{style → dist/style}/reset.css +0 -0
- /package/{style → dist/style}/util.css +0 -0
- /package/{user-components → dist/user-components}/Aside.astro +0 -0
- /package/{user-components → dist/user-components}/Badge.astro +0 -0
- /package/{user-components → dist/user-components}/Card.astro +0 -0
- /package/{user-components → dist/user-components}/CardGrid.astro +0 -0
- /package/{user-components → dist/user-components}/Icon.astro +0 -0
- /package/{user-components → dist/user-components}/LinkButton.astro +0 -0
- /package/{user-components → dist/user-components}/LinkCard.astro +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import MagicString from "magic-string";
|
|
2
|
+
//#region src/integrations/vite-layer-order.ts
|
|
3
|
+
const pluginTransformIdIncludeFilter = /\.astro$/;
|
|
4
|
+
const pluginTransformIdExcludeFilter = /@astrojs\/starlight\/components\/StarlightPage\.astro$/;
|
|
5
|
+
const pluginTransformCodeFilter = "StarlightPage.astro";
|
|
6
|
+
const starlightPageImportSource = "@astrojs/starlight/components/StarlightPage.astro";
|
|
7
|
+
/**
|
|
8
|
+
* Vite plugin that ensures the StarlightPage component is always imported first when imported in
|
|
9
|
+
* an Astro file.
|
|
10
|
+
*
|
|
11
|
+
* This is necessary to ensure a predictable CSS layer order which is defined by the `<Page />`
|
|
12
|
+
* imported by the `<StarlightPage />` component. If a user imports any other component using
|
|
13
|
+
* cascade layers before the `<StarlightPage />` component, it will result in undesired layers
|
|
14
|
+
* being created before we explicitly set the expected layer order.
|
|
15
|
+
*/
|
|
16
|
+
function vitePluginStarlightCssLayerOrder() {
|
|
17
|
+
return {
|
|
18
|
+
name: "vite-plugin-starlight-css-layer-order",
|
|
19
|
+
enforce: "pre",
|
|
20
|
+
transform: {
|
|
21
|
+
filter: {
|
|
22
|
+
id: {
|
|
23
|
+
include: pluginTransformIdIncludeFilter,
|
|
24
|
+
exclude: pluginTransformIdExcludeFilter
|
|
25
|
+
},
|
|
26
|
+
code: pluginTransformCodeFilter
|
|
27
|
+
},
|
|
28
|
+
handler(code, id) {
|
|
29
|
+
let ast;
|
|
30
|
+
try {
|
|
31
|
+
ast = this.parse(code);
|
|
32
|
+
} catch {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
let hasStarlightPageImport = false;
|
|
36
|
+
for (const node of ast.body) {
|
|
37
|
+
if (node.type !== "ImportDeclaration") continue;
|
|
38
|
+
if (node.source.value !== starlightPageImportSource) continue;
|
|
39
|
+
if (!node.specifiers.find((specifier) => specifier.type === "ImportDefaultSpecifier")) continue;
|
|
40
|
+
hasStarlightPageImport = true;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
if (!hasStarlightPageImport) return;
|
|
44
|
+
const filename = id.replace(/\\/g, "/");
|
|
45
|
+
const ms = new MagicString(code, { filename });
|
|
46
|
+
ms.prepend(`import "${starlightPageImportSource}";\n`);
|
|
47
|
+
return {
|
|
48
|
+
code: ms.toString(),
|
|
49
|
+
map: ms.generateMap({ hires: "boundary" })
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { vitePluginStarlightCssLayerOrder };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ViteUserConfig } from "astro";
|
|
2
|
+
//#region src/integrations/vite-lazy-barrel-optimization.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Vite plugin that marks the Starlight components barrel file as having no side effects so that
|
|
5
|
+
* lazy barrel optimization can be applied to it.
|
|
6
|
+
*
|
|
7
|
+
* @see https://rolldown.rs/in-depth/lazy-barrel-optimization
|
|
8
|
+
*/
|
|
9
|
+
declare function vitePluginStarlightLazyBarrelOptimization(): VitePlugin;
|
|
10
|
+
type VitePlugin = NonNullable<ViteUserConfig['plugins']>[number];
|
|
11
|
+
//#endregion
|
|
12
|
+
export { vitePluginStarlightLazyBarrelOptimization };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
//#region src/integrations/vite-lazy-barrel-optimization.ts
|
|
3
|
+
const componentsBarrelIdFilter = /[\\/]components\.ts(?:\?.*)?$/;
|
|
4
|
+
const backSlashRegex = /\\/g;
|
|
5
|
+
const queryStringRegex = /\?.*$/;
|
|
6
|
+
const starlightComponentsBarrelId = normalizeId(fileURLToPath(new URL("../components.ts", import.meta.url)));
|
|
7
|
+
/**
|
|
8
|
+
* Vite plugin that marks the Starlight components barrel file as having no side effects so that
|
|
9
|
+
* lazy barrel optimization can be applied to it.
|
|
10
|
+
*
|
|
11
|
+
* @see https://rolldown.rs/in-depth/lazy-barrel-optimization
|
|
12
|
+
*/
|
|
13
|
+
function vitePluginStarlightLazyBarrelOptimization() {
|
|
14
|
+
return {
|
|
15
|
+
name: "vite-plugin-starlight-lazy-barrel-optimization",
|
|
16
|
+
enforce: "pre",
|
|
17
|
+
transform: {
|
|
18
|
+
filter: { id: componentsBarrelIdFilter },
|
|
19
|
+
handler(code, id) {
|
|
20
|
+
if (normalizeId(id) !== starlightComponentsBarrelId) return;
|
|
21
|
+
return {
|
|
22
|
+
code,
|
|
23
|
+
moduleSideEffects: false
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function normalizeId(id) {
|
|
30
|
+
return id.replace(backSlashRegex, "/").replace(queryStringRegex, "");
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { vitePluginStarlightLazyBarrelOptimization };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StarlightConfig } from "../utils/user-config.js";
|
|
2
|
+
import { PluginTranslations } from "../utils/plugins.js";
|
|
3
|
+
import { AstroConfig, HookParameters, ViteUserConfig } from "astro";
|
|
4
|
+
//#region src/integrations/vite-virtual-modules.d.ts
|
|
5
|
+
/** Vite plugin that exposes Starlight user config and project context via virtual modules. */
|
|
6
|
+
declare function vitePluginStarlightVirtualModules({ command, isNodeCompatibleEnv }: {
|
|
7
|
+
command: HookParameters<'astro:config:setup'>['command'];
|
|
8
|
+
isNodeCompatibleEnv: boolean;
|
|
9
|
+
}, opts: StarlightConfig, { build, legacy, root, srcDir, trailingSlash }: Pick<AstroConfig, 'root' | 'srcDir' | 'trailingSlash'> & {
|
|
10
|
+
build: Pick<AstroConfig['build'], 'format'>;
|
|
11
|
+
legacy: Pick<AstroConfig['legacy'], 'collectionsBackwardsCompat'>;
|
|
12
|
+
}, pluginTranslations: PluginTranslations): NonNullable<ViteUserConfig['plugins']>[number];
|
|
13
|
+
//#endregion
|
|
14
|
+
export { vitePluginStarlightVirtualModules };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { resolveCollectionPath } from "../utils/collection-fs.js";
|
|
2
|
+
import { getAllNewestCommitDate } from "../utils/git.js";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
6
|
+
//#region src/integrations/vite-virtual-modules.ts
|
|
7
|
+
const pluginResolveIdIdFilter = /^virtual:starlight\//;
|
|
8
|
+
const pluginLoadIdFilter = /^\x00virtual:starlight\//;
|
|
9
|
+
function resolveVirtualModuleId(id) {
|
|
10
|
+
return `\0${id}`;
|
|
11
|
+
}
|
|
12
|
+
/** Vite plugin that exposes Starlight user config and project context via virtual modules. */
|
|
13
|
+
function vitePluginStarlightVirtualModules({ command, isNodeCompatibleEnv }, opts, { build, legacy, root, srcDir, trailingSlash }, pluginTranslations) {
|
|
14
|
+
/**
|
|
15
|
+
* Resolves module IDs to a usable format:
|
|
16
|
+
* - Relative paths (e.g. `'./module.js'`) are resolved against `base` and formatted as an absolute path.
|
|
17
|
+
* - Package identifiers (e.g. `'module'`) are returned unchanged.
|
|
18
|
+
*
|
|
19
|
+
* By default, `base` is the project root directory.
|
|
20
|
+
*/
|
|
21
|
+
const resolveId = (id, base = root) => JSON.stringify(id.startsWith(".") ? resolve(fileURLToPath(base), id) : id);
|
|
22
|
+
/**
|
|
23
|
+
* Resolves a path to a Starlight file relative to this file.
|
|
24
|
+
* When used with TypeScript files, makes sure to not include the `.ts` extension to ensure
|
|
25
|
+
* proper resolution when transpiled to JavaScript.
|
|
26
|
+
* @example
|
|
27
|
+
* resolveLocalPath('../utils/git');
|
|
28
|
+
* // => '"/users/houston/docs/node_modules/@astrojs/starlight/utils/git"'
|
|
29
|
+
* @example
|
|
30
|
+
* resolveLocalPath('../style/global.css');
|
|
31
|
+
* // => '"/users/houston/docs/node_modules/@astrojs/starlight/style/global.css"'
|
|
32
|
+
*/
|
|
33
|
+
const resolveLocalPath = (path) => JSON.stringify(fileURLToPath(new URL(path, import.meta.url)));
|
|
34
|
+
const rootPath = fileURLToPath(root);
|
|
35
|
+
const docsPath = resolveCollectionPath("docs", srcDir);
|
|
36
|
+
let collectionConfigImportPath = resolve(fileURLToPath(srcDir), "./content.config.ts");
|
|
37
|
+
if (legacy.collectionsBackwardsCompat && !existsSync(collectionConfigImportPath)) collectionConfigImportPath = resolve(fileURLToPath(srcDir), "./content/config.ts");
|
|
38
|
+
const virtualComponentModules = Object.fromEntries(Object.entries(opts.components).map(([name, path]) => [`virtual:starlight/components/${name}`, `export { default } from ${resolveId(path)};`]));
|
|
39
|
+
/** Map of virtual module names to their code contents as strings. */
|
|
40
|
+
const modules = {
|
|
41
|
+
"virtual:starlight/user-config": `export default ${JSON.stringify(opts)}`,
|
|
42
|
+
"virtual:starlight/project-context": `export default ${JSON.stringify({
|
|
43
|
+
build: { format: build.format },
|
|
44
|
+
root,
|
|
45
|
+
srcDir,
|
|
46
|
+
trailingSlash
|
|
47
|
+
})}`,
|
|
48
|
+
"virtual:starlight/git-info": (command !== "build" && isNodeCompatibleEnv ? `import { makeAPI } from ${resolveLocalPath("../utils/git")};const api = makeAPI(${JSON.stringify(rootPath)});` : `import { makeAPI } from ${resolveLocalPath("../utils/gitInlined")};const api = makeAPI(${JSON.stringify(getAllNewestCommitDate(rootPath, docsPath))});`) + "export const getNewestCommitDate = api.getNewestCommitDate;",
|
|
49
|
+
/**
|
|
50
|
+
* Module containing styles for features that can be toggled on or off such as heading anchor links.
|
|
51
|
+
*/
|
|
52
|
+
"virtual:starlight/optional-css": opts.markdown.headingLinks ? `import ${resolveLocalPath("../style/anchor-links.css")};` : "",
|
|
53
|
+
/**
|
|
54
|
+
* Module containing imports of user-specified custom CSS files.
|
|
55
|
+
*/
|
|
56
|
+
"virtual:starlight/user-css": opts.customCss.map((id) => `import ${resolveId(id)};`).join(""),
|
|
57
|
+
"virtual:starlight/user-images": opts.logo ? "src" in opts.logo ? `import src from ${resolveId(opts.logo.src)}; export const logos = { dark: src, light: src };` : `import dark from ${resolveId(opts.logo.dark)}; import light from ${resolveId(opts.logo.light)}; export const logos = { dark, light };` : "export const logos = {};",
|
|
58
|
+
"virtual:starlight/collection-config": `let userCollections;
|
|
59
|
+
try {
|
|
60
|
+
userCollections = (await import(${JSON.stringify(collectionConfigImportPath)})).collections;
|
|
61
|
+
} catch {}
|
|
62
|
+
export const collections = userCollections;`,
|
|
63
|
+
"virtual:starlight/plugin-translations": `export default ${JSON.stringify(pluginTranslations)}`,
|
|
64
|
+
/**
|
|
65
|
+
* Exports an array of route middleware functions.
|
|
66
|
+
* For example, might generate a module that looks like:
|
|
67
|
+
*
|
|
68
|
+
* ```js
|
|
69
|
+
* import { onRequest as routeMiddleware0 } from "/users/houston/docs/src/middleware";
|
|
70
|
+
* import { onRequest as routeMiddleware1 } from "@houston-inc/plugin/middleware";
|
|
71
|
+
*
|
|
72
|
+
* export const routeMiddleware = [
|
|
73
|
+
* routeMiddleware0,
|
|
74
|
+
* routeMiddleware1,
|
|
75
|
+
* ];
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
"virtual:starlight/route-middleware": opts.routeMiddleware.reduce(([imports, entries], id, index) => {
|
|
79
|
+
const importName = `routeMiddleware${index}`;
|
|
80
|
+
imports += `import { onRequest as ${importName} } from ${resolveId(id)};\n`;
|
|
81
|
+
entries += `\t${importName},\n`;
|
|
82
|
+
return [imports, entries];
|
|
83
|
+
}, ["", "export const routeMiddleware = [\n"]).join("\n") + "];",
|
|
84
|
+
/** Map of modules exporting Starlight’s templating components. */
|
|
85
|
+
"virtual:starlight/pagefind-config": `export const pagefindUserConfig = ${JSON.stringify(opts.pagefind || {})}`,
|
|
86
|
+
...virtualComponentModules
|
|
87
|
+
};
|
|
88
|
+
/** Mapping names prefixed with `\0` to their original form. */
|
|
89
|
+
const resolutionMap = Object.fromEntries(Object.keys(modules).map((key) => [resolveVirtualModuleId(key), key]));
|
|
90
|
+
return {
|
|
91
|
+
name: "vite-plugin-starlight-user-config",
|
|
92
|
+
resolveId: {
|
|
93
|
+
filter: { id: pluginResolveIdIdFilter },
|
|
94
|
+
handler(id) {
|
|
95
|
+
if (id in modules) return resolveVirtualModuleId(id);
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
load: {
|
|
99
|
+
filter: { id: pluginLoadIdFilter },
|
|
100
|
+
handler(id) {
|
|
101
|
+
const resolution = resolutionMap[id];
|
|
102
|
+
if (resolution) return modules[resolution];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { vitePluginStarlightVirtualModules };
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Loader, glob } from "astro/loaders";
|
|
2
|
+
//#region src/loaders.d.ts
|
|
3
|
+
type GlobOptions = Parameters<typeof glob>[0];
|
|
4
|
+
type GenerateIdFunction = NonNullable<GlobOptions['generateId']>;
|
|
5
|
+
/**
|
|
6
|
+
* Loads content files from the `src/content/docs/` directory, ignoring filenames starting with `_`.
|
|
7
|
+
*/
|
|
8
|
+
declare function docsLoader({ generateId }?: {
|
|
9
|
+
/**
|
|
10
|
+
* Function that generates an ID for an entry. Default implementation generates a slug from the entry path.
|
|
11
|
+
* @returns The ID of the entry. Must be unique per collection.
|
|
12
|
+
**/
|
|
13
|
+
generateId?: GenerateIdFunction;
|
|
14
|
+
}): Loader;
|
|
15
|
+
/**
|
|
16
|
+
* Loads data files from the `src/content/i18n/` directory, ignoring filenames starting with `_`.
|
|
17
|
+
*/
|
|
18
|
+
declare function i18nLoader(): Loader;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { docsLoader, i18nLoader };
|
package/dist/loaders.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getCollectionPathFromRoot } from "./utils/collection.js";
|
|
2
|
+
import { glob } from "astro/loaders";
|
|
3
|
+
//#region src/loaders.ts
|
|
4
|
+
const docsExtensions = [
|
|
5
|
+
"markdown",
|
|
6
|
+
"mdown",
|
|
7
|
+
"mkdn",
|
|
8
|
+
"mkd",
|
|
9
|
+
"mdwn",
|
|
10
|
+
"md",
|
|
11
|
+
"mdx"
|
|
12
|
+
];
|
|
13
|
+
const i18nExtensions = [
|
|
14
|
+
"json",
|
|
15
|
+
"yml",
|
|
16
|
+
"yaml"
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Loads content files from the `src/content/docs/` directory, ignoring filenames starting with `_`.
|
|
20
|
+
*/
|
|
21
|
+
function docsLoader({ generateId } = {}) {
|
|
22
|
+
return {
|
|
23
|
+
name: "starlight-docs-loader",
|
|
24
|
+
load: createGlobLoadFn("docs", generateId)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Loads data files from the `src/content/i18n/` directory, ignoring filenames starting with `_`.
|
|
29
|
+
*/
|
|
30
|
+
function i18nLoader() {
|
|
31
|
+
return {
|
|
32
|
+
name: "starlight-i18n-loader",
|
|
33
|
+
load: createGlobLoadFn("i18n")
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function createGlobLoadFn(collection, generateId) {
|
|
37
|
+
return (context) => {
|
|
38
|
+
const extensions = collection === "docs" ? docsExtensions : i18nExtensions;
|
|
39
|
+
if (collection === "docs" && context.config.integrations.find(({ name }) => name === "@astrojs/markdoc")) extensions.push("mdoc");
|
|
40
|
+
const options = {
|
|
41
|
+
base: getCollectionPathFromRoot(collection, context.config),
|
|
42
|
+
pattern: `**/[^_]*.{${extensions.join(",")}}`
|
|
43
|
+
};
|
|
44
|
+
if (generateId) options.generateId = generateId;
|
|
45
|
+
return glob(options).load(context);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { docsLoader, i18nLoader };
|
package/dist/locals.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { APIContext } from "astro";
|
|
2
|
+
//#region src/locals.d.ts
|
|
3
|
+
declare const onRequest: any;
|
|
4
|
+
/**
|
|
5
|
+
* Sets up a `starlightRoute` property on locals. Initially, this will throw an error if accessed.
|
|
6
|
+
* When rendering, Starlight’s routes set `starlightRoute` with the resolved route data object for
|
|
7
|
+
* the current page.
|
|
8
|
+
*
|
|
9
|
+
* This ensures Starlight components can easily access `starlightRoute` without needing type guards,
|
|
10
|
+
* we can throw a helpful message if `starlightRoute` is accessed on non-Starlight pages, and we
|
|
11
|
+
* avoid generating route data in this middleware which also runs for non-Starlight route.
|
|
12
|
+
*/
|
|
13
|
+
declare function initializeStarlightRoute(context: APIContext): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { initializeStarlightRoute, onRequest };
|
package/dist/locals.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useTranslations } from "./utils/translations.js";
|
|
2
|
+
import { AstroError } from "astro/errors";
|
|
3
|
+
import { defineMiddleware } from "astro:middleware";
|
|
4
|
+
//#region src/locals.ts
|
|
5
|
+
const onRequest = defineMiddleware(async (context, next) => {
|
|
6
|
+
context.locals.t = useTranslations(context.currentLocale);
|
|
7
|
+
initializeStarlightRoute(context);
|
|
8
|
+
return next();
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Sets up a `starlightRoute` property on locals. Initially, this will throw an error if accessed.
|
|
12
|
+
* When rendering, Starlight’s routes set `starlightRoute` with the resolved route data object for
|
|
13
|
+
* the current page.
|
|
14
|
+
*
|
|
15
|
+
* This ensures Starlight components can easily access `starlightRoute` without needing type guards,
|
|
16
|
+
* we can throw a helpful message if `starlightRoute` is accessed on non-Starlight pages, and we
|
|
17
|
+
* avoid generating route data in this middleware which also runs for non-Starlight route.
|
|
18
|
+
*/
|
|
19
|
+
function initializeStarlightRoute(context) {
|
|
20
|
+
if ("starlightRoute" in context.locals) return;
|
|
21
|
+
const state = { routeData: void 0 };
|
|
22
|
+
Object.defineProperty(context.locals, "starlightRoute", {
|
|
23
|
+
get() {
|
|
24
|
+
if (!state.routeData) throw new AstroError("`locals.starlightRoute` is not defined", "This usually means a component that accesses `locals.starlightRoute` is being rendered outside of a Starlight page, which is not supported.\n\nIf this is a component you authored, you can do one of the following:\n\n1. Avoid using this component in non-Starlight pages.\n2. Wrap the code that reads `locals.starlightRoute` in a `try/catch` block and handle the cases where `starlightRoute` is not available.\n\nIf this is a Starlight built-in or third-party component, you may need to report a bug or avoid this use of the component.");
|
|
25
|
+
return state.routeData;
|
|
26
|
+
},
|
|
27
|
+
set(routeData) {
|
|
28
|
+
state.routeData = routeData;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { initializeStarlightRoute, onRequest };
|
package/dist/package.js
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { StarlightRouteData } from "./utils/routing/types.js";
|
|
2
|
+
import { StarlightPageProps } from "./utils/starlight-page.js";
|
|
3
|
+
//#region src/props.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* @deprecated The `Props` type is deprecated. If updating an override to use
|
|
6
6
|
* `Astro.locals.starlightRoute` instead of `Astro.props`, import the new `StarlightRouteData`
|
|
@@ -11,4 +11,6 @@ export type { StarlightPageProps } from './utils/starlight-page';
|
|
|
11
11
|
* ---
|
|
12
12
|
* ```
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
type Props = StarlightRouteData;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { Props, type StarlightPageProps };
|
package/dist/props.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StarlightRouteData } from "./utils/routing/types.js";
|
|
2
|
+
import { APIContext } from "astro";
|
|
3
|
+
//#region src/route-data.d.ts
|
|
4
|
+
type RouteMiddlewareHandler = (context: APIContext, next: () => Promise<void>) => void | Promise<void>;
|
|
5
|
+
declare function defineRouteMiddleware(fn: RouteMiddlewareHandler): RouteMiddlewareHandler;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { RouteMiddlewareHandler, type StarlightRouteData, defineRouteMiddleware };
|