sourcey 3.3.8 → 3.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1 -5
- package/dist/components/layout/Head.d.ts.map +1 -1
- package/dist/components/layout/Head.js +2 -1
- package/dist/config.d.ts +7 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -3
- package/dist/core/doxygen-loader.js +12 -12
- package/dist/core/markdown-loader.d.ts +2 -2
- package/dist/core/markdown-loader.js +2 -2
- package/dist/core/navigation.js +2 -2
- package/dist/dev-server.js +12 -12
- package/dist/index.js +4 -4
- package/package.json +10 -6
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { defineCommand, runMain } from "citty";
|
|
3
|
-
import { readFileSync } from "node:fs";
|
|
4
|
-
import { dirname, join } from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
3
|
import { buildDocs, buildSiteDocs } from "./index.js";
|
|
7
4
|
import { loadConfig } from "./config.js";
|
|
8
5
|
import { init } from "./init.js";
|
|
9
|
-
|
|
10
|
-
const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf8"));
|
|
6
|
+
import pkg from "../package.json" with { type: "json" };
|
|
11
7
|
const build = defineCommand({
|
|
12
8
|
meta: {
|
|
13
9
|
name: "build",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Head.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Head.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Head.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Head.tsx"],"names":[],"mappings":"AAKA,wBAAgB,IAAI,iCA8EnB"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "preact/jsx-ru
|
|
|
2
2
|
import { useContext } from "preact/hooks";
|
|
3
3
|
import { SpecContext, OptionsContext, PageContext, SiteContext, NavigationContext } from "../../renderer/context.js";
|
|
4
4
|
import { langIconCSS } from "../../utils/lang-icons.js";
|
|
5
|
+
import pkg from "../../../package.json" with { type: "json" };
|
|
5
6
|
export function Head() {
|
|
6
7
|
const site = useContext(SiteContext);
|
|
7
8
|
const spec = useContext(SpecContext);
|
|
@@ -51,5 +52,5 @@ export function Head() {
|
|
|
51
52
|
body { margin: 0; background: rgb(var(--color-background-light)); }
|
|
52
53
|
.dark body { background: rgb(var(--color-background-dark)); }
|
|
53
54
|
`;
|
|
54
|
-
return (_jsxs("head", { children: [_jsx("meta", { charset: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), _jsx("title", { children: pageTitle }), _jsx("meta", { name: "description", content: pageDescription }), _jsx("meta", { name: "sourcey-search", content: `${options.assetBase}search-index.json` }), _jsx("style", { dangerouslySetInnerHTML: { __html: themeCSS } }), _jsx("style", { dangerouslySetInnerHTML: { __html: langIconCSS() } }), site.customCSS && _jsx("style", { dangerouslySetInnerHTML: { __html: site.customCSS } }), _jsx("script", { dangerouslySetInnerHTML: { __html: `(function(){var t=localStorage.getItem('sourcey-theme');if(t==='dark')document.documentElement.classList.add('dark')})()` } }), googleFontsUrl && (_jsxs(_Fragment, { children: [_jsx("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }), _jsx("link", { rel: "stylesheet", href: googleFontsUrl })] })), _jsx("link", { rel: "stylesheet", href: `${options.assetBase}sourcey.css` }), site.favicon && _jsx("link", { rel: "icon", href: site.favicon })] }));
|
|
55
|
+
return (_jsxs("head", { children: [_jsx("meta", { charset: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), _jsx("title", { children: pageTitle }), _jsx("meta", { name: "description", content: pageDescription }), _jsx("meta", { name: "generator", content: `Sourcey ${pkg.version}` }), _jsx("meta", { name: "sourcey-search", content: `${options.assetBase}search-index.json` }), _jsx("style", { dangerouslySetInnerHTML: { __html: themeCSS } }), _jsx("style", { dangerouslySetInnerHTML: { __html: langIconCSS() } }), site.customCSS && _jsx("style", { dangerouslySetInnerHTML: { __html: site.customCSS } }), _jsx("script", { dangerouslySetInnerHTML: { __html: `(function(){var t=localStorage.getItem('sourcey-theme');if(t==='dark')document.documentElement.classList.add('dark')})()` } }), googleFontsUrl && (_jsxs(_Fragment, { children: [_jsx("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }), _jsx("link", { rel: "stylesheet", href: googleFontsUrl })] })), _jsx("link", { rel: "stylesheet", href: `${options.assetBase}sourcey.css` }), site.favicon && _jsx("link", { rel: "icon", href: site.favicon })] }));
|
|
55
56
|
}
|
package/dist/config.d.ts
CHANGED
|
@@ -147,9 +147,15 @@ export interface ResolvedTab {
|
|
|
147
147
|
groups?: ResolvedGroup[];
|
|
148
148
|
doxygen?: ResolvedDoxygenConfig;
|
|
149
149
|
}
|
|
150
|
+
export interface ResolvedPage {
|
|
151
|
+
/** Original config slug (e.g. "run/index") */
|
|
152
|
+
slug: string;
|
|
153
|
+
/** Absolute filesystem path to the .md/.mdx file */
|
|
154
|
+
file: string;
|
|
155
|
+
}
|
|
150
156
|
export interface ResolvedGroup {
|
|
151
157
|
label: string;
|
|
152
|
-
pages:
|
|
158
|
+
pages: ResolvedPage[];
|
|
153
159
|
}
|
|
154
160
|
export declare function loadConfig(cwd?: string): Promise<ResolvedConfig>;
|
|
155
161
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { access, readdir } from "node:fs/promises";
|
|
2
|
-
import { resolve, dirname, basename, extname } from "node:path";
|
|
2
|
+
import { resolve, relative, dirname, basename, extname } from "node:path";
|
|
3
3
|
import { createJiti } from "jiti";
|
|
4
4
|
export function defineConfig(config) {
|
|
5
5
|
return config;
|
|
@@ -181,11 +181,14 @@ async function resolveGroups(groups, tabName, configDir) {
|
|
|
181
181
|
for (const pageSlug of group.pages) {
|
|
182
182
|
if (pageSlug.includes("*")) {
|
|
183
183
|
const expanded = await expandGlob(pageSlug, configDir);
|
|
184
|
-
|
|
184
|
+
for (const file of expanded) {
|
|
185
|
+
const rel = relative(configDir, file).replace(/\.[^.]+$/, "");
|
|
186
|
+
pages.push({ slug: rel, file });
|
|
187
|
+
}
|
|
185
188
|
}
|
|
186
189
|
else {
|
|
187
190
|
const absPath = await resolvePagePath(pageSlug, configDir);
|
|
188
|
-
pages.push(absPath);
|
|
191
|
+
pages.push({ slug: pageSlug, file: absPath });
|
|
189
192
|
}
|
|
190
193
|
}
|
|
191
194
|
resolved.push({ label: group.group, pages });
|
|
@@ -108,18 +108,18 @@ function resolveIndexStyle(configured, groupMap, pages) {
|
|
|
108
108
|
/**
|
|
109
109
|
* Build index page HTML using sourcey's existing component markup.
|
|
110
110
|
*/
|
|
111
|
-
function buildIndexHtml(style,
|
|
111
|
+
function buildIndexHtml(style, _tabSlug, _tabLabel, groupMap, pages) {
|
|
112
112
|
if (style === "rich")
|
|
113
|
-
return buildRichIndex(
|
|
113
|
+
return buildRichIndex(groupMap, pages);
|
|
114
114
|
if (style === "structured")
|
|
115
|
-
return buildStructuredIndex(
|
|
116
|
-
return buildFlatIndex(
|
|
115
|
+
return buildStructuredIndex(groupMap, pages);
|
|
116
|
+
return buildFlatIndex(groupMap);
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
119
|
* Rich: card grid with module name, description, and type count.
|
|
120
120
|
* Uses sourcey's card-group/card-item CSS.
|
|
121
121
|
*/
|
|
122
|
-
function buildRichIndex(
|
|
122
|
+
function buildRichIndex(groupMap, pages) {
|
|
123
123
|
const cards = [];
|
|
124
124
|
for (const [, items] of groupMap) {
|
|
125
125
|
const groupEntry = items.find((i) => i.kind === "group");
|
|
@@ -129,7 +129,7 @@ function buildRichIndex(tabSlug, groupMap, pages) {
|
|
|
129
129
|
if (!page)
|
|
130
130
|
continue;
|
|
131
131
|
const typeCount = items.filter((i) => i.kind !== "group" && i.kind !== "namespace").length;
|
|
132
|
-
const href = `${
|
|
132
|
+
const href = `${groupEntry.slug}.html`;
|
|
133
133
|
const desc = page.description || "";
|
|
134
134
|
const meta = typeCount > 0
|
|
135
135
|
? `<p style="margin:0.5rem 0 0;font-size:0.8rem;opacity:0.5">${typeCount} type${typeCount !== 1 ? "s" : ""}</p>`
|
|
@@ -149,7 +149,7 @@ function buildRichIndex(tabSlug, groupMap, pages) {
|
|
|
149
149
|
if (typeCount === 0)
|
|
150
150
|
continue;
|
|
151
151
|
const firstItem = items[0];
|
|
152
|
-
const href = `${
|
|
152
|
+
const href = `${firstItem.slug}.html`;
|
|
153
153
|
cards.push(`<a href="${href}" class="card-item">` +
|
|
154
154
|
`<div class="card-item-inner">` +
|
|
155
155
|
`<h3 class="card-item-title">${escHtml(key)}</h3>` +
|
|
@@ -165,7 +165,7 @@ function buildRichIndex(tabSlug, groupMap, pages) {
|
|
|
165
165
|
* Structured: grouped list of types by module/namespace.
|
|
166
166
|
* Rendered as markdown headings with link lists.
|
|
167
167
|
*/
|
|
168
|
-
function buildStructuredIndex(
|
|
168
|
+
function buildStructuredIndex(groupMap, pages) {
|
|
169
169
|
const sections = [];
|
|
170
170
|
for (const [key, items] of groupMap) {
|
|
171
171
|
const groupEntry = items.find((i) => i.kind === "group");
|
|
@@ -175,10 +175,10 @@ function buildStructuredIndex(tabSlug, groupMap, pages) {
|
|
|
175
175
|
continue;
|
|
176
176
|
const links = [];
|
|
177
177
|
if (groupEntry) {
|
|
178
|
-
links.push(`- [Overview](${
|
|
178
|
+
links.push(`- [Overview](${groupEntry.slug}.html)`);
|
|
179
179
|
}
|
|
180
180
|
for (const t of types) {
|
|
181
|
-
links.push(`- [${t.title}](${
|
|
181
|
+
links.push(`- [${t.title}](${t.slug}.html)`);
|
|
182
182
|
}
|
|
183
183
|
sections.push(`### ${title}\n\n${links.join("\n")}`);
|
|
184
184
|
}
|
|
@@ -187,7 +187,7 @@ function buildStructuredIndex(tabSlug, groupMap, pages) {
|
|
|
187
187
|
/**
|
|
188
188
|
* Flat: alphabetical list categorized by kind.
|
|
189
189
|
*/
|
|
190
|
-
function buildFlatIndex(
|
|
190
|
+
function buildFlatIndex(groupMap) {
|
|
191
191
|
const byKind = new Map();
|
|
192
192
|
for (const [, items] of groupMap) {
|
|
193
193
|
for (const item of items) {
|
|
@@ -202,7 +202,7 @@ function buildFlatIndex(tabSlug, groupMap) {
|
|
|
202
202
|
const sections = [];
|
|
203
203
|
for (const [label, items] of byKind) {
|
|
204
204
|
const sorted = items.sort((a, b) => a.title.localeCompare(b.title));
|
|
205
|
-
const links = sorted.map((i) => `- [${i.title}](${
|
|
205
|
+
const links = sorted.map((i) => `- [${i.title}](${i.slug}.html)`).join("\n");
|
|
206
206
|
sections.push(`### ${label}\n\n${links}`);
|
|
207
207
|
}
|
|
208
208
|
return renderMarkdown(sections.join("\n\n"));
|
|
@@ -19,10 +19,10 @@ export type { PageHeading } from "../utils/markdown.js";
|
|
|
19
19
|
*/
|
|
20
20
|
export declare function loadMarkdownPage(filePath: string, slug: string): Promise<MarkdownPage>;
|
|
21
21
|
/**
|
|
22
|
-
* Derive a URL slug from a
|
|
22
|
+
* Derive a URL slug from a page path.
|
|
23
23
|
* Preserves directory structure to avoid collisions:
|
|
24
24
|
* "getting-started.md" → "getting-started"
|
|
25
|
-
* "run/index
|
|
25
|
+
* "run/index" → "run/index"
|
|
26
26
|
* "run/install.md" → "run/install"
|
|
27
27
|
*/
|
|
28
28
|
export declare function slugFromPath(filePath: string): string;
|
|
@@ -251,10 +251,10 @@ function extractFirstHeading(md) {
|
|
|
251
251
|
return match ? match[1].trim() : undefined;
|
|
252
252
|
}
|
|
253
253
|
/**
|
|
254
|
-
* Derive a URL slug from a
|
|
254
|
+
* Derive a URL slug from a page path.
|
|
255
255
|
* Preserves directory structure to avoid collisions:
|
|
256
256
|
* "getting-started.md" → "getting-started"
|
|
257
|
-
* "run/index
|
|
257
|
+
* "run/index" → "run/index"
|
|
258
258
|
* "run/install.md" → "run/install"
|
|
259
259
|
*/
|
|
260
260
|
export function slugFromPath(filePath) {
|
package/dist/core/navigation.js
CHANGED
|
@@ -63,8 +63,8 @@ export function buildNavFromPages(tab, pagesByPath) {
|
|
|
63
63
|
if (tab.groups) {
|
|
64
64
|
for (const group of tab.groups) {
|
|
65
65
|
const items = [];
|
|
66
|
-
for (const
|
|
67
|
-
const page = pagesByPath.get(
|
|
66
|
+
for (const rp of group.pages) {
|
|
67
|
+
const page = pagesByPath.get(rp.slug);
|
|
68
68
|
if (!page)
|
|
69
69
|
continue;
|
|
70
70
|
items.push({
|
package/dist/dev-server.js
CHANGED
|
@@ -44,8 +44,8 @@ export async function startDevServer(options) {
|
|
|
44
44
|
watchPaths.push(tab.doxygen.xml);
|
|
45
45
|
if (tab.groups) {
|
|
46
46
|
for (const group of tab.groups) {
|
|
47
|
-
for (const
|
|
48
|
-
watchPaths.push(
|
|
47
|
+
for (const rp of group.pages) {
|
|
48
|
+
watchPaths.push(rp.file);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -62,8 +62,8 @@ export async function startDevServer(options) {
|
|
|
62
62
|
}
|
|
63
63
|
if (tab.groups) {
|
|
64
64
|
for (const group of tab.groups) {
|
|
65
|
-
for (const
|
|
66
|
-
map.set(resolve(
|
|
65
|
+
for (const rp of group.pages) {
|
|
66
|
+
map.set(resolve(rp.file), { kind: "markdown", tabSlug: tab.slug, pagePath: rp.file, pageSlug: rp.slug });
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -121,7 +121,7 @@ export async function startDevServer(options) {
|
|
|
121
121
|
const { data } = snapshot;
|
|
122
122
|
const start = performance.now();
|
|
123
123
|
if (content.kind === "markdown") {
|
|
124
|
-
const slug = slugFromPath(content.
|
|
124
|
+
const slug = slugFromPath(content.pageSlug);
|
|
125
125
|
log(`reloading ${shortPath(content.pagePath)}`);
|
|
126
126
|
const page = await loadMarkdownPage(content.pagePath, slug);
|
|
127
127
|
if (cache !== snapshot)
|
|
@@ -193,12 +193,12 @@ export async function startDevServer(options) {
|
|
|
193
193
|
return;
|
|
194
194
|
const pagesByPath = new Map();
|
|
195
195
|
for (const group of tab.groups) {
|
|
196
|
-
for (const
|
|
197
|
-
const slug = slugFromPath(
|
|
196
|
+
for (const rp of group.pages) {
|
|
197
|
+
const slug = slugFromPath(rp.slug);
|
|
198
198
|
const pageKey = tabPath(tab.slug, `${slug}.html`);
|
|
199
199
|
const entry = data.pageMap.get(pageKey);
|
|
200
200
|
if (entry?.currentPage.kind === "markdown") {
|
|
201
|
-
pagesByPath.set(
|
|
201
|
+
pagesByPath.set(rp.slug, entry.currentPage.markdown);
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
}
|
|
@@ -370,10 +370,10 @@ async function loadSiteData(tabs) {
|
|
|
370
370
|
else if (tab.groups) {
|
|
371
371
|
const pagesByPath = new Map();
|
|
372
372
|
for (const group of tab.groups) {
|
|
373
|
-
for (const
|
|
374
|
-
const slug = slugFromPath(
|
|
375
|
-
const page = await loadMarkdownPage(
|
|
376
|
-
pagesByPath.set(
|
|
373
|
+
for (const rp of group.pages) {
|
|
374
|
+
const slug = slugFromPath(rp.slug);
|
|
375
|
+
const page = await loadMarkdownPage(rp.file, slug);
|
|
376
|
+
pagesByPath.set(rp.slug, page);
|
|
377
377
|
pageMap.set(tabPath(tab.slug, `${slug}.html`), {
|
|
378
378
|
spec: primarySpec,
|
|
379
379
|
currentPage: { kind: "markdown", markdown: page },
|
package/dist/index.js
CHANGED
|
@@ -78,10 +78,10 @@ export async function buildSiteDocs(options = {}) {
|
|
|
78
78
|
else if (tab.groups) {
|
|
79
79
|
const pagesByPath = new Map();
|
|
80
80
|
for (const group of tab.groups) {
|
|
81
|
-
for (const
|
|
82
|
-
const slug = slugFromPath(
|
|
83
|
-
const page = await loadMarkdownPage(
|
|
84
|
-
pagesByPath.set(
|
|
81
|
+
for (const rp of group.pages) {
|
|
82
|
+
const slug = slugFromPath(rp.slug);
|
|
83
|
+
const page = await loadMarkdownPage(rp.file, slug);
|
|
84
|
+
pagesByPath.set(rp.slug, page);
|
|
85
85
|
sitePages.push({
|
|
86
86
|
outputPath: tabPath(tab.slug, `${slug}.html`),
|
|
87
87
|
currentPage: { kind: "markdown", markdown: page },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sourcey",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.10",
|
|
4
4
|
"description": "Open source documentation platform. API references, guides, static output.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -63,16 +63,20 @@
|
|
|
63
63
|
"api",
|
|
64
64
|
"documentation",
|
|
65
65
|
"static-site-generator",
|
|
66
|
-
"docs"
|
|
66
|
+
"docs",
|
|
67
|
+
"markdown",
|
|
68
|
+
"api-docs",
|
|
69
|
+
"developer-documentation",
|
|
70
|
+
"doxygen"
|
|
67
71
|
],
|
|
68
|
-
"author": "Kam Low <
|
|
72
|
+
"author": "Kam Low <oss@0state.com> (https://sourcey.com)",
|
|
69
73
|
"license": "AGPL-3.0-only",
|
|
70
74
|
"repository": {
|
|
71
75
|
"type": "git",
|
|
72
|
-
"url": "git+https://github.com/
|
|
76
|
+
"url": "git+https://github.com/sourcey/sourcey.git"
|
|
73
77
|
},
|
|
74
78
|
"bugs": {
|
|
75
|
-
"url": "https://github.com/
|
|
79
|
+
"url": "https://github.com/sourcey/sourcey/issues"
|
|
76
80
|
},
|
|
77
|
-
"homepage": "https://
|
|
81
|
+
"homepage": "https://sourcey.com"
|
|
78
82
|
}
|