@dogsbay/format-astro 0.2.0-beta.91 → 0.2.0-beta.93
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/base-path.d.ts +10 -0
- package/dist/base-path.d.ts.map +1 -1
- package/dist/base-path.js +11 -1
- package/dist/base-path.js.map +1 -1
- package/dist/granularity.d.ts +83 -0
- package/dist/granularity.d.ts.map +1 -0
- package/dist/granularity.js +247 -0
- package/dist/granularity.js.map +1 -0
- package/dist/project.d.ts +18 -0
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +181 -42
- package/dist/project.js.map +1 -1
- package/dist/serialize.js +19 -1
- package/dist/serialize.js.map +1 -1
- package/package.json +4 -4
package/dist/base-path.d.ts
CHANGED
|
@@ -176,6 +176,16 @@ export declare function resolvePrefixes(siteUrl: string | undefined, basePath: s
|
|
|
176
176
|
* - default basePath, empty slug → `"/docs"`
|
|
177
177
|
* - empty basePath, slug "auth" → `"/auth"`
|
|
178
178
|
* - empty basePath, empty slug → `"/"`
|
|
179
|
+
* - empty basePath, slug "index" → `"/"` (root home)
|
|
180
|
+
*
|
|
181
|
+
* A bare `index` slug means the directory root: `content/index.md` is
|
|
182
|
+
* deliberately loaded with slug `"index"` (so the root-home and `.md`-mirror
|
|
183
|
+
* special cases fire — see plans/dir-index-slug-nav-drop.md), but the page is
|
|
184
|
+
* served at the directory URL and its nav href drops `index` (via
|
|
185
|
+
* `fileToHref`'s `/index` strip). `currentPath` must match that nav href for
|
|
186
|
+
* `getPagination` to find the home page, so we drop a whole-slug `index` here
|
|
187
|
+
* too. Without this the home page's `currentPath` (`/base/index`) never matches
|
|
188
|
+
* its nav entry (`/base`), so prev/next silently falls back to the first item.
|
|
179
189
|
*/
|
|
180
190
|
export declare function buildCurrentPath(basePath: string, section: string | undefined, slug: string): string;
|
|
181
191
|
//# sourceMappingURL=base-path.d.ts.map
|
package/dist/base-path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-path.d.ts","sourceRoot":"","sources":["../src/base-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKnE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,MAAM,GACX,MAAM,CAMR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG;IACzD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAiBA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IACD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CASA;AAED
|
|
1
|
+
{"version":3,"file":"base-path.d.ts","sourceRoot":"","sources":["../src/base-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKnE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,MAAM,GACX,MAAM,CAMR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG;IACzD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAiBA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IACD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CASA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,MAAM,GACX,MAAM,CAMR"}
|
package/dist/base-path.js
CHANGED
|
@@ -225,6 +225,16 @@ export function resolvePrefixes(siteUrl, basePath) {
|
|
|
225
225
|
* - default basePath, empty slug → `"/docs"`
|
|
226
226
|
* - empty basePath, slug "auth" → `"/auth"`
|
|
227
227
|
* - empty basePath, empty slug → `"/"`
|
|
228
|
+
* - empty basePath, slug "index" → `"/"` (root home)
|
|
229
|
+
*
|
|
230
|
+
* A bare `index` slug means the directory root: `content/index.md` is
|
|
231
|
+
* deliberately loaded with slug `"index"` (so the root-home and `.md`-mirror
|
|
232
|
+
* special cases fire — see plans/dir-index-slug-nav-drop.md), but the page is
|
|
233
|
+
* served at the directory URL and its nav href drops `index` (via
|
|
234
|
+
* `fileToHref`'s `/index` strip). `currentPath` must match that nav href for
|
|
235
|
+
* `getPagination` to find the home page, so we drop a whole-slug `index` here
|
|
236
|
+
* too. Without this the home page's `currentPath` (`/base/index`) never matches
|
|
237
|
+
* its nav entry (`/base`), so prev/next silently falls back to the first item.
|
|
228
238
|
*/
|
|
229
239
|
export function buildCurrentPath(basePath, section, slug) {
|
|
230
240
|
const parts = [];
|
|
@@ -232,7 +242,7 @@ export function buildCurrentPath(basePath, section, slug) {
|
|
|
232
242
|
parts.push(seg);
|
|
233
243
|
if (section)
|
|
234
244
|
parts.push(section);
|
|
235
|
-
if (slug)
|
|
245
|
+
if (slug && slug !== "index")
|
|
236
246
|
parts.push(slug);
|
|
237
247
|
return parts.length === 0 ? "/" : `/${parts.join("/")}`;
|
|
238
248
|
}
|
package/dist/base-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-path.js","sourceRoot":"","sources":["../src/base-path.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-path.js","sourceRoot":"","sources":["../src/base-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Granularity views — assemble a whole-book page from topic pages + nav.
|
|
3
|
+
*
|
|
4
|
+
* The additive-MVP core (see plans/granularity-views.md). Given the topic-grained
|
|
5
|
+
* `ExportPage[]` + the `NavItem[]` tree a site already produces, this reassembles
|
|
6
|
+
* an entire nav subtree into ONE "book" page:
|
|
7
|
+
* - each nav node becomes a heading (level = nav depth; book title is the
|
|
8
|
+
* implicit H1, so a top-level node is H2, its children H3, … clamped at H6);
|
|
9
|
+
* - a topic's own body headings are shifted down by `level − 1` so they nest
|
|
10
|
+
* under their topic's title;
|
|
11
|
+
* - every node gets a stable, page-unique anchor, so a topic resolves to
|
|
12
|
+
* `<book>/_book#<anchor>` (the "Read as single page" button target).
|
|
13
|
+
*
|
|
14
|
+
* Pure + source-agnostic: it never touches the network or the original source,
|
|
15
|
+
* only the already-converted `TreeNode` trees ("convert once, project many").
|
|
16
|
+
* The original topic trees are NOT mutated — each is deep-cloned before its
|
|
17
|
+
* headings are shifted.
|
|
18
|
+
*
|
|
19
|
+
* This is a platform generalization of `format-fluidtopics-rest/src/single-page.ts`
|
|
20
|
+
* (which is khub-coupled). The FT `--single-page` branch will fold into this.
|
|
21
|
+
*/
|
|
22
|
+
import type { ExportPage, NavItem, TreeNode } from "@dogsbay/types";
|
|
23
|
+
/**
|
|
24
|
+
* Reserved route segment for the book rollup. NOT `_`-prefixed: Astro treats
|
|
25
|
+
* `src/pages/` files/dirs starting with `_` as private (non-routable), so a
|
|
26
|
+
* `_book.astro` would 404. `~book` is collision-proof instead — `slugify`
|
|
27
|
+
* strips `~`, so no content slug can ever produce this segment (no slugifier
|
|
28
|
+
* reservation needed).
|
|
29
|
+
*/
|
|
30
|
+
export declare const BOOK_SEGMENT = "~book";
|
|
31
|
+
export interface AssembleBookOptions {
|
|
32
|
+
/** Route prefix the nav hrefs carry (e.g. "/docs" or ""); stripped to get slugs. */
|
|
33
|
+
hrefPrefix?: string;
|
|
34
|
+
/** Book page title; defaults to the first nav item's label. */
|
|
35
|
+
title?: string;
|
|
36
|
+
/** Reserved suffix segment for the rollup route. Default `_book`. */
|
|
37
|
+
bookSegment?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface BookView {
|
|
40
|
+
/** The assembled book page (noindex; excluded from nav/sitemap/search/llms). */
|
|
41
|
+
page: ExportPage;
|
|
42
|
+
/**
|
|
43
|
+
* topic slug → its anchor on the book page. Powers the per-topic
|
|
44
|
+
* "Read as single page" button (`<bookRoute>#<anchor>`).
|
|
45
|
+
*/
|
|
46
|
+
topicAnchors: Map<string, string>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Rough estimate of a TreeNode[]'s textual content size in bytes — the sum of
|
|
50
|
+
* its prose text, pre-rendered html, and string prop values (code, etc.). Used
|
|
51
|
+
* as the granularity size cap's input: it tracks source size closely enough to
|
|
52
|
+
* catch the 10 MB+ rollups (rest_api, installing) that blow up build + DOM,
|
|
53
|
+
* without a full serialize. See docs-dev/granularity-book-perf.md.
|
|
54
|
+
*/
|
|
55
|
+
export declare function estimateTreeBytes(tree: TreeNode[]): number;
|
|
56
|
+
/**
|
|
57
|
+
* Assemble one book page from a nav subtree + the topic pages it references.
|
|
58
|
+
* Returns null when the subtree references no actual pages.
|
|
59
|
+
*/
|
|
60
|
+
export declare function assembleBook(nav: NavItem[], pages: ExportPage[], opts?: AssembleBookOptions): BookView | null;
|
|
61
|
+
/** The "Open as page ↗" affordance — a link from a book section back to its topic page. */
|
|
62
|
+
export declare function openAsPageNode(slug: string, hrefPrefix: string): TreeNode;
|
|
63
|
+
/** A heading node for a nav entry's title, carrying the explicit anchor id. */
|
|
64
|
+
export declare function bookHeading(level: number, title: string, anchor: string): TreeNode;
|
|
65
|
+
/** Shift every heading in a (topic body) tree down by `offset` ranks (max H6). */
|
|
66
|
+
export declare function shiftHeadings(tree: TreeNode[], offset: number): void;
|
|
67
|
+
/**
|
|
68
|
+
* Rewrite **intra-book** xrefs to in-page anchors so the reader stays in the
|
|
69
|
+
* book. A link is rewritten iff its target slug is in *this* book's
|
|
70
|
+
* `topicAnchors` (the "is it in this book?" test). Cross-book links (target not
|
|
71
|
+
* in the book) and external links are left untouched — they keep pointing at the
|
|
72
|
+
* canonical topic page, which is correct. Mutates `tree` (already a clone).
|
|
73
|
+
*/
|
|
74
|
+
export declare function rewriteIntraBookLinks(tree: TreeNode[], topicAnchors: Map<string, string>, hrefPrefix: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Longest common path prefix (slash-segment-wise) of the member slugs — the
|
|
77
|
+
* book's base route (e.g. the FT book base `…/16.0`). Falls back to `fallback`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function bookSlugFrom(slugs: string[], fallback: string): string;
|
|
80
|
+
/** Strip the route prefix + leading slash + anchor/query from a nav href → slug. */
|
|
81
|
+
export declare function slugFromHref(href: string | undefined, hrefPrefix: string): string;
|
|
82
|
+
export declare function slugify(text: string): string;
|
|
83
|
+
//# sourceMappingURL=granularity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granularity.d.ts","sourceRoot":"","sources":["../src/granularity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAW,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE7E;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,gFAAgF;IAChF,IAAI,EAAE,UAAU,CAAC;IACjB;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAoB1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EAAE,EACd,KAAK,EAAE,UAAU,EAAE,EACnB,IAAI,GAAE,mBAAwB,GAC7B,QAAQ,GAAG,IAAI,CAuEjB;AAID,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAOzE;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAMlF;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUpE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EAAE,EAChB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,UAAU,EAAE,MAAM,GACjB,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUtE;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKjF;AAuCD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU5C"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reserved route segment for the book rollup. NOT `_`-prefixed: Astro treats
|
|
3
|
+
* `src/pages/` files/dirs starting with `_` as private (non-routable), so a
|
|
4
|
+
* `_book.astro` would 404. `~book` is collision-proof instead — `slugify`
|
|
5
|
+
* strips `~`, so no content slug can ever produce this segment (no slugifier
|
|
6
|
+
* reservation needed).
|
|
7
|
+
*/
|
|
8
|
+
export const BOOK_SEGMENT = "~book";
|
|
9
|
+
/**
|
|
10
|
+
* Rough estimate of a TreeNode[]'s textual content size in bytes — the sum of
|
|
11
|
+
* its prose text, pre-rendered html, and string prop values (code, etc.). Used
|
|
12
|
+
* as the granularity size cap's input: it tracks source size closely enough to
|
|
13
|
+
* catch the 10 MB+ rollups (rest_api, installing) that blow up build + DOM,
|
|
14
|
+
* without a full serialize. See docs-dev/granularity-book-perf.md.
|
|
15
|
+
*/
|
|
16
|
+
export function estimateTreeBytes(tree) {
|
|
17
|
+
let bytes = 0;
|
|
18
|
+
const walk = (nodes) => {
|
|
19
|
+
for (const node of nodes) {
|
|
20
|
+
const n = node;
|
|
21
|
+
if (typeof n.html === "string")
|
|
22
|
+
bytes += n.html.length;
|
|
23
|
+
if (n.props) {
|
|
24
|
+
for (const v of Object.values(n.props))
|
|
25
|
+
if (typeof v === "string")
|
|
26
|
+
bytes += v.length;
|
|
27
|
+
}
|
|
28
|
+
if (Array.isArray(n.inline)) {
|
|
29
|
+
for (const i of n.inline) {
|
|
30
|
+
if (typeof i.text === "string")
|
|
31
|
+
bytes += i.text.length;
|
|
32
|
+
else if (typeof i.value === "string")
|
|
33
|
+
bytes += i.value.length;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (n.children?.length)
|
|
37
|
+
walk(n.children);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
walk(tree);
|
|
41
|
+
return bytes;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Assemble one book page from a nav subtree + the topic pages it references.
|
|
45
|
+
* Returns null when the subtree references no actual pages.
|
|
46
|
+
*/
|
|
47
|
+
export function assembleBook(nav, pages, opts = {}) {
|
|
48
|
+
const hrefPrefix = opts.hrefPrefix ?? "";
|
|
49
|
+
const bookSegment = opts.bookSegment ?? BOOK_SEGMENT;
|
|
50
|
+
const bySlug = new Map(pages.map((p) => [p.slug, p]));
|
|
51
|
+
const topicAnchors = new Map();
|
|
52
|
+
const memberSlugs = [];
|
|
53
|
+
const seenAnchor = new Map();
|
|
54
|
+
const uniqueAnchor = (base) => {
|
|
55
|
+
const b = base || "section";
|
|
56
|
+
const n = seenAnchor.get(b) ?? 0;
|
|
57
|
+
seenAnchor.set(b, n + 1);
|
|
58
|
+
return n === 0 ? b : `${b}-${n}`;
|
|
59
|
+
};
|
|
60
|
+
const ordered = [];
|
|
61
|
+
const assign = (items, depth) => {
|
|
62
|
+
for (const item of items) {
|
|
63
|
+
const level = Math.min(depth + 2, 6);
|
|
64
|
+
const slug = slugFromHref(item.href, hrefPrefix);
|
|
65
|
+
const anchor = uniqueAnchor(slugify(slug ? lastSegment(slug) : item.label));
|
|
66
|
+
ordered.push({ label: item.label, level, slug, anchor });
|
|
67
|
+
if (slug && bySlug.has(slug)) {
|
|
68
|
+
topicAnchors.set(slug, anchor);
|
|
69
|
+
memberSlugs.push(slug);
|
|
70
|
+
}
|
|
71
|
+
if (item.children?.length)
|
|
72
|
+
assign(item.children, depth + 1);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
assign(nav, 0);
|
|
76
|
+
if (memberSlugs.length === 0)
|
|
77
|
+
return null;
|
|
78
|
+
// Pass 2 — assemble: a heading per node, then the topic body (cloned, headings
|
|
79
|
+
// shifted to nest, and intra-book xrefs rewritten to in-page anchors).
|
|
80
|
+
const tree = [];
|
|
81
|
+
for (const { label, level, slug, anchor } of ordered) {
|
|
82
|
+
tree.push(bookHeading(level, label, anchor));
|
|
83
|
+
const page = slug ? bySlug.get(slug) : undefined;
|
|
84
|
+
if (page) {
|
|
85
|
+
// "Open as page ↗" — the way back from the book to the focused topic.
|
|
86
|
+
// Pushed OUTSIDE the body so rewriteIntraBookLinks (which runs on the
|
|
87
|
+
// clone only) doesn't collapse it to an in-page anchor.
|
|
88
|
+
tree.push(openAsPageNode(slug, hrefPrefix));
|
|
89
|
+
// Clone so we never mutate the topic page that is also emitted standalone.
|
|
90
|
+
const body = structuredClone(page.tree);
|
|
91
|
+
shiftHeadings(body, level - 1);
|
|
92
|
+
rewriteIntraBookLinks(body, topicAnchors, hrefPrefix);
|
|
93
|
+
tree.push(...body);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const title = opts.title ?? nav[0]?.label ?? "Book";
|
|
97
|
+
const base = bookSlugFrom(memberSlugs, slugify(title));
|
|
98
|
+
const slug = `${base}/${bookSegment}`;
|
|
99
|
+
const page = {
|
|
100
|
+
slug,
|
|
101
|
+
title,
|
|
102
|
+
tree,
|
|
103
|
+
headings: extractBookHeadings(tree),
|
|
104
|
+
// Quarantine marker — the emitters keep the book out of search / sitemap /
|
|
105
|
+
// llms and tag it noindex. Kept in frontmatter so it round-trips + is visible.
|
|
106
|
+
frontmatter: { noindex: true, granularity: "book" },
|
|
107
|
+
};
|
|
108
|
+
return { page, topicAnchors };
|
|
109
|
+
}
|
|
110
|
+
// ── pure helpers (ported from format-fluidtopics-rest/single-page.ts) ──────
|
|
111
|
+
/** The "Open as page ↗" affordance — a link from a book section back to its topic page. */
|
|
112
|
+
export function openAsPageNode(slug, hrefPrefix) {
|
|
113
|
+
const route = hrefPrefix ? `${hrefPrefix}/${slug}` : `/${slug}`;
|
|
114
|
+
return {
|
|
115
|
+
type: "paragraph",
|
|
116
|
+
props: { class: "dsb-open-as-page" },
|
|
117
|
+
children: [{ type: "prose", inline: [{ type: "link", href: route, children: [{ type: "text", text: "Open as page ↗" }] }] }],
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** A heading node for a nav entry's title, carrying the explicit anchor id. */
|
|
121
|
+
export function bookHeading(level, title, anchor) {
|
|
122
|
+
return {
|
|
123
|
+
type: "heading",
|
|
124
|
+
props: { level, slug: anchor, text: title },
|
|
125
|
+
children: [{ type: "prose", inline: [{ type: "text", text: title }] }],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** Shift every heading in a (topic body) tree down by `offset` ranks (max H6). */
|
|
129
|
+
export function shiftHeadings(tree, offset) {
|
|
130
|
+
if (offset <= 0)
|
|
131
|
+
return;
|
|
132
|
+
for (const n of tree) {
|
|
133
|
+
if (n.type === "heading") {
|
|
134
|
+
const lvl = n.props?.level ?? 1;
|
|
135
|
+
if (!n.props)
|
|
136
|
+
n.props = {};
|
|
137
|
+
n.props.level = Math.min(lvl + offset, 6);
|
|
138
|
+
}
|
|
139
|
+
if (n.children)
|
|
140
|
+
shiftHeadings(n.children, offset);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Rewrite **intra-book** xrefs to in-page anchors so the reader stays in the
|
|
145
|
+
* book. A link is rewritten iff its target slug is in *this* book's
|
|
146
|
+
* `topicAnchors` (the "is it in this book?" test). Cross-book links (target not
|
|
147
|
+
* in the book) and external links are left untouched — they keep pointing at the
|
|
148
|
+
* canonical topic page, which is correct. Mutates `tree` (already a clone).
|
|
149
|
+
*/
|
|
150
|
+
export function rewriteIntraBookLinks(tree, topicAnchors, hrefPrefix) {
|
|
151
|
+
const rewriteInline = (nodes) => {
|
|
152
|
+
for (const n of nodes) {
|
|
153
|
+
if (n.type === "link" && typeof n.href === "string") {
|
|
154
|
+
const slug = slugFromHref(n.href, hrefPrefix);
|
|
155
|
+
const anchor = slug ? topicAnchors.get(slug) : undefined;
|
|
156
|
+
if (anchor)
|
|
157
|
+
n.href = `#${anchor}`;
|
|
158
|
+
}
|
|
159
|
+
if (Array.isArray(n.children))
|
|
160
|
+
rewriteInline(n.children);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const walk = (ns) => {
|
|
164
|
+
for (const n of ns) {
|
|
165
|
+
if (n.inline)
|
|
166
|
+
rewriteInline(n.inline);
|
|
167
|
+
if (n.children)
|
|
168
|
+
walk(n.children);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
walk(tree);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Longest common path prefix (slash-segment-wise) of the member slugs — the
|
|
175
|
+
* book's base route (e.g. the FT book base `…/16.0`). Falls back to `fallback`.
|
|
176
|
+
*/
|
|
177
|
+
export function bookSlugFrom(slugs, fallback) {
|
|
178
|
+
const parts = slugs.filter(Boolean).map((s) => s.split("/"));
|
|
179
|
+
if (!parts.length)
|
|
180
|
+
return fallback;
|
|
181
|
+
const first = parts[0];
|
|
182
|
+
let i = 0;
|
|
183
|
+
for (; i < first.length; i++) {
|
|
184
|
+
const seg = first[i];
|
|
185
|
+
if (!parts.every((p) => p[i] === seg))
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
return first.slice(0, i).join("/") || fallback;
|
|
189
|
+
}
|
|
190
|
+
/** Strip the route prefix + leading slash + anchor/query from a nav href → slug. */
|
|
191
|
+
export function slugFromHref(href, hrefPrefix) {
|
|
192
|
+
if (!href)
|
|
193
|
+
return "";
|
|
194
|
+
let s = href.split("#")[0].split("?")[0].trim();
|
|
195
|
+
if (hrefPrefix && s.startsWith(hrefPrefix))
|
|
196
|
+
s = s.slice(hrefPrefix.length);
|
|
197
|
+
return s.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
198
|
+
}
|
|
199
|
+
function lastSegment(slug) {
|
|
200
|
+
return slug.split("/").pop() ?? slug;
|
|
201
|
+
}
|
|
202
|
+
/** Collect Heading[] from an assembled tree (nodes already carry props.slug/level/text). */
|
|
203
|
+
function extractBookHeadings(tree) {
|
|
204
|
+
const out = [];
|
|
205
|
+
const walk = (ns) => {
|
|
206
|
+
for (const n of ns) {
|
|
207
|
+
if (n.type === "heading") {
|
|
208
|
+
out.push({
|
|
209
|
+
depth: n.props?.level ?? 1,
|
|
210
|
+
slug: n.props?.slug ?? "",
|
|
211
|
+
text: n.props?.text ?? inlineText(n),
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
if (n.children)
|
|
215
|
+
walk(n.children);
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
walk(tree);
|
|
219
|
+
return out;
|
|
220
|
+
}
|
|
221
|
+
function inlineText(node) {
|
|
222
|
+
const parts = [];
|
|
223
|
+
const fromInline = (ns = []) => {
|
|
224
|
+
for (const n of ns) {
|
|
225
|
+
if (typeof n.text === "string")
|
|
226
|
+
parts.push(n.text);
|
|
227
|
+
else if (Array.isArray(n.children))
|
|
228
|
+
fromInline(n.children);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
if (node.inline)
|
|
232
|
+
fromInline(node.inline);
|
|
233
|
+
if (node.children)
|
|
234
|
+
for (const c of node.children)
|
|
235
|
+
parts.push(inlineText(c));
|
|
236
|
+
return parts.join("").trim();
|
|
237
|
+
}
|
|
238
|
+
export function slugify(text) {
|
|
239
|
+
return (text
|
|
240
|
+
.toLowerCase()
|
|
241
|
+
.replace(/[^\w\s-]/g, "")
|
|
242
|
+
.replace(/\s+/g, "-")
|
|
243
|
+
.replace(/-+/g, "-")
|
|
244
|
+
.replace(/^-+|-+$/g, "")
|
|
245
|
+
.trim() || "section");
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=granularity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granularity.js","sourceRoot":"","sources":["../src/granularity.ts"],"names":[],"mappings":"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"}
|
package/dist/project.d.ts
CHANGED
|
@@ -224,6 +224,24 @@ export interface AstroProjectOptions {
|
|
|
224
224
|
* to static `.md` files in `dist/`. Default `true`.
|
|
225
225
|
*/
|
|
226
226
|
mdMirror?: boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Granularity views — emit aggregate "single-page" views alongside the
|
|
229
|
+
* topic-grained pages. Additive: the topic site is unchanged; aggregates
|
|
230
|
+
* are quarantined (noindex + excludeFromSearch → robots/sitemap/pagefind/
|
|
231
|
+
* llms all exclude them) and kept out of nav. See plans/granularity-views.md.
|
|
232
|
+
*
|
|
233
|
+
* Per-node opt-in via the nav file's `single-page: yes | no | children`
|
|
234
|
+
* annotation (default "no"). `book: true` is the legacy all-on switch: it
|
|
235
|
+
* seeds the top-level groups as if each were `single-page: yes`, so a node's
|
|
236
|
+
* own annotation still overrides. `maxSinglePageMB` (default 3) is a safety
|
|
237
|
+
* cap — a rollup whose source exceeds it is skipped with a warning instead of
|
|
238
|
+
* building a multi-minute / multi-MB page. See plans/granularity-views.md and
|
|
239
|
+
* docs-dev/granularity-book-perf.md.
|
|
240
|
+
*/
|
|
241
|
+
granularity?: {
|
|
242
|
+
book?: boolean;
|
|
243
|
+
maxSinglePageMB?: number;
|
|
244
|
+
};
|
|
227
245
|
/**
|
|
228
246
|
* `Content-Signal` directive for the AI training corpus permission
|
|
229
247
|
* emitted in robots.txt. Default `"no"` — opt out of training by
|
package/dist/project.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
|