@ox-content/vite-plugin 3.0.0-alpha.4 → 3.0.0-alpha.6

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/index.d.mts CHANGED
@@ -225,6 +225,14 @@ interface ThemeConfig {
225
225
  * `breadcrumbs: false` still hides it on that page.
226
226
  */
227
227
  breadcrumbs?: boolean | Record<string, unknown>;
228
+ /**
229
+ * Heading permalink visibility. CSS only — the renderer HTML stays
230
+ * `<a class="header-anchor" href="#id">`.
231
+ *
232
+ * `"hover"` (default) reveals the `#` on hover / focus-visible, and
233
+ * stays visible on touch. `"always"` keeps it visible.
234
+ */
235
+ headingPermalink?: "hover" | "always";
228
236
  /** Light mode colors (maps to CSS variables) */
229
237
  colors?: ThemeColors;
230
238
  /** Dark mode colors (maps to CSS variables) */
@@ -279,6 +287,7 @@ interface ResolvedThemeConfig {
279
287
  viewTransitions: boolean;
280
288
  aside: boolean;
281
289
  breadcrumbs: boolean;
290
+ headingPermalink: "hover" | "always";
282
291
  colors: ThemeColors;
283
292
  darkColors: ThemeColors;
284
293
  fonts: ThemeFonts;
@@ -465,19 +474,20 @@ interface TwitterEmbedOptions {
465
474
  cache?: boolean;
466
475
  /** Directory used for the persistent metadata cache. @default ".cache/ox-content/twitter" */
467
476
  cacheDir?: string;
468
- /** Directory where avatars and photos are written. @default "public/ox-content/twitter" */
477
+ /** Directory where avatars, photos, and videos are written. @default "public/ox-content/twitter" */
469
478
  mediaOutputDir?: string;
470
479
  /** Public URL prefix for downloaded media. @default "/ox-content/twitter" */
471
480
  mediaPublicPath?: string;
472
- }
481
+ /** Download MP4 video and animated GIF assets at build time. @default false */
482
+ downloadVideo?: boolean;
483
+ /** Maximum video size in bytes. Oversized assets are skipped. @default 8388608 */
484
+ maxVideoBytes?: number;
485
+ /** Fetched-card chrome. `"full"` matches sveltweet / react-tweet. @default "compact" */
486
+ appearance?: TweetAppearance;
487
+ }
488
+ type TweetAppearance = "compact" | "full";
473
489
  //#endregion
474
- //#region src/plugins/ogp.d.ts
475
- /**
476
- * OGP Card Plugin - Link card embedding
477
- *
478
- * Transforms <OgCard> components into static link preview cards
479
- * by fetching OGP metadata at build time.
480
- */
490
+ //#region src/plugins/ogp/types.d.ts
481
491
  interface OgpData {
482
492
  url: string;
483
493
  title: string;
@@ -494,35 +504,44 @@ interface OgpOptions {
494
504
  timeout?: number;
495
505
  /**
496
506
  * Cache fetched Open Graph metadata in memory for the current process.
507
+ * Persistent disk cache also requires this to be enabled.
497
508
  * @default true
498
509
  */
499
510
  cache?: boolean;
500
511
  /**
501
- * Cache TTL in milliseconds.
512
+ * Cache TTL in milliseconds. Fresh memory and disk entries skip the network.
502
513
  * @default 3600000
503
514
  */
504
515
  cacheTTL?: number;
516
+ /**
517
+ * Persist successful and negative cache entries to disk across builds.
518
+ * Off by default so existing sites do not write a cache directory.
519
+ * @default false
520
+ */
521
+ persistCache?: boolean;
522
+ /**
523
+ * Directory used for the persistent metadata cache when `persistCache` is on.
524
+ * @default ".cache/ox-content/ogp"
525
+ */
526
+ cacheDir?: string;
527
+ /**
528
+ * Re-fetch metadata even when a fresh cache entry exists.
529
+ * @default false
530
+ */
531
+ refresh?: boolean;
505
532
  /**
506
533
  * User agent sent with metadata fetch requests.
507
534
  * @default 'ox-content-ogp-bot/1.0 (compatible; +https://github.com/ubugeeei-prod/ox-content)'
508
535
  */
509
536
  userAgent?: string;
510
537
  }
511
- /**
512
- * Fetch OGP data for a URL.
513
- */
514
- declare function fetchOgpData(url: string, options: Required<OgpOptions>): Promise<OgpData | null>;
515
- /**
516
- * Collect all OGP URLs from HTML for pre-fetching.
517
- */
538
+ //#endregion
539
+ //#region src/plugins/ogp/fetch.d.ts
540
+ declare function fetchOgpData(url: string, options?: OgpOptions): Promise<OgpData | null>;
541
+ //#endregion
542
+ //#region src/plugins/ogp/transform.d.ts
518
543
  declare function collectOgpUrls(html: string): Promise<string[]>;
519
- /**
520
- * Pre-fetch all OGP data.
521
- */
522
544
  declare function prefetchOgpData(urls: string[], options?: OgpOptions): Promise<Map<string, OgpData | null>>;
523
- /**
524
- * Transform OgCard components in HTML.
525
- */
526
545
  declare function transformOgp(html: string, ogpDataMap?: Map<string, OgpData | null>, options?: OgpOptions): Promise<string>;
527
546
  //#endregion
528
547
  //#region src/plugins/pm.d.ts
@@ -570,7 +589,8 @@ declare function generateTabsCSS(groupCount: number): string;
570
589
  * YouTube Plugin - Privacy-enhanced iframe embedding
571
590
  *
572
591
  * Transforms <YouTube> components into responsive iframe embeds using
573
- * youtube-nocookie.com for enhanced privacy.
592
+ * youtube-nocookie.com for enhanced privacy. A digits-only `start` attribute
593
+ * becomes `?start=` on the iframe URL.
574
594
  *
575
595
  * The HTML rewrite is performed in Rust (`transformYoutubeEmbeds` in
576
596
  * @ox-content/napi), replacing the previous rehype parse/stringify
@@ -687,6 +707,8 @@ interface BasePageProps {
687
707
  path: string;
688
708
  /** Output URL path */
689
709
  url: string;
710
+ /** Published Markdown companion URL when `ssg.markdownSource` is on */
711
+ markdownSource?: string;
690
712
  /** Raw frontmatter object */
691
713
  frontmatter: Record<string, unknown>;
692
714
  /** Layout name from frontmatter */
@@ -892,6 +914,8 @@ interface PageData {
892
914
  path: string;
893
915
  /** Output URL path */
894
916
  url: string;
917
+ /** Published Markdown companion URL when `ssg.markdownSource` is on */
918
+ markdownSource?: string;
895
919
  /** Frontmatter */
896
920
  frontmatter: Record<string, unknown>;
897
921
  /** Layout name */
@@ -1244,6 +1268,15 @@ interface SsgOptions {
1244
1268
  * @default false
1245
1269
  */
1246
1270
  jsonLd?: boolean | JsonLdOptions;
1271
+ /**
1272
+ * Validate custom page-head descriptors during SSG.
1273
+ *
1274
+ * `false` / omitted drops invalid values silently. `warn` logs them.
1275
+ * `strict` fails the build on unsafe URLs or invalid hreflang.
1276
+ *
1277
+ * @default false
1278
+ */
1279
+ headValidation?: false | "warn" | "strict";
1247
1280
  /**
1248
1281
  * Opt-in copy buttons, outbound-link icons, and a back-to-top control.
1249
1282
  *
@@ -1284,6 +1317,20 @@ interface SsgOptions {
1284
1317
  * @default false
1285
1318
  */
1286
1319
  pageChrome?: boolean | Record<string, unknown>;
1320
+ /**
1321
+ * Publish the original Markdown beside each generated HTML page.
1322
+ *
1323
+ * Off by default. `true` writes a `.md` companion using the published URL
1324
+ * (permalink, locale, base, and output directory) and adds
1325
+ * `<link rel="alternate" type="text/markdown">`. An object enables the
1326
+ * feature and can turn the alternate link off.
1327
+ *
1328
+ * The companion is a byte-for-byte copy of the source file, including
1329
+ * frontmatter. Draft and unlisted pages are never written.
1330
+ *
1331
+ * @default false
1332
+ */
1333
+ markdownSource?: boolean | MarkdownSourceOptions;
1287
1334
  /**
1288
1335
  * Write a themed 404 page during SSG.
1289
1336
  *
@@ -1438,7 +1485,18 @@ interface JsonLdOptions {
1438
1485
  * Logo and other Organization fields are never invented.
1439
1486
  */
1440
1487
  publisher?: JsonLdPublisherOptions;
1488
+ /**
1489
+ * Page `@type`. Defaults to `TechArticle`.
1490
+ */
1491
+ type?: JsonLdPageType;
1492
+ /**
1493
+ * Extra `@graph` nodes. Only objects are kept. The build does not invent
1494
+ * fields inside them.
1495
+ */
1496
+ graph?: Record<string, unknown>[];
1441
1497
  }
1498
+ /** JSON-LD page node `@type`. Unknown values fall back to `TechArticle`. */
1499
+ type JsonLdPageType = "TechArticle" | "BlogPosting" | "WebPage";
1442
1500
  /**
1443
1501
  * Optional JSON-LD publisher. Empty or omitted fields are left out.
1444
1502
  */
@@ -1457,6 +1515,8 @@ type ResolvedJsonLd = false | {
1457
1515
  name?: string;
1458
1516
  url?: string;
1459
1517
  };
1518
+ type?: JsonLdPageType;
1519
+ graph?: Record<string, unknown>[];
1460
1520
  };
1461
1521
  /**
1462
1522
  * Resolved SSG options.
@@ -1482,10 +1542,18 @@ interface ResolvedSsgOptions {
1482
1542
  pagination: boolean;
1483
1543
  breadcrumbs: boolean;
1484
1544
  jsonLd: ResolvedJsonLd;
1545
+ /**
1546
+ * Present after `resolveSsgOptions`. Omitted / `false` means off.
1547
+ */
1548
+ headValidation?: false | "warn" | "strict";
1485
1549
  readerChrome: ResolvedReaderChrome;
1486
1550
  localeSwitcher: boolean;
1487
1551
  a11y: ResolvedA11y;
1488
1552
  pageChrome: boolean;
1553
+ /**
1554
+ * Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
1555
+ */
1556
+ markdownSource?: ResolvedMarkdownSourceOptions;
1489
1557
  /**
1490
1558
  * Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
1491
1559
  */
@@ -1658,6 +1726,23 @@ interface ResolvedPwaOptions {
1658
1726
  backgroundColor?: string;
1659
1727
  startUrl?: string;
1660
1728
  }
1729
+ /**
1730
+ * Opt-in Markdown source companions written beside generated HTML.
1731
+ */
1732
+ interface MarkdownSourceOptions {
1733
+ /**
1734
+ * Add `<link rel="alternate" type="text/markdown">` to generated HTML.
1735
+ * @default true
1736
+ */
1737
+ alternate?: boolean;
1738
+ }
1739
+ /**
1740
+ * Resolved Markdown source-companion options.
1741
+ */
1742
+ interface ResolvedMarkdownSourceOptions {
1743
+ enabled: boolean;
1744
+ alternate: boolean;
1745
+ }
1661
1746
  /**
1662
1747
  * Opt-in crawl manifests written during SSG.
1663
1748
  */
@@ -1863,7 +1948,32 @@ interface BlogOptions {
1863
1948
  * @default 10
1864
1949
  */
1865
1950
  pageSize?: number;
1951
+ /**
1952
+ * External RSS / Atom sources merged into the blog index at build time.
1953
+ * Empty / omitted fetches nothing. Only these URLs are requested.
1954
+ * @default []
1955
+ */
1956
+ feeds?: Array<string | BlogFeedSource>;
1957
+ }
1958
+ /**
1959
+ * One configured external blog feed.
1960
+ */
1961
+ interface BlogFeedSource {
1962
+ /** Absolute `https:` feed URL. */
1963
+ url: string;
1964
+ /** Default language applied when an item omits one. */
1965
+ language?: string;
1966
+ /** Default author applied when an item omits one. */
1967
+ author?: string;
1968
+ /**
1969
+ * Failed fetch / parse handling for this source.
1970
+ * `warn` skips the source. `error` fails the build after other sources run.
1971
+ * @default "warn"
1972
+ */
1973
+ onError?: BlogFeedFailurePolicy;
1866
1974
  }
1975
+ /** How a failed external feed source is reported. */
1976
+ type BlogFeedFailurePolicy = "warn" | "error";
1867
1977
  /**
1868
1978
  * Resolved blog options.
1869
1979
  */
@@ -1872,6 +1982,16 @@ interface ResolvedBlogOptions {
1872
1982
  collection?: string;
1873
1983
  authors: Record<string, BlogAuthor>;
1874
1984
  pageSize: number;
1985
+ feeds: ResolvedBlogFeedSource[];
1986
+ }
1987
+ /**
1988
+ * Resolved external blog feed source.
1989
+ */
1990
+ interface ResolvedBlogFeedSource {
1991
+ url: string;
1992
+ language?: string;
1993
+ author?: string;
1994
+ onError: BlogFeedFailurePolicy;
1875
1995
  }
1876
1996
  /**
1877
1997
  * Opt-in term list pages, per-term pages, and related-page lists.
@@ -2149,6 +2269,17 @@ interface OxContentOptions {
2149
2269
  * @default true
2150
2270
  */
2151
2271
  footnotes?: boolean;
2272
+ /**
2273
+ * Render footnotes as a semantic ordered section with numeric markers.
2274
+ *
2275
+ * Source identifiers are used only for lookup and slugs. Visible markers
2276
+ * are 1, 2, … in document order, and definitions emit as
2277
+ * `<section class="footnotes"><ol><li>…`.
2278
+ *
2279
+ * Off by default so current alpha HTML stays stable.
2280
+ * @default false
2281
+ */
2282
+ semanticFootnotes?: boolean;
2152
2283
  /**
2153
2284
  * Enable tables.
2154
2285
  * @default true
@@ -2234,6 +2365,18 @@ interface OxContentOptions {
2234
2365
  * @default false
2235
2366
  */
2236
2367
  badges?: boolean | BadgeOptions;
2368
+ /**
2369
+ * Opt-in `{link:...}` rich magic links.
2370
+ *
2371
+ * Passing `true` or an options object enables GitHub-user, alias, and
2372
+ * explicit `label|url` forms. Attributes and text are HTML-escaped.
2373
+ * Fenced, indented, inline, and raw code, plus already-linked text, are
2374
+ * skipped. The transform does not make network requests unless an explicit
2375
+ * favicon template is enabled (still URL-only; no fetch at transform time).
2376
+ *
2377
+ * @default false
2378
+ */
2379
+ magicLinks?: boolean | MagicLinkOptions;
2237
2380
  /**
2238
2381
  * Opt-in `::: tip` custom containers.
2239
2382
  *
@@ -2263,6 +2406,7 @@ interface OxContentOptions {
2263
2406
  * source mtime plus transform params. Paths that leave the page
2264
2407
  * directory or `srcDir` are rejected. Missing sources fail the build
2265
2408
  * when `missing` is `"error"` (the default when enabled).
2409
+ * `dedupe` is off unless set; it does not turn on with `true` / `{}`.
2266
2410
  *
2267
2411
  * This is separate from `images`, which only adds figures, captions,
2268
2412
  * and lazy-loading.
@@ -2413,6 +2557,15 @@ interface OxContentOptions {
2413
2557
  * @default 3
2414
2558
  */
2415
2559
  tocMaxDepth?: number;
2560
+ /**
2561
+ * Append a visible heading permalink (`<a class="header-anchor" href="#id">`).
2562
+ *
2563
+ * Reuses the generated heading id. Default off. Theme
2564
+ * `headingPermalink: "hover" | "always"` changes only CSS visibility.
2565
+ *
2566
+ * @default false
2567
+ */
2568
+ headingPermalinks?: boolean | HeadingPermalinksOptions;
2416
2569
  /**
2417
2570
  * Enable OG image generation.
2418
2571
  * @default false
@@ -2495,6 +2648,10 @@ interface ResolvedOptions {
2495
2648
  gfm: boolean;
2496
2649
  mdx?: boolean;
2497
2650
  footnotes: boolean;
2651
+ /**
2652
+ * Present after `resolveOptions`. Omitted in hand-built fixtures means off.
2653
+ */
2654
+ semanticFootnotes?: boolean;
2498
2655
  tables: boolean;
2499
2656
  taskLists: boolean;
2500
2657
  strikethrough: boolean;
@@ -2505,6 +2662,10 @@ interface ResolvedOptions {
2505
2662
  emojiShortcodes: ResolvedEmojiShortcodeOptions;
2506
2663
  attrs: ResolvedAttrsOptions;
2507
2664
  badges: ResolvedBadgeOptions;
2665
+ /**
2666
+ * Present after `resolveOptions`. Omitted in hand-built fixtures means off.
2667
+ */
2668
+ magicLinks?: ResolvedMagicLinkOptions;
2508
2669
  containers: ResolvedContainerOptions;
2509
2670
  images: ResolvedImageOptions;
2510
2671
  codeImports: ResolvedCodeImportOptions;
@@ -2527,6 +2688,10 @@ interface ResolvedOptions {
2527
2688
  frontmatter: boolean;
2528
2689
  toc: boolean;
2529
2690
  tocMaxDepth: number;
2691
+ /**
2692
+ * Present after `resolveOptions`. Omitted in hand-built fixtures means off.
2693
+ */
2694
+ headingPermalinks?: ResolvedHeadingPermalinksOptions;
2530
2695
  ogImage: boolean;
2531
2696
  ogImageOptions: ResolvedOgImageOptions$1;
2532
2697
  transformers: MarkdownTransformer[];
@@ -2631,6 +2796,62 @@ interface BadgeOptions {
2631
2796
  interface ResolvedBadgeOptions {
2632
2797
  enabled: boolean;
2633
2798
  }
2799
+ /**
2800
+ * Options for opt-in `{link:...}` rich magic links.
2801
+ */
2802
+ interface MagicLinkOptions {
2803
+ /**
2804
+ * Enable the magic-link transform when an options object is supplied.
2805
+ *
2806
+ * @default true
2807
+ */
2808
+ enabled?: boolean;
2809
+ /**
2810
+ * Named aliases. A string value is treated as `{ href }`.
2811
+ */
2812
+ aliases?: Record<string, string | MagicLinkAlias>;
2813
+ /**
2814
+ * Emit a favicon URL when a link has no image.
2815
+ *
2816
+ * `true` uses `https://{host}/favicon.ico`. Pass `{ template }` to override.
2817
+ * The transform never fetches; the browser may load the URL later.
2818
+ *
2819
+ * @default false
2820
+ */
2821
+ favicon?: boolean | {
2822
+ template?: string;
2823
+ };
2824
+ /**
2825
+ * Replace the resolved image for matching hrefs.
2826
+ */
2827
+ imageOverrides?: MagicLinkImageOverride[];
2828
+ }
2829
+ /**
2830
+ * One configured magic-link target.
2831
+ */
2832
+ interface MagicLinkAlias {
2833
+ href: string;
2834
+ label?: string;
2835
+ image?: string;
2836
+ }
2837
+ /**
2838
+ * Replace the image for an exact href or prefix.
2839
+ */
2840
+ interface MagicLinkImageOverride {
2841
+ href?: string;
2842
+ prefix?: string;
2843
+ image: string;
2844
+ }
2845
+ /**
2846
+ * Resolved magic-link transform options.
2847
+ */
2848
+ interface ResolvedMagicLinkOptions {
2849
+ enabled: boolean;
2850
+ aliases: Record<string, MagicLinkAlias>;
2851
+ favicon: boolean;
2852
+ faviconTemplate?: string;
2853
+ imageOverrides: MagicLinkImageOverride[];
2854
+ }
2634
2855
  /**
2635
2856
  * Options for opt-in `::: type` custom containers.
2636
2857
  */
@@ -2710,6 +2931,15 @@ interface ResourcesOptions {
2710
2931
  * @default "error"
2711
2932
  */
2712
2933
  missing?: "error" | "warn";
2934
+ /**
2935
+ * Emit identical bytes once as `/assets/content/<sha256>.<ext>` and
2936
+ * rewrite `src`, `poster`, and relevant `href` to that URL.
2937
+ *
2938
+ * Off unless this is `true`. `resources: true` and `{}` leave it off.
2939
+ *
2940
+ * @default false
2941
+ */
2942
+ dedupe?: boolean;
2713
2943
  }
2714
2944
  /**
2715
2945
  * Resolved page-resource options.
@@ -2719,6 +2949,7 @@ interface ResolvedResourcesOptions {
2719
2949
  formats: string[];
2720
2950
  widths: number[];
2721
2951
  missing: "error" | "warn";
2952
+ dedupe: boolean;
2722
2953
  }
2723
2954
  /**
2724
2955
  * Options for expanding Obsidian-style wiki links.
@@ -2819,6 +3050,27 @@ interface AttrsOptions {
2819
3050
  interface ResolvedAttrsOptions {
2820
3051
  enabled: boolean;
2821
3052
  }
3053
+ /**
3054
+ * Opt-in visible heading permalinks.
3055
+ *
3056
+ * Headings already have stable `id`s. Enabling this appends a real
3057
+ * `<a class="header-anchor" href="#id">` using that exact id. Off by
3058
+ * default so existing HTML stays byte-stable.
3059
+ */
3060
+ interface HeadingPermalinksOptions {
3061
+ /**
3062
+ * Emit the permalink control.
3063
+ *
3064
+ * @default true
3065
+ */
3066
+ enabled?: boolean;
3067
+ }
3068
+ /**
3069
+ * Resolved heading permalink options.
3070
+ */
3071
+ interface ResolvedHeadingPermalinksOptions {
3072
+ enabled: boolean;
3073
+ }
2822
3074
  /**
2823
3075
  * Options for importing source snippets into code fences.
2824
3076
  *
@@ -4296,6 +4548,9 @@ declare function resolveStepsOptions(options: OxContentOptions["steps"]): Resolv
4296
4548
  //#region src/file-tree-options.d.ts
4297
4549
  declare function resolveFileTreeOptions(options: OxContentOptions["fileTree"]): ResolvedOptions["fileTree"];
4298
4550
  //#endregion
4551
+ //#region src/heading-permalinks-options.d.ts
4552
+ declare function resolveHeadingPermalinksOptions(options: OxContentOptions["headingPermalinks"]): ResolvedOptions["headingPermalinks"];
4553
+ //#endregion
4299
4554
  //#region src/typed-hover.d.ts
4300
4555
  declare function resolveTypedHoverOptions(options: OxContentOptions["typedHover"]): ResolvedOptions["typedHover"];
4301
4556
  //#endregion
@@ -5308,6 +5563,76 @@ interface SsgBuildResult {
5308
5563
  */
5309
5564
  declare function buildSsg(options: ResolvedOptions, root: string): Promise<SsgBuildResult>;
5310
5565
  //#endregion
5566
+ //#region src/page-head.d.ts
5567
+ /** How invalid head descriptors are reported. */
5568
+ type HeadValidationMode = false | "off" | "warn" | "strict";
5569
+ interface SiteHead {
5570
+ name?: string;
5571
+ url?: string;
5572
+ locale?: string;
5573
+ titleTemplate?: string;
5574
+ }
5575
+ interface HeadMeta {
5576
+ key?: string;
5577
+ name?: string;
5578
+ property?: string;
5579
+ httpEquiv?: string;
5580
+ content: string;
5581
+ }
5582
+ interface HeadLink {
5583
+ key?: string;
5584
+ rel: string;
5585
+ href: string;
5586
+ hreflang?: string;
5587
+ type?: string;
5588
+ sizes?: string;
5589
+ }
5590
+ interface HeadAlternate {
5591
+ lang: string;
5592
+ href: string;
5593
+ }
5594
+ interface HeadJsonLd {
5595
+ key?: string;
5596
+ json: string;
5597
+ }
5598
+ /**
5599
+ * Build-time page-head input. Unhead-shaped, no client runtime.
5600
+ *
5601
+ * Unknown keys such as `twitter.imggg` are a TypeScript error here. Use
5602
+ * `metas` / `links` for extra tags.
5603
+ */
5604
+ interface HeadInput {
5605
+ site?: SiteHead;
5606
+ title?: string;
5607
+ titleTemplate?: string;
5608
+ titleSuffix?: boolean;
5609
+ description?: string;
5610
+ canonical?: string;
5611
+ robots?: string;
5612
+ ogImage?: string;
5613
+ ogType?: string;
5614
+ twitterCard?: "summary" | "summary_large_image" | (string & {});
5615
+ social?: boolean;
5616
+ emitSiteName?: boolean;
5617
+ trusted?: boolean;
5618
+ metas?: HeadMeta[];
5619
+ links?: HeadLink[];
5620
+ alternates?: HeadAlternate[];
5621
+ jsonLd?: HeadJsonLd[];
5622
+ validation?: "off" | "warn" | "strict";
5623
+ }
5624
+ interface HeadDiagnostic {
5625
+ strict: boolean;
5626
+ message: string;
5627
+ }
5628
+ interface RenderedHead {
5629
+ html: string;
5630
+ diagnostics: HeadDiagnostic[];
5631
+ }
5632
+ /** Resolve descriptors to escaped `<head>` markup. Build-time only. */
5633
+ declare function renderHead(input: HeadInput): RenderedHead;
5634
+ declare function resolveHeadValidation(value: HeadValidationMode | undefined): false | "warn" | "strict";
5635
+ //#endregion
5311
5636
  //#region src/not-found.d.ts
5312
5637
  /**
5313
5638
  * Resolves `ssg.notFound` with defaults.
@@ -5326,6 +5651,15 @@ declare function resolveNotFoundOptions(value: boolean | NotFoundOptions | undef
5326
5651
  */
5327
5652
  declare function resolveSiteMapsOptions(value: boolean | SiteMapsOptions | undefined): ResolvedSiteMapsOptions;
5328
5653
  //#endregion
5654
+ //#region src/markdown-source.d.ts
5655
+ /**
5656
+ * Resolves `ssg.markdownSource` with defaults.
5657
+ *
5658
+ * `false` / omitted stays off. `true` enables companions and the alternate
5659
+ * link. An object enables the feature and overrides only the fields set.
5660
+ */
5661
+ declare function resolveMarkdownSourceOptions(value: boolean | MarkdownSourceOptions | undefined): ResolvedMarkdownSourceOptions;
5662
+ //#endregion
5329
5663
  //#region src/publish-state.d.ts
5330
5664
  /** Split pages into production output vs listing surfaces. */
5331
5665
  interface PartitionedPages<T> {
@@ -5385,6 +5719,12 @@ declare function resolveBlogOptions(value: boolean | BlogOptions | undefined): R
5385
5719
  */
5386
5720
  declare function resolveBlogCollectionName(requested: string | undefined, collectionNames: readonly string[]): string | undefined;
5387
5721
  //#endregion
5722
+ //#region src/blog-feeds.d.ts
5723
+ declare class BlogFeedError extends Error {
5724
+ readonly issues: string[];
5725
+ constructor(issues: string[]);
5726
+ }
5727
+ //#endregion
5388
5728
  //#region src/blog-reading.d.ts
5389
5729
  /**
5390
5730
  * Deterministic blog reading-time estimates.
@@ -5768,5 +6108,5 @@ declare function resolveBadgeOptions(options: OxContentOptions["badges"]): Resol
5768
6108
  */
5769
6109
  declare function generateVirtualModule(path: string, options: ResolvedOptions): string;
5770
6110
  //#endregion
5771
- export { A11yOptions, AttrsOptions, BadgeOptions, type BasePageProps, BlogAuthor, BlogOptions, BuiltinEmbedOptions, BuiltinPmOptions, CardOptions, CascadeOptions, CodeAnnotationKind, CodeAnnotationSyntax, CodeAnnotationsOptions, type CodeBlockDiagnostic, CodeBlockLintOptions, CodeBlockTypecheckOptions, CodeImportOptions, type CollectedDocsTest, CollectionEntry, CollectionIncludeField, CollectionManifest, CollectionOptions, CollectionQueryBuilder, CollectionQueryOperator, CollectionsOptions, type ComponentRegistry, ContainerOptions, ContainerTypeOptions, ContributorsOptions, DEFAULT_HTML_TEMPLATE, DEFAULT_MARKDOWN_EXTENSIONS, DefaultTheme, type DiscoverDocumentMdxIslandsInput, type DiscoverDocumentMdxIslandsResult, type DiscoverRegisteredMdxComponentsInput, DocEntry, DocMember, DocsEntryPoint, DocsOptions, DocsSortStrategy, DocsSummary, type DocsTestFileOptions, type DocsTestHarnessOptions, DocsTestOptions, DocsTestRunError, type DocsTestRunResult, type DocsTestSource, type DocsTestWriteResult, type DocumentImportDiagnostic, type DocumentImportDiagnosticCode, EditThisPageOptions, EmojiShortcodeOptions, EntryPageConfig, type ExtractedCodeBlock, ExtractedDocs, FeatureConfig, FeedFormat, FeedsOptions, FileTreeIconOptions, FileTreeOptions, Fragment, type FrameworkCodegenMode, type FrameworkCodegenTarget, type FrameworkComponentIsland, type FrameworkMarkdownOptions, type FrameworkRenderTarget, type FrameworkTransformData, type FrontmatterSchema, type GenerateVitePressMigrationConfigOptions, GeneratedDocsData, type GitHubLineRange, type GitHubOptions, type GitHubRepoData, type GitHubSourceCommit, type GitHubSourceData, type GitHubSourceRef, type GlobalComponentMap, type HeaderNavItem, HeroAction, HeroConfig, HeroImage, HeroNotice, I18nOptions, ImageOptions, IncludeOptions, type IncrementalMarkdownParseAppendOptions, type IncrementalMarkdownParseResult, IncrementalMarkdownParser, type IncrementalMarkdownParserOptions, type IncrementalMarkdownRenderAppendOptions, type IncrementalMarkdownRenderResult, IncrementalMarkdownRenderer, type IncrementalMarkdownRendererOptions, type IslandInfo, type JSXChild, type JSXElementType, type JSXNode, type JSXProps, JsonLdOptions, JsonLdPublisherOptions, type LoadStrategy, LocaleConfig, type LocaleLabel, type MarkdownChunkSource, MarkdownDisplayFormat, type MarkdownLintFileDiagnostic as MarkdownLintBatchDiagnostic, type MarkdownLintFileDiagnostic, type MarkdownLintDiagnostic, type MarkdownLintDictionaryOptions, type MarkdownLintFileOptions, type MarkdownLintFileOptions as MarkdownLintProjectOptions, type MarkdownLintFileResult, type MarkdownLintFilesResult, type MarkdownLintLanguage, type MarkdownLintOptions, type MarkdownLintResult, type MarkdownLintRuleOptions, type MarkdownLintSeverity, type MarkdownLintStandardDictionaryOptions, MarkdownNode, MarkdownTransformer, MathOptions, MdxImport, MdxImportSpecifier, MdxImportSpecifierKind, type MermaidOptions, type NavGroup, NavItem, NotFoundOptions, type OgBrowserSession, OgImageOptions, type OgImagePageEntry, type OgImageOptions$1 as OgImagePluginOptions, type OgImageResult, type OgImageTemplateFn, type OgImageTemplateProps, type OgpData, type OgpOptions, OxContentOptions, type PageChromeFlags, type PageData, type PageProps, PageResourceError, ParamDoc, type ParseIslandsResult, PermalinksOptions, PublishStateOptions, PwaOptions, ReaderChromeOptions, RedirectsOptions, type RenderContext, type RenderIslandComponentImportsInput, type RenderIslandFn, type ResolveDocumentComponentImportsInput, type ResolveDocumentComponentImportsResult, ResolvedA11y, ResolvedAttrsOptions, ResolvedBadgeOptions, ResolvedBlogOptions, ResolvedBuiltinEmbedOptions, ResolvedCardOptions, ResolvedCascadeOptions, ResolvedCodeAnnotationsOptions, ResolvedCodeBlockLintOptions, ResolvedCodeBlockTypecheckOptions, ResolvedCodeImportOptions, ResolvedCollectionOptions, ResolvedCollectionsOptions, ResolvedContainerOptions, ResolvedContributors, ResolvedDocsEntryPoint, ResolvedDocsOptions, ResolvedDocsTestOptions, type ResolvedDocumentComponentImport, ResolvedEditThisPageOptions, ResolvedEmojiShortcodeOptions, ResolvedFeedsOptions, ResolvedFileTreeOptions, ResolvedI18nOptions, ResolvedImageOptions, ResolvedIncludeOptions, ResolvedJsonLd, ResolvedMathOptions, ResolvedNotFoundOptions, ResolvedOgImageOptions, ResolvedOptions, ResolvedPermalinksOptions, ResolvedPublishStateOptions, ResolvedPwaOptions, ResolvedReaderChrome, ResolvedRedirectsOptions, ResolvedResourcesOptions, ResolvedSanitizeOptions, ResolvedSearchOptions, ResolvedSectionIndexOptions, ResolvedSiteMapsOptions, ResolvedSsgOptions, ResolvedStepsOptions, ResolvedTaxonomiesOptions, ResolvedTeamOptions, type ResolvedThemeConfig, ResolvedTypedHoverOptions, ResolvedVersionEntry, ResolvedVersionsOptions, ResolvedWikiLinkOptions, ResourcesOptions, ReturnDoc, type RunDocsTestsOptions, SanitizeOptions, ScopedSearchQuery, SearchDocument, SearchOptions, SearchResult, SectionIndexOptions, SectionIndexStyle, type SidebarItem, type SiteConfig, SiteMapsOptions, type SocialLinks, SsgNavigationGroup, SsgNavigationItem, SsgOptions, StepsOptions, TaxonomiesOptions, TeamLink, TeamMember, TeamOptions, type ThemeAnnouncement, type ThemeColors, type ThemeComponent, type ThemeConfig, type ThemeEmbed, type ThemeEntryPage, type ThemeFonts, type ThemeFooter, type ThemeHeader, type ThemeLayout, type ThemeProps, type ThemeRenderOptions, type ThemeTokens, ThrowsDoc, TocEntry, type TransformAllOptions, TransformContext, TransformResult, type TwitterEmbedOptions, type TypecheckCodeBlockOptions, TypedHoverOptions, VersionBannerKind, VersionEntry, VersionsOptions, type VitePressConfig, type VitePressFooter, type VitePressLogo, type VitePressNavItem, type VitePressSidebar, type VitePressSidebarItem, type VitePressSocialLink, type VitePressThemeConfig, WikiLinkOptions, type WrittenDocsTestFile, type YouTubeOptions, applyIslandSsrHtml, buildCollectionManifest, buildSearchIndex, buildSsg, classifyPublishState, clearRenderContext, collectDocsTests, collectGitHubRepos, collectGitHubSources, collectMdxIslandNamesFromHtml, collectMdxJsxNamesFromAst, collectOgpUrls, convertVitePressNav, convertVitePressSidebar, createFrameworkMarkdownOptions, createI18nPlugin, createIncrementalMarkdownParser, createIncrementalMarkdownRenderer, createMarkdownEnvironment, createTheme, defaultTheme, defineCollection, defineCollections, defineTheme, discoverDocumentMdxIslands, discoverRegisteredMdxComponents, each, escapeSvelteMarkup, extractCodeBlocks, extractDocs, extractDocsTests, extractIslandInfo, extractVideoId, fetchGitHubSource, fetchOgpData, fetchRepoData, fromVitePressConfig, generateCollectionsVirtualModule, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateTabsCSS, generateTypes, generateVirtualModule, generateVitePressMigrationConfig, hasIslands, inferType, intersectHydratableComponentNames, intersectRegisteredComponentNames, isMarkdownFilePath, isMdxFilePath, isRegisteredComponent, jsx, jsxs, lintCodeBlocks, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, mergeThemes, mermaidClientScript, normalizeMarkdownExtensions, normalizeVitePressFrontmatter, oxContent, parseGitHubLineRange, parseGitHubPermalink, parsePageChromeFlags, partitionPublishedPages, prefetchGitHubRepos, prefetchGitHubSources, prefetchOgpData, raw, readingTimeMinutes, renderAllPages, renderHtmlToFrameworkCode, renderHtmlToReactComponent, renderHtmlToReactCreateElement, renderHtmlToSvelteComponent, renderHtmlToVueComponent, renderHtmlToVueH, renderIslandComponentImports, renderMarkdownStream, renderPage, renderToString, resolveBadgeOptions, resolveBlogCollectionName, resolveBlogOptions, resolveBuiltinEmbedOptions, resolveCardOptions, resolveCascadeOptions, resolveCollectionsOptions, resolveContentRootPath, resolveDocsOptions, resolveDocumentComponentImports, resolveFeedsOptions, resolveFileTreeOptions, resolveHeaderNavItems, resolveI18nOptions, resolveImageOptions, resolveIncludeOptions, resolveLocaleLabel, resolveMathOptions, resolveMdxForFilePath, resolveNotFoundOptions, resolveOgImageOptions, resolvePageChromeOption, resolvePermalinksOptions, resolvePublishStateOptions, resolvePwaOptions, resolveRedirectsOptions, resolveResourcesOptions, resolveSearchOptions, resolveSectionIndexOptions, resolveSiteMapsOptions, resolveSsgOptions, resolveStepsOptions, resolveTaxonomiesOptions, resolveTeamOptions, resolveTheme, resolveTypedHoverOptions, resolveVersionsOptions, runDocsTests, setRenderContext, shouldLintMarkdownFile, stripMarkdownExtension, stripViteQuery, transformAllPlugins, transformGitHub, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformTabs, transformYouTube, typecheckCodeBlocks, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeDocsTestFiles, writeSearchIndex };
6111
+ export { A11yOptions, AttrsOptions, BadgeOptions, type BasePageProps, BlogAuthor, BlogFeedError, BlogFeedFailurePolicy, BlogFeedSource, BlogOptions, BuiltinEmbedOptions, BuiltinPmOptions, CardOptions, CascadeOptions, CodeAnnotationKind, CodeAnnotationSyntax, CodeAnnotationsOptions, type CodeBlockDiagnostic, CodeBlockLintOptions, CodeBlockTypecheckOptions, CodeImportOptions, type CollectedDocsTest, CollectionEntry, CollectionIncludeField, CollectionManifest, CollectionOptions, CollectionQueryBuilder, CollectionQueryOperator, CollectionsOptions, type ComponentRegistry, ContainerOptions, ContainerTypeOptions, ContributorsOptions, DEFAULT_HTML_TEMPLATE, DEFAULT_MARKDOWN_EXTENSIONS, DefaultTheme, type DiscoverDocumentMdxIslandsInput, type DiscoverDocumentMdxIslandsResult, type DiscoverRegisteredMdxComponentsInput, DocEntry, DocMember, DocsEntryPoint, DocsOptions, DocsSortStrategy, DocsSummary, type DocsTestFileOptions, type DocsTestHarnessOptions, DocsTestOptions, DocsTestRunError, type DocsTestRunResult, type DocsTestSource, type DocsTestWriteResult, type DocumentImportDiagnostic, type DocumentImportDiagnosticCode, EditThisPageOptions, EmojiShortcodeOptions, EntryPageConfig, type ExtractedCodeBlock, ExtractedDocs, FeatureConfig, FeedFormat, FeedsOptions, FileTreeIconOptions, FileTreeOptions, Fragment, type FrameworkCodegenMode, type FrameworkCodegenTarget, type FrameworkComponentIsland, type FrameworkMarkdownOptions, type FrameworkRenderTarget, type FrameworkTransformData, type FrontmatterSchema, type GenerateVitePressMigrationConfigOptions, GeneratedDocsData, type GitHubLineRange, type GitHubOptions, type GitHubRepoData, type GitHubSourceCommit, type GitHubSourceData, type GitHubSourceRef, type GlobalComponentMap, type HeadAlternate, type HeadDiagnostic, type HeadInput, type HeadJsonLd, type HeadLink, type HeadMeta, type HeadValidationMode, type HeaderNavItem, HeadingPermalinksOptions, HeroAction, HeroConfig, HeroImage, HeroNotice, I18nOptions, ImageOptions, IncludeOptions, type IncrementalMarkdownParseAppendOptions, type IncrementalMarkdownParseResult, IncrementalMarkdownParser, type IncrementalMarkdownParserOptions, type IncrementalMarkdownRenderAppendOptions, type IncrementalMarkdownRenderResult, IncrementalMarkdownRenderer, type IncrementalMarkdownRendererOptions, type IslandInfo, type JSXChild, type JSXElementType, type JSXNode, type JSXProps, JsonLdOptions, JsonLdPageType, JsonLdPublisherOptions, type LoadStrategy, LocaleConfig, type LocaleLabel, MagicLinkAlias, MagicLinkImageOverride, MagicLinkOptions, type MarkdownChunkSource, MarkdownDisplayFormat, type MarkdownLintFileDiagnostic as MarkdownLintBatchDiagnostic, type MarkdownLintFileDiagnostic, type MarkdownLintDiagnostic, type MarkdownLintDictionaryOptions, type MarkdownLintFileOptions, type MarkdownLintFileOptions as MarkdownLintProjectOptions, type MarkdownLintFileResult, type MarkdownLintFilesResult, type MarkdownLintLanguage, type MarkdownLintOptions, type MarkdownLintResult, type MarkdownLintRuleOptions, type MarkdownLintSeverity, type MarkdownLintStandardDictionaryOptions, MarkdownNode, MarkdownSourceOptions, MarkdownTransformer, MathOptions, MdxImport, MdxImportSpecifier, MdxImportSpecifierKind, type MermaidOptions, type NavGroup, NavItem, NotFoundOptions, type OgBrowserSession, OgImageOptions, type OgImagePageEntry, type OgImageOptions$1 as OgImagePluginOptions, type OgImageResult, type OgImageTemplateFn, type OgImageTemplateProps, type OgpData, type OgpOptions, OxContentOptions, type PageChromeFlags, type PageData, type PageProps, PageResourceError, ParamDoc, type ParseIslandsResult, PermalinksOptions, PublishStateOptions, PwaOptions, ReaderChromeOptions, RedirectsOptions, type RenderContext, type RenderIslandComponentImportsInput, type RenderIslandFn, type RenderedHead, type ResolveDocumentComponentImportsInput, type ResolveDocumentComponentImportsResult, ResolvedA11y, ResolvedAttrsOptions, ResolvedBadgeOptions, ResolvedBlogFeedSource, ResolvedBlogOptions, ResolvedBuiltinEmbedOptions, ResolvedCardOptions, ResolvedCascadeOptions, ResolvedCodeAnnotationsOptions, ResolvedCodeBlockLintOptions, ResolvedCodeBlockTypecheckOptions, ResolvedCodeImportOptions, ResolvedCollectionOptions, ResolvedCollectionsOptions, ResolvedContainerOptions, ResolvedContributors, ResolvedDocsEntryPoint, ResolvedDocsOptions, ResolvedDocsTestOptions, type ResolvedDocumentComponentImport, ResolvedEditThisPageOptions, ResolvedEmojiShortcodeOptions, ResolvedFeedsOptions, ResolvedFileTreeOptions, ResolvedHeadingPermalinksOptions, ResolvedI18nOptions, ResolvedImageOptions, ResolvedIncludeOptions, ResolvedJsonLd, ResolvedMagicLinkOptions, ResolvedMarkdownSourceOptions, ResolvedMathOptions, ResolvedNotFoundOptions, ResolvedOgImageOptions, ResolvedOptions, ResolvedPermalinksOptions, ResolvedPublishStateOptions, ResolvedPwaOptions, ResolvedReaderChrome, ResolvedRedirectsOptions, ResolvedResourcesOptions, ResolvedSanitizeOptions, ResolvedSearchOptions, ResolvedSectionIndexOptions, ResolvedSiteMapsOptions, ResolvedSsgOptions, ResolvedStepsOptions, ResolvedTaxonomiesOptions, ResolvedTeamOptions, type ResolvedThemeConfig, ResolvedTypedHoverOptions, ResolvedVersionEntry, ResolvedVersionsOptions, ResolvedWikiLinkOptions, ResourcesOptions, ReturnDoc, type RunDocsTestsOptions, SanitizeOptions, ScopedSearchQuery, SearchDocument, SearchOptions, SearchResult, SectionIndexOptions, SectionIndexStyle, type SidebarItem, type SiteConfig, type SiteHead, SiteMapsOptions, type SocialLinks, SsgNavigationGroup, SsgNavigationItem, SsgOptions, StepsOptions, TaxonomiesOptions, TeamLink, TeamMember, TeamOptions, type ThemeAnnouncement, type ThemeColors, type ThemeComponent, type ThemeConfig, type ThemeEmbed, type ThemeEntryPage, type ThemeFonts, type ThemeFooter, type ThemeHeader, type ThemeLayout, type ThemeProps, type ThemeRenderOptions, type ThemeTokens, ThrowsDoc, TocEntry, type TransformAllOptions, TransformContext, TransformResult, type TwitterEmbedOptions, type TypecheckCodeBlockOptions, TypedHoverOptions, VersionBannerKind, VersionEntry, VersionsOptions, type VitePressConfig, type VitePressFooter, type VitePressLogo, type VitePressNavItem, type VitePressSidebar, type VitePressSidebarItem, type VitePressSocialLink, type VitePressThemeConfig, WikiLinkOptions, type WrittenDocsTestFile, type YouTubeOptions, applyIslandSsrHtml, buildCollectionManifest, buildSearchIndex, buildSsg, classifyPublishState, clearRenderContext, collectDocsTests, collectGitHubRepos, collectGitHubSources, collectMdxIslandNamesFromHtml, collectMdxJsxNamesFromAst, collectOgpUrls, convertVitePressNav, convertVitePressSidebar, createFrameworkMarkdownOptions, createI18nPlugin, createIncrementalMarkdownParser, createIncrementalMarkdownRenderer, createMarkdownEnvironment, createTheme, defaultTheme, defineCollection, defineCollections, defineTheme, discoverDocumentMdxIslands, discoverRegisteredMdxComponents, each, escapeSvelteMarkup, extractCodeBlocks, extractDocs, extractDocsTests, extractIslandInfo, extractVideoId, fetchGitHubSource, fetchOgpData, fetchRepoData, fromVitePressConfig, generateCollectionsVirtualModule, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateTabsCSS, generateTypes, generateVirtualModule, generateVitePressMigrationConfig, hasIslands, inferType, intersectHydratableComponentNames, intersectRegisteredComponentNames, isMarkdownFilePath, isMdxFilePath, isRegisteredComponent, jsx, jsxs, lintCodeBlocks, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, mergeThemes, mermaidClientScript, normalizeMarkdownExtensions, normalizeVitePressFrontmatter, oxContent, parseGitHubLineRange, parseGitHubPermalink, parsePageChromeFlags, partitionPublishedPages, prefetchGitHubRepos, prefetchGitHubSources, prefetchOgpData, raw, readingTimeMinutes, renderAllPages, renderHead, renderHtmlToFrameworkCode, renderHtmlToReactComponent, renderHtmlToReactCreateElement, renderHtmlToSvelteComponent, renderHtmlToVueComponent, renderHtmlToVueH, renderIslandComponentImports, renderMarkdownStream, renderPage, renderToString, resolveBadgeOptions, resolveBlogCollectionName, resolveBlogOptions, resolveBuiltinEmbedOptions, resolveCardOptions, resolveCascadeOptions, resolveCollectionsOptions, resolveContentRootPath, resolveDocsOptions, resolveDocumentComponentImports, resolveFeedsOptions, resolveFileTreeOptions, resolveHeadValidation, resolveHeaderNavItems, resolveHeadingPermalinksOptions, resolveI18nOptions, resolveImageOptions, resolveIncludeOptions, resolveLocaleLabel, resolveMarkdownSourceOptions, resolveMathOptions, resolveMdxForFilePath, resolveNotFoundOptions, resolveOgImageOptions, resolvePageChromeOption, resolvePermalinksOptions, resolvePublishStateOptions, resolvePwaOptions, resolveRedirectsOptions, resolveResourcesOptions, resolveSearchOptions, resolveSectionIndexOptions, resolveSiteMapsOptions, resolveSsgOptions, resolveStepsOptions, resolveTaxonomiesOptions, resolveTeamOptions, resolveTheme, resolveTypedHoverOptions, resolveVersionsOptions, runDocsTests, setRenderContext, shouldLintMarkdownFile, stripMarkdownExtension, stripViteQuery, transformAllPlugins, transformGitHub, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformTabs, transformYouTube, typecheckCodeBlocks, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeDocsTestFiles, writeSearchIndex };
5772
6112
  //# sourceMappingURL=index.d.mts.map