blume 1.6.6 → 1.7.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cli/{chunk-nyqzjdhj.js → chunk-0qhq7b8q.js} +5 -5
  3. package/dist/cli/{chunk-cnvm6k3e.js → chunk-18tjv4f7.js} +11 -11
  4. package/dist/cli/{chunk-62qsssnh.js → chunk-5d4q7121.js} +401 -145
  5. package/dist/cli/chunk-5d4q7121.js.map +40 -0
  6. package/dist/cli/{chunk-ag1zyr5x.js → chunk-9qs6acpw.js} +11 -11
  7. package/dist/cli/{chunk-aerwpe14.js → chunk-agy5rzxy.js} +98 -15
  8. package/dist/cli/chunk-agy5rzxy.js.map +15 -0
  9. package/dist/cli/{chunk-x1vrdjyk.js → chunk-cfw6x4rm.js} +5 -5
  10. package/dist/cli/{chunk-bawgnt8x.js → chunk-ckh3a410.js} +3 -3
  11. package/dist/cli/{chunk-j00ezcg5.js → chunk-drke6t0h.js} +9 -9
  12. package/dist/cli/{chunk-3k0kzs6d.js → chunk-j6pxe0dt.js} +2 -2
  13. package/dist/cli/{chunk-n0y172hf.js → chunk-jk1zwka1.js} +4 -4
  14. package/dist/cli/{chunk-f75cqye8.js → chunk-jxkxjsc1.js} +10 -10
  15. package/dist/cli/{chunk-s4k1pnvf.js → chunk-kwx90v78.js} +11 -11
  16. package/dist/cli/{chunk-9sh49q0h.js → chunk-n0nyat6g.js} +2 -2
  17. package/dist/cli/{chunk-wkq5tbtq.js → chunk-qq9nm3qd.js} +3 -3
  18. package/dist/cli/{chunk-etsqspj6.js → chunk-s102bysw.js} +2 -2
  19. package/dist/cli/{chunk-wb067mv3.js → chunk-s5dsk8bj.js} +18 -7
  20. package/dist/cli/chunk-s5dsk8bj.js.map +13 -0
  21. package/dist/cli/{chunk-m3p3wahd.js → chunk-tnskyrej.js} +4 -4
  22. package/dist/cli/{chunk-vv237fp3.js → chunk-v2ymm99c.js} +26 -12
  23. package/dist/cli/{chunk-vv237fp3.js.map → chunk-v2ymm99c.js.map} +3 -3
  24. package/dist/cli/{chunk-5yvt556e.js → chunk-v5mm027v.js} +2 -2
  25. package/dist/cli/{chunk-vv3f8mb6.js → chunk-xv91q4nm.js} +24 -24
  26. package/dist/cli/{chunk-vv3f8mb6.js.map → chunk-xv91q4nm.js.map} +3 -3
  27. package/dist/cli/{chunk-0ewz4trd.js → chunk-y3g15rvv.js} +6 -6
  28. package/dist/cli/{chunk-tc89yh2r.js → chunk-ye9zdkgv.js} +2 -2
  29. package/dist/cli/{chunk-n4qjabmt.js → chunk-ynacq3ev.js} +4 -4
  30. package/dist/cli/{chunk-s4jn7f1q.js → chunk-zr3ygrq3.js} +2 -2
  31. package/dist/cli/index.js +13 -13
  32. package/dist/types/components/layout/nav-utils.d.ts +33 -1
  33. package/dist/types/theme/fonts.d.ts +22 -22
  34. package/docs/02-deployment.mdx +21 -0
  35. package/docs/content/navigation.mdx +2 -0
  36. package/docs/content/syntax.mdx +1 -1
  37. package/docs/discoverability/open-graph.mdx +4 -0
  38. package/package.json +1 -1
  39. package/src/astro/generate.ts +141 -5
  40. package/src/astro/integration.ts +12 -1
  41. package/src/astro/module-types.ts +9 -0
  42. package/src/astro/templates.ts +171 -11
  43. package/src/cli/commands/build.ts +28 -0
  44. package/src/components/Icon.astro +24 -0
  45. package/src/components/icon-sprite-middleware.ts +41 -0
  46. package/src/components/icon-sprite.ts +93 -0
  47. package/src/components/layout/IconSprite.astro +11 -0
  48. package/src/components/layout/NavTree.astro +156 -188
  49. package/src/components/layout/NavTreeCache.astro +45 -0
  50. package/src/components/layout/NavTreeScript.astro +256 -0
  51. package/src/components/layout/PageActions.astro +11 -5
  52. package/src/components/layout/PageLayout.astro +7 -0
  53. package/src/components/layout/ReferenceLayout.astro +7 -0
  54. package/src/components/layout/RootLayout.astro +30 -2
  55. package/src/components/layout/nav-cache.ts +49 -0
  56. package/src/components/layout/nav-utils.ts +69 -1
  57. package/src/markdown/language-icon.ts +64 -20
  58. package/src/markdown/mermaid.ts +11 -0
  59. package/src/og/cache.ts +236 -0
  60. package/src/og/card.ts +12 -4
  61. package/src/og/index.ts +8 -1
  62. package/src/registry/eject.ts +23 -8
  63. package/src/theme/entry.ts +41 -7
  64. package/src/theme/fonts.ts +30 -23
  65. package/dist/cli/chunk-62qsssnh.js.map +0 -36
  66. package/dist/cli/chunk-aerwpe14.js.map +0 -15
  67. package/dist/cli/chunk-wb067mv3.js.map +0 -13
  68. /package/dist/cli/{chunk-nyqzjdhj.js.map → chunk-0qhq7b8q.js.map} +0 -0
  69. /package/dist/cli/{chunk-cnvm6k3e.js.map → chunk-18tjv4f7.js.map} +0 -0
  70. /package/dist/cli/{chunk-ag1zyr5x.js.map → chunk-9qs6acpw.js.map} +0 -0
  71. /package/dist/cli/{chunk-x1vrdjyk.js.map → chunk-cfw6x4rm.js.map} +0 -0
  72. /package/dist/cli/{chunk-bawgnt8x.js.map → chunk-ckh3a410.js.map} +0 -0
  73. /package/dist/cli/{chunk-j00ezcg5.js.map → chunk-drke6t0h.js.map} +0 -0
  74. /package/dist/cli/{chunk-3k0kzs6d.js.map → chunk-j6pxe0dt.js.map} +0 -0
  75. /package/dist/cli/{chunk-n0y172hf.js.map → chunk-jk1zwka1.js.map} +0 -0
  76. /package/dist/cli/{chunk-f75cqye8.js.map → chunk-jxkxjsc1.js.map} +0 -0
  77. /package/dist/cli/{chunk-s4k1pnvf.js.map → chunk-kwx90v78.js.map} +0 -0
  78. /package/dist/cli/{chunk-9sh49q0h.js.map → chunk-n0nyat6g.js.map} +0 -0
  79. /package/dist/cli/{chunk-wkq5tbtq.js.map → chunk-qq9nm3qd.js.map} +0 -0
  80. /package/dist/cli/{chunk-etsqspj6.js.map → chunk-s102bysw.js.map} +0 -0
  81. /package/dist/cli/{chunk-m3p3wahd.js.map → chunk-tnskyrej.js.map} +0 -0
  82. /package/dist/cli/{chunk-5yvt556e.js.map → chunk-v5mm027v.js.map} +0 -0
  83. /package/dist/cli/{chunk-0ewz4trd.js.map → chunk-y3g15rvv.js.map} +0 -0
  84. /package/dist/cli/{chunk-tc89yh2r.js.map → chunk-ye9zdkgv.js.map} +0 -0
  85. /package/dist/cli/{chunk-n4qjabmt.js.map → chunk-ynacq3ev.js.map} +0 -0
  86. /package/dist/cli/{chunk-s4jn7f1q.js.map → chunk-zr3ygrq3.js.map} +0 -0
