@dogsbay/format-astro 0.2.0-beta.0
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 +83 -0
- package/dist/base-path.d.ts.map +1 -0
- package/dist/base-path.js +110 -0
- package/dist/base-path.js.map +1 -0
- package/dist/cli.d.ts +22 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +53 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/lead.d.ts +39 -0
- package/dist/lead.d.ts.map +1 -0
- package/dist/lead.js +38 -0
- package/dist/lead.js.map +1 -0
- package/dist/llms-txt.d.ts +81 -0
- package/dist/llms-txt.d.ts.map +1 -0
- package/dist/llms-txt.js +288 -0
- package/dist/llms-txt.js.map +1 -0
- package/dist/plugins.d.ts +40 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +339 -0
- package/dist/plugins.js.map +1 -0
- package/dist/project.d.ts +320 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +1858 -0
- package/dist/project.js.map +1 -0
- package/dist/serialize.d.ts +30 -0
- package/dist/serialize.d.ts.map +1 -0
- package/dist/serialize.js +1197 -0
- package/dist/serialize.js.map +1 -0
- package/dist/taxonomy.d.ts +87 -0
- package/dist/taxonomy.d.ts.map +1 -0
- package/dist/taxonomy.js +467 -0
- package/dist/taxonomy.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { ExportPage } from "@dogsbay/types";
|
|
2
|
+
/** Per-taxonomy emit config — resolved (defaults filled). */
|
|
3
|
+
export interface TaxonomyEmitConfig {
|
|
4
|
+
/** Path prefix for emitted index/term pages, e.g. "/tags". */
|
|
5
|
+
indexPath: string;
|
|
6
|
+
/** Optional enum of allowed term values (for validation; not enforced here). */
|
|
7
|
+
values?: string[];
|
|
8
|
+
/** When true, slash-nested terms expand into all their prefixes. */
|
|
9
|
+
hierarchical: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Per-prefix display config (`{ <segment>: { label?, color? } }`)
|
|
12
|
+
* baked into emitted route templates so the taxonomy index +
|
|
13
|
+
* term pages render top-level segments as human labels.
|
|
14
|
+
* Mirrors the chip-level config consumed by `<TagList>`.
|
|
15
|
+
*/
|
|
16
|
+
prefixes?: Record<string, {
|
|
17
|
+
label?: string;
|
|
18
|
+
color?: string;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Per-slug display labels (`{ <full/slug>: <display> }`). Drives
|
|
22
|
+
* heading / breadcrumb / sub-tag-pill text on the auto-emitted
|
|
23
|
+
* taxonomy pages. URL paths still use slugs.
|
|
24
|
+
*/
|
|
25
|
+
labels?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
/** A single term entry in the built taxonomy index. */
|
|
28
|
+
export interface TaxonomyTerm {
|
|
29
|
+
/** The term path, e.g. ["api"] or ["api", "rest"]. Joined by "/" in URLs. */
|
|
30
|
+
fullPath: string[];
|
|
31
|
+
/** Display label — leaf segment when nested, full path joined otherwise. */
|
|
32
|
+
label: string;
|
|
33
|
+
/** Pages tagged with this term (or any descendant when hierarchical). */
|
|
34
|
+
pages: TaxonomyPageRef[];
|
|
35
|
+
}
|
|
36
|
+
/** Lightweight page reference embedded in the taxonomy data file. */
|
|
37
|
+
export interface TaxonomyPageRef {
|
|
38
|
+
slug: string;
|
|
39
|
+
title: string;
|
|
40
|
+
url: string;
|
|
41
|
+
/** Optional excerpt-ish blurb — first paragraph of body when easily available. */
|
|
42
|
+
description?: string;
|
|
43
|
+
}
|
|
44
|
+
/** The data emitted per taxonomy as `src/data/taxonomy-<name>.json`. */
|
|
45
|
+
export interface TaxonomyData {
|
|
46
|
+
name: string;
|
|
47
|
+
indexPath: string;
|
|
48
|
+
hierarchical: boolean;
|
|
49
|
+
terms: TaxonomyTerm[];
|
|
50
|
+
/** Total number of pages across all terms. Useful for index headers. */
|
|
51
|
+
pageCount: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Read the term values for one page in one taxonomy. Maps the taxonomy
|
|
55
|
+
* name to the right `PageMeta` slot.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getPageTerms(page: ExportPage, taxonomy: string): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Build the taxonomy data structure for one taxonomy across all pages.
|
|
60
|
+
* Pure function. Test-friendly. Sorts terms alphabetically by full
|
|
61
|
+
* path; sorts pages within a term by title.
|
|
62
|
+
*/
|
|
63
|
+
export declare function buildTaxonomyData(pages: ExportPage[], taxonomy: string, config: TaxonomyEmitConfig, options?: {
|
|
64
|
+
section?: string;
|
|
65
|
+
basePath?: string;
|
|
66
|
+
}): TaxonomyData;
|
|
67
|
+
/**
|
|
68
|
+
* Emit route files + data file for one taxonomy.
|
|
69
|
+
*
|
|
70
|
+
* Data JSON is overwritten unconditionally — it's pure config-
|
|
71
|
+
* derived data. Route files are overwritten when they carry the
|
|
72
|
+
* `AUTO-GENERATED by dogsbay` marker (so template fixes reach
|
|
73
|
+
* existing sites without manual intervention) and skipped when
|
|
74
|
+
* they don't (writer customization preserved).
|
|
75
|
+
*/
|
|
76
|
+
export declare function emitTaxonomyForName(data: TaxonomyData, outputDir: string, config?: TaxonomyEmitConfig): void;
|
|
77
|
+
/**
|
|
78
|
+
* Top-level orchestrator: emit routes for every taxonomy declared in
|
|
79
|
+
* `taxonomies`. Returns the list of taxonomy names that emitted any
|
|
80
|
+
* terms (skips taxonomies with zero matching pages — no point emitting
|
|
81
|
+
* an empty index).
|
|
82
|
+
*/
|
|
83
|
+
export declare function emitTaxonomyRoutes(pages: ExportPage[], outputDir: string, taxonomies: Record<string, TaxonomyEmitConfig>, options?: {
|
|
84
|
+
section?: string;
|
|
85
|
+
basePath?: string;
|
|
86
|
+
}): string[];
|
|
87
|
+
//# sourceMappingURL=taxonomy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../src/taxonomy.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAC;AAMvE,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oEAAoE;IACpE,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAezE;AAsHD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,YAAY,CA2Dd;AAmCD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,IAAI,CAsCN;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,MAAM,EAAE,CASV"}
|
package/dist/taxonomy.js
ADDED
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taxonomy emission for `dogsbay site build`.
|
|
3
|
+
*
|
|
4
|
+
* Per declared taxonomy (in `dogsbay.config.yml`'s `taxonomies:` block),
|
|
5
|
+
* emits:
|
|
6
|
+
*
|
|
7
|
+
* - `src/data/taxonomy-<name>.json` — index + per-term page list
|
|
8
|
+
* - `src/pages<indexPath>/index.astro` — taxonomy index (term cloud)
|
|
9
|
+
* - `src/pages<indexPath>/[...path].astro` — per-term drill-down page
|
|
10
|
+
*
|
|
11
|
+
* Idempotent: skips emission when a writer-owned file already exists at
|
|
12
|
+
* the same path (so a project can override either route by writing its
|
|
13
|
+
* own `.astro` file at the same location).
|
|
14
|
+
*
|
|
15
|
+
* v1 design notes:
|
|
16
|
+
*
|
|
17
|
+
* - Built-in fields (`tags`, `category`, `audience`, `type`, `status`)
|
|
18
|
+
* only get index/term routes when the user *explicitly* declares them
|
|
19
|
+
* in `taxonomies:`. PageMeta always carries them; the renderer never
|
|
20
|
+
* surprises you with auto-generated `/category/` pages.
|
|
21
|
+
*
|
|
22
|
+
* - Route files in Step 4 are self-contained (inline Astro markup, no
|
|
23
|
+
* external component imports). Step 5 refactors them to use proper
|
|
24
|
+
* `<TaxonomyIndex/>` / `<TaxonomyTerm/>` components.
|
|
25
|
+
*
|
|
26
|
+
* See plans/metadata-and-taxonomies.md.
|
|
27
|
+
*/
|
|
28
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
29
|
+
import { dirname, join } from "node:path";
|
|
30
|
+
import { joinBaseUrl, normalizeBasePath } from "./base-path.js";
|
|
31
|
+
/** Cap on description length emitted into taxonomy data. */
|
|
32
|
+
const DESCRIPTION_LIMIT = 160;
|
|
33
|
+
const KNOWN_ARRAY_FIELDS = new Set(["tags", "category", "audience"]);
|
|
34
|
+
const KNOWN_SCALAR_FIELDS = new Set(["type", "status"]);
|
|
35
|
+
/**
|
|
36
|
+
* Read the term values for one page in one taxonomy. Maps the taxonomy
|
|
37
|
+
* name to the right `PageMeta` slot.
|
|
38
|
+
*/
|
|
39
|
+
export function getPageTerms(page, taxonomy) {
|
|
40
|
+
const meta = page.meta;
|
|
41
|
+
if (!meta)
|
|
42
|
+
return [];
|
|
43
|
+
if (KNOWN_ARRAY_FIELDS.has(taxonomy)) {
|
|
44
|
+
const values = meta[taxonomy];
|
|
45
|
+
return Array.isArray(values)
|
|
46
|
+
? values.filter((v) => typeof v === "string")
|
|
47
|
+
: [];
|
|
48
|
+
}
|
|
49
|
+
if (KNOWN_SCALAR_FIELDS.has(taxonomy)) {
|
|
50
|
+
const value = meta[taxonomy];
|
|
51
|
+
return typeof value === "string" ? [value] : [];
|
|
52
|
+
}
|
|
53
|
+
return meta.taxonomies?.[taxonomy] ?? [];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the URL where a page is served. Mirrors emitAstroPages's
|
|
57
|
+
* routing convention: `<basePath>/<section?>/<slug>/`. Index pages
|
|
58
|
+
* drop the trailing slug segment. Delegates to `joinBaseUrl` so the
|
|
59
|
+
* shape is consistent with every other emitter.
|
|
60
|
+
*/
|
|
61
|
+
function pageUrl(slug, section, basePath) {
|
|
62
|
+
return joinBaseUrl(basePath, section, slug);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Derive a short description for one page, used to populate
|
|
66
|
+
* `TaxonomyPageRef.description` on the term data file. Card layouts
|
|
67
|
+
* in `<TaxonomyTerm>` consume this — title-only cards read as
|
|
68
|
+
* empty, so a working fallback matters.
|
|
69
|
+
*
|
|
70
|
+
* Resolution order:
|
|
71
|
+
* 1. `frontmatter.description` (string) when set — explicit
|
|
72
|
+
* author-supplied summary always wins.
|
|
73
|
+
* 2. First paragraph of `page.tree`, plain-text-extracted and
|
|
74
|
+
* truncated to {@link DESCRIPTION_LIMIT}. Skips headings so the
|
|
75
|
+
* page title doesn't echo as the description.
|
|
76
|
+
* 3. `undefined` — caller omits the field, card renders title-only.
|
|
77
|
+
*/
|
|
78
|
+
function derivePageDescription(page) {
|
|
79
|
+
const fm = page.frontmatter;
|
|
80
|
+
const fmDesc = fm?.description;
|
|
81
|
+
if (typeof fmDesc === "string" && fmDesc.trim().length > 0) {
|
|
82
|
+
return fmDesc.trim();
|
|
83
|
+
}
|
|
84
|
+
const firstParagraph = findFirstParagraph(page.tree);
|
|
85
|
+
if (firstParagraph) {
|
|
86
|
+
const text = textOfNode(firstParagraph).replace(/\s+/g, " ").trim();
|
|
87
|
+
if (text.length > 0)
|
|
88
|
+
return truncate(text, DESCRIPTION_LIMIT);
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
function findFirstParagraph(nodes) {
|
|
93
|
+
if (!nodes)
|
|
94
|
+
return undefined;
|
|
95
|
+
for (const node of nodes) {
|
|
96
|
+
if (node.type === "paragraph")
|
|
97
|
+
return node;
|
|
98
|
+
// Skip headings / other block types until we find prose.
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Pull plain text from a TreeNode. Tolerates both shapes used by
|
|
104
|
+
* importers:
|
|
105
|
+
* - `node.inline` array (dogsbay-md parser).
|
|
106
|
+
* - `node.children[{type: "prose", inline: ...}]` (Starlight).
|
|
107
|
+
* - `node.html` prerendered HTML (fallback — strips tags).
|
|
108
|
+
*/
|
|
109
|
+
function textOfNode(node) {
|
|
110
|
+
const parts = [];
|
|
111
|
+
if (Array.isArray(node.inline)) {
|
|
112
|
+
parts.push(textOfInline(node.inline));
|
|
113
|
+
}
|
|
114
|
+
if (node.children) {
|
|
115
|
+
for (const child of node.children) {
|
|
116
|
+
parts.push(textOfNode(child));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (typeof node.html === "string") {
|
|
120
|
+
parts.push(node.html.replace(/<[^>]+>/g, ""));
|
|
121
|
+
}
|
|
122
|
+
return parts.filter(Boolean).join(" ");
|
|
123
|
+
}
|
|
124
|
+
function textOfInline(nodes) {
|
|
125
|
+
const parts = [];
|
|
126
|
+
for (const n of nodes) {
|
|
127
|
+
if (n.type === "text") {
|
|
128
|
+
parts.push(n.text);
|
|
129
|
+
}
|
|
130
|
+
else if ("children" in n && Array.isArray(n.children)) {
|
|
131
|
+
parts.push(textOfInline(n.children));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return parts.join("");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Truncate at the last word boundary before `limit`, append `…`.
|
|
138
|
+
* Strings already at-or-under the limit pass through untouched.
|
|
139
|
+
*/
|
|
140
|
+
function truncate(s, limit) {
|
|
141
|
+
if (s.length <= limit)
|
|
142
|
+
return s;
|
|
143
|
+
const sliced = s.slice(0, limit);
|
|
144
|
+
const lastSpace = sliced.lastIndexOf(" ");
|
|
145
|
+
// If the last word boundary is reasonable (not too aggressive),
|
|
146
|
+
// cut there; otherwise hard-cut at the limit.
|
|
147
|
+
const cut = lastSpace > limit * 0.6 ? lastSpace : limit;
|
|
148
|
+
return s.slice(0, cut).replace(/[\s,;:.\-—]+$/, "") + "…";
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Expand a term into its hierarchical prefixes when `hierarchical` is
|
|
152
|
+
* true. `"api/rest"` → `[["api"], ["api", "rest"]]`. When false, returns
|
|
153
|
+
* a single full-path entry.
|
|
154
|
+
*/
|
|
155
|
+
function expandTerm(term, hierarchical) {
|
|
156
|
+
const segments = term.split("/").filter((s) => s.length > 0);
|
|
157
|
+
if (segments.length === 0)
|
|
158
|
+
return [];
|
|
159
|
+
if (!hierarchical)
|
|
160
|
+
return [segments];
|
|
161
|
+
const out = [];
|
|
162
|
+
for (let i = 1; i <= segments.length; i++) {
|
|
163
|
+
out.push(segments.slice(0, i));
|
|
164
|
+
}
|
|
165
|
+
return out;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Build the taxonomy data structure for one taxonomy across all pages.
|
|
169
|
+
* Pure function. Test-friendly. Sorts terms alphabetically by full
|
|
170
|
+
* path; sorts pages within a term by title.
|
|
171
|
+
*/
|
|
172
|
+
export function buildTaxonomyData(pages, taxonomy, config, options = {}) {
|
|
173
|
+
// Map a path key (joined by "/") → term entry under construction
|
|
174
|
+
const termMap = new Map();
|
|
175
|
+
const basePath = normalizeBasePath(options.basePath);
|
|
176
|
+
for (const page of pages) {
|
|
177
|
+
const terms = getPageTerms(page, taxonomy);
|
|
178
|
+
if (terms.length === 0)
|
|
179
|
+
continue;
|
|
180
|
+
const description = derivePageDescription(page);
|
|
181
|
+
const ref = {
|
|
182
|
+
slug: page.slug,
|
|
183
|
+
title: page.title,
|
|
184
|
+
url: pageUrl(page.slug, options.section, basePath),
|
|
185
|
+
...(description ? { description } : {}),
|
|
186
|
+
};
|
|
187
|
+
// Track which path keys this page has already contributed to so a
|
|
188
|
+
// hierarchical expansion that produces duplicate prefixes (rare but
|
|
189
|
+
// possible — e.g. `tags: [api/rest, api/graphql]` both expand `api`)
|
|
190
|
+
// doesn't double-count the page.
|
|
191
|
+
const seen = new Set();
|
|
192
|
+
for (const term of terms) {
|
|
193
|
+
for (const path of expandTerm(term, config.hierarchical)) {
|
|
194
|
+
const key = path.join("/");
|
|
195
|
+
if (seen.has(key))
|
|
196
|
+
continue;
|
|
197
|
+
seen.add(key);
|
|
198
|
+
let entry = termMap.get(key);
|
|
199
|
+
if (!entry) {
|
|
200
|
+
entry = { fullPath: path, pages: [] };
|
|
201
|
+
termMap.set(key, entry);
|
|
202
|
+
}
|
|
203
|
+
entry.pages.push(ref);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Convert to TaxonomyTerm[] with sorting.
|
|
208
|
+
const allTerms = [];
|
|
209
|
+
let pageCount = 0;
|
|
210
|
+
for (const { fullPath, pages: termPages } of termMap.values()) {
|
|
211
|
+
termPages.sort((a, b) => a.title.localeCompare(b.title));
|
|
212
|
+
allTerms.push({
|
|
213
|
+
fullPath,
|
|
214
|
+
label: fullPath[fullPath.length - 1],
|
|
215
|
+
pages: termPages,
|
|
216
|
+
});
|
|
217
|
+
pageCount += termPages.length;
|
|
218
|
+
}
|
|
219
|
+
allTerms.sort((a, b) => a.fullPath.join("/").localeCompare(b.fullPath.join("/")));
|
|
220
|
+
return {
|
|
221
|
+
name: taxonomy,
|
|
222
|
+
indexPath: config.indexPath,
|
|
223
|
+
hierarchical: config.hierarchical,
|
|
224
|
+
terms: allTerms,
|
|
225
|
+
pageCount,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Marker comment emitted at the top of every auto-generated
|
|
230
|
+
* taxonomy route file. The emitter overwrites a file when this
|
|
231
|
+
* marker is present (so config / template fixes propagate), and
|
|
232
|
+
* leaves the file alone when it isn't (writer customized the
|
|
233
|
+
* page — keep their edits).
|
|
234
|
+
*/
|
|
235
|
+
const AUTO_GENERATED_MARKER = "// AUTO-GENERATED by dogsbay";
|
|
236
|
+
function shouldRegenerate(path) {
|
|
237
|
+
if (!existsSync(path))
|
|
238
|
+
return true;
|
|
239
|
+
try {
|
|
240
|
+
const contents = readFileSync(path, "utf-8");
|
|
241
|
+
if (contents.includes(AUTO_GENERATED_MARKER))
|
|
242
|
+
return true;
|
|
243
|
+
// Transitional check: the marker was added when route templates
|
|
244
|
+
// grew the DocsLayout wrap. Files emitted by the previous version
|
|
245
|
+
// imported the taxonomy component but skipped the layout wrap,
|
|
246
|
+
// leaving them un-styled (no Tailwind context). Detect that
|
|
247
|
+
// exact shape and regenerate so existing sites pick up the fix
|
|
248
|
+
// without manual deletion. Safe to remove this branch once all
|
|
249
|
+
// active sites have rebuilt at least once.
|
|
250
|
+
const importsTaxonomyComponent = contents.includes('from "@dogsbay/docs-layout/TaxonomyIndex.astro"') ||
|
|
251
|
+
contents.includes('from "@dogsbay/docs-layout/TaxonomyTerm.astro"');
|
|
252
|
+
const hasDocsLayout = contents.includes("DocsLayout");
|
|
253
|
+
if (importsTaxonomyComponent && !hasDocsLayout)
|
|
254
|
+
return true;
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
// Unreadable for any reason — safer to leave alone.
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Emit route files + data file for one taxonomy.
|
|
264
|
+
*
|
|
265
|
+
* Data JSON is overwritten unconditionally — it's pure config-
|
|
266
|
+
* derived data. Route files are overwritten when they carry the
|
|
267
|
+
* `AUTO-GENERATED by dogsbay` marker (so template fixes reach
|
|
268
|
+
* existing sites without manual intervention) and skipped when
|
|
269
|
+
* they don't (writer customization preserved).
|
|
270
|
+
*/
|
|
271
|
+
export function emitTaxonomyForName(data, outputDir, config) {
|
|
272
|
+
// Resolved config — falls back to a minimal shape when callers
|
|
273
|
+
// pre-date the display-config addition.
|
|
274
|
+
const resolved = config ?? {
|
|
275
|
+
indexPath: data.indexPath,
|
|
276
|
+
hierarchical: data.hierarchical,
|
|
277
|
+
};
|
|
278
|
+
// 1. Data file: src/data/taxonomy-<name>.json
|
|
279
|
+
const dataPath = join(outputDir, "src", "data", `taxonomy-${data.name}.json`);
|
|
280
|
+
mkdirSync(dirname(dataPath), { recursive: true });
|
|
281
|
+
writeFileSync(dataPath, JSON.stringify(data, null, 2));
|
|
282
|
+
// 2. Index route: src/pages<indexPath>/index.astro
|
|
283
|
+
const indexAstroPath = join(outputDir, "src", "pages", ...data.indexPath.split("/").filter((s) => s.length > 0), "index.astro");
|
|
284
|
+
if (shouldRegenerate(indexAstroPath)) {
|
|
285
|
+
mkdirSync(dirname(indexAstroPath), { recursive: true });
|
|
286
|
+
writeFileSync(indexAstroPath, buildIndexAstro(data, resolved));
|
|
287
|
+
}
|
|
288
|
+
// 3. Term route: src/pages<indexPath>/[...path].astro
|
|
289
|
+
const termAstroPath = join(outputDir, "src", "pages", ...data.indexPath.split("/").filter((s) => s.length > 0), "[...path].astro");
|
|
290
|
+
if (shouldRegenerate(termAstroPath)) {
|
|
291
|
+
mkdirSync(dirname(termAstroPath), { recursive: true });
|
|
292
|
+
writeFileSync(termAstroPath, buildTermAstro(data, resolved));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Top-level orchestrator: emit routes for every taxonomy declared in
|
|
297
|
+
* `taxonomies`. Returns the list of taxonomy names that emitted any
|
|
298
|
+
* terms (skips taxonomies with zero matching pages — no point emitting
|
|
299
|
+
* an empty index).
|
|
300
|
+
*/
|
|
301
|
+
export function emitTaxonomyRoutes(pages, outputDir, taxonomies, options = {}) {
|
|
302
|
+
const emitted = [];
|
|
303
|
+
for (const [name, config] of Object.entries(taxonomies)) {
|
|
304
|
+
const data = buildTaxonomyData(pages, name, config, options);
|
|
305
|
+
if (data.terms.length === 0)
|
|
306
|
+
continue;
|
|
307
|
+
emitTaxonomyForName(data, outputDir, config);
|
|
308
|
+
emitted.push(name);
|
|
309
|
+
}
|
|
310
|
+
return emitted;
|
|
311
|
+
}
|
|
312
|
+
// ── Auto-generated route templates ──────────────────────────────────
|
|
313
|
+
//
|
|
314
|
+
// Both index + term route files wrap their content in `<DocsLayout>`
|
|
315
|
+
// so taxonomy pages stay inside the same shell as every other page
|
|
316
|
+
// on the site (sidebar, header, search, theme toggle, footer). Without
|
|
317
|
+
// the wrap, a click on a tag chip dumps the reader onto an orphan
|
|
318
|
+
// page with no nav and no Tailwind utilities — globals get loaded
|
|
319
|
+
// via `@/styles/global.css`, so missing the import means the grid
|
|
320
|
+
// classes silently no-op too. The wrap fixes both at once.
|
|
321
|
+
//
|
|
322
|
+
// Writers who want a custom shell (different layout, no sidebar) can
|
|
323
|
+
// drop their own `src/pages<indexPath>/{index,[...path]}.astro` —
|
|
324
|
+
// `emitTaxonomyForName` skips emission when those files exist.
|
|
325
|
+
function buildIndexAstro(data, config) {
|
|
326
|
+
const dataImport = dataImportPath(data);
|
|
327
|
+
const title = displayName(data.name);
|
|
328
|
+
const displayConfig = renderTaxonomyDisplay(config);
|
|
329
|
+
return `---
|
|
330
|
+
${AUTO_GENERATED_MARKER} site build — safe to delete; will regenerate next build.
|
|
331
|
+
// To customize this page, remove the marker line above (or modify the file
|
|
332
|
+
// in any way that drops it) and dogsbay will leave your edits alone.
|
|
333
|
+
import "@/styles/global.css";
|
|
334
|
+
import DocsLayout from "@dogsbay/docs-layout/DocsLayout.astro";
|
|
335
|
+
import TaxonomyIndex from "@dogsbay/docs-layout/TaxonomyIndex.astro";
|
|
336
|
+
import type { SiteConfig } from "@dogsbay/types";
|
|
337
|
+
import data from "${dataImport}";
|
|
338
|
+
import navData from "@/data/nav.json";
|
|
339
|
+
import siteConfigData from "@/data/site.json";
|
|
340
|
+
const siteConfig = siteConfigData as SiteConfig;
|
|
341
|
+
const title = ${JSON.stringify(title)};
|
|
342
|
+
${displayConfig}
|
|
343
|
+
---
|
|
344
|
+
<DocsLayout
|
|
345
|
+
siteName={siteConfig.siteName}
|
|
346
|
+
title={title}
|
|
347
|
+
nav={navData as any[]}
|
|
348
|
+
headings={[]}
|
|
349
|
+
siteUrl={siteConfig.siteUrl || "/"}
|
|
350
|
+
description={siteConfig.description || undefined}
|
|
351
|
+
ogImage={siteConfig.ogImage || undefined}
|
|
352
|
+
twitterHandle={siteConfig.twitterHandle || undefined}
|
|
353
|
+
themeColor={siteConfig.themeColor || undefined}
|
|
354
|
+
repoUrl={siteConfig.repoUrl || undefined}
|
|
355
|
+
plausibleDomain={siteConfig.plausible?.domain}
|
|
356
|
+
plausibleScriptUrl={siteConfig.plausible?.scriptUrl}
|
|
357
|
+
tagPrefixes={siteConfig.tagPrefixes}
|
|
358
|
+
tagLabels={siteConfig.tagLabels}
|
|
359
|
+
taxonomyIndexPaths={siteConfig.taxonomyIndexPaths}
|
|
360
|
+
taxonomyDisplay={siteConfig.taxonomyDisplay}
|
|
361
|
+
noindex={true}
|
|
362
|
+
excludeFromSearch={true}
|
|
363
|
+
>
|
|
364
|
+
<TaxonomyIndex data={data} prefixes={prefixes} labels={labels} />
|
|
365
|
+
</DocsLayout>
|
|
366
|
+
`;
|
|
367
|
+
}
|
|
368
|
+
function buildTermAstro(data, config) {
|
|
369
|
+
const dataImport = dataImportPath(data);
|
|
370
|
+
const taxonomyDisplay = displayName(data.name);
|
|
371
|
+
const displayConfig = renderTaxonomyDisplay(config);
|
|
372
|
+
return `---
|
|
373
|
+
${AUTO_GENERATED_MARKER} site build — safe to delete; will regenerate next build.
|
|
374
|
+
// To customize this page, remove the marker line above (or modify the file
|
|
375
|
+
// in any way that drops it) and dogsbay will leave your edits alone.
|
|
376
|
+
import "@/styles/global.css";
|
|
377
|
+
import DocsLayout from "@dogsbay/docs-layout/DocsLayout.astro";
|
|
378
|
+
import TaxonomyTerm from "@dogsbay/docs-layout/TaxonomyTerm.astro";
|
|
379
|
+
import type { SiteConfig } from "@dogsbay/types";
|
|
380
|
+
import data from "${dataImport}";
|
|
381
|
+
import navData from "@/data/nav.json";
|
|
382
|
+
import siteConfigData from "@/data/site.json";
|
|
383
|
+
const siteConfig = siteConfigData as SiteConfig;
|
|
384
|
+
|
|
385
|
+
export async function getStaticPaths() {
|
|
386
|
+
return data.terms.map((term) => ({
|
|
387
|
+
params: { path: term.fullPath.join("/") },
|
|
388
|
+
props: { term },
|
|
389
|
+
}));
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
const { term } = Astro.props;
|
|
393
|
+
${displayConfig}
|
|
394
|
+
const title = \`\${term.label} — ${escapeTemplate(taxonomyDisplay)}\`;
|
|
395
|
+
---
|
|
396
|
+
<DocsLayout
|
|
397
|
+
siteName={siteConfig.siteName}
|
|
398
|
+
title={title}
|
|
399
|
+
nav={navData as any[]}
|
|
400
|
+
headings={[]}
|
|
401
|
+
siteUrl={siteConfig.siteUrl || "/"}
|
|
402
|
+
description={siteConfig.description || undefined}
|
|
403
|
+
ogImage={siteConfig.ogImage || undefined}
|
|
404
|
+
twitterHandle={siteConfig.twitterHandle || undefined}
|
|
405
|
+
themeColor={siteConfig.themeColor || undefined}
|
|
406
|
+
repoUrl={siteConfig.repoUrl || undefined}
|
|
407
|
+
plausibleDomain={siteConfig.plausible?.domain}
|
|
408
|
+
plausibleScriptUrl={siteConfig.plausible?.scriptUrl}
|
|
409
|
+
tagPrefixes={siteConfig.tagPrefixes}
|
|
410
|
+
tagLabels={siteConfig.tagLabels}
|
|
411
|
+
taxonomyIndexPaths={siteConfig.taxonomyIndexPaths}
|
|
412
|
+
taxonomyDisplay={siteConfig.taxonomyDisplay}
|
|
413
|
+
noindex={true}
|
|
414
|
+
excludeFromSearch={true}
|
|
415
|
+
>
|
|
416
|
+
<TaxonomyTerm data={data} term={term} prefixes={prefixes} labels={labels} />
|
|
417
|
+
</DocsLayout>
|
|
418
|
+
`;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Render the per-taxonomy `prefixes` + `labels` constants that get
|
|
422
|
+
* baked into the auto-emitted route templates. Output is a pair of
|
|
423
|
+
* `const prefixes = {...}; const labels = {...};` statements safe to
|
|
424
|
+
* drop into the frontmatter block of an Astro file. Empty entries
|
|
425
|
+
* become `undefined` so the components fall back to slug rendering
|
|
426
|
+
* cleanly.
|
|
427
|
+
*/
|
|
428
|
+
function renderTaxonomyDisplay(config) {
|
|
429
|
+
const hasPrefixes = config.prefixes && Object.keys(config.prefixes).length > 0;
|
|
430
|
+
const hasLabels = config.labels && Object.keys(config.labels).length > 0;
|
|
431
|
+
const prefixesLine = hasPrefixes
|
|
432
|
+
? `const prefixes = ${JSON.stringify(config.prefixes)};`
|
|
433
|
+
: "const prefixes = undefined;";
|
|
434
|
+
const labelsLine = hasLabels
|
|
435
|
+
? `const labels = ${JSON.stringify(config.labels)};`
|
|
436
|
+
: "const labels = undefined;";
|
|
437
|
+
return `${prefixesLine}\n${labelsLine}`;
|
|
438
|
+
}
|
|
439
|
+
/** Escape a string for use inside a JS template literal (`\`…${...}\``). */
|
|
440
|
+
function escapeTemplate(s) {
|
|
441
|
+
return s.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Compute the relative import path from an emitted route file to the
|
|
445
|
+
* taxonomy data JSON. Route files live at
|
|
446
|
+
* `src/pages<indexPath>/{index,[...path]}.astro`; data file at
|
|
447
|
+
* `src/data/taxonomy-<name>.json`.
|
|
448
|
+
*
|
|
449
|
+
* Levels to go up: indexPath segment count + 1 (one for the route
|
|
450
|
+
* file's own directory, then one per indexPath segment).
|
|
451
|
+
*/
|
|
452
|
+
function dataImportPath(data) {
|
|
453
|
+
const segmentCount = data.indexPath.split("/").filter(Boolean).length;
|
|
454
|
+
return `${"../".repeat(segmentCount + 1)}data/taxonomy-${data.name}.json`;
|
|
455
|
+
}
|
|
456
|
+
function displayName(name) {
|
|
457
|
+
// "tags" → "Tags", "by-audience" → "By audience"
|
|
458
|
+
return name.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
459
|
+
}
|
|
460
|
+
function escapeHtml(s) {
|
|
461
|
+
return s
|
|
462
|
+
.replace(/&/g, "&")
|
|
463
|
+
.replace(/</g, "<")
|
|
464
|
+
.replace(/>/g, ">")
|
|
465
|
+
.replace(/"/g, """);
|
|
466
|
+
}
|
|
467
|
+
//# sourceMappingURL=taxonomy.js.map
|