@softure-ai/blog 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +211 -26
- package/dist/cli/report.d.ts +17 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +149 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/run.d.ts +12 -5
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +122 -88
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/skill.d.ts.map +1 -1
- package/dist/cli/skill.js +2 -1
- package/dist/cli/skill.js.map +1 -1
- package/dist/contract.d.ts +4 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/db/articles.d.ts +10 -1
- package/dist/db/articles.d.ts.map +1 -1
- package/dist/db/articles.js +41 -5
- package/dist/db/articles.js.map +1 -1
- package/dist/db/history.d.ts +36 -0
- package/dist/db/history.d.ts.map +1 -0
- package/dist/db/history.js +70 -0
- package/dist/db/history.js.map +1 -0
- package/dist/db/publish-run.d.ts +11 -0
- package/dist/db/publish-run.d.ts.map +1 -1
- package/dist/db/publish-run.js +14 -4
- package/dist/db/publish-run.js.map +1 -1
- package/dist/index.d.ts +20 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/next/index.d.ts +2 -0
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +2 -0
- package/dist/next/index.js.map +1 -1
- package/dist/next/json-ld.d.ts +13 -0
- package/dist/next/json-ld.d.ts.map +1 -0
- package/dist/next/json-ld.js +42 -0
- package/dist/next/json-ld.js.map +1 -0
- package/dist/next/metadata.d.ts +18 -0
- package/dist/next/metadata.d.ts.map +1 -0
- package/dist/next/metadata.js +84 -0
- package/dist/next/metadata.js.map +1 -0
- package/dist/next/pages.d.ts.map +1 -1
- package/dist/next/pages.js +16 -77
- package/dist/next/pages.js.map +1 -1
- package/dist/options.d.ts +23 -7
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +26 -1
- package/dist/options.js.map +1 -1
- package/dist/pages/accept.d.ts +7 -0
- package/dist/pages/accept.d.ts.map +1 -0
- package/dist/pages/accept.js +34 -0
- package/dist/pages/accept.js.map +1 -0
- package/dist/pages/body.d.ts +1 -1
- package/dist/pages/body.d.ts.map +1 -1
- package/dist/pages/body.js +1 -0
- package/dist/pages/body.js.map +1 -1
- package/dist/pages/index.d.ts +1 -1
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/redirects.d.ts +22 -6
- package/dist/pages/redirects.d.ts.map +1 -1
- package/dist/pages/redirects.js +5 -2
- package/dist/pages/redirects.js.map +1 -1
- package/dist/proxy/index.d.ts +15 -0
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +60 -3
- package/dist/proxy/index.js.map +1 -1
- package/dist/quality/catalog.d.ts.map +1 -1
- package/dist/quality/catalog.js +4 -1
- package/dist/quality/catalog.js.map +1 -1
- package/dist/quality/check-article.d.ts.map +1 -1
- package/dist/quality/check-article.js +2 -1
- package/dist/quality/check-article.js.map +1 -1
- package/dist/quality/index.d.ts +1 -1
- package/dist/quality/index.d.ts.map +1 -1
- package/dist/quality/index.js.map +1 -1
- package/dist/quality/link-targets.d.ts.map +1 -1
- package/dist/quality/link-targets.js +6 -5
- package/dist/quality/link-targets.js.map +1 -1
- package/dist/quality/options.d.ts +3 -3
- package/dist/quality/options.d.ts.map +1 -1
- package/dist/quality/options.js +9 -4
- package/dist/quality/options.js.map +1 -1
- package/dist/quality/rules/blocks.d.ts +8 -1
- package/dist/quality/rules/blocks.d.ts.map +1 -1
- package/dist/quality/rules/blocks.js +26 -0
- package/dist/quality/rules/blocks.js.map +1 -1
- package/dist/quality/settings.d.ts +11 -0
- package/dist/quality/settings.d.ts.map +1 -1
- package/dist/quality/settings.js +7 -1
- package/dist/quality/settings.js.map +1 -1
- package/dist/render/article-markdown.d.ts +12 -0
- package/dist/render/article-markdown.d.ts.map +1 -0
- package/dist/render/article-markdown.js +21 -0
- package/dist/render/article-markdown.js.map +1 -0
- package/dist/render/index.d.ts +2 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +2 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/render-article.d.ts +48 -4
- package/dist/render/render-article.d.ts.map +1 -1
- package/dist/render/render-article.js +146 -17
- package/dist/render/render-article.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/options.js +1 -1
- package/dist/server/options.js.map +1 -1
- package/module.json +1 -1
- package/package.json +1 -1
- package/skill/references/rules.md +2 -1
- package/src/cli/report.ts +182 -0
- package/src/cli/run.ts +122 -92
- package/src/cli/skill.ts +2 -1
- package/src/contract.ts +9 -1
- package/src/db/articles.ts +48 -8
- package/src/db/history.ts +90 -0
- package/src/db/publish-run.ts +24 -4
- package/src/index.ts +1 -1
- package/src/next/index.ts +9 -0
- package/src/next/json-ld.ts +47 -0
- package/src/next/metadata.ts +103 -0
- package/src/next/pages.tsx +16 -82
- package/src/options.ts +32 -3
- package/src/pages/accept.ts +39 -0
- package/src/pages/body.ts +2 -1
- package/src/pages/index.ts +3 -0
- package/src/pages/redirects.ts +27 -3
- package/src/proxy/index.ts +69 -3
- package/src/quality/catalog.ts +4 -1
- package/src/quality/check-article.ts +2 -1
- package/src/quality/index.ts +1 -1
- package/src/quality/link-targets.ts +6 -5
- package/src/quality/options.ts +12 -5
- package/src/quality/rules/blocks.ts +26 -1
- package/src/quality/settings.ts +17 -1
- package/src/render/article-markdown.ts +34 -0
- package/src/render/index.ts +8 -0
- package/src/render/render-article.ts +192 -23
- package/src/server/index.ts +2 -0
- package/src/server/options.ts +1 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// The metadata of the blog's pages (`<title>`, description, robots, canonical, feed link, Open Graph),
|
|
2
|
+
// built from what the caller already holds: no database read, no request scope. The ready-made pages'
|
|
3
|
+
// `generate*Metadata` read the text and call these; an app with its own page components calls them
|
|
4
|
+
// with the text it read, and can extend the result:
|
|
5
|
+
//
|
|
6
|
+
// export async function generateMetadata({ params }) {
|
|
7
|
+
// const config = getSoftureConfig();
|
|
8
|
+
// const article = await getTextBySlug(config, (await params).slug);
|
|
9
|
+
// if (article?.status !== "published" || article.kind !== "article") return {};
|
|
10
|
+
// return { ...buildArticleMetadata(config, article), keywords: [...] };
|
|
11
|
+
// }
|
|
12
|
+
import { formatMessage, getSiteUrls } from "@softure-ai/core";
|
|
13
|
+
import { getArticleDates } from "../pages/dates.js";
|
|
14
|
+
import { getArticlePath, getTermPath } from "../pages/paths.js";
|
|
15
|
+
import { getPageContext } from "./context.js";
|
|
16
|
+
function withBrand(title, context) {
|
|
17
|
+
return context.brand === null ? title : formatMessage(context.messages.pages.titleWithBrand, { title, brand: context.brand });
|
|
18
|
+
}
|
|
19
|
+
/** A page's canonical URL: seo's host and trailing-slash rule when the app lists seo, else on `appOrigin`. */
|
|
20
|
+
function getCanonicalUrl(config, path) {
|
|
21
|
+
return getSiteUrls(config).getCanonicalUrl(path);
|
|
22
|
+
}
|
|
23
|
+
/** The feed link a reader finds in `<head>` (`<link rel="alternate" type="application/rss+xml">`); a file, so no trailing-slash rule. */
|
|
24
|
+
function getFeedAlternates(config, context) {
|
|
25
|
+
return { "application/rss+xml": [{ url: `${getSiteUrls(config).origin}${context.routes.rss}`, title: withBrand(context.messages.pages.blogTitle, context) }] };
|
|
26
|
+
}
|
|
27
|
+
function getStaticMetadata(config, context, page) {
|
|
28
|
+
return {
|
|
29
|
+
title: withBrand(page.title, context),
|
|
30
|
+
description: page.description,
|
|
31
|
+
robots: { index: page.isEmpty !== true, follow: true },
|
|
32
|
+
alternates: { canonical: getCanonicalUrl(config, page.path), ...(page.hasFeed === true ? { types: getFeedAlternates(config, context) } : {}) },
|
|
33
|
+
openGraph: { type: "website", title: page.title, description: page.description, url: getCanonicalUrl(config, page.path), ...(context.brand === null ? {} : { siteName: context.brand }) },
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function getTextMetadata(config, context, text, path, options = {}) {
|
|
37
|
+
const dates = getArticleDates(text, config.timezone);
|
|
38
|
+
const url = getCanonicalUrl(config, path);
|
|
39
|
+
return {
|
|
40
|
+
title: withBrand(text.title, context),
|
|
41
|
+
description: text.description,
|
|
42
|
+
robots: { index: true, follow: true },
|
|
43
|
+
alternates: { canonical: url, ...(options.hasFeed === true ? { types: getFeedAlternates(config, context) } : {}) },
|
|
44
|
+
openGraph: {
|
|
45
|
+
type: "article",
|
|
46
|
+
title: text.title,
|
|
47
|
+
description: text.description,
|
|
48
|
+
url,
|
|
49
|
+
locale: config.locale,
|
|
50
|
+
publishedTime: dates.published,
|
|
51
|
+
modifiedTime: dates.updated ?? dates.published,
|
|
52
|
+
...(context.brand === null ? {} : { siteName: context.brand }),
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** The listing's metadata, with the feed link. */
|
|
57
|
+
export function buildBlogIndexMetadata(config, { isEmpty }) {
|
|
58
|
+
const context = getPageContext(config);
|
|
59
|
+
const copy = context.messages.pages;
|
|
60
|
+
return getStaticMetadata(config, context, { title: copy.blogTitle, description: copy.blogDescription, path: context.routes.index, isEmpty, hasFeed: true });
|
|
61
|
+
}
|
|
62
|
+
/** An article's metadata, with the feed link. The caller checks the text is a published article. */
|
|
63
|
+
export function buildArticleMetadata(config, article) {
|
|
64
|
+
const context = getPageContext(config);
|
|
65
|
+
return getTextMetadata(config, context, article, getArticlePath(context.routes, article.slug), { hasFeed: true });
|
|
66
|
+
}
|
|
67
|
+
/** The glossary index's metadata. */
|
|
68
|
+
export function buildGlossaryIndexMetadata(config, { isEmpty }) {
|
|
69
|
+
const context = getPageContext(config);
|
|
70
|
+
const copy = context.messages.glossary;
|
|
71
|
+
return getStaticMetadata(config, context, { title: copy.title, description: copy.description, path: context.routes.glossary, isEmpty });
|
|
72
|
+
}
|
|
73
|
+
/** A glossary term's metadata. The caller checks the text is a published term. */
|
|
74
|
+
export function buildTermMetadata(config, term) {
|
|
75
|
+
const context = getPageContext(config);
|
|
76
|
+
return getTextMetadata(config, context, term, getTermPath(context.routes, term.slug));
|
|
77
|
+
}
|
|
78
|
+
/** The method page's metadata. */
|
|
79
|
+
export function buildMethodMetadata(config) {
|
|
80
|
+
const context = getPageContext(config);
|
|
81
|
+
const copy = context.messages.method;
|
|
82
|
+
return getStaticMetadata(config, context, { title: copy.title, description: copy.description, path: context.routes.method });
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/next/metadata.ts"],"names":[],"mappings":"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"}
|
package/dist/next/pages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/next/pages.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/next/pages.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBvC,KAAK,UAAU,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAE7D;AAWD,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAInE;AAED,uGAAuG;AACvG,wBAAsB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAE,kBAAuB,wCAOnE;AAED,wBAAsB,uBAAuB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAK5G;AAED,oGAAoG;AACpG,wBAAsB,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,oBAAoB,wCAuBxF;AAED,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAIvE;AAED,kEAAkE;AAClE,wBAAsB,iBAAiB,yCAMtC;AAED,wBAAsB,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKzG;AAED,mHAAmH;AACnH,wBAAsB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,qBAAqB,wCAsB5E;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,CAEjD;AAED,sGAAsG;AACtG,wBAAgB,cAAc,gCAK7B"}
|
package/dist/next/pages.js
CHANGED
|
@@ -15,15 +15,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
15
15
|
// articles and terms render on their first request and are kept for `revalidate` seconds (ISR).
|
|
16
16
|
// 301 and 410 are answered before the page by `@softure-ai/blog/proxy`; anything else that is not a
|
|
17
17
|
// published text of the page's kind is a 404 here.
|
|
18
|
-
|
|
18
|
+
//
|
|
19
|
+
// An app with its own page components keeps the rest: `generate*Metadata` and `BlogArticleOgImage`
|
|
20
|
+
// mount next to its own page, and `build*Metadata` (metadata.ts) and `build*JsonLd` (json-ld.ts) take
|
|
21
|
+
// a text it already read.
|
|
22
|
+
import { getSiteUrls } from "@softure-ai/core";
|
|
19
23
|
import { getSoftureConfig } from "@softure-ai/core/next";
|
|
20
24
|
import { notFound } from "next/navigation";
|
|
21
25
|
import { getRelatedArticles } from "../discovery/related.js";
|
|
22
26
|
import { findArticlesLinkingTerm, renderPageBody } from "../pages/body.js";
|
|
23
27
|
import { getArticleDates } from "../pages/dates.js";
|
|
24
|
-
import {
|
|
25
|
-
import { getArticleCrumbs, getClusterLabel, getTermCrumbs, groupByCluster, sortTerms } from "../pages/listing.js";
|
|
26
|
-
import { getArticlePath, getTermPath } from "../pages/paths.js";
|
|
28
|
+
import { getArticleCrumbs, groupByCluster, getTermCrumbs, sortTerms } from "../pages/listing.js";
|
|
27
29
|
import { toGlossary } from "../render/glossary.js";
|
|
28
30
|
import { getBlogOptions } from "../server/options.js";
|
|
29
31
|
import { BlogArticleView } from "../ui/blog-article.js";
|
|
@@ -32,6 +34,8 @@ import { BlogListingView } from "../ui/blog-listing.js";
|
|
|
32
34
|
import { BlogMethodView } from "../ui/blog-method.js";
|
|
33
35
|
import { getPageContext } from "./context.js";
|
|
34
36
|
import { getPublishedArticles, getPublishedTerms, getTextBySlug } from "./data.js";
|
|
37
|
+
import { buildArticleJsonLd, buildGlossaryJsonLd, buildTermJsonLd, getCrumbLabels } from "./json-ld.js";
|
|
38
|
+
import { buildArticleMetadata, buildBlogIndexMetadata, buildGlossaryIndexMetadata, buildMethodMetadata, buildTermMetadata } from "./metadata.js";
|
|
35
39
|
/** No page is built ahead: the build has no database. The first request renders a slug. */
|
|
36
40
|
export function generateBlogStaticParams() {
|
|
37
41
|
return [];
|
|
@@ -39,68 +43,14 @@ export function generateBlogStaticParams() {
|
|
|
39
43
|
function isPublished(text, kind) {
|
|
40
44
|
return text !== null && text.status === "published" && text.kind === kind;
|
|
41
45
|
}
|
|
42
|
-
function getCrumbLabels(config, context) {
|
|
43
|
-
const clusters = getBlogOptions(config).clusters;
|
|
44
|
-
return {
|
|
45
|
-
blog: context.messages.pages.blogTitle,
|
|
46
|
-
glossary: context.messages.glossary.title,
|
|
47
|
-
cluster: (cluster) => getClusterLabel(cluster, clusters, config.locale),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
function getJsonLdContext(config, context) {
|
|
51
|
-
return { urls: getSiteUrls(config), routes: context.routes, locale: config.locale, timezone: config.timezone, brand: context.brand };
|
|
52
|
-
}
|
|
53
46
|
function getBodyOptions(config, context, terms) {
|
|
54
47
|
const origins = [config.appOrigin, getSiteUrls(config).origin];
|
|
55
48
|
return { glossary: toGlossary(terms), routes: context.routes, options: getBlogOptions(config), origins, messages: context.messages };
|
|
56
49
|
}
|
|
57
|
-
function withBrand(title, context) {
|
|
58
|
-
return context.brand === null ? title : formatMessage(context.messages.pages.titleWithBrand, { title, brand: context.brand });
|
|
59
|
-
}
|
|
60
|
-
/** A page's canonical URL: seo's host and trailing-slash rule when the app lists seo, else on `appOrigin`. */
|
|
61
|
-
function getCanonicalUrl(config, path) {
|
|
62
|
-
return getSiteUrls(config).getCanonicalUrl(path);
|
|
63
|
-
}
|
|
64
|
-
/** The feed link a reader finds in `<head>` (`<link rel="alternate" type="application/rss+xml">`); a file, so no trailing-slash rule. */
|
|
65
|
-
function getFeedAlternates(config, context) {
|
|
66
|
-
return { "application/rss+xml": [{ url: `${getSiteUrls(config).origin}${context.routes.rss}`, title: withBrand(context.messages.pages.blogTitle, context) }] };
|
|
67
|
-
}
|
|
68
|
-
/** Metadata of a page with a fixed path; an empty listing stays out of the index (thin content). */
|
|
69
|
-
function getStaticMetadata(config, context, page) {
|
|
70
|
-
return {
|
|
71
|
-
title: withBrand(page.title, context),
|
|
72
|
-
description: page.description,
|
|
73
|
-
robots: { index: page.isEmpty !== true, follow: true },
|
|
74
|
-
alternates: { canonical: getCanonicalUrl(config, page.path), ...(page.hasFeed === true ? { types: getFeedAlternates(config, context) } : {}) },
|
|
75
|
-
openGraph: { type: "website", title: page.title, description: page.description, url: getCanonicalUrl(config, page.path), ...(context.brand === null ? {} : { siteName: context.brand }) },
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
function getTextMetadata(config, context, text, path, options = {}) {
|
|
79
|
-
const dates = getArticleDates(text, config.timezone);
|
|
80
|
-
const url = getCanonicalUrl(config, path);
|
|
81
|
-
return {
|
|
82
|
-
title: withBrand(text.title, context),
|
|
83
|
-
description: text.description,
|
|
84
|
-
robots: { index: true, follow: true },
|
|
85
|
-
alternates: { canonical: url, ...(options.hasFeed === true ? { types: getFeedAlternates(config, context) } : {}) },
|
|
86
|
-
openGraph: {
|
|
87
|
-
type: "article",
|
|
88
|
-
title: text.title,
|
|
89
|
-
description: text.description,
|
|
90
|
-
url,
|
|
91
|
-
locale: config.locale,
|
|
92
|
-
publishedTime: dates.published,
|
|
93
|
-
modifiedTime: dates.updated ?? dates.published,
|
|
94
|
-
...(context.brand === null ? {} : { siteName: context.brand }),
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
50
|
export async function generateBlogIndexMetadata() {
|
|
99
51
|
const config = getSoftureConfig();
|
|
100
|
-
const context = getPageContext(config);
|
|
101
52
|
const articles = await getPublishedArticles(config);
|
|
102
|
-
|
|
103
|
-
return getStaticMetadata(config, context, { title: copy.blogTitle, description: copy.blogDescription, path: context.routes.index, isEmpty: articles.length === 0, hasFeed: true });
|
|
53
|
+
return buildBlogIndexMetadata(config, { isEmpty: articles.length === 0 });
|
|
104
54
|
}
|
|
105
55
|
/** The listing: cards grouped by cluster, the pillar first. Mount with `dynamic = "force-dynamic"`. */
|
|
106
56
|
export async function BlogIndexPage({ cta } = {}) {
|
|
@@ -115,10 +65,7 @@ export async function generateArticleMetadata({ params }) {
|
|
|
115
65
|
const config = getSoftureConfig();
|
|
116
66
|
const { slug } = await params;
|
|
117
67
|
const article = await getTextBySlug(config, slug);
|
|
118
|
-
|
|
119
|
-
return {};
|
|
120
|
-
const context = getPageContext(config);
|
|
121
|
-
return getTextMetadata(config, context, article, getArticlePath(context.routes, article.slug), { hasFeed: true });
|
|
68
|
+
return isPublished(article, "article") ? buildArticleMetadata(config, article) : {};
|
|
122
69
|
}
|
|
123
70
|
/** An article with "read next" under it. Mount with `revalidate` and `generateBlogStaticParams`. */
|
|
124
71
|
export async function BlogArticlePage({ params, cta, afterArticle }) {
|
|
@@ -131,32 +78,27 @@ export async function BlogArticlePage({ params, cta, afterArticle }) {
|
|
|
131
78
|
const [terms, published] = await Promise.all([getPublishedTerms(config), getPublishedArticles(config)]);
|
|
132
79
|
const body = renderPageBody(article, getBodyOptions(config, context, terms));
|
|
133
80
|
const crumbs = getArticleCrumbs(article, context.routes, getCrumbLabels(config, context));
|
|
134
|
-
const jsonLd =
|
|
81
|
+
const jsonLd = buildArticleJsonLd(config, article);
|
|
135
82
|
return (_jsx(BlogArticleView, { context: context, article: article, dates: getArticleDates(article, config.timezone), body: body, crumbs: crumbs, jsonLd: jsonLd, cta: cta, afterArticle: afterArticle, related: getRelatedArticles(article, published) }));
|
|
136
83
|
}
|
|
137
84
|
export async function generateGlossaryIndexMetadata() {
|
|
138
85
|
const config = getSoftureConfig();
|
|
139
|
-
const context = getPageContext(config);
|
|
140
86
|
const terms = await getPublishedTerms(config);
|
|
141
|
-
|
|
142
|
-
return getStaticMetadata(config, context, { title: copy.title, description: copy.description, path: context.routes.glossary, isEmpty: terms.length === 0 });
|
|
87
|
+
return buildGlossaryIndexMetadata(config, { isEmpty: terms.length === 0 });
|
|
143
88
|
}
|
|
144
89
|
/** The glossary index. Mount with `dynamic = "force-dynamic"`. */
|
|
145
90
|
export async function GlossaryIndexPage() {
|
|
146
91
|
const config = getSoftureConfig();
|
|
147
92
|
const context = getPageContext(config);
|
|
148
93
|
const terms = sortTerms(await getPublishedTerms(config), config.locale);
|
|
149
|
-
const jsonLd =
|
|
94
|
+
const jsonLd = buildGlossaryJsonLd(config, terms);
|
|
150
95
|
return _jsx(GlossaryIndexView, { context: context, terms: terms, jsonLd: jsonLd });
|
|
151
96
|
}
|
|
152
97
|
export async function generateTermMetadata({ params }) {
|
|
153
98
|
const config = getSoftureConfig();
|
|
154
99
|
const { slug } = await params;
|
|
155
100
|
const term = await getTextBySlug(config, slug);
|
|
156
|
-
|
|
157
|
-
return {};
|
|
158
|
-
const context = getPageContext(config);
|
|
159
|
-
return getTextMetadata(config, context, term, getTermPath(context.routes, term.slug));
|
|
101
|
+
return isPublished(term, "term") ? buildTermMetadata(config, term) : {};
|
|
160
102
|
}
|
|
161
103
|
/** A glossary term with the articles that expand on it. Mount with `revalidate` and `generateBlogStaticParams`. */
|
|
162
104
|
export async function GlossaryTermPage({ params, cta }) {
|
|
@@ -169,14 +111,11 @@ export async function GlossaryTermPage({ params, cta }) {
|
|
|
169
111
|
const [terms, articles] = await Promise.all([getPublishedTerms(config), getPublishedArticles(config)]);
|
|
170
112
|
const bodyOptions = getBodyOptions(config, context, terms);
|
|
171
113
|
const crumbs = getTermCrumbs(term, context.routes, getCrumbLabels(config, context));
|
|
172
|
-
const jsonLd =
|
|
114
|
+
const jsonLd = buildTermJsonLd(config, term);
|
|
173
115
|
return (_jsx(GlossaryTermView, { context: context, term: term, dates: getArticleDates(term, config.timezone), body: renderPageBody(term, bodyOptions), crumbs: crumbs, jsonLd: jsonLd, articles: findArticlesLinkingTerm(articles, term.slug, bodyOptions), cta: cta }));
|
|
174
116
|
}
|
|
175
117
|
export function generateMethodMetadata() {
|
|
176
|
-
|
|
177
|
-
const context = getPageContext(config);
|
|
178
|
-
const copy = context.messages.method;
|
|
179
|
-
return getStaticMetadata(config, context, { title: copy.title, description: copy.description, path: context.routes.method });
|
|
118
|
+
return buildMethodMetadata(getSoftureConfig());
|
|
180
119
|
}
|
|
181
120
|
/** "How our texts are made". Mount it with `blog({ methodPage: true })`; without that it is a 404. */
|
|
182
121
|
export function BlogMethodPage() {
|
package/dist/next/pages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/next/pages.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/next/pages.tsx"],"names":[],"mappings":";AAAA,uFAAuF;AACvF,EAAE;AACF,wJAAwJ;AACxJ,+EAA+E;AAC/E,0MAA0M;AAC1M,sEAAsE;AACtE,iGAAiG;AACjG,oHAAoH;AACpH,kHAAkH;AAClH,uFAAuF;AACvF,EAAE;AACF,kGAAkG;AAClG,iGAAiG;AACjG,gGAAgG;AAChG,oGAAoG;AACpG,mDAAmD;AACnD,EAAE;AACF,mGAAmG;AACnG,sGAAsG;AACtG,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAA8B,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAsBjJ,2FAA2F;AAC3F,MAAM,UAAU,wBAAwB;IACtC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,IAAwB,EAAE,IAAyB;IACtE,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,MAAqB,EAAE,OAAwB,EAAE,KAA6B;IACpG,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACvI,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,sBAAsB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAE,GAAG,KAAyB,EAAE;IAClE,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7F,OAAO,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;AAC7H,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAAE,MAAM,EAAmC;IACvF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAwB;IACvF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;QAAE,QAAQ,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,cAAc,CAAY,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,CACL,KAAC,eAAe,IACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAChD,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,GAC/C,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B;IACjD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,0BAA0B,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,OAAO,KAAC,iBAAiB,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAE,MAAM,EAAmC;IACpF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,mHAAmH;AACnH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAyB;IAC3E,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,QAAQ,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO,CACL,KAAC,gBAAgB,IACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAC7C,IAAI,EAAE,cAAc,CAAY,IAAI,EAAE,WAAW,CAAC,EAClD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EACnE,GAAG,EAAE,GAAG,GACR,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI;QAAE,QAAQ,EAAE,CAAC;IAC5C,OAAO,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,GAAI,CAAC;AAC9C,CAAC"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import type {
|
|
2
|
+
import type { GonePageRenderInput } from "./pages/redirects.js";
|
|
3
|
+
import { type BlockPlugin } from "./render/render-article.js";
|
|
3
4
|
/** Where the app keeps its article files unless a command names a path. */
|
|
4
5
|
export declare const DEFAULT_CONTENT_DIR = "content/blog";
|
|
5
6
|
/** The frontmatter keys of the module; the app's `fields` may not reuse them. */
|
|
@@ -39,7 +40,7 @@ export declare const OG_FONT_WEIGHTS: readonly [100, 200, 300, 400, 500, 600, 70
|
|
|
39
40
|
export type OgFontWeight = (typeof OG_FONT_WEIGHTS)[number];
|
|
40
41
|
declare const ogFontSchema: z.ZodObject<{
|
|
41
42
|
name: z.ZodString;
|
|
42
|
-
weight: z.ZodDefault<z.ZodCustom<200 | 600 | 700 |
|
|
43
|
+
weight: z.ZodDefault<z.ZodCustom<200 | 600 | 700 | 100 | 500 | 300 | 400 | 800 | 900, 200 | 600 | 700 | 100 | 500 | 300 | 400 | 800 | 900>>;
|
|
43
44
|
style: z.ZodDefault<z.ZodEnum<{
|
|
44
45
|
normal: "normal";
|
|
45
46
|
italic: "italic";
|
|
@@ -66,7 +67,7 @@ export declare const blogOptionsSchema: z.ZodObject<{
|
|
|
66
67
|
}, z.core.$strict>>;
|
|
67
68
|
fonts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
68
69
|
name: z.ZodString;
|
|
69
|
-
weight: z.ZodDefault<z.ZodCustom<200 | 600 | 700 |
|
|
70
|
+
weight: z.ZodDefault<z.ZodCustom<200 | 600 | 700 | 100 | 500 | 300 | 400 | 800 | 900, 200 | 600 | 700 | 100 | 500 | 300 | 400 | 800 | 900>>;
|
|
70
71
|
style: z.ZodDefault<z.ZodEnum<{
|
|
71
72
|
normal: "normal";
|
|
72
73
|
italic: "italic";
|
|
@@ -85,10 +86,25 @@ export declare const blogOptionsSchema: z.ZodObject<{
|
|
|
85
86
|
}, z.core.$strict>>>;
|
|
86
87
|
blocks: z.ZodDefault<z.ZodArray<z.ZodCustom<BlockPlugin<unknown>, BlockPlugin<unknown>>>>;
|
|
87
88
|
siteHosts: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
89
|
+
externalLinkMarker: z.ZodDefault<z.ZodEnum<{
|
|
90
|
+
"icon-and-text": "icon-and-text";
|
|
91
|
+
text: "text";
|
|
92
|
+
none: "none";
|
|
93
|
+
}>>;
|
|
88
94
|
images: z.ZodOptional<z.ZodObject<{
|
|
89
95
|
hosts: z.ZodDefault<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
90
96
|
dimensions: z.ZodCustom<(src: string) => import("./render/images.js").ImageDimensions | null, (src: string) => import("./render/images.js").ImageDimensions | null>;
|
|
91
97
|
}, z.core.$strict>>;
|
|
98
|
+
gonePage: z.ZodDefault<z.ZodObject<{
|
|
99
|
+
links: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
100
|
+
href: z.ZodString;
|
|
101
|
+
label: z.ZodObject<{
|
|
102
|
+
en: z.ZodString;
|
|
103
|
+
pl: z.ZodOptional<z.ZodString>;
|
|
104
|
+
}, z.core.$strict>;
|
|
105
|
+
}, z.core.$strict>>>;
|
|
106
|
+
render: z.ZodOptional<z.ZodCustom<(input: GonePageRenderInput) => string, (input: GonePageRenderInput) => string>>;
|
|
107
|
+
}, z.core.$strict>>;
|
|
92
108
|
revalidateSeconds: z.ZodDefault<z.ZodNumber>;
|
|
93
109
|
quality: z.ZodDefault<z.ZodType<false | {
|
|
94
110
|
language: "en" | "pl";
|
|
@@ -136,8 +152,8 @@ export declare const blogOptionsSchema: z.ZodObject<{
|
|
|
136
152
|
};
|
|
137
153
|
severity: Record<string, "error" | "warning" | "off">;
|
|
138
154
|
paths: {
|
|
139
|
-
articles
|
|
140
|
-
terms
|
|
155
|
+
articles?: string | undefined;
|
|
156
|
+
terms?: string | undefined;
|
|
141
157
|
};
|
|
142
158
|
ownOrigins: string[];
|
|
143
159
|
privateRouteSegments: string[];
|
|
@@ -244,8 +260,8 @@ export declare const blogOptionsSchema: z.ZodObject<{
|
|
|
244
260
|
};
|
|
245
261
|
severity: Record<string, "error" | "warning" | "off">;
|
|
246
262
|
paths: {
|
|
247
|
-
articles
|
|
248
|
-
terms
|
|
263
|
+
articles?: string | undefined;
|
|
264
|
+
terms?: string | undefined;
|
|
249
265
|
};
|
|
250
266
|
ownOrigins: string[];
|
|
251
267
|
privateRouteSegments: string[];
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAErF,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,+JAenB,CAAC;AAEX,iEAAiE;AACjE,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS;YAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;YAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAErJ;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,qBAAqB,CAAC;CAC/D;AAoBD,wGAAwG;AACxG,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,uFAAuF;AACvF,QAAA,MAAM,mBAAmB;;;kBAGvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMjE,gFAAgF;AAChF,eAAO,MAAM,eAAe,wDAAyD,CAAC;AAEtF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAc5D,QAAA,MAAM,YAAY;;;;;;;;kBAchB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAyCzD,uGAAuG;AACvG,QAAA,MAAM,kBAAkB;;;kBAYtB,CAAC;AA8BH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AASnE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAvBH,mBAAmB,KAAK,MAAM,UAA9B,mBAAmB,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsErD,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/options.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// The options an app passes to `blog({ ... })` in softure.config.ts, parsed at startup.
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { qualitySettingSchema } from "./quality/options.js";
|
|
4
|
+
import { EXTERNAL_LINK_MARKERS } from "./render/render-article.js";
|
|
4
5
|
/** Where the app keeps its article files unless a command names a path. */
|
|
5
6
|
export const DEFAULT_CONTENT_DIR = "content/blog";
|
|
6
7
|
/** The frontmatter keys of the module; the app's `fields` may not reuse them. */
|
|
@@ -31,7 +32,9 @@ function isBlockPlugin(value) {
|
|
|
31
32
|
if (typeof value !== "object" || value === null)
|
|
32
33
|
return false;
|
|
33
34
|
const candidate = value;
|
|
34
|
-
return typeof candidate.type === "string" && KEBAB.test(candidate.type) && typeof candidate.render === "function"
|
|
35
|
+
return (typeof candidate.type === "string" && KEBAB.test(candidate.type) && typeof candidate.render === "function" &&
|
|
36
|
+
(candidate.syntax === undefined || candidate.syntax === "fence" || candidate.syntax === "directive") &&
|
|
37
|
+
(candidate.markdown === undefined || typeof candidate.markdown === "function"));
|
|
35
38
|
}
|
|
36
39
|
/** How long the pages cache their reads by default, in seconds; the app's `revalidate` should match. */
|
|
37
40
|
export const DEFAULT_REVALIDATE_SECONDS = 300;
|
|
@@ -123,6 +126,21 @@ const skillSectionSchema = z.strictObject({
|
|
|
123
126
|
.min(1)
|
|
124
127
|
.refine((body) => !hasTopHeading(body), "must not hold a # or ## heading; use ### and deeper (the title is the section's ## heading)"),
|
|
125
128
|
});
|
|
129
|
+
/** A 410 link: a path from the site root or an https URL, never another scheme. */
|
|
130
|
+
const goneHrefSchema = z
|
|
131
|
+
.string()
|
|
132
|
+
.trim()
|
|
133
|
+
.refine((href) => (href.startsWith("/") && !href.startsWith("//")) || (href.startsWith("https://") && URL.canParse(href)), "must be a path from the site root or an https URL, e.g. /calculator");
|
|
134
|
+
const gonePageSchema = z.strictObject({
|
|
135
|
+
/** Further ways on, listed under the link to the listing. */
|
|
136
|
+
links: z.array(z.strictObject({ href: goneHrefSchema, label: localizedTextSchema })).max(5).default([]),
|
|
137
|
+
/**
|
|
138
|
+
* `(input) => html`: the whole body of the 410, written by the app (its own HTML, trusted like a
|
|
139
|
+
* block plugin's; the proxy still answers 410 with `text/html`). `input.links` holds the labels in
|
|
140
|
+
* the app's locale.
|
|
141
|
+
*/
|
|
142
|
+
render: z.custom((value) => typeof value === "function", "must be a function: (input) => html").optional(),
|
|
143
|
+
});
|
|
126
144
|
const skillSchema = z.strictObject({
|
|
127
145
|
/** The app's own sections (its numbers, block plugins, fields), written to `references/app.md` of the skill. */
|
|
128
146
|
sections: z.array(skillSectionSchema).superRefine((sections, ctx) => {
|
|
@@ -162,11 +180,18 @@ export const blogOptionsSchema = z
|
|
|
162
180
|
blocks: z.array(z.custom(isBlockPlugin, "must be a block plugin: { type: \"chart\", render(block) }")).default([]),
|
|
163
181
|
/** Hosts besides those of `appOrigin` and the canonical site origin (`getSiteUrls`) whose links are not marked external (subdomains included). */
|
|
164
182
|
siteHosts: z.array(z.string().regex(HOSTNAME, "must be a host name, e.g. example.com")).default([]),
|
|
183
|
+
/**
|
|
184
|
+
* What the pages append to an external link (`renderArticle({ externalMarker })`): the arrow and a
|
|
185
|
+
* visually hidden "opens in a new tab", the hidden words only, or nothing.
|
|
186
|
+
*/
|
|
187
|
+
externalLinkMarker: z.enum(EXTERNAL_LINK_MARKERS).default("icon-and-text"),
|
|
165
188
|
/**
|
|
166
189
|
* Which images article bodies may show (`renderArticle({ images })`), used by the pages and the
|
|
167
190
|
* quality gate; without it every image renders as its alt text and the gate refuses it.
|
|
168
191
|
*/
|
|
169
192
|
images: imagePolicySchema.optional(),
|
|
193
|
+
/** The page a withdrawn text answers with (410): extra links, or the app's own body. */
|
|
194
|
+
gonePage: gonePageSchema.default({ links: [] }),
|
|
170
195
|
/** How long the listing and glossary cache their reads; keep it equal to the pages' `revalidate`. */
|
|
171
196
|
revalidateSeconds: z.number().int().min(1).default(DEFAULT_REVALIDATE_SECONDS),
|
|
172
197
|
/** The text quality gate (`softure-blog check`, and every publish); `false` turns it off. */
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAoB,MAAM,4BAA4B,CAAC;AAErF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAElD,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,OAAO;IACP,aAAa;IACb,SAAS;IACT,QAAQ;IACR,eAAe;IACf,cAAc;IACd,SAAS;IACT,KAAK;IACL,OAAO;CACC,CAAC;AAiBX,MAAM,KAAK,GAAG,0BAA0B,CAAC;AAEzC,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAiD,CAAC;IACpE,OAAO,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC;AACtH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAmF,CAAC;IACtG,OAAO,CACL,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU;QAC1G,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC;QACpG,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAC/E,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,uFAAuF;AACvF,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAIH,MAAM,SAAS,GAAG,mBAAmB,CAAC;AACtC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,8CAA8C,CAAC,CAAC;AAChG,MAAM,QAAQ,GAAG,gFAAgF,CAAC;AAElG,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAItF,MAAM,KAAK,GAAG,WAAW,CAAC;AAE1B,2FAA2F;AAC3F,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzD,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IAClC,oGAAoG;IACpG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,CAAC;SACN,MAAM,CAAe,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,kDAAkD,CAAC;SACvI,OAAO,CAAC,GAAG,CAAC;IACf,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrD,iGAAiG;IACjG,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,YAAY,EAAE,gEAAgE,CAAC;SACtF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,iEAAiE,CAAC;CACjJ,CAAC,CAAC;AAIH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,+FAA+F;IAC/F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACtC,iGAAiG;IACjG,MAAM,EAAE,CAAC;SACN,YAAY,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;SACxH,QAAQ,EAAE;IACb;;;OAGG;IACH,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,YAAY,CAAC;SACnB,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;SACrC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,4DAA4D,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;YAC/I,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,+EAA+E;AAC/E,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5F,IAAI,MAAM,KAAK,IAAI;YAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;aAClF,IAAI,KAAK,KAAK,IAAI,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uGAAuG;AACvG,MAAM,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC;IACxC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC/D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,6FAA6F,CAAC;CACzI,CAAC,CAAC;AAEH,mFAAmF;AACnF,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,qEAAqE,CAAC,CAAC;AAEpM,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IACpC,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvG;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAyC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,UAAU,EAAE,qCAAqC,CAAC,CAAC,QAAQ,EAAE;CACnJ,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;IACjC,gHAAgH;IAChH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;QAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,KAAK,mCAAmC,EAAE,CAAC,CAAC;YACrJ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;AAIH,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IACvC,+FAA+F;IAC/F,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,2CAA2C,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9G,gFAAgF;IAChF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAmC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,UAAU,EAAE,0DAA0D,CAAC;CAC3J,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,YAAY,CAAC;IACZ,qEAAqE;IACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACjE;;;OAGG;IACH,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7G,MAAM,EAAE,CAAC,CAAC,MAAM,CAAmB,cAAc,EAAE,mEAAmE,CAAC,CAAC,QAAQ,EAAE;IAClI,6FAA6F;IAC7F,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,sGAAsG;IACtG,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,oFAAoF;IACpF,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,yFAAyF;IACzF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,2CAA2C,CAAC,EAAE,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzH,kGAAkG;IAClG,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAc,aAAa,EAAE,4DAA4D,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/H,kJAAkJ;IAClJ,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnG;;;OAGG;IACH,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IAC1E;;;OAGG;IACH,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACpC,wFAAwF;IACxF,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC/C,qGAAqG;IACrG,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC9E,6FAA6F;IAC7F,OAAO,EAAE,oBAAoB;IAC7B,6EAA6E;IAC7E,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;CAC7C,CAAC;KACD,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;IAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3D,IAAK,gBAAsC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,sCAAsC,EAAE,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether an `Accept` header asks for Markdown rather than HTML. `text/markdown` must be named: `*\/*`
|
|
3
|
+
* (curl, most crawlers, browser prefetches) matches Markdown as well as HTML, and they want the page.
|
|
4
|
+
* A tie goes to Markdown: a client that names it next to HTML with the same weight is an agent.
|
|
5
|
+
*/
|
|
6
|
+
export declare function prefersMarkdown(accept: string | null): boolean;
|
|
7
|
+
//# sourceMappingURL=accept.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accept.d.ts","sourceRoot":"","sources":["../../src/pages/accept.ts"],"names":[],"mappings":"AA2BA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAM9D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Content negotiation for the Markdown representation: which requests ask for Markdown.
|
|
2
|
+
function parseAccept(accept) {
|
|
3
|
+
return accept.split(",").flatMap((part) => {
|
|
4
|
+
const [range = "", ...params] = part.trim().toLowerCase().split(";");
|
|
5
|
+
const [type, subtype] = range.trim().split("/");
|
|
6
|
+
if (type === undefined || type === "" || subtype === undefined || subtype === "")
|
|
7
|
+
return [];
|
|
8
|
+
const qParam = params.map((param) => param.trim()).find((param) => param.startsWith("q="));
|
|
9
|
+
const q = qParam === undefined ? 1 : Number(qParam.slice(2));
|
|
10
|
+
return Number.isFinite(q) ? [{ type, subtype, q }] : [];
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/** The weight of a type by the most specific matching range (RFC 9110 §12.5.1); 0 without a match. */
|
|
14
|
+
function getQuality(ranges, type, subtype) {
|
|
15
|
+
const exact = ranges.find((range) => range.type === type && range.subtype === subtype);
|
|
16
|
+
const group = ranges.find((range) => range.type === type && range.subtype === "*");
|
|
17
|
+
const any = ranges.find((range) => range.type === "*" && range.subtype === "*");
|
|
18
|
+
return (exact ?? group ?? any)?.q ?? 0;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Whether an `Accept` header asks for Markdown rather than HTML. `text/markdown` must be named: `*\/*`
|
|
22
|
+
* (curl, most crawlers, browser prefetches) matches Markdown as well as HTML, and they want the page.
|
|
23
|
+
* A tie goes to Markdown: a client that names it next to HTML with the same weight is an agent.
|
|
24
|
+
*/
|
|
25
|
+
export function prefersMarkdown(accept) {
|
|
26
|
+
if (accept === null)
|
|
27
|
+
return false;
|
|
28
|
+
const ranges = parseAccept(accept);
|
|
29
|
+
const markdown = ranges.find((range) => range.type === "text" && range.subtype === "markdown");
|
|
30
|
+
if (markdown === undefined || markdown.q <= 0)
|
|
31
|
+
return false;
|
|
32
|
+
return markdown.q >= getQuality(ranges, "text", "html");
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=accept.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../src/pages/accept.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAQxF,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,SAAS,UAAU,CAAC,MAA6B,EAAE,IAAY,EAAE,OAAe;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC;IAC/F,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,QAAQ,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/pages/body.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { type BlogRoutes } from "./paths.js";
|
|
|
7
7
|
export interface RenderPageBodyOptions {
|
|
8
8
|
readonly glossary: readonly GlossaryTerm[];
|
|
9
9
|
readonly routes: BlogRoutes;
|
|
10
|
-
readonly options: Pick<BlogOptions, "blocks" | "images" | "siteHosts"
|
|
10
|
+
readonly options: Pick<BlogOptions, "blocks" | "images" | "siteHosts"> & Partial<Pick<BlogOptions, "externalLinkMarker">>;
|
|
11
11
|
/** The app's own origins (`appOrigin` and the canonical site origin); their hosts are the site's (links to them are not external). */
|
|
12
12
|
readonly origins: readonly string[];
|
|
13
13
|
readonly messages: BlogMessages;
|
package/dist/pages/body.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/pages/body.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAmC,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/pages/body.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAmC,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC1H,sIAAsI;IACtI,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,GAAG,eAAe,CAAC,KAAK,CAAC,CAcvH;AAED,iHAAiH;AACjH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,WAAW,EAAE,CAEvI"}
|
package/dist/pages/body.js
CHANGED
|
@@ -11,6 +11,7 @@ export function renderPageBody(text, input) {
|
|
|
11
11
|
// app's plugins return.
|
|
12
12
|
blocks: input.options.blocks,
|
|
13
13
|
article: { currentAsOf: text.currentAsOf, fields: text.fields },
|
|
14
|
+
...(input.options.externalLinkMarker === undefined ? {} : { externalMarker: input.options.externalLinkMarker }),
|
|
14
15
|
messages: input.messages.render,
|
|
15
16
|
});
|
|
16
17
|
}
|
package/dist/pages/body.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../src/pages/body.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAA0C,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAW1D,MAAM,UAAU,cAAc,CAAkB,IAAiB,EAAE,KAA4B;IAC7F,OAAO,aAAa,CAAQ,IAAI,CAAC,YAAY,EAAE;QAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QACnD,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACnG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/E,iGAAiG;QACjG,wBAAwB;QACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAuC;QAC7D,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QAC/D,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;KAChC,CAAC,CAAC;AACL,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,uBAAuB,CAAC,QAAgC,EAAE,QAAgB,EAAE,KAA4B;IACtH,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrG,CAAC"}
|
|
1
|
+
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../src/pages/body.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAA0C,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAW1D,MAAM,UAAU,cAAc,CAAkB,IAAiB,EAAE,KAA4B;IAC7F,OAAO,aAAa,CAAQ,IAAI,CAAC,YAAY,EAAE;QAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QACnD,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACnG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/E,iGAAiG;QACjG,wBAAwB;QACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAuC;QAC7D,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QAC/D,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/G,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;KAChC,CAAC,CAAC;AACL,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,uBAAuB,CAAC,QAAgC,EAAE,QAAgB,EAAE,KAA4B;IACtH,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrG,CAAC"}
|
package/dist/pages/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { formatDay, getArticleDates, getDayInZone, type ArticleDates } from "./d
|
|
|
3
3
|
export { getArticleImageUrl, getArticleJsonLd, getGlossaryJsonLd, getTermJsonLd, serializeJsonLd, type JsonLdContext } from "./json-ld.js";
|
|
4
4
|
export { getArticleCrumbs, getClusterAnchor, getClusterLabel, getTermCrumbs, groupByCluster, sortTerms, splitClusterLead, type ClusterGroup, type Crumb, type CrumbLabels, } from "./listing.js";
|
|
5
5
|
export { getArticlePath, getReservedSlugs, getTermPath, getTextPath, matchBlogPath, normalizeRoute, type BlogPathKind, type BlogPathMatch, type BlogRoutes, } from "./paths.js";
|
|
6
|
-
export { buildGonePage, createCachedBlogPathDecider, decideBlogPath, type BlogPathDecision, type BlogPathLookup, type CachedDeciderOptions, type GonePageCopy, } from "./redirects.js";
|
|
6
|
+
export { buildGonePage, createCachedBlogPathDecider, decideBlogPath, type BlogPathDecision, type BlogPathLookup, type CachedDeciderOptions, type GonePageCopy, type GonePageLink, type GonePageOptions, type GonePageRenderInput, } from "./redirects.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3I,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3I,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC"}
|
package/dist/pages/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,yGAAyG;AACzG,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAA8B,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,cAAc,CAAC;AAC3I,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,GAIjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,GAIf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,yGAAyG;AACzG,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAA8B,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,cAAc,CAAC;AAC3I,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,GAIjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,GAIf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,cAAc,GAQf,MAAM,gBAAgB,CAAC"}
|