@@ -7,37 +7,37 @@ import {
7
7
  } from "./chunk-bcy492zc.js";
8
8
  import {
9
9
  prepareProject
10
- } from "./chunk-nyqzjdhj.js";
11
- import"./chunk-9sh49q0h.js";
10
+ } from "./chunk-0qhq7b8q.js";
11
+ import"./chunk-n0nyat6g.js";
12
12
  import"./chunk-btfr9yvw.js";
13
13
  import {
14
14
  DevLockHeldError,
15
15
  acquireDevLock,
16
16
  describeDevLock,
17
17
  updateDevLockPort
18
- } from "./chunk-tc89yh2r.js";
18
+ } from "./chunk-ye9zdkgv.js";
19
19
  import {
20
20
  generateRuntime,
21
21
  refreshBlumeContent,
22
22
  showBlumeErrorOverlay
23
- } from "./chunk-62qsssnh.js";
24
- import"./chunk-n4qjabmt.js";
23
+ } from "./chunk-5d4q7121.js";
24
+ import"./chunk-ynacq3ev.js";
25
25
  import"./chunk-pxj10x8y.js";
26
26
  import"./chunk-sbdqrjbb.js";
27
- import"./chunk-5yvt556e.js";
27
+ import"./chunk-v5mm027v.js";
28
28
  import"./chunk-ev67ycx0.js";
