blume 2.0.1 → 2.0.3
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 +147 -0
- package/dist/cli/{chunk-qwsrynx5.js → chunk-1d7ve1dm.js} +38 -19
- package/dist/cli/{chunk-qwsrynx5.js.map → chunk-1d7ve1dm.js.map} +4 -4
- package/dist/cli/{chunk-s6jhgk0q.js → chunk-2eytanqx.js} +2 -2
- package/dist/cli/{chunk-kdp5q7ke.js → chunk-2hsdwb9n.js} +18 -19
- package/dist/cli/{chunk-kdp5q7ke.js.map → chunk-2hsdwb9n.js.map} +2 -2
- package/dist/cli/{chunk-hdpx1tax.js → chunk-2z928egk.js} +5 -5
- package/dist/cli/{chunk-jwyddg7y.js → chunk-35d4wj9f.js} +30 -24
- package/dist/cli/chunk-35d4wj9f.js.map +15 -0
- package/dist/cli/{chunk-ah61y8py.js → chunk-364znk6q.js} +2 -2
- package/dist/cli/{chunk-jts8mvcz.js → chunk-3em5wd2y.js} +25 -6
- package/dist/cli/{chunk-jts8mvcz.js.map → chunk-3em5wd2y.js.map} +3 -3
- package/dist/cli/{chunk-s1p84fyh.js → chunk-5f86nr5m.js} +63 -22
- package/dist/cli/chunk-5f86nr5m.js.map +11 -0
- package/dist/cli/{chunk-2hn4b8z7.js → chunk-5m5nmvyq.js} +170 -76
- package/dist/cli/chunk-5m5nmvyq.js.map +13 -0
- package/dist/cli/{chunk-epjnccmv.js → chunk-5xvm6tfj.js} +18 -15
- package/dist/cli/chunk-5xvm6tfj.js.map +10 -0
- package/dist/cli/{chunk-fz5wtpmh.js → chunk-6dsbexzp.js} +18 -15
- package/dist/cli/chunk-6dsbexzp.js.map +10 -0
- package/dist/cli/{chunk-vtk4a6dg.js → chunk-8ktnccpt.js} +1 -1
- package/dist/cli/{chunk-6hsn950k.js → chunk-9t7a85s3.js} +178 -48
- package/dist/cli/chunk-9t7a85s3.js.map +10 -0
- package/dist/cli/{chunk-fxypxtvm.js → chunk-a58773jm.js} +2 -2
- package/dist/cli/{chunk-mb2919y2.js → chunk-acanzt5p.js} +17 -6
- package/dist/cli/chunk-acanzt5p.js.map +10 -0
- package/dist/cli/{chunk-27g6wdth.js → chunk-akbpwfxc.js} +90 -26
- package/dist/cli/chunk-akbpwfxc.js.map +10 -0
- package/dist/cli/{chunk-wm7js3j9.js → chunk-b07cmahc.js} +2 -2
- package/dist/cli/{chunk-wgm7m9qk.js → chunk-c8chx29p.js} +179 -51
- package/dist/cli/chunk-c8chx29p.js.map +36 -0
- package/dist/cli/{chunk-qs4q5p4e.js → chunk-crgn1q09.js} +32 -14
- package/dist/cli/chunk-crgn1q09.js.map +10 -0
- package/dist/cli/chunk-e04dxsz1.js +39 -0
- package/dist/cli/chunk-e04dxsz1.js.map +10 -0
- package/dist/cli/{chunk-yt5n7ppj.js → chunk-ey84smr6.js} +17 -7
- package/dist/cli/chunk-ey84smr6.js.map +10 -0
- package/dist/cli/{chunk-f2z5v128.js → chunk-g4hq16wv.js} +14 -15
- package/dist/cli/{chunk-f2z5v128.js.map → chunk-g4hq16wv.js.map} +2 -2
- package/dist/cli/{chunk-fa25z98p.js → chunk-ga0pf4aj.js} +9 -8
- package/dist/cli/chunk-ga0pf4aj.js.map +11 -0
- package/dist/cli/{chunk-kpf8rrjc.js → chunk-hm3vjy5s.js} +109 -58
- package/dist/cli/chunk-hm3vjy5s.js.map +19 -0
- package/dist/cli/{chunk-fs23ddbb.js → chunk-j85vccga.js} +625 -750
- package/dist/cli/chunk-j85vccga.js.map +36 -0
- package/dist/cli/{chunk-ch6g3ar0.js → chunk-p3v96n38.js} +6 -6
- package/dist/cli/{chunk-ch6g3ar0.js.map → chunk-p3v96n38.js.map} +3 -3
- package/dist/cli/{chunk-q5163e60.js → chunk-p73c0m7w.js} +21 -19
- package/dist/cli/chunk-p73c0m7w.js.map +11 -0
- package/dist/cli/{chunk-dh8cwk36.js → chunk-pehfxfta.js} +24 -9
- package/dist/cli/chunk-pehfxfta.js.map +10 -0
- package/dist/cli/{chunk-qkqwkpte.js → chunk-pv29h0wf.js} +3688 -1313
- package/dist/cli/chunk-pv29h0wf.js.map +190 -0
- package/dist/cli/{chunk-6vm74dry.js → chunk-q58y5e6a.js} +10 -10
- package/dist/cli/{chunk-6vm74dry.js.map → chunk-q58y5e6a.js.map} +3 -3
- package/dist/cli/{chunk-zxcczpyx.js → chunk-r20tn01b.js} +1 -1
- package/dist/cli/{chunk-m3vmjgmq.js → chunk-r9rcc4w7.js} +16 -8
- package/dist/cli/chunk-r9rcc4w7.js.map +10 -0
- package/dist/cli/{chunk-5shv93fd.js → chunk-tkacnehg.js} +2 -2
- package/dist/cli/{chunk-zxh4d9vy.js → chunk-tzmab476.js} +4 -4
- package/dist/cli/{chunk-yw7dm696.js → chunk-vg9r4eb9.js} +24 -11
- package/dist/cli/chunk-vg9r4eb9.js.map +14 -0
- package/dist/cli/{chunk-79jhk4py.js → chunk-wrr3j9w9.js} +260 -132
- package/dist/cli/chunk-wrr3j9w9.js.map +35 -0
- package/dist/cli/{chunk-6crbhc3x.js → chunk-yfyb25rh.js} +54 -27
- package/dist/cli/chunk-yfyb25rh.js.map +14 -0
- package/dist/cli/index.js +162 -35
- package/dist/cli/index.js.map +4 -4
- package/dist/types/ai/agent-surface.d.ts +32 -0
- package/dist/types/ai/api-catalog.d.ts +7 -1
- package/dist/types/ai/ask-context.d.ts +7 -0
- package/dist/types/ai/component-markdown.d.ts +4 -4
- package/dist/types/ai/link-headers.d.ts +8 -1
- package/dist/types/ai/openapi-components.d.ts +5 -2
- package/dist/types/ai/relative-links.d.ts +11 -4
- package/dist/types/ai/skills.d.ts +4 -1
- package/dist/types/ai/static-expression.d.ts +28 -0
- package/dist/types/ai/tar.d.ts +1 -3
- package/dist/types/analytics/databuddy.d.ts +43 -0
- package/dist/types/analytics/index.d.ts +4 -0
- package/dist/types/analytics/one-dollar-stats.d.ts +48 -0
- package/dist/types/analytics/schema.d.ts +28 -0
- package/dist/types/astro/integration.d.ts +3 -2
- package/dist/types/cli/env.d.ts +5 -0
- package/dist/types/cli/init/scaffold.d.ts +19 -3
- package/dist/types/cli/init/starter-spec.d.ts +11 -0
- package/dist/types/core/base-path.d.ts +24 -1
- package/dist/types/core/config-input.d.ts +13 -11
- package/dist/types/core/config.d.ts +2 -2
- package/dist/types/core/directive-diagnostics.d.ts +12 -0
- package/dist/types/core/graph.d.ts +2 -0
- package/dist/types/core/heading-markers.d.ts +5 -7
- package/dist/types/core/i18n-ui.d.ts +31 -0
- package/dist/types/core/i18n.d.ts +9 -1
- package/dist/types/core/last-modified.d.ts +10 -0
- package/dist/types/core/links.d.ts +3 -1
- package/dist/types/core/load-module.d.ts +10 -0
- package/dist/types/core/locale-links.d.ts +12 -2
- package/dist/types/core/meta.d.ts +13 -1
- package/dist/types/core/nav-diagnostics.d.ts +10 -0
- package/dist/types/core/navigation.d.ts +38 -0
- package/dist/types/core/ordering-prefix.d.ts +4 -0
- package/dist/types/core/safe-links.d.ts +3 -1
- package/dist/types/core/schema.d.ts +59 -13
- package/dist/types/core/sources/github-releases.d.ts +5 -0
- package/dist/types/core/sources/lower.d.ts +38 -13
- package/dist/types/core/sources/normalize.d.ts +23 -2
- package/dist/types/core/sources/remote.d.ts +11 -1
- package/dist/types/core/sources/resolve.d.ts +12 -0
- package/dist/types/core/sources/types.d.ts +31 -0
- package/dist/types/core/sources/watch.d.ts +12 -5
- package/dist/types/core/standard-schema.d.ts +5 -0
- package/dist/types/core/types.d.ts +9 -0
- package/dist/types/deploy/adapters/node.d.ts +5 -2
- package/dist/types/deploy/adapters/types.d.ts +7 -0
- package/dist/types/deploy/artifacts.d.ts +6 -4
- package/dist/types/deploy/cloudflare-negotiation.d.ts +3 -2
- package/dist/types/deploy/headers.d.ts +36 -7
- package/dist/types/deploy/node-headers.d.ts +43 -8
- package/dist/types/deploy/platforms/netlify.d.ts +27 -2
- package/dist/types/deploy/platforms/node.d.ts +6 -5
- package/dist/types/deploy/platforms/types.d.ts +15 -0
- package/dist/types/deploy/platforms/vercel.d.ts +3 -2
- package/dist/types/deploy/redirects.d.ts +31 -15
- package/dist/types/deploy/vercel-negotiation.d.ts +3 -2
- package/dist/types/markdown/directives.d.ts +62 -0
- package/dist/types/markdown/features.d.ts +21 -0
- package/dist/types/markdown/mdast.d.ts +63 -0
- package/dist/types/openapi/asyncapi.d.ts +4 -2
- package/dist/types/openapi/model.d.ts +20 -6
- package/dist/types/search/sync/algolia.d.ts +3 -1
- package/docs/01-quickstart.mdx +3 -2
- package/docs/02-deployment.mdx +20 -9
- package/docs/08-faq.mdx +10 -3
- package/docs/advanced/changelog.mdx +1 -1
- package/docs/advanced/custom-pages.mdx +7 -5
- package/docs/cli/audit.mdx +19 -3
- package/docs/cli/doctor.mdx +2 -2
- package/docs/cli/evals.mdx +4 -4
- package/docs/cli/index.mdx +4 -1
- package/docs/cli/translate.mdx +4 -4
- package/docs/cli/version.mdx +1 -1
- package/docs/configuration/analytics.mdx +42 -2
- package/docs/configuration/assistant.mdx +1 -1
- package/docs/configuration/customization.mdx +6 -3
- package/docs/configuration/index.mdx +5 -3
- package/docs/configuration/search.mdx +2 -2
- package/docs/content/components.mdx +2 -2
- package/docs/content/frontmatter.mdx +5 -1
- package/docs/content/i18n.mdx +3 -1
- package/docs/content/index.mdx +8 -4
- package/docs/content/islands.mdx +1 -1
- package/docs/content/meta.mdx +7 -3
- package/docs/content/navigation.mdx +29 -4
- package/docs/content/sources.mdx +18 -16
- package/docs/content/syntax.mdx +14 -0
- package/docs/content/versioning.mdx +2 -1
- package/docs/discoverability/agent-discovery.mdx +22 -8
- package/docs/discoverability/index.mdx +4 -3
- package/docs/discoverability/llms-txt.mdx +2 -5
- package/docs/discoverability/markdown.mdx +6 -4
- package/docs/discoverability/mcp.mdx +4 -0
- package/docs/discoverability/metadata.mdx +3 -2
- package/docs/discoverability/open-graph.mdx +8 -4
- package/docs/discoverability/rss.mdx +4 -2
- package/docs/references/asyncapi.mdx +2 -2
- package/docs/references/graphql.mdx +2 -2
- package/docs/references/openapi.mdx +6 -4
- package/package.json +1 -1
- package/skills/blume-migrate/SKILL.md +6 -6
- package/skills/blume-migrate/references/docusaurus.md +6 -6
- package/skills/blume-migrate/references/fumadocs.md +1 -1
- package/skills/blume-migrate/references/mintlify.md +3 -3
- package/skills/blume-migrate/references/monorepo.md +1 -1
- package/skills/blume-migrate/references/nextra.md +2 -2
- package/skills/blume-migrate/references/starlight.md +5 -5
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +9 -4
- package/skills/blume-update-docs/references/audit-checklist.md +1 -1
- package/src/ai/agent-readability.ts +2 -2
- package/src/ai/agent-surface.ts +56 -0
- package/src/ai/ai-catalog.ts +6 -2
- package/src/ai/api/handlers.ts +2 -2
- package/src/ai/api/spec.ts +17 -4
- package/src/ai/api-catalog.ts +13 -3
- package/src/ai/ask-context.ts +14 -2
- package/src/ai/ask-data.ts +26 -12
- package/src/ai/changelog-markdown.ts +2 -2
- package/src/ai/component-markdown.ts +43 -37
- package/src/ai/link-headers.ts +22 -8
- package/src/ai/llms.ts +22 -10
- package/src/ai/markdown.ts +23 -11
- package/src/ai/mcp/discovery.ts +2 -2
- package/src/ai/mcp/query.ts +2 -2
- package/src/ai/mcp/server.ts +80 -9
- package/src/ai/openapi-components.ts +22 -6
- package/src/ai/relative-links.ts +99 -15
- package/src/ai/serializers.ts +2 -1
- package/src/ai/skills.ts +14 -1
- package/src/ai/static-expression.ts +416 -0
- package/src/ai/tar.ts +139 -12
- package/src/ai/visibility.ts +45 -14
- package/src/analytics/databuddy.ts +67 -0
- package/src/analytics/head.ts +8 -0
- package/src/analytics/index.ts +7 -0
- package/src/analytics/one-dollar-stats.ts +86 -0
- package/src/analytics/posthog.ts +21 -3
- package/src/analytics/schema.ts +4 -0
- package/src/astro/generate.ts +72 -28
- package/src/astro/include-hmr.ts +31 -12
- package/src/astro/include-refresh.ts +19 -8
- package/src/astro/integration.ts +108 -14
- package/src/astro/runtime-modules.ts +28 -13
- package/src/astro/templates.ts +139 -57
- package/src/audit/catalog.ts +2 -2
- package/src/audit/checks/assets.ts +25 -5
- package/src/audit/checks/content.ts +20 -2
- package/src/audit/checks/i18n.ts +46 -8
- package/src/audit/checks/indexability.ts +39 -19
- package/src/audit/checks/links.ts +22 -1
- package/src/audit/checks/llms.ts +6 -3
- package/src/audit/checks/network.ts +3 -1
- package/src/audit/checks/og-image.ts +10 -0
- package/src/audit/checks/robots.ts +6 -1
- package/src/audit/checks/sitemap.ts +56 -31
- package/src/audit/checks/social.ts +21 -2
- package/src/audit/crawl.ts +88 -15
- package/src/audit/graph.ts +3 -1
- package/src/audit/report.ts +54 -17
- package/src/audit/run.ts +13 -9
- package/src/audit/snapshot.ts +5 -0
- package/src/audit/types.ts +18 -0
- package/src/audit/url.ts +37 -6
- package/src/cli/args.ts +32 -0
- package/src/cli/build-failure.ts +50 -0
- package/src/cli/commands/audit.ts +11 -1
- package/src/cli/commands/build.ts +19 -5
- package/src/cli/commands/check.ts +2 -0
- package/src/cli/commands/doctor.ts +3 -1
- package/src/cli/commands/eval.ts +20 -18
- package/src/cli/commands/init.ts +15 -5
- package/src/cli/commands/preview.ts +15 -0
- package/src/cli/commands/sync.ts +2 -0
- package/src/cli/commands/translate.ts +18 -18
- package/src/cli/commands/upgrade.ts +11 -0
- package/src/cli/commands/validate.ts +3 -1
- package/src/cli/dev-lock.ts +157 -37
- package/src/cli/eject-scripts.ts +32 -7
- package/src/cli/env.ts +12 -1
- package/src/cli/init/scaffold.ts +117 -11
- package/src/cli/init/starter-spec.ts +235 -0
- package/src/cli/report-format.ts +11 -6
- package/src/components/colors.ts +19 -0
- package/src/components/content/AccordionItem.astro +26 -22
- package/src/components/content/Badge.astro +7 -12
- package/src/components/content/Card.astro +2 -2
- package/src/components/content/Component.astro +11 -5
- package/src/components/content/Expandable.astro +5 -1
- package/src/components/content/Frame.astro +2 -7
- package/src/components/content/GithubInfo.astro +12 -2
- package/src/components/content/Prompt.astro +2 -7
- package/src/components/content/Tab.astro +0 -1
- package/src/components/content/Tabs.astro +58 -5
- package/src/components/content/Tile.astro +1 -1
- package/src/components/content/Tooltip.astro +69 -7
- package/src/components/content/Tree.astro +7 -2
- package/src/components/content/TypeTable.astro +10 -5
- package/src/components/content/Update.astro +8 -2
- package/src/components/content/auto-type-table.ts +4 -1
- package/src/components/content/badge-color.ts +20 -0
- package/src/components/content/base-href.ts +14 -22
- package/src/components/content/inline-markdown.ts +27 -7
- package/src/components/copy-feedback.ts +35 -8
- package/src/components/islands/assistant.tsx +37 -6
- package/src/components/islands/base-path.ts +47 -10
- package/src/components/islands/hooks.ts +42 -21
- package/src/components/islands/webmcp.ts +16 -10
- package/src/components/layout/Banner.astro +23 -4
- package/src/components/layout/Breadcrumbs.astro +5 -2
- package/src/components/layout/DiscoveryLinks.astro +9 -5
- package/src/components/layout/Header.astro +23 -10
- package/src/components/layout/LanguageSwitcher.astro +2 -2
- package/src/components/layout/Logo.astro +5 -0
- package/src/components/layout/NavSelector.astro +8 -3
- package/src/components/layout/NavTabMenu.astro +133 -0
- package/src/components/layout/NavTree.astro +31 -12
- package/src/components/layout/NavTreeCache.astro +5 -2
- package/src/components/layout/NavTreeScript.astro +45 -5
- package/src/components/layout/PageActions.astro +4 -3
- package/src/components/layout/PageLayout.astro +28 -13
- package/src/components/layout/Pagination.astro +3 -3
- package/src/components/layout/ReferenceLayout.astro +4 -1
- package/src/components/layout/RootLayout.astro +25 -12
- package/src/components/layout/Search.astro +38 -14
- package/src/components/layout/VersionBanner.astro +2 -2
- package/src/components/layout/analytics-client.ts +14 -0
- package/src/components/layout/toc-active.ts +41 -0
- package/src/components/layout/toc-element.ts +8 -14
- package/src/components/openapi/ApiTagOperations.astro +2 -2
- package/src/components/openapi/AsyncApiOperation.astro +7 -4
- package/src/components/openapi/GraphqlChip.astro +2 -2
- package/src/components/openapi/GraphqlType.astro +11 -3
- package/src/components/openapi/MessageComposer.astro +1 -1
- package/src/components/openapi/Operation.astro +23 -5
- package/src/components/openapi/PanelTabs.astro +4 -1
- package/src/components/openapi/Playground.astro +8 -2
- package/src/components/openapi/RequestPanel.astro +13 -6
- package/src/components/openapi/SchemaProperty.astro +11 -33
- package/src/components/openapi/SchemaTable.astro +34 -52
- package/src/components/openapi/async.ts +38 -6
- package/src/components/openapi/helpers.ts +100 -12
- package/src/components/openapi/message-composer.ts +14 -1
- package/src/components/openapi/message-model.ts +12 -2
- package/src/components/openapi/message.ts +21 -3
- package/src/components/openapi/operation-model.ts +119 -17
- package/src/components/openapi/panel.ts +31 -5
- package/src/components/openapi/param-style.ts +181 -0
- package/src/components/openapi/playground-client.ts +110 -23
- package/src/components/openapi/playground-schema.ts +25 -6
- package/src/components/openapi/request.ts +192 -26
- package/src/components/openapi/schema-tree.ts +209 -0
- package/src/components/openapi/snippets.ts +113 -19
- package/src/components/openapi/validate-json.ts +1 -1
- package/src/components/openapi/ws-client.ts +18 -2
- package/src/core/base-path.ts +69 -8
- package/src/core/config-input.ts +13 -11
- package/src/core/config.ts +18 -4
- package/src/core/diagnostics.ts +219 -30
- package/src/core/directive-diagnostics.ts +99 -0
- package/src/core/frontmatter.ts +21 -18
- package/src/core/graph.ts +120 -11
- package/src/core/heading-markers.ts +5 -18
- package/src/core/i18n-ui.ts +39 -2
- package/src/core/i18n.ts +44 -5
- package/src/core/last-modified.ts +25 -3
- package/src/core/links.ts +7 -4
- package/src/core/load-module.ts +20 -0
- package/src/core/locale-links.ts +22 -18
- package/src/core/manifest.ts +3 -2
- package/src/core/meta.ts +89 -12
- package/src/core/nav-diagnostics.ts +56 -1
- package/src/core/navigation.ts +272 -83
- package/src/core/ordering-prefix.ts +27 -0
- package/src/core/project-graph.ts +50 -6
- package/src/core/safe-href.ts +53 -1
- package/src/core/safe-links.ts +11 -2
- package/src/core/schema.ts +94 -18
- package/src/core/sources/assets.ts +83 -41
- package/src/core/sources/contentful-rich-text.ts +28 -20
- package/src/core/sources/contentful.ts +25 -12
- package/src/core/sources/filesystem.ts +25 -3
- package/src/core/sources/github-releases.ts +131 -11
- package/src/core/sources/lexical.ts +30 -20
- package/src/core/sources/lower.ts +276 -56
- package/src/core/sources/mdx-remote.ts +52 -16
- package/src/core/sources/normalize.ts +456 -119
- package/src/core/sources/notion.ts +77 -34
- package/src/core/sources/obsidian.ts +40 -9
- package/src/core/sources/payload.ts +1 -0
- package/src/core/sources/portable-text.ts +85 -49
- package/src/core/sources/remote.ts +18 -2
- package/src/core/sources/resolve.ts +52 -33
- package/src/core/sources/sanity.ts +1 -0
- package/src/core/sources/strapi-blocks.ts +28 -19
- package/src/core/sources/strapi.ts +1 -0
- package/src/core/sources/types.ts +31 -0
- package/src/core/sources/watch.ts +20 -7
- package/src/core/standard-schema.ts +10 -6
- package/src/core/types.ts +9 -0
- package/src/core/ui-packs/ar.ts +13 -0
- package/src/core/ui-packs/bg.ts +13 -0
- package/src/core/ui-packs/bn.ts +13 -0
- package/src/core/ui-packs/ca.ts +13 -0
- package/src/core/ui-packs/cs.ts +13 -0
- package/src/core/ui-packs/da.ts +13 -0
- package/src/core/ui-packs/de.ts +13 -0
- package/src/core/ui-packs/el.ts +13 -0
- package/src/core/ui-packs/es.ts +13 -0
- package/src/core/ui-packs/fa.ts +13 -0
- package/src/core/ui-packs/fi.ts +13 -0
- package/src/core/ui-packs/fr.ts +13 -0
- package/src/core/ui-packs/he.ts +13 -0
- package/src/core/ui-packs/hi.ts +13 -0
- package/src/core/ui-packs/hr.ts +13 -0
- package/src/core/ui-packs/hu.ts +13 -0
- package/src/core/ui-packs/id.ts +13 -0
- package/src/core/ui-packs/it.ts +13 -0
- package/src/core/ui-packs/ja.ts +13 -0
- package/src/core/ui-packs/ko.ts +13 -0
- package/src/core/ui-packs/nl.ts +13 -0
- package/src/core/ui-packs/no.ts +13 -0
- package/src/core/ui-packs/pl.ts +13 -0
- package/src/core/ui-packs/pt-br.ts +13 -0
- package/src/core/ui-packs/pt.ts +13 -0
- package/src/core/ui-packs/ro.ts +13 -0
- package/src/core/ui-packs/ru.ts +13 -0
- package/src/core/ui-packs/sk.ts +13 -0
- package/src/core/ui-packs/sr.ts +13 -0
- package/src/core/ui-packs/sv.ts +13 -0
- package/src/core/ui-packs/th.ts +13 -0
- package/src/core/ui-packs/tr.ts +13 -0
- package/src/core/ui-packs/uk.ts +13 -0
- package/src/core/ui-packs/vi.ts +13 -0
- package/src/core/ui-packs/zh-tw.ts +13 -0
- package/src/core/ui-packs/zh.ts +13 -0
- package/src/core/version-cut.ts +69 -17
- package/src/core/versions.ts +4 -1
- package/src/deploy/adapters/node.ts +5 -2
- package/src/deploy/adapters/registry.ts +2 -1
- package/src/deploy/adapters/types.ts +13 -1
- package/src/deploy/artifacts.ts +52 -11
- package/src/deploy/cloudflare-negotiation.ts +27 -16
- package/src/deploy/headers.ts +75 -55
- package/src/deploy/node-headers.ts +148 -27
- package/src/deploy/platforms/cloudflare.ts +13 -3
- package/src/deploy/platforms/netlify.ts +83 -5
- package/src/deploy/platforms/node.ts +8 -5
- package/src/deploy/platforms/static.ts +2 -0
- package/src/deploy/platforms/types.ts +15 -0
- package/src/deploy/platforms/vercel.ts +10 -3
- package/src/deploy/redirects.ts +68 -21
- package/src/deploy/robots.ts +2 -2
- package/src/deploy/rss.ts +4 -3
- package/src/deploy/sitemap.ts +7 -5
- package/src/deploy/vercel-negotiation.ts +35 -3
- package/src/eval/agents.ts +10 -2
- package/src/eval/run.ts +25 -0
- package/src/markdown/base-links.ts +74 -29
- package/src/markdown/directives.ts +242 -36
- package/src/markdown/features.ts +17 -0
- package/src/markdown/index.ts +13 -9
- package/src/markdown/mdast.ts +5 -2
- package/src/markdown/relative-links.ts +15 -27
- package/src/markdown/route-snapshot.ts +37 -0
- package/src/og/card.ts +149 -9
- package/src/og/derive.ts +156 -5
- package/src/og/index.ts +1 -0
- package/src/openapi/asyncapi.ts +4 -2
- package/src/openapi/graphql-build.ts +28 -2
- package/src/openapi/model.ts +99 -27
- package/src/openapi/proxy.ts +63 -10
- package/src/openapi/render-mdx.ts +51 -3
- package/src/registry/eject.ts +297 -43
- package/src/search/adapters/version-scope.ts +30 -0
- package/src/search/documents.ts +89 -27
- package/src/search/popular.ts +2 -1
- package/src/search/sync/algolia.ts +36 -2
- package/src/seo/jsonld.ts +7 -3
- package/src/sources/registry.ts +5 -0
- package/src/theme/entry.ts +11 -4
- package/src/translate/agents.ts +6 -1
- package/src/translate/ledger.ts +26 -3
- package/src/translate/meta.ts +76 -24
- package/src/translate/run.ts +14 -8
- package/src/translate/validate.ts +14 -2
- package/src/translate/work-list.ts +91 -19
- package/src/upgrade/upgrade.ts +36 -4
- package/dist/cli/chunk-27g6wdth.js.map +0 -10
- package/dist/cli/chunk-2hn4b8z7.js.map +0 -12
- package/dist/cli/chunk-6crbhc3x.js.map +0 -14
- package/dist/cli/chunk-6hsn950k.js.map +0 -10
- package/dist/cli/chunk-79jhk4py.js.map +0 -35
- package/dist/cli/chunk-82bbrxdn.js +0 -51
- package/dist/cli/chunk-82bbrxdn.js.map +0 -10
- package/dist/cli/chunk-abh8yjkn.js +0 -31
- package/dist/cli/chunk-abh8yjkn.js.map +0 -10
- package/dist/cli/chunk-ce574jw2.js +0 -23
- package/dist/cli/chunk-ce574jw2.js.map +0 -10
- package/dist/cli/chunk-dh8cwk36.js.map +0 -10
- package/dist/cli/chunk-epjnccmv.js.map +0 -10
- package/dist/cli/chunk-fa25z98p.js.map +0 -11
- package/dist/cli/chunk-fs23ddbb.js.map +0 -35
- package/dist/cli/chunk-fz5wtpmh.js.map +0 -10
- package/dist/cli/chunk-jwyddg7y.js.map +0 -15
- package/dist/cli/chunk-kpf8rrjc.js.map +0 -19
- package/dist/cli/chunk-m3vmjgmq.js.map +0 -10
- package/dist/cli/chunk-mb2919y2.js.map +0 -10
- package/dist/cli/chunk-q5163e60.js.map +0 -11
- package/dist/cli/chunk-qkqwkpte.js.map +0 -182
- package/dist/cli/chunk-qs4q5p4e.js.map +0 -10
- package/dist/cli/chunk-s1p84fyh.js.map +0 -10
- package/dist/cli/chunk-wgm7m9qk.js.map +0 -36
- package/dist/cli/chunk-yt5n7ppj.js.map +0 -10
- package/dist/cli/chunk-yw7dm696.js.map +0 -14
- /package/dist/cli/{chunk-s6jhgk0q.js.map → chunk-2eytanqx.js.map} +0 -0
- /package/dist/cli/{chunk-hdpx1tax.js.map → chunk-2z928egk.js.map} +0 -0
- /package/dist/cli/{chunk-ah61y8py.js.map → chunk-364znk6q.js.map} +0 -0
- /package/dist/cli/{chunk-vtk4a6dg.js.map → chunk-8ktnccpt.js.map} +0 -0
- /package/dist/cli/{chunk-fxypxtvm.js.map → chunk-a58773jm.js.map} +0 -0
- /package/dist/cli/{chunk-wm7js3j9.js.map → chunk-b07cmahc.js.map} +0 -0
- /package/dist/cli/{chunk-zxcczpyx.js.map → chunk-r20tn01b.js.map} +0 -0
- /package/dist/cli/{chunk-5shv93fd.js.map → chunk-tkacnehg.js.map} +0 -0
- /package/dist/cli/{chunk-zxh4d9vy.js.map → chunk-tzmab476.js.map} +0 -0
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
trimChar,
|
|
4
|
-
normalizeBasePath
|
|
5
|
-
} from "./chunk-jts8mvcz.js";
|
|
6
2
|
import {
|
|
7
3
|
buildHomeLinkHeader,
|
|
8
4
|
resolveDocsCollection,
|
|
@@ -10,18 +6,61 @@ import {
|
|
|
10
6
|
deployPassthrough,
|
|
11
7
|
fontLocaleCodes,
|
|
12
8
|
buildFontEntries,
|
|
9
|
+
SVG_ASSET_HEADERS,
|
|
13
10
|
applyBaseToAstroRedirects,
|
|
14
11
|
distDir,
|
|
15
12
|
adapterRoot,
|
|
16
|
-
|
|
17
|
-
deployPlatform
|
|
18
|
-
} from "./chunk-qkqwkpte.js";
|
|
19
|
-
import {
|
|
13
|
+
deployPlatform,
|
|
20
14
|
BLUME_IGNORE_DIRS
|
|
21
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-pv29h0wf.js";
|
|
16
|
+
import {
|
|
17
|
+
trimChar,
|
|
18
|
+
normalizeBasePath
|
|
19
|
+
} from "./chunk-3em5wd2y.js";
|
|
20
|
+
|
|
21
|
+
// src/deploy/adapter-output.ts
|
|
22
|
+
import { existsSync } from "node:fs";
|
|
23
|
+
import { cp, mkdir, rm } from "node:fs/promises";
|
|
24
|
+
import { dirname, join } from "pathe";
|
|
25
|
+
var deployOutputDir = (config, context) => {
|
|
26
|
+
const { deployment } = config;
|
|
27
|
+
return deployment.options.output === "server" ? deployPlatform(deployment).serverOutputDir(context) : distDir(context);
|
|
28
|
+
};
|
|
29
|
+
var deployStaticDir = (config, context) => {
|
|
30
|
+
const { deployment } = config;
|
|
31
|
+
return deployment.options.output === "server" ? deployPlatform(deployment).serverStaticDir(context) : distDir(context);
|
|
32
|
+
};
|
|
33
|
+
var surfaceAdapterOutput = async (config, context) => {
|
|
34
|
+
const { deployment } = config;
|
|
35
|
+
if (deployment.options.output !== "server") {
|
|
36
|
+
return { moved: false };
|
|
37
|
+
}
|
|
38
|
+
const rel = deployPlatform(deployment).hiddenRuntime.surfacePath;
|
|
39
|
+
if (!rel) {
|
|
40
|
+
return { moved: false };
|
|
41
|
+
}
|
|
42
|
+
const from = join(context.outDir, rel);
|
|
43
|
+
const to = join(context.root, rel);
|
|
44
|
+
if (!existsSync(from)) {
|
|
45
|
+
return { moved: false };
|
|
46
|
+
}
|
|
47
|
+
await mkdir(dirname(to), { recursive: true });
|
|
48
|
+
await rm(to, { force: true, recursive: true });
|
|
49
|
+
try {
|
|
50
|
+
await cp(from, to, { recursive: true, verbatimSymlinks: true });
|
|
51
|
+
} catch (error) {
|
|
52
|
+
if (error.code !== "EPERM") {
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
await rm(to, { force: true, recursive: true });
|
|
56
|
+
await cp(from, to, { dereference: true, recursive: true });
|
|
57
|
+
}
|
|
58
|
+
await rm(from, { force: true, recursive: true });
|
|
59
|
+
return { from, moved: true, to };
|
|
60
|
+
};
|
|
22
61
|
|
|
23
62
|
// src/astro/component-slots.ts
|
|
24
|
-
import { isAbsolute, join, relative } from "pathe";
|
|
63
|
+
import { isAbsolute, join as join2, relative } from "pathe";
|
|
25
64
|
var attributeValue = (value) => value.replaceAll(/["\n\r]/gu, " ").trim();
|
|
26
65
|
var CLIENT_LOAD = "client:load";
|
|
27
66
|
var directiveFor = (override) => {
|
|
@@ -77,7 +116,7 @@ var islandOverride = (island) => ({
|
|
|
77
116
|
var record = (entries) => entries.length ? `{ ${entries.join(", ")} }` : "{}";
|
|
78
117
|
var planComponentSlots = (islands, analysis, options = {}) => {
|
|
79
118
|
const { relativeTo } = options;
|
|
80
|
-
const wrapperDir = relativeTo === undefined ? undefined :
|
|
119
|
+
const wrapperDir = relativeTo === undefined ? undefined : join2(relativeTo, "component-slots");
|
|
81
120
|
const frameworks = new Set;
|
|
82
121
|
const wrappers = [];
|
|
83
122
|
const importLines = [];
|
|
@@ -156,10 +195,12 @@ var publishRuntimeModules = (modules) => {
|
|
|
156
195
|
return changed;
|
|
157
196
|
}
|
|
158
197
|
for (const server of servers) {
|
|
159
|
-
for (const
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
198
|
+
for (const { moduleGraph } of Object.values(server.environments)) {
|
|
199
|
+
for (const id of changed) {
|
|
200
|
+
const mod = moduleGraph.getModuleById(`${RESOLVED_PREFIX}${id}`);
|
|
201
|
+
if (mod) {
|
|
202
|
+
moduleGraph.invalidateModule(mod);
|
|
203
|
+
}
|
|
163
204
|
}
|
|
164
205
|
}
|
|
165
206
|
server.ws.send({ type: "full-reload" });
|
|
@@ -168,9 +209,9 @@ var publishRuntimeModules = (modules) => {
|
|
|
168
209
|
};
|
|
169
210
|
|
|
170
211
|
// src/astro/templates.ts
|
|
171
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
212
|
+
import { existsSync as existsSync2, readFileSync } from "node:fs";
|
|
172
213
|
import { pathToFileURL } from "node:url";
|
|
173
|
-
import { dirname, isAbsolute as isAbsolute2, join as
|
|
214
|
+
import { dirname as dirname2, isAbsolute as isAbsolute2, join as join3, relative as relative2 } from "pathe";
|
|
174
215
|
var WORKSPACE_MARKERS = [
|
|
175
216
|
".git",
|
|
176
217
|
"bun.lock",
|
|
@@ -181,7 +222,7 @@ var WORKSPACE_MARKERS = [
|
|
|
181
222
|
"yarn.lock"
|
|
182
223
|
];
|
|
183
224
|
var hasWorkspacesField = (pkgPath) => {
|
|
184
|
-
if (!
|
|
225
|
+
if (!existsSync2(pkgPath)) {
|
|
185
226
|
return false;
|
|
186
227
|
}
|
|
187
228
|
try {
|
|
@@ -191,14 +232,14 @@ var hasWorkspacesField = (pkgPath) => {
|
|
|
191
232
|
return false;
|
|
192
233
|
}
|
|
193
234
|
};
|
|
194
|
-
var hasWorkspaceMarker = (dir) => hasWorkspacesField(
|
|
235
|
+
var hasWorkspaceMarker = (dir) => hasWorkspacesField(join3(dir, "package.json")) || WORKSPACE_MARKERS.some((marker) => existsSync2(join3(dir, marker)));
|
|
195
236
|
var findWorkspaceRoot = (start) => {
|
|
196
237
|
let dir = start;
|
|
197
238
|
for (;; ) {
|
|
198
239
|
if (hasWorkspaceMarker(dir)) {
|
|
199
240
|
return dir;
|
|
200
241
|
}
|
|
201
|
-
const parent =
|
|
242
|
+
const parent = dirname2(dir);
|
|
202
243
|
if (parent === dir) {
|
|
203
244
|
return start;
|
|
204
245
|
}
|
|
@@ -317,8 +358,16 @@ const blumeConfig = await loadBlumeConfig(resolve(dirname(fileURLToPath(import.m
|
|
|
317
358
|
var renderImageOption = (config) => config.image.domains.length > 0 || config.image.remotePatterns.length > 0 ? `
|
|
318
359
|
image: ${JSON.stringify(config.image)},` : "";
|
|
319
360
|
var ALL_CLIENT_FEATURES = { epub: true, mermaid: true };
|
|
361
|
+
var SEARCH_CLIENT_DEPS = {
|
|
362
|
+
algolia: "algoliasearch/lite",
|
|
363
|
+
flexsearch: "flexsearch",
|
|
364
|
+
orama: "@orama/orama",
|
|
365
|
+
"orama-cloud": "@oramacloud/client",
|
|
366
|
+
typesense: "typesense"
|
|
367
|
+
};
|
|
320
368
|
var resolveOptimizeDeps = (options) => {
|
|
321
369
|
const { context, features } = options;
|
|
370
|
+
const searchDep = SEARCH_CLIENT_DEPS[options.searchKind];
|
|
322
371
|
const optimizeDepsEntries = [
|
|
323
372
|
...context.pagesRoot ? [`${context.pagesRoot}/**/*.astro`] : [],
|
|
324
373
|
`${context.root}/islands/**/*.{jsx,svelte,tsx,vue}`,
|
|
@@ -327,6 +376,7 @@ var resolveOptimizeDeps = (options) => {
|
|
|
327
376
|
const optimizeDepsInclude = [
|
|
328
377
|
...features.mermaid ? ["blume > mermaid"] : [],
|
|
329
378
|
...features.epub ? ["blume > epub-gen-memory/bundle"] : [],
|
|
379
|
+
...searchDep ? [`blume > ${searchDep}`] : [],
|
|
330
380
|
...options.needsReact && options.reactCompilerPath ? ["react/compiler-runtime"] : []
|
|
331
381
|
];
|
|
332
382
|
return { optimizeDepsEntries, optimizeDepsInclude };
|
|
@@ -357,7 +407,7 @@ var renderRuntimeModuleWiring = (generatedModulesDir) => {
|
|
|
357
407
|
var blumeIntegrationOptions = (options) => options.ejected ? {
|
|
358
408
|
buildArtifactsRoot: ".",
|
|
359
409
|
contentRoutes: options.contentRoutes,
|
|
360
|
-
homeLinkHeader: buildHomeLinkHeader(options.config, options.contentRoutes) ?? undefined,
|
|
410
|
+
homeLinkHeader: buildHomeLinkHeader(options.config, options.contentRoutes, "dev") ?? undefined,
|
|
361
411
|
pages: options.pages
|
|
362
412
|
} : { pages: options.pages };
|
|
363
413
|
var astroConfigTemplate = (options) => {
|
|
@@ -389,7 +439,8 @@ var astroConfigTemplate = (options) => {
|
|
|
389
439
|
context,
|
|
390
440
|
features,
|
|
391
441
|
needsReact,
|
|
392
|
-
reactCompilerPath: options.reactCompilerPath
|
|
442
|
+
reactCompilerPath: options.reactCompilerPath,
|
|
443
|
+
searchKind: config.search.provider.kind
|
|
393
444
|
});
|
|
394
445
|
const {
|
|
395
446
|
configEntries: adapterConfigEntries,
|
|
@@ -409,7 +460,7 @@ var astroConfigTemplate = (options) => {
|
|
|
409
460
|
prefixDefaultLocale: !config.i18n.hideDefaultLocalePrefix
|
|
410
461
|
}
|
|
411
462
|
})},` : "";
|
|
412
|
-
const basedRedirects = applyBaseToAstroRedirects(config.redirects, config.basePath, deployment.options.base ?? "");
|
|
463
|
+
const basedRedirects = applyBaseToAstroRedirects(config.redirects, config.basePath, deployment.options.base ?? "", new Set(contentRoutes));
|
|
413
464
|
const redirectsOption = basedRedirects.length > 0 ? `
|
|
414
465
|
redirects: ${JSON.stringify(Object.fromEntries(basedRedirects.map((redirect) => [
|
|
415
466
|
redirect.from,
|
|
@@ -428,7 +479,7 @@ var astroConfigTemplate = (options) => {
|
|
|
428
479
|
return {
|
|
429
480
|
...face,
|
|
430
481
|
src: [
|
|
431
|
-
isAbsolute2(variant.src) ? variant.src :
|
|
482
|
+
isAbsolute2(variant.src) ? variant.src : join3(context.root, variant.src)
|
|
432
483
|
]
|
|
433
484
|
};
|
|
434
485
|
}))} } }` : `{ provider: fontProviders.${font.provider}(), name: ${JSON.stringify(font.name)}, cssVariable: ${JSON.stringify(font.cssVariable)}, weights: ${astroFontWeights(font.weights)}, subsets: ${JSON.stringify(font.subsets)}, fallbacks: ${JSON.stringify(font.fallbacks)} }`).join(", ")}],` : "";
|
|
@@ -562,6 +613,10 @@ ${userConfigSetup}export default defineConfig({
|
|
|
562
613
|
// \`/bundle\` subpath that is actually imported: optimizing the package
|
|
563
614
|
// root leaves that entry out. Production (Rollup) already handles the
|
|
564
615
|
// interop, so all of this only affects dev.
|
|
616
|
+
//
|
|
617
|
+
// The search adapter's client library rides the list for the same reason
|
|
618
|
+
// as the compiler runtime: the search dialog lazy-imports it on first
|
|
619
|
+
// open, and discovering it then re-optimizes and reloads the page.
|
|
565
620
|
optimizeDeps: {
|
|
566
621
|
entries: ${JSON.stringify(optimizeDepsEntries)},
|
|
567
622
|
include: ${JSON.stringify(optimizeDepsInclude)},
|
|
@@ -601,7 +656,7 @@ ${userConfigSetup}export default defineConfig({
|
|
|
601
656
|
});
|
|
602
657
|
`;
|
|
603
658
|
};
|
|
604
|
-
var stagedContentDir = (outDir) =>
|
|
659
|
+
var stagedContentDir = (outDir) => join3(outDir, "content");
|
|
605
660
|
var runtimeDirWithin = (base, outDir) => {
|
|
606
661
|
const rel = relative2(base, outDir);
|
|
607
662
|
return rel && !rel.startsWith("..") && !isAbsolute2(rel) ? rel : null;
|
|
@@ -753,6 +808,7 @@ const ground = createAskContext(askData${groundOptions});
|
|
|
753
808
|
${streamFields.join(`,
|
|
754
809
|
`)},
|
|
755
810
|
${onError}
|
|
811
|
+
abortSignal: request.signal,
|
|
756
812
|
});`;
|
|
757
813
|
const stream = grounded ? ` const instructions =
|
|
758
814
|
(await ground(messages, body.page)) ??
|
|
@@ -834,9 +890,9 @@ var featuresTemplate = (features) => `// Generated by Blume. Do not edit.
|
|
|
834
890
|
export const loadMermaid: (() => Promise<unknown>) | null = ${features.mermaid ? '() => import("blume/components/content/mermaid-element.ts")' : "null"};
|
|
835
891
|
|
|
836
892
|
/** The EPUB generator's browser bundle; null when export.epub is off. */
|
|
837
|
-
export const loadEpub:
|
|
893
|
+
${features.epub ? `export const loadEpub:
|
|
838
894
|
| (() => Promise<typeof import("epub-gen-memory/bundle")>)
|
|
839
|
-
| null =
|
|
895
|
+
| null = () => import("epub-gen-memory/bundle");` : "export const loadEpub: (() => Promise<unknown>) | null = null;"}
|
|
840
896
|
`;
|
|
841
897
|
var searchClientTemplate = (config) => {
|
|
842
898
|
const { provider } = config.search;
|
|
@@ -973,18 +1029,29 @@ const TYPES: Record<string, string> = {
|
|
|
973
1029
|
".ico": "image/x-icon",
|
|
974
1030
|
".jpeg": "image/jpeg",
|
|
975
1031
|
".jpg": "image/jpeg",
|
|
1032
|
+
".mov": "video/quicktime",
|
|
1033
|
+
".mp4": "video/mp4",
|
|
1034
|
+
".ogv": "video/ogg",
|
|
976
1035
|
".png": "image/png",
|
|
977
1036
|
".svg": "image/svg+xml",
|
|
978
1037
|
".tiff": "image/tiff",
|
|
1038
|
+
".webm": "video/webm",
|
|
979
1039
|
".webp": "image/webp",
|
|
980
1040
|
};
|
|
981
1041
|
|
|
1042
|
+
const extensionOf = (path: string): string =>
|
|
1043
|
+
path.slice(path.lastIndexOf(".")).toLowerCase();
|
|
1044
|
+
|
|
982
1045
|
const contentType = (path: string): string =>
|
|
983
|
-
TYPES[
|
|
984
|
-
|
|
1046
|
+
TYPES[extensionOf(path)] ?? "application/octet-stream";
|
|
1047
|
+
|
|
1048
|
+
// A source downloads only images and videos; anything else in the staged
|
|
1049
|
+
// directory (a page an older build saved under its URL's extension) is never
|
|
1050
|
+
// published from the docs origin.
|
|
1051
|
+
const isMedia = (path: string): boolean => Object.hasOwn(TYPES, extensionOf(path));
|
|
985
1052
|
|
|
986
1053
|
const stagedParams = async (): Promise<string[]> => {
|
|
987
|
-
if (!existsSync(STAGED_DIR)) {
|
|
1054
|
+
if (STAGED_DIR === null || !existsSync(STAGED_DIR)) {
|
|
988
1055
|
return [];
|
|
989
1056
|
}
|
|
990
1057
|
const entries = await readdir(STAGED_DIR, {
|
|
@@ -992,7 +1059,7 @@ const stagedParams = async (): Promise<string[]> => {
|
|
|
992
1059
|
withFileTypes: true,
|
|
993
1060
|
});
|
|
994
1061
|
return entries
|
|
995
|
-
.filter((entry) => entry.isFile())
|
|
1062
|
+
.filter((entry) => entry.isFile() && isMedia(entry.name))
|
|
996
1063
|
.map((entry) =>
|
|
997
1064
|
relative(STAGED_DIR, join(entry.parentPath, entry.name)).replaceAll(
|
|
998
1065
|
"\\\\",
|
|
@@ -1013,6 +1080,9 @@ const resolveAsset = (asset: string): string | null => {
|
|
|
1013
1080
|
if (asset.startsWith("content/")) {
|
|
1014
1081
|
return files[asset.slice("content/".length)] ?? null;
|
|
1015
1082
|
}
|
|
1083
|
+
if (STAGED_DIR === null) {
|
|
1084
|
+
return null;
|
|
1085
|
+
}
|
|
1016
1086
|
const abs = resolve(STAGED_DIR, asset);
|
|
1017
1087
|
// Traversal guard: the dev server renders on demand, so the param is
|
|
1018
1088
|
// attacker-controlled there — never step outside the staged directory.
|
|
@@ -1022,7 +1092,7 @@ const resolveAsset = (asset: string): string | null => {
|
|
|
1022
1092
|
// asset — and a bare prefix also admits a sibling directory that merely
|
|
1023
1093
|
// shares the name.
|
|
1024
1094
|
const rel = relative(STAGED_DIR, abs);
|
|
1025
|
-
if (rel === "" || rel.startsWith("..") || isAbsolute(rel)) {
|
|
1095
|
+
if (rel === "" || rel.startsWith("..") || isAbsolute(rel) || !isMedia(rel)) {
|
|
1026
1096
|
return null;
|
|
1027
1097
|
}
|
|
1028
1098
|
return existsSync(abs) ? abs : null;
|
|
@@ -1036,11 +1106,12 @@ export const GET: APIRoute = async ({ params }) => {
|
|
|
1036
1106
|
const body = await readFile(path);
|
|
1037
1107
|
const type = contentType(path);
|
|
1038
1108
|
// An SVG opened directly is a document that can run script; the sandbox
|
|
1039
|
-
// keeps an uploaded one inert on the docs origin.
|
|
1040
|
-
//
|
|
1109
|
+
// keeps an uploaded one inert on the docs origin. This endpoint
|
|
1110
|
+
// prerenders, so these headers reach dev only: a build serves the files
|
|
1111
|
+
// with the same headers from its host's rules (see deploy/headers.ts).
|
|
1041
1112
|
const headers: Record<string, string> =
|
|
1042
1113
|
type === "image/svg+xml"
|
|
1043
|
-
? {
|
|
1114
|
+
? { ...${JSON.stringify(SVG_ASSET_HEADERS)}, "Content-Type": type }
|
|
1044
1115
|
: { "Content-Type": type };
|
|
1045
1116
|
return new Response(new Uint8Array(body), { headers });
|
|
1046
1117
|
};
|
|
@@ -1100,7 +1171,7 @@ export function GET({ props }: { props: { section: string } }) {
|
|
|
1100
1171
|
var navFragmentTemplate = () => `---
|
|
1101
1172
|
// Generated by Blume. Do not edit.
|
|
1102
1173
|
import NavTree from "blume/components/layout/NavTree.astro";
|
|
1103
|
-
import {
|
|
1174
|
+
import { withMountedBase } from "blume/components/islands/base-path.ts";
|
|
1104
1175
|
import {
|
|
1105
1176
|
hiddenDefaultLocale,
|
|
1106
1177
|
navGroupIds,
|
|
@@ -1139,7 +1210,7 @@ if (!(variant && node && node.kind === "group")) {
|
|
|
1139
1210
|
}
|
|
1140
1211
|
const strings =
|
|
1141
1212
|
locale === "default" ? data.ui.nav : (data.uiByLocale[locale] ?? data.ui).nav;
|
|
1142
|
-
const fragmentBase =
|
|
1213
|
+
const fragmentBase = withMountedBase(\`/blume-nav/\${version}/\${locale}\`);
|
|
1143
1214
|
---
|
|
1144
1215
|
|
|
1145
1216
|
<NavTree
|
|
@@ -1155,7 +1226,7 @@ const fragmentBase = withBase(\`/blume-nav/\${version}/\${locale}\`);
|
|
|
1155
1226
|
`;
|
|
1156
1227
|
var ogEndpointTemplate = (customRoutes = [], og = {}, includeChangelog = false) => `// Generated by Blume. Do not edit.
|
|
1157
1228
|
import { cachedOgImage } from "blume/og";
|
|
1158
|
-
import type { OgCache, OgFont, OgFontFamilies } from "blume/og";
|
|
1229
|
+
import type { OgCache, OgFont, OgFontFamilies, OgGoogleFont } from "blume/og";
|
|
1159
1230
|
import data from "blume:data";
|
|
1160
1231
|
|
|
1161
1232
|
export const prerender = true;
|
|
@@ -1171,6 +1242,9 @@ const customRoutes: { slug: string; title: string }[] = ${JSON.stringify(customR
|
|
|
1171
1242
|
// data that pages serialize into HTML.
|
|
1172
1243
|
const fonts: OgFont[] = ${JSON.stringify(og.fonts ?? [])};
|
|
1173
1244
|
const families: OgFontFamilies | undefined = ${og.families ? JSON.stringify(og.families) : "undefined"};
|
|
1245
|
+
// Script fallbacks (Noto families, the configured locales' first). A card
|
|
1246
|
+
// fetches them only when its text has a glyph Takumi's built-in font lacks.
|
|
1247
|
+
const fallbacks: OgGoogleFont[] = ${JSON.stringify(og.fallbacks ?? [])};
|
|
1174
1248
|
|
|
1175
1249
|
// Rendered cards are kept on disk between builds, keyed by everything that
|
|
1176
1250
|
// decides their pixels, so a rebuild renders only the cards whose title,
|
|
@@ -1237,6 +1311,7 @@ export async function GET({ props }: { props: CardProps }) {
|
|
|
1237
1311
|
accent: data.config.og.palette?.accent ?? data.config.theme.accent.light,
|
|
1238
1312
|
brand: data.config.title,
|
|
1239
1313
|
description: props.description ?? data.config.og.description,
|
|
1314
|
+
fallbacks,
|
|
1240
1315
|
families,
|
|
1241
1316
|
fonts,
|
|
1242
1317
|
logo: data.config.og.logo,
|
|
@@ -1389,8 +1464,8 @@ var catchAllPageTemplate = (options) => {
|
|
|
1389
1464
|
import { getEntry, render } from "astro:content";
|
|
1390
1465
|
import type { CollectionKey } from "astro:content";
|
|
1391
1466
|
import RootLayout from "blume/components/layout/RootLayout.astro";
|
|
1392
|
-
import { withBase } from "blume/components/islands/base-path.ts";
|
|
1393
|
-
import {
|
|
1467
|
+
import { withBase, withMountedBase } from "blume/components/islands/base-path.ts";
|
|
1468
|
+
import { mountBasePath, stripBasePath } from "blume/core/base-path.ts";
|
|
1394
1469
|
import { resolveSlot } from "blume/components/layout/overrides.ts";
|
|
1395
1470
|
${componentImports}
|
|
1396
1471
|
import data from "blume:data";
|
|
@@ -1455,12 +1530,16 @@ const base = data.config.site ? data.config.site.replace(/\\/$/, "") : null;
|
|
|
1455
1530
|
const ogPath = data.config.og.enabled
|
|
1456
1531
|
? encodeURI(\`/og/\${route === "/" ? "index" : route.slice(1)}.png\`)
|
|
1457
1532
|
: null;
|
|
1458
|
-
const ogRel = seo.image ?? ogPath;
|
|
1459
1533
|
// Absolute URLs also carry the deployment base (the page is served under it):
|
|
1460
1534
|
// \`site + base + path\`. Only absolutize root-relative paths: \`seo.image\` may be
|
|
1461
|
-
// an external URL, which passes through verbatim (mirrors PageLayout).
|
|
1462
|
-
|
|
1463
|
-
|
|
1535
|
+
// an external URL, which passes through verbatim (mirrors PageLayout). An
|
|
1536
|
+
// authored \`seo.image\` keeps a base written by hand; the generated card is
|
|
1537
|
+
// always mounted under it.
|
|
1538
|
+
const absoluteOg = (path: string, based: (path: string) => string) =>
|
|
1539
|
+
base && path.startsWith("/") ? \`\${base}\${based(path)}\` : path;
|
|
1540
|
+
const ogImage = seo.image
|
|
1541
|
+
? absoluteOg(seo.image, withBase)
|
|
1542
|
+
: ogPath && absoluteOg(ogPath, withMountedBase);
|
|
1464
1543
|
// Blume's generated card has known dimensions the layout can declare; a user's
|
|
1465
1544
|
// \`seo.image\` could be any size or format, so it gets none.
|
|
1466
1545
|
const ogGenerated = !seo.image && Boolean(ogPath);
|
|
@@ -1469,7 +1548,7 @@ const ogGenerated = !seo.image && Boolean(ogPath);
|
|
|
1469
1548
|
// itself (a guest post crediting its own author) over the configured default.
|
|
1470
1549
|
const x = { ...data.config.x, ...(seo.x?.creator ? { creator: seo.x.creator } : {}) };
|
|
1471
1550
|
|
|
1472
|
-
const basedRoute =
|
|
1551
|
+
const basedRoute = withMountedBase(route);
|
|
1473
1552
|
|
|
1474
1553
|
// Locale resolution. With i18n on, pick the active locale's nav + dictionary,
|
|
1475
1554
|
// build hreflang alternates, and derive the language-switcher targets.
|
|
@@ -1517,7 +1596,7 @@ const contentDir = i18n
|
|
|
1517
1596
|
: "ltr";
|
|
1518
1597
|
// The root route keeps its trailing slash (\`https://site/\`) so canonical and
|
|
1519
1598
|
// hreflang URLs byte-match the sitemap's <loc> for the home page.
|
|
1520
|
-
const absolute = (path: string) => base +
|
|
1599
|
+
const absolute = (path: string) => base + withMountedBase(path);
|
|
1521
1600
|
|
|
1522
1601
|
// A fallback page renders the fallback locale's page at this locale's URL, so
|
|
1523
1602
|
// its canonical names the page it copies, and search engines never rank the
|
|
@@ -1562,7 +1641,7 @@ const xDefault = defaultAlt && base ? absolute(defaultAlt.path) : null;
|
|
|
1562
1641
|
// carries sits *after* the base (\`/docs/ja/guide\`), while \`localePrefix\` is
|
|
1563
1642
|
// base-less (\`/ja\`). Stripping and re-adding a locale therefore happen in
|
|
1564
1643
|
// base-less space, with the base re-applied at the end — the same
|
|
1565
|
-
// \`
|
|
1644
|
+
// \`mountBasePath(basePath, localizeRoute(...))\` composition the manifest uses to
|
|
1566
1645
|
// build every real route. Done in based space, \`stripLocale\` matches nothing
|
|
1567
1646
|
// and \`localizeRoute\` prepends a second prefix (\`/ja/docs/ja/guide\`). Only a
|
|
1568
1647
|
// switcher entry for a locale with no real translation reaches this fallback:
|
|
@@ -1570,7 +1649,7 @@ const xDefault = defaultAlt && base ? absolute(defaultAlt.path) : null;
|
|
|
1570
1649
|
// generated reference (which has no \`alternates\` at all) for every locale
|
|
1571
1650
|
// but its own.
|
|
1572
1651
|
const mountLocalized = (logical: string, codeArg: string) =>
|
|
1573
|
-
|
|
1652
|
+
mountBasePath(data.config.basePath, localizeRoute(logical, codeArg));
|
|
1574
1653
|
const logicalRoute = i18n
|
|
1575
1654
|
? stripLocale(stripBasePath(data.config.basePath, route), locale)
|
|
1576
1655
|
: route;
|
|
@@ -1599,7 +1678,7 @@ const versionRootFor = (id: string) => {
|
|
|
1599
1678
|
const logical = id ? \`/\${id}\` : "/";
|
|
1600
1679
|
return i18n
|
|
1601
1680
|
? mountLocalized(logical, locale)
|
|
1602
|
-
:
|
|
1681
|
+
: mountBasePath(data.config.basePath, logical);
|
|
1603
1682
|
};
|
|
1604
1683
|
const samePageSwitch = versionsConfig
|
|
1605
1684
|
? versionsConfig.switcher.redirect === "same-page"
|
|
@@ -1697,7 +1776,7 @@ const LayoutComponent = resolveSlot(layoutOverrides.Layout, RootLayout);
|
|
|
1697
1776
|
feedback={data.config.feedback}
|
|
1698
1777
|
exportPdf={${options.exportPdf}}
|
|
1699
1778
|
exportEpub={${options.exportEpub}}${options.navFragments ? `
|
|
1700
|
-
navFragmentBase={
|
|
1779
|
+
navFragmentBase={withMountedBase(\`/blume-nav/\${version || "current"}/\${i18n && localePrefix(locale) ? locale : "default"}\`)}` : ""}
|
|
1701
1780
|
openInChat={data.config.openInChat}
|
|
1702
1781
|
feeds={data.feeds}
|
|
1703
1782
|
discovery={data.config.discovery}
|
|
@@ -1725,7 +1804,7 @@ var changelogIndexTemplate = (options) => {
|
|
|
1725
1804
|
// Generated by Blume. Do not edit.
|
|
1726
1805
|
import { getCollection } from "astro:content";
|
|
1727
1806
|
import RootLayout from "blume/components/layout/RootLayout.astro";
|
|
1728
|
-
import {
|
|
1807
|
+
import { withMountedBase } from "blume/components/islands/base-path.ts";
|
|
1729
1808
|
import { resolveSlot } from "blume/components/layout/overrides.ts";
|
|
1730
1809
|
import { resolveDateFormatOptions } from "blume/core/date-format.ts";
|
|
1731
1810
|
import { layoutOverrides } from "../generated/components.ts";
|
|
@@ -1824,7 +1903,7 @@ const items = changelogEntries.map((entry) => {
|
|
|
1824
1903
|
return {
|
|
1825
1904
|
date: date ? formatRowDate(date) : null,
|
|
1826
1905
|
dateTime: date ? date.toISOString().slice(0, 10) : null,
|
|
1827
|
-
href: route ?
|
|
1906
|
+
href: route ? withMountedBase(route) : null,
|
|
1828
1907
|
id: slugify(label),
|
|
1829
1908
|
label,
|
|
1830
1909
|
tag: entry.data.changelog?.category ?? null,
|
|
@@ -1860,14 +1939,14 @@ for (const item of items) {
|
|
|
1860
1939
|
|
|
1861
1940
|
const base = data.config.site ? data.config.site.replace(/\\/$/, "") : null;
|
|
1862
1941
|
// The canonical URL carries the deployment base (the page is served under it),
|
|
1863
|
-
// matching how the catch-all canonicalizes via \`
|
|
1864
|
-
const basedRoute =
|
|
1942
|
+
// matching how the catch-all canonicalizes via \`withMountedBase(route)\`.
|
|
1943
|
+
const basedRoute = withMountedBase("/changelog");
|
|
1865
1944
|
const canonical = base ? base + basedRoute : null;
|
|
1866
1945
|
|
|
1867
1946
|
// The generated OG card for this route (the /og endpoint emits it alongside
|
|
1868
1947
|
// the content-route cards), absolutized like the catch-all's so crawlers get
|
|
1869
1948
|
// a full URL when the site is known.
|
|
1870
|
-
const ogPath = data.config.og.enabled ?
|
|
1949
|
+
const ogPath = data.config.og.enabled ? withMountedBase("/og/changelog.png") : null;
|
|
1871
1950
|
const ogImage = ogPath && base ? base + ogPath : ogPath;
|
|
1872
1951
|
|
|
1873
1952
|
// The page chrome (h1, title, description) comes from the translatable
|
|
@@ -1979,7 +2058,8 @@ var notFoundPageTemplate = () => `---
|
|
|
1979
2058
|
// Generated by Blume. Do not edit. Override by adding \`pages/404.astro\`.
|
|
1980
2059
|
import Icon from "blume/components/Icon.astro";
|
|
1981
2060
|
import PageLayout from "blume/components/layout/PageLayout.astro";
|
|
1982
|
-
import {
|
|
2061
|
+
import { withMountedBase } from "blume/components/islands/base-path.ts";
|
|
2062
|
+
import { mountBasePath } from "blume/core/base-path.ts";
|
|
1983
2063
|
import data from "blume:data";
|
|
1984
2064
|
|
|
1985
2065
|
export const prerender = true;
|
|
@@ -2003,22 +2083,27 @@ const htmlLang = i18n ? i18n.defaultLocale : "en";
|
|
|
2003
2083
|
// their resolved target when the section has no index page of its own.
|
|
2004
2084
|
const suggestions = [
|
|
2005
2085
|
...data.navigation.tabs.map((tab) => ({
|
|
2006
|
-
href:
|
|
2086
|
+
href: withMountedBase(tab.href ?? tab.path),
|
|
2007
2087
|
label: tab.label,
|
|
2008
2088
|
})),
|
|
2009
2089
|
...(data.config.discovery.sitemap
|
|
2010
|
-
? [{ href:
|
|
2090
|
+
? [{ href: withMountedBase("/sitemap.xml"), label: nf.sitemap }]
|
|
2011
2091
|
: []),
|
|
2012
2092
|
...(data.config.discovery.llmsTxt
|
|
2013
|
-
? [{ href:
|
|
2093
|
+
? [{ href: withMountedBase("/llms.txt"), label: nf.llms }]
|
|
2014
2094
|
: []),
|
|
2015
2095
|
];
|
|
2016
2096
|
|
|
2017
2097
|
// Every host serves this one page for any missing URL, so a reader who
|
|
2018
2098
|
// mistyped \`/ar/…\` would get the default locale's message. The other locales'
|
|
2019
2099
|
// copy rides along, and the script below swaps it in when the URL's first
|
|
2020
|
-
// segment names one of them — the message, its language
|
|
2021
|
-
// tab title, and the home link (to that locale's root).
|
|
2100
|
+
// segment past the site's base names one of them — the message, its language
|
|
2101
|
+
// and direction, the tab title, and the home link (to that locale's root).
|
|
2102
|
+
// Localized routes sit under both bases (\`{deployment.base}/{basePath}/ar/…\`),
|
|
2103
|
+
// so the script strips the two together, trailing slash included.
|
|
2104
|
+
const { basePath } = data.config;
|
|
2105
|
+
const siteRoot = withMountedBase(mountBasePath(basePath, "/"));
|
|
2106
|
+
const localeBase = siteRoot.endsWith("/") ? siteRoot : siteRoot + "/";
|
|
2022
2107
|
const localized = Object.fromEntries(
|
|
2023
2108
|
(i18n?.locales ?? [])
|
|
2024
2109
|
.filter((l) => l.code !== i18n?.defaultLocale && data.uiByLocale[l.code])
|
|
@@ -2030,7 +2115,7 @@ const localized = Object.fromEntries(
|
|
|
2030
2115
|
description: strings.description,
|
|
2031
2116
|
dir: l.dir ?? "ltr",
|
|
2032
2117
|
home: strings.home,
|
|
2033
|
-
homeHref:
|
|
2118
|
+
homeHref: withMountedBase(mountBasePath(basePath, "/" + l.code)),
|
|
2034
2119
|
suggestions: strings.suggestions,
|
|
2035
2120
|
title: strings.title,
|
|
2036
2121
|
},
|
|
@@ -2059,7 +2144,7 @@ const localizedJson = JSON.stringify(localized).replaceAll("<", "\\\\u003c");
|
|
|
2059
2144
|
>
|
|
2060
2145
|
<div
|
|
2061
2146
|
class="mx-auto grid w-full max-w-5xl gap-12 px-6 py-20 sm:py-28 md:grid-cols-[3fr_2fr] md:gap-16 lg:gap-24 lg:py-36"
|
|
2062
|
-
data-base={
|
|
2147
|
+
data-base={localeBase}
|
|
2063
2148
|
data-blume-not-found
|
|
2064
2149
|
>
|
|
2065
2150
|
<div class="flex flex-col items-start">
|
|
@@ -2080,7 +2165,7 @@ const localizedJson = JSON.stringify(localized).replaceAll("<", "\\\\u003c");
|
|
|
2080
2165
|
<a
|
|
2081
2166
|
class="mt-8 inline-flex items-center gap-1.5 rounded-full bg-accent py-2 pe-4 ps-3.5 text-sm font-medium text-accent-foreground transition-opacity hover:opacity-90"
|
|
2082
2167
|
data-nf-home
|
|
2083
|
-
href={
|
|
2168
|
+
href={withMountedBase("/")}
|
|
2084
2169
|
>
|
|
2085
2170
|
<Icon class="rtl:-scale-x-100" name="arrow-left" size={14} />
|
|
2086
2171
|
<span data-nf="home">{nf.home}</span>
|
|
@@ -2147,7 +2232,7 @@ const localizedJson = JSON.stringify(localized).replaceAll("<", "\\\\u003c");
|
|
|
2147
2232
|
</PageLayout>
|
|
2148
2233
|
`;
|
|
2149
2234
|
var notFoundMarkdownTemplate = () => `// Generated by Blume. Do not edit. Override by adding \`pages/404.astro\`.
|
|
2150
|
-
import {
|
|
2235
|
+
import { withMountedBase } from "blume/components/islands/base-path.ts";
|
|
2151
2236
|
import { absoluteUrl } from "blume/core/site-url.ts";
|
|
2152
2237
|
import data from "blume:data";
|
|
2153
2238
|
|
|
@@ -2158,7 +2243,7 @@ const nf = data.ui.notFound;
|
|
|
2158
2243
|
// Absolute for internal routes when the site is known; an external tab href
|
|
2159
2244
|
// passes through untouched.
|
|
2160
2245
|
const href = (path: string): string => {
|
|
2161
|
-
const based =
|
|
2246
|
+
const based = withMountedBase(path);
|
|
2162
2247
|
return data.config.site && based.startsWith("/") && !based.startsWith("//")
|
|
2163
2248
|
? absoluteUrl(data.config.site, based)
|
|
2164
2249
|
: based;
|
|
@@ -2206,7 +2291,7 @@ export function GET() {
|
|
|
2206
2291
|
`;
|
|
2207
2292
|
var notFoundJsonTemplate = () => `// Generated by Blume. Do not edit. Override by adding \`pages/404.astro\`.
|
|
2208
2293
|
import { problem } from "blume/ai/api/problem.ts";
|
|
2209
|
-
import {
|
|
2294
|
+
import { withMountedBase } from "blume/components/islands/base-path.ts";
|
|
2210
2295
|
import { absoluteUrl } from "blume/core/site-url.ts";
|
|
2211
2296
|
import data from "blume:data";
|
|
2212
2297
|
|
|
@@ -2217,7 +2302,7 @@ const nf = data.ui.notFound;
|
|
|
2217
2302
|
// Absolute for internal routes when the site is known; an external tab href
|
|
2218
2303
|
// passes through untouched.
|
|
2219
2304
|
const href = (path: string): string => {
|
|
2220
|
-
const based =
|
|
2305
|
+
const based = withMountedBase(path);
|
|
2221
2306
|
return data.config.site && based.startsWith("/") && !based.startsWith("//")
|
|
2222
2307
|
? absoluteUrl(data.config.site, based)
|
|
2223
2308
|
: based;
|
|
@@ -2379,11 +2464,20 @@ const Example = entry.Component;
|
|
|
2379
2464
|
root.dataset.theme = theme;
|
|
2380
2465
|
root.classList.toggle("dark", theme === "dark");
|
|
2381
2466
|
};
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2467
|
+
// Blocked storage (a sandboxed or privacy-locked frame) throws on
|
|
2468
|
+
// access; it falls through to the OS setting like an unset preference.
|
|
2469
|
+
const stored = () => {
|
|
2470
|
+
let theme = null;
|
|
2471
|
+
try {
|
|
2472
|
+
theme = localStorage.getItem("blume-theme");
|
|
2473
|
+
} catch {}
|
|
2474
|
+
return (
|
|
2475
|
+
theme ??
|
|
2476
|
+
(matchMedia("(prefers-color-scheme: dark)").matches
|
|
2477
|
+
? "dark"
|
|
2478
|
+
: "light")
|
|
2479
|
+
);
|
|
2480
|
+
};
|
|
2387
2481
|
try {
|
|
2388
2482
|
const host = window.parent.document.documentElement;
|
|
2389
2483
|
apply(host.dataset.theme ?? stored());
|
|
@@ -2465,7 +2559,7 @@ var runtimeTsconfigTemplate = () => `${JSON.stringify({
|
|
|
2465
2559
|
}, null, 2)}
|
|
2466
2560
|
`;
|
|
2467
2561
|
|
|
2468
|
-
export { planComponentSlots, publishRuntimeModules, runtimeDependencies, EJECTED_CONFIG_HEADER, astroConfigTemplate, stagedContentDir, contentConfigTemplate, askEndpointTemplate, askComponentTemplate, searchEndpointTemplate, featuresTemplate, searchClientTemplate, mixedbreadSearchEndpointTemplate, rawMarkdownEndpointTemplate, contentAssetsEndpointTemplate, mcpPageFile, mcpEndpointTemplate, playgroundProxyTemplate, staticJsonEndpointTemplate, rssEndpointTemplate, navFragmentTemplate, ogEndpointTemplate, scalarReferenceTemplate, catchAllPageTemplate, changelogIndexTemplate, notFoundPageTemplate, notFoundMarkdownTemplate, notFoundJsonTemplate, apiPagesIndexTemplate, apiPageTemplate, apiNavigationTemplate, apiSearchTemplate, apiNotFoundTemplate, exampleSlug, exampleWrapperTemplate, examplesRouteBase, exampleMapTemplate, examplesPageTemplate, runtimePackageTemplate, runtimeTsconfigTemplate };
|
|
2562
|
+
export { deployOutputDir, deployStaticDir, surfaceAdapterOutput, planComponentSlots, publishRuntimeModules, runtimeDependencies, EJECTED_CONFIG_HEADER, astroConfigTemplate, stagedContentDir, contentConfigTemplate, askEndpointTemplate, askComponentTemplate, searchEndpointTemplate, featuresTemplate, searchClientTemplate, mixedbreadSearchEndpointTemplate, rawMarkdownEndpointTemplate, contentAssetsEndpointTemplate, mcpPageFile, mcpEndpointTemplate, playgroundProxyTemplate, staticJsonEndpointTemplate, rssEndpointTemplate, navFragmentTemplate, ogEndpointTemplate, scalarReferenceTemplate, catchAllPageTemplate, changelogIndexTemplate, notFoundPageTemplate, notFoundMarkdownTemplate, notFoundJsonTemplate, apiPagesIndexTemplate, apiPageTemplate, apiNavigationTemplate, apiSearchTemplate, apiNotFoundTemplate, exampleSlug, exampleWrapperTemplate, examplesRouteBase, exampleMapTemplate, examplesPageTemplate, runtimePackageTemplate, runtimeTsconfigTemplate };
|
|
2469
2563
|
|
|
2470
|
-
//# debugId=
|
|
2471
|
-
//# sourceMappingURL=chunk-
|
|
2564
|
+
//# debugId=D53DB1B1EA2E6A3764756E2164756E21
|
|
2565
|
+
//# sourceMappingURL=chunk-5m5nmvyq.js.map
|