@dogsbay/format-astro 0.2.0-beta.115 → 0.2.0-beta.116

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.
Files changed (62) hide show
  1. package/dist/api-markdown.d.ts +8 -0
  2. package/dist/api-markdown.d.ts.map +1 -0
  3. package/dist/api-markdown.js +41 -0
  4. package/dist/api-markdown.js.map +1 -0
  5. package/dist/blog.d.ts.map +1 -1
  6. package/dist/blog.js +5 -1
  7. package/dist/blog.js.map +1 -1
  8. package/dist/browser.d.ts +14 -0
  9. package/dist/browser.d.ts.map +1 -0
  10. package/dist/browser.js +14 -0
  11. package/dist/browser.js.map +1 -0
  12. package/dist/canonical.d.ts +34 -0
  13. package/dist/canonical.d.ts.map +1 -0
  14. package/dist/canonical.js +107 -0
  15. package/dist/canonical.js.map +1 -0
  16. package/dist/head-metadata.d.ts +26 -0
  17. package/dist/head-metadata.d.ts.map +1 -0
  18. package/dist/head-metadata.js +56 -0
  19. package/dist/head-metadata.js.map +1 -0
  20. package/dist/index.d.ts +4 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +7 -3
  23. package/dist/index.js.map +1 -1
  24. package/dist/llms-txt.d.ts +3 -3
  25. package/dist/llms-txt.d.ts.map +1 -1
  26. package/dist/llms-txt.js +48 -242
  27. package/dist/llms-txt.js.map +1 -1
  28. package/dist/plugins.d.ts.map +1 -1
  29. package/dist/plugins.js +3 -1
  30. package/dist/plugins.js.map +1 -1
  31. package/dist/project.d.ts +36 -1
  32. package/dist/project.d.ts.map +1 -1
  33. package/dist/project.js +276 -841
  34. package/dist/project.js.map +1 -1
  35. package/dist/redirects.d.ts +22 -0
  36. package/dist/redirects.d.ts.map +1 -1
  37. package/dist/redirects.js +70 -123
  38. package/dist/redirects.js.map +1 -1
  39. package/dist/serialize.d.ts +4 -13
  40. package/dist/serialize.d.ts.map +1 -1
  41. package/dist/serialize.js +304 -102
  42. package/dist/serialize.js.map +1 -1
  43. package/dist/sitemap.d.ts +44 -17
  44. package/dist/sitemap.d.ts.map +1 -1
  45. package/dist/sitemap.js +31 -104
  46. package/dist/sitemap.js.map +1 -1
  47. package/dist/taxonomy.d.ts.map +1 -1
  48. package/dist/taxonomy.js +7 -1
  49. package/dist/taxonomy.js.map +1 -1
  50. package/dist/theme-css.d.ts +26 -0
  51. package/dist/theme-css.d.ts.map +1 -0
  52. package/dist/theme-css.js +642 -0
  53. package/dist/theme-css.js.map +1 -0
  54. package/dist/tone-classes.d.ts +14 -0
  55. package/dist/tone-classes.d.ts.map +1 -0
  56. package/dist/tone-classes.js +30 -0
  57. package/dist/tone-classes.js.map +1 -0
  58. package/dist/write-if-changed.d.ts +21 -0
  59. package/dist/write-if-changed.d.ts.map +1 -0
  60. package/dist/write-if-changed.js +58 -0
  61. package/dist/write-if-changed.js.map +1 -0
  62. package/package.json +13 -5
package/dist/redirects.js CHANGED
@@ -22,13 +22,9 @@
22
22
  * This module is pure: it does no IO, so every rule and every refusal is
23
23
  * testable without building a site.
24
24
  */
25
- /** Cloudflare's documented ceilings, identical on Free and Paid. */
26
- const MAX_RULES = 2100;
27
- const MAX_RULE_CHARS = 1000;
25
+ import { isExternalUrl, renderRedirectStub, renderRedirectsFile as renderRedirectsLines, resolveRedirects, } from "@dogsbay/site-files";
28
26
  const VALID_STATUS = new Set([301, 302, 303, 307, 308]);