29
29
  import"./chunk-vt8fgygt.js";
30
30
  import"./chunk-3r94j3tc.js";
31
- import"./chunk-aerwpe14.js";
32
- import"./chunk-3k0kzs6d.js";
31
+ import"./chunk-agy5rzxy.js";
32
+ import"./chunk-j6pxe0dt.js";
33
33
  import"./chunk-vxv4x1n8.js";
34
34
  import"./chunk-wd27zjcz.js";
35
35
  import {
36
36
  scanProject
37
- } from "./chunk-etsqspj6.js";
37
+ } from "./chunk-s102bysw.js";
38
38
  import {
39
39
  resolveRuntimeDir
40
- } from "./chunk-vv3f8mb6.js";
40
+ } from "./chunk-xv91q4nm.js";
41
41
  import"./chunk-27gtm2ym.js";
42
42
  import"./chunk-4xyggvgf.js";
43
43
  import"./chunk-6kzzpsx8.js";
@@ -173,4 +173,4 @@ export {
173
173
  };
174
174
 
175
175
  //# debugId=EE16C622AD2E2BB164756E2164756E21
176
- //# sourceMappingURL=chunk-ag1zyr5x.js.map
176
+ //# sourceMappingURL=chunk-9qs6acpw.js.map
@@ -3,19 +3,19 @@ import {
3
3
  API_CATALOG_PATH,
4
4
  OPENAPI_PATH,
5
5
  hasApiCatalog
6
- } from "./chunk-3k0kzs6d.js";
6
+ } from "./chunk-j6pxe0dt.js";
7
7
  import {
8
8
  searchProviderMeta
9
9
  } from "./chunk-wd27zjcz.js";
