sourcey 3.5.2 → 3.5.3
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 +3 -12
- package/dist/config.d.ts +5 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -3
- package/dist/core/navigation.js +2 -2
- package/dist/core/search-indexer.d.ts.map +1 -1
- package/dist/core/search-indexer.js +4 -9
- package/dist/dev-server.d.ts.map +1 -1
- package/dist/dev-server.js +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -33
- package/dist/site-assembly.d.ts.map +1 -1
- package/dist/site-assembly.js +12 -10
- package/dist/site-url.d.ts.map +1 -1
- package/dist/site-url.js +3 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -36,15 +36,6 @@ npx sourcey init
|
|
|
36
36
|
- **Static HTML output**: no framework runtime, no vendor lock-in. Deploy to GitHub Pages, Vercel, Netlify, S3, anywhere
|
|
37
37
|
- **Open source**: AGPL-3.0. Self-host, fork, extend. Your docs, your infrastructure
|
|
38
38
|
|
|
39
|
-
## OSS and Sourcey Cloud
|
|
40
|
-
|
|
41
|
-
This repository is the public, local-first Sourcey product. Sourcey Cloud
|
|
42
|
-
features that require hosted infrastructure, such as OAuth callbacks, CORS
|
|
43
|
-
proxying, secret vaulting, hosted analytics, billing, and tenant control-plane
|
|
44
|
-
APIs, are not implemented in this OSS package. When OSS features need a hosted
|
|
45
|
-
runtime, they expose documented provider-neutral extension points instead of
|
|
46
|
-
private Sourcey Cloud client code.
|
|
47
|
-
|
|
48
39
|
### Sourcey vs alternatives
|
|
49
40
|
|
|
50
41
|
| | Sourcey | Redocly | GitBook | Mintlify | Fern | ReadMe |
|
|
@@ -56,7 +47,7 @@ private Sourcey Cloud client code.
|
|
|
56
47
|
| Doxygen / C++ docs | Native | No | No | No | No | No |
|
|
57
48
|
| godoc / Go docs | Native | No | No | No | No | No |
|
|
58
49
|
| Config format | TypeScript | YAML | GUI | JSON | YAML | GUI |
|
|
59
|
-
| Local preview | Vite SSR | Local |
|
|
50
|
+
| Local preview | Vite SSR | Local | Hosted | Local | Local | Hosted |
|
|
60
51
|
| No account required | Yes | Partial | No | No | No | No |
|
|
61
52
|
| Self-hosted | Yes | Yes | No | No | Yes | No |
|
|
62
53
|
| Pricing | Free | $10–$24 | $65–$249 | $250+ | $150+ | $79–$3,000+ |
|
|
@@ -76,14 +67,14 @@ npx sourcey init
|
|
|
76
67
|
go install github.com/sourcey/sourcey/go/sourcey-godoc/cmd/sourcey-godoc@latest
|
|
77
68
|
```
|
|
78
69
|
|
|
79
|
-
### Homebrew
|
|
70
|
+
### Homebrew (Go docs generator)
|
|
80
71
|
|
|
81
72
|
```bash
|
|
82
73
|
brew tap sourcey/tap
|
|
83
74
|
brew install sourcey-godoc
|
|
84
75
|
```
|
|
85
76
|
|
|
86
|
-
### Scoop
|
|
77
|
+
### Scoop (Go docs generator)
|
|
87
78
|
|
|
88
79
|
```powershell
|
|
89
80
|
scoop bucket add sourcey https://github.com/sourcey/scoop-bucket
|
package/dist/config.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export interface SourceyConfig {
|
|
|
41
41
|
/**
|
|
42
42
|
* Clean URLs without `.html` extensions.
|
|
43
43
|
* - `"slash"`: emit `foo/index.html` and link as `/foo/`.
|
|
44
|
-
* - `"strip"`:
|
|
44
|
+
* - `"strip"`: emit `foo.html` and link as `/foo`.
|
|
45
45
|
* - `false` (default): keep `.html` extensions.
|
|
46
46
|
*/
|
|
47
47
|
prettyUrls?: PrettyUrls;
|
|
@@ -281,10 +281,12 @@ export declare function resolveConfigFromRaw(raw: SourceyConfig, configDir: stri
|
|
|
281
281
|
export declare function slugify(name: string): string;
|
|
282
282
|
/** Build a path under a tab, handling empty slugs (root-level tabs). */
|
|
283
283
|
export declare function tabPath(tabSlug: string, file: string): string;
|
|
284
|
+
/** Build the on-disk output path for a tab landing page. */
|
|
285
|
+
export declare function tabIndexOutputPath(tabSlug: string, prettyUrls: PrettyUrls): string;
|
|
284
286
|
/**
|
|
285
287
|
* Build the on-disk output path for a content page within a tab.
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
+
* `"slash"` emits directory indexes. `false` and `"strip"` emit `.html`
|
|
289
|
+
* files; `"strip"` only changes the public URL, not the file layout.
|
|
288
290
|
*/
|
|
289
291
|
export declare function pageOutputPath(tabSlug: string, slug: string, prettyUrls: PrettyUrls): string;
|
|
290
292
|
export declare function hexToRgb(hex: string): string;
|
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
|
@@ -320,13 +320,24 @@ export function tabPath(tabSlug, file) {
|
|
|
320
320
|
return file;
|
|
321
321
|
return `${tabSlug}/${file}`;
|
|
322
322
|
}
|
|
323
|
+
/** Build the on-disk output path for a tab landing page. */
|
|
324
|
+
export function tabIndexOutputPath(tabSlug, prettyUrls) {
|
|
325
|
+
if (!tabSlug)
|
|
326
|
+
return "index.html";
|
|
327
|
+
if (prettyUrls === "slash")
|
|
328
|
+
return tabPath(tabSlug, "index.html");
|
|
329
|
+
return `${tabSlug}.html`;
|
|
330
|
+
}
|
|
323
331
|
/**
|
|
324
332
|
* Build the on-disk output path for a content page within a tab.
|
|
325
|
-
*
|
|
326
|
-
*
|
|
333
|
+
* `"slash"` emits directory indexes. `false` and `"strip"` emit `.html`
|
|
334
|
+
* files; `"strip"` only changes the public URL, not the file layout.
|
|
327
335
|
*/
|
|
328
336
|
export function pageOutputPath(tabSlug, slug, prettyUrls) {
|
|
329
|
-
if (
|
|
337
|
+
if (slug === "index") {
|
|
338
|
+
return tabIndexOutputPath(tabSlug, prettyUrls);
|
|
339
|
+
}
|
|
340
|
+
if (prettyUrls === "slash") {
|
|
330
341
|
return tabPath(tabSlug, `${slug}/index.html`);
|
|
331
342
|
}
|
|
332
343
|
return tabPath(tabSlug, `${slug}.html`);
|
package/dist/core/navigation.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { tagNavigationLabel } from "./tag-utils.js";
|
|
2
|
-
import { pageOutputPath,
|
|
2
|
+
import { pageOutputPath, tabIndexOutputPath } from "../config.js";
|
|
3
3
|
import { htmlId } from "../utils/html-id.js";
|
|
4
4
|
import { toPublicPath } from "../site-url.js";
|
|
5
5
|
/**
|
|
@@ -21,7 +21,7 @@ function navHref(outputPath, prettyUrls) {
|
|
|
21
21
|
* All hrefs are #anchor links (single-page spec rendering).
|
|
22
22
|
*/
|
|
23
23
|
export function buildNavFromSpec(spec, tabSlug, prettyUrls = false) {
|
|
24
|
-
const basePath = navHref(
|
|
24
|
+
const basePath = navHref(tabIndexOutputPath(tabSlug, prettyUrls), prettyUrls);
|
|
25
25
|
const groups = [];
|
|
26
26
|
// Intro group
|
|
27
27
|
const introItems = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-indexer.d.ts","sourceRoot":"","sources":["../../src/core/search-indexer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-indexer.d.ts","sourceRoot":"","sources":["../../src/core/search-indexer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AASjD,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAC9B,UAAU,EAAE,cAAc,EAC1B,SAAS,SAAM,EACf,aAAa,GAAE,MAAM,EAAO,EAC5B,UAAU,GAAE,UAAkB,GAC7B,MAAM,CA4FR"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toPublicPath } from "../site-url.js";
|
|
2
|
+
import { pageOutputPath, tabIndexOutputPath } from "../config.js";
|
|
1
3
|
import { htmlId } from "../utils/html-id.js";
|
|
2
4
|
// ---------------------------------------------------------------------------
|
|
3
5
|
// Index builder
|
|
@@ -10,19 +12,12 @@ export function buildSearchIndex(specs, pages, navigation, assetBase = "/", feat
|
|
|
10
12
|
const base = assetBase.endsWith("/") ? assetBase : assetBase + "/";
|
|
11
13
|
const featuredSet = new Set(featuredSlugs);
|
|
12
14
|
const entries = [];
|
|
13
|
-
const pageUrl = (tabSlug, slug) =>
|
|
14
|
-
const tabPrefix = tabSlug ? `${base}${tabSlug}/` : base;
|
|
15
|
-
if (prettyUrls === "strip")
|
|
16
|
-
return `${tabPrefix}${slug}`;
|
|
17
|
-
if (prettyUrls === "slash")
|
|
18
|
-
return `${tabPrefix}${slug}/`;
|
|
19
|
-
return `${tabPrefix}${slug}.html`;
|
|
20
|
-
};
|
|
15
|
+
const pageUrl = (tabSlug, slug) => toPublicPath(pageOutputPath(tabSlug, slug, prettyUrls), base, prettyUrls);
|
|
21
16
|
// Index OpenAPI specs
|
|
22
17
|
for (const [tabSlug, spec] of specs) {
|
|
23
18
|
const tab = navigation.tabs.find((t) => t.slug === tabSlug);
|
|
24
19
|
const tabLabel = tab?.label ?? tabSlug;
|
|
25
|
-
const tabBase = tabSlug
|
|
20
|
+
const tabBase = toPublicPath(tabIndexOutputPath(tabSlug, prettyUrls), base, prettyUrls);
|
|
26
21
|
// Operations
|
|
27
22
|
for (const op of spec.operations) {
|
|
28
23
|
entries.push({
|
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":"AA+CA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"AA+CA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuZ7E"}
|
package/dist/dev-server.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createServer as createViteServer } from "vite";
|
|
|
2
2
|
import { resolve, dirname, extname, basename, relative } from "node:path";
|
|
3
3
|
import { access } from "node:fs/promises";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { loadConfig, pageOutputPath, resolveConfigFromRaw,
|
|
5
|
+
import { loadConfig, pageOutputPath, resolveConfigFromRaw, tabIndexOutputPath } from "./config.js";
|
|
6
6
|
import { loadSpec } from "./core/loader.js";
|
|
7
7
|
import { convertToOpenApi3 } from "./core/converter.js";
|
|
8
8
|
import { parseSpec } from "./core/parser.js";
|
|
@@ -233,7 +233,7 @@ export async function startDevServer(options) {
|
|
|
233
233
|
if (cache !== snapshot)
|
|
234
234
|
return;
|
|
235
235
|
data.specsBySlug.set(content.tabSlug, spec);
|
|
236
|
-
const pageKey =
|
|
236
|
+
const pageKey = tabIndexOutputPath(content.tabSlug, config.prettyUrls);
|
|
237
237
|
const existing = data.pageMap.get(pageKey);
|
|
238
238
|
if (existing) {
|
|
239
239
|
existing.currentPage = { kind: "spec", spec };
|
|
@@ -256,7 +256,7 @@ export async function startDevServer(options) {
|
|
|
256
256
|
if (cache !== snapshot)
|
|
257
257
|
return;
|
|
258
258
|
data.specsBySlug.set(content.tabSlug, spec);
|
|
259
|
-
const pageKey =
|
|
259
|
+
const pageKey = tabIndexOutputPath(content.tabSlug, config.prettyUrls);
|
|
260
260
|
const existing = data.pageMap.get(pageKey);
|
|
261
261
|
if (existing) {
|
|
262
262
|
existing.currentPage = { kind: "spec", spec };
|
|
@@ -292,10 +292,15 @@ export async function startDevServer(options) {
|
|
|
292
292
|
pagePath = firstKey;
|
|
293
293
|
}
|
|
294
294
|
if (!pagePath.endsWith(".html")) {
|
|
295
|
-
|
|
295
|
+
if (config.prettyUrls === "strip") {
|
|
296
|
+
pagePath += ".html";
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
pagePath += "/index.html";
|
|
300
|
+
}
|
|
296
301
|
}
|
|
297
302
|
let pageData = data.pageMap.get(pagePath);
|
|
298
|
-
if (!pageData && pagePath.endsWith(".html") && !pagePath.endsWith("/index.html")) {
|
|
303
|
+
if (!pageData && config.prettyUrls === "slash" && pagePath.endsWith(".html") && !pagePath.endsWith("/index.html")) {
|
|
299
304
|
// Fallback for stale `.html` links when prettyUrls is enabled.
|
|
300
305
|
const pretty = pagePath.replace(/\.html$/, "/index.html");
|
|
301
306
|
pageData = data.pageMap.get(pretty);
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiBlD,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;CAC3B;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,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,CAoF5F;AA4CD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,6 @@ import { buildSiteNavigation } from "./core/navigation.js";
|
|
|
6
6
|
import { buildSearchIndex } from "./core/search-indexer.js";
|
|
7
7
|
import { generateLlmsTxt, generateLlmsFullTxt } from "./renderer/llms.js";
|
|
8
8
|
import { assembleSite, buildSiteConfig, collectDocsPagesByTab, createMinimalSpec, enforceChangelogDiagnostics, } from "./site-assembly.js";
|
|
9
|
-
import { toPublicPath } from "./site-url.js";
|
|
10
9
|
/**
|
|
11
10
|
* Build API documentation from a single OpenAPI/Swagger spec.
|
|
12
11
|
* Wraps the spec in a single-tab site and renders through the modern layout.
|
|
@@ -42,11 +41,6 @@ export async function buildSiteDocs(options = {}) {
|
|
|
42
41
|
const llmsFullTxt = generateLlmsFullTxt(sitePages, navigation, site);
|
|
43
42
|
const extraFiles = new Map(assembled.extraFiles);
|
|
44
43
|
const ogImages = new Map();
|
|
45
|
-
if (config.prettyUrls === "strip") {
|
|
46
|
-
const rules = buildStripRedirectRules(sitePages, config.baseUrl);
|
|
47
|
-
if (rules)
|
|
48
|
-
extraFiles.set("_redirects", rules);
|
|
49
|
-
}
|
|
50
44
|
if (!config.ogImage) {
|
|
51
45
|
const { generateOgImage } = await import("./og/generate-og-image.js");
|
|
52
46
|
const CONCURRENCY = 8;
|
|
@@ -129,33 +123,6 @@ function describePageForOg(page, defaultSiteName, changelogPermalinkOg) {
|
|
|
129
123
|
}
|
|
130
124
|
return { title: `${defaultSiteName} Reference` };
|
|
131
125
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Build Netlify/Cloudflare-Pages redirect rules that canonicalise every page onto
|
|
134
|
-
* its extensionless, slash-less URL. Emitted only when `prettyUrls === "strip"`.
|
|
135
|
-
*
|
|
136
|
-
* For each page at `dir/slug/index.html` the user sees `/dir/slug`; redirect
|
|
137
|
-
* `/dir/slug/` and (for backwards compatibility with pre-rename bookmarks)
|
|
138
|
-
* `/dir/slug.html` onto it.
|
|
139
|
-
*/
|
|
140
|
-
function buildStripRedirectRules(pages, baseUrl) {
|
|
141
|
-
const lines = [
|
|
142
|
-
"# Generated by Sourcey: pretty URL canonicalisation",
|
|
143
|
-
];
|
|
144
|
-
const seen = new Set();
|
|
145
|
-
for (const page of pages) {
|
|
146
|
-
const canonical = toPublicPath(page.outputPath, baseUrl, "strip");
|
|
147
|
-
if (canonical === "/" || canonical === "")
|
|
148
|
-
continue;
|
|
149
|
-
if (seen.has(canonical))
|
|
150
|
-
continue;
|
|
151
|
-
seen.add(canonical);
|
|
152
|
-
// Trailing-slash variant (what the file system would naturally serve).
|
|
153
|
-
lines.push(`${canonical}/ ${canonical} 301`);
|
|
154
|
-
// Stale `.html` bookmarks from before the migration.
|
|
155
|
-
lines.push(`${canonical}.html ${canonical} 301`);
|
|
156
|
-
}
|
|
157
|
-
return lines.length > 1 ? `${lines.join("\n")}\n` : null;
|
|
158
|
-
}
|
|
159
126
|
function summarizeVersion(version) {
|
|
160
127
|
if (version.summary)
|
|
161
128
|
return version.summary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-assembly.d.ts","sourceRoot":"","sources":["../src/site-assembly.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAIlF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAiB,QAAQ,EAAgB,MAAM,2BAA2B,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"site-assembly.d.ts","sourceRoot":"","sources":["../src/site-assembly.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAIlF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAiB,QAAQ,EAAgB,MAAM,2BAA2B,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CA0HhF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAKzE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,IAAI,EAAE,WAAW,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAgBzB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,IAAI,CAsBN;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,EAAE,EAClC,eAAe,UAAQ,GACtB,IAAI,CAYN;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAIjF;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAI9E;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAEvF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BjF;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAUlD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAuEpF"}
|
package/dist/site-assembly.js
CHANGED
|
@@ -10,7 +10,7 @@ import { loadDoxygenTab } from "./core/doxygen-loader.js";
|
|
|
10
10
|
import { loadGodocTab } from "./core/godoc-loader.js";
|
|
11
11
|
import { buildNavFromSpec, buildNavFromPages } from "./core/navigation.js";
|
|
12
12
|
import { generateChangelogFeeds } from "./renderer/changelog-feed.js";
|
|
13
|
-
import { pageOutputPath, tabPath } from "./config.js";
|
|
13
|
+
import { pageOutputPath, tabIndexOutputPath, tabPath } from "./config.js";
|
|
14
14
|
import { toPublicUrl } from "./site-url.js";
|
|
15
15
|
export async function assembleSite(config) {
|
|
16
16
|
const specsBySlug = await loadSpecs(config.tabs);
|
|
@@ -25,8 +25,9 @@ export async function assembleSite(config) {
|
|
|
25
25
|
const navTab = buildNavFromSpec(spec, tab.slug, config.prettyUrls);
|
|
26
26
|
navTab.label = tab.label;
|
|
27
27
|
siteTabs.push(navTab);
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
const outputPath = tabIndexOutputPath(tab.slug, config.prettyUrls);
|
|
29
|
+
pageMap.set(outputPath, {
|
|
30
|
+
outputPath,
|
|
30
31
|
currentPage: { kind: "spec", spec },
|
|
31
32
|
spec,
|
|
32
33
|
tabSlug: tab.slug,
|
|
@@ -104,7 +105,7 @@ export async function assembleSite(config) {
|
|
|
104
105
|
siteTabs.push(buildNavFromPages(tab, pagesByPath, config.prettyUrls));
|
|
105
106
|
}
|
|
106
107
|
if (config.changelog.permalinks) {
|
|
107
|
-
addPermalinkPages(pageMap);
|
|
108
|
+
addPermalinkPages(pageMap, config.prettyUrls);
|
|
108
109
|
}
|
|
109
110
|
const sitePages = Array.from(pageMap.values());
|
|
110
111
|
resolveInternalLinks(sitePages, config);
|
|
@@ -285,7 +286,7 @@ function attachChangelogFeeds(pages, config) {
|
|
|
285
286
|
const changelog = page.currentPage.changelog;
|
|
286
287
|
const versionHref = (version) => {
|
|
287
288
|
if (config.changelog.permalinks) {
|
|
288
|
-
return toPublicUrl(
|
|
289
|
+
return toPublicUrl(pageOutputPath(page.tabSlug, `${changelog.slug}/${version.id}`, config.prettyUrls), config.siteUrl, config.baseUrl, config.prettyUrls);
|
|
289
290
|
}
|
|
290
291
|
return `${toPublicUrl(page.outputPath, config.siteUrl, config.baseUrl, config.prettyUrls)}#${version.id}`;
|
|
291
292
|
};
|
|
@@ -326,7 +327,7 @@ function attachChangelogFeeds(pages, config) {
|
|
|
326
327
|
}
|
|
327
328
|
return extraFiles;
|
|
328
329
|
}
|
|
329
|
-
function addPermalinkPages(pageMap) {
|
|
330
|
+
function addPermalinkPages(pageMap, prettyUrls) {
|
|
330
331
|
const changelogPages = Array.from(pageMap.values()).filter(isMainChangelogSitePage);
|
|
331
332
|
for (const page of changelogPages) {
|
|
332
333
|
const changelog = page.currentPage.changelog;
|
|
@@ -338,7 +339,7 @@ function addPermalinkPages(pageMap) {
|
|
|
338
339
|
headings: [],
|
|
339
340
|
permalinkVersionId: version.id,
|
|
340
341
|
};
|
|
341
|
-
const outputPath =
|
|
342
|
+
const outputPath = pageOutputPath(page.tabSlug, `${changelog.slug}/${version.id}`, prettyUrls);
|
|
342
343
|
pageMap.set(outputPath, {
|
|
343
344
|
outputPath,
|
|
344
345
|
currentPage: { kind: "changelog", changelog: permalinkPage },
|
|
@@ -436,9 +437,7 @@ function resolveInternalHref(href, outputPath, docsSourcePath, pathMap, sourceBa
|
|
|
436
437
|
const [path, hash] = href.split("#", 2);
|
|
437
438
|
const hashSuffix = hash ? `#${hash}` : "";
|
|
438
439
|
const sourcePath = path.replace(/\\/g, "/");
|
|
439
|
-
const clean = sourcePath.replace(/^\/+/, "").replace(/\/+$/, "").replace(/\.(md|mdx)$/, "");
|
|
440
|
-
if (clean.endsWith(".html"))
|
|
441
|
-
return null;
|
|
440
|
+
const clean = sourcePath.replace(/^\/+/, "").replace(/\/+$/, "").replace(/\.(md|mdx|html)$/, "");
|
|
442
441
|
const pageDir = outputPath.includes("/")
|
|
443
442
|
? outputPath.substring(0, outputPath.lastIndexOf("/"))
|
|
444
443
|
: "";
|
|
@@ -486,6 +485,9 @@ function resolveInternalHref(href, outputPath, docsSourcePath, pathMap, sourceBa
|
|
|
486
485
|
function toPrettyLink(target, prettyUrls) {
|
|
487
486
|
if (!prettyUrls)
|
|
488
487
|
return target;
|
|
488
|
+
if (prettyUrls === "strip" && target.endsWith(".html")) {
|
|
489
|
+
return target.slice(0, -(".html".length));
|
|
490
|
+
}
|
|
489
491
|
if (target === "index.html")
|
|
490
492
|
return "";
|
|
491
493
|
if (target.endsWith("/index.html")) {
|
package/dist/site-url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-url.d.ts","sourceRoot":"","sources":["../src/site-url.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBrE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,UAAU,GAAE,UAAkB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"site-url.d.ts","sourceRoot":"","sources":["../src/site-url.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBrE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,UAAU,GAAE,UAAkB,GAAG,MAAM,CAsBrG;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,SAAK,EACZ,UAAU,GAAE,UAAkB,GAC7B,MAAM,CAER;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,MAAM,CAcnE"}
|
package/dist/site-url.js
CHANGED
|
@@ -41,6 +41,9 @@ export function toPublicPath(outputPath, baseUrl = "", prettyUrls = false) {
|
|
|
41
41
|
}
|
|
42
42
|
return `${prefix}${withSlash}`;
|
|
43
43
|
}
|
|
44
|
+
if (prettyUrls === "strip" && cleanOutputPath.endsWith(".html")) {
|
|
45
|
+
return `${prefix}${cleanOutputPath.slice(0, -(".html".length))}`;
|
|
46
|
+
}
|
|
44
47
|
return `${prefix}${cleanOutputPath}`;
|
|
45
48
|
}
|
|
46
49
|
export function toAbsoluteUrl(publicPath, siteUrl) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sourcey",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.3",
|
|
4
4
|
"description": "Precision documentation from OpenAPI, MCP, Doxygen, godoc, and Markdown. Static HTML you own.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
30
30
|
"godoc:go:test": "cd go/sourcey-godoc && go test ./...",
|
|
31
31
|
"godoc:go:vet": "cd go/sourcey-godoc && go vet ./...",
|
|
32
|
+
"godoc:packages:test": "packaging/sourcey-godoc/render-package-managers.test.sh",
|
|
32
33
|
"typecheck": "tsc --noEmit",
|
|
33
34
|
"prepublishOnly": "npm run build"
|
|
34
35
|
},
|