mdsvr 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/directory.d.ts +11 -0
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +31 -115
- package/dist/directory.js.map +1 -1
- package/dist/generators/feed.d.ts.map +1 -1
- package/dist/generators/feed.js +9 -2
- package/dist/generators/feed.js.map +1 -1
- package/dist/generators/robots.d.ts +11 -0
- package/dist/generators/robots.d.ts.map +1 -0
- package/dist/generators/robots.js +32 -0
- package/dist/generators/robots.js.map +1 -0
- package/dist/generators/search-index.d.ts.map +1 -1
- package/dist/generators/search-index.js +6 -5
- package/dist/generators/search-index.js.map +1 -1
- package/dist/generators/sitemap.d.ts +17 -1
- package/dist/generators/sitemap.d.ts.map +1 -1
- package/dist/generators/sitemap.js +119 -59
- package/dist/generators/sitemap.js.map +1 -1
- package/dist/generators/static-export.d.ts.map +1 -1
- package/dist/generators/static-export.js +66 -11
- package/dist/generators/static-export.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/link-transform.d.ts +37 -5
- package/dist/link-transform.d.ts.map +1 -1
- package/dist/link-transform.js +120 -13
- package/dist/link-transform.js.map +1 -1
- package/dist/render-page.d.ts +1 -2
- package/dist/render-page.d.ts.map +1 -1
- package/dist/render-page.js +56 -40
- package/dist/render-page.js.map +1 -1
- package/dist/renderer/markdown.d.ts +0 -16
- package/dist/renderer/markdown.d.ts.map +1 -1
- package/dist/renderer/markdown.js +6 -63
- package/dist/renderer/markdown.js.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +19 -1
- package/dist/router.js.map +1 -1
- package/dist/seo/extract.d.ts +26 -0
- package/dist/seo/extract.d.ts.map +1 -0
- package/dist/seo/extract.js +159 -0
- package/dist/seo/extract.js.map +1 -0
- package/dist/seo/index.d.ts +5 -0
- package/dist/seo/index.d.ts.map +1 -0
- package/dist/seo/index.js +5 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/jsonld.d.ts +15 -0
- package/dist/seo/jsonld.d.ts.map +1 -0
- package/dist/seo/jsonld.js +93 -0
- package/dist/seo/jsonld.js.map +1 -0
- package/dist/seo/metadata.d.ts +60 -0
- package/dist/seo/metadata.d.ts.map +1 -0
- package/dist/seo/metadata.js +144 -0
- package/dist/seo/metadata.js.map +1 -0
- package/dist/seo/url.d.ts +27 -0
- package/dist/seo/url.d.ts.map +1 -0
- package/dist/seo/url.js +76 -0
- package/dist/seo/url.js.map +1 -0
- package/dist/settings/defaults.d.ts.map +1 -1
- package/dist/settings/defaults.js +0 -2
- package/dist/settings/defaults.js.map +1 -1
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +15 -0
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/schema.d.ts +317 -5
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +45 -1
- package/dist/settings/schema.js.map +1 -1
- package/dist/template/analytics.d.ts +18 -0
- package/dist/template/analytics.d.ts.map +1 -0
- package/dist/template/analytics.js +83 -0
- package/dist/template/analytics.js.map +1 -0
- package/dist/template/index.d.ts +5 -0
- package/dist/template/index.d.ts.map +1 -1
- package/dist/template/index.js +59 -59
- package/dist/template/index.js.map +1 -1
- package/dist/template/search.d.ts.map +1 -1
- package/dist/template/search.js +9 -2
- package/dist/template/search.js.map +1 -1
- package/dist/template/seo.d.ts +7 -10
- package/dist/template/seo.d.ts.map +1 -1
- package/dist/template/seo.js +57 -33
- package/dist/template/seo.js.map +1 -1
- package/dist/template/sidebar.d.ts.map +1 -1
- package/dist/template/sidebar.js +11 -8
- package/dist/template/sidebar.js.map +1 -1
- package/dist/validator/index.d.ts +1 -1
- package/dist/validator/index.d.ts.map +1 -1
- package/dist/validator/index.js +21 -0
- package/dist/validator/index.js.map +1 -1
- package/package.json +1 -1
package/dist/settings/schema.js
CHANGED
|
@@ -5,6 +5,10 @@ export const LogoSchema = z.object({
|
|
|
5
5
|
alt: z.string().default("Logo"),
|
|
6
6
|
href: z.string().default("/"),
|
|
7
7
|
});
|
|
8
|
+
export const SiteAuthorSchema = z.object({
|
|
9
|
+
name: z.string(),
|
|
10
|
+
url: z.string().optional(),
|
|
11
|
+
});
|
|
8
12
|
export const SiteSchema = z.object({
|
|
9
13
|
title: z.string().default("mdsvr Docs"),
|
|
10
14
|
description: z.string().default(""),
|
|
@@ -12,6 +16,7 @@ export const SiteSchema = z.object({
|
|
|
12
16
|
language: z.string().default("en"),
|
|
13
17
|
logo: LogoSchema.optional(),
|
|
14
18
|
favicon: z.string().optional(),
|
|
19
|
+
author: SiteAuthorSchema.optional(),
|
|
15
20
|
});
|
|
16
21
|
export const AppearanceSchema = z.object({
|
|
17
22
|
defaultTheme: z.enum(["light", "dark", "system"]).default("system"),
|
|
@@ -79,16 +84,30 @@ export const OgSchema = z.object({
|
|
|
79
84
|
})
|
|
80
85
|
.default({}),
|
|
81
86
|
});
|
|
87
|
+
export const VerificationSchema = z.object({
|
|
88
|
+
google: z.string().optional(),
|
|
89
|
+
bing: z.string().optional(),
|
|
90
|
+
yandex: z.string().optional(),
|
|
91
|
+
pinterest: z.string().optional(),
|
|
92
|
+
naver: z.string().optional(),
|
|
93
|
+
});
|
|
82
94
|
export const SeoSchema = z.object({
|
|
83
|
-
|
|
95
|
+
// Optional. When unset, titles render as "<page title> | <site title>".
|
|
96
|
+
titleTemplate: z.string().optional(),
|
|
84
97
|
defaultImage: z.string().optional(),
|
|
85
98
|
twitterCard: z
|
|
86
99
|
.enum(["summary", "summary_large_image"])
|
|
87
100
|
.default("summary_large_image"),
|
|
88
101
|
twitterSite: z.string().optional(),
|
|
89
102
|
noIndex: z.boolean().default(false),
|
|
103
|
+
// When true, auto-generated directory listing pages emit
|
|
104
|
+
// `noindex, nofollow` and are excluded from the sitemap.
|
|
105
|
+
noIndexDirectoryPages: z.boolean().default(false),
|
|
90
106
|
generateSitemap: z.boolean().default(true),
|
|
107
|
+
generateRobotsTxt: z.boolean().default(true),
|
|
91
108
|
generateRssFeed: z.boolean().default(false),
|
|
109
|
+
structuredData: z.boolean().default(true),
|
|
110
|
+
verification: VerificationSchema.default({}),
|
|
92
111
|
rss: z
|
|
93
112
|
.object({
|
|
94
113
|
title: z.string(),
|
|
@@ -132,6 +151,30 @@ export const GenerateSchema = z.object({
|
|
|
132
151
|
// (matching static export) and redirects .md/.mdx URLs to clean URLs.
|
|
133
152
|
cleanUrls: z.boolean().default(false),
|
|
134
153
|
});
|
|
154
|
+
export const AnalyticsSchema = z.object({
|
|
155
|
+
// GA4 measurement ID, e.g. "G-XXXXXXXXXX" — emits gtag.js.
|
|
156
|
+
googleAnalytics: z.string().optional(),
|
|
157
|
+
// GTM container ID, e.g. "GTM-XXXXXXX" — head script + body noscript.
|
|
158
|
+
googleTagManager: z.string().optional(),
|
|
159
|
+
// Microsoft Clarity project ID — emits the clarity inline snippet.
|
|
160
|
+
clarity: z.string().optional(),
|
|
161
|
+
plausible: z
|
|
162
|
+
.object({
|
|
163
|
+
domain: z.string(),
|
|
164
|
+
// Self-hosted instances can override the script URL.
|
|
165
|
+
scriptSrc: z.string().default("https://plausible.io/js/script.js"),
|
|
166
|
+
})
|
|
167
|
+
.optional(),
|
|
168
|
+
umami: z
|
|
169
|
+
.object({
|
|
170
|
+
websiteId: z.string(),
|
|
171
|
+
scriptSrc: z.string().default("https://cloud.umami.is/script.js"),
|
|
172
|
+
})
|
|
173
|
+
.optional(),
|
|
174
|
+
// Raw snippets appended verbatim to the end of <head>. Trusted content:
|
|
175
|
+
// only ever read from the site owner's settings.json (ADR-0008).
|
|
176
|
+
customHead: z.array(z.string()).default([]),
|
|
177
|
+
});
|
|
135
178
|
export const SettingsSchema = z.object({
|
|
136
179
|
$schema: z.string().optional(),
|
|
137
180
|
site: SiteSchema.default({}),
|
|
@@ -143,5 +186,6 @@ export const SettingsSchema = z.object({
|
|
|
143
186
|
mdx: MdxSchema.default({}),
|
|
144
187
|
footer: FooterSchema.default({}),
|
|
145
188
|
generate: GenerateSchema.default({}),
|
|
189
|
+
analytics: AnalyticsSchema.default({}),
|
|
146
190
|
});
|
|
147
191
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Settings } from "../settings/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Render the `<head>` tags for `seo.verification` — one
|
|
4
|
+
* `<meta name="…" content="…">` per configured provider.
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildVerificationTags(settings: Settings): string;
|
|
7
|
+
/**
|
|
8
|
+
* Render the analytics `<head>` snippets for `analytics.*`.
|
|
9
|
+
* `customHead` entries are appended verbatim (trusted content — only ever
|
|
10
|
+
* read from the site owner's `_mdsvr/settings.json`).
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildAnalyticsHeadTags(settings: Settings): string;
|
|
13
|
+
/**
|
|
14
|
+
* Tags that must appear immediately after `<body>` — currently only the
|
|
15
|
+
* GTM `<noscript>` iframe.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildBodyStartTags(settings: Settings): string;
|
|
18
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/template/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAqBrD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAYhE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA+CjE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAI7D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
function escapeHtml(text) {
|
|
2
|
+
const htmlEscapes = {
|
|
3
|
+
"&": "&",
|
|
4
|
+
"<": "<",
|
|
5
|
+
">": ">",
|
|
6
|
+
'"': """,
|
|
7
|
+
"'": "'",
|
|
8
|
+
};
|
|
9
|
+
return text.replace(/[&<>"']/g, (char) => htmlEscapes[char] || char);
|
|
10
|
+
}
|
|
11
|
+
const VERIFICATION_META_NAMES = {
|
|
12
|
+
google: "google-site-verification",
|
|
13
|
+
bing: "msvalidate.01",
|
|
14
|
+
yandex: "yandex-verification",
|
|
15
|
+
pinterest: "p:domain_verify",
|
|
16
|
+
naver: "naver-site-verification",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Render the `<head>` tags for `seo.verification` — one
|
|
20
|
+
* `<meta name="…" content="…">` per configured provider.
|
|
21
|
+
*/
|
|
22
|
+
export function buildVerificationTags(settings) {
|
|
23
|
+
const verification = settings.seo.verification;
|
|
24
|
+
const tags = [];
|
|
25
|
+
for (const [provider, metaName] of Object.entries(VERIFICATION_META_NAMES)) {
|
|
26
|
+
const value = verification[provider];
|
|
27
|
+
if (value) {
|
|
28
|
+
tags.push(`<meta name="${metaName}" content="${escapeHtml(value)}">`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return tags.join("\n ");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Render the analytics `<head>` snippets for `analytics.*`.
|
|
35
|
+
* `customHead` entries are appended verbatim (trusted content — only ever
|
|
36
|
+
* read from the site owner's `_mdsvr/settings.json`).
|
|
37
|
+
*/
|
|
38
|
+
export function buildAnalyticsHeadTags(settings) {
|
|
39
|
+
const a = settings.analytics;
|
|
40
|
+
const tags = [];
|
|
41
|
+
if (a.googleAnalytics) {
|
|
42
|
+
const id = escapeHtml(a.googleAnalytics);
|
|
43
|
+
tags.push(`<script async src="https://www.googletagmanager.com/gtag/js?id=${id}"></script>`, `<script>
|
|
44
|
+
window.dataLayer = window.dataLayer || [];
|
|
45
|
+
function gtag(){dataLayer.push(arguments);}
|
|
46
|
+
gtag('js', new Date());
|
|
47
|
+
gtag('config', '${id}');
|
|
48
|
+
</script>`);
|
|
49
|
+
}
|
|
50
|
+
if (a.googleTagManager) {
|
|
51
|
+
const id = escapeHtml(a.googleTagManager);
|
|
52
|
+
tags.push(`<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
|
53
|
+
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
|
54
|
+
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
|
55
|
+
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
|
56
|
+
})(window,document,'script','dataLayer','${id}');</script>`);
|
|
57
|
+
}
|
|
58
|
+
if (a.clarity) {
|
|
59
|
+
const id = escapeHtml(a.clarity);
|
|
60
|
+
tags.push(`<script>(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
|
|
61
|
+
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
|
|
62
|
+
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,"clarity","script","${id}");</script>`);
|
|
63
|
+
}
|
|
64
|
+
if (a.plausible) {
|
|
65
|
+
tags.push(`<script defer data-domain="${escapeHtml(a.plausible.domain)}" src="${escapeHtml(a.plausible.scriptSrc)}"></script>`);
|
|
66
|
+
}
|
|
67
|
+
if (a.umami) {
|
|
68
|
+
tags.push(`<script defer data-website-id="${escapeHtml(a.umami.websiteId)}" src="${escapeHtml(a.umami.scriptSrc)}"></script>`);
|
|
69
|
+
}
|
|
70
|
+
tags.push(...a.customHead);
|
|
71
|
+
return tags.filter(Boolean).join("\n ");
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Tags that must appear immediately after `<body>` — currently only the
|
|
75
|
+
* GTM `<noscript>` iframe.
|
|
76
|
+
*/
|
|
77
|
+
export function buildBodyStartTags(settings) {
|
|
78
|
+
const gtm = settings.analytics.googleTagManager;
|
|
79
|
+
if (!gtm)
|
|
80
|
+
return "";
|
|
81
|
+
return `<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${escapeHtml(gtm)}" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>`;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/template/analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/template/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Settings } from "../settings/index.js";
|
|
2
2
|
import type { TocItem } from "../renderer/markdown.js";
|
|
3
|
+
import { type PageKind } from "../seo/index.js";
|
|
3
4
|
import { type NavItem } from "./sidebar.js";
|
|
4
5
|
export interface TemplateParams {
|
|
5
6
|
title: string;
|
|
@@ -7,6 +8,10 @@ export interface TemplateParams {
|
|
|
7
8
|
filePath: string;
|
|
8
9
|
settings: Settings;
|
|
9
10
|
frontmatter?: Record<string, unknown>;
|
|
11
|
+
/** Raw markdown/MDX source — enables meta description auto-extraction. */
|
|
12
|
+
content?: string;
|
|
13
|
+
/** Page kind for SEO/JSON-LD ("document" default). */
|
|
14
|
+
kind?: PageKind;
|
|
10
15
|
toc?: TocItem[];
|
|
11
16
|
sidebar?: NavItem[];
|
|
12
17
|
urlPath?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AAqDtB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwtBzD"}
|
package/dist/template/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getOgImageUrl } from "../og/index.js";
|
|
1
|
+
import { buildJsonLd, resolveSeoData } from "../seo/index.js";
|
|
3
2
|
import { buildSeoTags } from "./seo.js";
|
|
4
3
|
import { renderSidebar, renderToc, getPrevNext, } from "./sidebar.js";
|
|
5
4
|
import { renderSearchModal, renderSearchTrigger, getSearchInlineScript, } from "./search.js";
|
|
5
|
+
import { buildVerificationTags, buildAnalyticsHeadTags, buildBodyStartTags, } from "./analytics.js";
|
|
6
6
|
import { readFileSync } from "fs";
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
8
|
import { dirname, join } from "path";
|
|
@@ -49,45 +49,22 @@ export function renderPage(params) {
|
|
|
49
49
|
document.documentElement.setAttribute('data-content-view', contentView);
|
|
50
50
|
})();
|
|
51
51
|
</script>`;
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
// Build SEO data from frontmatter with fallbacks
|
|
64
|
-
// Priority: frontmatter > auto-extracted > site defaults
|
|
65
|
-
const extractedSeo = rawContent
|
|
66
|
-
? extractSeoData(rawContent)
|
|
67
|
-
: { title: null, description: null };
|
|
68
|
-
const seoData = {
|
|
69
|
-
title: frontmatter.title || title,
|
|
70
|
-
description: frontmatter.description ||
|
|
71
|
-
extractedSeo.description ||
|
|
72
|
-
settings.site.description,
|
|
73
|
-
image: frontmatter.image || undefined,
|
|
74
|
-
url: urlPath,
|
|
75
|
-
type: frontmatter.date ? "article" : "website",
|
|
76
|
-
date: frontmatter.date || undefined,
|
|
77
|
-
author: frontmatter.author || undefined,
|
|
78
|
-
noIndex: frontmatter.noIndex || false,
|
|
79
|
-
};
|
|
80
|
-
// Add OG image URL if enabled in static export
|
|
81
|
-
if (params.isStaticExport && settings.seo.og?.enabled && !seoData.image) {
|
|
82
|
-
const ogUrl = getOgImageUrl(urlPath, settings.generate.basePath || "", settings.seo.og.imageFormat);
|
|
83
|
-
seoData.image = ogUrl;
|
|
84
|
-
}
|
|
85
|
-
// Fall back to defaultImage if no image was set
|
|
86
|
-
if (!seoData.image) {
|
|
87
|
-
seoData.image = settings.seo.defaultImage;
|
|
88
|
-
}
|
|
52
|
+
// Resolve SEO data: frontmatter → auto-extracted → site defaults
|
|
53
|
+
const seoData = resolveSeoData({
|
|
54
|
+
frontmatter,
|
|
55
|
+
content: params.content,
|
|
56
|
+
title,
|
|
57
|
+
urlPath,
|
|
58
|
+
kind: params.kind,
|
|
59
|
+
settings,
|
|
60
|
+
sidebar,
|
|
61
|
+
isStaticExport,
|
|
62
|
+
});
|
|
89
63
|
const seoTags = buildSeoTags(seoData, settings);
|
|
90
|
-
const
|
|
64
|
+
const jsonLd = buildJsonLd(seoData, settings);
|
|
65
|
+
const verificationTags = buildVerificationTags(settings);
|
|
66
|
+
const analyticsHeadTags = buildAnalyticsHeadTags(settings);
|
|
67
|
+
const bodyStartTags = buildBodyStartTags(settings);
|
|
91
68
|
// Render sidebar if enabled
|
|
92
69
|
const hasSidebar = settings.navigation.sidebar.enabled && sidebar.length > 0;
|
|
93
70
|
const sidebarHtml = hasSidebar
|
|
@@ -156,14 +133,18 @@ export function renderPage(params) {
|
|
|
156
133
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
157
134
|
${themeScript}
|
|
158
135
|
${seoTags}
|
|
159
|
-
${
|
|
136
|
+
${jsonLd}
|
|
137
|
+
${verificationTags}
|
|
138
|
+
${settings.site.favicon ? `<link rel="icon" href="${escapeHtml(withBasePath(normalizeAssetPath(settings.site.favicon), settings, isStaticExport))}">` : ""}
|
|
160
139
|
${body.includes('class="katex') ? '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" crossorigin="anonymous">' : ""}
|
|
161
140
|
<style>
|
|
162
141
|
${getBaseStyles(settings)}
|
|
163
142
|
${getHighlightJsStyles(settings)}
|
|
164
143
|
</style>
|
|
144
|
+
${analyticsHeadTags}
|
|
165
145
|
</head>
|
|
166
146
|
<body>
|
|
147
|
+
${bodyStartTags}
|
|
167
148
|
<header class="site-header">
|
|
168
149
|
<div class="header-left">
|
|
169
150
|
${sidebarToggle}
|
|
@@ -566,8 +547,7 @@ function initCodeBlockToolbars() {
|
|
|
566
547
|
var fullscreenBtn = container.querySelector('.code-block-btn-fullscreen');
|
|
567
548
|
|
|
568
549
|
function getRawCode() {
|
|
569
|
-
|
|
570
|
-
return rawEl ? rawEl.textContent : '';
|
|
550
|
+
return container.getAttribute('data-code') || '';
|
|
571
551
|
}
|
|
572
552
|
|
|
573
553
|
function fallbackCopy(text) {
|
|
@@ -675,6 +655,7 @@ function initTableToolbars() {
|
|
|
675
655
|
}
|
|
676
656
|
|
|
677
657
|
document.querySelectorAll('.markdown-body table').forEach(function(table) {
|
|
658
|
+
if (table.closest('.dir-listing')) return;
|
|
678
659
|
var wrapper = table.parentElement;
|
|
679
660
|
if (!wrapper || !wrapper.classList.contains('table-wrapper')) {
|
|
680
661
|
wrapper = document.createElement('div');
|
|
@@ -766,6 +747,16 @@ function withBasePath(href, settings, isStaticExport) {
|
|
|
766
747
|
: basePath;
|
|
767
748
|
return normalizedBase + href;
|
|
768
749
|
}
|
|
750
|
+
/**
|
|
751
|
+
* Normalize a configured asset path (favicon, logo) so that a bare file
|
|
752
|
+
* name like `favicon.svg` becomes root-relative `/favicon.svg`. Absolute
|
|
753
|
+
* and protocol-relative URLs pass through unchanged.
|
|
754
|
+
*/
|
|
755
|
+
function normalizeAssetPath(pathOrUrl) {
|
|
756
|
+
if (/^(https?:)?\/\//i.test(pathOrUrl))
|
|
757
|
+
return pathOrUrl;
|
|
758
|
+
return pathOrUrl.startsWith("/") ? pathOrUrl : `/${pathOrUrl}`;
|
|
759
|
+
}
|
|
769
760
|
function renderBreadcrumbs(urlPath, settings, isStaticExport) {
|
|
770
761
|
if (urlPath === "/")
|
|
771
762
|
return "";
|
|
@@ -778,7 +769,7 @@ function renderBreadcrumbs(urlPath, settings, isStaticExport) {
|
|
|
778
769
|
if (isLast) {
|
|
779
770
|
return `<span class="breadcrumb-current">${escapeHtml(label)}</span>`;
|
|
780
771
|
}
|
|
781
|
-
return `<a href="${withBasePath(accum
|
|
772
|
+
return `<a href="${withBasePath(`${accum}/`, settings, isStaticExport)}">${escapeHtml(label)}</a>`;
|
|
782
773
|
});
|
|
783
774
|
return `<nav class="breadcrumbs">
|
|
784
775
|
<a href="${withBasePath("/", settings, isStaticExport)}">Home</a>
|
|
@@ -1221,10 +1212,8 @@ body {
|
|
|
1221
1212
|
}
|
|
1222
1213
|
|
|
1223
1214
|
/* Code block wrapper */
|
|
1224
|
-
|
|
1225
|
-
all: unset;
|
|
1215
|
+
.code-block-wrapper {
|
|
1226
1216
|
display: block;
|
|
1227
|
-
padding: 0;
|
|
1228
1217
|
margin-bottom: 16px;
|
|
1229
1218
|
}
|
|
1230
1219
|
.code-block-container {
|
|
@@ -1245,11 +1234,6 @@ pre.code-block-wrapper {
|
|
|
1245
1234
|
padding: 0;
|
|
1246
1235
|
border-radius: 0;
|
|
1247
1236
|
}
|
|
1248
|
-
.code-block-raw {
|
|
1249
|
-
display: none;
|
|
1250
|
-
margin: 0;
|
|
1251
|
-
padding: 0;
|
|
1252
|
-
}
|
|
1253
1237
|
.code-block-toolbar {
|
|
1254
1238
|
position: absolute;
|
|
1255
1239
|
top: 8px;
|
|
@@ -1407,6 +1391,27 @@ pre.code-block-wrapper {
|
|
|
1407
1391
|
}
|
|
1408
1392
|
.markdown-body th { background: var(--bg-secondary); font-weight: 600; white-space: nowrap; }
|
|
1409
1393
|
.markdown-body tr:nth-child(2n) { background: var(--bg-secondary); }
|
|
1394
|
+
|
|
1395
|
+
/* Directory listing (auto-index pages) */
|
|
1396
|
+
.dir-listing table {
|
|
1397
|
+
width: 100%;
|
|
1398
|
+
border-collapse: collapse;
|
|
1399
|
+
margin-bottom: 16px;
|
|
1400
|
+
}
|
|
1401
|
+
.dir-listing th, .dir-listing td {
|
|
1402
|
+
padding: 8px 12px;
|
|
1403
|
+
text-align: left;
|
|
1404
|
+
border: none;
|
|
1405
|
+
border-bottom: 1px solid var(--border);
|
|
1406
|
+
font-size: 14px;
|
|
1407
|
+
white-space: normal;
|
|
1408
|
+
}
|
|
1409
|
+
.dir-listing th { font-weight: 600; color: var(--text-muted); }
|
|
1410
|
+
.dir-listing tr { background: transparent; }
|
|
1411
|
+
.dir-listing td a { color: var(--accent); text-decoration: none; }
|
|
1412
|
+
.dir-listing td a:hover { text-decoration: underline; }
|
|
1413
|
+
.dir-listing .size { color: var(--text-muted); text-align: right; width: 100px; }
|
|
1414
|
+
.dir-listing .empty { color: var(--text-muted); font-style: italic; }
|
|
1410
1415
|
.markdown-body img { max-width: 100%; height: auto; }
|
|
1411
1416
|
.markdown-body hr {
|
|
1412
1417
|
height: 0.25em;
|
|
@@ -1816,17 +1821,12 @@ pre.code-block-wrapper {
|
|
|
1816
1821
|
padding: 16px;
|
|
1817
1822
|
}
|
|
1818
1823
|
|
|
1819
|
-
/* Mermaid wrapper
|
|
1824
|
+
/* Mermaid wrapper */
|
|
1820
1825
|
.mermaid-wrapper {
|
|
1821
|
-
all: unset;
|
|
1822
1826
|
display: block;
|
|
1827
|
+
margin-bottom: 16px;
|
|
1823
1828
|
}
|
|
1824
1829
|
|
|
1825
|
-
pre.mermaid-wrapper{
|
|
1826
|
-
padding: 0;
|
|
1827
|
-
}
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
1830
|
/* Mermaid container */
|
|
1831
1831
|
.mermaid-container {
|
|
1832
1832
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/template/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA2B5D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAc9D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,MAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/template/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA2B5D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAc9D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,MAAW,GAAG,MAAM,CAgNnE"}
|
package/dist/template/search.js
CHANGED
|
@@ -90,8 +90,15 @@ export function getSearchInlineScript(basePath = "") {
|
|
|
90
90
|
searchInput.addEventListener('input', debounce(performSearch, 150));
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
// Load search index
|
|
94
|
-
loadSearchIndex()
|
|
93
|
+
// Load search index, then honor ?q=<query> (SearchAction entry point)
|
|
94
|
+
loadSearchIndex().then(function() {
|
|
95
|
+
const initialQuery = new URLSearchParams(window.location.search).get('q');
|
|
96
|
+
if (initialQuery && searchInput) {
|
|
97
|
+
searchInput.value = initialQuery;
|
|
98
|
+
openSearch();
|
|
99
|
+
performSearch();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
95
102
|
}
|
|
96
103
|
|
|
97
104
|
async function loadSearchIndex() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/template/search.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;;;;;;;;;uBASc,QAAQ,CAAC,MAAM,CAAC,WAAW;;;;;;;;;;;;CAYjD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;;;;;;;;CAQR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE;IACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC;IACb,OAAO
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/template/search.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;;;;;;;;;uBASc,QAAQ,CAAC,MAAM,CAAC,WAAW;;;;;;;;;;;;CAYjD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;;;;;;;;CAQR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE;IACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC;IACb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4DwB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+I9C,CAAC;AACF,CAAC"}
|
package/dist/template/seo.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { Settings } from "../settings/index.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
author?: string;
|
|
10
|
-
noIndex?: boolean;
|
|
11
|
-
}
|
|
2
|
+
import { type SeoData } from "../seo/metadata.js";
|
|
3
|
+
export type { SeoData } from "../seo/metadata.js";
|
|
4
|
+
/**
|
|
5
|
+
* Render the `<head>` SEO tags for a resolved page. All attribute values
|
|
6
|
+
* (including URLs) are HTML-escaped. Canonical and `og:url` are only
|
|
7
|
+
* emitted as absolute URLs — never relative.
|
|
8
|
+
*/
|
|
12
9
|
export declare function buildSeoTags(data: SeoData, settings: Settings): string;
|
|
13
10
|
//# sourceMappingURL=seo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/template/seo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/template/seo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGnE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAqBlD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAqHtE"}
|