10
10
  import {
11
11
  BLUME_IGNORE_DIRS,
12
12
  TOC_HIDDEN_KEY
13
- } from "./chunk-etsqspj6.js";
13
+ } from "./chunk-s102bysw.js";
14
14
  import {
15
15
  buildFontEntries,
16
16
  fontLocaleCodes,
17
17
  hasScalarReferences
18
- } from "./chunk-vv3f8mb6.js";
18
+ } from "./chunk-xv91q4nm.js";
19
19
  import {
20
20
  normalizeBasePath,
21
21
  trimChar,
@@ -279,6 +279,7 @@ var resolveCloudflareAdapterArgs = (context) => {
279
279
  };
280
280
  var resolveSessionOption = (deployment) => deployment.output === "server" && deployment.adapter === "cloudflare" ? `
281
281
  session: false,` : "";
282
+ var astroFontWeights = (weights) => JSON.stringify(weights).replaceAll(/(?<min>\d+)\.\.(?<max>\d+)/gu, "$<min> $<max>");
282
283
  var astroConfigImportLine = (options) => {
283
284
  const names = ["defineConfig"];
284
285
  if (options.hasFonts) {
@@ -374,16 +375,17 @@ const blumeConfig = await loadBlumeConfig(resolve(dirname(fileURLToPath(import.m
374
375
  };
375
376
  var renderImageOption = (config) => config.image.domains.length > 0 || config.image.remotePatterns.length > 0 ? `
376
377
  image: ${JSON.stringify(config.image)},` : "";
378
+ var ALL_CLIENT_FEATURES = { epub: true, mermaid: true };
377
379
  var resolveOptimizeDeps = (options) => {
378
- const { context } = options;
380
+ const { context, features } = options;
379
381
  const optimizeDepsEntries = [
380
382
  ...context.pagesRoot ? [`${context.pagesRoot}/**/*.astro`] : [],
381
383
  `${context.root}/islands/**/*.{jsx,svelte,tsx,vue}`,
382
384
  ...[...new Set(Object.values(options.aliases ?? {}))].toSorted().map((dir) => `${dir}/**/*.{astro,jsx,svelte,tsx,vue}`)
383
385
  ];
384
386
  const optimizeDepsInclude = [
385
- "blume > mermaid",
386
- "blume > epub-gen-memory/bundle",
387
+ ...features.mermaid ? ["blume > mermaid"] : [],
388
+ ...features.epub ? ["blume > epub-gen-memory/bundle"] : [],
387
389
  ...options.needsReact && options.reactCompilerPath ? ["react/compiler-runtime"] : []
388
390
  ];
389
391
  return { optimizeDepsEntries, optimizeDepsInclude };
@@ -414,6 +416,8 @@ var astroConfigTemplate = (options) => {
414
416
  contentRoutes,
415
417
  examplesPath,
416
418
  examplesThemePath,
419
+ features = ALL_CLIENT_FEATURES,
420
+ featuresPath,
417
421
  generatedModulesDir,
418
422
  needsSvelte,
419
423
  needsVue,
@@ -431,6 +435,7 @@ var astroConfigTemplate = (options) => {
431
435
  const { optimizeDepsEntries, optimizeDepsInclude } = resolveOptimizeDeps({
432
436
  aliases: options.aliases,
433
437
  context,
438
+ features,
434
439
  needsReact,
435
440
  reactCompilerPath: options.reactCompilerPath
436
441
  });
@@ -484,7 +489,7 @@ var astroConfigTemplate = (options) => {
484
489
  isAbsolute(variant.src) ? variant.src : join2(context.root, variant.src)
485
490
  ]
486
491
  };
487
- }))} } }` : `{ provider: fontProviders.${font.provider}(), name: ${JSON.stringify(font.name)}, cssVariable: ${JSON.stringify(font.cssVariable)}, weights: ${JSON.stringify(font.weights)}, subsets: ${JSON.stringify(font.subsets)}, fallbacks: ${JSON.stringify(font.fallbacks)} }`).join(", ")}],` : "";
492
+ }))} } }` : `{ 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(", ")}],` : "";
488
493
  const defineConfigImport = astroConfigImportLine({
489
494
  hasFonts: fontEntries.length > 0
490
495
  });
@@ -536,7 +541,8 @@ var astroConfigTemplate = (options) => {
536
541
  userIntegrationSpread
537
542
  } = renderIntegrationBridge(options.integrationBridge);
538
543
  return `// Generated by Blume. Do not edit; this file is recreated on each run.
539
- ${configSourceMarker}${userConfigImports}${defineConfigImport}
544
+ ${configSourceMarker}${userConfigImports}import { availableParallelism } from "node:os";
545
+ ${defineConfigImport}
540
546
  import mdx from "@astrojs/mdx";
541
547
  import tailwindcss from "@tailwindcss/vite";
542
548
  import { blumeMarkdownProcessor, blumeMdxProcessor, blumeShikiTransformers, blumeTwoslashTransformer } from "blume/markdown";
