sourcey 3.6.4 → 3.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -5
- package/dist/adapters/shared.js +1 -1
- package/dist/astro/index.d.ts +89 -0
- package/dist/astro/index.d.ts.map +1 -0
- package/dist/astro/index.js +299 -0
- package/dist/cli.js +8 -0
- package/dist/client/reader-controls.js +81 -0
- package/dist/client/reader.d.ts +5 -0
- package/dist/client/reader.d.ts.map +1 -0
- package/dist/client/reader.js +5 -0
- package/dist/client/tabs.js +144 -95
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/App.js +1 -1
- package/dist/components/layout/Head.d.ts.map +1 -1
- package/dist/components/layout/Head.js +6 -4
- package/dist/components/layout/Page.d.ts.map +1 -1
- package/dist/components/layout/Page.js +20 -14
- package/dist/components/layout/Reader.d.ts +5 -0
- package/dist/components/layout/Reader.d.ts.map +1 -0
- package/dist/components/layout/Reader.js +64 -0
- package/dist/components/layout/SearchDialog.d.ts +2 -0
- package/dist/components/layout/SearchDialog.d.ts.map +1 -0
- package/dist/components/layout/SearchDialog.js +4 -0
- package/dist/components/openapi/Operation.d.ts.map +1 -1
- package/dist/components/openapi/Operation.js +2 -2
- package/dist/components/openapi/Tags.js +1 -1
- package/dist/config.d.ts +56 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +18 -10
- package/dist/core/doxygen-loader.js +1 -1
- package/dist/core/loader.js +2 -2
- package/dist/core/markdown-loader.d.ts +2 -0
- package/dist/core/markdown-loader.d.ts.map +1 -1
- package/dist/core/markdown-loader.js +1 -0
- package/dist/core/navigation.js +1 -1
- package/dist/core/parser.js +1 -1
- package/dist/dev-server.d.ts.map +1 -1
- package/dist/dev-server.js +3 -4
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -112
- package/dist/init.js +4 -4
- package/dist/renderer/html-builder.d.ts.map +1 -1
- package/dist/renderer/html-builder.js +6 -27
- package/dist/renderer/static-files.d.ts +6 -0
- package/dist/renderer/static-files.d.ts.map +1 -0
- package/dist/renderer/static-files.js +78 -0
- package/dist/site.d.ts +38 -0
- package/dist/site.d.ts.map +1 -0
- package/dist/site.js +159 -0
- package/dist/themes/assets.d.ts +8 -0
- package/dist/themes/assets.d.ts.map +1 -0
- package/dist/themes/assets.js +16 -0
- package/dist/themes/default/sourcey.css +305 -60
- package/dist/themes/reader/sourcey.css +1024 -0
- package/dist/themes/registry.d.ts +20 -0
- package/dist/themes/registry.d.ts.map +1 -0
- package/dist/themes/registry.js +8 -0
- package/dist/utils/server-warnings.d.ts +4 -0
- package/dist/utils/server-warnings.d.ts.map +1 -0
- package/dist/utils/server-warnings.js +41 -0
- package/dist/vite-plugin.d.ts.map +1 -1
- package/dist/vite-plugin.js +1 -53
- package/package.json +9 -4
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "preact/jsx-runtime";
|
|
2
|
+
import { useContext } from "preact/hooks";
|
|
3
|
+
import { NavigationContext, OptionsContext, PageContext, SiteContext, } from "../../renderer/context.js";
|
|
4
|
+
import { SearchDialog } from "./SearchDialog.js";
|
|
5
|
+
import { safeUrl } from "../../utils/html.js";
|
|
6
|
+
function Icon({ name = "arrow", size = 20 }) {
|
|
7
|
+
const paths = {
|
|
8
|
+
arrow: ["M4 12h15m-6-6 6 6-6 6"],
|
|
9
|
+
chevron: ["m9 5 7 7-7 7"],
|
|
10
|
+
northeast: ["M6 18 18 6M6 6h12v12"],
|
|
11
|
+
menu: ["M4 7h16M4 12h16M4 17h16"],
|
|
12
|
+
search: ["m21 21-5-5", "M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0"],
|
|
13
|
+
layers: ["m12 3 10 6-10 6L2 9l10-6Zm-10 10 10 6 10-6m-20 4 10 6 10-6"],
|
|
14
|
+
copy: ["M9 9h12v12H9zM15 5V2H2v13h3"],
|
|
15
|
+
code: ["m8 6-6 6 6 6m8-12 6 6-6 6m-3-15-2 18"],
|
|
16
|
+
};
|
|
17
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true", children: (paths[name] ?? paths.arrow).map((path) => (_jsx("path", { d: path }))) }));
|
|
18
|
+
}
|
|
19
|
+
function Link({ link, children, className, }) {
|
|
20
|
+
return (_jsx("a", { href: safeUrl(link.href) ?? undefined, class: className, children: children ?? link.label }));
|
|
21
|
+
}
|
|
22
|
+
export function ReaderPage({ children }) {
|
|
23
|
+
const site = useContext(SiteContext);
|
|
24
|
+
const nav = useContext(NavigationContext);
|
|
25
|
+
const page = useContext(PageContext);
|
|
26
|
+
const { assetBase: base } = useContext(OptionsContext);
|
|
27
|
+
const settings = site.theme.reader ?? {};
|
|
28
|
+
const document = settings.document;
|
|
29
|
+
const tab = nav.tabs.find((item) => item.slug === nav.activeTabSlug);
|
|
30
|
+
const items = tab?.groups.flatMap((group) => group.items) ?? [];
|
|
31
|
+
const index = items.findIndex((item) => item.id === nav.activePageSlug);
|
|
32
|
+
const previous = items[index - 1];
|
|
33
|
+
const next = items[index + 1];
|
|
34
|
+
const label = document?.label ?? tab?.label ?? site.name;
|
|
35
|
+
const edition = [label, document?.version].filter(Boolean).join(" ");
|
|
36
|
+
const href = (path) => `${base}${path}` || "./";
|
|
37
|
+
const activeHref = href(items[index]?.href ?? tab?.href ?? "");
|
|
38
|
+
const home = safeUrl(site.logo?.href ?? href(nav.tabs[0]?.href ?? "")) ?? "/";
|
|
39
|
+
const searchHref = settings.searchHref ? safeUrl(settings.searchHref) : null;
|
|
40
|
+
const before = previous
|
|
41
|
+
? { label: previous.label, href: href(previous.href), description: "← Previous" }
|
|
42
|
+
: settings.pagination?.before;
|
|
43
|
+
const after = next
|
|
44
|
+
? { label: next.label, href: href(next.href), description: "Next →" }
|
|
45
|
+
: settings.pagination?.after;
|
|
46
|
+
const isCurrent = (target) => {
|
|
47
|
+
if (target.startsWith("/") && site.baseUrl)
|
|
48
|
+
return site.baseUrl.startsWith(target);
|
|
49
|
+
return target === activeHref;
|
|
50
|
+
};
|
|
51
|
+
const navigationLinks = site.navbar.links.map((link) => ({
|
|
52
|
+
...link,
|
|
53
|
+
label: link.label ?? link.type,
|
|
54
|
+
}));
|
|
55
|
+
const docPage = page.kind === "markdown" ? page.markdown : null;
|
|
56
|
+
const headings = docPage?.headings ?? (page.kind === "changelog" ? page.changelog.headings : []);
|
|
57
|
+
return (_jsxs("div", { class: "sourcey-reader", id: "page", children: [_jsx("a", { class: "skip-link", href: "#main", children: "Skip to content" }), _jsxs("header", { class: "site-header", children: [_jsxs("div", { class: "header-inner", children: [_jsx("a", { class: "home-link", href: home, "aria-label": `${site.name} home`, children: _jsxs("span", { class: "brand", children: [site.logo?.light && (_jsx("img", { class: settings.logoMark ? "brand-mark" : "brand-logo", src: site.logo.light, alt: settings.logoMark ? "" : site.name })), (!site.logo?.light || settings.logoMark) && _jsx("span", { children: site.name })] }) }), _jsx("nav", { class: "desktop-nav", "aria-label": "Main navigation", children: navigationLinks.map((link) => (_jsx("a", { href: safeUrl(link.href) ?? undefined, "aria-current": isCurrent(link.href) ? "page" : undefined, children: link.label }, link.href))) }), _jsxs("div", { class: "header-actions", children: [searchHref ? (_jsxs("a", { class: "search-link", href: searchHref, "aria-label": "Search documentation", children: [_jsx(Icon, { name: "search", size: 17 }), _jsx("span", { children: "Search" }), _jsx("kbd", { children: "/" })] })) : (_jsxs("button", { class: "search-link", id: "search-open", "aria-label": "Search documentation", "data-reader-enhancement": true, hidden: true, children: [_jsx(Icon, { name: "search", size: 17 }), _jsx("span", { children: "Search" }), _jsx("kbd", { children: "/" })] })), site.navbar.primary && (_jsxs("a", { class: "header-cta", href: safeUrl(site.navbar.primary.href) ?? undefined, children: [site.navbar.primary.label, _jsx(Icon, { size: 15 })] })), _jsx("button", { class: "menu-toggle", "aria-label": "Open navigation", "aria-controls": "reader-mobile-nav", "aria-expanded": "false", "data-reader-enhancement": true, hidden: true, children: _jsx(Icon, { name: "menu" }) })] })] }), _jsxs("nav", { id: "reader-mobile-nav", "aria-label": "Mobile navigation", hidden: true, children: [navigationLinks.map((link) => (_jsxs(Link, { link: link, children: [link.label, _jsx(Icon, {})] }, link.href))), searchHref && (_jsxs("a", { href: searchHref, children: ["Search documentation", _jsx(Icon, { name: "search" })] }))] }), _jsx("nav", { class: "reader-mobile-fallback", "aria-label": "Site links", "data-reader-fallback": true, children: navigationLinks.map((link) => (_jsx(Link, { link: link }, link.href))) })] }), _jsxs("div", { class: "docs-shell", children: [_jsxs("aside", { class: "docs-sidebar", "aria-label": `${tab?.label ?? "Documentation"} navigation`, children: [_jsxs("div", { class: "docs-project", children: [_jsxs("a", { class: `docs-map${document ? "" : " docs-project-title"}`, href: href(tab?.href ?? ""), children: [_jsx("strong", { class: "docs-map-label", children: label }), document?.title && _jsx("span", { class: "docs-map-title", children: document.title })] }), (document?.version || document?.status) && (_jsxs("span", { class: "docs-version", children: [_jsx("span", { class: "small-dot" }), [document.version, document.status?.toLowerCase()].filter(Boolean).join(" ")] }))] }), nav.tabs.length > 1 && (_jsx("nav", { class: "reader-tabs", "aria-label": "Documentation sections", children: nav.tabs.map((item) => (_jsx("a", { href: href(item.href), "aria-current": item.slug === nav.activeTabSlug ? "page" : undefined, children: item.label }))) })), _jsx("nav", { "aria-label": "Chapters", children: tab?.groups.map((group) => (_jsxs(_Fragment, { children: [group.href ? (_jsx("a", { class: "nav-section", href: href(group.href), children: group.label })) : (_jsx("span", { class: "nav-section", children: group.label })), group.items.map((item) => (_jsxs("a", { href: href(item.href), "aria-current": item.id === nav.activePageSlug ? "page" : undefined, children: [_jsx("span", { children: item.label }), item.id === nav.activePageSlug && _jsx("span", { class: "active-nav-dot" })] })))] }))) }), (settings.sidebar?.links?.length || settings.sidebar?.note) && (_jsxs("div", { class: "docs-sidebar-bottom", children: [settings.sidebar.links?.map((link) => (_jsxs(Link, { link: link, children: [link.icon && _jsx(Icon, { name: link.icon, size: 16 }), link.label, _jsx(Icon, { name: "northeast", size: 13 })] }, link.href))), settings.sidebar.note && _jsx("p", { children: settings.sidebar.note })] }))] }), _jsxs("div", { class: "mobile-doc-nav", children: [_jsx("label", { for: "chapter-select", children: edition }), _jsx("select", { id: "chapter-select", "aria-label": `${tab?.label ?? "Documentation"} chapter`, "data-reader-enhancement": true, hidden: true, children: nav.tabs.map((section) => (_jsx("optgroup", { label: section.label, children: section.groups
|
|
58
|
+
.flatMap((group) => group.items)
|
|
59
|
+
.map((item) => (_jsx("option", { value: href(item.href), selected: section.slug === nav.activeTabSlug && item.id === nav.activePageSlug, children: item.label }))) }))) }), _jsxs("details", { class: "reader-chapter-fallback", "data-reader-fallback": true, children: [_jsx("summary", { children: "Chapters" }), _jsx("nav", { children: nav.tabs.map((section) => (_jsxs(_Fragment, { children: [nav.tabs.length > 1 && _jsx("strong", { children: section.label }), section.groups
|
|
60
|
+
.flatMap((group) => group.items)
|
|
61
|
+
.map((item) => (_jsx("a", { href: href(item.href), children: item.label })))] }))) })] })] }), _jsx("main", { id: "main", class: "docs-main", children: docPage ? (_jsxs(_Fragment, { children: [_jsxs("div", { class: "doc-breadcrumb", children: [_jsx("span", { children: tab?.label }), _jsx(Icon, { name: "chevron", size: 12 }), _jsx("span", { children: edition }), document?.status && (_jsx("span", { class: "pill soft", children: document.badge ?? document.status }))] }), _jsxs("header", { class: "doc-title", children: [_jsx("h1", { children: docPage.title }), docPage.description && _jsx("p", { children: docPage.description })] }), _jsxs("div", { class: "doc-metadata", children: [document?.status && _jsx("span", { children: document.status }), document?.updated && _jsx("span", { children: document.updated }), _jsxs("button", { "data-copy-page": true, "data-reader-enhancement": true, hidden: true, children: [_jsx(Icon, { name: "copy", size: 12 }), _jsx("span", { "aria-live": "polite", children: "Copy link" })] })] }), _jsx("article", { class: "reader-prose", dangerouslySetInnerHTML: { __html: docPage.html } }), (before || after) && (_jsxs("nav", { class: "doc-pagination", "aria-label": "Previous and next chapter", children: [before ? (_jsxs(Link, { link: before, children: [_jsx("span", { children: before.description }), _jsx("strong", { children: before.label })] })) : (_jsx("span", {})), after && (_jsxs(Link, { link: after, children: [_jsx("span", { children: after.description }), _jsx("strong", { children: after.label })] }))] })), _jsxs("footer", { class: "doc-footer", children: [_jsx("span", { children: settings.footer?.text ?? site.name }), _jsxs("span", { class: "doc-footer-links", children: [settings.footer?.links?.map((link) => (_jsxs(Link, { link: link, children: [link.label, _jsx(Icon, { name: "northeast", size: 12 })] }, link.href))), _jsxs("span", { class: "sourcey-attribution", children: ["Docs by", " ", _jsxs("a", { href: "https://sourcey.com", target: "_blank", rel: "noopener noreferrer", children: ["Sourcey", _jsx(Icon, { name: "northeast", size: 12 })] })] })] })] })] })) : (children) }), _jsxs("aside", { class: "docs-toc", "aria-label": "On this page", children: [headings.length > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { class: "eyebrow", children: "On this page" }), _jsx("nav", { children: headings
|
|
62
|
+
.filter((heading) => heading.level === Math.min(...headings.map((h) => h.level)))
|
|
63
|
+
.map((heading) => (_jsx("a", { href: `#${heading.id}`, children: heading.text }))) })] })), settings.aside?.links?.map((link) => (_jsxs(Link, { className: "toc-example", link: link, children: [link.icon && _jsx(Icon, { name: link.icon, size: 19 }), link.description && _jsx("strong", { children: link.description }), _jsxs("span", { children: [link.label, _jsx(Icon, { size: 12 })] })] }, link.href)))] })] }), !searchHref && _jsx(SearchDialog, {})] }));
|
|
64
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchDialog.d.ts","sourceRoot":"","sources":["../../../src/components/layout/SearchDialog.tsx"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,iCAyC3B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
2
|
+
export function SearchDialog() {
|
|
3
|
+
return (_jsx("div", { id: "search-dialog", role: "dialog", "aria-label": "Search", children: _jsxs("div", { class: "search-dialog-inner", children: [_jsxs("div", { class: "search-input-row", children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", class: "search-input-icon", children: _jsx("path", { "fill-rule": "evenodd", d: "M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.452 4.391l3.328 3.329a.75.75 0 1 1-1.06 1.06l-3.329-3.328A7 7 0 0 1 2 9Z", "clip-rule": "evenodd" }) }), _jsx("input", { id: "search-input", "aria-label": "Search documentation", type: "text", placeholder: "Search docs...", autocomplete: "off", spellcheck: false })] }), _jsx("div", { id: "search-results" }), _jsxs("div", { class: "search-footer", children: [_jsxs("span", { class: "search-footer-hint", children: [_jsx("kbd", { children: "\u2191\u2193" }), " navigate"] }), _jsxs("span", { class: "search-footer-hint", children: [_jsx("kbd", { children: "\u21B5" }), " select"] }), _jsxs("span", { class: "search-footer-hint", children: [_jsx("kbd", { children: "esc" }), " close"] })] })] }) }));
|
|
4
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Operation.d.ts","sourceRoot":"","sources":["../../../src/components/openapi/Operation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAyB,MAAM,qBAAqB,CAAC;AAgBtF,UAAU,cAAc;IACtB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"Operation.d.ts","sourceRoot":"","sources":["../../../src/components/openapi/Operation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAyB,MAAM,qBAAqB,CAAC;AAgBtF,UAAU,cAAc;IACtB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,cAAc,gCAuGrE"}
|
|
@@ -21,12 +21,12 @@ import { McpReturnsCopy, McpReturnsExample } from "../mcp/McpReturns.js";
|
|
|
21
21
|
*/
|
|
22
22
|
export function Operation({ operation: op, serverUrl }) {
|
|
23
23
|
const site = useContext(SiteContext);
|
|
24
|
-
const apiFirst = site.theme.
|
|
24
|
+
const apiFirst = site.theme.name === "api-first";
|
|
25
25
|
const id = `operation-${htmlId(op.path)}-${htmlId(op.method)}`;
|
|
26
26
|
const hasParams = op.parameters.length > 0;
|
|
27
27
|
const hasBody = !!op.requestBody;
|
|
28
28
|
const mcp = op.mcpExtras;
|
|
29
|
-
return (_jsxs("div", { id: id, class: "py-8 border-t border-[rgb(var(--color-gray-100))] dark:border-[rgb(var(--color-gray-800))]", "data-traverse-target": id, children: [_jsx("header", { class: "mb-6", children: op.summary && (_jsxs("div", { class: "flex items-baseline gap-2 flex-wrap", children: [_jsx("h2", { class: "text-2xl sm:text-3xl text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))] tracking-tight font-bold mb-2", children: _jsx(Markdown, { content: op.summary, inline: true }) }), op.deprecated && _jsx(DeprecatedBadge, {}), mcp?.annotations && _jsx(AnnotationBadges, { annotations: mcp.annotations })] })) }), mcp ? (_jsx(McpEndpointBar, { method: op.method, path: op.path })) : (_jsx(EndpointBar, { method: op.method, path: op.path, serverUrl: serverUrl })), _jsxs("div", { class: `flex flex-col ${apiFirst ? "lg:flex-row" : "xl:flex-row"} gap-8`, children: [_jsxs("div", { class: "flex-1 min-w-0", children: [op.description &&
|
|
29
|
+
return (_jsxs("div", { id: id, class: "py-8 border-t border-[rgb(var(--color-gray-100))] dark:border-[rgb(var(--color-gray-800))]", "data-traverse-target": id, children: [_jsx("header", { class: "mb-6", children: op.summary && (_jsxs("div", { class: "flex items-baseline gap-2 flex-wrap", children: [_jsx("h2", { class: "text-2xl sm:text-3xl text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))] tracking-tight font-bold mb-2", children: _jsx(Markdown, { content: op.summary, inline: true }) }), op.deprecated && _jsx(DeprecatedBadge, {}), mcp?.annotations && _jsx(AnnotationBadges, { annotations: mcp.annotations })] })) }), mcp ? (_jsx(McpEndpointBar, { method: op.method, path: op.path })) : (_jsx(EndpointBar, { method: op.method, path: op.path, serverUrl: serverUrl })), _jsxs("div", { class: `flex flex-col ${apiFirst ? "lg:flex-row" : "xl:flex-row"} gap-8`, children: [_jsxs("div", { class: "flex-1 min-w-0", children: [op.description && _jsx(Markdown, { content: op.description, class: "mb-6 max-w-none" }), hasBody && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { meta: bodyMediaType(op.requestBody), children: "Body" }), _jsx(RequestBody, { body: op.requestBody })] })), hasParams && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Parameters" }), _jsx(Parameters, { parameters: op.parameters })] })), mcp ? (_jsx(McpReturnsCopy, { schema: mcp.outputSchema })) : (op.responses.length > 0 && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Response" }), _jsx(ResponsesCopy, { responses: op.responses })] }))), !mcp && _jsx(SecurityCopy, { security: op.security })] }), _jsxs("aside", { class: `hidden ${apiFirst ? "lg:block" : "xl:block"} w-[28rem] shrink-0 sticky self-start overflow-y-auto space-y-4`, style: "top: calc(var(--header-height) + 2.5rem); max-height: calc(100vh - var(--header-height) - 5rem)", children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }), _jsxs("div", { class: `${apiFirst ? "lg:hidden" : "xl:hidden"} mt-8 space-y-4`, children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }));
|
|
30
30
|
}
|
|
31
31
|
function bodyMediaType(body) {
|
|
32
32
|
const types = Object.keys(body.content);
|
|
@@ -11,6 +11,6 @@ export function Tags({ tags, serverUrl }) {
|
|
|
11
11
|
.map((tag) => {
|
|
12
12
|
const parents = tagLineage(tag, tagsByName);
|
|
13
13
|
const displayName = tagDisplayName(tag);
|
|
14
|
-
return (_jsxs("div", { class: tag.parent ? "mt-8" : "mt-12", children: [_jsxs("div", { id: `tag-${htmlId(tag.name)}`, "data-traverse-target": `tag-${htmlId(tag.name)}`, class: "mb-6", children: [parents.length > 0 && (_jsx("div", { class: "mb-2 text-xs font-medium uppercase tracking-[0.12em] text-[rgb(var(--color-gray-500))]", children: parents.map(tagDisplayName).join(" / ") })), _jsxs("div", { class: "mb-2 flex flex-wrap items-center gap-2", children: [_jsx("h1", { class: "text-
|
|
14
|
+
return (_jsxs("div", { class: tag.parent ? "mt-8" : "mt-12", children: [_jsxs("div", { id: `tag-${htmlId(tag.name)}`, "data-traverse-target": `tag-${htmlId(tag.name)}`, class: "mb-6", children: [parents.length > 0 && (_jsx("div", { class: "mb-2 text-xs font-medium uppercase tracking-[0.12em] text-[rgb(var(--color-gray-500))]", children: parents.map(tagDisplayName).join(" / ") })), _jsxs("div", { class: "mb-2 flex flex-wrap items-center gap-2", children: [_jsx("h1", { class: "text-2xl sm:text-3xl font-bold tracking-tight text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))]", children: displayName }), tag.summary && tag.summary !== tag.name && (_jsx(Badge, { children: _jsx("code", { children: tag.name }) })), tag.kind && _jsx(Badge, { children: tag.kind })] }), tag.description && (_jsx(Markdown, { content: tag.description, class: "text-sm max-w-none" }))] }), tag.operations.map((op) => (_jsx(Operation, { operation: op, serverUrl: serverUrl }, `${op.method}-${op.path}`)))] }, tag.name));
|
|
15
15
|
}) }));
|
|
16
16
|
}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,10 +1,58 @@
|
|
|
1
1
|
import type { PrettyUrls } from "./site-url.js";
|
|
2
2
|
import type { MarkdownPreprocessor } from "./core/markdown-loader.js";
|
|
3
3
|
import type { ResolvedTabSource, SourceAdapter } from "./adapters/types.js";
|
|
4
|
+
import { type ThemeName } from "./themes/registry.js";
|
|
4
5
|
export type { PrettyUrls } from "./site-url.js";
|
|
5
|
-
export type
|
|
6
|
+
export type { ThemeName } from "./themes/registry.js";
|
|
7
|
+
/** @deprecated Use ThemeName. */
|
|
8
|
+
export type ThemePreset = ThemeName;
|
|
9
|
+
export interface ReaderLink {
|
|
10
|
+
/** Optional icon for reader sidebar and aside links. */
|
|
11
|
+
icon?: "code" | "layers";
|
|
12
|
+
label: string;
|
|
13
|
+
href: string;
|
|
14
|
+
/** Optional supporting line for an aside or pagination link. */
|
|
15
|
+
description?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Editorial chrome for long-form documentation. All fields are optional. */
|
|
18
|
+
export interface ReaderThemeConfig {
|
|
19
|
+
document?: {
|
|
20
|
+
label: string;
|
|
21
|
+
title?: string;
|
|
22
|
+
version?: string;
|
|
23
|
+
status?: string;
|
|
24
|
+
/** Short badge when the full status is longer (for example, Draft). */
|
|
25
|
+
badge?: string;
|
|
26
|
+
/** Human-readable publication or revision date; never inferred from build time. */
|
|
27
|
+
updated?: string;
|
|
28
|
+
};
|
|
29
|
+
/** Show the site name beside a mark-only logo. Full wordmarks remain the default. */
|
|
30
|
+
logoMark?: boolean;
|
|
31
|
+
/** Host-authored links and note rendered below the chapter navigation. */
|
|
32
|
+
sidebar?: {
|
|
33
|
+
links?: ReaderLink[];
|
|
34
|
+
note?: string;
|
|
35
|
+
};
|
|
36
|
+
/** Host-authored links rendered below the generated table of contents. */
|
|
37
|
+
aside?: {
|
|
38
|
+
links?: ReaderLink[];
|
|
39
|
+
};
|
|
40
|
+
pagination?: {
|
|
41
|
+
before?: ReaderLink;
|
|
42
|
+
after?: ReaderLink;
|
|
43
|
+
};
|
|
44
|
+
footer?: {
|
|
45
|
+
text?: string;
|
|
46
|
+
links?: ReaderLink[];
|
|
47
|
+
};
|
|
48
|
+
/** Use a host site's search route instead of Sourcey's search dialog. */
|
|
49
|
+
searchHref?: string;
|
|
50
|
+
}
|
|
6
51
|
export interface ThemeConfig {
|
|
7
|
-
|
|
52
|
+
/** Selects the complete rendering theme. */
|
|
53
|
+
name?: ThemeName;
|
|
54
|
+
/** @deprecated Use `name`. Retained for compatibility through the 3.x line. */
|
|
55
|
+
preset?: ThemeName;
|
|
8
56
|
colors?: {
|
|
9
57
|
primary: string;
|
|
10
58
|
light?: string;
|
|
@@ -13,6 +61,8 @@ export interface ThemeConfig {
|
|
|
13
61
|
fonts?: {
|
|
14
62
|
sans?: string;
|
|
15
63
|
mono?: string;
|
|
64
|
+
/** Disable Google Fonts when fonts are supplied through custom CSS. */
|
|
65
|
+
google?: boolean;
|
|
16
66
|
};
|
|
17
67
|
layout?: {
|
|
18
68
|
sidebar?: string;
|
|
@@ -20,6 +70,7 @@ export interface ThemeConfig {
|
|
|
20
70
|
content?: string;
|
|
21
71
|
};
|
|
22
72
|
css?: string[];
|
|
73
|
+
reader?: ReaderThemeConfig;
|
|
23
74
|
}
|
|
24
75
|
export interface ChangelogConfig {
|
|
25
76
|
/** Disable changelog auto-detection for CHANGELOG.md and layout: changelog pages. */
|
|
@@ -268,7 +319,7 @@ export interface NavbarLink {
|
|
|
268
319
|
}
|
|
269
320
|
export declare function defineConfig(config: SourceyConfig): SourceyConfig;
|
|
270
321
|
export interface ResolvedTheme {
|
|
271
|
-
|
|
322
|
+
name: ThemeName;
|
|
272
323
|
colors: {
|
|
273
324
|
primary: string;
|
|
274
325
|
light: string;
|
|
@@ -277,7 +328,7 @@ export interface ResolvedTheme {
|
|
|
277
328
|
fonts: {
|
|
278
329
|
sans: string;
|
|
279
330
|
mono: string;
|
|
280
|
-
googleFont: string;
|
|
331
|
+
googleFont: string | false;
|
|
281
332
|
};
|
|
282
333
|
layout: {
|
|
283
334
|
sidebar: string;
|
|
@@ -285,6 +336,7 @@ export interface ResolvedTheme {
|
|
|
285
336
|
content: string;
|
|
286
337
|
};
|
|
287
338
|
css: string[];
|
|
339
|
+
reader?: ReaderThemeConfig;
|
|
288
340
|
}
|
|
289
341
|
export interface ResolvedChangelogConfig {
|
|
290
342
|
enabled: boolean;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -4,6 +4,7 @@ import { createJiti } from "jiti";
|
|
|
4
4
|
import { normalizeBaseUrl, normalizeSiteUrl } from "./site-url.js";
|
|
5
5
|
import { doxygen as doxygenSource, godoc as godocSource, markdown as markdownSource, mcp as mcpSource, mkdocs as mkdocsSource, openapi as openapiSource, rustdoc as rustdocSource, } from "./adapters/index.js";
|
|
6
6
|
import { DEFAULT_CODE_SAMPLE_LANGS, SUPPORTED_CODE_SAMPLE_LANGS } from "./utils/code-samples.js";
|
|
7
|
+
import { themeDefinitions } from "./themes/registry.js";
|
|
7
8
|
export function defineConfig(config) {
|
|
8
9
|
return config;
|
|
9
10
|
}
|
|
@@ -61,7 +62,7 @@ export function configFromSpec(specPath) {
|
|
|
61
62
|
baseUrl: "",
|
|
62
63
|
prettyUrls: false,
|
|
63
64
|
theme: {
|
|
64
|
-
|
|
65
|
+
name: "default",
|
|
65
66
|
colors: { ...DEFAULT_COLORS },
|
|
66
67
|
fonts: {
|
|
67
68
|
sans: `'${DEFAULT_FONT_SANS}', ${SYSTEM_SANS}`,
|
|
@@ -129,11 +130,17 @@ export async function resolveConfigFromRaw(raw, configDir) {
|
|
|
129
130
|
function isUrl(source) {
|
|
130
131
|
return source.startsWith("http://") || source.startsWith("https://");
|
|
131
132
|
}
|
|
132
|
-
const
|
|
133
|
+
const VALID_THEMES = Object.keys(themeDefinitions);
|
|
133
134
|
function resolveTheme(raw, configDir) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
if (raw.theme?.name && raw.theme?.preset && raw.theme.name !== raw.theme.preset) {
|
|
136
|
+
throw new Error(`Conflicting theme names: theme.name is "${raw.theme.name}" but deprecated theme.preset is "${raw.theme.preset}"`);
|
|
137
|
+
}
|
|
138
|
+
const name = raw.theme?.name ?? raw.theme?.preset ?? "default";
|
|
139
|
+
if (!VALID_THEMES.includes(name)) {
|
|
140
|
+
throw new Error(`Invalid theme "${name}". Must be one of: ${VALID_THEMES.join(", ")}`);
|
|
141
|
+
}
|
|
142
|
+
if (raw.theme?.reader && name !== "reader") {
|
|
143
|
+
throw new Error('theme.reader options require theme.name to be "reader"');
|
|
137
144
|
}
|
|
138
145
|
const rawColors = raw.theme?.colors;
|
|
139
146
|
const colors = rawColors
|
|
@@ -148,15 +155,16 @@ function resolveTheme(raw, configDir) {
|
|
|
148
155
|
const fonts = {
|
|
149
156
|
sans: `'${sansName}', ${SYSTEM_SANS}`,
|
|
150
157
|
mono: monoName ? `'${monoName}', ${SYSTEM_MONO}` : SYSTEM_MONO,
|
|
151
|
-
googleFont: sansName,
|
|
158
|
+
googleFont: raw.theme?.fonts?.google === false ? false : sansName,
|
|
152
159
|
};
|
|
160
|
+
const defaults = name === "reader" ? { sidebar: "245px", toc: "220px", content: "850px" } : DEFAULT_LAYOUT;
|
|
153
161
|
const layout = {
|
|
154
|
-
sidebar: raw.theme?.layout?.sidebar ??
|
|
155
|
-
toc: raw.theme?.layout?.toc ??
|
|
156
|
-
content: raw.theme?.layout?.content ??
|
|
162
|
+
sidebar: raw.theme?.layout?.sidebar ?? defaults.sidebar,
|
|
163
|
+
toc: raw.theme?.layout?.toc ?? defaults.toc,
|
|
164
|
+
content: raw.theme?.layout?.content ?? defaults.content,
|
|
157
165
|
};
|
|
158
166
|
const css = (raw.theme?.css ?? []).map((p) => resolve(configDir, p));
|
|
159
|
-
return {
|
|
167
|
+
return { name, colors, fonts, layout, css, reader: raw.theme?.reader };
|
|
160
168
|
}
|
|
161
169
|
function resolveLogo(logo, configDir) {
|
|
162
170
|
if (!logo)
|
|
@@ -66,7 +66,7 @@ export async function loadDoxygenTab(config, tabSlug, tabLabel, titleSeparator)
|
|
|
66
66
|
}
|
|
67
67
|
catch (error) {
|
|
68
68
|
const message = error instanceof Error ? error.message : String(error);
|
|
69
|
-
throw new Error(`Failed to load Doxygen XML from ${config.xml}: ${message}
|
|
69
|
+
throw new Error(`Failed to load Doxygen XML from ${config.xml}: ${message}`, { cause: error });
|
|
70
70
|
}
|
|
71
71
|
const pages = new Map();
|
|
72
72
|
const groupMap = new Map();
|
package/dist/core/loader.js
CHANGED
|
@@ -54,7 +54,7 @@ function parseContent(content, format) {
|
|
|
54
54
|
return JSON.parse(content);
|
|
55
55
|
}
|
|
56
56
|
catch (e) {
|
|
57
|
-
throw new Error(`Failed to parse JSON spec: ${e.message}
|
|
57
|
+
throw new Error(`Failed to parse JSON spec: ${e.message}`, { cause: e });
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
try {
|
|
@@ -66,7 +66,7 @@ function parseContent(content, format) {
|
|
|
66
66
|
}
|
|
67
67
|
catch (e) {
|
|
68
68
|
if (e instanceof yaml.YAMLException) {
|
|
69
|
-
throw new Error(`Failed to parse YAML spec: ${e.message}
|
|
69
|
+
throw new Error(`Failed to parse YAML spec: ${e.message}`, { cause: e });
|
|
70
70
|
}
|
|
71
71
|
throw e;
|
|
72
72
|
}
|
|
@@ -6,6 +6,8 @@ export interface MarkdownPage {
|
|
|
6
6
|
title: string;
|
|
7
7
|
/** Page description from frontmatter */
|
|
8
8
|
description: string;
|
|
9
|
+
/** Short navigation label, independent of the article title. */
|
|
10
|
+
navTitle?: string;
|
|
9
11
|
/** URL slug for this page (derived from filename) */
|
|
10
12
|
slug: string;
|
|
11
13
|
/** Rendered HTML body */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-loader.d.ts","sourceRoot":"","sources":["../../src/core/markdown-loader.ts"],"names":[],"mappings":"AAOA,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kFAAkF;IAClF,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AAEpD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown-loader.d.ts","sourceRoot":"","sources":["../../src/core/markdown-loader.ts"],"names":[],"mappings":"AAOA,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kFAAkF;IAClF,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AAEpD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWxD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,KAAK,MAAM,CAAC;AAonChG;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAK5F;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAgCnB;AAgED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrD"}
|
|
@@ -987,6 +987,7 @@ function loadMarkdownPageFromBody(filePath, slug, body, meta, options = {}) {
|
|
|
987
987
|
const sourcePath = relative(process.cwd(), filePath);
|
|
988
988
|
return {
|
|
989
989
|
kind: "markdown",
|
|
990
|
+
navTitle: typeof meta.navTitle === "string" ? meta.navTitle : undefined,
|
|
990
991
|
title,
|
|
991
992
|
description,
|
|
992
993
|
slug,
|
package/dist/core/navigation.js
CHANGED
|
@@ -89,7 +89,7 @@ export function buildNavFromPages(tab, pagesByPath, prettyUrls = false) {
|
|
|
89
89
|
if (!page)
|
|
90
90
|
continue;
|
|
91
91
|
items.push({
|
|
92
|
-
label: rp.label ?? page.title,
|
|
92
|
+
label: rp.label ?? (page.kind === "markdown" ? page.navTitle : undefined) ?? page.title,
|
|
93
93
|
href: navHref(pageOutputPath(tab.slug, page.slug, prettyUrls), prettyUrls),
|
|
94
94
|
id: page.slug,
|
|
95
95
|
});
|
package/dist/core/parser.js
CHANGED
|
@@ -34,7 +34,7 @@ export async function parseSpec(loaded) {
|
|
|
34
34
|
}
|
|
35
35
|
catch (error) {
|
|
36
36
|
const message = error instanceof Error ? error.message : String(error);
|
|
37
|
-
throw new Error(`Failed to parse OpenAPI spec: ${message}
|
|
37
|
+
throw new Error(`Failed to parse OpenAPI spec: ${message}`, { cause: error });
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
function createConfinedFileResolver(loaded) {
|
package/dist/dev-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"AA2DA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4f7E"}
|
package/dist/dev-server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveThemeAssets } from "./themes/assets.js";
|
|
1
2
|
import { createServer as createViteServer } from "vite";
|
|
2
3
|
import { resolve, dirname, extname, basename, relative } from "node:path";
|
|
3
4
|
import { access } from "node:fs/promises";
|
|
@@ -127,9 +128,6 @@ export async function startDevServer(options) {
|
|
|
127
128
|
let fileToContent = buildFileToContent(config);
|
|
128
129
|
const projectRoot = resolve(__dirname, "..");
|
|
129
130
|
const hasSrc = await exists(resolve(projectRoot, "src/client/index.ts"));
|
|
130
|
-
const tailwindCssPath = resolve(projectRoot, hasSrc ? "src/themes/default/main.css" : "dist/themes/default/main.css");
|
|
131
|
-
const sourceyCssPath = resolve(projectRoot, hasSrc ? "src/themes/default/sourcey.css" : "dist/themes/default/sourcey.css");
|
|
132
|
-
const clientEntry = resolve(projectRoot, hasSrc ? "src/client/index.ts" : "dist/client/index.js");
|
|
133
131
|
const ssrRendererPath = resolve(projectRoot, hasSrc ? "src/renderer/static-renderer.ts" : "dist/renderer/static-renderer.js");
|
|
134
132
|
let cache = null;
|
|
135
133
|
let cachePromise = null;
|
|
@@ -384,7 +382,8 @@ export async function startDevServer(options) {
|
|
|
384
382
|
assetBase: config.baseUrl || "/",
|
|
385
383
|
});
|
|
386
384
|
let html = renderPage(pageData.spec, renderOptions, activeNav, pageData.currentPage, site);
|
|
387
|
-
|
|
385
|
+
const { foundationCss: tailwindCssPath, sourceyCssPaths, clientEntry, } = resolveThemeAssets(config.theme.name);
|
|
386
|
+
html = html.replace(/<link rel="stylesheet" href="[^"]*sourcey\.css"\s*\/?>/, `<link rel="stylesheet" href="/@fs${tailwindCssPath}" />\n${sourceyCssPaths.map((path) => `<link rel="stylesheet" href="/@fs${path}?direct" />`).join("\n")}`);
|
|
388
387
|
html = html.replace(/<script src="[^"]*sourcey\.js"[^>]*><\/script>/, `<script type="module" src="/@fs${clientEntry}"></script>`);
|
|
389
388
|
html = html.replace(/<script src="[^"]*sourcey\.js"\s*\/?>/, `<script type="module" src="/@fs${clientEntry}"></script>`);
|
|
390
389
|
return html;
|
package/dist/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export interface SiteBuildOptions {
|
|
|
25
25
|
skipWrite?: boolean;
|
|
26
26
|
embeddable?: boolean;
|
|
27
27
|
strictChangelog?: boolean;
|
|
28
|
+
generateOgImages?: boolean;
|
|
28
29
|
}
|
|
29
30
|
export interface SiteBuildResult {
|
|
30
31
|
outputDir: string;
|
|
@@ -39,7 +40,9 @@ export declare function buildSiteDocs(options?: SiteBuildOptions): Promise<SiteB
|
|
|
39
40
|
export { defineConfig } from "./config.js";
|
|
40
41
|
export { doxygen, godoc, markdown, mcp, mkdocs, openapi, rustdoc } from "./adapters/index.js";
|
|
41
42
|
export { resolveInternalLinks } from "./site-assembly.js";
|
|
43
|
+
export { buildSourceySite, collectSourceyWatchPaths, writeSourceySite } from "./site.js";
|
|
44
|
+
export type { SourceySiteArtifacts, SourceySiteOptions, SourceySiteWriteOptions } from "./site.js";
|
|
42
45
|
export type { NormalizedSpec, NormalizedOperation, NormalizedTag, NormalizedSchema, NormalizedParameter, NormalizedRequestBody, NormalizedResponse, } from "./core/types.js";
|
|
43
46
|
export type { DoxygenSourceOptions, GodocSourceOptions, MarkdownSourceOptions, McpSourceOptions, MkDocsSourceOptions, OpenApiSourceOptions, ResolvedTabSource, RustdocSourceOptions, SourceAdapter, SourceAdapterContext, } from "./adapters/index.js";
|
|
44
|
-
export type { RustdocConfig, ResolvedRustdocConfig, RustdocMode, RustdocFeatures, } from "./config.js";
|
|
47
|
+
export type { SourceyConfig, ThemeConfig, ThemeName, ThemePreset, ReaderThemeConfig, ReaderLink, RustdocConfig, ResolvedRustdocConfig, RustdocMode, RustdocFeatures, } from "./config.js";
|
|
45
48
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB3E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;IAC3E,kBAAkB,EAAE,OAAO,0BAA0B,EAAE,uBAAuB,EAAE,CAAC;IACjF,wDAAwD;IACxD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsB5F;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAGnG,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC"}
|