29
- function isExternal(target) {
30
- return /^[a-z][a-z0-9+.-]*:/i.test(target) || target.startsWith("//");
31
- }
27
+ const isExternal = isExternalUrl;
32
28
  /**
33
29
  * A page slug → the path it is served at. Mirrors the emitter: pages are
34
30
  * directories with a trailing slash, `index` is the prefix root.
@@ -40,6 +36,42 @@ export function slugToServedPath(slug, prefix) {
40
36
  return `${base}/`;
41
37
  return `${base}/${clean}/`;
42
38
  }
39
+ /**
40
+ * The site-path prefix a page's source is published under (its namespace,
41
+ * language and version segments, as `latest` or `en/v3`): its slug without
42
+ * the path the source gave it. "" for a site without those axes.
43
+ */
44
+ export function pageUnitPrefix(page) {
45
+ const clean = (s) => s.replace(/^\/+|\/+$/g, "").replace(/(^|\/)index$/, "");
46
+ const slug = clean(page.slug);
47
+ const inside = clean(page.multiSource?.originalSlug ?? page.slug);
48
+ if (!inside)
49
+ return slug;
50
+ if (slug === inside)
51
+ return "";
52
+ return slug.endsWith(`/${inside}`) ? slug.slice(0, -inside.length - 1) : "";
53
+ }
54
+ /**
55
+ * A path written in a page's front matter (`redirect:`, `aliases:`) as a site
56
+ * path: relative to the page's unit (its language and version), unless it
57
+ * already starts with it, as dogsbay-ssg reads it (issue #096). A copied
58
+ * version (`latest` snapshotted to `v4/`) keeps its redirects inside itself.
59
+ * `mount` (urlBase + basePath) may be written or not; URLs pass through.
60
+ */
61
+ export function inPageUnit(raw, unit, mount) {
62
+ if (!unit || isExternal(raw))
63
+ return raw;
64
+ const t = raw.trim();
65
+ const cut = t.search(/[?#]/);
66
+ const suffix = cut < 0 ? "" : t.slice(cut);
67
+ let p = (cut < 0 ? t : t.slice(0, cut)).replace(/^\/+/, "");
68
+ const m = mount.replace(/^\/+|\/+$/g, "");
69
+ if (m && (p === m || p.startsWith(`${m}/`)))
70
+ p = p.slice(m.length).replace(/^\/+/, "");
71
+ if (!(p === unit || p.startsWith(`${unit}/`)))
72
+ p = p ? `${unit}/${p}` : unit;
73
+ return `/${p}${suffix}`;
74
+ }
43
75
  /**
44
76
  * Normalize an authored path to the served form: leading slash, mount prefix
45
77
  * applied once, trailing slash unless it names a file. External URLs pass
@@ -48,21 +80,22 @@ export function slugToServedPath(slug, prefix) {
48
80
  export function normalizeTarget(raw, prefix) {
49
81
  if (isExternal(raw))
50
82
  return raw;
51
- let p = raw.trim();
83
+ // A "#anchor" or "?query" stays on the target as written; only the path is
84
+ // normalized (it used to become "/a#x/", which matched no page).
85
+ const trimmed = raw.trim();
86
+ const cut = trimmed.search(/[?#]/);
87
+ const suffix = cut < 0 ? "" : trimmed.slice(cut);
88
+ let p = cut < 0 ? trimmed : trimmed.slice(0, cut);
52
89
  if (!p.startsWith("/"))
53
90
  p = `/${p}`;
54
91
  const base = prefix.replace(/\/+$/, "");
55
- // Already carries the mount prefix? Don't add it twice — authors reasonably
56
- // write either form, and `/blog/blog/old` fires for nothing.
57
92
  if (base && p !== base && !p.startsWith(`${base}/`)) {
58
93
  p = `${base}${p}`;
59
94
  }
60
- // Trailing slash unless the last segment looks like a file. Without this a
61
- // rule lands on a path that redirects again (docs-dev/url-shape.md).
62
95
  const last = p.split("/").pop() ?? "";
63
96
  if (!last.includes(".") && !p.endsWith("/"))
64
97
  p = `${p}/`;
65
- return p;
98
+ return p + suffix;
66
99
  }
67
100
  /**
68
101
  * Gather every declared redirect, resolve paths, and refuse the ones that
@@ -72,7 +105,6 @@ export function collectRedirects(input) {
72
105
  const { pages, config, prefix } = input;
73
106
  const errors = [];
74
107
  const warnings = [];
75
- const bySource = new Map();
76
108
  const livePaths = new Set();
77
109
  for (const page of pages) {
78
110
  // A page that only redirects is not a live page — it is the thing being
@@ -80,29 +112,21 @@ export function collectRedirects(input) {
80
112
  if (!page.redirect)
81
113
  livePaths.add(slugToServedPath(page.slug, prefix));
82
114
  }
115
+ // Duplicates are resolved (and reported) by resolveRedirects.
116
+ const candidates = [];
83
117
  const add = (rule) => {
84
- const existing = bySource.get(rule.from);
85
- if (existing) {
86
- // Config wins over frontmatter (the plan's precedence); two rules of the
87
- // same origin for one source is an authoring mistake, not a preference.
88
- if (existing.origin === rule.origin || rule.origin !== "config") {
89
- if (existing.to !== rule.to) {
90
- errors.push(`two redirects for ${rule.from} (→ ${existing.to} and → ${rule.to}). ` +
91
- `To fix: keep one; a duplicate source has no defined winner.`);
92
- }
93
- return;
94
- }
95
- }
96
- bySource.set(rule.from, rule);
118
+ candidates.push(rule);
97
119
  };
98
120
  // 1. Page frontmatter: `redirect:` (this page forwards) and `aliases:` (old
99
121
  // paths that forward TO this page).
100
122
  for (const page of pages) {
101
123
  const here = slugToServedPath(page.slug, prefix);
124
+ // Front matter paths are relative to the page's language and version (#096).
125
+ const unit = pageUnitPrefix(page);
102
126
  if (page.redirect) {
103
127
  add({
104
128
  from: here,
105
- to: normalizeTarget(page.redirect, prefix),
129
+ to: normalizeTarget(inPageUnit(page.redirect, unit, prefix), prefix),
106
130
  status: 301,
107
131
  origin: "frontmatter",
108
132
  declaredBy: page.slug,
@@ -117,7 +141,7 @@ export function collectRedirects(input) {
117
141
  else {
118
142
  for (const alias of aliases) {
119
143
  add({
120
- from: normalizeTarget(alias, prefix),
144
+ from: normalizeTarget(inPageUnit(alias, unit, prefix), prefix),
121
145
  to: here,
122
146
  status: 301,
123
147
  origin: "aliases",
@@ -147,86 +171,21 @@ export function collectRedirects(input) {
147
171
  origin: "config",
148
172
  });
149
173
  }
150
- let rules = [...bySource.values()];
151
- // 3. Loops. Caught by hand in the Cloudflare dashboard once, one step before
152
- // deploying an infinite redirect.
153
- rules = rules.filter((r) => {
154
- if (r.from === r.to) {
155
- errors.push(`redirect ${r.from} → ${r.to} points at itself` +
156
- (r.declaredBy ? ` (declared on ${r.declaredBy})` : "") +
157
- `. To fix: remove it.`);
158
- return false;
159
- }
160
- return true;
174
+ const resolved = resolveRedirects(candidates, {
175
+ strict: true,
176
+ // A target's "#anchor" or "?query" is not part of the page it names.
177
+ isPage: (path) => livePaths.has(path.split(/[?#]/)[0]),
178
+ cloudflareLimits: true,
161
179
  });
162
- // 4. Chains: A→B→C. Collapse to A→C. A chain is not broken, it burns crawl
163
- // budget and Search Console reports it, so this warns rather than fails.
164
- const targets = new Map(rules.map((r) => [r.from, r]));
165
- for (const rule of rules) {
166
- const seen = new Set([rule.from]);
167
- let hop = targets.get(rule.to);
168
- let hops = 0;
169
- while (hop && !isExternal(rule.to)) {
170
- if (seen.has(hop.from)) {
171
- errors.push(`redirect loop: ${[...seen].join(" → ")} → ${hop.from}. To fix: break the cycle.`);
172
- break;
173
- }
174
- seen.add(hop.from);
175
- rule.to = hop.to;
176
- hops++;
177
- hop = targets.get(rule.to);
178
- }
179
- if (hops > 0) {
180
- warnings.push(`collapsed a redirect chain: ${rule.from} now points straight at ${rule.to} (${hops} hop(s) removed)`);
181
- }
182
- }
183
- // 5. Dangling internal target. A 301 into a 404 is worse than no redirect —
184
- // the old URL at least told the truth.
185
- for (const rule of rules) {
186
- if (isExternal(rule.to))
187
- continue;
188
- if (!livePaths.has(rule.to)) {
189
- errors.push(`redirect ${rule.from} → ${rule.to} points at a page this build does not emit` +
190
- (rule.declaredBy ? ` (declared on ${rule.declaredBy})` : "") +
191
- `. To fix: correct the target, or point it at an external URL.`);
192
- }
193
- }
194
- // 6. A source that is also a live page. On Cloudflare the redirect wins
195
- // (redirects are followed whether or not an asset matches), so the page
196
- // becomes unreachable — silently. Everywhere else the page wins and the
197
- // redirect never fires. Either way somebody is surprised.
198
- for (const rule of rules) {
199
- if (livePaths.has(rule.from)) {
200
- errors.push(`redirect source ${rule.from} is also a page this build emits. ` +
201
- `To fix: remove the page or the redirect — on Cloudflare the redirect ` +
202
- `wins and the page is unreachable; on a static host the page wins and ` +
203
- `the redirect never fires.`);
204
- }
205
- }
206
- // 7. Platform ceilings, identical on Free and Paid.
207
- if (rules.length > MAX_RULES) {
208
- errors.push(`${rules.length} redirects exceeds the ${MAX_RULES}-rule limit for _redirects. ` +
209
- `To fix: use Cloudflare Bulk Redirects for the long tail.`);
210
- }
211
- for (const rule of rules) {
212
- const line = `${rule.from} ${rule.to} ${rule.status}`;
213
- if (line.length > MAX_RULE_CHARS) {
214
- errors.push(`redirect rule for ${rule.from} is ${line.length} characters, over the ` +
215
- `${MAX_RULE_CHARS}-character limit. To fix: shorten the paths.`);
216
- }
217
- }
218
- rules.sort((a, b) => a.from.localeCompare(b.from));
219
- return { rules, errors, warnings };
180
+ return {
181
+ rules: resolved.rules,
182
+ errors: [...errors, ...resolved.errors],
183
+ warnings: [...warnings, ...resolved.warnings],
184
+ };
220
185
  }
221
186
  /** The `_redirects` file Workers Static Assets reads from the assets root. */
222
187
  export function renderRedirectsFile(rules) {
223
- const lines = [
224
- "# Generated by dogsbay. Do not edit — declare redirects with `redirect:`",
225
- "# or `aliases:` frontmatter, or the `redirects:` block in dogsbay.config.yml.",
226
- // The status is never omitted: the default is 302, and a rename is a 301.
227
- ...rules.map((r) => `${r.from} ${r.to} ${r.status}`),
228
- ];
229
- return `${lines.join("\n")}\n`;
188
+ return renderRedirectsLines(rules);
230
189
  }
231
190
  /**
232
191
  * A static stub for hosts with no redirect mechanism (GitHub Pages, plain
@@ -240,25 +199,7 @@ export function renderMetaRefreshPage(rule, siteUrl) {
240
199
  : isExternal(rule.to)
241
200
  ? rule.to
242
201
  : undefined;
243
- const esc = (s) => s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;");
244
- return [
245
- "<!doctype html>",
246
- '<html lang="en">',
247
- "<head>",
248
- '<meta charset="utf-8">',
249
- `<meta http-equiv="refresh" content="0; url=${esc(rule.to)}">`,
250
- '<meta name="robots" content="noindex">',
251
- canonical ? `<link rel="canonical" href="${esc(canonical)}">` : "",
252
- `<title>Redirecting to ${esc(rule.to)}</title>`,
253
- "</head>",
254
- "<body>",
255
- `<p>This page has moved to <a href="${esc(rule.to)}">${esc(rule.to)}</a>.</p>`,
256
- "</body>",
257
- "</html>",
258
- "",
259
- ]
260
- .filter(Boolean)
261
- .join("\n");
202
+ return renderRedirectStub(rule.to, canonical);
262
203
  }
263
204
  /**
264
205
  * Where a stub page goes inside `public/`, relative to it. The served path
@@ -272,6 +213,12 @@ export function stubPathForRule(rule, prefix) {
272
213
  if (base && p.startsWith(base))
273
214
  p = p.slice(base.length);
274
215
  p = p.replace(/^\/+|\/+$/g, "");
216
+ // The stub is written at this path under public/. resolveRedirects refuses
217
+ // such a source already; this is the last line before a file write, so a
218
+ // `..` that reached it some other way cannot leave the site.
219
+ if (p.split("/").some((seg) => seg === ".." || seg === ".") || /[\\\u0000]/.test(p)) {
220
+ throw new Error(`redirect source ${JSON.stringify(rule.from)} would write outside the site`);
221
+ }
275
222
  return p ? `${p}/index.html` : "index.html";
276
223
  }
277
224
  //# sourceMappingURL=redirects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirects.js","sourceRoot":"","sources":["../src/redirects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redirects.js","sourceRoot":"","sources":["../src/redirects.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface AstroGenOptions {
19
19
  imageOptimization?: boolean;
20
20
  /** Controls CodeBlock title bar: true = always (default), "auto" = only with explicit title */
21
21
  codeBlockTitle?: boolean | "auto";
22
+ /** A paragraph that is one titled image renders as a captioned figure (`content.imageCaptions: title`). */
23
+ imageCaptions?: boolean;
22
24
  /**
23
25
  * Combined URL prefix (urlBase + basePath). When non-empty, the
24
26
  * caller is expected to have already pre-rewritten absolute image
@@ -29,19 +31,8 @@ export interface AstroGenOptions {
29
31
  */
30
32
  combinedPrefix?: string;
31
33
  }
32
- /**
33
- * Tone palette for `:::grid-item{label="..." tone="..."}` cells.
34
- * Each tone is a `bg + text` Tailwind class pair. Used to make grid demos
35
- * declarative — authors specify a tone instead of writing the styling.
36
- *
37
- * Exported because the scaffolded site's `global.css` must safelist
38
- * these classes via `@source inline()` — they only appear in
39
- * markdown-generated `.astro` pages, which Tailwind's content
40
- * scanner doesn't always pick up reliably (and consumers who put
41
- * their content/ outside the scanned globs won't pick them up at
42
- * all). See generateGlobalCss in project.ts.
43
- */
44
- export declare const TONE_CLASSES: Record<string, string>;
34
+ import { TONE_CLASSES } from "./tone-classes.js";
35
+ export { TONE_CLASSES };
45
36
  /** Escape for use inside an Astro {expression}. Uses JSON.stringify for safety. */
46
37
  export declare function escapeExpr(s: string): string;
47
38
  /** Escape for use in an HTML attribute value (double-quoted). */
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAUxE;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AA6BpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+FAA+F;IAC/F,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgB/C,CAAC;AA2FF,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0CD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjE;AAoBD,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAahD;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc,CAmDxF"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAYxE;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AA+BpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+FAA+F;IAC/F,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,2GAA2G;IAC3G,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,CAAC;AA8FxB,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5C;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0CD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjE;AA6BD,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAahD;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc,CAmDxF"}