@@ -579,6 +585,12 @@ ${userConfigSetup}export default defineConfig({
579
585
  // request latency behind the user's intent, so most navigations swap
580
586
  // instantly.
581
587
  prefetch: { prefetchAll: true },
588
+ // Prerender several pages at once. Rendering is single-threaded, but a
589
+ // page's OG card renders on a native thread and its HTML is written
590
+ // asynchronously, so the main thread would otherwise idle behind each
591
+ // page's off-thread work. Capped at 8: the gain flattens there and beyond it
592
+ // the overlap only adds memory.
593
+ build: { concurrency: Math.min(8, availableParallelism()) },
582
594
  vite: {${viteCacheOption}
583
595
  plugins: [${runtimeModulesPluginEntry}tailwindcss(), includeHmrPlugin(${JSON.stringify(`${context.outDir}/src/generated/includes.json`)}), prerenderDepsPlugin()],
584
596
  // Everything hydration can reach must be part of the dev dep optimizer's
@@ -629,6 +641,7 @@ ${userConfigSetup}export default defineConfig({
629
641
  "blume:ask": ${JSON.stringify(askPath)},
630
642
  "blume:examples": ${JSON.stringify(examplesPath)},
631
643
  "blume:examples-theme": ${JSON.stringify(examplesThemePath)},
644
+ "blume:features": ${JSON.stringify(featuresPath)},
632
645
  "blume:search-client": ${JSON.stringify(searchClientPath)},
633
646
  "blume:theme": ${JSON.stringify(themePath)},${runtimeModuleAliasLines}${userAliasLines}
634
647
  },
@@ -888,6 +901,20 @@ var hostedSearchOptions = (search) => {
888
901
  }
889
902
  }
890
903
  };
904
+ var featuresTemplate = (features) => `// Generated by Blume. Do not edit.
905
+ //
906
+ // The client features this site uses. A feature no page needs stays out of
907
+ // the module graph entirely: its loader is null and its library never enters
908
+ // the client bundle.
909
+
910
+ /** Registers the <blume-mermaid> element; null when no page has a mermaid fence. */
911
+ export const loadMermaid: (() => Promise<unknown>) | null = ${features.mermaid ? '() => import("blume/components/content/mermaid-element.ts")' : "null"};
912
+
913
+ /** The EPUB generator's browser bundle; null when export.epub is off. */
914
+ export const loadEpub:
915
+ | (() => Promise<typeof import("epub-gen-memory/bundle")>)
916
+ | null = ${features.epub ? '() => import("epub-gen-memory/bundle")' : "null"};
917
+ `;
891
918
  var searchClientTemplate = (config) => {
892
919
  const { search } = config;
893
920
  if (search.provider === "orama" || search.provider === "flexsearch") {
@@ -1116,9 +1143,58 @@ export function GET({ props }: { props: { section: string } }) {
1116
1143
  });
1117
1144
  }
1118
1145
  `;
1146
+ var navFragmentTemplate = () => `---
1147
+ // Generated by Blume. Do not edit.
1148
+ import NavTree from "blume/components/layout/NavTree.astro";
1149
+ import { withBase } from "blume/components/islands/base-path.ts";
1150
+ import { navGroupIds, navVariants } from "blume/components/layout/nav-utils.ts";
1151
+ import type { NavNode } from "blume/core/types.ts";
1152
+ import data from "blume:data";
1153
+
1154
+ export const prerender = true;
1155
+ // A partial: no doctype, head, or script/style injection — the rows only.
1156
+ export const partial = true;
1157
+
1158
+ // Only imports are in scope here (Astro hoists getStaticPaths), which is why
1159
+ // the variant walk lives in nav-utils.
1160
+ export function getStaticPaths() {
1161
+ return navVariants(data).flatMap(({ locale, navigation, version }) =>
1162
+ [...navGroupIds(navigation.sidebar)]
1163
+ .filter(([node]) => (node.display ?? "flat") !== "flat")
1164
+ .map(([, id]) => ({ params: { id, locale, version } }))
1165
+ );
1166
+ }
1167
+
1168
+ const { id, locale, version } = Astro.params;
1169
+ const variant = navVariants(data).find(
1170
+ (entry) => entry.version === version && entry.locale === locale
1171
+ );
1172
+ const ids = variant
1173
+ ? navGroupIds(variant.navigation.sidebar)
1174
+ : new Map<NavNode, string>();
1175
+ const node = [...ids].find(([, groupId]) => groupId === id)?.[0];
1176
+ if (!(variant && node && node.kind === "group")) {
1177
+ return new Response(null, { status: 404 });
1178
+ }
1179
+ const strings =
1180
+ locale === "default" ? data.ui.nav : (data.uiByLocale[locale] ?? data.ui).nav;
1181
+ const fragmentBase = withBase(\`/blume-nav/\${version}/\${locale}\`);
1182
+ ---
1183
+
1184
+ <NavTree
1185
+ currentRoute=""
1186
+ depth={1}
1187
+ fragmentBase={fragmentBase}
1188
+ idPrefix={id}
1189
+ ids={ids}
1190
+ items={node.children}
1191
+ root={false}
1192
+ strings={strings}
1193
+ />
1194
+ `;
1119
1195
  var ogEndpointTemplate = (customRoutes = [], og = {}, includeChangelog = false) => `// Generated by Blume. Do not edit.
1120
- import { renderOgImage } from "blume/og";
1121
- import type { OgFont, OgFontFamilies } from "blume/og";
1196
+ import { cachedOgImage } from "blume/og";
1197
+ import type { OgCache, OgFont, OgFontFamilies } from "blume/og";
1122
1198
  import data from "blume:data";
1123
1199
 
1124
1200
  export const prerender = true;
@@ -1135,6 +1211,12 @@ const customRoutes: { slug: string; title: string }[] = ${JSON.stringify(customR
1135
1211
  const fonts: OgFont[] = ${JSON.stringify(og.fonts ?? [])};
1136
1212
  const families: OgFontFamilies | undefined = ${og.families ? JSON.stringify(og.families) : "undefined"};
1137
1213
 
1214
+ // Rendered cards are kept on disk between builds, keyed by everything that
1215
+ // decides their pixels, so a rebuild renders only the cards whose title,
1216
+ // description, branding, or fonts changed. The directory is a build-machine
1217
+ // path, baked in for the same reason as the local font paths above.
1218
+ const cache: OgCache | undefined = ${og.cache ? JSON.stringify(og.cache) : "undefined"};
1219
+
1138
1220
  // A page's own description (its \`seo.description\`, else \`description\`) is
1139
1221
  // the card subtitle, so the image says what the page's og:description says.
1140
1222
  // Pages without one fall back to the site-wide subtitle at render time.
@@ -1190,7 +1272,7 @@ const repoSlug = data.config.github
1190
1272
  : undefined;
1191
1273
 
1192
1274
  export async function GET({ props }: { props: CardProps }) {
1193
- const png = await renderOgImage({
1275
+ const png = await cachedOgImage(cache, {
1194
1276
  accent: data.config.og.palette?.accent ?? data.config.theme.accent.light,
1195
1277
  brand: data.config.title,
1196
1278
  description: props.description ?? data.config.og.description,
@@ -1625,7 +1707,8 @@ const LayoutComponent = resolveSlot(layoutOverrides.Layout, RootLayout);
1625
1707
  editUrl={editUrl}
1626
1708
  feedback={data.config.feedback}
1627
1709
  exportPdf={${options.exportPdf}}
1628
- exportEpub={${options.exportEpub}}
1710
+ exportEpub={${options.exportEpub}}${options.navFragments ? `
1711
+ navFragmentBase={withBase(\`/blume-nav/\${version || "current"}/\${i18n ? locale : "default"}\`)}` : ""}
1629
1712
  openInChat={data.config.openInChat}
1630
1713
  feeds={data.feeds}
1631
1714
  discovery={data.config.discovery}
@@ -2364,7 +2447,7 @@ var runtimeTsconfigTemplate = () => `${JSON.stringify({
2364
2447
  }, null, 2)}
2365
2448
  `;
2366
2449
 
2367
- export { ADAPTER_IGNORE_DIRS, servesClientSubdir, deployStaticDir, surfaceAdapterOutput, resolveAskBackend, askBackendRuntimeDep, buildHomeLinkHeader, platformRedirects, publishRuntimeModules, runtimeDependencies, astroConfigTemplate, stagedContentDir, contentConfigTemplate, askEndpointTemplate, askComponentTemplate, searchEndpointTemplate, searchClientTemplate, mixedbreadSearchEndpointTemplate, rawMarkdownEndpointTemplate, contentAssetsEndpointTemplate, mcpPageFile, mcpEndpointTemplate, playgroundProxyTemplate, staticJsonEndpointTemplate, rssEndpointTemplate, ogEndpointTemplate, scalarReferenceTemplate, catchAllPageTemplate, changelogIndexTemplate, notFoundPageTemplate, notFoundMarkdownTemplate, notFoundJsonTemplate, apiPagesIndexTemplate, apiPageTemplate, apiNavigationTemplate, apiSearchTemplate, apiNotFoundTemplate, islandWrapperTemplate, islandMapTemplate, exampleSlug, exampleWrapperTemplate, examplesRouteBase, exampleMapTemplate, examplesPageTemplate, runtimePackageTemplate, runtimeTsconfigTemplate };
2450
+ export { ADAPTER_IGNORE_DIRS, servesClientSubdir, deployStaticDir, surfaceAdapterOutput, resolveAskBackend, askBackendRuntimeDep, buildHomeLinkHeader, platformRedirects, publishRuntimeModules, runtimeDependencies, 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, islandWrapperTemplate, islandMapTemplate, exampleSlug, exampleWrapperTemplate, examplesRouteBase, exampleMapTemplate, examplesPageTemplate, runtimePackageTemplate, runtimeTsconfigTemplate };
2368
2451
 
2369
- //# debugId=1666B85D4E0F438E64756E2164756E21
2370
- //# sourceMappingURL=chunk-aerwpe14.js.map
2452
+ //# debugId=539E38867287181364756E2164756E21
2453
+ //# sourceMappingURL=chunk-agy5rzxy.js.map