@ox-content/vite-plugin 3.0.0-alpha.1 → 3.0.0-alpha.11
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.cjs +17738 -6540
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2863 -168
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2863 -168
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +17717 -6540
- package/dist/index.mjs.map +1 -1
- package/dist/styles/all.css +12 -0
- package/dist/styles/citations.css +62 -0
- package/dist/styles/core.css +2209 -0
- package/dist/styles/github.css +262 -0
- package/dist/styles/graphviz.css +34 -0
- package/dist/styles/magic-links.css +33 -0
- package/dist/styles/mermaid.css +151 -0
- package/dist/styles/not-by-ai.css +43 -0
- package/dist/styles/ogp.css +163 -0
- package/dist/styles/social.css +625 -0
- package/dist/styles/tabs.css +210 -0
- package/dist/styles/twitter-full.css +453 -0
- package/dist/styles/youtube.css +87 -0
- package/dist/vitepress.cjs +617 -10
- package/dist/vitepress.cjs.map +1 -1
- package/dist/vitepress.mjs +591 -10
- package/dist/vitepress.mjs.map +1 -1
- package/package.json +31 -4
- package/dist/interop.cjs +0 -31
- package/dist/interop.cjs.map +0 -1
- package/dist/interop.mjs +0 -26
- package/dist/interop.mjs.map +0 -1
- package/dist/tabs.cjs +0 -98
- package/dist/tabs.cjs.map +0 -1
- package/dist/tabs.mjs +0 -99
- package/dist/tabs.mjs.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -48,6 +48,33 @@ interface ResolvedHeaderNavItem {
|
|
|
48
48
|
/** Resolves locale maps so NAPI always receives string labels. */
|
|
49
49
|
declare function resolveHeaderNavItems(items: HeaderNavItem[] | undefined, locale?: string, defaultLocale?: string): ResolvedHeaderNavItem[] | undefined;
|
|
50
50
|
//#endregion
|
|
51
|
+
//#region src/theme-fonts.d.ts
|
|
52
|
+
type ThemeFontProvider = "google" | "local";
|
|
53
|
+
type ThemeFontStyle = "normal" | "italic";
|
|
54
|
+
type ThemeFontDisplay = "auto" | "block" | "swap" | "fallback" | "optional";
|
|
55
|
+
/** UnoCSS-inspired family descriptor. The string stack form remains valid. */
|
|
56
|
+
interface ThemeWebFont {
|
|
57
|
+
/** Family name, e.g. `"Inter"` or `"DM Mono"`. */
|
|
58
|
+
family: string;
|
|
59
|
+
/** Defaults to `"local"` when `path` is set, otherwise `"google"`. */
|
|
60
|
+
provider?: ThemeFontProvider;
|
|
61
|
+
/** File, directory, or `@fontsource/*` package. Required for `local`. */
|
|
62
|
+
path?: string;
|
|
63
|
+
weights?: number[];
|
|
64
|
+
styles?: ThemeFontStyle[];
|
|
65
|
+
subsets?: string[];
|
|
66
|
+
display?: ThemeFontDisplay;
|
|
67
|
+
/** Copy files into the SSG output and emit `@font-face`. */
|
|
68
|
+
selfHost?: boolean;
|
|
69
|
+
/** Extra families after `family` in the emitted CSS stack. */
|
|
70
|
+
fallbacks?: string[];
|
|
71
|
+
/** Preload every self-hosted face, or only these weights. */
|
|
72
|
+
preload?: boolean | number[];
|
|
73
|
+
/** Optional `unicode-range` for local faces. */
|
|
74
|
+
unicodeRange?: string;
|
|
75
|
+
}
|
|
76
|
+
type ThemeFontValue = string | ThemeWebFont;
|
|
77
|
+
//#endregion
|
|
51
78
|
//#region src/theme-tokens.d.ts
|
|
52
79
|
/**
|
|
53
80
|
* Free-form `--octc-*` custom properties for themes that need more than the
|
|
@@ -100,12 +127,17 @@ interface ThemeLayout {
|
|
|
100
127
|
}
|
|
101
128
|
/**
|
|
102
129
|
* Theme font configuration.
|
|
130
|
+
*
|
|
131
|
+
* `sans` and `mono` accept a CSS stack string or a web-font object. Named
|
|
132
|
+
* families are extra stacks exposed as `--octc-font-<name>`.
|
|
103
133
|
*/
|
|
104
134
|
interface ThemeFonts {
|
|
105
|
-
/** Sans-serif font stack */
|
|
106
|
-
sans?:
|
|
107
|
-
/** Monospace font stack */
|
|
108
|
-
mono?:
|
|
135
|
+
/** Sans-serif font stack or self-hosted family */
|
|
136
|
+
sans?: ThemeFontValue;
|
|
137
|
+
/** Monospace font stack or self-hosted family */
|
|
138
|
+
mono?: ThemeFontValue;
|
|
139
|
+
/** Additional families, exposed as `--octc-font-<name>` */
|
|
140
|
+
named?: Record<string, ThemeFontValue>;
|
|
109
141
|
}
|
|
110
142
|
/**
|
|
111
143
|
* Entry page theme configuration.
|
|
@@ -225,6 +257,14 @@ interface ThemeConfig {
|
|
|
225
257
|
* `breadcrumbs: false` still hides it on that page.
|
|
226
258
|
*/
|
|
227
259
|
breadcrumbs?: boolean | Record<string, unknown>;
|
|
260
|
+
/**
|
|
261
|
+
* Heading permalink visibility. CSS only — the renderer HTML stays
|
|
262
|
+
* `<a class="header-anchor" href="#id">`.
|
|
263
|
+
*
|
|
264
|
+
* `"hover"` (default) reveals the `#` on hover / focus-visible, and
|
|
265
|
+
* stays visible on touch. `"always"` keeps it visible.
|
|
266
|
+
*/
|
|
267
|
+
headingPermalink?: "hover" | "always";
|
|
228
268
|
/** Light mode colors (maps to CSS variables) */
|
|
229
269
|
colors?: ThemeColors;
|
|
230
270
|
/** Dark mode colors (maps to CSS variables) */
|
|
@@ -279,6 +319,7 @@ interface ResolvedThemeConfig {
|
|
|
279
319
|
viewTransitions: boolean;
|
|
280
320
|
aside: boolean;
|
|
281
321
|
breadcrumbs: boolean;
|
|
322
|
+
headingPermalink: "hover" | "always";
|
|
282
323
|
colors: ThemeColors;
|
|
283
324
|
darkColors: ThemeColors;
|
|
284
325
|
fonts: ThemeFonts;
|
|
@@ -346,6 +387,377 @@ declare function mergeThemes(...themes: (ThemeConfig | ThemeConfig[])[]): ThemeC
|
|
|
346
387
|
*/
|
|
347
388
|
declare function resolveTheme(config?: ThemeConfig | ThemeConfig[]): ResolvedThemeConfig;
|
|
348
389
|
//#endregion
|
|
390
|
+
//#region src/plugins/tabs.d.ts
|
|
391
|
+
/**
|
|
392
|
+
* Transform Tabs components in HTML.
|
|
393
|
+
*/
|
|
394
|
+
declare function transformTabs(html: string): Promise<string>;
|
|
395
|
+
/**
|
|
396
|
+
* Generate dynamic CSS for :has() based tab switching.
|
|
397
|
+
* This is needed because :has() selectors need unique IDs.
|
|
398
|
+
*/
|
|
399
|
+
declare function generateTabsCSS(groupCount: number): string;
|
|
400
|
+
//#endregion
|
|
401
|
+
//#region src/plugins/pm.d.ts
|
|
402
|
+
/**
|
|
403
|
+
* Package Manager Tabs Plugin
|
|
404
|
+
*
|
|
405
|
+
* Transforms <pm>npm install …</pm> blocks into a tab group with one tab per
|
|
406
|
+
* package manager (npm/pnpm/yarn/bun). The single npm-style command is converted
|
|
407
|
+
* to each package manager's equivalent natively in Rust (`transformPmEmbeds` in
|
|
408
|
+
* @ox-content/napi), and the result reuses the same `ox-tabs` widget markup as
|
|
409
|
+
* the generic `<tabs>` plugin so styling and keyboard navigation are consistent.
|
|
410
|
+
*
|
|
411
|
+
* Syncing is opt-in (off by default): when enabled, the rendered group carries a
|
|
412
|
+
* `data-ox-tab-group="pkg-manager"` attribute so the client runtime can keep
|
|
413
|
+
* every package-manager group on the page in sync via localStorage.
|
|
414
|
+
*
|
|
415
|
+
* Package-manager groups share the tab-group counter with the `<tabs>` plugin so
|
|
416
|
+
* `data-group` ids (and the CSS produced by `generateTabsCSS`) stay unique.
|
|
417
|
+
*/
|
|
418
|
+
/** Options for {@link transformPm}. */
|
|
419
|
+
interface PmOptions {
|
|
420
|
+
/**
|
|
421
|
+
* Enable opt-in synced package-manager tab groups. When `true`, a
|
|
422
|
+
* `data-ox-tab-group="pkg-manager"` attribute is emitted so the client runtime
|
|
423
|
+
* syncs the active package manager across every pm group on the page and
|
|
424
|
+
* persists the choice in localStorage.
|
|
425
|
+
* @default false
|
|
426
|
+
*/
|
|
427
|
+
sync?: boolean;
|
|
428
|
+
}
|
|
429
|
+
//#endregion
|
|
430
|
+
//#region src/plugins/youtube.d.ts
|
|
431
|
+
/**
|
|
432
|
+
* YouTube Plugin - Privacy-enhanced iframe embedding
|
|
433
|
+
*
|
|
434
|
+
* Transforms <YouTube> components into responsive iframe embeds using
|
|
435
|
+
* youtube-nocookie.com for enhanced privacy. A digits-only `start` attribute
|
|
436
|
+
* becomes `?start=` on the iframe URL.
|
|
437
|
+
*
|
|
438
|
+
* The HTML rewrite is performed in Rust (`transformYoutubeEmbeds` in
|
|
439
|
+
* @ox-content/napi), replacing the previous rehype parse/stringify
|
|
440
|
+
* round-trip. This module keeps the public TS surface and a cheap marker
|
|
441
|
+
* check so pages without a `<youtube>` element never cross the NAPI boundary.
|
|
442
|
+
*/
|
|
443
|
+
interface YouTubeOptions {
|
|
444
|
+
/**
|
|
445
|
+
* Use privacy-enhanced mode (`youtube-nocookie.com`).
|
|
446
|
+
* @default true
|
|
447
|
+
*/
|
|
448
|
+
privacyEnhanced?: boolean;
|
|
449
|
+
/**
|
|
450
|
+
* Default iframe aspect ratio.
|
|
451
|
+
* @default '16/9'
|
|
452
|
+
*/
|
|
453
|
+
aspectRatio?: string;
|
|
454
|
+
/**
|
|
455
|
+
* Allow fullscreen playback.
|
|
456
|
+
* @default true
|
|
457
|
+
*/
|
|
458
|
+
allowFullscreen?: boolean;
|
|
459
|
+
/**
|
|
460
|
+
* Lazy load the iframe.
|
|
461
|
+
* @default true
|
|
462
|
+
*/
|
|
463
|
+
lazyLoad?: boolean;
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Extract a YouTube video ID from a bare ID or a watch / share / embed /
|
|
467
|
+
* shorts URL.
|
|
468
|
+
*
|
|
469
|
+
* The rule lives in Rust so this function and the `<youtube>` rewrite below
|
|
470
|
+
* cannot disagree about what counts as a video: `transformYoutubeEmbeds`
|
|
471
|
+
* resolves IDs with the same code.
|
|
472
|
+
*/
|
|
473
|
+
declare function extractVideoId(input: string): string | null;
|
|
474
|
+
/**
|
|
475
|
+
* Transform YouTube components in HTML.
|
|
476
|
+
*/
|
|
477
|
+
declare function transformYouTube(html: string, options?: YouTubeOptions): Promise<string>;
|
|
478
|
+
//#endregion
|
|
479
|
+
//#region src/plugins/provider-articles.d.ts
|
|
480
|
+
interface ProviderArticleEmbedOptions {
|
|
481
|
+
/** Fetch article metadata at build time. @default true */
|
|
482
|
+
fetch?: boolean;
|
|
483
|
+
/** Metadata request timeout in milliseconds. @default 10000 */
|
|
484
|
+
timeout?: number;
|
|
485
|
+
/** Cache fetched metadata in memory for the current process. @default true */
|
|
486
|
+
cache?: boolean;
|
|
487
|
+
/** Cache TTL in milliseconds. @default 3600000 */
|
|
488
|
+
cacheTTL?: number;
|
|
489
|
+
/** Persist metadata across builds. Off by default. */
|
|
490
|
+
persistCache?: boolean;
|
|
491
|
+
/** Directory for the persistent cache. */
|
|
492
|
+
cacheDir?: string;
|
|
493
|
+
}
|
|
494
|
+
//#endregion
|
|
495
|
+
//#region src/plugins/provider-packages.d.ts
|
|
496
|
+
interface ProviderPackageEmbedOptions {
|
|
497
|
+
/** Fetch package metadata at build time. @default true */
|
|
498
|
+
fetch?: boolean;
|
|
499
|
+
/** Metadata request timeout in milliseconds. @default 10000 */
|
|
500
|
+
timeout?: number;
|
|
501
|
+
/** Cache fetched metadata in memory for the current process. @default true */
|
|
502
|
+
cache?: boolean;
|
|
503
|
+
/** Cache TTL in milliseconds. @default 3600000 */
|
|
504
|
+
cacheTTL?: number;
|
|
505
|
+
/** Persist metadata across builds. Off by default. */
|
|
506
|
+
persistCache?: boolean;
|
|
507
|
+
/** Directory for the persistent cache. */
|
|
508
|
+
cacheDir?: string;
|
|
509
|
+
}
|
|
510
|
+
//#endregion
|
|
511
|
+
//#region src/plugins/provider-playgrounds.d.ts
|
|
512
|
+
interface ProviderPlaygroundEmbedOptions {
|
|
513
|
+
/** Fetch playground metadata at build time where a public endpoint exists. @default true */
|
|
514
|
+
fetch?: boolean;
|
|
515
|
+
/** Add provider iframe URLs for supported providers. @default false */
|
|
516
|
+
iframe?: boolean;
|
|
517
|
+
/** Metadata request timeout in milliseconds. @default 10000 */
|
|
518
|
+
timeout?: number;
|
|
519
|
+
/** Cache fetched metadata in memory for the current process. @default true */
|
|
520
|
+
cache?: boolean;
|
|
521
|
+
/** Cache TTL in milliseconds. @default 3600000 */
|
|
522
|
+
cacheTTL?: number;
|
|
523
|
+
/** Persist metadata across builds. Off by default. */
|
|
524
|
+
persistCache?: boolean;
|
|
525
|
+
/** Directory for the persistent cache. */
|
|
526
|
+
cacheDir?: string;
|
|
527
|
+
}
|
|
528
|
+
//#endregion
|
|
529
|
+
//#region src/plugins/provider-videos.d.ts
|
|
530
|
+
interface ProviderVideoEmbedOptions {
|
|
531
|
+
/** Fetch public video metadata at build time where supported. @default true */
|
|
532
|
+
fetch?: boolean;
|
|
533
|
+
/** Add lazy provider iframe URLs when supported. @default false */
|
|
534
|
+
iframe?: boolean;
|
|
535
|
+
/** Twitch embed parent domain or domains. Required for Twitch iframes. */
|
|
536
|
+
parent?: string | string[];
|
|
537
|
+
/** Metadata request timeout in milliseconds. @default 10000 */
|
|
538
|
+
timeout?: number;
|
|
539
|
+
/** Cache fetched metadata in memory for the current process. @default true */
|
|
540
|
+
cache?: boolean;
|
|
541
|
+
/** Cache TTL in milliseconds. @default 3600000 */
|
|
542
|
+
cacheTTL?: number;
|
|
543
|
+
/** Persist metadata across builds. Off by default. */
|
|
544
|
+
persistCache?: boolean;
|
|
545
|
+
/** Directory for the persistent cache. */
|
|
546
|
+
cacheDir?: string;
|
|
547
|
+
}
|
|
548
|
+
//#endregion
|
|
549
|
+
//#region src/plugins/reddit/types.d.ts
|
|
550
|
+
interface RedditEmbedOptions {
|
|
551
|
+
/**
|
|
552
|
+
* Fetch Reddit post metadata at build time.
|
|
553
|
+
* @default true
|
|
554
|
+
*/
|
|
555
|
+
fetch?: boolean;
|
|
556
|
+
/**
|
|
557
|
+
* Metadata request timeout in milliseconds.
|
|
558
|
+
* @default 10000
|
|
559
|
+
*/
|
|
560
|
+
timeout?: number;
|
|
561
|
+
/**
|
|
562
|
+
* Cache fetched post metadata in memory for the current process.
|
|
563
|
+
* @default true
|
|
564
|
+
*/
|
|
565
|
+
cache?: boolean;
|
|
566
|
+
/**
|
|
567
|
+
* Cache TTL in milliseconds. Fresh memory entries skip the network.
|
|
568
|
+
* @default 3600000
|
|
569
|
+
*/
|
|
570
|
+
cacheTTL?: number;
|
|
571
|
+
/**
|
|
572
|
+
* User agent sent to Reddit's JSON endpoint.
|
|
573
|
+
* @default 'ox-content-reddit-bot/1.0 (compatible; +https://github.com/ubugeeei-prod/ox-content)'
|
|
574
|
+
*/
|
|
575
|
+
userAgent?: string;
|
|
576
|
+
}
|
|
577
|
+
interface RedditPostReference {
|
|
578
|
+
url: string;
|
|
579
|
+
id?: string;
|
|
580
|
+
subreddit?: string;
|
|
581
|
+
slug?: string;
|
|
582
|
+
shareId?: string;
|
|
583
|
+
apiUrl?: string;
|
|
584
|
+
}
|
|
585
|
+
interface RedditPostImage {
|
|
586
|
+
url: string;
|
|
587
|
+
width?: number;
|
|
588
|
+
height?: number;
|
|
589
|
+
}
|
|
590
|
+
interface RedditPostData {
|
|
591
|
+
permalink: string;
|
|
592
|
+
subreddit: string;
|
|
593
|
+
title: string;
|
|
594
|
+
author?: string;
|
|
595
|
+
body?: string;
|
|
596
|
+
score?: number;
|
|
597
|
+
commentCount?: number;
|
|
598
|
+
createdAt?: string;
|
|
599
|
+
originalUrl?: string;
|
|
600
|
+
image?: RedditPostImage;
|
|
601
|
+
}
|
|
602
|
+
//#endregion
|
|
603
|
+
//#region src/plugins/reddit/transform.d.ts
|
|
604
|
+
declare function transformRedditEmbeds(html: string, options?: RedditEmbedOptions): Promise<string>;
|
|
605
|
+
//#endregion
|
|
606
|
+
//#region src/plugins/reddit/url.d.ts
|
|
607
|
+
declare function parseRedditPostReference(value: string): RedditPostReference | null;
|
|
608
|
+
//#endregion
|
|
609
|
+
//#region src/plugins/twitter/types.d.ts
|
|
610
|
+
interface TwitterEmbedOptions {
|
|
611
|
+
/** Fetch the post body, author, and media from X at build time. */
|
|
612
|
+
fetch?: boolean;
|
|
613
|
+
/** Language sent to the syndication endpoint. @default "en" */
|
|
614
|
+
lang?: string;
|
|
615
|
+
/** Request timeout in milliseconds. @default 10000 */
|
|
616
|
+
timeout?: number;
|
|
617
|
+
/** Cache syndication responses in memory and on disk. @default true */
|
|
618
|
+
cache?: boolean;
|
|
619
|
+
/** Directory used for the persistent metadata cache. @default ".cache/ox-content/twitter" */
|
|
620
|
+
cacheDir?: string;
|
|
621
|
+
/** Directory where avatars, photos, and videos are written. @default "public/ox-content/twitter" */
|
|
622
|
+
mediaOutputDir?: string;
|
|
623
|
+
/** Public URL prefix for downloaded media. @default "/ox-content/twitter" */
|
|
624
|
+
mediaPublicPath?: string;
|
|
625
|
+
/** Download MP4 video and animated GIF assets at build time. @default false */
|
|
626
|
+
downloadVideo?: boolean;
|
|
627
|
+
/** Maximum video size in bytes. Oversized assets are skipped. @default 8388608 */
|
|
628
|
+
maxVideoBytes?: number;
|
|
629
|
+
/** Fetched-card chrome. `"full"` matches sveltweet / react-tweet. @default "compact" */
|
|
630
|
+
appearance?: TweetAppearance;
|
|
631
|
+
/**
|
|
632
|
+
* IANA timezone for full-card timestamps.
|
|
633
|
+
* Invalid values fall back to UTC so build output stays deterministic.
|
|
634
|
+
* @default "UTC"
|
|
635
|
+
*/
|
|
636
|
+
timeZone?: string;
|
|
637
|
+
}
|
|
638
|
+
type TweetAppearance = "compact" | "full";
|
|
639
|
+
//#endregion
|
|
640
|
+
//#region src/plugins/media.d.ts
|
|
641
|
+
interface MediaEmbedOptions {
|
|
642
|
+
/**
|
|
643
|
+
* Render `<Spotify>` embeds.
|
|
644
|
+
* @default false
|
|
645
|
+
*/
|
|
646
|
+
spotify?: boolean;
|
|
647
|
+
/**
|
|
648
|
+
* Render `<AppleMusic>` embeds.
|
|
649
|
+
* @default false
|
|
650
|
+
*/
|
|
651
|
+
appleMusic?: boolean;
|
|
652
|
+
/**
|
|
653
|
+
* Render `<SpeakerDeck>` embeds.
|
|
654
|
+
* @default false
|
|
655
|
+
*/
|
|
656
|
+
speakerDeck?: boolean;
|
|
657
|
+
/**
|
|
658
|
+
* Render `<Audio>` native players.
|
|
659
|
+
* @default false
|
|
660
|
+
*/
|
|
661
|
+
audio?: boolean;
|
|
662
|
+
/**
|
|
663
|
+
* Render `<Video>` native players.
|
|
664
|
+
* @default false
|
|
665
|
+
*/
|
|
666
|
+
video?: boolean;
|
|
667
|
+
/**
|
|
668
|
+
* Render `<StackBlitz>` embeds.
|
|
669
|
+
* @default false
|
|
670
|
+
*/
|
|
671
|
+
stackBlitz?: boolean;
|
|
672
|
+
/**
|
|
673
|
+
* Render `<Tweet>` / `<XPost>` static cards. Pass `{ fetch: true }` to
|
|
674
|
+
* resolve the post content and self-host its media at build time.
|
|
675
|
+
* @default false
|
|
676
|
+
*/
|
|
677
|
+
twitter?: boolean | TwitterEmbedOptions;
|
|
678
|
+
/**
|
|
679
|
+
* Render `<Reddit>` static cards with build-time metadata fetch.
|
|
680
|
+
* @default false
|
|
681
|
+
*/
|
|
682
|
+
reddit?: boolean | RedditEmbedOptions;
|
|
683
|
+
/**
|
|
684
|
+
* Render `<Bluesky>` static cards.
|
|
685
|
+
* @default false
|
|
686
|
+
*/
|
|
687
|
+
bluesky?: boolean;
|
|
688
|
+
/**
|
|
689
|
+
* Render `<GoogleMaps>` static place cards.
|
|
690
|
+
* @default false
|
|
691
|
+
*/
|
|
692
|
+
googleMaps?: boolean;
|
|
693
|
+
/**
|
|
694
|
+
* Render `<Qiita>` static article cards.
|
|
695
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render a link-only card.
|
|
696
|
+
* @default false
|
|
697
|
+
*/
|
|
698
|
+
qiita?: boolean | ProviderArticleEmbedOptions;
|
|
699
|
+
/**
|
|
700
|
+
* Render `<Zenn>` static article cards.
|
|
701
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render a link-only card.
|
|
702
|
+
* @default false
|
|
703
|
+
*/
|
|
704
|
+
zenn?: boolean | ProviderArticleEmbedOptions;
|
|
705
|
+
/**
|
|
706
|
+
* Render `<NpmPackage>`, `<CratesIo>`, `<PyPI>`, and `<DockerHub>` package cards.
|
|
707
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render link-only cards.
|
|
708
|
+
* @default false
|
|
709
|
+
*/
|
|
710
|
+
packageRegistry?: boolean | ProviderPackageEmbedOptions;
|
|
711
|
+
/**
|
|
712
|
+
* Render `<CodePen>`, `<JSFiddle>`, and `<Observable>` static playground cards.
|
|
713
|
+
* Pass `{ iframe: true }` to add lazy provider iframe URLs where supported.
|
|
714
|
+
* @default false
|
|
715
|
+
*/
|
|
716
|
+
playgrounds?: boolean | ProviderPlaygroundEmbedOptions;
|
|
717
|
+
/**
|
|
718
|
+
* Render `<Vimeo>` static video cards.
|
|
719
|
+
* Pass `{ iframe: true }` to add lazy player iframe URLs.
|
|
720
|
+
* @default false
|
|
721
|
+
*/
|
|
722
|
+
vimeo?: boolean | ProviderVideoEmbedOptions;
|
|
723
|
+
/**
|
|
724
|
+
* Render `<Twitch>` static video, clip, and channel cards.
|
|
725
|
+
* Pass `{ iframe: true, parent: "example.com" }` to add Twitch player iframes.
|
|
726
|
+
* @default false
|
|
727
|
+
*/
|
|
728
|
+
twitch?: boolean | ProviderVideoEmbedOptions;
|
|
729
|
+
/**
|
|
730
|
+
* Render `<Discord>` static invite/message cards.
|
|
731
|
+
* @default false
|
|
732
|
+
*/
|
|
733
|
+
discord?: boolean;
|
|
734
|
+
/**
|
|
735
|
+
* Render `<Fediverse>`, `<Mastodon>`, `<Misskey>`, and `<Mixi2>` static cards.
|
|
736
|
+
* @default false
|
|
737
|
+
*/
|
|
738
|
+
fediverse?: boolean;
|
|
739
|
+
/**
|
|
740
|
+
* Render `<Facebook>` static post cards.
|
|
741
|
+
* @default false
|
|
742
|
+
*/
|
|
743
|
+
facebook?: boolean;
|
|
744
|
+
/**
|
|
745
|
+
* Render `<Threads>` static post cards.
|
|
746
|
+
* @default false
|
|
747
|
+
*/
|
|
748
|
+
threads?: boolean;
|
|
749
|
+
/**
|
|
750
|
+
* Render `<Instagram>` static post cards.
|
|
751
|
+
* @default false
|
|
752
|
+
*/
|
|
753
|
+
instagram?: boolean;
|
|
754
|
+
/**
|
|
755
|
+
* Render `<WebContainer>` lazy placeholder blocks.
|
|
756
|
+
* @default false
|
|
757
|
+
*/
|
|
758
|
+
webContainer?: boolean;
|
|
759
|
+
}
|
|
760
|
+
//#endregion
|
|
349
761
|
//#region src/plugins/github/types.d.ts
|
|
350
762
|
interface GitHubRepoData {
|
|
351
763
|
name: string;
|
|
@@ -371,6 +783,11 @@ interface GitHubSourceRef {
|
|
|
371
783
|
permalink: string;
|
|
372
784
|
lines?: GitHubLineRange;
|
|
373
785
|
}
|
|
786
|
+
interface GitHubSourceCommit {
|
|
787
|
+
sha: string;
|
|
788
|
+
message: string;
|
|
789
|
+
html_url: string;
|
|
790
|
+
}
|
|
374
791
|
interface GitHubSourceData {
|
|
375
792
|
repo: string;
|
|
376
793
|
ref: string;
|
|
@@ -380,6 +797,7 @@ interface GitHubSourceData {
|
|
|
380
797
|
size: number;
|
|
381
798
|
html_url: string;
|
|
382
799
|
language: string | null;
|
|
800
|
+
commit?: GitHubSourceCommit;
|
|
383
801
|
}
|
|
384
802
|
interface GitHubOptions {
|
|
385
803
|
/**
|
|
@@ -447,31 +865,7 @@ declare function parseGitHubPermalink(value: string): GitHubSourceRef | null;
|
|
|
447
865
|
*/
|
|
448
866
|
declare function transformGitHub(html: string, repoDataMap?: Map<string, GitHubRepoData | null>, options?: GitHubOptions): Promise<string>;
|
|
449
867
|
//#endregion
|
|
450
|
-
//#region src/plugins/
|
|
451
|
-
interface TwitterEmbedOptions {
|
|
452
|
-
/** Fetch the post body, author, and media from X at build time. */
|
|
453
|
-
fetch?: boolean;
|
|
454
|
-
/** Language sent to the syndication endpoint. @default "en" */
|
|
455
|
-
lang?: string;
|
|
456
|
-
/** Request timeout in milliseconds. @default 10000 */
|
|
457
|
-
timeout?: number;
|
|
458
|
-
/** Cache syndication responses in memory and on disk. @default true */
|
|
459
|
-
cache?: boolean;
|
|
460
|
-
/** Directory used for the persistent metadata cache. @default ".cache/ox-content/twitter" */
|
|
461
|
-
cacheDir?: string;
|
|
462
|
-
/** Directory where avatars and photos are written. @default "public/ox-content/twitter" */
|
|
463
|
-
mediaOutputDir?: string;
|
|
464
|
-
/** Public URL prefix for downloaded media. @default "/ox-content/twitter" */
|
|
465
|
-
mediaPublicPath?: string;
|
|
466
|
-
}
|
|
467
|
-
//#endregion
|
|
468
|
-
//#region src/plugins/ogp.d.ts
|
|
469
|
-
/**
|
|
470
|
-
* OGP Card Plugin - Link card embedding
|
|
471
|
-
*
|
|
472
|
-
* Transforms <OgCard> components into static link preview cards
|
|
473
|
-
* by fetching OGP metadata at build time.
|
|
474
|
-
*/
|
|
868
|
+
//#region src/plugins/ogp/types.d.ts
|
|
475
869
|
interface OgpData {
|
|
476
870
|
url: string;
|
|
477
871
|
title: string;
|
|
@@ -488,119 +882,45 @@ interface OgpOptions {
|
|
|
488
882
|
timeout?: number;
|
|
489
883
|
/**
|
|
490
884
|
* Cache fetched Open Graph metadata in memory for the current process.
|
|
885
|
+
* Persistent disk cache also requires this to be enabled.
|
|
491
886
|
* @default true
|
|
492
887
|
*/
|
|
493
888
|
cache?: boolean;
|
|
494
889
|
/**
|
|
495
|
-
* Cache TTL in milliseconds.
|
|
890
|
+
* Cache TTL in milliseconds. Fresh memory and disk entries skip the network.
|
|
496
891
|
* @default 3600000
|
|
497
892
|
*/
|
|
498
893
|
cacheTTL?: number;
|
|
499
894
|
/**
|
|
500
|
-
*
|
|
501
|
-
*
|
|
502
|
-
*/
|
|
503
|
-
userAgent?: string;
|
|
504
|
-
}
|
|
505
|
-
/**
|
|
506
|
-
* Fetch OGP data for a URL.
|
|
507
|
-
*/
|
|
508
|
-
declare function fetchOgpData(url: string, options: Required<OgpOptions>): Promise<OgpData | null>;
|
|
509
|
-
/**
|
|
510
|
-
* Collect all OGP URLs from HTML for pre-fetching.
|
|
511
|
-
*/
|
|
512
|
-
declare function collectOgpUrls(html: string): Promise<string[]>;
|
|
513
|
-
/**
|
|
514
|
-
* Pre-fetch all OGP data.
|
|
515
|
-
*/
|
|
516
|
-
declare function prefetchOgpData(urls: string[], options?: OgpOptions): Promise<Map<string, OgpData | null>>;
|
|
517
|
-
/**
|
|
518
|
-
* Transform OgCard components in HTML.
|
|
519
|
-
*/
|
|
520
|
-
declare function transformOgp(html: string, ogpDataMap?: Map<string, OgpData | null>, options?: OgpOptions): Promise<string>;
|
|
521
|
-
//#endregion
|
|
522
|
-
//#region src/plugins/pm.d.ts
|
|
523
|
-
/**
|
|
524
|
-
* Package Manager Tabs Plugin
|
|
525
|
-
*
|
|
526
|
-
* Transforms <pm>npm install …</pm> blocks into a tab group with one tab per
|
|
527
|
-
* package manager (npm/pnpm/yarn/bun). The single npm-style command is converted
|
|
528
|
-
* to each package manager's equivalent natively in Rust (`transformPmEmbeds` in
|
|
529
|
-
* @ox-content/napi), and the result reuses the same `ox-tabs` widget markup as
|
|
530
|
-
* the generic `<tabs>` plugin so styling and keyboard navigation are consistent.
|
|
531
|
-
*
|
|
532
|
-
* Syncing is opt-in (off by default): when enabled, the rendered group carries a
|
|
533
|
-
* `data-ox-tab-group="pkg-manager"` attribute so the client runtime can keep
|
|
534
|
-
* every package-manager group on the page in sync via localStorage.
|
|
535
|
-
*
|
|
536
|
-
* Package-manager groups share the tab-group counter with the `<tabs>` plugin so
|
|
537
|
-
* `data-group` ids (and the CSS produced by `generateTabsCSS`) stay unique.
|
|
538
|
-
*/
|
|
539
|
-
/** Options for {@link transformPm}. */
|
|
540
|
-
interface PmOptions {
|
|
541
|
-
/**
|
|
542
|
-
* Enable opt-in synced package-manager tab groups. When `true`, a
|
|
543
|
-
* `data-ox-tab-group="pkg-manager"` attribute is emitted so the client runtime
|
|
544
|
-
* syncs the active package manager across every pm group on the page and
|
|
545
|
-
* persists the choice in localStorage.
|
|
895
|
+
* Persist successful and negative cache entries to disk across builds.
|
|
896
|
+
* Off by default so existing sites do not write a cache directory.
|
|
546
897
|
* @default false
|
|
547
898
|
*/
|
|
548
|
-
|
|
549
|
-
}
|
|
550
|
-
//#endregion
|
|
551
|
-
//#region src/plugins/tabs.d.ts
|
|
552
|
-
/**
|
|
553
|
-
* Transform Tabs components in HTML.
|
|
554
|
-
*/
|
|
555
|
-
declare function transformTabs(html: string): Promise<string>;
|
|
556
|
-
/**
|
|
557
|
-
* Generate dynamic CSS for :has() based tab switching.
|
|
558
|
-
* This is needed because :has() selectors need unique IDs.
|
|
559
|
-
*/
|
|
560
|
-
declare function generateTabsCSS(groupCount: number): string;
|
|
561
|
-
//#endregion
|
|
562
|
-
//#region src/plugins/youtube.d.ts
|
|
563
|
-
/**
|
|
564
|
-
* YouTube Plugin - Privacy-enhanced iframe embedding
|
|
565
|
-
*
|
|
566
|
-
* Transforms <YouTube> components into responsive iframe embeds using
|
|
567
|
-
* youtube-nocookie.com for enhanced privacy.
|
|
568
|
-
*
|
|
569
|
-
* The HTML rewrite is performed in Rust (`transformYoutubeEmbeds` in
|
|
570
|
-
* @ox-content/napi), replacing the previous rehype parse/stringify
|
|
571
|
-
* round-trip. This module keeps the public TS surface and a cheap marker
|
|
572
|
-
* check so pages without a `<youtube>` element never cross the NAPI boundary.
|
|
573
|
-
*/
|
|
574
|
-
interface YouTubeOptions {
|
|
575
|
-
/**
|
|
576
|
-
* Use privacy-enhanced mode (`youtube-nocookie.com`).
|
|
577
|
-
* @default true
|
|
578
|
-
*/
|
|
579
|
-
privacyEnhanced?: boolean;
|
|
899
|
+
persistCache?: boolean;
|
|
580
900
|
/**
|
|
581
|
-
*
|
|
582
|
-
* @default
|
|
901
|
+
* Directory used for the persistent metadata cache when `persistCache` is on.
|
|
902
|
+
* @default ".cache/ox-content/ogp"
|
|
583
903
|
*/
|
|
584
|
-
|
|
904
|
+
cacheDir?: string;
|
|
585
905
|
/**
|
|
586
|
-
*
|
|
587
|
-
* @default
|
|
906
|
+
* Re-fetch metadata even when a fresh cache entry exists.
|
|
907
|
+
* @default false
|
|
588
908
|
*/
|
|
589
|
-
|
|
909
|
+
refresh?: boolean;
|
|
590
910
|
/**
|
|
591
|
-
*
|
|
592
|
-
* @default
|
|
911
|
+
* User agent sent with metadata fetch requests.
|
|
912
|
+
* @default 'ox-content-ogp-bot/1.0 (compatible; +https://github.com/ubugeeei-prod/ox-content)'
|
|
593
913
|
*/
|
|
594
|
-
|
|
914
|
+
userAgent?: string;
|
|
595
915
|
}
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
declare function
|
|
916
|
+
//#endregion
|
|
917
|
+
//#region src/plugins/ogp/fetch.d.ts
|
|
918
|
+
declare function fetchOgpData(url: string, options?: OgpOptions): Promise<OgpData | null>;
|
|
919
|
+
//#endregion
|
|
920
|
+
//#region src/plugins/ogp/transform.d.ts
|
|
921
|
+
declare function collectOgpUrls(html: string): Promise<string[]>;
|
|
922
|
+
declare function prefetchOgpData(urls: string[], options?: OgpOptions): Promise<Map<string, OgpData | null>>;
|
|
923
|
+
declare function transformOgp(html: string, ogpDataMap?: Map<string, OgpData | null>, options?: OgpOptions): Promise<string>;
|
|
604
924
|
//#endregion
|
|
605
925
|
//#region src/plugins/mermaid.d.ts
|
|
606
926
|
/**
|
|
@@ -627,12 +947,45 @@ declare function transformMermaidStatic(html: string, _options?: MermaidOptions)
|
|
|
627
947
|
*/
|
|
628
948
|
declare const mermaidClientScript = "";
|
|
629
949
|
//#endregion
|
|
950
|
+
//#region src/plugins/graphviz-renderer.d.ts
|
|
951
|
+
type GraphvizFailureMode = "error" | "warn";
|
|
952
|
+
interface GraphvizOptions {
|
|
953
|
+
/** Graphviz renderer command. @default 'dot' */
|
|
954
|
+
command?: string;
|
|
955
|
+
/** Extra arguments passed before `-Tsvg`. @default [] */
|
|
956
|
+
args?: string[];
|
|
957
|
+
/** Behavior when the Graphviz command is not available. @default 'error' */
|
|
958
|
+
missingRenderer?: GraphvizFailureMode;
|
|
959
|
+
/** Behavior when Graphviz rejects a DOT source. @default 'error' */
|
|
960
|
+
renderErrors?: GraphvizFailureMode;
|
|
961
|
+
/** Per-render timeout in milliseconds. @default 10000 */
|
|
962
|
+
timeout?: number;
|
|
963
|
+
/** Cache rendered SVGs in memory for this process. @default true */
|
|
964
|
+
cache?: boolean;
|
|
965
|
+
/** Cache TTL in milliseconds. @default 3600000 */
|
|
966
|
+
cacheTTL?: number;
|
|
967
|
+
}
|
|
968
|
+
interface ResolvedGraphvizOptions {
|
|
969
|
+
command: string;
|
|
970
|
+
args: string[];
|
|
971
|
+
missingRenderer: GraphvizFailureMode;
|
|
972
|
+
renderErrors: GraphvizFailureMode;
|
|
973
|
+
timeout: number;
|
|
974
|
+
cache: boolean;
|
|
975
|
+
cacheTTL: number;
|
|
976
|
+
}
|
|
977
|
+
declare function clearGraphvizCache(): void;
|
|
978
|
+
declare function resolveGraphvizOptions(options: boolean | GraphvizOptions | undefined): ResolvedGraphvizOptions | false;
|
|
979
|
+
//#endregion
|
|
980
|
+
//#region src/plugins/graphviz.d.ts
|
|
981
|
+
declare function transformGraphvizStatic(html: string, options?: boolean | GraphvizOptions | ResolvedGraphvizOptions): Promise<string>;
|
|
982
|
+
//#endregion
|
|
630
983
|
//#region src/plugins/index.d.ts
|
|
631
984
|
/**
|
|
632
985
|
* Transform all plugin components in HTML.
|
|
633
986
|
* Call this during SSG build to process all plugins at once.
|
|
634
987
|
*/
|
|
635
|
-
interface TransformAllOptions {
|
|
988
|
+
interface TransformAllOptions extends MediaEmbedOptions {
|
|
636
989
|
tabs?: boolean;
|
|
637
990
|
/**
|
|
638
991
|
* Expand `<pm>` package-manager blocks into install tabs. Pass an object to
|
|
@@ -645,18 +998,127 @@ interface TransformAllOptions {
|
|
|
645
998
|
ogp?: boolean | OgpOptions;
|
|
646
999
|
openGraph?: boolean | OgpOptions;
|
|
647
1000
|
mermaid?: boolean;
|
|
1001
|
+
graphviz?: boolean | GraphvizOptions;
|
|
648
1002
|
githubToken?: string;
|
|
649
|
-
spotify?: boolean;
|
|
650
|
-
stackBlitz?: boolean;
|
|
651
|
-
twitter?: boolean | TwitterEmbedOptions;
|
|
652
|
-
bluesky?: boolean;
|
|
653
|
-
webContainer?: boolean;
|
|
654
1003
|
}
|
|
655
1004
|
/**
|
|
656
1005
|
* Transform all enabled plugins in HTML content.
|
|
657
1006
|
*/
|
|
658
1007
|
declare function transformAllPlugins(html: string, options?: TransformAllOptions): Promise<string>;
|
|
659
1008
|
//#endregion
|
|
1009
|
+
//#region src/cross-reference-types.d.ts
|
|
1010
|
+
type CrossReferenceKind = "figure" | "table" | "section";
|
|
1011
|
+
type CrossReferenceFailureMode = "error" | "warn";
|
|
1012
|
+
interface CrossReferenceLabelOptions {
|
|
1013
|
+
figure?: string;
|
|
1014
|
+
table?: string;
|
|
1015
|
+
section?: string;
|
|
1016
|
+
}
|
|
1017
|
+
interface CrossReferencesOptions {
|
|
1018
|
+
enabled?: boolean;
|
|
1019
|
+
missing?: CrossReferenceFailureMode;
|
|
1020
|
+
duplicates?: CrossReferenceFailureMode;
|
|
1021
|
+
mismatches?: CrossReferenceFailureMode;
|
|
1022
|
+
labels?: CrossReferenceLabelOptions;
|
|
1023
|
+
}
|
|
1024
|
+
interface ResolvedCrossReferencesOptions {
|
|
1025
|
+
enabled: boolean;
|
|
1026
|
+
missing: CrossReferenceFailureMode;
|
|
1027
|
+
duplicates: CrossReferenceFailureMode;
|
|
1028
|
+
mismatches: CrossReferenceFailureMode;
|
|
1029
|
+
labels: Required<CrossReferenceLabelOptions>;
|
|
1030
|
+
}
|
|
1031
|
+
interface CrossReferenceEntry {
|
|
1032
|
+
id: string;
|
|
1033
|
+
kind: CrossReferenceKind;
|
|
1034
|
+
number: string;
|
|
1035
|
+
label: string;
|
|
1036
|
+
text: string;
|
|
1037
|
+
href: string;
|
|
1038
|
+
title?: string;
|
|
1039
|
+
}
|
|
1040
|
+
//#endregion
|
|
1041
|
+
//#region src/citation-types.d.ts
|
|
1042
|
+
type CitationFailureMode = "error" | "warn";
|
|
1043
|
+
interface CitationsOptions {
|
|
1044
|
+
enabled?: boolean;
|
|
1045
|
+
bibliography?: string | string[];
|
|
1046
|
+
rootDir?: string;
|
|
1047
|
+
appendBibliography?: boolean;
|
|
1048
|
+
missing?: CitationFailureMode;
|
|
1049
|
+
duplicates?: CitationFailureMode;
|
|
1050
|
+
malformed?: CitationFailureMode;
|
|
1051
|
+
bibliographyTitle?: string;
|
|
1052
|
+
}
|
|
1053
|
+
interface ResolvedCitationsOptions {
|
|
1054
|
+
enabled: boolean;
|
|
1055
|
+
bibliography: string[];
|
|
1056
|
+
rootDir?: string;
|
|
1057
|
+
appendBibliography: boolean;
|
|
1058
|
+
missing: CitationFailureMode;
|
|
1059
|
+
duplicates: CitationFailureMode;
|
|
1060
|
+
malformed: CitationFailureMode;
|
|
1061
|
+
bibliographyTitle: string;
|
|
1062
|
+
}
|
|
1063
|
+
interface CitationReference {
|
|
1064
|
+
id: string;
|
|
1065
|
+
key: string;
|
|
1066
|
+
index: number;
|
|
1067
|
+
label: string;
|
|
1068
|
+
href: string;
|
|
1069
|
+
bibliographyId: string;
|
|
1070
|
+
suppressAuthor: boolean;
|
|
1071
|
+
}
|
|
1072
|
+
interface BibliographyEntry {
|
|
1073
|
+
key: string;
|
|
1074
|
+
id: string;
|
|
1075
|
+
index: number;
|
|
1076
|
+
label: string;
|
|
1077
|
+
title: string;
|
|
1078
|
+
authors: string[];
|
|
1079
|
+
year?: string;
|
|
1080
|
+
url?: string;
|
|
1081
|
+
doi?: string;
|
|
1082
|
+
html: string;
|
|
1083
|
+
}
|
|
1084
|
+
//#endregion
|
|
1085
|
+
//#region src/budoux-types.d.ts
|
|
1086
|
+
type BudouxLanguage = "ja" | "zh-hans" | "zh-hant" | "th";
|
|
1087
|
+
interface BudouxParser {
|
|
1088
|
+
parse(text: string): string[];
|
|
1089
|
+
}
|
|
1090
|
+
interface BudouxOptions {
|
|
1091
|
+
/**
|
|
1092
|
+
* Enable build-time BudouX segmentation when an options object is supplied.
|
|
1093
|
+
*
|
|
1094
|
+
* @default true
|
|
1095
|
+
*/
|
|
1096
|
+
enabled?: boolean;
|
|
1097
|
+
/**
|
|
1098
|
+
* Default BudouX parser language.
|
|
1099
|
+
*
|
|
1100
|
+
* @default "ja"
|
|
1101
|
+
*/
|
|
1102
|
+
language?: BudouxLanguage;
|
|
1103
|
+
/**
|
|
1104
|
+
* Separator inserted between BudouX phrases.
|
|
1105
|
+
*
|
|
1106
|
+
* @default "\u200b"
|
|
1107
|
+
*/
|
|
1108
|
+
separator?: string;
|
|
1109
|
+
/**
|
|
1110
|
+
* Custom build-time parser. When supplied, ox-content does not import the
|
|
1111
|
+
* `budoux` package.
|
|
1112
|
+
*/
|
|
1113
|
+
parser?: BudouxParser;
|
|
1114
|
+
}
|
|
1115
|
+
interface ResolvedBudouxOptions {
|
|
1116
|
+
enabled: boolean;
|
|
1117
|
+
language: BudouxLanguage;
|
|
1118
|
+
separator: string;
|
|
1119
|
+
parser?: BudouxParser;
|
|
1120
|
+
}
|
|
1121
|
+
//#endregion
|
|
660
1122
|
//#region src/page-context.d.ts
|
|
661
1123
|
/**
|
|
662
1124
|
* Base page props available for all pages.
|
|
@@ -672,10 +1134,17 @@ interface BasePageProps {
|
|
|
672
1134
|
toc: TocEntry[];
|
|
673
1135
|
/** Last git commit timestamp in milliseconds */
|
|
674
1136
|
lastUpdated?: number;
|
|
1137
|
+
/** Unique git authors for this page */
|
|
1138
|
+
contributors?: Array<{
|
|
1139
|
+
name: string;
|
|
1140
|
+
avatar?: string;
|
|
1141
|
+
}>;
|
|
675
1142
|
/** Source file path (relative to docs root) */
|
|
676
1143
|
path: string;
|
|
677
1144
|
/** Output URL path */
|
|
678
1145
|
url: string;
|
|
1146
|
+
/** Published Markdown companion URL when `ssg.markdownSource` is on */
|
|
1147
|
+
markdownSource?: string;
|
|
679
1148
|
/** Raw frontmatter object */
|
|
680
1149
|
frontmatter: Record<string, unknown>;
|
|
681
1150
|
/** Layout name from frontmatter */
|
|
@@ -872,10 +1341,17 @@ interface PageData {
|
|
|
872
1341
|
toc: TocEntry[];
|
|
873
1342
|
/** Last git commit timestamp in milliseconds */
|
|
874
1343
|
lastUpdated?: number;
|
|
1344
|
+
/** Unique git authors for this page */
|
|
1345
|
+
contributors?: Array<{
|
|
1346
|
+
name: string;
|
|
1347
|
+
avatar?: string;
|
|
1348
|
+
}>;
|
|
875
1349
|
/** Source file path */
|
|
876
1350
|
path: string;
|
|
877
1351
|
/** Output URL path */
|
|
878
1352
|
url: string;
|
|
1353
|
+
/** Published Markdown companion URL when `ssg.markdownSource` is on */
|
|
1354
|
+
markdownSource?: string;
|
|
879
1355
|
/** Frontmatter */
|
|
880
1356
|
frontmatter: Record<string, unknown>;
|
|
881
1357
|
/** Layout name */
|
|
@@ -1082,6 +1558,21 @@ interface SsgOptions {
|
|
|
1082
1558
|
* @default '.html'
|
|
1083
1559
|
*/
|
|
1084
1560
|
extension?: string;
|
|
1561
|
+
/**
|
|
1562
|
+
* Mount generated page routes under this path, independent from `base` and
|
|
1563
|
+
* `outDir`.
|
|
1564
|
+
*
|
|
1565
|
+
* `blog`, `/blog`, and `/blog/` all mount under `/blog`. Page HTML and
|
|
1566
|
+
* page-level assets follow the prefix. Root host files (`_redirects`,
|
|
1567
|
+
* `_headers`, root feeds, sitemap index) stay at `outDir`. `base` remains
|
|
1568
|
+
* the public deployment prefix and is not used as an output mount.
|
|
1569
|
+
* Frontmatter `permalink` still wins when permalinks are enabled.
|
|
1570
|
+
*
|
|
1571
|
+
* Off when omitted.
|
|
1572
|
+
*
|
|
1573
|
+
* @default undefined
|
|
1574
|
+
*/
|
|
1575
|
+
routePrefix?: string;
|
|
1085
1576
|
/**
|
|
1086
1577
|
* Remove previously generated files from the output directory before writing
|
|
1087
1578
|
* the new SSG result.
|
|
@@ -1187,6 +1678,17 @@ interface SsgOptions {
|
|
|
1187
1678
|
* @default false
|
|
1188
1679
|
*/
|
|
1189
1680
|
lastUpdated?: boolean;
|
|
1681
|
+
/**
|
|
1682
|
+
* List unique git authors for each page.
|
|
1683
|
+
*
|
|
1684
|
+
* Off by default. `true` enables names only. An object enables the
|
|
1685
|
+
* feature and can set `ignore` and `avatars`. Missing `.git` (for
|
|
1686
|
+
* example a published tarball) yields an empty list and does not
|
|
1687
|
+
* fail the build.
|
|
1688
|
+
*
|
|
1689
|
+
* @default false
|
|
1690
|
+
*/
|
|
1691
|
+
contributors?: boolean | ContributorsOptions;
|
|
1190
1692
|
/**
|
|
1191
1693
|
* Show previous/next page links after the article.
|
|
1192
1694
|
*
|
|
@@ -1206,6 +1708,26 @@ interface SsgOptions {
|
|
|
1206
1708
|
* @default false
|
|
1207
1709
|
*/
|
|
1208
1710
|
breadcrumbs?: boolean | Record<string, unknown>;
|
|
1711
|
+
/**
|
|
1712
|
+
* Emit JSON-LD structured data (`TechArticle`, `WebSite`, and optional
|
|
1713
|
+
* `BreadcrumbList`) in the page `<head>`.
|
|
1714
|
+
*
|
|
1715
|
+
* Disabled when omitted or `false`. `true` enables the defaults. An object
|
|
1716
|
+
* enables the feature and can hide BreadcrumbList or supply a publisher.
|
|
1717
|
+
* Publisher fields the site does not set are not invented.
|
|
1718
|
+
*
|
|
1719
|
+
* @default false
|
|
1720
|
+
*/
|
|
1721
|
+
jsonLd?: boolean | JsonLdOptions;
|
|
1722
|
+
/**
|
|
1723
|
+
* Validate custom page-head descriptors during SSG.
|
|
1724
|
+
*
|
|
1725
|
+
* `false` / omitted drops invalid values silently. `warn` logs them.
|
|
1726
|
+
* `strict` fails the build on unsafe URLs or invalid hreflang.
|
|
1727
|
+
*
|
|
1728
|
+
* @default false
|
|
1729
|
+
*/
|
|
1730
|
+
headValidation?: false | "warn" | "strict";
|
|
1209
1731
|
/**
|
|
1210
1732
|
* Opt-in copy buttons, outbound-link icons, and a back-to-top control.
|
|
1211
1733
|
*
|
|
@@ -1246,6 +1768,21 @@ interface SsgOptions {
|
|
|
1246
1768
|
* @default false
|
|
1247
1769
|
*/
|
|
1248
1770
|
pageChrome?: boolean | Record<string, unknown>;
|
|
1771
|
+
/**
|
|
1772
|
+
* Publish the original Markdown beside each generated HTML page.
|
|
1773
|
+
*
|
|
1774
|
+
* Off by default. `true` writes a `.md` companion using the published URL
|
|
1775
|
+
* (permalink, locale, base, and output directory) and adds
|
|
1776
|
+
* `<link rel="alternate" type="text/markdown">`. An object enables the
|
|
1777
|
+
* feature and can turn the alternate link off, or opt in to the default
|
|
1778
|
+
* theme's Copy as Markdown control.
|
|
1779
|
+
*
|
|
1780
|
+
* The companion is a byte-for-byte copy of the source file, including
|
|
1781
|
+
* frontmatter. Draft and unlisted pages are never written.
|
|
1782
|
+
*
|
|
1783
|
+
* @default false
|
|
1784
|
+
*/
|
|
1785
|
+
markdownSource?: boolean | MarkdownSourceOptions;
|
|
1249
1786
|
/**
|
|
1250
1787
|
* Write a themed 404 page during SSG.
|
|
1251
1788
|
*
|
|
@@ -1267,6 +1804,27 @@ interface SsgOptions {
|
|
|
1267
1804
|
* @default false
|
|
1268
1805
|
*/
|
|
1269
1806
|
team?: boolean | TeamOptions;
|
|
1807
|
+
/**
|
|
1808
|
+
* Opt-in blog index, authors, tags, reading time, and archive.
|
|
1809
|
+
*
|
|
1810
|
+
* Off by default. `true` enables defaults. An object enables the feature
|
|
1811
|
+
* and overrides only the fields you set. Top-level `blog` wins when both
|
|
1812
|
+
* are set.
|
|
1813
|
+
*
|
|
1814
|
+
* @default false
|
|
1815
|
+
*/
|
|
1816
|
+
blog?: boolean | BlogOptions;
|
|
1817
|
+
/**
|
|
1818
|
+
* Generate a static index for directories that have child pages but no
|
|
1819
|
+
* `index.md` / `index.mdx`.
|
|
1820
|
+
*
|
|
1821
|
+
* Off by default. `true` enables card listings. An object enables the
|
|
1822
|
+
* feature and can switch the listing to `list`. Existing content indexes
|
|
1823
|
+
* are never overwritten.
|
|
1824
|
+
*
|
|
1825
|
+
* @default false
|
|
1826
|
+
*/
|
|
1827
|
+
sectionIndex?: boolean | SectionIndexOptions;
|
|
1270
1828
|
/**
|
|
1271
1829
|
* Absolute site URL used when generating social metadata.
|
|
1272
1830
|
*
|
|
@@ -1362,12 +1920,66 @@ interface A11yOptions {
|
|
|
1362
1920
|
type ResolvedA11y = false | {
|
|
1363
1921
|
skipLinkLabel: string;
|
|
1364
1922
|
};
|
|
1923
|
+
/**
|
|
1924
|
+
* Per-control flags for `ssg.jsonLd`.
|
|
1925
|
+
*
|
|
1926
|
+
* Omitted fields keep the defaults when the feature itself is enabled.
|
|
1927
|
+
*/
|
|
1928
|
+
interface JsonLdOptions {
|
|
1929
|
+
/**
|
|
1930
|
+
* Emit `BreadcrumbList` when a visible breadcrumb trail exists.
|
|
1931
|
+
*
|
|
1932
|
+
* @default true
|
|
1933
|
+
*/
|
|
1934
|
+
breadcrumbs?: boolean;
|
|
1935
|
+
/**
|
|
1936
|
+
* Optional publisher. Only configured `name` / `url` are written.
|
|
1937
|
+
* Logo and other Organization fields are never invented.
|
|
1938
|
+
*/
|
|
1939
|
+
publisher?: JsonLdPublisherOptions;
|
|
1940
|
+
/**
|
|
1941
|
+
* Page `@type`. Defaults to `TechArticle`.
|
|
1942
|
+
*/
|
|
1943
|
+
type?: JsonLdPageType;
|
|
1944
|
+
/**
|
|
1945
|
+
* Extra `@graph` nodes. Only objects are kept. The build does not invent
|
|
1946
|
+
* fields inside them.
|
|
1947
|
+
*/
|
|
1948
|
+
graph?: Record<string, unknown>[];
|
|
1949
|
+
}
|
|
1950
|
+
/** JSON-LD page node `@type`. Unknown values fall back to `TechArticle`. */
|
|
1951
|
+
type JsonLdPageType = "TechArticle" | "BlogPosting" | "WebPage";
|
|
1952
|
+
/**
|
|
1953
|
+
* Optional JSON-LD publisher. Empty or omitted fields are left out.
|
|
1954
|
+
*/
|
|
1955
|
+
interface JsonLdPublisherOptions {
|
|
1956
|
+
/** Organization name. */
|
|
1957
|
+
name?: string;
|
|
1958
|
+
/** Organization URL. `javascript:` and other unsafe schemes are dropped. */
|
|
1959
|
+
url?: string;
|
|
1960
|
+
}
|
|
1961
|
+
/**
|
|
1962
|
+
* Resolved JSON-LD options. `false` means no `<script type="application/ld+json">`.
|
|
1963
|
+
*/
|
|
1964
|
+
type ResolvedJsonLd = false | {
|
|
1965
|
+
breadcrumbs: boolean;
|
|
1966
|
+
publisher?: {
|
|
1967
|
+
name?: string;
|
|
1968
|
+
url?: string;
|
|
1969
|
+
};
|
|
1970
|
+
type?: JsonLdPageType;
|
|
1971
|
+
graph?: Record<string, unknown>[];
|
|
1972
|
+
};
|
|
1365
1973
|
/**
|
|
1366
1974
|
* Resolved SSG options.
|
|
1367
1975
|
*/
|
|
1368
1976
|
interface ResolvedSsgOptions {
|
|
1369
1977
|
enabled: boolean;
|
|
1370
1978
|
extension: string;
|
|
1979
|
+
/**
|
|
1980
|
+
* Present after `resolveSsgOptions`. Omitted / empty means off.
|
|
1981
|
+
*/
|
|
1982
|
+
routePrefix?: string;
|
|
1371
1983
|
clean: boolean;
|
|
1372
1984
|
bare: boolean;
|
|
1373
1985
|
render?: ThemeComponent;
|
|
@@ -1379,12 +1991,25 @@ interface ResolvedSsgOptions {
|
|
|
1379
1991
|
ogImage?: string;
|
|
1380
1992
|
generateOgImage: boolean;
|
|
1381
1993
|
lastUpdated: boolean;
|
|
1994
|
+
/**
|
|
1995
|
+
* Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
|
|
1996
|
+
*/
|
|
1997
|
+
contributors?: ResolvedContributors;
|
|
1382
1998
|
pagination: boolean;
|
|
1383
1999
|
breadcrumbs: boolean;
|
|
2000
|
+
jsonLd: ResolvedJsonLd;
|
|
2001
|
+
/**
|
|
2002
|
+
* Present after `resolveSsgOptions`. Omitted / `false` means off.
|
|
2003
|
+
*/
|
|
2004
|
+
headValidation?: false | "warn" | "strict";
|
|
1384
2005
|
readerChrome: ResolvedReaderChrome;
|
|
1385
2006
|
localeSwitcher: boolean;
|
|
1386
2007
|
a11y: ResolvedA11y;
|
|
1387
2008
|
pageChrome: boolean;
|
|
2009
|
+
/**
|
|
2010
|
+
* Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
|
|
2011
|
+
*/
|
|
2012
|
+
markdownSource?: ResolvedMarkdownSourceOptions;
|
|
1388
2013
|
/**
|
|
1389
2014
|
* Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
|
|
1390
2015
|
*/
|
|
@@ -1393,6 +2018,11 @@ interface ResolvedSsgOptions {
|
|
|
1393
2018
|
* Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
|
|
1394
2019
|
*/
|
|
1395
2020
|
team?: ResolvedTeamOptions;
|
|
2021
|
+
/**
|
|
2022
|
+
* Present after `resolveSsgOptions`. Omitted in hand-built fixtures means off.
|
|
2023
|
+
*/
|
|
2024
|
+
blog?: ResolvedBlogOptions;
|
|
2025
|
+
sectionIndex?: ResolvedSectionIndexOptions;
|
|
1396
2026
|
siteUrl?: string;
|
|
1397
2027
|
theme?: ResolvedThemeConfig;
|
|
1398
2028
|
navigation?: SsgNavigationGroup[];
|
|
@@ -1445,6 +2075,29 @@ interface TeamMember {
|
|
|
1445
2075
|
/**
|
|
1446
2076
|
* Opt-in team / members page.
|
|
1447
2077
|
*/
|
|
2078
|
+
/**
|
|
2079
|
+
* Opt-in git contributor list.
|
|
2080
|
+
*/
|
|
2081
|
+
interface ContributorsOptions {
|
|
2082
|
+
/**
|
|
2083
|
+
* Author names or emails to omit. Comparison is case-insensitive and
|
|
2084
|
+
* matches the full name or the full email.
|
|
2085
|
+
*/
|
|
2086
|
+
ignore?: string[];
|
|
2087
|
+
/**
|
|
2088
|
+
* When true and a git author email is present, render a Gravatar
|
|
2089
|
+
* image from the MD5 of that email. The raw email is never written
|
|
2090
|
+
* into HTML. Default is names only.
|
|
2091
|
+
*/
|
|
2092
|
+
avatars?: boolean;
|
|
2093
|
+
}
|
|
2094
|
+
/**
|
|
2095
|
+
* Resolved git contributor list. `false` means the feature is off.
|
|
2096
|
+
*/
|
|
2097
|
+
type ResolvedContributors = false | {
|
|
2098
|
+
ignore: string[];
|
|
2099
|
+
avatars: boolean;
|
|
2100
|
+
};
|
|
1448
2101
|
interface TeamOptions {
|
|
1449
2102
|
/**
|
|
1450
2103
|
* People rendered as static cards on `layout: team` pages.
|
|
@@ -1460,7 +2113,140 @@ interface ResolvedTeamOptions {
|
|
|
1460
2113
|
members: TeamMember[];
|
|
1461
2114
|
}
|
|
1462
2115
|
/**
|
|
1463
|
-
*
|
|
2116
|
+
* Listing style for a generated section index.
|
|
2117
|
+
*/
|
|
2118
|
+
type SectionIndexStyle = "list" | "cards";
|
|
2119
|
+
/**
|
|
2120
|
+
* Opt-in generated section index pages.
|
|
2121
|
+
*/
|
|
2122
|
+
interface SectionIndexOptions {
|
|
2123
|
+
/**
|
|
2124
|
+
* How children are rendered. `cards` is the default when the feature is on.
|
|
2125
|
+
* @default "cards"
|
|
2126
|
+
*/
|
|
2127
|
+
style?: SectionIndexStyle;
|
|
2128
|
+
}
|
|
2129
|
+
/**
|
|
2130
|
+
* Resolved generated section index options.
|
|
2131
|
+
*/
|
|
2132
|
+
interface ResolvedSectionIndexOptions {
|
|
2133
|
+
enabled: boolean;
|
|
2134
|
+
style: SectionIndexStyle;
|
|
2135
|
+
}
|
|
2136
|
+
/**
|
|
2137
|
+
* Opt-in web app manifest and service worker written during SSG.
|
|
2138
|
+
*
|
|
2139
|
+
* Enabling `offline` (the default when the feature is on) injects a tiny
|
|
2140
|
+
* client script that registers `sw.js`. Set `offline: false` to keep the
|
|
2141
|
+
* manifest without that script.
|
|
2142
|
+
*/
|
|
2143
|
+
interface PwaOptions {
|
|
2144
|
+
/**
|
|
2145
|
+
* Write `sw.js` and register it from themed pages.
|
|
2146
|
+
* @default true
|
|
2147
|
+
*/
|
|
2148
|
+
offline?: boolean;
|
|
2149
|
+
/**
|
|
2150
|
+
* Manifest `name`. Falls back to `ssg.siteName` when omitted.
|
|
2151
|
+
*/
|
|
2152
|
+
name?: string;
|
|
2153
|
+
/**
|
|
2154
|
+
* Manifest `short_name`. Falls back to `name` when omitted.
|
|
2155
|
+
*/
|
|
2156
|
+
shortName?: string;
|
|
2157
|
+
/**
|
|
2158
|
+
* Manifest / meta theme color. Hex (`#rgb` / `#rrggbb`) or a CSS color name.
|
|
2159
|
+
* @default "#000000"
|
|
2160
|
+
*/
|
|
2161
|
+
themeColor?: string;
|
|
2162
|
+
/**
|
|
2163
|
+
* Manifest background color. Hex or a CSS color name.
|
|
2164
|
+
* @default "#ffffff"
|
|
2165
|
+
*/
|
|
2166
|
+
backgroundColor?: string;
|
|
2167
|
+
/**
|
|
2168
|
+
* Manifest `start_url`. Same-origin site paths only (`/`, `/docs/`).
|
|
2169
|
+
* Defaults to the Vite `base`.
|
|
2170
|
+
*/
|
|
2171
|
+
startUrl?: string;
|
|
2172
|
+
}
|
|
2173
|
+
/**
|
|
2174
|
+
* Resolved PWA options.
|
|
2175
|
+
*/
|
|
2176
|
+
interface ResolvedPwaOptions {
|
|
2177
|
+
enabled: boolean;
|
|
2178
|
+
offline: boolean;
|
|
2179
|
+
name?: string;
|
|
2180
|
+
shortName?: string;
|
|
2181
|
+
themeColor?: string;
|
|
2182
|
+
backgroundColor?: string;
|
|
2183
|
+
startUrl?: string;
|
|
2184
|
+
}
|
|
2185
|
+
/**
|
|
2186
|
+
* Opt-in self-hosted Iconify CSS for used icons.
|
|
2187
|
+
*
|
|
2188
|
+
* Off by default. When enabled, the SSG build resolves Iconify names from
|
|
2189
|
+
* installed `@iconify/json` or `@iconify-json/*` packages and emits CSS
|
|
2190
|
+
* masks so the published site does not request `api.iconify.design`.
|
|
2191
|
+
*/
|
|
2192
|
+
interface IconsOptions {
|
|
2193
|
+
/**
|
|
2194
|
+
* CSS emission mode.
|
|
2195
|
+
* @default "css-mask"
|
|
2196
|
+
*/
|
|
2197
|
+
mode?: "css-mask";
|
|
2198
|
+
/**
|
|
2199
|
+
* Class syntax. `"unocss"` emits `icon-[prefix--name]`.
|
|
2200
|
+
* @default "unocss"
|
|
2201
|
+
*/
|
|
2202
|
+
syntax?: "unocss";
|
|
2203
|
+
/**
|
|
2204
|
+
* Glob patterns to scan, or explicit `prefix:name` icons.
|
|
2205
|
+
* Entries that look like Iconify names are used as-is (no scan).
|
|
2206
|
+
*/
|
|
2207
|
+
include?: string[];
|
|
2208
|
+
/**
|
|
2209
|
+
* Iconify names that are always emitted, even when no source mentions them.
|
|
2210
|
+
*/
|
|
2211
|
+
safelist?: string[];
|
|
2212
|
+
}
|
|
2213
|
+
/**
|
|
2214
|
+
* Resolved icon asset options.
|
|
2215
|
+
*/
|
|
2216
|
+
interface ResolvedIconsOptions {
|
|
2217
|
+
enabled: boolean;
|
|
2218
|
+
mode: "css-mask";
|
|
2219
|
+
syntax: "unocss";
|
|
2220
|
+
include: string[];
|
|
2221
|
+
safelist: string[];
|
|
2222
|
+
}
|
|
2223
|
+
/**
|
|
2224
|
+
* Opt-in Markdown source companions written beside generated HTML.
|
|
2225
|
+
*/
|
|
2226
|
+
interface MarkdownSourceOptions {
|
|
2227
|
+
/**
|
|
2228
|
+
* Add `<link rel="alternate" type="text/markdown">` to generated HTML.
|
|
2229
|
+
* @default true
|
|
2230
|
+
*/
|
|
2231
|
+
alternate?: boolean;
|
|
2232
|
+
/**
|
|
2233
|
+
* Show a page-level Copy as Markdown control in the default theme.
|
|
2234
|
+
* The control copies or opens the published companion bytes, including
|
|
2235
|
+
* frontmatter. Off unless set, even when companions are enabled.
|
|
2236
|
+
* @default false
|
|
2237
|
+
*/
|
|
2238
|
+
copy?: boolean;
|
|
2239
|
+
}
|
|
2240
|
+
/**
|
|
2241
|
+
* Resolved Markdown source-companion options.
|
|
2242
|
+
*/
|
|
2243
|
+
interface ResolvedMarkdownSourceOptions {
|
|
2244
|
+
enabled: boolean;
|
|
2245
|
+
alternate: boolean;
|
|
2246
|
+
copy: boolean;
|
|
2247
|
+
}
|
|
2248
|
+
/**
|
|
2249
|
+
* Opt-in crawl manifests written during SSG.
|
|
1464
2250
|
*/
|
|
1465
2251
|
interface SiteMapsOptions {
|
|
1466
2252
|
/**
|
|
@@ -1548,6 +2334,13 @@ interface CascadeOptions {
|
|
|
1548
2334
|
interface ResolvedCascadeOptions {
|
|
1549
2335
|
enabled: boolean;
|
|
1550
2336
|
}
|
|
2337
|
+
/**
|
|
2338
|
+
* Host that consumes the generated `_redirects` file.
|
|
2339
|
+
*
|
|
2340
|
+
* Both values write the same `_redirects` body today. The distinct names
|
|
2341
|
+
* leave room for provider-specific limits and diagnostics later.
|
|
2342
|
+
*/
|
|
2343
|
+
type RedirectProvider = "netlify" | "cloudflare";
|
|
1551
2344
|
/**
|
|
1552
2345
|
* Opt-in static redirects, aliases, and path rewrites.
|
|
1553
2346
|
*
|
|
@@ -1562,10 +2355,13 @@ interface RedirectsOptions {
|
|
|
1562
2355
|
*/
|
|
1563
2356
|
map?: Record<string, string>;
|
|
1564
2357
|
/**
|
|
1565
|
-
*
|
|
1566
|
-
*
|
|
2358
|
+
* Host that should receive a `_redirects` file.
|
|
2359
|
+
*
|
|
2360
|
+
* Omit the field to detect `CF_PAGES=1`, `WORKERS_CI=1`, or `NETLIFY=true`.
|
|
2361
|
+
* Local builds and GitHub Actions should set this explicitly. HTML redirect
|
|
2362
|
+
* pages are independent of this selector.
|
|
1567
2363
|
*/
|
|
1568
|
-
|
|
2364
|
+
provider?: RedirectProvider;
|
|
1569
2365
|
/**
|
|
1570
2366
|
* Write a `_headers` Location map next to the HTML pages.
|
|
1571
2367
|
* @default false
|
|
@@ -1576,6 +2372,14 @@ interface RedirectsOptions {
|
|
|
1576
2372
|
* @default false
|
|
1577
2373
|
*/
|
|
1578
2374
|
json?: boolean;
|
|
2375
|
+
/**
|
|
2376
|
+
* Write static HTML fallback pages for ordinary redirect sources.
|
|
2377
|
+
*
|
|
2378
|
+
* Set `false` when the selected host should consume `_redirects` directly.
|
|
2379
|
+
* Wildcard sources never write HTML pages because they are host-rule syntax.
|
|
2380
|
+
* @default true
|
|
2381
|
+
*/
|
|
2382
|
+
html?: boolean;
|
|
1579
2383
|
/**
|
|
1580
2384
|
* Allow `http://` and `https://` destinations. `javascript:`, `data:`, and
|
|
1581
2385
|
* protocol-relative `//` targets stay rejected.
|
|
@@ -1589,29 +2393,80 @@ interface RedirectsOptions {
|
|
|
1589
2393
|
interface ResolvedRedirectsOptions {
|
|
1590
2394
|
enabled: boolean;
|
|
1591
2395
|
map: Record<string, string>;
|
|
1592
|
-
|
|
2396
|
+
provider?: RedirectProvider;
|
|
1593
2397
|
headers: boolean;
|
|
1594
2398
|
json: boolean;
|
|
2399
|
+
html: boolean;
|
|
1595
2400
|
allowExternal: boolean;
|
|
1596
2401
|
}
|
|
1597
2402
|
/**
|
|
1598
2403
|
* Feed file formats written during SSG.
|
|
1599
2404
|
*/
|
|
1600
2405
|
type FeedFormat = "rss" | "atom" | "json";
|
|
2406
|
+
/** One feed item author accepted by programmatic feeds. */
|
|
2407
|
+
interface FeedItemAuthor {
|
|
2408
|
+
name: string;
|
|
2409
|
+
url?: string;
|
|
2410
|
+
}
|
|
2411
|
+
type FeedItemAuthorInput = string | FeedItemAuthor;
|
|
2412
|
+
/** One JSON Feed / enclosure attachment accepted by programmatic feeds. */
|
|
2413
|
+
interface FeedItemAttachment {
|
|
2414
|
+
url: string;
|
|
2415
|
+
mimeType?: string;
|
|
2416
|
+
title?: string;
|
|
2417
|
+
sizeInBytes?: number;
|
|
2418
|
+
durationInSeconds?: number;
|
|
2419
|
+
}
|
|
2420
|
+
/** One collection or programmatic item considered for a generated feed. */
|
|
2421
|
+
interface FeedItemInput {
|
|
2422
|
+
title?: string;
|
|
2423
|
+
description?: string;
|
|
2424
|
+
content?: string;
|
|
2425
|
+
path?: string;
|
|
2426
|
+
loc?: string;
|
|
2427
|
+
url?: string;
|
|
2428
|
+
id?: string;
|
|
2429
|
+
date?: unknown;
|
|
2430
|
+
lastUpdated?: unknown;
|
|
2431
|
+
draft?: unknown;
|
|
2432
|
+
unlisted?: unknown;
|
|
2433
|
+
author?: FeedItemAuthorInput;
|
|
2434
|
+
authors?: readonly FeedItemAuthorInput[];
|
|
2435
|
+
image?: string;
|
|
2436
|
+
attachments?: readonly FeedItemAttachment[];
|
|
2437
|
+
language?: string;
|
|
2438
|
+
frontmatter?: Record<string, unknown>;
|
|
2439
|
+
}
|
|
2440
|
+
interface FeedItemsResolveContext {
|
|
2441
|
+
name?: string;
|
|
2442
|
+
formats: readonly FeedFormat[];
|
|
2443
|
+
path: string;
|
|
2444
|
+
siteUrl?: string;
|
|
2445
|
+
siteName?: string;
|
|
2446
|
+
siteDescription?: string;
|
|
2447
|
+
base: string;
|
|
2448
|
+
outDir?: string;
|
|
2449
|
+
}
|
|
2450
|
+
type FeedItemsSource = readonly FeedItemInput[] | ((context: FeedItemsResolveContext) => readonly FeedItemInput[] | Promise<readonly FeedItemInput[]>);
|
|
1601
2451
|
/**
|
|
1602
|
-
*
|
|
2452
|
+
* One feed's formats, source, output path, and channel metadata.
|
|
1603
2453
|
*/
|
|
1604
|
-
interface
|
|
2454
|
+
interface FeedChannelOptions {
|
|
1605
2455
|
/**
|
|
1606
2456
|
* Feed formats to write.
|
|
1607
2457
|
* @default ["rss", "atom", "json"]
|
|
1608
2458
|
*/
|
|
1609
|
-
formats?: FeedFormat[];
|
|
2459
|
+
formats?: readonly FeedFormat[];
|
|
1610
2460
|
/**
|
|
1611
2461
|
* Named collection to publish. Defaults to `content`, or the first
|
|
1612
2462
|
* configured collection when `content` is absent.
|
|
1613
2463
|
*/
|
|
1614
2464
|
collection?: string;
|
|
2465
|
+
/**
|
|
2466
|
+
* Programmatic items for this channel. A channel may set either
|
|
2467
|
+
* `collection` or `items`, not both.
|
|
2468
|
+
*/
|
|
2469
|
+
items?: FeedItemsSource;
|
|
1615
2470
|
/**
|
|
1616
2471
|
* Maximum number of published items, newest first.
|
|
1617
2472
|
* @default 20
|
|
@@ -1622,16 +2477,130 @@ interface FeedsOptions {
|
|
|
1622
2477
|
* @default "/"
|
|
1623
2478
|
*/
|
|
1624
2479
|
path?: string;
|
|
2480
|
+
/** Channel title. Defaults to the SSG site name. */
|
|
2481
|
+
title?: string;
|
|
2482
|
+
/** Channel description. Defaults to the SSG site description. */
|
|
2483
|
+
description?: string;
|
|
2484
|
+
/** Channel language (`en`, `ja`, …). Omitted when unset. */
|
|
2485
|
+
language?: string;
|
|
2486
|
+
/** Channel image URL (RSS image / Atom logo / JSON Feed icon). */
|
|
2487
|
+
image?: string;
|
|
2488
|
+
/** Favicon URL (Atom icon / JSON Feed favicon). */
|
|
2489
|
+
favicon?: string;
|
|
2490
|
+
/** Copyright / rights notice. Omitted from JSON Feed. */
|
|
2491
|
+
copyright?: string;
|
|
1625
2492
|
}
|
|
1626
2493
|
/**
|
|
1627
|
-
*
|
|
2494
|
+
* Opt-in RSS / Atom / JSON Feed files written during SSG.
|
|
2495
|
+
*
|
|
2496
|
+
* A single object is one default feed. A named record or array writes
|
|
2497
|
+
* multiple feeds with their own paths and channel metadata.
|
|
1628
2498
|
*/
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
2499
|
+
type FeedsOptions = FeedChannelOptions | readonly FeedChannelOptions[] | {
|
|
2500
|
+
[name: string]: FeedChannelOptions;
|
|
2501
|
+
};
|
|
2502
|
+
/**
|
|
2503
|
+
* One resolved feed channel.
|
|
2504
|
+
*/
|
|
2505
|
+
interface ResolvedFeedChannel {
|
|
2506
|
+
name?: string;
|
|
2507
|
+
formats: readonly FeedFormat[];
|
|
1632
2508
|
collection?: string;
|
|
2509
|
+
items?: FeedItemsSource;
|
|
1633
2510
|
limit: number;
|
|
1634
2511
|
path: string;
|
|
2512
|
+
title?: string;
|
|
2513
|
+
description?: string;
|
|
2514
|
+
language?: string;
|
|
2515
|
+
image?: string;
|
|
2516
|
+
favicon?: string;
|
|
2517
|
+
copyright?: string;
|
|
2518
|
+
}
|
|
2519
|
+
/**
|
|
2520
|
+
* Resolved feed options.
|
|
2521
|
+
*
|
|
2522
|
+
* Legacy `true` / single-object configs keep one channel on the top-level
|
|
2523
|
+
* fields. A named record or array also sets `feeds` to every channel.
|
|
2524
|
+
*/
|
|
2525
|
+
interface ResolvedFeedsOptions extends ResolvedFeedChannel {
|
|
2526
|
+
enabled: boolean;
|
|
2527
|
+
feeds?: ResolvedFeedChannel[];
|
|
2528
|
+
}
|
|
2529
|
+
/**
|
|
2530
|
+
* One person in the `blog.authors` map.
|
|
2531
|
+
*/
|
|
2532
|
+
interface BlogAuthor {
|
|
2533
|
+
/** Display name. Escaped in HTML. */
|
|
2534
|
+
name: string;
|
|
2535
|
+
/** Optional short bio. Escaped in HTML. */
|
|
2536
|
+
bio?: string;
|
|
2537
|
+
/** Profile URL. Only `https:` or a site-relative `/` path is emitted. */
|
|
2538
|
+
url?: string;
|
|
2539
|
+
}
|
|
2540
|
+
/**
|
|
2541
|
+
* Opt-in blog index, authors, tags, reading time, and archive.
|
|
2542
|
+
*/
|
|
2543
|
+
interface BlogOptions {
|
|
2544
|
+
/**
|
|
2545
|
+
* Named collection of posts. Defaults to a collection named `blog`, or
|
|
2546
|
+
* the only configured collection. Required when several collections exist
|
|
2547
|
+
* and none is named `blog`.
|
|
2548
|
+
*/
|
|
2549
|
+
collection?: string;
|
|
2550
|
+
/**
|
|
2551
|
+
* Author records keyed by the frontmatter `author` / `authors` value.
|
|
2552
|
+
* @default {}
|
|
2553
|
+
*/
|
|
2554
|
+
authors?: Record<string, BlogAuthor>;
|
|
2555
|
+
/**
|
|
2556
|
+
* Posts per index page, newest first.
|
|
2557
|
+
* @default 10
|
|
2558
|
+
*/
|
|
2559
|
+
pageSize?: number;
|
|
2560
|
+
/**
|
|
2561
|
+
* External RSS / Atom sources merged into the blog index at build time.
|
|
2562
|
+
* Empty / omitted fetches nothing. Only these URLs are requested.
|
|
2563
|
+
* @default []
|
|
2564
|
+
*/
|
|
2565
|
+
feeds?: Array<string | BlogFeedSource>;
|
|
2566
|
+
}
|
|
2567
|
+
/**
|
|
2568
|
+
* One configured external blog feed.
|
|
2569
|
+
*/
|
|
2570
|
+
interface BlogFeedSource {
|
|
2571
|
+
/** Absolute `https:` feed URL. */
|
|
2572
|
+
url: string;
|
|
2573
|
+
/** Default language applied when an item omits one. */
|
|
2574
|
+
language?: string;
|
|
2575
|
+
/** Default author applied when an item omits one. */
|
|
2576
|
+
author?: string;
|
|
2577
|
+
/**
|
|
2578
|
+
* Failed fetch / parse handling for this source.
|
|
2579
|
+
* `warn` skips the source. `error` fails the build after other sources run.
|
|
2580
|
+
* @default "warn"
|
|
2581
|
+
*/
|
|
2582
|
+
onError?: BlogFeedFailurePolicy;
|
|
2583
|
+
}
|
|
2584
|
+
/** How a failed external feed source is reported. */
|
|
2585
|
+
type BlogFeedFailurePolicy = "warn" | "error";
|
|
2586
|
+
/**
|
|
2587
|
+
* Resolved blog options.
|
|
2588
|
+
*/
|
|
2589
|
+
interface ResolvedBlogOptions {
|
|
2590
|
+
enabled: boolean;
|
|
2591
|
+
collection?: string;
|
|
2592
|
+
authors: Record<string, BlogAuthor>;
|
|
2593
|
+
pageSize: number;
|
|
2594
|
+
feeds: ResolvedBlogFeedSource[];
|
|
2595
|
+
}
|
|
2596
|
+
/**
|
|
2597
|
+
* Resolved external blog feed source.
|
|
2598
|
+
*/
|
|
2599
|
+
interface ResolvedBlogFeedSource {
|
|
2600
|
+
url: string;
|
|
2601
|
+
language?: string;
|
|
2602
|
+
author?: string;
|
|
2603
|
+
onError: BlogFeedFailurePolicy;
|
|
1635
2604
|
}
|
|
1636
2605
|
/**
|
|
1637
2606
|
* Opt-in term list pages, per-term pages, and related-page lists.
|
|
@@ -1830,6 +2799,18 @@ interface OxContentOptions {
|
|
|
1830
2799
|
* @default false
|
|
1831
2800
|
*/
|
|
1832
2801
|
redirects?: boolean | RedirectsOptions | Record<string, string>;
|
|
2802
|
+
/**
|
|
2803
|
+
* Write a paginated blog index, tag pages, and yearly/monthly archive,
|
|
2804
|
+
* and inject author / reading-time chrome on posts.
|
|
2805
|
+
*
|
|
2806
|
+
* Off by default. `true` uses the `blog` collection when it exists,
|
|
2807
|
+
* otherwise the only configured collection, with pageSize 10.
|
|
2808
|
+
* An object enables the feature and overrides only the fields you set.
|
|
2809
|
+
* Also accepted as `ssg.blog`; the top-level option wins when both are set.
|
|
2810
|
+
*
|
|
2811
|
+
* @default false
|
|
2812
|
+
*/
|
|
2813
|
+
blog?: boolean | BlogOptions;
|
|
1833
2814
|
/**
|
|
1834
2815
|
* Write RSS, Atom, and/or JSON Feed files from a named collection.
|
|
1835
2816
|
*
|
|
@@ -1842,6 +2823,29 @@ interface OxContentOptions {
|
|
|
1842
2823
|
* @default false
|
|
1843
2824
|
*/
|
|
1844
2825
|
feeds?: boolean | FeedsOptions;
|
|
2826
|
+
/**
|
|
2827
|
+
* Write a web app manifest and an optional service worker.
|
|
2828
|
+
*
|
|
2829
|
+
* Off by default. `true` writes `manifest.webmanifest` and `sw.js`, and
|
|
2830
|
+
* injects a tiny client script that registers the worker on themed pages.
|
|
2831
|
+
* An object enables the feature and can set `offline: false` to keep the
|
|
2832
|
+
* manifest without caching or that script. This adds client JavaScript
|
|
2833
|
+
* when offline is on. Requires `ssg.siteUrl`. When that is missing the
|
|
2834
|
+
* build continues and a warning is emitted instead of writing files.
|
|
2835
|
+
*
|
|
2836
|
+
* @default false
|
|
2837
|
+
*/
|
|
2838
|
+
pwa?: boolean | PwaOptions;
|
|
2839
|
+
/**
|
|
2840
|
+
* Generate self-hosted Iconify CSS for used and safelisted icons.
|
|
2841
|
+
*
|
|
2842
|
+
* Off by default. `true` or `{}` enables CSS-mask emission. Install
|
|
2843
|
+
* `@iconify/json` or individual `@iconify-json/*` packages so the build
|
|
2844
|
+
* can resolve collections without a network request.
|
|
2845
|
+
*
|
|
2846
|
+
* @default false
|
|
2847
|
+
*/
|
|
2848
|
+
icons?: boolean | IconsOptions;
|
|
1845
2849
|
/**
|
|
1846
2850
|
* Write tag/category term pages and inject related-page lists.
|
|
1847
2851
|
*
|
|
@@ -1884,6 +2888,17 @@ interface OxContentOptions {
|
|
|
1884
2888
|
* @default true
|
|
1885
2889
|
*/
|
|
1886
2890
|
footnotes?: boolean;
|
|
2891
|
+
/**
|
|
2892
|
+
* Render footnotes as a semantic ordered section with numeric markers.
|
|
2893
|
+
*
|
|
2894
|
+
* Source identifiers are used only for lookup and slugs. Visible markers
|
|
2895
|
+
* are 1, 2, … in document order, and definitions emit as
|
|
2896
|
+
* `<section class="footnotes"><ol><li>…`.
|
|
2897
|
+
*
|
|
2898
|
+
* Off by default so current alpha HTML stays stable.
|
|
2899
|
+
* @default false
|
|
2900
|
+
*/
|
|
2901
|
+
semanticFootnotes?: boolean;
|
|
1887
2902
|
/**
|
|
1888
2903
|
* Enable tables.
|
|
1889
2904
|
* @default true
|
|
@@ -1908,9 +2923,9 @@ interface OxContentOptions {
|
|
|
1908
2923
|
* Enable syntax highlighting for code blocks.
|
|
1909
2924
|
*
|
|
1910
2925
|
* When true, fenced and language-tagged inline code is highlighted with the
|
|
1911
|
-
* native tree-sitter engine. Token colors are `--octc-
|
|
1912
|
-
* properties
|
|
1913
|
-
*
|
|
2926
|
+
* native tree-sitter engine. Token colors are `--octc-syntax-*` custom
|
|
2927
|
+
* properties so theme-color packages resolve highlighting. Languages with no
|
|
2928
|
+
* native grammar stay unhighlighted.
|
|
1914
2929
|
*
|
|
1915
2930
|
* @default false
|
|
1916
2931
|
*/
|
|
@@ -1960,6 +2975,42 @@ interface OxContentOptions {
|
|
|
1960
2975
|
* @default false
|
|
1961
2976
|
*/
|
|
1962
2977
|
attrs?: boolean | AttrsOptions;
|
|
2978
|
+
/**
|
|
2979
|
+
* Opt-in labeled cross-references for headings, figures/images, and tables.
|
|
2980
|
+
*
|
|
2981
|
+
* References such as `@sec-install`, `@fig-pipeline`, and `@tbl-options`
|
|
2982
|
+
* become links to matching `id` attributes generated by `attrs` or native
|
|
2983
|
+
* Markdown rendering. Missing labels, duplicate labels, and prefix/type
|
|
2984
|
+
* mismatches fail by default and can be downgraded to warnings.
|
|
2985
|
+
*
|
|
2986
|
+
* @default false
|
|
2987
|
+
*/
|
|
2988
|
+
crossReferences?: boolean | CrossReferencesOptions;
|
|
2989
|
+
/**
|
|
2990
|
+
* Alias for `crossReferences`.
|
|
2991
|
+
*
|
|
2992
|
+
* @default false
|
|
2993
|
+
*/
|
|
2994
|
+
xrefs?: boolean | CrossReferencesOptions;
|
|
2995
|
+
/**
|
|
2996
|
+
* Opt-in bibliography-backed citation references.
|
|
2997
|
+
*
|
|
2998
|
+
* References such as `[@rfc9110]` and `[@smith2024; @doe2023]` become
|
|
2999
|
+
* links to generated bibliography entries loaded from local CSL JSON files.
|
|
3000
|
+
*
|
|
3001
|
+
* @default false
|
|
3002
|
+
*/
|
|
3003
|
+
citations?: boolean | CitationsOptions;
|
|
3004
|
+
/**
|
|
3005
|
+
* Opt-in build-time BudouX phrase segmentation.
|
|
3006
|
+
*
|
|
3007
|
+
* Inserts zero-width spaces into visible prose so Japanese text gets better
|
|
3008
|
+
* line-break opportunities without shipping the BudouX parser to the browser.
|
|
3009
|
+
* Install `budoux` when enabling the default parser, or pass a custom parser.
|
|
3010
|
+
*
|
|
3011
|
+
* @default false
|
|
3012
|
+
*/
|
|
3013
|
+
budoux?: boolean | BudouxOptions;
|
|
1963
3014
|
/**
|
|
1964
3015
|
* Opt-in `{badge:variant}` inline badges.
|
|
1965
3016
|
*
|
|
@@ -1969,6 +3020,62 @@ interface OxContentOptions {
|
|
|
1969
3020
|
* @default false
|
|
1970
3021
|
*/
|
|
1971
3022
|
badges?: boolean | BadgeOptions;
|
|
3023
|
+
/**
|
|
3024
|
+
* Opt-in `<NotByAI />` authorship disclosure badge.
|
|
3025
|
+
*
|
|
3026
|
+
* Passing `true` or an options object emits the official Not By AI light/dark
|
|
3027
|
+
* artwork as static HTML. This is not a status badge — see `badges` for
|
|
3028
|
+
* `{badge:tip}` labels. Disabled when omitted. Fenced, indented, and inline
|
|
3029
|
+
* code plus HTML comments are skipped.
|
|
3030
|
+
*
|
|
3031
|
+
* @default false
|
|
3032
|
+
*/
|
|
3033
|
+
notByAi?: boolean | NotByAiOptions;
|
|
3034
|
+
/**
|
|
3035
|
+
* Opt-in `{kbd:...}` inline keyboard keys.
|
|
3036
|
+
*
|
|
3037
|
+
* Passing `true` or an options object enables `{kbd:Ctrl+K}` and
|
|
3038
|
+
* `{kbd:Cmd Shift P}`. Key labels are HTML-escaped. Fenced, indented,
|
|
3039
|
+
* inline, and raw code, plus HTML comments, are skipped. Aliases come
|
|
3040
|
+
* from build config, not the runtime user agent.
|
|
3041
|
+
*
|
|
3042
|
+
* @default false
|
|
3043
|
+
*/
|
|
3044
|
+
keyboardKeys?: boolean | KeyboardKeysOptions;
|
|
3045
|
+
/**
|
|
3046
|
+
* Opt-in abbreviation and glossary expansion.
|
|
3047
|
+
*
|
|
3048
|
+
* Passing `true` or an options object expands `*[LSP]: Language Server Protocol`
|
|
3049
|
+
* and config `terms` into `<abbr class="ox-abbr">`. Matching uses Unicode word
|
|
3050
|
+
* boundaries. Fenced, indented, inline, and raw code, HTML comments, and
|
|
3051
|
+
* existing links are skipped. There is no client JavaScript.
|
|
3052
|
+
*
|
|
3053
|
+
* @default false
|
|
3054
|
+
*/
|
|
3055
|
+
abbreviations?: boolean | AbbreviationsOptions;
|
|
3056
|
+
/**
|
|
3057
|
+
* Opt-in PHP Markdown Extra / mdBook-style definition lists.
|
|
3058
|
+
*
|
|
3059
|
+
* Passing `true` or an options object turns
|
|
3060
|
+
* `Term` / `: definition` source into semantic `<dl>` markup.
|
|
3061
|
+
* Disabled when omitted. Fenced, indented, and inline code are skipped.
|
|
3062
|
+
* Invalid or ambiguous forms stay ordinary paragraphs or lists.
|
|
3063
|
+
*
|
|
3064
|
+
* @default false
|
|
3065
|
+
*/
|
|
3066
|
+
definitionLists?: boolean | DefinitionListOptions;
|
|
3067
|
+
/**
|
|
3068
|
+
* Opt-in `{link:...}` rich magic links.
|
|
3069
|
+
*
|
|
3070
|
+
* Passing `true` or an options object enables GitHub-user, alias, and
|
|
3071
|
+
* explicit `label|url` forms. Attributes and text are HTML-escaped.
|
|
3072
|
+
* Fenced, indented, inline, and raw code, plus already-linked text, are
|
|
3073
|
+
* skipped. The transform does not make network requests unless an explicit
|
|
3074
|
+
* favicon template is enabled (still URL-only; no fetch at transform time).
|
|
3075
|
+
*
|
|
3076
|
+
* @default false
|
|
3077
|
+
*/
|
|
3078
|
+
magicLinks?: boolean | MagicLinkOptions;
|
|
1972
3079
|
/**
|
|
1973
3080
|
* Opt-in `::: tip` custom containers.
|
|
1974
3081
|
*
|
|
@@ -1989,6 +3096,57 @@ interface OxContentOptions {
|
|
|
1989
3096
|
* @default false
|
|
1990
3097
|
*/
|
|
1991
3098
|
images?: boolean | ImageOptions;
|
|
3099
|
+
/**
|
|
3100
|
+
* Opt-in static `::: gallery` image groups.
|
|
3101
|
+
*
|
|
3102
|
+
* Each non-empty line inside the block must be a Markdown image, optionally
|
|
3103
|
+
* as a list item. Image titles become item captions, and the block title or
|
|
3104
|
+
* caption metadata becomes the gallery caption. Passing `true` or `{}`
|
|
3105
|
+
* enables strict empty-gallery and missing-alt diagnostics.
|
|
3106
|
+
*
|
|
3107
|
+
* @default false
|
|
3108
|
+
*/
|
|
3109
|
+
imageGalleries?: boolean | ImageGalleryOptions;
|
|
3110
|
+
/**
|
|
3111
|
+
* Opt-in static `::: timeline` milestone lists.
|
|
3112
|
+
*
|
|
3113
|
+
* Timeline blocks render dated or undated milestones from Markdown-only
|
|
3114
|
+
* `::: timeline` blocks. Items can carry `status`, `label`, and `href`
|
|
3115
|
+
* metadata while nested Markdown stays searchable and static.
|
|
3116
|
+
*
|
|
3117
|
+
* @default false
|
|
3118
|
+
*/
|
|
3119
|
+
timelines?: boolean | TimelineOptions;
|
|
3120
|
+
/**
|
|
3121
|
+
* Opt-in static `::: if` / `::: else` blocks.
|
|
3122
|
+
*
|
|
3123
|
+
* Conditions are evaluated from `conditionalBlocks.values` and page
|
|
3124
|
+
* frontmatter before Markdown is parsed. Non-selected branches are excluded
|
|
3125
|
+
* from rendered HTML, TOC, and generated search payloads. The expression
|
|
3126
|
+
* language supports `==`, `!=`, `in`, `and`, `or`, parentheses, string /
|
|
3127
|
+
* number / boolean / null literals, and array literals. No JavaScript is
|
|
3128
|
+
* executed.
|
|
3129
|
+
*
|
|
3130
|
+
* @default false
|
|
3131
|
+
*/
|
|
3132
|
+
conditionalBlocks?: boolean | ConditionalBlockOptions;
|
|
3133
|
+
/**
|
|
3134
|
+
* Opt-in page-bundle resources and build-time image processing.
|
|
3135
|
+
*
|
|
3136
|
+
* Off by default. `true` or `{}` treats each page directory as a bundle:
|
|
3137
|
+
* sibling images are addressable with relative URLs. Query-string
|
|
3138
|
+
* resize/crop/format transforms run at build time and are cached by
|
|
3139
|
+
* source mtime plus transform params. Paths that leave the page
|
|
3140
|
+
* directory or `srcDir` are rejected. Missing sources fail the build
|
|
3141
|
+
* when `missing` is `"error"` (the default when enabled).
|
|
3142
|
+
* `dedupe` is off unless set; it does not turn on with `true` / `{}`.
|
|
3143
|
+
*
|
|
3144
|
+
* This is separate from `images`, which only adds figures, captions,
|
|
3145
|
+
* and lazy-loading.
|
|
3146
|
+
*
|
|
3147
|
+
* @default false
|
|
3148
|
+
*/
|
|
3149
|
+
resources?: boolean | ResourcesOptions;
|
|
1992
3150
|
/**
|
|
1993
3151
|
* Import source snippets into fences with `<<< @/path/to/file.ts{region}`.
|
|
1994
3152
|
*
|
|
@@ -2010,6 +3168,17 @@ interface OxContentOptions {
|
|
|
2010
3168
|
* @default false
|
|
2011
3169
|
*/
|
|
2012
3170
|
includes?: boolean | IncludeOptions;
|
|
3171
|
+
/**
|
|
3172
|
+
* Inline a parameterized Markdown partial with
|
|
3173
|
+
* `<!-- @partial: ./_partials/install.md package="ox-content" -->`.
|
|
3174
|
+
*
|
|
3175
|
+
* Disabled when omitted. `{{ name }}` substitutions are HTML-escaped.
|
|
3176
|
+
* Missing parameters stay literal unless `missing` is `"error"`. Existing
|
|
3177
|
+
* `<!-- @include: -->` behavior is unchanged.
|
|
3178
|
+
*
|
|
3179
|
+
* @default false
|
|
3180
|
+
*/
|
|
3181
|
+
partials?: boolean | PartialsOptions;
|
|
2013
3182
|
/**
|
|
2014
3183
|
* Opt-in `::: card` / `::: link-card` / `::: card-grid` blocks.
|
|
2015
3184
|
*
|
|
@@ -2028,15 +3197,37 @@ interface OxContentOptions {
|
|
|
2028
3197
|
* @default false
|
|
2029
3198
|
*/
|
|
2030
3199
|
steps?: boolean | StepsOptions;
|
|
3200
|
+
/**
|
|
3201
|
+
* Opt-in VitePress-style `::: code-group` fence groups.
|
|
3202
|
+
*
|
|
3203
|
+
* Passing `true` or `{}` enables rewriting labeled fences into the
|
|
3204
|
+
* existing no-JS tab widget. Omitted or `false` leaves the source on
|
|
3205
|
+
* the normal Markdown/container path.
|
|
3206
|
+
*
|
|
3207
|
+
* @default false
|
|
3208
|
+
*/
|
|
3209
|
+
codeGroups?: boolean | CodeGroupOptions;
|
|
2031
3210
|
/**
|
|
2032
3211
|
* Opt-in static directory trees from `file-tree` fences.
|
|
2033
3212
|
*
|
|
2034
3213
|
* Passing `true` or `{}` enables the transform. Names are escaped and never
|
|
2035
|
-
* read from the filesystem.
|
|
3214
|
+
* read from the filesystem. Directories with children open and close with
|
|
3215
|
+
* `<details>`. Icons are on by default and can be replaced from site config.
|
|
2036
3216
|
*
|
|
2037
3217
|
* @default false
|
|
2038
3218
|
*/
|
|
2039
3219
|
fileTree?: boolean | FileTreeOptions;
|
|
3220
|
+
/**
|
|
3221
|
+
* Opt-in static tables from `csv-table` / `json-table` fences.
|
|
3222
|
+
*
|
|
3223
|
+
* Passing `true` or `{}` enables the transform. Inline CSV/JSON becomes a
|
|
3224
|
+
* semantic `<table>` with a responsive wrapper. `src` or a single path body
|
|
3225
|
+
* can import `@/data/options.csv` or `./options.json`. Paths cannot escape
|
|
3226
|
+
* the content/project root with `..`. Missing imports use `missing`.
|
|
3227
|
+
*
|
|
3228
|
+
* @default false
|
|
3229
|
+
*/
|
|
3230
|
+
dataTables?: boolean | DataTableOptions;
|
|
2040
3231
|
/**
|
|
2041
3232
|
* Sanitize rendered HTML with safe defaults or explicit allow lists.
|
|
2042
3233
|
*
|
|
@@ -2083,6 +3274,16 @@ interface OxContentOptions {
|
|
|
2083
3274
|
* @default false
|
|
2084
3275
|
*/
|
|
2085
3276
|
codeBlockTypecheck?: boolean | CodeBlockTypecheckOptions;
|
|
3277
|
+
/**
|
|
3278
|
+
* Attach build-time TypeScript hover overlays to opted-in fences.
|
|
3279
|
+
*
|
|
3280
|
+
* Off by default. `true` or `{}` enables the feature. Only `ts` / `tsx`
|
|
3281
|
+
* fences tagged `twoslash` receive payloads. Types are generated during
|
|
3282
|
+
* the Markdown transform; no TypeScript compiler is shipped to the browser.
|
|
3283
|
+
*
|
|
3284
|
+
* @default false
|
|
3285
|
+
*/
|
|
3286
|
+
typedHover?: boolean | TypedHoverOptions;
|
|
2086
3287
|
/**
|
|
2087
3288
|
* Extract runnable fenced examples for Vitest docs-as-tests harnesses.
|
|
2088
3289
|
*
|
|
@@ -2097,6 +3298,13 @@ interface OxContentOptions {
|
|
|
2097
3298
|
* @default false
|
|
2098
3299
|
*/
|
|
2099
3300
|
mermaid?: boolean;
|
|
3301
|
+
/**
|
|
3302
|
+
* Render `dot` / `graphviz` fenced blocks to static SVG with Graphviz.
|
|
3303
|
+
* Pass an object to configure the renderer command and failure policy.
|
|
3304
|
+
*
|
|
3305
|
+
* @default false
|
|
3306
|
+
*/
|
|
3307
|
+
graphviz?: boolean | GraphvizOptions;
|
|
2100
3308
|
/**
|
|
2101
3309
|
* Enable `$…$` inline and `$$…$$` block math.
|
|
2102
3310
|
*
|
|
@@ -2121,6 +3329,15 @@ interface OxContentOptions {
|
|
|
2121
3329
|
* @default 3
|
|
2122
3330
|
*/
|
|
2123
3331
|
tocMaxDepth?: number;
|
|
3332
|
+
/**
|
|
3333
|
+
* Append a visible heading permalink (`<a class="header-anchor" href="#id">`).
|
|
3334
|
+
*
|
|
3335
|
+
* Reuses the generated heading id. Default off. Theme
|
|
3336
|
+
* `headingPermalink: "hover" | "always"` changes only CSS visibility.
|
|
3337
|
+
*
|
|
3338
|
+
* @default false
|
|
3339
|
+
*/
|
|
3340
|
+
headingPermalinks?: boolean | HeadingPermalinksOptions;
|
|
2124
3341
|
/**
|
|
2125
3342
|
* Enable OG image generation.
|
|
2126
3343
|
* @default false
|
|
@@ -2194,12 +3411,23 @@ interface ResolvedOptions {
|
|
|
2194
3411
|
permalinks?: ResolvedPermalinksOptions;
|
|
2195
3412
|
cascade?: ResolvedCascadeOptions;
|
|
2196
3413
|
redirects?: ResolvedRedirectsOptions;
|
|
3414
|
+
blog?: ResolvedBlogOptions;
|
|
2197
3415
|
feeds?: ResolvedFeedsOptions;
|
|
3416
|
+
pwa?: ResolvedPwaOptions;
|
|
3417
|
+
/**
|
|
3418
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3419
|
+
*/
|
|
3420
|
+
icons?: ResolvedIconsOptions;
|
|
2198
3421
|
taxonomies?: ResolvedTaxonomiesOptions;
|
|
2199
3422
|
versions?: ResolvedVersionsOptions;
|
|
3423
|
+
resources?: ResolvedResourcesOptions;
|
|
2200
3424
|
gfm: boolean;
|
|
2201
3425
|
mdx?: boolean;
|
|
2202
3426
|
footnotes: boolean;
|
|
3427
|
+
/**
|
|
3428
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3429
|
+
*/
|
|
3430
|
+
semanticFootnotes?: boolean;
|
|
2203
3431
|
tables: boolean;
|
|
2204
3432
|
taskLists: boolean;
|
|
2205
3433
|
strikethrough: boolean;
|
|
@@ -2209,25 +3437,78 @@ interface ResolvedOptions {
|
|
|
2209
3437
|
wikiLinks: ResolvedWikiLinkOptions;
|
|
2210
3438
|
emojiShortcodes: ResolvedEmojiShortcodeOptions;
|
|
2211
3439
|
attrs: ResolvedAttrsOptions;
|
|
3440
|
+
crossReferences: ResolvedCrossReferencesOptions;
|
|
3441
|
+
citations: ResolvedCitationsOptions;
|
|
3442
|
+
/**
|
|
3443
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3444
|
+
*/
|
|
3445
|
+
budoux?: ResolvedBudouxOptions;
|
|
2212
3446
|
badges: ResolvedBadgeOptions;
|
|
3447
|
+
/**
|
|
3448
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3449
|
+
*/
|
|
3450
|
+
notByAi?: ResolvedNotByAiOptions;
|
|
3451
|
+
keyboardKeys?: ResolvedKeyboardKeysOptions;
|
|
3452
|
+
/**
|
|
3453
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3454
|
+
*/
|
|
3455
|
+
abbreviations?: ResolvedAbbreviationsOptions;
|
|
3456
|
+
/**
|
|
3457
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3458
|
+
*/
|
|
3459
|
+
definitionLists?: ResolvedDefinitionListOptions;
|
|
3460
|
+
/**
|
|
3461
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3462
|
+
*/
|
|
3463
|
+
magicLinks?: ResolvedMagicLinkOptions;
|
|
2213
3464
|
containers: ResolvedContainerOptions;
|
|
2214
3465
|
images: ResolvedImageOptions;
|
|
3466
|
+
/**
|
|
3467
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3468
|
+
*/
|
|
3469
|
+
imageGalleries?: ResolvedImageGalleryOptions;
|
|
3470
|
+
/**
|
|
3471
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3472
|
+
*/
|
|
3473
|
+
timelines?: ResolvedTimelineOptions;
|
|
3474
|
+
/**
|
|
3475
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3476
|
+
*/
|
|
3477
|
+
conditionalBlocks?: ResolvedConditionalBlockOptions;
|
|
2215
3478
|
codeImports: ResolvedCodeImportOptions;
|
|
2216
3479
|
includes: ResolvedIncludeOptions;
|
|
3480
|
+
/**
|
|
3481
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3482
|
+
*/
|
|
3483
|
+
partials?: ResolvedPartialsOptions;
|
|
2217
3484
|
cards: ResolvedCardOptions;
|
|
2218
3485
|
steps: ResolvedStepsOptions;
|
|
3486
|
+
/**
|
|
3487
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3488
|
+
*/
|
|
3489
|
+
codeGroups?: ResolvedCodeGroupOptions;
|
|
2219
3490
|
fileTree: ResolvedFileTreeOptions;
|
|
3491
|
+
dataTables: ResolvedDataTableOptions;
|
|
2220
3492
|
sanitize: ResolvedSanitizeOptions;
|
|
2221
3493
|
editThisPage: ResolvedEditThisPageOptions;
|
|
2222
3494
|
cjkEmphasis: boolean;
|
|
2223
3495
|
codeBlockLint: ResolvedCodeBlockLintOptions;
|
|
2224
3496
|
codeBlockTypecheck: ResolvedCodeBlockTypecheckOptions;
|
|
3497
|
+
/**
|
|
3498
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3499
|
+
*/
|
|
3500
|
+
typedHover?: ResolvedTypedHoverOptions;
|
|
2225
3501
|
docsTests: ResolvedDocsTestOptions;
|
|
2226
3502
|
mermaid: boolean;
|
|
3503
|
+
graphviz: ResolvedGraphvizOptions | false;
|
|
2227
3504
|
math: ResolvedMathOptions;
|
|
2228
3505
|
frontmatter: boolean;
|
|
2229
3506
|
toc: boolean;
|
|
2230
3507
|
tocMaxDepth: number;
|
|
3508
|
+
/**
|
|
3509
|
+
* Present after `resolveOptions`. Omitted in hand-built fixtures means off.
|
|
3510
|
+
*/
|
|
3511
|
+
headingPermalinks?: ResolvedHeadingPermalinksOptions;
|
|
2231
3512
|
ogImage: boolean;
|
|
2232
3513
|
ogImageOptions: ResolvedOgImageOptions$1;
|
|
2233
3514
|
transformers: MarkdownTransformer[];
|
|
@@ -2269,6 +3550,28 @@ interface BuiltinEmbedOptions {
|
|
|
2269
3550
|
* @default false
|
|
2270
3551
|
*/
|
|
2271
3552
|
spotify?: boolean;
|
|
3553
|
+
/**
|
|
3554
|
+
* Render `<AppleMusic url="https://music.apple.com/...">` iframes.
|
|
3555
|
+
* @default false
|
|
3556
|
+
*/
|
|
3557
|
+
appleMusic?: boolean;
|
|
3558
|
+
/**
|
|
3559
|
+
* Render `<SpeakerDeck url="https://speakerdeck.com/...">` cards.
|
|
3560
|
+
* Player URLs and oEmbed-resolved share URLs render a lazy iframe plus
|
|
3561
|
+
* title/author metadata. Fetch or parse failures become a link card.
|
|
3562
|
+
* @default false
|
|
3563
|
+
*/
|
|
3564
|
+
speakerDeck?: boolean;
|
|
3565
|
+
/**
|
|
3566
|
+
* Render `<Audio src="https://...">` native audio players.
|
|
3567
|
+
* @default false
|
|
3568
|
+
*/
|
|
3569
|
+
audio?: boolean;
|
|
3570
|
+
/**
|
|
3571
|
+
* Render `<Video src="https://...">` native video players.
|
|
3572
|
+
* @default false
|
|
3573
|
+
*/
|
|
3574
|
+
video?: boolean;
|
|
2272
3575
|
/**
|
|
2273
3576
|
* Render `<StackBlitz url="https://stackblitz.com/edit/...">` iframes.
|
|
2274
3577
|
* @default false
|
|
@@ -2281,11 +3584,83 @@ interface BuiltinEmbedOptions {
|
|
|
2281
3584
|
* @default false
|
|
2282
3585
|
*/
|
|
2283
3586
|
twitter?: boolean | TwitterEmbedOptions;
|
|
3587
|
+
/**
|
|
3588
|
+
* Render `<Reddit>` as a static post card.
|
|
3589
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render a link-only card.
|
|
3590
|
+
* @default false
|
|
3591
|
+
*/
|
|
3592
|
+
reddit?: boolean | RedditEmbedOptions;
|
|
2284
3593
|
/**
|
|
2285
3594
|
* Render `<Bluesky>` as static cards.
|
|
2286
3595
|
* @default false
|
|
2287
3596
|
*/
|
|
2288
3597
|
bluesky?: boolean;
|
|
3598
|
+
/**
|
|
3599
|
+
* Render `<GoogleMaps>` as static place cards.
|
|
3600
|
+
* @default false
|
|
3601
|
+
*/
|
|
3602
|
+
googleMaps?: boolean;
|
|
3603
|
+
/**
|
|
3604
|
+
* Render `<Qiita>` as static article cards.
|
|
3605
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render a link-only card.
|
|
3606
|
+
* @default false
|
|
3607
|
+
*/
|
|
3608
|
+
qiita?: boolean | ProviderArticleEmbedOptions;
|
|
3609
|
+
/**
|
|
3610
|
+
* Render `<Zenn>` as static article cards.
|
|
3611
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render a link-only card.
|
|
3612
|
+
* @default false
|
|
3613
|
+
*/
|
|
3614
|
+
zenn?: boolean | ProviderArticleEmbedOptions;
|
|
3615
|
+
/**
|
|
3616
|
+
* Render `<NpmPackage>`, `<CratesIo>`, `<PyPI>`, and `<DockerHub>` as static cards.
|
|
3617
|
+
* Pass `{ fetch: false }` to skip metadata fetching and render link-only cards.
|
|
3618
|
+
* @default false
|
|
3619
|
+
*/
|
|
3620
|
+
packageRegistry?: boolean | ProviderPackageEmbedOptions;
|
|
3621
|
+
/**
|
|
3622
|
+
* Render `<CodePen>`, `<JSFiddle>`, and `<Observable>` as static playground cards.
|
|
3623
|
+
* Pass `{ iframe: true }` to include lazy iframe URLs where supported.
|
|
3624
|
+
* @default false
|
|
3625
|
+
*/
|
|
3626
|
+
playgrounds?: boolean | ProviderPlaygroundEmbedOptions;
|
|
3627
|
+
/**
|
|
3628
|
+
* Render `<Vimeo>` as static video cards.
|
|
3629
|
+
* Pass `{ iframe: true }` to include lazy player iframe URLs.
|
|
3630
|
+
* @default false
|
|
3631
|
+
*/
|
|
3632
|
+
vimeo?: boolean | ProviderVideoEmbedOptions;
|
|
3633
|
+
/**
|
|
3634
|
+
* Render `<Twitch>` as static video, clip, and channel cards.
|
|
3635
|
+
* Pass `{ iframe: true, parent: "example.com" }` to include Twitch iframes.
|
|
3636
|
+
* @default false
|
|
3637
|
+
*/
|
|
3638
|
+
twitch?: boolean | ProviderVideoEmbedOptions;
|
|
3639
|
+
/**
|
|
3640
|
+
* Render `<Discord>` as static invite/message cards.
|
|
3641
|
+
* @default false
|
|
3642
|
+
*/
|
|
3643
|
+
discord?: boolean;
|
|
3644
|
+
/**
|
|
3645
|
+
* Render `<Fediverse>`, `<Mastodon>`, `<Misskey>`, and `<Mixi2>` as static cards.
|
|
3646
|
+
* @default false
|
|
3647
|
+
*/
|
|
3648
|
+
fediverse?: boolean;
|
|
3649
|
+
/**
|
|
3650
|
+
* Render `<Facebook>` as static post cards.
|
|
3651
|
+
* @default false
|
|
3652
|
+
*/
|
|
3653
|
+
facebook?: boolean;
|
|
3654
|
+
/**
|
|
3655
|
+
* Render `<Threads>` as static post cards.
|
|
3656
|
+
* @default false
|
|
3657
|
+
*/
|
|
3658
|
+
threads?: boolean;
|
|
3659
|
+
/**
|
|
3660
|
+
* Render `<Instagram>` as static post cards.
|
|
3661
|
+
* @default false
|
|
3662
|
+
*/
|
|
3663
|
+
instagram?: boolean;
|
|
2289
3664
|
/**
|
|
2290
3665
|
* Render `<WebContainer>` lazy placeholders with isolation metadata.
|
|
2291
3666
|
* @default false
|
|
@@ -2310,9 +3685,26 @@ interface ResolvedBuiltinEmbedOptions {
|
|
|
2310
3685
|
openGraph: OgpOptions | false;
|
|
2311
3686
|
pm: BuiltinPmOptions | false;
|
|
2312
3687
|
spotify: boolean;
|
|
3688
|
+
appleMusic: boolean;
|
|
3689
|
+
speakerDeck: boolean;
|
|
3690
|
+
audio?: boolean;
|
|
3691
|
+
video?: boolean;
|
|
2313
3692
|
stackBlitz: boolean;
|
|
2314
3693
|
twitter: TwitterEmbedOptions | false;
|
|
3694
|
+
reddit?: RedditEmbedOptions | false;
|
|
2315
3695
|
bluesky: boolean;
|
|
3696
|
+
googleMaps?: boolean;
|
|
3697
|
+
qiita?: ProviderArticleEmbedOptions | false;
|
|
3698
|
+
zenn?: ProviderArticleEmbedOptions | false;
|
|
3699
|
+
packageRegistry?: ProviderPackageEmbedOptions | false;
|
|
3700
|
+
playgrounds?: ProviderPlaygroundEmbedOptions | false;
|
|
3701
|
+
vimeo?: ProviderVideoEmbedOptions | false;
|
|
3702
|
+
twitch?: ProviderVideoEmbedOptions | false;
|
|
3703
|
+
discord?: boolean;
|
|
3704
|
+
fediverse?: boolean;
|
|
3705
|
+
facebook?: boolean;
|
|
3706
|
+
threads?: boolean;
|
|
3707
|
+
instagram?: boolean;
|
|
2316
3708
|
webContainer: boolean;
|
|
2317
3709
|
}
|
|
2318
3710
|
/**
|
|
@@ -2332,6 +3724,169 @@ interface BadgeOptions {
|
|
|
2332
3724
|
interface ResolvedBadgeOptions {
|
|
2333
3725
|
enabled: boolean;
|
|
2334
3726
|
}
|
|
3727
|
+
/**
|
|
3728
|
+
* Options for opt-in PHP Markdown Extra / mdBook-style definition lists.
|
|
3729
|
+
*/
|
|
3730
|
+
interface DefinitionListOptions {
|
|
3731
|
+
/**
|
|
3732
|
+
* Enable the definition-list transform when an options object is supplied.
|
|
3733
|
+
*
|
|
3734
|
+
* @default true
|
|
3735
|
+
*/
|
|
3736
|
+
enabled?: boolean;
|
|
3737
|
+
}
|
|
3738
|
+
/**
|
|
3739
|
+
* Resolved definition-list transform options.
|
|
3740
|
+
*/
|
|
3741
|
+
interface ResolvedDefinitionListOptions {
|
|
3742
|
+
enabled: boolean;
|
|
3743
|
+
}
|
|
3744
|
+
/**
|
|
3745
|
+
* Options for the opt-in `<NotByAI />` authorship badge.
|
|
3746
|
+
*/
|
|
3747
|
+
interface NotByAiOptions {
|
|
3748
|
+
/**
|
|
3749
|
+
* Enable the badge transform when an options object is supplied.
|
|
3750
|
+
*
|
|
3751
|
+
* @default true
|
|
3752
|
+
*/
|
|
3753
|
+
enabled?: boolean;
|
|
3754
|
+
/**
|
|
3755
|
+
* Accessible label for the badge link.
|
|
3756
|
+
*
|
|
3757
|
+
* @default "Written by human, not by AI"
|
|
3758
|
+
*/
|
|
3759
|
+
label?: string;
|
|
3760
|
+
/**
|
|
3761
|
+
* Destination URL. Unsafe values fall back to `https://notbyai.fyi`.
|
|
3762
|
+
*
|
|
3763
|
+
* @default "https://notbyai.fyi"
|
|
3764
|
+
*/
|
|
3765
|
+
href?: string;
|
|
3766
|
+
}
|
|
3767
|
+
/**
|
|
3768
|
+
* Resolved NotByAI authorship-badge options.
|
|
3769
|
+
*/
|
|
3770
|
+
interface ResolvedNotByAiOptions {
|
|
3771
|
+
enabled: boolean;
|
|
3772
|
+
label: string;
|
|
3773
|
+
href: string;
|
|
3774
|
+
}
|
|
3775
|
+
/**
|
|
3776
|
+
* Options for opt-in `{kbd:...}` inline keyboard keys.
|
|
3777
|
+
*/
|
|
3778
|
+
interface KeyboardKeysOptions {
|
|
3779
|
+
/**
|
|
3780
|
+
* Enable the keyboard-key transform when an options object is supplied.
|
|
3781
|
+
*
|
|
3782
|
+
* @default true
|
|
3783
|
+
*/
|
|
3784
|
+
enabled?: boolean;
|
|
3785
|
+
/**
|
|
3786
|
+
* Build-time aliases. Keys are matched case-insensitively and override
|
|
3787
|
+
* the built-in `cmd` / `ctrl` table.
|
|
3788
|
+
*/
|
|
3789
|
+
aliases?: Record<string, string>;
|
|
3790
|
+
/**
|
|
3791
|
+
* Built-in alias labels. `"words"` emits `Command`; `"symbols"` emits `⌘`.
|
|
3792
|
+
*
|
|
3793
|
+
* @default "words"
|
|
3794
|
+
*/
|
|
3795
|
+
style?: "words" | "symbols";
|
|
3796
|
+
}
|
|
3797
|
+
/**
|
|
3798
|
+
* Resolved inline keyboard-key transform options.
|
|
3799
|
+
*/
|
|
3800
|
+
interface ResolvedKeyboardKeysOptions {
|
|
3801
|
+
enabled: boolean;
|
|
3802
|
+
aliases: Record<string, string>;
|
|
3803
|
+
style: "words" | "symbols";
|
|
3804
|
+
}
|
|
3805
|
+
/**
|
|
3806
|
+
* Options for opt-in abbreviation and glossary expansion.
|
|
3807
|
+
*/
|
|
3808
|
+
interface AbbreviationsOptions {
|
|
3809
|
+
/**
|
|
3810
|
+
* Enable the transform when an options object is supplied.
|
|
3811
|
+
*
|
|
3812
|
+
* @default true
|
|
3813
|
+
*/
|
|
3814
|
+
enabled?: boolean;
|
|
3815
|
+
/**
|
|
3816
|
+
* Central glossary. Keys are matched with Unicode word boundaries.
|
|
3817
|
+
*/
|
|
3818
|
+
terms?: Record<string, string>;
|
|
3819
|
+
/**
|
|
3820
|
+
* Wrap only the first occurrence of each term.
|
|
3821
|
+
*
|
|
3822
|
+
* @default false
|
|
3823
|
+
*/
|
|
3824
|
+
firstUseOnly?: boolean;
|
|
3825
|
+
}
|
|
3826
|
+
/**
|
|
3827
|
+
* Resolved abbreviation / glossary transform options.
|
|
3828
|
+
*/
|
|
3829
|
+
interface ResolvedAbbreviationsOptions {
|
|
3830
|
+
enabled: boolean;
|
|
3831
|
+
terms: Record<string, string>;
|
|
3832
|
+
firstUseOnly: boolean;
|
|
3833
|
+
}
|
|
3834
|
+
/**
|
|
3835
|
+
* Options for opt-in `{link:...}` rich magic links.
|
|
3836
|
+
*/
|
|
3837
|
+
interface MagicLinkOptions {
|
|
3838
|
+
/**
|
|
3839
|
+
* Enable the magic-link transform when an options object is supplied.
|
|
3840
|
+
*
|
|
3841
|
+
* @default true
|
|
3842
|
+
*/
|
|
3843
|
+
enabled?: boolean;
|
|
3844
|
+
/**
|
|
3845
|
+
* Named aliases. A string value is treated as `{ href }`.
|
|
3846
|
+
*/
|
|
3847
|
+
aliases?: Record<string, string | MagicLinkAlias>;
|
|
3848
|
+
/**
|
|
3849
|
+
* Emit a favicon URL when a link has no image.
|
|
3850
|
+
*
|
|
3851
|
+
* `true` uses `https://{host}/favicon.ico`. Pass `{ template }` to override.
|
|
3852
|
+
* The transform never fetches; the browser may load the URL later.
|
|
3853
|
+
*
|
|
3854
|
+
* @default false
|
|
3855
|
+
*/
|
|
3856
|
+
favicon?: boolean | {
|
|
3857
|
+
template?: string;
|
|
3858
|
+
};
|
|
3859
|
+
/**
|
|
3860
|
+
* Replace the resolved image for matching hrefs.
|
|
3861
|
+
*/
|
|
3862
|
+
imageOverrides?: MagicLinkImageOverride[];
|
|
3863
|
+
}
|
|
3864
|
+
/**
|
|
3865
|
+
* One configured magic-link target.
|
|
3866
|
+
*/
|
|
3867
|
+
interface MagicLinkAlias {
|
|
3868
|
+
href: string;
|
|
3869
|
+
label?: string;
|
|
3870
|
+
image?: string;
|
|
3871
|
+
}
|
|
3872
|
+
/**
|
|
3873
|
+
* Replace the image for an exact href or prefix.
|
|
3874
|
+
*/
|
|
3875
|
+
interface MagicLinkImageOverride {
|
|
3876
|
+
href?: string;
|
|
3877
|
+
prefix?: string;
|
|
3878
|
+
image: string;
|
|
3879
|
+
}
|
|
3880
|
+
/**
|
|
3881
|
+
* Resolved magic-link transform options.
|
|
3882
|
+
*/
|
|
3883
|
+
interface ResolvedMagicLinkOptions {
|
|
3884
|
+
enabled: boolean;
|
|
3885
|
+
aliases: Record<string, MagicLinkAlias>;
|
|
3886
|
+
favicon: boolean;
|
|
3887
|
+
faviconTemplate?: string;
|
|
3888
|
+
imageOverrides: MagicLinkImageOverride[];
|
|
3889
|
+
}
|
|
2335
3890
|
/**
|
|
2336
3891
|
* Options for opt-in `::: type` custom containers.
|
|
2337
3892
|
*/
|
|
@@ -2384,6 +3939,159 @@ interface ResolvedImageOptions {
|
|
|
2384
3939
|
enabled: boolean;
|
|
2385
3940
|
lazy: boolean;
|
|
2386
3941
|
}
|
|
3942
|
+
/**
|
|
3943
|
+
* Options for opt-in static image galleries.
|
|
3944
|
+
*/
|
|
3945
|
+
interface ImageGalleryOptions {
|
|
3946
|
+
/**
|
|
3947
|
+
* Enable `::: gallery` blocks.
|
|
3948
|
+
*
|
|
3949
|
+
* @default true when the options object is supplied.
|
|
3950
|
+
*/
|
|
3951
|
+
enabled?: boolean;
|
|
3952
|
+
/**
|
|
3953
|
+
* Add `loading="lazy"` to gallery images.
|
|
3954
|
+
*
|
|
3955
|
+
* @default follows `images.lazy`, or true when `images` is disabled.
|
|
3956
|
+
*/
|
|
3957
|
+
lazy?: boolean;
|
|
3958
|
+
/**
|
|
3959
|
+
* Diagnostics for image items without alt text.
|
|
3960
|
+
*
|
|
3961
|
+
* @default "error"
|
|
3962
|
+
*/
|
|
3963
|
+
missingAlt?: "error" | "warn" | "ignore";
|
|
3964
|
+
/**
|
|
3965
|
+
* Diagnostics for galleries without image items.
|
|
3966
|
+
*
|
|
3967
|
+
* @default "error"
|
|
3968
|
+
*/
|
|
3969
|
+
empty?: "error" | "warn" | "ignore";
|
|
3970
|
+
}
|
|
3971
|
+
/**
|
|
3972
|
+
* Resolved image gallery transform options.
|
|
3973
|
+
*/
|
|
3974
|
+
interface ResolvedImageGalleryOptions {
|
|
3975
|
+
enabled: boolean;
|
|
3976
|
+
lazy?: boolean;
|
|
3977
|
+
missingAlt: "error" | "warn" | "ignore";
|
|
3978
|
+
empty: "error" | "warn" | "ignore";
|
|
3979
|
+
}
|
|
3980
|
+
/**
|
|
3981
|
+
* Options for opt-in static timelines.
|
|
3982
|
+
*/
|
|
3983
|
+
interface TimelineOptions {
|
|
3984
|
+
/**
|
|
3985
|
+
* Enable `::: timeline` blocks.
|
|
3986
|
+
*
|
|
3987
|
+
* @default true when the options object is supplied.
|
|
3988
|
+
*/
|
|
3989
|
+
enabled?: boolean;
|
|
3990
|
+
/**
|
|
3991
|
+
* Render timelines as ordered lists unless a block overrides it.
|
|
3992
|
+
*
|
|
3993
|
+
* @default true
|
|
3994
|
+
*/
|
|
3995
|
+
ordered?: boolean;
|
|
3996
|
+
/**
|
|
3997
|
+
* Diagnostics for malformed `YYYY`, `YYYY-MM`, or `YYYY-MM-DD` item dates.
|
|
3998
|
+
*
|
|
3999
|
+
* @default "error"
|
|
4000
|
+
*/
|
|
4001
|
+
invalidDate?: "error" | "warn" | "ignore";
|
|
4002
|
+
/**
|
|
4003
|
+
* Diagnostics for unsupported item metadata.
|
|
4004
|
+
*
|
|
4005
|
+
* @default "error"
|
|
4006
|
+
*/
|
|
4007
|
+
unknownMeta?: "error" | "warn" | "ignore";
|
|
4008
|
+
/**
|
|
4009
|
+
* Diagnostics for timeline blocks without items.
|
|
4010
|
+
*
|
|
4011
|
+
* @default "error"
|
|
4012
|
+
*/
|
|
4013
|
+
empty?: "error" | "warn" | "ignore";
|
|
4014
|
+
}
|
|
4015
|
+
/**
|
|
4016
|
+
* Resolved timeline transform options.
|
|
4017
|
+
*/
|
|
4018
|
+
interface ResolvedTimelineOptions {
|
|
4019
|
+
enabled: boolean;
|
|
4020
|
+
ordered: boolean;
|
|
4021
|
+
invalidDate: "error" | "warn" | "ignore";
|
|
4022
|
+
unknownMeta: "error" | "warn" | "ignore";
|
|
4023
|
+
empty: "error" | "warn" | "ignore";
|
|
4024
|
+
}
|
|
4025
|
+
/**
|
|
4026
|
+
* Options for opt-in static conditional blocks.
|
|
4027
|
+
*/
|
|
4028
|
+
interface ConditionalBlockOptions {
|
|
4029
|
+
/**
|
|
4030
|
+
* Enable `::: if` / `::: else` blocks.
|
|
4031
|
+
*
|
|
4032
|
+
* @default true when the options object is supplied.
|
|
4033
|
+
*/
|
|
4034
|
+
enabled?: boolean;
|
|
4035
|
+
/**
|
|
4036
|
+
* Build-time values available as `config.*` or bare identifiers. Page
|
|
4037
|
+
* frontmatter wins for bare identifiers; use `config.name` to force config.
|
|
4038
|
+
*/
|
|
4039
|
+
values?: Record<string, unknown>;
|
|
4040
|
+
}
|
|
4041
|
+
/**
|
|
4042
|
+
* Resolved conditional-block transform options.
|
|
4043
|
+
*/
|
|
4044
|
+
interface ResolvedConditionalBlockOptions {
|
|
4045
|
+
enabled: boolean;
|
|
4046
|
+
values: Record<string, unknown>;
|
|
4047
|
+
}
|
|
4048
|
+
/**
|
|
4049
|
+
* Options for opt-in page-bundle resources and image processing.
|
|
4050
|
+
*/
|
|
4051
|
+
interface ResourcesOptions {
|
|
4052
|
+
/**
|
|
4053
|
+
* Allowed output formats for `?format=`.
|
|
4054
|
+
*
|
|
4055
|
+
* `jpg` is treated as `jpeg`. Pixel transforms encode `png` and `jpeg`.
|
|
4056
|
+
* `webp` is copied when the source is already webp and no pixel
|
|
4057
|
+
* transform is requested.
|
|
4058
|
+
*
|
|
4059
|
+
* @default ["png", "jpeg", "webp"]
|
|
4060
|
+
*/
|
|
4061
|
+
formats?: string[];
|
|
4062
|
+
/**
|
|
4063
|
+
* Allowed `?width=` / `?w=` values. An empty list allows any positive
|
|
4064
|
+
* width.
|
|
4065
|
+
*
|
|
4066
|
+
* @default []
|
|
4067
|
+
*/
|
|
4068
|
+
widths?: number[];
|
|
4069
|
+
/**
|
|
4070
|
+
* What to do when a relative resource is missing.
|
|
4071
|
+
*
|
|
4072
|
+
* @default "error"
|
|
4073
|
+
*/
|
|
4074
|
+
missing?: "error" | "warn";
|
|
4075
|
+
/**
|
|
4076
|
+
* Emit identical bytes once as `/assets/content/<sha256>.<ext>` and
|
|
4077
|
+
* rewrite `src`, `poster`, and relevant `href` to that URL.
|
|
4078
|
+
*
|
|
4079
|
+
* Off unless this is `true`. `resources: true` and `{}` leave it off.
|
|
4080
|
+
*
|
|
4081
|
+
* @default false
|
|
4082
|
+
*/
|
|
4083
|
+
dedupe?: boolean;
|
|
4084
|
+
}
|
|
4085
|
+
/**
|
|
4086
|
+
* Resolved page-resource options.
|
|
4087
|
+
*/
|
|
4088
|
+
interface ResolvedResourcesOptions {
|
|
4089
|
+
enabled: boolean;
|
|
4090
|
+
formats: string[];
|
|
4091
|
+
widths: number[];
|
|
4092
|
+
missing: "error" | "warn";
|
|
4093
|
+
dedupe: boolean;
|
|
4094
|
+
}
|
|
2387
4095
|
/**
|
|
2388
4096
|
* Options for expanding Obsidian-style wiki links.
|
|
2389
4097
|
*
|
|
@@ -2440,6 +4148,10 @@ interface ResolvedEmojiShortcodeOptions {
|
|
|
2440
4148
|
}
|
|
2441
4149
|
/**
|
|
2442
4150
|
* Options for opt-in `$…$` / `$$…$$` math.
|
|
4151
|
+
*
|
|
4152
|
+
* Delimiter parsing lives in the native transform. Typesetting uses KaTeX at
|
|
4153
|
+
* build time when the optional `katex` peer is installed. Sites that omit
|
|
4154
|
+
* `math` do not need that package.
|
|
2443
4155
|
*/
|
|
2444
4156
|
interface MathOptions {
|
|
2445
4157
|
/**
|
|
@@ -2479,6 +4191,27 @@ interface AttrsOptions {
|
|
|
2479
4191
|
interface ResolvedAttrsOptions {
|
|
2480
4192
|
enabled: boolean;
|
|
2481
4193
|
}
|
|
4194
|
+
/**
|
|
4195
|
+
* Opt-in visible heading permalinks.
|
|
4196
|
+
*
|
|
4197
|
+
* Headings already have stable `id`s. Enabling this appends a real
|
|
4198
|
+
* `<a class="header-anchor" href="#id">` using that exact id. Off by
|
|
4199
|
+
* default so existing HTML stays byte-stable.
|
|
4200
|
+
*/
|
|
4201
|
+
interface HeadingPermalinksOptions {
|
|
4202
|
+
/**
|
|
4203
|
+
* Emit the permalink control.
|
|
4204
|
+
*
|
|
4205
|
+
* @default true
|
|
4206
|
+
*/
|
|
4207
|
+
enabled?: boolean;
|
|
4208
|
+
}
|
|
4209
|
+
/**
|
|
4210
|
+
* Resolved heading permalink options.
|
|
4211
|
+
*/
|
|
4212
|
+
interface ResolvedHeadingPermalinksOptions {
|
|
4213
|
+
enabled: boolean;
|
|
4214
|
+
}
|
|
2482
4215
|
/**
|
|
2483
4216
|
* Options for importing source snippets into code fences.
|
|
2484
4217
|
*
|
|
@@ -2531,6 +4264,48 @@ interface ResolvedIncludeOptions {
|
|
|
2531
4264
|
enabled: boolean;
|
|
2532
4265
|
rootDir?: string;
|
|
2533
4266
|
}
|
|
4267
|
+
/**
|
|
4268
|
+
* Options for parameterized Markdown partials with `<!-- @partial: PATH k="v" -->`.
|
|
4269
|
+
*
|
|
4270
|
+
* Bare names resolve under `root` (`_partials` by default). Relative `./` and
|
|
4271
|
+
* `../` paths resolve from the current file. `@/` and leading `/` resolve from
|
|
4272
|
+
* `rootDir`. After canonicalize, paths outside `rootDir` are rejected.
|
|
4273
|
+
*/
|
|
4274
|
+
interface PartialsOptions {
|
|
4275
|
+
/**
|
|
4276
|
+
* Enable the transform when an options object is supplied.
|
|
4277
|
+
*
|
|
4278
|
+
* @default true
|
|
4279
|
+
*/
|
|
4280
|
+
enabled?: boolean;
|
|
4281
|
+
/**
|
|
4282
|
+
* Directory used to resolve `@/` and absolute partial paths.
|
|
4283
|
+
*
|
|
4284
|
+
* @default undefined
|
|
4285
|
+
*/
|
|
4286
|
+
rootDir?: string;
|
|
4287
|
+
/**
|
|
4288
|
+
* Directory used for bare names such as `install.md`.
|
|
4289
|
+
*
|
|
4290
|
+
* @default "_partials"
|
|
4291
|
+
*/
|
|
4292
|
+
root?: string;
|
|
4293
|
+
/**
|
|
4294
|
+
* Missing `{{ name }}` substitutions stay literal, or report a diagnostic.
|
|
4295
|
+
*
|
|
4296
|
+
* @default "literal"
|
|
4297
|
+
*/
|
|
4298
|
+
missing?: "literal" | "error";
|
|
4299
|
+
}
|
|
4300
|
+
/**
|
|
4301
|
+
* Resolved parameterized-partial transform options.
|
|
4302
|
+
*/
|
|
4303
|
+
interface ResolvedPartialsOptions {
|
|
4304
|
+
enabled: boolean;
|
|
4305
|
+
rootDir?: string;
|
|
4306
|
+
root: string;
|
|
4307
|
+
missing: "literal" | "error";
|
|
4308
|
+
}
|
|
2534
4309
|
/**
|
|
2535
4310
|
* Options for opt-in `::: card` / `::: link-card` / `::: card-grid` blocks.
|
|
2536
4311
|
*/
|
|
@@ -2565,6 +4340,37 @@ interface StepsOptions {
|
|
|
2565
4340
|
interface ResolvedStepsOptions {
|
|
2566
4341
|
enabled: boolean;
|
|
2567
4342
|
}
|
|
4343
|
+
/**
|
|
4344
|
+
* Options for opt-in `::: code-group` fence groups.
|
|
4345
|
+
*/
|
|
4346
|
+
interface CodeGroupOptions {
|
|
4347
|
+
/**
|
|
4348
|
+
* Enable the code-group transform when an options object is supplied.
|
|
4349
|
+
*
|
|
4350
|
+
* @default true
|
|
4351
|
+
*/
|
|
4352
|
+
enabled?: boolean;
|
|
4353
|
+
}
|
|
4354
|
+
/**
|
|
4355
|
+
* Resolved code-group transform options.
|
|
4356
|
+
*/
|
|
4357
|
+
interface ResolvedCodeGroupOptions {
|
|
4358
|
+
enabled: boolean;
|
|
4359
|
+
}
|
|
4360
|
+
/**
|
|
4361
|
+
* Replaceable file-tree icons. Values are trusted site-config SVG markup or
|
|
4362
|
+
* CSS class tokens, never fence content.
|
|
4363
|
+
*/
|
|
4364
|
+
interface FileTreeIconOptions {
|
|
4365
|
+
/** Collapsed folder icon. */
|
|
4366
|
+
folder?: string;
|
|
4367
|
+
/** Open folder icon. */
|
|
4368
|
+
folderOpen?: string;
|
|
4369
|
+
/** Default file icon. */
|
|
4370
|
+
file?: string;
|
|
4371
|
+
/** File icons keyed by extension (`ts`, `.json`). */
|
|
4372
|
+
files?: Record<string, string>;
|
|
4373
|
+
}
|
|
2568
4374
|
/**
|
|
2569
4375
|
* Options for opt-in `file-tree` fences.
|
|
2570
4376
|
*/
|
|
@@ -2575,12 +4381,63 @@ interface FileTreeOptions {
|
|
|
2575
4381
|
* @default true
|
|
2576
4382
|
*/
|
|
2577
4383
|
enabled?: boolean;
|
|
4384
|
+
/**
|
|
4385
|
+
* Open directory `<details>` by default.
|
|
4386
|
+
*
|
|
4387
|
+
* @default true
|
|
4388
|
+
*/
|
|
4389
|
+
defaultOpen?: boolean;
|
|
4390
|
+
/**
|
|
4391
|
+
* Render folder and file icons. Pass an object to replace the defaults.
|
|
4392
|
+
*
|
|
4393
|
+
* @default true
|
|
4394
|
+
*/
|
|
4395
|
+
icons?: boolean | FileTreeIconOptions;
|
|
2578
4396
|
}
|
|
2579
4397
|
/**
|
|
2580
4398
|
* Resolved file-tree transform options.
|
|
2581
4399
|
*/
|
|
2582
4400
|
interface ResolvedFileTreeOptions {
|
|
2583
4401
|
enabled: boolean;
|
|
4402
|
+
defaultOpen: boolean;
|
|
4403
|
+
icons: boolean;
|
|
4404
|
+
iconFolder?: string;
|
|
4405
|
+
iconFolderOpen?: string;
|
|
4406
|
+
iconFile?: string;
|
|
4407
|
+
iconFiles?: Record<string, string>;
|
|
4408
|
+
}
|
|
4409
|
+
/**
|
|
4410
|
+
* Options for opt-in `csv-table` / `json-table` fences.
|
|
4411
|
+
*/
|
|
4412
|
+
interface DataTableOptions {
|
|
4413
|
+
/**
|
|
4414
|
+
* Enable the data-table transform when an options object is supplied.
|
|
4415
|
+
*
|
|
4416
|
+
* @default true
|
|
4417
|
+
*/
|
|
4418
|
+
enabled?: boolean;
|
|
4419
|
+
/**
|
|
4420
|
+
* Directory used to resolve `@/` and absolute import paths.
|
|
4421
|
+
*
|
|
4422
|
+
* When omitted, imports resolve from the Vite project root.
|
|
4423
|
+
*
|
|
4424
|
+
* @default undefined
|
|
4425
|
+
*/
|
|
4426
|
+
rootDir?: string;
|
|
4427
|
+
/**
|
|
4428
|
+
* What to do when an imported CSV/JSON file is missing.
|
|
4429
|
+
*
|
|
4430
|
+
* @default "error"
|
|
4431
|
+
*/
|
|
4432
|
+
missing?: "error" | "warn";
|
|
4433
|
+
}
|
|
4434
|
+
/**
|
|
4435
|
+
* Resolved data-table transform options.
|
|
4436
|
+
*/
|
|
4437
|
+
interface ResolvedDataTableOptions {
|
|
4438
|
+
enabled: boolean;
|
|
4439
|
+
rootDir?: string;
|
|
4440
|
+
missing: "error" | "warn";
|
|
2584
4441
|
}
|
|
2585
4442
|
/**
|
|
2586
4443
|
* Options for sanitizing rendered HTML.
|
|
@@ -2783,6 +4640,43 @@ interface ResolvedCodeBlockTypecheckOptions {
|
|
|
2783
4640
|
tsgoCommand: string;
|
|
2784
4641
|
mode: "warn" | "error";
|
|
2785
4642
|
}
|
|
4643
|
+
/**
|
|
4644
|
+
* Options for opt-in typed hover overlays on TypeScript fences.
|
|
4645
|
+
*
|
|
4646
|
+
* Hover strings are computed at build time with the same TypeScript compiler
|
|
4647
|
+
* family used by `codeBlockTypecheck` (`tsgo` / `typescript`). The browser
|
|
4648
|
+
* only receives JSON payloads and a tiny overlay script.
|
|
4649
|
+
*/
|
|
4650
|
+
interface TypedHoverOptions {
|
|
4651
|
+
/**
|
|
4652
|
+
* Enable typed hover overlays.
|
|
4653
|
+
*
|
|
4654
|
+
* @default true when the object form is used
|
|
4655
|
+
*/
|
|
4656
|
+
enabled?: boolean;
|
|
4657
|
+
/**
|
|
4658
|
+
* Fence languages that can receive hover payloads.
|
|
4659
|
+
*
|
|
4660
|
+
* Language names are compared case-insensitively.
|
|
4661
|
+
*
|
|
4662
|
+
* @default ['ts', 'tsx']
|
|
4663
|
+
*/
|
|
4664
|
+
languages?: string[];
|
|
4665
|
+
/**
|
|
4666
|
+
* Path to the `tsgo` binary used to compute hover types.
|
|
4667
|
+
*
|
|
4668
|
+
* When omitted, the bundled `@typescript/native-preview` executable is used.
|
|
4669
|
+
*/
|
|
4670
|
+
tsgoCommand?: string;
|
|
4671
|
+
}
|
|
4672
|
+
/**
|
|
4673
|
+
* Resolved typed-hover options.
|
|
4674
|
+
*/
|
|
4675
|
+
interface ResolvedTypedHoverOptions {
|
|
4676
|
+
enabled: boolean;
|
|
4677
|
+
languages: string[];
|
|
4678
|
+
tsgoCommand?: string;
|
|
4679
|
+
}
|
|
2786
4680
|
/**
|
|
2787
4681
|
* Options for extracting fenced examples into docs-as-tests fixtures.
|
|
2788
4682
|
*
|
|
@@ -2865,11 +4759,67 @@ interface ResolvedCodeAnnotationsOptions {
|
|
|
2865
4759
|
metaKey: string;
|
|
2866
4760
|
defaultLineNumbers: boolean;
|
|
2867
4761
|
}
|
|
4762
|
+
/**
|
|
4763
|
+
* OG image rendering backend.
|
|
4764
|
+
*/
|
|
4765
|
+
type OgImageRenderer = "chromium" | "satori";
|
|
4766
|
+
/**
|
|
4767
|
+
* Font weight values supported by Satori.
|
|
4768
|
+
*/
|
|
4769
|
+
type OgImageSatoriFontWeight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
|
|
4770
|
+
/**
|
|
4771
|
+
* Font file loaded by the Satori renderer.
|
|
4772
|
+
*/
|
|
4773
|
+
interface OgImageSatoriFont {
|
|
4774
|
+
/**
|
|
4775
|
+
* Absolute path, or a path relative to the project root.
|
|
4776
|
+
*/
|
|
4777
|
+
path: string;
|
|
4778
|
+
/**
|
|
4779
|
+
* Font family name used by template CSS.
|
|
4780
|
+
*/
|
|
4781
|
+
name?: string;
|
|
4782
|
+
/**
|
|
4783
|
+
* Font weight.
|
|
4784
|
+
* @default 400
|
|
4785
|
+
*/
|
|
4786
|
+
weight?: OgImageSatoriFontWeight;
|
|
4787
|
+
/**
|
|
4788
|
+
* Font style.
|
|
4789
|
+
* @default "normal"
|
|
4790
|
+
*/
|
|
4791
|
+
style?: "normal" | "italic";
|
|
4792
|
+
}
|
|
4793
|
+
/**
|
|
4794
|
+
* Satori renderer options.
|
|
4795
|
+
*/
|
|
4796
|
+
interface OgImageSatoriOptions {
|
|
4797
|
+
/**
|
|
4798
|
+
* Font files passed to Satori.
|
|
4799
|
+
*
|
|
4800
|
+
* Satori cannot render text without at least one font. When omitted,
|
|
4801
|
+
* Ox Content tries a small set of system font paths unless
|
|
4802
|
+
* `systemFontFallback` is disabled.
|
|
4803
|
+
*/
|
|
4804
|
+
fonts?: OgImageSatoriFont[];
|
|
4805
|
+
/**
|
|
4806
|
+
* Try known OS font paths when `fonts` is empty.
|
|
4807
|
+
* @default true
|
|
4808
|
+
*/
|
|
4809
|
+
systemFontFallback?: boolean;
|
|
4810
|
+
}
|
|
2868
4811
|
/**
|
|
2869
4812
|
* OG image generation options.
|
|
2870
|
-
* Uses Chromium
|
|
4813
|
+
* Uses Chromium or Satori rendering with customizable templates.
|
|
2871
4814
|
*/
|
|
2872
4815
|
interface OgImageOptions {
|
|
4816
|
+
/**
|
|
4817
|
+
* Rendering backend.
|
|
4818
|
+
* - `"chromium"`: full browser rendering, best template compatibility
|
|
4819
|
+
* - `"satori"`: fast HTML-to-SVG-to-PNG rendering, limited CSS subset
|
|
4820
|
+
* @default "chromium"
|
|
4821
|
+
*/
|
|
4822
|
+
renderer?: OgImageRenderer;
|
|
2873
4823
|
/**
|
|
2874
4824
|
* Path to a custom template file (.ts, .vue, .svelte, .tsx/.jsx).
|
|
2875
4825
|
* - `.ts`: default-export a function `(props) => string`
|
|
@@ -2907,17 +4857,26 @@ interface OgImageOptions {
|
|
|
2907
4857
|
* @default 1
|
|
2908
4858
|
*/
|
|
2909
4859
|
concurrency?: number;
|
|
4860
|
+
/**
|
|
4861
|
+
* Options for the Satori renderer.
|
|
4862
|
+
*/
|
|
4863
|
+
satori?: OgImageSatoriOptions;
|
|
2910
4864
|
}
|
|
2911
4865
|
/**
|
|
2912
4866
|
* Resolved OG image options with all defaults applied.
|
|
2913
4867
|
*/
|
|
2914
4868
|
interface ResolvedOgImageOptions$1 {
|
|
4869
|
+
renderer: OgImageRenderer;
|
|
2915
4870
|
template?: string;
|
|
2916
4871
|
vuePlugin: "vitejs" | "vizejs";
|
|
2917
4872
|
width: number;
|
|
2918
4873
|
height: number;
|
|
2919
4874
|
cache: boolean;
|
|
2920
4875
|
concurrency: number;
|
|
4876
|
+
satori: {
|
|
4877
|
+
fonts: OgImageSatoriFont[];
|
|
4878
|
+
systemFontFallback: boolean;
|
|
4879
|
+
};
|
|
2921
4880
|
}
|
|
2922
4881
|
/**
|
|
2923
4882
|
* Custom AST transformer.
|
|
@@ -2958,6 +4917,30 @@ interface MarkdownNode {
|
|
|
2958
4917
|
value?: string;
|
|
2959
4918
|
[key: string]: unknown;
|
|
2960
4919
|
}
|
|
4920
|
+
/**
|
|
4921
|
+
* How a specifier was imported from an MDX `import` statement.
|
|
4922
|
+
*/
|
|
4923
|
+
type MdxImportSpecifierKind = "default" | "named" | "namespace";
|
|
4924
|
+
/**
|
|
4925
|
+
* One binding created by an MDX `import` statement.
|
|
4926
|
+
*/
|
|
4927
|
+
interface MdxImportSpecifier {
|
|
4928
|
+
/** Imported name (`default`, `*`, or the named export). */
|
|
4929
|
+
imported: string;
|
|
4930
|
+
/** Local binding name. */
|
|
4931
|
+
local: string;
|
|
4932
|
+
/** Specifier kind. */
|
|
4933
|
+
kind: MdxImportSpecifierKind;
|
|
4934
|
+
}
|
|
4935
|
+
/**
|
|
4936
|
+
* One MDX `import` statement collected from the AST.
|
|
4937
|
+
*/
|
|
4938
|
+
interface MdxImport {
|
|
4939
|
+
/** Module specifier string. */
|
|
4940
|
+
source: string;
|
|
4941
|
+
/** Bindings created by the import. */
|
|
4942
|
+
specifiers: MdxImportSpecifier[];
|
|
4943
|
+
}
|
|
2961
4944
|
/**
|
|
2962
4945
|
* Transform result.
|
|
2963
4946
|
*/
|
|
@@ -2982,6 +4965,30 @@ interface TransformResult {
|
|
|
2982
4965
|
* Table of contents.
|
|
2983
4966
|
*/
|
|
2984
4967
|
toc: TocEntry[];
|
|
4968
|
+
/**
|
|
4969
|
+
* MDX `import` statements (empty when MDX is off or no ESM nodes).
|
|
4970
|
+
*/
|
|
4971
|
+
imports: MdxImport[];
|
|
4972
|
+
/**
|
|
4973
|
+
* Export names from MDX ESM (empty when MDX is off or no exports).
|
|
4974
|
+
*/
|
|
4975
|
+
exports: string[];
|
|
4976
|
+
/**
|
|
4977
|
+
* Unique JSX component names in document order (empty when none).
|
|
4978
|
+
*/
|
|
4979
|
+
components: string[];
|
|
4980
|
+
/**
|
|
4981
|
+
* Labeled cross-reference targets collected during the Markdown transform.
|
|
4982
|
+
*/
|
|
4983
|
+
crossReferences: CrossReferenceEntry[];
|
|
4984
|
+
/**
|
|
4985
|
+
* Citation references collected during the Markdown transform.
|
|
4986
|
+
*/
|
|
4987
|
+
citations: CitationReference[];
|
|
4988
|
+
/**
|
|
4989
|
+
* Bibliography entries used by this document.
|
|
4990
|
+
*/
|
|
4991
|
+
bibliography: BibliographyEntry[];
|
|
2985
4992
|
}
|
|
2986
4993
|
/**
|
|
2987
4994
|
* Table of contents entry.
|
|
@@ -3086,6 +5093,15 @@ interface DocsOptions {
|
|
|
3086
5093
|
* @default undefined
|
|
3087
5094
|
*/
|
|
3088
5095
|
entryPoints?: DocsEntryPoint[];
|
|
5096
|
+
/**
|
|
5097
|
+
* Local OpenAPI 3.0/3.1 JSON or YAML files to render as static REST API docs.
|
|
5098
|
+
*
|
|
5099
|
+
* Generated pages are written under `out/openapi/<spec>/` and use the same
|
|
5100
|
+
* Markdown, stale-file cleanup, SSG, and search pipeline as source docs.
|
|
5101
|
+
*
|
|
5102
|
+
* @default false
|
|
5103
|
+
*/
|
|
5104
|
+
openapi?: OpenApiDocsSource | OpenApiDocsSource[] | OpenApiDocsOptions | false;
|
|
3089
5105
|
/**
|
|
3090
5106
|
* Output format.
|
|
3091
5107
|
*
|
|
@@ -3273,6 +5289,7 @@ interface ResolvedDocsOptions {
|
|
|
3273
5289
|
include: string[];
|
|
3274
5290
|
exclude: string[];
|
|
3275
5291
|
entryPoints?: ResolvedDocsEntryPoint[];
|
|
5292
|
+
openapi: ResolvedOpenApiDocsOptions | false;
|
|
3276
5293
|
format: "markdown" | "json" | "html";
|
|
3277
5294
|
private: boolean;
|
|
3278
5295
|
internal: boolean;
|
|
@@ -3301,6 +5318,48 @@ interface ResolvedDocsOptions {
|
|
|
3301
5318
|
singleEntryRoot: "preserve" | "flatten";
|
|
3302
5319
|
generateNav: boolean;
|
|
3303
5320
|
}
|
|
5321
|
+
/** OpenAPI docs shorthand accepted by `docs.openapi`. */
|
|
5322
|
+
type OpenApiDocsSource = string | OpenApiDocsInput;
|
|
5323
|
+
/** One local OpenAPI file consumed by generated REST API docs. */
|
|
5324
|
+
interface OpenApiDocsInput {
|
|
5325
|
+
/** JSON or YAML file path, resolved from the Vite project root. */
|
|
5326
|
+
path: string;
|
|
5327
|
+
/** Optional display name. Defaults to `info.title` or the file name. */
|
|
5328
|
+
name?: string;
|
|
5329
|
+
/** Fail on unresolved or remote `$ref` values. Defaults to `true`. */
|
|
5330
|
+
failOnUnresolvedRefs?: boolean;
|
|
5331
|
+
}
|
|
5332
|
+
/** Object form for configuring generated OpenAPI docs. */
|
|
5333
|
+
interface OpenApiDocsOptions {
|
|
5334
|
+
/** Local OpenAPI files to render. */
|
|
5335
|
+
src?: OpenApiDocsSource | OpenApiDocsSource[];
|
|
5336
|
+
/** Route prefix used by generated OpenAPI nav metadata. Defaults to `basePath` or `/api`. */
|
|
5337
|
+
basePath?: string;
|
|
5338
|
+
/** Default unresolved `$ref` policy for sources. Defaults to `true`. */
|
|
5339
|
+
failOnUnresolvedRefs?: boolean;
|
|
5340
|
+
}
|
|
5341
|
+
/** Resolved local OpenAPI file input. */
|
|
5342
|
+
interface ResolvedOpenApiDocsInput {
|
|
5343
|
+
path: string;
|
|
5344
|
+
name?: string;
|
|
5345
|
+
failOnUnresolvedRefs: boolean;
|
|
5346
|
+
}
|
|
5347
|
+
/** Resolved generated OpenAPI docs options. */
|
|
5348
|
+
interface ResolvedOpenApiDocsOptions {
|
|
5349
|
+
src: ResolvedOpenApiDocsInput[];
|
|
5350
|
+
basePath?: string;
|
|
5351
|
+
}
|
|
5352
|
+
/** Navigation item emitted for generated docs sidebars. */
|
|
5353
|
+
interface DocsNavigationItem {
|
|
5354
|
+
title: string;
|
|
5355
|
+
path: string;
|
|
5356
|
+
children?: DocsNavigationItem[];
|
|
5357
|
+
}
|
|
5358
|
+
/** Generated OpenAPI Markdown pages and sidebar metadata. */
|
|
5359
|
+
interface GeneratedOpenApiDocs {
|
|
5360
|
+
pages: Record<string, string>;
|
|
5361
|
+
nav: DocsNavigationItem[];
|
|
5362
|
+
}
|
|
3304
5363
|
/**
|
|
3305
5364
|
* A single documentation entry extracted from source.
|
|
3306
5365
|
*
|
|
@@ -3583,6 +5642,16 @@ interface SearchOptions {
|
|
|
3583
5642
|
* @default true
|
|
3584
5643
|
*/
|
|
3585
5644
|
prefix?: boolean;
|
|
5645
|
+
/**
|
|
5646
|
+
* Enable fuzzy typo-tolerant matching.
|
|
5647
|
+
*
|
|
5648
|
+
* Fuzzy matching is off by default so large static indexes keep the fastest
|
|
5649
|
+
* exact/prefix path. When enabled, local BM25 also considers near matches
|
|
5650
|
+
* for tokens with at least three characters.
|
|
5651
|
+
*
|
|
5652
|
+
* @default false
|
|
5653
|
+
*/
|
|
5654
|
+
fuzzy?: boolean;
|
|
3586
5655
|
/**
|
|
3587
5656
|
* Placeholder text for the search input.
|
|
3588
5657
|
*
|
|
@@ -3651,6 +5720,7 @@ interface ResolvedSearchOptions {
|
|
|
3651
5720
|
enabled: boolean;
|
|
3652
5721
|
limit: number;
|
|
3653
5722
|
prefix: boolean;
|
|
5723
|
+
fuzzy: boolean;
|
|
3654
5724
|
placeholder: string;
|
|
3655
5725
|
hotkey: string;
|
|
3656
5726
|
provider?: "local" | "hosted";
|
|
@@ -3804,6 +5874,33 @@ interface ResolvedI18nOptions {
|
|
|
3804
5874
|
check: boolean;
|
|
3805
5875
|
functionNames: string[];
|
|
3806
5876
|
}
|
|
5877
|
+
/**
|
|
5878
|
+
* One host-owned page for composable SSG outputs (`ssg: false`).
|
|
5879
|
+
*
|
|
5880
|
+
* The host renders HTML. Ox Content plans and emits resources, Markdown
|
|
5881
|
+
* companions, feeds, and sitemap metadata from these fields.
|
|
5882
|
+
*/
|
|
5883
|
+
interface SsgOutputPageInput {
|
|
5884
|
+
/** Source file used for git lastmod and companion identity. */
|
|
5885
|
+
inputPath: string;
|
|
5886
|
+
/** Published URL path (`guide` or `/`). */
|
|
5887
|
+
urlPath: string;
|
|
5888
|
+
/** Filesystem path of the host-rendered HTML page. */
|
|
5889
|
+
outputPath?: string;
|
|
5890
|
+
/** Host-rendered HTML. Required for resource fingerprinting. */
|
|
5891
|
+
html?: string;
|
|
5892
|
+
/** Already-read Markdown source bytes for companions. */
|
|
5893
|
+
source?: string;
|
|
5894
|
+
title?: string;
|
|
5895
|
+
description?: string;
|
|
5896
|
+
/** Absolute page URL. When omitted, `siteUrl` + `base` + `urlPath` is used. */
|
|
5897
|
+
loc?: string;
|
|
5898
|
+
/** Git commit time in milliseconds, or a host-supplied timestamp. */
|
|
5899
|
+
lastUpdated?: number;
|
|
5900
|
+
draft?: boolean;
|
|
5901
|
+
unlisted?: boolean;
|
|
5902
|
+
frontmatter?: Record<string, unknown>;
|
|
5903
|
+
}
|
|
3807
5904
|
//#endregion
|
|
3808
5905
|
//#region src/virtual.d.ts
|
|
3809
5906
|
declare module "virtual:ox-content/collections" {
|
|
@@ -3839,18 +5936,53 @@ declare module "virtual:ox-content/collections" {
|
|
|
3839
5936
|
export default api;
|
|
3840
5937
|
}
|
|
3841
5938
|
//#endregion
|
|
5939
|
+
//#region src/builtin-embed-options.d.ts
|
|
5940
|
+
declare function resolveBuiltinEmbedOptions(options: OxContentOptions["embeds"]): ResolvedOptions["embeds"];
|
|
5941
|
+
//#endregion
|
|
5942
|
+
//#region src/resolve-options.d.ts
|
|
5943
|
+
declare function resolveMathOptions(options: OxContentOptions["math"]): ResolvedOptions["math"];
|
|
5944
|
+
declare function resolveBadgeOptions(options: OxContentOptions["badges"]): ResolvedOptions["badges"];
|
|
5945
|
+
declare function resolveKeyboardKeysOptions(options: OxContentOptions["keyboardKeys"]): NonNullable<ResolvedOptions["keyboardKeys"]>;
|
|
5946
|
+
//#endregion
|
|
5947
|
+
//#region src/abbreviations-options.d.ts
|
|
5948
|
+
declare function resolveAbbreviationsOptions(options: OxContentOptions["abbreviations"]): ResolvedAbbreviationsOptions;
|
|
5949
|
+
//#endregion
|
|
5950
|
+
//#region src/not-by-ai-options.d.ts
|
|
5951
|
+
declare function resolveNotByAiOptions(options: OxContentOptions["notByAi"]): ResolvedOptions["notByAi"];
|
|
5952
|
+
//#endregion
|
|
3842
5953
|
//#region src/card-options.d.ts
|
|
3843
5954
|
declare function resolveCardOptions(options: OxContentOptions["cards"]): ResolvedOptions["cards"];
|
|
3844
5955
|
//#endregion
|
|
3845
5956
|
//#region src/include-options.d.ts
|
|
3846
5957
|
declare function resolveIncludeOptions(options: OxContentOptions["includes"]): ResolvedOptions["includes"];
|
|
3847
5958
|
//#endregion
|
|
5959
|
+
//#region src/partials-options.d.ts
|
|
5960
|
+
declare function resolvePartialsOptions(options: OxContentOptions["partials"]): NonNullable<ResolvedOptions["partials"]>;
|
|
5961
|
+
//#endregion
|
|
3848
5962
|
//#region src/step-options.d.ts
|
|
3849
5963
|
declare function resolveStepsOptions(options: OxContentOptions["steps"]): ResolvedOptions["steps"];
|
|
3850
5964
|
//#endregion
|
|
5965
|
+
//#region src/code-group-options.d.ts
|
|
5966
|
+
declare function resolveCodeGroupOptions(options: OxContentOptions["codeGroups"]): ResolvedCodeGroupOptions;
|
|
5967
|
+
//#endregion
|
|
3851
5968
|
//#region src/file-tree-options.d.ts
|
|
3852
5969
|
declare function resolveFileTreeOptions(options: OxContentOptions["fileTree"]): ResolvedOptions["fileTree"];
|
|
3853
5970
|
//#endregion
|
|
5971
|
+
//#region src/data-table-options.d.ts
|
|
5972
|
+
declare function resolveDataTableOptions(options: OxContentOptions["dataTables"]): ResolvedOptions["dataTables"];
|
|
5973
|
+
//#endregion
|
|
5974
|
+
//#region src/image-gallery-options.d.ts
|
|
5975
|
+
declare function resolveImageGalleryOptions(options: OxContentOptions["imageGalleries"]): ResolvedImageGalleryOptions;
|
|
5976
|
+
//#endregion
|
|
5977
|
+
//#region src/timeline-options.d.ts
|
|
5978
|
+
declare function resolveTimelineOptions(options: OxContentOptions["timelines"]): ResolvedTimelineOptions;
|
|
5979
|
+
//#endregion
|
|
5980
|
+
//#region src/heading-permalinks-options.d.ts
|
|
5981
|
+
declare function resolveHeadingPermalinksOptions(options: OxContentOptions["headingPermalinks"]): ResolvedOptions["headingPermalinks"];
|
|
5982
|
+
//#endregion
|
|
5983
|
+
//#region src/typed-hover.d.ts
|
|
5984
|
+
declare function resolveTypedHoverOptions(options: OxContentOptions["typedHover"]): ResolvedTypedHoverOptions;
|
|
5985
|
+
//#endregion
|
|
3854
5986
|
//#region src/environment.d.ts
|
|
3855
5987
|
/**
|
|
3856
5988
|
* Creates the Markdown processing environment configuration.
|
|
@@ -4017,6 +6149,9 @@ declare function renderMarkdownStream(chunks: MarkdownChunkSource, options?: Inc
|
|
|
4017
6149
|
* - `html` (string): Rendered HTML content with all enhancements applied
|
|
4018
6150
|
* - `frontmatter` (object): Parsed YAML frontmatter as JavaScript object
|
|
4019
6151
|
* - `toc` (array): Hierarchical table of contents entries
|
|
6152
|
+
* - `imports` (array): MDX import statements (`source` + specifiers)
|
|
6153
|
+
* - `exports` (array): MDX export names
|
|
6154
|
+
* - `components` (array): Unique JSX component names
|
|
4020
6155
|
* - `render` (function): Client-side render function for dynamic updates
|
|
4021
6156
|
*
|
|
4022
6157
|
* ## Markdown Features Supported
|
|
@@ -4091,6 +6226,156 @@ interface SsgTransformOptions {
|
|
|
4091
6226
|
}
|
|
4092
6227
|
declare function transformMarkdown(source: string, filePath: string, options: ResolvedOptions, ssgOptions?: SsgTransformOptions): Promise<TransformResult>;
|
|
4093
6228
|
//#endregion
|
|
6229
|
+
//#region src/render-markdown.d.ts
|
|
6230
|
+
/**
|
|
6231
|
+
* Processor that resolves `OxContentOptions` once and renders many documents.
|
|
6232
|
+
*/
|
|
6233
|
+
interface MarkdownProcessor {
|
|
6234
|
+
render(source: string, filePath: string): Promise<TransformResult>;
|
|
6235
|
+
}
|
|
6236
|
+
/**
|
|
6237
|
+
* Resolves public options once so custom `ssg: false` hosts can reuse the pipeline.
|
|
6238
|
+
*/
|
|
6239
|
+
declare function createMarkdownProcessor(options?: OxContentOptions): MarkdownProcessor;
|
|
6240
|
+
/**
|
|
6241
|
+
* Run the Vite plugin Markdown/MDX pipeline from public `OxContentOptions`.
|
|
6242
|
+
*
|
|
6243
|
+
* Returns structured `TransformResult` fields (`html`, `frontmatter`, `toc`,
|
|
6244
|
+
* MDX metadata) so consumers do not need to cast a Vite hook or parse
|
|
6245
|
+
* generated module source. `.md` / `.mdx` inference matches `oxContent()`.
|
|
6246
|
+
*/
|
|
6247
|
+
declare function renderMarkdown(source: string, filePath: string, options?: OxContentOptions): Promise<TransformResult>;
|
|
6248
|
+
//#endregion
|
|
6249
|
+
//#region src/markdown.d.ts
|
|
6250
|
+
declare const DEFAULT_MARKDOWN_EXTENSIONS: readonly [".md", ".markdown", ".mdx"];
|
|
6251
|
+
declare function normalizeMarkdownExtensions(extensions?: readonly string[]): string[];
|
|
6252
|
+
declare function isMarkdownFilePath(filePath: string, extensions?: readonly string[]): boolean;
|
|
6253
|
+
/** Returns true when a resource id points at an MDX source file. */
|
|
6254
|
+
declare function isMdxFilePath(filePath: string): boolean;
|
|
6255
|
+
/** Explicit configuration wins; otherwise MDX follows the source extension. */
|
|
6256
|
+
declare function resolveMdxForFilePath(filePath: string, configured?: boolean): boolean;
|
|
6257
|
+
declare function stripMarkdownExtension(filePath: string, extensions?: readonly string[]): string;
|
|
6258
|
+
//#endregion
|
|
6259
|
+
//#region src/mdx-islands.d.ts
|
|
6260
|
+
/**
|
|
6261
|
+
* Discover registered MDX islands from the mdast tree or rendered HTML.
|
|
6262
|
+
*
|
|
6263
|
+
* Framework plugins use this instead of a source regex when MDX is on, so
|
|
6264
|
+
* nested JSX, expression attributes, and fragments stay visible. Names that
|
|
6265
|
+
* are not in the global `components` map and are not document-local import
|
|
6266
|
+
* bindings are left as static HTML.
|
|
6267
|
+
*/
|
|
6268
|
+
/** Global component map: object, Map, or name list. */
|
|
6269
|
+
type ComponentRegistry = Readonly<Record<string, unknown>> | ReadonlyMap<string, unknown> | Iterable<string>;
|
|
6270
|
+
/**
|
|
6271
|
+
* Collect named MDX JSX tags from a parsed mdast tree (JSON from NAPI `parse()`).
|
|
6272
|
+
* Fragments (`name: null`) and non-JSX nodes are ignored. Walks nested children
|
|
6273
|
+
* so inner islands are found.
|
|
6274
|
+
*/
|
|
6275
|
+
declare function collectMdxJsxNamesFromAst(ast: unknown): string[];
|
|
6276
|
+
/**
|
|
6277
|
+
* Collect `data-ox-island` names from Rust-rendered HTML.
|
|
6278
|
+
* Used when an AST walk is unavailable.
|
|
6279
|
+
*/
|
|
6280
|
+
declare function collectMdxIslandNamesFromHtml(html: string): string[];
|
|
6281
|
+
/** Keep names that exist on the global component map, in first-seen order. */
|
|
6282
|
+
declare function intersectRegisteredComponentNames(names: Iterable<string>, components: ComponentRegistry): string[];
|
|
6283
|
+
/**
|
|
6284
|
+
* Keep names that are either globally registered or document-local bindings.
|
|
6285
|
+
*/
|
|
6286
|
+
declare function intersectHydratableComponentNames(names: Iterable<string>, components: ComponentRegistry, localNames?: Iterable<string>): string[];
|
|
6287
|
+
interface DiscoverRegisteredMdxComponentsInput {
|
|
6288
|
+
/** Markdown/MDX body (frontmatter already stripped). */
|
|
6289
|
+
source: string;
|
|
6290
|
+
/** Rendered HTML, used when `parse()` is missing or the AST walk fails. */
|
|
6291
|
+
html?: string;
|
|
6292
|
+
components: ComponentRegistry;
|
|
6293
|
+
/** Document-local import bindings. These override the global map for this file. */
|
|
6294
|
+
localNames?: Iterable<string>;
|
|
6295
|
+
}
|
|
6296
|
+
/**
|
|
6297
|
+
* Resolve registered island names for an MDX document.
|
|
6298
|
+
*
|
|
6299
|
+
* Prefers a NAPI `parse()` AST walk. Falls back to rendered `data-ox-island`
|
|
6300
|
+
* names so plugins still hydrate if #659 metadata is not present.
|
|
6301
|
+
*/
|
|
6302
|
+
declare function discoverRegisteredMdxComponents(input: DiscoverRegisteredMdxComponentsInput): Promise<string[]>;
|
|
6303
|
+
declare function isRegisteredComponent(name: string, components: ComponentRegistry): boolean;
|
|
6304
|
+
//#endregion
|
|
6305
|
+
//#region src/document-imports.d.ts
|
|
6306
|
+
interface ResolveDocumentComponentImportsInput {
|
|
6307
|
+
imports: readonly MdxImport[];
|
|
6308
|
+
documentPath: string;
|
|
6309
|
+
contentRoot?: string;
|
|
6310
|
+
srcDir?: string;
|
|
6311
|
+
}
|
|
6312
|
+
interface ResolvedDocumentComponentImport {
|
|
6313
|
+
localName: string;
|
|
6314
|
+
specifier: string;
|
|
6315
|
+
resolvedPath: string;
|
|
6316
|
+
importPathRelativeToDocument: string;
|
|
6317
|
+
imported: string;
|
|
6318
|
+
kind: Exclude<MdxImportSpecifierKind, "namespace">;
|
|
6319
|
+
}
|
|
6320
|
+
type DocumentImportDiagnosticCode = "not-relative" | "escapes-root" | "duplicate-binding";
|
|
6321
|
+
interface DocumentImportDiagnostic {
|
|
6322
|
+
code: DocumentImportDiagnosticCode;
|
|
6323
|
+
message: string;
|
|
6324
|
+
specifier: string;
|
|
6325
|
+
localName?: string;
|
|
6326
|
+
}
|
|
6327
|
+
interface ResolveDocumentComponentImportsResult {
|
|
6328
|
+
bindings: ResolvedDocumentComponentImport[];
|
|
6329
|
+
diagnostics: DocumentImportDiagnostic[];
|
|
6330
|
+
}
|
|
6331
|
+
declare function resolveContentRootPath(input: {
|
|
6332
|
+
contentRoot?: string;
|
|
6333
|
+
srcDir?: string;
|
|
6334
|
+
root?: string;
|
|
6335
|
+
}): string;
|
|
6336
|
+
declare function stripViteQuery(id: string): string;
|
|
6337
|
+
declare function resolveDocumentComponentImports(input: ResolveDocumentComponentImportsInput): ResolveDocumentComponentImportsResult;
|
|
6338
|
+
//#endregion
|
|
6339
|
+
//#region src/document-islands.d.ts
|
|
6340
|
+
interface DiscoverDocumentMdxIslandsInput {
|
|
6341
|
+
source: string;
|
|
6342
|
+
html?: string;
|
|
6343
|
+
components: ComponentRegistry;
|
|
6344
|
+
imports: readonly MdxImport[];
|
|
6345
|
+
documentPath: string;
|
|
6346
|
+
contentRoot?: string;
|
|
6347
|
+
srcDir?: string;
|
|
6348
|
+
root?: string;
|
|
6349
|
+
}
|
|
6350
|
+
interface DiscoverDocumentMdxIslandsResult {
|
|
6351
|
+
usedComponents: string[];
|
|
6352
|
+
localBindings: Map<string, ResolvedDocumentComponentImport>;
|
|
6353
|
+
diagnostics: DocumentImportDiagnostic[];
|
|
6354
|
+
}
|
|
6355
|
+
declare function discoverDocumentMdxIslands(input: DiscoverDocumentMdxIslandsInput): Promise<DiscoverDocumentMdxIslandsResult>;
|
|
6356
|
+
//#endregion
|
|
6357
|
+
//#region src/island-codegen.d.ts
|
|
6358
|
+
type GlobalComponentMap = Readonly<Record<string, string>> | ReadonlyMap<string, string>;
|
|
6359
|
+
interface RenderIslandComponentImportsInput {
|
|
6360
|
+
globalComponents: GlobalComponentMap;
|
|
6361
|
+
localBindings?: ReadonlyMap<string, ResolvedDocumentComponentImport>;
|
|
6362
|
+
documentPath: string;
|
|
6363
|
+
root?: string;
|
|
6364
|
+
}
|
|
6365
|
+
declare function renderIslandComponentImports(usedComponents: readonly string[], input: RenderIslandComponentImportsInput): string;
|
|
6366
|
+
//#endregion
|
|
6367
|
+
//#region src/island-ssr.d.ts
|
|
6368
|
+
/**
|
|
6369
|
+
* Optional adapter-side island SSR.
|
|
6370
|
+
*
|
|
6371
|
+
* Framework plugins may supply `renderIsland` to replace island inner HTML at
|
|
6372
|
+
* transform time. The hook receives the original slot HTML so adapters can pass
|
|
6373
|
+
* children into their SSR runtime. This helper stays framework-neutral and does
|
|
6374
|
+
* not import a framework SSR runtime.
|
|
6375
|
+
*/
|
|
6376
|
+
type RenderIslandFn = (name: string, props: Record<string, unknown>, filePath: string, slotHtml?: string) => string | Promise<string>;
|
|
6377
|
+
declare function applyIslandSsrHtml(html: string, renderIsland: RenderIslandFn, filePath: string, names?: Iterable<string>): Promise<string>;
|
|
6378
|
+
//#endregion
|
|
4094
6379
|
//#region src/resolve-image-options.d.ts
|
|
4095
6380
|
declare function resolveImageOptions(options: OxContentOptions["images"]): ResolvedOptions["images"];
|
|
4096
6381
|
//#endregion
|
|
@@ -4118,6 +6403,7 @@ interface FrameworkMarkdownOptions {
|
|
|
4118
6403
|
math?: boolean | {
|
|
4119
6404
|
enabled?: boolean;
|
|
4120
6405
|
};
|
|
6406
|
+
mdx?: boolean;
|
|
4121
6407
|
}
|
|
4122
6408
|
interface FrameworkComponentIsland {
|
|
4123
6409
|
name: string;
|
|
@@ -4399,10 +6685,14 @@ declare function extractDocs(srcDirs: string[], options: ResolvedDocsOptions): P
|
|
|
4399
6685
|
* Generates Markdown documentation from extracted docs.
|
|
4400
6686
|
*/
|
|
4401
6687
|
declare function generateMarkdown(docs: ExtractedDocs[], options: ResolvedDocsOptions): Record<string, string>;
|
|
6688
|
+
/**
|
|
6689
|
+
* Generates Markdown documentation from local OpenAPI 3.0/3.1 files.
|
|
6690
|
+
*/
|
|
6691
|
+
declare function generateOpenApiDocs(options: ResolvedDocsOptions, root?: string): GeneratedOpenApiDocs;
|
|
4402
6692
|
/**
|
|
4403
6693
|
* Writes generated documentation to the output directory.
|
|
4404
6694
|
*/
|
|
4405
|
-
declare function writeDocs(docs: Record<string, string>, outDir: string, extractedDocs?: ExtractedDocs[], options?: ResolvedDocsOptions): Promise<void>;
|
|
6695
|
+
declare function writeDocs(docs: Record<string, string>, outDir: string, extractedDocs?: ExtractedDocs[], options?: ResolvedDocsOptions, extraNav?: DocsNavigationItem[]): Promise<void>;
|
|
4406
6696
|
/**
|
|
4407
6697
|
* Resolves docs options with defaults.
|
|
4408
6698
|
*/
|
|
@@ -4727,6 +7017,76 @@ interface SsgBuildResult {
|
|
|
4727
7017
|
*/
|
|
4728
7018
|
declare function buildSsg(options: ResolvedOptions, root: string): Promise<SsgBuildResult>;
|
|
4729
7019
|
//#endregion
|
|
7020
|
+
//#region src/page-head.d.ts
|
|
7021
|
+
/** How invalid head descriptors are reported. */
|
|
7022
|
+
type HeadValidationMode = false | "off" | "warn" | "strict";
|
|
7023
|
+
interface SiteHead {
|
|
7024
|
+
name?: string;
|
|
7025
|
+
url?: string;
|
|
7026
|
+
locale?: string;
|
|
7027
|
+
titleTemplate?: string;
|
|
7028
|
+
}
|
|
7029
|
+
interface HeadMeta {
|
|
7030
|
+
key?: string;
|
|
7031
|
+
name?: string;
|
|
7032
|
+
property?: string;
|
|
7033
|
+
httpEquiv?: string;
|
|
7034
|
+
content: string;
|
|
7035
|
+
}
|
|
7036
|
+
interface HeadLink {
|
|
7037
|
+
key?: string;
|
|
7038
|
+
rel: string;
|
|
7039
|
+
href: string;
|
|
7040
|
+
hreflang?: string;
|
|
7041
|
+
type?: string;
|
|
7042
|
+
sizes?: string;
|
|
7043
|
+
}
|
|
7044
|
+
interface HeadAlternate {
|
|
7045
|
+
lang: string;
|
|
7046
|
+
href: string;
|
|
7047
|
+
}
|
|
7048
|
+
interface HeadJsonLd {
|
|
7049
|
+
key?: string;
|
|
7050
|
+
json: string;
|
|
7051
|
+
}
|
|
7052
|
+
/**
|
|
7053
|
+
* Build-time page-head input. Unhead-shaped, no client runtime.
|
|
7054
|
+
*
|
|
7055
|
+
* Unknown keys such as `twitter.imggg` are a TypeScript error here. Use
|
|
7056
|
+
* `metas` / `links` for extra tags.
|
|
7057
|
+
*/
|
|
7058
|
+
interface HeadInput {
|
|
7059
|
+
site?: SiteHead;
|
|
7060
|
+
title?: string;
|
|
7061
|
+
titleTemplate?: string;
|
|
7062
|
+
titleSuffix?: boolean;
|
|
7063
|
+
description?: string;
|
|
7064
|
+
canonical?: string;
|
|
7065
|
+
robots?: string;
|
|
7066
|
+
ogImage?: string;
|
|
7067
|
+
ogType?: string;
|
|
7068
|
+
twitterCard?: "summary" | "summary_large_image" | (string & {});
|
|
7069
|
+
social?: boolean;
|
|
7070
|
+
emitSiteName?: boolean;
|
|
7071
|
+
trusted?: boolean;
|
|
7072
|
+
metas?: HeadMeta[];
|
|
7073
|
+
links?: HeadLink[];
|
|
7074
|
+
alternates?: HeadAlternate[];
|
|
7075
|
+
jsonLd?: HeadJsonLd[];
|
|
7076
|
+
validation?: "off" | "warn" | "strict";
|
|
7077
|
+
}
|
|
7078
|
+
interface HeadDiagnostic {
|
|
7079
|
+
strict: boolean;
|
|
7080
|
+
message: string;
|
|
7081
|
+
}
|
|
7082
|
+
interface RenderedHead {
|
|
7083
|
+
html: string;
|
|
7084
|
+
diagnostics: HeadDiagnostic[];
|
|
7085
|
+
}
|
|
7086
|
+
/** Resolve descriptors to escaped `<head>` markup. Build-time only. */
|
|
7087
|
+
declare function renderHead(input: HeadInput): RenderedHead;
|
|
7088
|
+
declare function resolveHeadValidation(value: HeadValidationMode | undefined): false | "warn" | "strict";
|
|
7089
|
+
//#endregion
|
|
4730
7090
|
//#region src/not-found.d.ts
|
|
4731
7091
|
/**
|
|
4732
7092
|
* Resolves `ssg.notFound` with defaults.
|
|
@@ -4737,6 +7097,26 @@ declare function buildSsg(options: ResolvedOptions, root: string): Promise<SsgBu
|
|
|
4737
7097
|
declare function resolveNotFoundOptions(value: boolean | NotFoundOptions | undefined): ResolvedNotFoundOptions;
|
|
4738
7098
|
//#endregion
|
|
4739
7099
|
//#region src/site-maps.d.ts
|
|
7100
|
+
/** One page considered for crawl manifests. */
|
|
7101
|
+
interface SiteMapPageInput {
|
|
7102
|
+
loc: string;
|
|
7103
|
+
title: string;
|
|
7104
|
+
description?: string;
|
|
7105
|
+
/** Source-file git commit time in milliseconds. Omitted when Git has no history. */
|
|
7106
|
+
lastUpdated?: number;
|
|
7107
|
+
draft?: boolean;
|
|
7108
|
+
unlisted?: boolean;
|
|
7109
|
+
}
|
|
7110
|
+
/** Inputs for writing crawl manifests next to generated HTML. */
|
|
7111
|
+
interface WriteSiteMapFilesInput {
|
|
7112
|
+
outDir: string;
|
|
7113
|
+
siteUrl?: string;
|
|
7114
|
+
base: string;
|
|
7115
|
+
siteName?: string;
|
|
7116
|
+
siteDescription?: string;
|
|
7117
|
+
options?: ResolvedSiteMapsOptions;
|
|
7118
|
+
pages: readonly SiteMapPageInput[];
|
|
7119
|
+
}
|
|
4740
7120
|
/**
|
|
4741
7121
|
* Resolves `siteMaps` with defaults.
|
|
4742
7122
|
*
|
|
@@ -4744,6 +7124,36 @@ declare function resolveNotFoundOptions(value: boolean | NotFoundOptions | undef
|
|
|
4744
7124
|
* enables the feature and overrides only the fields the site set.
|
|
4745
7125
|
*/
|
|
4746
7126
|
declare function resolveSiteMapsOptions(value: boolean | SiteMapsOptions | undefined): ResolvedSiteMapsOptions;
|
|
7127
|
+
/** Writes enabled crawl manifests into `outDir`. */
|
|
7128
|
+
declare function writeSiteMapFiles(input: WriteSiteMapFilesInput): Promise<{
|
|
7129
|
+
files: string[];
|
|
7130
|
+
warning?: string;
|
|
7131
|
+
}>;
|
|
7132
|
+
//#endregion
|
|
7133
|
+
//#region src/markdown-source.d.ts
|
|
7134
|
+
/** One page that may receive a source companion. */
|
|
7135
|
+
interface MarkdownSourcePageInput {
|
|
7136
|
+
inputPath: string;
|
|
7137
|
+
/** Already-read source bytes. Omitted pages are skipped. */
|
|
7138
|
+
source?: string;
|
|
7139
|
+
urlPath: string;
|
|
7140
|
+
frontmatter: Record<string, unknown>;
|
|
7141
|
+
}
|
|
7142
|
+
/** Inputs for writing companions next to generated HTML. */
|
|
7143
|
+
interface WriteMarkdownSourceFilesInput {
|
|
7144
|
+
outDir: string;
|
|
7145
|
+
base: string;
|
|
7146
|
+
options?: ResolvedMarkdownSourceOptions | null;
|
|
7147
|
+
publishState?: ResolvedPublishStateOptions;
|
|
7148
|
+
pages: readonly MarkdownSourcePageInput[];
|
|
7149
|
+
}
|
|
7150
|
+
/**
|
|
7151
|
+
* Resolves `ssg.markdownSource` with defaults.
|
|
7152
|
+
*
|
|
7153
|
+
* `false` / omitted stays off. `true` enables companions and the alternate
|
|
7154
|
+
* link. An object enables the feature and overrides only the fields set.
|
|
7155
|
+
*/
|
|
7156
|
+
declare function resolveMarkdownSourceOptions(value: boolean | MarkdownSourceOptions | undefined): ResolvedMarkdownSourceOptions;
|
|
4747
7157
|
//#endregion
|
|
4748
7158
|
//#region src/publish-state.d.ts
|
|
4749
7159
|
/** Split pages into production output vs listing surfaces. */
|
|
@@ -4780,19 +7190,122 @@ declare function resolveCascadeOptions(value: boolean | CascadeOptions | undefin
|
|
|
4780
7190
|
*
|
|
4781
7191
|
* `false` / omitted stays off. `true` or `{}` enables empty defaults.
|
|
4782
7192
|
* A path map (`{ "/old": "/new" }`) enables the feature with that map.
|
|
4783
|
-
* `{ map,
|
|
7193
|
+
* `{ map, provider, headers, json, html, allowExternal }` overrides only set fields.
|
|
7194
|
+
* Pass `env` to inject CI detection without reading the real `process.env`.
|
|
7195
|
+
*/
|
|
7196
|
+
declare function resolveRedirectsOptions(value: boolean | RedirectsOptions | Record<string, string> | undefined, env?: NodeJS.ProcessEnv): ResolvedRedirectsOptions;
|
|
7197
|
+
//#endregion
|
|
7198
|
+
//#region src/markdown-tables.d.ts
|
|
7199
|
+
interface MarkdownTableEnhancementOptions {
|
|
7200
|
+
/**
|
|
7201
|
+
* Tables to enhance. Defaults to Markdown content tables styled by
|
|
7202
|
+
* `@ox-content/vite-plugin/styles/core.css`.
|
|
7203
|
+
*/
|
|
7204
|
+
selector?: string;
|
|
7205
|
+
/**
|
|
7206
|
+
* Accessible name applied only when an overflowing table has no existing
|
|
7207
|
+
* `aria-label` or `aria-labelledby`.
|
|
7208
|
+
*/
|
|
7209
|
+
label?: string;
|
|
7210
|
+
}
|
|
7211
|
+
declare function markdownTableScrollLabel(locale?: string): string;
|
|
7212
|
+
/**
|
|
7213
|
+
* Makes overflowing Markdown tables keyboard-scrollable without wrapping or
|
|
7214
|
+
* replacing the native `<table>` element.
|
|
7215
|
+
*
|
|
7216
|
+
* Run this after rendering Markdown and again after layout-changing updates.
|
|
7217
|
+
* Narrow tables stay out of the tab order when overflow can be measured.
|
|
4784
7218
|
*/
|
|
4785
|
-
declare function
|
|
7219
|
+
declare function enhanceMarkdownTables(root?: ParentNode, options?: MarkdownTableEnhancementOptions): number;
|
|
4786
7220
|
//#endregion
|
|
4787
7221
|
//#region src/feeds.d.ts
|
|
7222
|
+
/** Inputs for rendering feed bodies. */
|
|
7223
|
+
interface FeedsRenderInput {
|
|
7224
|
+
options?: ResolvedFeedsOptions | null;
|
|
7225
|
+
siteUrl?: string;
|
|
7226
|
+
siteName?: string;
|
|
7227
|
+
siteDescription?: string;
|
|
7228
|
+
base?: string;
|
|
7229
|
+
collections?: Record<string, readonly FeedItemInput[]>;
|
|
7230
|
+
collectionNames?: readonly string[];
|
|
7231
|
+
items?: readonly FeedItemInput[];
|
|
7232
|
+
publishState?: ResolvedPublishStateOptions;
|
|
7233
|
+
}
|
|
7234
|
+
/** Rendered feed bodies, or a skip warning. */
|
|
7235
|
+
interface FeedsRenderResult {
|
|
7236
|
+
rssXml?: string;
|
|
7237
|
+
atomXml?: string;
|
|
7238
|
+
jsonFeed?: string;
|
|
7239
|
+
warning?: string;
|
|
7240
|
+
}
|
|
7241
|
+
interface RenderedFeedFile {
|
|
7242
|
+
path: string;
|
|
7243
|
+
contentType: string;
|
|
7244
|
+
content: string;
|
|
7245
|
+
}
|
|
7246
|
+
interface RenderFeedFilesInput extends FeedsRenderInput {
|
|
7247
|
+
base: string;
|
|
7248
|
+
outDir?: string;
|
|
7249
|
+
}
|
|
7250
|
+
interface RenderFeedFilesResult {
|
|
7251
|
+
files: RenderedFeedFile[];
|
|
7252
|
+
warning?: string;
|
|
7253
|
+
}
|
|
7254
|
+
interface WriteFeedFilesInput extends RenderFeedFilesInput {
|
|
7255
|
+
outDir: string;
|
|
7256
|
+
}
|
|
4788
7257
|
/**
|
|
4789
7258
|
* Resolves `feeds` with defaults.
|
|
4790
7259
|
*
|
|
4791
7260
|
* `false` / omitted stays off. `true` enables all three formats with
|
|
4792
7261
|
* collection `content` (or the first configured collection) and limit 20.
|
|
4793
|
-
*
|
|
7262
|
+
* A single object is one default feed. A named record or array writes
|
|
7263
|
+
* multiple feeds.
|
|
4794
7264
|
*/
|
|
4795
7265
|
declare function resolveFeedsOptions(value: boolean | FeedsOptions | undefined): ResolvedFeedsOptions;
|
|
7266
|
+
/** Builds RSS / Atom / JSON Feed bodies without writing files. */
|
|
7267
|
+
declare function generateFeeds(input: FeedsRenderInput): FeedsRenderResult;
|
|
7268
|
+
declare function renderFeedFiles(input: RenderFeedFilesInput): Promise<RenderFeedFilesResult>;
|
|
7269
|
+
declare function writeFeedFiles(input: WriteFeedFilesInput): Promise<{
|
|
7270
|
+
files: string[];
|
|
7271
|
+
warning?: string;
|
|
7272
|
+
}>;
|
|
7273
|
+
//#endregion
|
|
7274
|
+
//#region src/blog-options.d.ts
|
|
7275
|
+
declare function resolveBlogOptions(value: boolean | BlogOptions | undefined): ResolvedBlogOptions;
|
|
7276
|
+
/**
|
|
7277
|
+
* Picks a collection named `blog`, else the only configured collection.
|
|
7278
|
+
*
|
|
7279
|
+
* An explicit name always wins. Several collections and no `blog` name
|
|
7280
|
+
* require `blog.collection`.
|
|
7281
|
+
*/
|
|
7282
|
+
declare function resolveBlogCollectionName(requested: string | undefined, collectionNames: readonly string[]): string | undefined;
|
|
7283
|
+
//#endregion
|
|
7284
|
+
//#region src/blog-feeds.d.ts
|
|
7285
|
+
declare class BlogFeedError extends Error {
|
|
7286
|
+
readonly issues: string[];
|
|
7287
|
+
constructor(issues: string[]);
|
|
7288
|
+
}
|
|
7289
|
+
//#endregion
|
|
7290
|
+
//#region src/blog-reading.d.ts
|
|
7291
|
+
/**
|
|
7292
|
+
* Deterministic blog reading-time estimates.
|
|
7293
|
+
*/
|
|
7294
|
+
declare function readingTimeMinutes(markdown: string): number;
|
|
7295
|
+
//#endregion
|
|
7296
|
+
//#region src/budoux.d.ts
|
|
7297
|
+
declare function resolveBudouxOptions(options: OxContentOptions["budoux"]): ResolvedBudouxOptions;
|
|
7298
|
+
declare function transformBudouxHtml(html: string, options: ResolvedBudouxOptions | undefined): Promise<string>;
|
|
7299
|
+
//#endregion
|
|
7300
|
+
//#region src/pwa.d.ts
|
|
7301
|
+
/**
|
|
7302
|
+
* Resolves `pwa` with defaults.
|
|
7303
|
+
*
|
|
7304
|
+
* `false` / omitted stays off. `true` enables the manifest and offline
|
|
7305
|
+
* service worker. An object enables the feature and overrides only the
|
|
7306
|
+
* fields the site set.
|
|
7307
|
+
*/
|
|
7308
|
+
declare function resolvePwaOptions(value: boolean | PwaOptions | undefined): ResolvedPwaOptions;
|
|
4796
7309
|
//#endregion
|
|
4797
7310
|
//#region src/taxonomies.d.ts
|
|
4798
7311
|
/**
|
|
@@ -4810,6 +7323,17 @@ declare function resolveTaxonomiesOptions(value: boolean | TaxonomiesOptions | u
|
|
|
4810
7323
|
*/
|
|
4811
7324
|
declare function resolveVersionsOptions(value: boolean | VersionsOptions | undefined): ResolvedVersionsOptions;
|
|
4812
7325
|
//#endregion
|
|
7326
|
+
//#region src/resources.d.ts
|
|
7327
|
+
declare class PageResourceError extends Error {
|
|
7328
|
+
readonly issues: string[];
|
|
7329
|
+
constructor(issues: string[]);
|
|
7330
|
+
}
|
|
7331
|
+
/**
|
|
7332
|
+
* Resolves `resources`. Omitted / `false` stay off. `true` or `{}` enables
|
|
7333
|
+
* defaults. An object enables the feature and overrides only set fields.
|
|
7334
|
+
*/
|
|
7335
|
+
declare function resolveResourcesOptions(value: boolean | ResourcesOptions | undefined): ResolvedResourcesOptions;
|
|
7336
|
+
//#endregion
|
|
4813
7337
|
//#region src/team.d.ts
|
|
4814
7338
|
/**
|
|
4815
7339
|
* Resolves `ssg.team` with defaults.
|
|
@@ -4819,6 +7343,15 @@ declare function resolveVersionsOptions(value: boolean | VersionsOptions | undef
|
|
|
4819
7343
|
*/
|
|
4820
7344
|
declare function resolveTeamOptions(value: boolean | TeamOptions | undefined): ResolvedTeamOptions;
|
|
4821
7345
|
//#endregion
|
|
7346
|
+
//#region src/section-index.d.ts
|
|
7347
|
+
/**
|
|
7348
|
+
* Resolves `ssg.sectionIndex` with defaults.
|
|
7349
|
+
*
|
|
7350
|
+
* `false` / omitted stays off. `true` enables card listings. An object
|
|
7351
|
+
* enables the feature and overrides only the fields the site set.
|
|
7352
|
+
*/
|
|
7353
|
+
declare function resolveSectionIndexOptions(value: boolean | SectionIndexOptions | undefined): ResolvedSectionIndexOptions;
|
|
7354
|
+
//#endregion
|
|
4822
7355
|
//#region src/search.d.ts
|
|
4823
7356
|
/**
|
|
4824
7357
|
* Resolves search options with defaults.
|
|
@@ -4831,7 +7364,7 @@ declare function resolveSearchOptions(options: SearchOptions | boolean | undefin
|
|
|
4831
7364
|
* then drops matching documents and rebuilds the BM25 index so omitted
|
|
4832
7365
|
* pages (such as the opt-in 404 source) are not searchable.
|
|
4833
7366
|
*/
|
|
4834
|
-
declare function buildSearchIndex(srcDir: string, base: string, extensions?: readonly string[], publishState?: ResolvedPublishStateOptions, excludeDocumentIds?: readonly string[], mdx?: boolean): Promise<string>;
|
|
7367
|
+
declare function buildSearchIndex(srcDir: string, base: string, extensions?: readonly string[], publishState?: ResolvedPublishStateOptions, excludeDocumentIds?: readonly string[], mdx?: boolean, conditionalBlocks?: ResolvedConditionalBlockOptions, citations?: ResolvedCitationsOptions): Promise<string>;
|
|
4835
7368
|
/**
|
|
4836
7369
|
* Writes the search index to a file.
|
|
4837
7370
|
*/
|
|
@@ -4844,12 +7377,6 @@ declare function resolveCollectionsOptions(options: CollectionsOptions | boolean
|
|
|
4844
7377
|
declare function buildCollectionManifest(root: string, options: ResolvedOptions): Promise<CollectionManifest>;
|
|
4845
7378
|
declare function generateCollectionsVirtualModule(root: string, options: ResolvedOptions): Promise<string>;
|
|
4846
7379
|
//#endregion
|
|
4847
|
-
//#region src/markdown.d.ts
|
|
4848
|
-
declare const DEFAULT_MARKDOWN_EXTENSIONS: readonly [".md", ".markdown", ".mdx"];
|
|
4849
|
-
declare function normalizeMarkdownExtensions(extensions?: readonly string[]): string[];
|
|
4850
|
-
declare function isMarkdownFilePath(filePath: string, extensions?: readonly string[]): boolean;
|
|
4851
|
-
declare function stripMarkdownExtension(filePath: string, extensions?: readonly string[]): string;
|
|
4852
|
-
//#endregion
|
|
4853
7380
|
//#region src/vitepress.d.ts
|
|
4854
7381
|
interface VitePressLogo {
|
|
4855
7382
|
light?: string;
|
|
@@ -4982,7 +7509,7 @@ declare function generateHydrationScript(components: string[]): string;
|
|
|
4982
7509
|
//#endregion
|
|
4983
7510
|
//#region src/og-image/types.d.ts
|
|
4984
7511
|
/**
|
|
4985
|
-
* Type definitions for
|
|
7512
|
+
* Type definitions for OG image generation.
|
|
4986
7513
|
*/
|
|
4987
7514
|
/**
|
|
4988
7515
|
* Props passed to OG image template functions.
|
|
@@ -5005,10 +7532,66 @@ interface OgImageTemplateProps {
|
|
|
5005
7532
|
* Template function that receives page metadata and returns an HTML string.
|
|
5006
7533
|
*/
|
|
5007
7534
|
type OgImageTemplateFn = (props: OgImageTemplateProps) => string | Promise<string>;
|
|
7535
|
+
/**
|
|
7536
|
+
* OG image rendering backend.
|
|
7537
|
+
*/
|
|
7538
|
+
type OgImageRenderer$1 = "chromium" | "satori";
|
|
7539
|
+
/**
|
|
7540
|
+
* Font weight values supported by Satori.
|
|
7541
|
+
*/
|
|
7542
|
+
type OgImageSatoriFontWeight$1 = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
|
|
7543
|
+
/**
|
|
7544
|
+
* Font file loaded by the Satori renderer.
|
|
7545
|
+
*/
|
|
7546
|
+
interface OgImageSatoriFont$1 {
|
|
7547
|
+
/**
|
|
7548
|
+
* Absolute path, or a path relative to the project root.
|
|
7549
|
+
*/
|
|
7550
|
+
path: string;
|
|
7551
|
+
/**
|
|
7552
|
+
* Font family name used by template CSS.
|
|
7553
|
+
*/
|
|
7554
|
+
name?: string;
|
|
7555
|
+
/**
|
|
7556
|
+
* Font weight.
|
|
7557
|
+
* @default 400
|
|
7558
|
+
*/
|
|
7559
|
+
weight?: OgImageSatoriFontWeight$1;
|
|
7560
|
+
/**
|
|
7561
|
+
* Font style.
|
|
7562
|
+
* @default "normal"
|
|
7563
|
+
*/
|
|
7564
|
+
style?: "normal" | "italic";
|
|
7565
|
+
}
|
|
7566
|
+
/**
|
|
7567
|
+
* Satori renderer options.
|
|
7568
|
+
*/
|
|
7569
|
+
interface OgImageSatoriOptions$1 {
|
|
7570
|
+
/**
|
|
7571
|
+
* Font files passed to Satori.
|
|
7572
|
+
*
|
|
7573
|
+
* Satori cannot render text without at least one font. When omitted,
|
|
7574
|
+
* Ox Content tries a small set of system font paths unless
|
|
7575
|
+
* `systemFontFallback` is disabled.
|
|
7576
|
+
*/
|
|
7577
|
+
fonts?: OgImageSatoriFont$1[];
|
|
7578
|
+
/**
|
|
7579
|
+
* Try known OS font paths when `fonts` is empty.
|
|
7580
|
+
* @default true
|
|
7581
|
+
*/
|
|
7582
|
+
systemFontFallback?: boolean;
|
|
7583
|
+
}
|
|
5008
7584
|
/**
|
|
5009
7585
|
* OG image generation options (user-facing).
|
|
5010
7586
|
*/
|
|
5011
7587
|
interface OgImageOptions$1 {
|
|
7588
|
+
/**
|
|
7589
|
+
* Rendering backend.
|
|
7590
|
+
* - `"chromium"`: full browser rendering, best template compatibility
|
|
7591
|
+
* - `"satori"`: fast HTML-to-SVG-to-PNG rendering, limited CSS subset
|
|
7592
|
+
* @default "chromium"
|
|
7593
|
+
*/
|
|
7594
|
+
renderer?: OgImageRenderer$1;
|
|
5012
7595
|
/**
|
|
5013
7596
|
* Path to a custom template file (.ts, .vue, .svelte, .tsx/.jsx).
|
|
5014
7597
|
* - `.ts`: default-export a function `(props) => string`
|
|
@@ -5046,17 +7629,26 @@ interface OgImageOptions$1 {
|
|
|
5046
7629
|
* @default 1
|
|
5047
7630
|
*/
|
|
5048
7631
|
concurrency?: number;
|
|
7632
|
+
/**
|
|
7633
|
+
* Options for the Satori renderer.
|
|
7634
|
+
*/
|
|
7635
|
+
satori?: OgImageSatoriOptions$1;
|
|
5049
7636
|
}
|
|
5050
7637
|
/**
|
|
5051
7638
|
* Resolved OG image options with all defaults applied.
|
|
5052
7639
|
*/
|
|
5053
7640
|
interface ResolvedOgImageOptions {
|
|
7641
|
+
renderer: OgImageRenderer$1;
|
|
5054
7642
|
template?: string;
|
|
5055
7643
|
vuePlugin: "vitejs" | "vizejs";
|
|
5056
7644
|
width: number;
|
|
5057
7645
|
height: number;
|
|
5058
7646
|
cache: boolean;
|
|
5059
7647
|
concurrency: number;
|
|
7648
|
+
satori: {
|
|
7649
|
+
fonts: OgImageSatoriFont$1[];
|
|
7650
|
+
systemFontFallback: boolean;
|
|
7651
|
+
};
|
|
5060
7652
|
}
|
|
5061
7653
|
//#endregion
|
|
5062
7654
|
//#region src/og-image/browser.d.ts
|
|
@@ -5077,9 +7669,6 @@ interface OgBrowserSession extends AsyncDisposable {
|
|
|
5077
7669
|
}
|
|
5078
7670
|
//#endregion
|
|
5079
7671
|
//#region src/og-image/index.d.ts
|
|
5080
|
-
/**
|
|
5081
|
-
* Resolves user-provided OG image options with defaults.
|
|
5082
|
-
*/
|
|
5083
7672
|
declare function resolveOgImageOptions(options: OgImageOptions$1 | undefined): ResolvedOgImageOptions;
|
|
5084
7673
|
/**
|
|
5085
7674
|
* A single page entry for batch OG image generation.
|
|
@@ -5101,7 +7690,7 @@ interface OgImageResult {
|
|
|
5101
7690
|
/**
|
|
5102
7691
|
* Generates OG images for a batch of pages.
|
|
5103
7692
|
*
|
|
5104
|
-
* Manages the full lifecycle: resolve template →
|
|
7693
|
+
* Manages the full lifecycle: resolve template → select renderer →
|
|
5105
7694
|
* render each page (with caching and concurrency).
|
|
5106
7695
|
*
|
|
5107
7696
|
* All errors are non-fatal: failures are reported in results but never throw.
|
|
@@ -5118,6 +7707,115 @@ declare function resolveI18nOptions(options: I18nOptions | false | undefined): R
|
|
|
5118
7707
|
*/
|
|
5119
7708
|
declare function createI18nPlugin(resolvedOptions: ResolvedOptions): Plugin;
|
|
5120
7709
|
//#endregion
|
|
7710
|
+
//#region src/ssg-output-write.d.ts
|
|
7711
|
+
/** One host-rendered page that may receive resource fingerprinting. */
|
|
7712
|
+
interface WriteResourceFilesPage {
|
|
7713
|
+
html: string;
|
|
7714
|
+
inputPath: string;
|
|
7715
|
+
outputPath: string;
|
|
7716
|
+
}
|
|
7717
|
+
/** Inputs for writing fingerprinted page resources from host HTML. */
|
|
7718
|
+
interface WriteResourceFilesInput {
|
|
7719
|
+
pages: readonly WriteResourceFilesPage[];
|
|
7720
|
+
srcDir: string;
|
|
7721
|
+
outDir: string;
|
|
7722
|
+
root?: string;
|
|
7723
|
+
base?: string;
|
|
7724
|
+
options?: ResolvedResourcesOptions | null;
|
|
7725
|
+
cacheDir?: string;
|
|
7726
|
+
}
|
|
7727
|
+
/** Rewritten host pages plus emitted resource paths. */
|
|
7728
|
+
interface WriteResourceFilesResult {
|
|
7729
|
+
pages: WriteResourceFilesPage[];
|
|
7730
|
+
files: string[];
|
|
7731
|
+
errors: string[];
|
|
7732
|
+
}
|
|
7733
|
+
/**
|
|
7734
|
+
* Fingerprint, rewrite, and emit page resources for host-rendered HTML.
|
|
7735
|
+
*
|
|
7736
|
+
* Uses the same `resources` option object and emit path as `buildSsg()`.
|
|
7737
|
+
* Throws `PageResourceError` when `missing: "error"` hits a fatal issue.
|
|
7738
|
+
*/
|
|
7739
|
+
declare function writeResourceFiles(input: WriteResourceFilesInput): Promise<WriteResourceFilesResult>;
|
|
7740
|
+
/**
|
|
7741
|
+
* Write Markdown companions for host-rendered pages.
|
|
7742
|
+
*
|
|
7743
|
+
* Reuses `writeMarkdownSourceFiles` from the copy-as-markdown pipeline.
|
|
7744
|
+
*/
|
|
7745
|
+
declare function writeMarkdownCompanions(input: WriteMarkdownSourceFilesInput): Promise<{
|
|
7746
|
+
files: string[];
|
|
7747
|
+
errors: string[];
|
|
7748
|
+
}>;
|
|
7749
|
+
/**
|
|
7750
|
+
* Git last-commit time for `filePath` in milliseconds.
|
|
7751
|
+
*
|
|
7752
|
+
* Same lookup `buildSsg()` uses for `ssg.lastUpdated` and sitemap `<lastmod>`.
|
|
7753
|
+
* Returns `undefined` when `root` is missing, Git has no history, or NAPI is unavailable.
|
|
7754
|
+
*/
|
|
7755
|
+
declare function resolveGitLastmod(filePath: string, root?: string): number | undefined;
|
|
7756
|
+
//#endregion
|
|
7757
|
+
//#region src/ssg-output.d.ts
|
|
7758
|
+
/** Same option objects `oxContent()` / `buildSsg()` accept. `ssg.enabled` is ignored. */
|
|
7759
|
+
interface PlanSsgOutputsOptions {
|
|
7760
|
+
base?: string;
|
|
7761
|
+
resources?: boolean | ResourcesOptions;
|
|
7762
|
+
feeds?: boolean | FeedsOptions;
|
|
7763
|
+
siteMaps?: boolean | SiteMapsOptions;
|
|
7764
|
+
publishState?: boolean | PublishStateOptions;
|
|
7765
|
+
ssg?: boolean | SsgOptions;
|
|
7766
|
+
}
|
|
7767
|
+
/** Inputs for planning composable SSG outputs from host-rendered pages. */
|
|
7768
|
+
interface PlanSsgOutputsInput {
|
|
7769
|
+
pages: readonly SsgOutputPageInput[];
|
|
7770
|
+
outDir: string;
|
|
7771
|
+
srcDir?: string;
|
|
7772
|
+
root?: string;
|
|
7773
|
+
siteDescription?: string;
|
|
7774
|
+
collections?: Record<string, readonly FeedItemInput[]>;
|
|
7775
|
+
collectionNames?: readonly string[];
|
|
7776
|
+
items?: readonly FeedItemInput[];
|
|
7777
|
+
options?: PlanSsgOutputsOptions | Pick<OxContentOptions, keyof PlanSsgOutputsOptions>;
|
|
7778
|
+
}
|
|
7779
|
+
/** Planned writer inputs. Call the matching `write*` function for each feature. */
|
|
7780
|
+
interface SsgOutputPlan {
|
|
7781
|
+
resources: WriteResourceFilesInput;
|
|
7782
|
+
markdownCompanions: {
|
|
7783
|
+
outDir: string;
|
|
7784
|
+
base: string;
|
|
7785
|
+
options: ResolvedMarkdownSourceOptions;
|
|
7786
|
+
publishState: ResolvedPublishStateOptions;
|
|
7787
|
+
pages: MarkdownSourcePageInput[];
|
|
7788
|
+
};
|
|
7789
|
+
feeds: {
|
|
7790
|
+
outDir: string;
|
|
7791
|
+
base: string;
|
|
7792
|
+
siteUrl?: string;
|
|
7793
|
+
siteName?: string;
|
|
7794
|
+
siteDescription?: string;
|
|
7795
|
+
options: ResolvedFeedsOptions;
|
|
7796
|
+
publishState: ResolvedPublishStateOptions;
|
|
7797
|
+
collections?: Record<string, readonly FeedItemInput[]>;
|
|
7798
|
+
collectionNames?: readonly string[];
|
|
7799
|
+
items?: readonly FeedItemInput[];
|
|
7800
|
+
};
|
|
7801
|
+
siteMaps: {
|
|
7802
|
+
outDir: string;
|
|
7803
|
+
base: string;
|
|
7804
|
+
siteUrl?: string;
|
|
7805
|
+
siteName?: string;
|
|
7806
|
+
siteDescription?: string;
|
|
7807
|
+
options: ResolvedSiteMapsOptions;
|
|
7808
|
+
pages: SiteMapPageInput[];
|
|
7809
|
+
};
|
|
7810
|
+
}
|
|
7811
|
+
/**
|
|
7812
|
+
* Plan resource, companion, feed, and sitemap outputs without rendering pages.
|
|
7813
|
+
*
|
|
7814
|
+
* `ssg.enabled` is ignored. Use `ssg: { enabled: false, markdownSource, lastUpdated, siteUrl }`
|
|
7815
|
+
* so those fields still resolve. `lastUpdated` on a page wins over git.
|
|
7816
|
+
*/
|
|
7817
|
+
declare function planSsgOutputs(input: PlanSsgOutputsInput): SsgOutputPlan;
|
|
7818
|
+
//#endregion
|
|
5121
7819
|
//#region src/index.d.ts
|
|
5122
7820
|
/**
|
|
5123
7821
|
* Creates the Ox Content Vite plugin.
|
|
@@ -5139,13 +7837,10 @@ declare function createI18nPlugin(resolvedOptions: ResolvedOptions): Plugin;
|
|
|
5139
7837
|
* ```
|
|
5140
7838
|
*/
|
|
5141
7839
|
declare function oxContent(options?: OxContentOptions): Plugin[];
|
|
5142
|
-
declare function resolveBuiltinEmbedOptions(options: OxContentOptions["embeds"]): ResolvedOptions["embeds"];
|
|
5143
|
-
declare function resolveMathOptions(options: OxContentOptions["math"]): ResolvedOptions["math"];
|
|
5144
|
-
declare function resolveBadgeOptions(options: OxContentOptions["badges"]): ResolvedOptions["badges"];
|
|
5145
7840
|
/**
|
|
5146
7841
|
* Generates virtual module content.
|
|
5147
7842
|
*/
|
|
5148
7843
|
declare function generateVirtualModule(path: string, options: ResolvedOptions): string;
|
|
5149
7844
|
//#endregion
|
|
5150
|
-
export { A11yOptions, AttrsOptions, BadgeOptions, type BasePageProps, BuiltinEmbedOptions, BuiltinPmOptions, CardOptions, CascadeOptions, CodeAnnotationKind, CodeAnnotationSyntax, CodeAnnotationsOptions, type CodeBlockDiagnostic, CodeBlockLintOptions, CodeBlockTypecheckOptions, CodeImportOptions, type CollectedDocsTest, CollectionEntry, CollectionIncludeField, CollectionManifest, CollectionOptions, CollectionQueryBuilder, CollectionQueryOperator, CollectionsOptions, ContainerOptions, ContainerTypeOptions, DEFAULT_HTML_TEMPLATE, DEFAULT_MARKDOWN_EXTENSIONS, DefaultTheme, DocEntry, DocMember, DocsEntryPoint, DocsOptions, DocsSortStrategy, DocsSummary, type DocsTestFileOptions, type DocsTestHarnessOptions, DocsTestOptions, DocsTestRunError, type DocsTestRunResult, type DocsTestSource, type DocsTestWriteResult, EditThisPageOptions, EmojiShortcodeOptions, EntryPageConfig, type ExtractedCodeBlock, ExtractedDocs, FeatureConfig, FeedFormat, FeedsOptions, 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 GitHubSourceData, type GitHubSourceRef, 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, 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, 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, ParamDoc, type ParseIslandsResult, PermalinksOptions, PublishStateOptions, ReaderChromeOptions, RedirectsOptions, type RenderContext, ResolvedA11y, ResolvedAttrsOptions, ResolvedBadgeOptions, ResolvedBuiltinEmbedOptions, ResolvedCardOptions, ResolvedCascadeOptions, ResolvedCodeAnnotationsOptions, ResolvedCodeBlockLintOptions, ResolvedCodeBlockTypecheckOptions, ResolvedCodeImportOptions, ResolvedCollectionOptions, ResolvedCollectionsOptions, ResolvedContainerOptions, ResolvedDocsEntryPoint, ResolvedDocsOptions, ResolvedDocsTestOptions, ResolvedEditThisPageOptions, ResolvedEmojiShortcodeOptions, ResolvedFeedsOptions, ResolvedFileTreeOptions, ResolvedI18nOptions, ResolvedImageOptions, ResolvedIncludeOptions, ResolvedMathOptions, ResolvedNotFoundOptions, ResolvedOgImageOptions, ResolvedOptions, ResolvedPermalinksOptions, ResolvedPublishStateOptions, ResolvedReaderChrome, ResolvedRedirectsOptions, ResolvedSanitizeOptions, ResolvedSearchOptions, ResolvedSiteMapsOptions, ResolvedSsgOptions, ResolvedStepsOptions, ResolvedTaxonomiesOptions, ResolvedTeamOptions, type ResolvedThemeConfig, ResolvedVersionEntry, ResolvedVersionsOptions, ResolvedWikiLinkOptions, ReturnDoc, type RunDocsTestsOptions, SanitizeOptions, ScopedSearchQuery, SearchDocument, SearchOptions, SearchResult, 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, VersionBannerKind, VersionEntry, VersionsOptions, type VitePressConfig, type VitePressFooter, type VitePressLogo, type VitePressNavItem, type VitePressSidebar, type VitePressSidebarItem, type VitePressSocialLink, type VitePressThemeConfig, WikiLinkOptions, type WrittenDocsTestFile, type YouTubeOptions, buildCollectionManifest, buildSearchIndex, buildSsg, classifyPublishState, clearRenderContext, collectDocsTests, collectGitHubRepos, collectGitHubSources, collectOgpUrls, convertVitePressNav, convertVitePressSidebar, createFrameworkMarkdownOptions, createI18nPlugin, createIncrementalMarkdownParser, createIncrementalMarkdownRenderer, createMarkdownEnvironment, createTheme, defaultTheme, defineCollection, defineCollections, defineTheme, each, escapeSvelteMarkup, extractCodeBlocks, extractDocs, extractDocsTests, extractIslandInfo, extractVideoId, fetchGitHubSource, fetchOgpData, fetchRepoData, fromVitePressConfig, generateCollectionsVirtualModule, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateTabsCSS, generateTypes, generateVirtualModule, generateVitePressMigrationConfig, hasIslands, inferType, isMarkdownFilePath, jsx, jsxs, lintCodeBlocks, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, mergeThemes, mermaidClientScript, normalizeMarkdownExtensions, normalizeVitePressFrontmatter, oxContent, parseGitHubLineRange, parseGitHubPermalink, parsePageChromeFlags, partitionPublishedPages, prefetchGitHubRepos, prefetchGitHubSources, prefetchOgpData, raw, renderAllPages, renderHtmlToFrameworkCode, renderHtmlToReactComponent, renderHtmlToReactCreateElement, renderHtmlToSvelteComponent, renderHtmlToVueComponent, renderHtmlToVueH, renderMarkdownStream, renderPage, renderToString, resolveBadgeOptions, resolveBuiltinEmbedOptions, resolveCardOptions, resolveCascadeOptions, resolveCollectionsOptions, resolveDocsOptions, resolveFeedsOptions, resolveFileTreeOptions, resolveHeaderNavItems, resolveI18nOptions, resolveImageOptions, resolveIncludeOptions, resolveLocaleLabel, resolveMathOptions, resolveNotFoundOptions, resolveOgImageOptions, resolvePageChromeOption, resolvePermalinksOptions, resolvePublishStateOptions, resolveRedirectsOptions, resolveSearchOptions, resolveSiteMapsOptions, resolveSsgOptions, resolveStepsOptions, resolveTaxonomiesOptions, resolveTeamOptions, resolveTheme, resolveVersionsOptions, runDocsTests, setRenderContext, shouldLintMarkdownFile, stripMarkdownExtension, transformAllPlugins, transformGitHub, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformTabs, transformYouTube, typecheckCodeBlocks, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeDocsTestFiles, writeSearchIndex };
|
|
7845
|
+
export { A11yOptions, AbbreviationsOptions, AttrsOptions, BadgeOptions, type BasePageProps, type BibliographyEntry, BlogAuthor, BlogFeedError, BlogFeedFailurePolicy, BlogFeedSource, BlogOptions, type BudouxLanguage, type BudouxOptions, type BudouxParser, BuiltinEmbedOptions, BuiltinPmOptions, CardOptions, CascadeOptions, type CitationFailureMode, type CitationReference, type CitationsOptions, CodeAnnotationKind, CodeAnnotationSyntax, CodeAnnotationsOptions, type CodeBlockDiagnostic, CodeBlockLintOptions, CodeBlockTypecheckOptions, CodeGroupOptions, CodeImportOptions, type CollectedDocsTest, CollectionEntry, CollectionIncludeField, CollectionManifest, CollectionOptions, CollectionQueryBuilder, CollectionQueryOperator, CollectionsOptions, type ComponentRegistry, ConditionalBlockOptions, ContainerOptions, ContainerTypeOptions, ContributorsOptions, type CrossReferenceEntry, type CrossReferenceFailureMode, type CrossReferenceKind, type CrossReferenceLabelOptions, type CrossReferencesOptions, DEFAULT_HTML_TEMPLATE, DEFAULT_MARKDOWN_EXTENSIONS, DataTableOptions, DefaultTheme, DefinitionListOptions, type DiscoverDocumentMdxIslandsInput, type DiscoverDocumentMdxIslandsResult, type DiscoverRegisteredMdxComponentsInput, DocEntry, DocMember, DocsEntryPoint, DocsNavigationItem, 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, FeedChannelOptions, FeedFormat, FeedItemAttachment, FeedItemAuthor, FeedItemAuthorInput, FeedItemInput, FeedItemsResolveContext, FeedItemsSource, FeedsOptions, type FeedsRenderInput, type FeedsRenderResult, FileTreeIconOptions, FileTreeOptions, Fragment, type FrameworkCodegenMode, type FrameworkCodegenTarget, type FrameworkComponentIsland, type FrameworkMarkdownOptions, type FrameworkRenderTarget, type FrameworkTransformData, type FrontmatterSchema, type GenerateVitePressMigrationConfigOptions, GeneratedDocsData, GeneratedOpenApiDocs, type GitHubLineRange, type GitHubOptions, type GitHubRepoData, type GitHubSourceCommit, type GitHubSourceData, type GitHubSourceRef, type GlobalComponentMap, type GraphvizFailureMode, type GraphvizOptions, type HeadAlternate, type HeadDiagnostic, type HeadInput, type HeadJsonLd, type HeadLink, type HeadMeta, type HeadValidationMode, type HeaderNavItem, HeadingPermalinksOptions, HeroAction, HeroConfig, HeroImage, HeroNotice, I18nOptions, IconsOptions, ImageGalleryOptions, 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, KeyboardKeysOptions, 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, type MarkdownProcessor, MarkdownSourceOptions, type MarkdownTableEnhancementOptions, MarkdownTransformer, MathOptions, MdxImport, MdxImportSpecifier, MdxImportSpecifierKind, type MermaidOptions, type NavGroup, NavItem, NotByAiOptions, NotFoundOptions, type OgBrowserSession, OgImageOptions, type OgImagePageEntry, type OgImageOptions$1 as OgImagePluginOptions, OgImageRenderer, type OgImageResult, OgImageSatoriFont, OgImageSatoriFontWeight, OgImageSatoriOptions, type OgImageTemplateFn, type OgImageTemplateProps, type OgpData, type OgpOptions, OpenApiDocsInput, OpenApiDocsOptions, OpenApiDocsSource, OxContentOptions, type PageChromeFlags, type PageData, type PageProps, PageResourceError, ParamDoc, type ParseIslandsResult, PartialsOptions, PermalinksOptions, type PlanSsgOutputsInput, type PlanSsgOutputsOptions, PublishStateOptions, PwaOptions, ReaderChromeOptions, type RedditEmbedOptions, type RedditPostData, type RedditPostReference, RedirectProvider, RedirectsOptions, type RenderContext, type RenderFeedFilesInput, type RenderFeedFilesResult, type RenderIslandComponentImportsInput, type RenderIslandFn, type RenderedFeedFile, type RenderedHead, type ResolveDocumentComponentImportsInput, type ResolveDocumentComponentImportsResult, ResolvedA11y, ResolvedAbbreviationsOptions, ResolvedAttrsOptions, ResolvedBadgeOptions, ResolvedBlogFeedSource, ResolvedBlogOptions, type ResolvedBudouxOptions, ResolvedBuiltinEmbedOptions, ResolvedCardOptions, ResolvedCascadeOptions, type ResolvedCitationsOptions, ResolvedCodeAnnotationsOptions, ResolvedCodeBlockLintOptions, ResolvedCodeBlockTypecheckOptions, ResolvedCodeGroupOptions, ResolvedCodeImportOptions, ResolvedCollectionOptions, ResolvedCollectionsOptions, ResolvedConditionalBlockOptions, ResolvedContainerOptions, ResolvedContributors, type ResolvedCrossReferencesOptions, ResolvedDataTableOptions, ResolvedDefinitionListOptions, ResolvedDocsEntryPoint, ResolvedDocsOptions, ResolvedDocsTestOptions, type ResolvedDocumentComponentImport, ResolvedEditThisPageOptions, ResolvedEmojiShortcodeOptions, ResolvedFeedChannel, ResolvedFeedsOptions, ResolvedFileTreeOptions, type ResolvedGraphvizOptions, ResolvedHeadingPermalinksOptions, ResolvedI18nOptions, ResolvedIconsOptions, ResolvedImageGalleryOptions, ResolvedImageOptions, ResolvedIncludeOptions, ResolvedJsonLd, ResolvedKeyboardKeysOptions, ResolvedMagicLinkOptions, ResolvedMarkdownSourceOptions, ResolvedMathOptions, ResolvedNotByAiOptions, ResolvedNotFoundOptions, ResolvedOgImageOptions, ResolvedOpenApiDocsInput, ResolvedOpenApiDocsOptions, ResolvedOptions, ResolvedPartialsOptions, ResolvedPermalinksOptions, ResolvedPublishStateOptions, ResolvedPwaOptions, ResolvedReaderChrome, ResolvedRedirectsOptions, ResolvedResourcesOptions, ResolvedSanitizeOptions, ResolvedSearchOptions, ResolvedSectionIndexOptions, ResolvedSiteMapsOptions, ResolvedSsgOptions, ResolvedStepsOptions, ResolvedTaxonomiesOptions, ResolvedTeamOptions, type ResolvedThemeConfig, ResolvedTimelineOptions, 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, SsgOutputPageInput, type SsgOutputPlan, StepsOptions, TaxonomiesOptions, TeamLink, TeamMember, TeamOptions, type ThemeAnnouncement, type ThemeColors, type ThemeComponent, type ThemeConfig, type ThemeEmbed, type ThemeEntryPage, type ThemeFontValue, type ThemeFonts, type ThemeFooter, type ThemeHeader, type ThemeLayout, type ThemeProps, type ThemeRenderOptions, type ThemeTokens, type ThemeWebFont, ThrowsDoc, TimelineOptions, 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 WriteFeedFilesInput, type WriteResourceFilesInput, type WriteResourceFilesPage, type WriteResourceFilesResult, type WrittenDocsTestFile, type YouTubeOptions, applyIslandSsrHtml, buildCollectionManifest, buildSearchIndex, buildSsg, classifyPublishState, clearGraphvizCache, clearRenderContext, collectDocsTests, collectGitHubRepos, collectGitHubSources, collectMdxIslandNamesFromHtml, collectMdxJsxNamesFromAst, collectOgpUrls, convertVitePressNav, convertVitePressSidebar, createFrameworkMarkdownOptions, createI18nPlugin, createIncrementalMarkdownParser, createIncrementalMarkdownRenderer, createMarkdownEnvironment, createMarkdownProcessor, createTheme, defaultTheme, defineCollection, defineCollections, defineTheme, discoverDocumentMdxIslands, discoverRegisteredMdxComponents, each, enhanceMarkdownTables, escapeSvelteMarkup, extractCodeBlocks, extractDocs, extractDocsTests, extractIslandInfo, extractVideoId, fetchGitHubSource, fetchOgpData, fetchRepoData, fromVitePressConfig, generateCollectionsVirtualModule, generateFeeds, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateOpenApiDocs, generateTabsCSS, generateTypes, generateVirtualModule, generateVitePressMigrationConfig, hasIslands, inferType, intersectHydratableComponentNames, intersectRegisteredComponentNames, isMarkdownFilePath, isMdxFilePath, isRegisteredComponent, jsx, jsxs, lintCodeBlocks, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, markdownTableScrollLabel, mergeThemes, mermaidClientScript, normalizeMarkdownExtensions, normalizeVitePressFrontmatter, oxContent, parseGitHubLineRange, parseGitHubPermalink, parsePageChromeFlags, parseRedditPostReference, partitionPublishedPages, planSsgOutputs, prefetchGitHubRepos, prefetchGitHubSources, prefetchOgpData, raw, readingTimeMinutes, renderAllPages, renderFeedFiles, renderHead, renderHtmlToFrameworkCode, renderHtmlToReactComponent, renderHtmlToReactCreateElement, renderHtmlToSvelteComponent, renderHtmlToVueComponent, renderHtmlToVueH, renderIslandComponentImports, renderMarkdown, renderMarkdownStream, renderPage, renderToString, resolveAbbreviationsOptions, resolveBadgeOptions, resolveBlogCollectionName, resolveBlogOptions, resolveBudouxOptions, resolveBuiltinEmbedOptions, resolveCardOptions, resolveCascadeOptions, resolveCodeGroupOptions, resolveCollectionsOptions, resolveContentRootPath, resolveDataTableOptions, resolveDocsOptions, resolveDocumentComponentImports, resolveFeedsOptions, resolveFileTreeOptions, resolveGitLastmod, resolveGraphvizOptions, resolveHeadValidation, resolveHeaderNavItems, resolveHeadingPermalinksOptions, resolveI18nOptions, resolveImageGalleryOptions, resolveImageOptions, resolveIncludeOptions, resolveKeyboardKeysOptions, resolveLocaleLabel, resolveMarkdownSourceOptions, resolveMathOptions, resolveMdxForFilePath, resolveNotByAiOptions, resolveNotFoundOptions, resolveOgImageOptions, resolvePageChromeOption, resolvePartialsOptions, resolvePermalinksOptions, resolvePublishStateOptions, resolvePwaOptions, resolveRedirectsOptions, resolveResourcesOptions, resolveSearchOptions, resolveSectionIndexOptions, resolveSiteMapsOptions, resolveSsgOptions, resolveStepsOptions, resolveTaxonomiesOptions, resolveTeamOptions, resolveTheme, resolveTimelineOptions, resolveTypedHoverOptions, resolveVersionsOptions, runDocsTests, setRenderContext, shouldLintMarkdownFile, stripMarkdownExtension, stripViteQuery, transformAllPlugins, transformBudouxHtml, transformGitHub, transformGraphvizStatic, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformRedditEmbeds, transformTabs, transformYouTube, typecheckCodeBlocks, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeDocsTestFiles, writeFeedFiles, writeMarkdownCompanions, writeResourceFiles, writeSearchIndex, writeSiteMapFiles };
|
|
5151
7846
|
//# sourceMappingURL=index.d.mts.map
|