@beatzball/create-litro 0.1.3 → 0.2.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.
Files changed (94) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/dist/recipes/fullstack/template/app.ts +11 -8
  3. package/dist/recipes/fullstack/template/pages/blog/[slug].ts +4 -5
  4. package/dist/recipes/fullstack/template/pages/index.ts +4 -5
  5. package/dist/recipes/starlight/recipe.config.d.ts +4 -0
  6. package/dist/recipes/starlight/recipe.config.d.ts.map +1 -0
  7. package/dist/recipes/starlight/recipe.config.js +9 -0
  8. package/dist/recipes/starlight/recipe.config.js.map +1 -0
  9. package/dist/recipes/starlight/recipe.config.ts +11 -0
  10. package/dist/recipes/starlight/template/_data/metadata.js +10 -0
  11. package/dist/recipes/starlight/template/app.ts +18 -0
  12. package/dist/recipes/starlight/template/content/blog/.11tydata.json +1 -0
  13. package/dist/recipes/starlight/template/content/blog/release-notes.md +44 -0
  14. package/dist/recipes/starlight/template/content/blog/welcome.md +44 -0
  15. package/dist/recipes/starlight/template/content/docs/.11tydata.json +1 -0
  16. package/dist/recipes/starlight/template/content/docs/configuration.md +77 -0
  17. package/dist/recipes/starlight/template/content/docs/getting-started.md +53 -0
  18. package/dist/recipes/starlight/template/content/docs/guides-deploying.md +79 -0
  19. package/dist/recipes/starlight/template/content/docs/guides-first-page.md +64 -0
  20. package/dist/recipes/starlight/template/content/docs/installation.md +54 -0
  21. package/dist/recipes/starlight/template/litro.recipe.json +7 -0
  22. package/dist/recipes/starlight/template/nitro.config.ts +57 -0
  23. package/dist/recipes/starlight/template/package.json +26 -0
  24. package/dist/recipes/starlight/template/pages/blog/[slug].ts +125 -0
  25. package/dist/recipes/starlight/template/pages/blog/index.ts +114 -0
  26. package/dist/recipes/starlight/template/pages/blog/tags/[tag].ts +110 -0
  27. package/dist/recipes/starlight/template/pages/docs/[slug].ts +147 -0
  28. package/dist/recipes/starlight/template/pages/index.ts +135 -0
  29. package/dist/recipes/starlight/template/public/styles/starlight.css +215 -0
  30. package/dist/recipes/starlight/template/server/middleware/vite-dev.ts +29 -0
  31. package/dist/recipes/starlight/template/server/routes/[...].ts +57 -0
  32. package/dist/recipes/starlight/template/server/starlight.config.js +29 -0
  33. package/dist/recipes/starlight/template/src/components/sl-aside.ts +91 -0
  34. package/dist/recipes/starlight/template/src/components/sl-badge.ts +76 -0
  35. package/dist/recipes/starlight/template/src/components/sl-card-grid.ts +34 -0
  36. package/dist/recipes/starlight/template/src/components/sl-card.ts +91 -0
  37. package/dist/recipes/starlight/template/src/components/sl-tab-item.ts +35 -0
  38. package/dist/recipes/starlight/template/src/components/sl-tabs.ts +108 -0
  39. package/dist/recipes/starlight/template/src/components/starlight-header.ts +152 -0
  40. package/dist/recipes/starlight/template/src/components/starlight-page.ts +168 -0
  41. package/dist/recipes/starlight/template/src/components/starlight-sidebar.ts +125 -0
  42. package/dist/recipes/starlight/template/src/components/starlight-toc.ts +133 -0
  43. package/dist/recipes/starlight/template/src/date-utils.ts +20 -0
  44. package/dist/recipes/starlight/template/src/extract-headings.ts +68 -0
  45. package/dist/recipes/starlight/template/src/route-meta.ts +16 -0
  46. package/dist/recipes/starlight/template/tsconfig.json +14 -0
  47. package/dist/recipes/starlight/template/vite.config.ts +19 -0
  48. package/dist/src/scaffold.test.js +134 -0
  49. package/dist/src/scaffold.test.js.map +1 -1
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +1 -1
  52. package/recipes/fullstack/template/app.ts +11 -8
  53. package/recipes/fullstack/template/pages/blog/[slug].ts +4 -5
  54. package/recipes/fullstack/template/pages/index.ts +4 -5
  55. package/recipes/starlight/recipe.config.ts +11 -0
  56. package/recipes/starlight/template/_data/metadata.js +10 -0
  57. package/recipes/starlight/template/app.ts +18 -0
  58. package/recipes/starlight/template/content/blog/.11tydata.json +1 -0
  59. package/recipes/starlight/template/content/blog/release-notes.md +44 -0
  60. package/recipes/starlight/template/content/blog/welcome.md +44 -0
  61. package/recipes/starlight/template/content/docs/.11tydata.json +1 -0
  62. package/recipes/starlight/template/content/docs/configuration.md +77 -0
  63. package/recipes/starlight/template/content/docs/getting-started.md +53 -0
  64. package/recipes/starlight/template/content/docs/guides-deploying.md +79 -0
  65. package/recipes/starlight/template/content/docs/guides-first-page.md +64 -0
  66. package/recipes/starlight/template/content/docs/installation.md +54 -0
  67. package/recipes/starlight/template/litro.recipe.json +7 -0
  68. package/recipes/starlight/template/nitro.config.ts +57 -0
  69. package/recipes/starlight/template/package.json +26 -0
  70. package/recipes/starlight/template/pages/blog/[slug].ts +125 -0
  71. package/recipes/starlight/template/pages/blog/index.ts +114 -0
  72. package/recipes/starlight/template/pages/blog/tags/[tag].ts +110 -0
  73. package/recipes/starlight/template/pages/docs/[slug].ts +147 -0
  74. package/recipes/starlight/template/pages/index.ts +135 -0
  75. package/recipes/starlight/template/public/styles/starlight.css +215 -0
  76. package/recipes/starlight/template/server/middleware/vite-dev.ts +29 -0
  77. package/recipes/starlight/template/server/routes/[...].ts +57 -0
  78. package/recipes/starlight/template/server/starlight.config.js +29 -0
  79. package/recipes/starlight/template/src/components/sl-aside.ts +91 -0
  80. package/recipes/starlight/template/src/components/sl-badge.ts +76 -0
  81. package/recipes/starlight/template/src/components/sl-card-grid.ts +34 -0
  82. package/recipes/starlight/template/src/components/sl-card.ts +91 -0
  83. package/recipes/starlight/template/src/components/sl-tab-item.ts +35 -0
  84. package/recipes/starlight/template/src/components/sl-tabs.ts +108 -0
  85. package/recipes/starlight/template/src/components/starlight-header.ts +152 -0
  86. package/recipes/starlight/template/src/components/starlight-page.ts +168 -0
  87. package/recipes/starlight/template/src/components/starlight-sidebar.ts +125 -0
  88. package/recipes/starlight/template/src/components/starlight-toc.ts +133 -0
  89. package/recipes/starlight/template/src/date-utils.ts +20 -0
  90. package/recipes/starlight/template/src/extract-headings.ts +68 -0
  91. package/recipes/starlight/template/src/route-meta.ts +16 -0
  92. package/recipes/starlight/template/tsconfig.json +14 -0
  93. package/recipes/starlight/template/vite.config.ts +19 -0
  94. package/src/scaffold.test.ts +148 -0
@@ -0,0 +1,133 @@
1
+ import { LitElement, html, css } from 'lit';
2
+ import { customElement } from 'lit/decorators.js';
3
+ import type { TocEntry } from '../extract-headings.js';
4
+
5
+ /**
6
+ * <starlight-toc .entries=${toc}>
7
+ * Renders the table of contents as anchor links.
8
+ * Active section highlighting is handled by CSS :target pseudo-class.
9
+ */
10
+ @customElement('starlight-toc')
11
+ export class StarlightToc extends LitElement {
12
+ static override properties = {
13
+ entries: { type: Array },
14
+ };
15
+
16
+ static override styles = css`
17
+ :host {
18
+ display: block;
19
+ }
20
+
21
+ nav {
22
+ position: sticky;
23
+ top: calc(var(--sl-nav-height, 3.5rem) + 1rem);
24
+ max-height: calc(100vh - var(--sl-nav-height, 3.5rem) - 2rem);
25
+ overflow-y: auto;
26
+ padding: 0 0.5rem;
27
+ }
28
+
29
+ h2 {
30
+ font-size: var(--sl-text-xs, 0.75rem);
31
+ font-weight: 700;
32
+ text-transform: uppercase;
33
+ letter-spacing: 0.1em;
34
+ color: var(--sl-color-gray-4, #757575);
35
+ margin: 0 0 0.75rem;
36
+ padding: 0;
37
+ border: none;
38
+ }
39
+
40
+ ul {
41
+ list-style: none;
42
+ padding: 0;
43
+ margin: 0;
44
+ }
45
+
46
+ li {
47
+ margin: 0;
48
+ }
49
+
50
+ a {
51
+ display: block;
52
+ padding: 0.2rem 0;
53
+ font-size: var(--sl-text-sm, 0.875rem);
54
+ color: var(--sl-color-gray-4, #757575);
55
+ text-decoration: none;
56
+ transition: color 0.15s;
57
+ border-left: 2px solid transparent;
58
+ }
59
+
60
+ a:hover {
61
+ color: var(--sl-color-text, #23262f);
62
+ }
63
+
64
+ /* Depth indentation */
65
+ .depth-2 a { padding-left: 0.75rem; }
66
+ .depth-3 a { padding-left: 1.5rem; }
67
+ .depth-4 a { padding-left: 2.25rem; }
68
+
69
+ /* Active via [aria-current] set by the click handler */
70
+ li a[aria-current='true'] {
71
+ color: var(--sl-color-accent, #7c3aed);
72
+ border-left-color: var(--sl-color-accent, #7c3aed);
73
+ }
74
+ `;
75
+
76
+ entries: TocEntry[] = [];
77
+
78
+ /**
79
+ * Click handler for TOC anchor links.
80
+ *
81
+ * Heading elements rendered via unsafeHTML live inside shadow roots that
82
+ * native fragment navigation and document.getElementById() cannot reach.
83
+ * Instead of relying on the browser's default hash navigation (which also
84
+ * fires popstate and re-renders the page component with no data), we:
85
+ * 1. Prevent the default navigation.
86
+ * 2. Walk the shadow tree to find the target element.
87
+ * 3. Scroll to it smoothly.
88
+ * 4. Update the URL hash via pushState (does not fire popstate).
89
+ */
90
+ private _handleClick(e: MouseEvent, slug: string) {
91
+ e.preventDefault();
92
+ const target = this._findDeep(document, slug);
93
+ if (target) target.scrollIntoView({ behavior: 'smooth' });
94
+ history.pushState(null, '', `#${slug}`);
95
+ }
96
+
97
+ /** Recursively searches shadow roots for an element matching the CSS id selector. */
98
+ private _findDeep(root: Document | ShadowRoot | Element, id: string): Element | null {
99
+ const sel = `#${CSS.escape(id)}`;
100
+ const direct = root.querySelector(sel);
101
+ if (direct) return direct;
102
+ for (const el of root.querySelectorAll('*')) {
103
+ if (el.shadowRoot) {
104
+ const found = this._findDeep(el.shadowRoot, id);
105
+ if (found) return found;
106
+ }
107
+ }
108
+ return null;
109
+ }
110
+
111
+ override render() {
112
+ if (!this.entries.length) return html``;
113
+ const currentHash = typeof location !== 'undefined' ? location.hash : '';
114
+ return html`
115
+ <nav aria-label="On this page">
116
+ <h2>On this page</h2>
117
+ <ul>
118
+ ${this.entries.map(entry => html`
119
+ <li class="depth-${entry.depth}">
120
+ <a
121
+ href="#${entry.slug}"
122
+ aria-current="${currentHash === '#' + entry.slug ? 'true' : 'false'}"
123
+ @click=${(e: MouseEvent) => this._handleClick(e, entry.slug)}
124
+ >${entry.text}</a>
125
+ </li>
126
+ `)}
127
+ </ul>
128
+ </nav>
129
+ `;
130
+ }
131
+ }
132
+
133
+ export default StarlightToc;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Formats a Date or date string into a human-readable form.
3
+ * Uses the `en-US` locale with month-name style (e.g. "January 15, 2026").
4
+ */
5
+ export function formatDate(date: Date | string): string {
6
+ const d = date instanceof Date ? date : new Date(date as string);
7
+ return d.toLocaleDateString('en-US', {
8
+ year: 'numeric',
9
+ month: 'long',
10
+ day: 'numeric',
11
+ });
12
+ }
13
+
14
+ /**
15
+ * Returns an ISO 8601 string (e.g. "2026-01-15") suitable for a `datetime` attribute.
16
+ */
17
+ export function isoDate(date: Date | string): string {
18
+ const d = date instanceof Date ? date : new Date(date as string);
19
+ return d.toISOString().slice(0, 10);
20
+ }
@@ -0,0 +1,68 @@
1
+ export interface TocEntry {
2
+ depth: number;
3
+ text: string;
4
+ slug: string;
5
+ }
6
+
7
+ /**
8
+ * Extracts h2–h4 headings from raw Markdown source.
9
+ * Returns an array of TocEntry objects suitable for rendering a table of contents.
10
+ */
11
+ export function extractHeadings(rawMarkdown: string): TocEntry[] {
12
+ const headings: TocEntry[] = [];
13
+ const lines = rawMarkdown.split('\n');
14
+
15
+ for (const line of lines) {
16
+ const match = line.match(/^(#{2,4})\s+(.+)$/);
17
+ if (!match) continue;
18
+
19
+ const depth = match[1].length;
20
+ const text = match[2].trim().replace(/\s*\{[^}]*\}\s*$/, ''); // strip {#custom-id} syntax
21
+ const slug = text
22
+ .toLowerCase()
23
+ .replace(/[^\w\s-]/g, '')
24
+ .trim()
25
+ .replace(/\s+/g, '-')
26
+ .replace(/-+/g, '-');
27
+
28
+ headings.push({ depth, text, slug });
29
+ }
30
+
31
+ return headings;
32
+ }
33
+
34
+ /**
35
+ * Post-processes rendered HTML to inject `id` attributes on h2–h4 elements,
36
+ * matching the slugs produced by `extractHeadings()`.
37
+ * Enables anchor-link navigation from the table of contents.
38
+ */
39
+ export function addHeadingIds(html: string): string {
40
+ const counters: Record<string, number> = {};
41
+
42
+ return html.replace(
43
+ /<(h[2-4])([^>]*)>([\s\S]*?)<\/h[2-4]>/gi,
44
+ (_match, tag: string, attrs: string, content: string) => {
45
+ // Strip HTML tags from content to get plain text
46
+ const text = content.replace(/<[^>]+>/g, '').trim().replace(/\s*\{[^}]*\}\s*$/, '');
47
+ let slug = text
48
+ .toLowerCase()
49
+ .replace(/[^\w\s-]/g, '')
50
+ .trim()
51
+ .replace(/\s+/g, '-')
52
+ .replace(/-+/g, '-');
53
+
54
+ // Deduplicate: if the same slug appears twice, append -2, -3, etc.
55
+ counters[slug] = (counters[slug] ?? 0) + 1;
56
+ if (counters[slug] > 1) {
57
+ slug = `${slug}-${counters[slug]}`;
58
+ }
59
+
60
+ // Avoid double-injecting if an id already exists
61
+ if (/\bid=/.test(attrs)) {
62
+ return `<${tag}${attrs}>${content}</${tag}>`;
63
+ }
64
+
65
+ return `<${tag}${attrs} id="${slug}">${content}</${tag}>`;
66
+ },
67
+ );
68
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * HTML injected into every page's <head> via routeMeta.head.
3
+ *
4
+ * Order matters:
5
+ * 1. Stylesheet link — loaded asynchronously by the browser; must come before
6
+ * the FOUC-prevention script so --sl-* tokens are available immediately.
7
+ * 2. Inline script — synchronous, runs before first paint to set data-theme
8
+ * from localStorage, preventing a flash of the wrong theme on reload.
9
+ */
10
+ export const starlightHead = [
11
+ '<link rel="stylesheet" href="/styles/starlight.css" />',
12
+ '<script>(function(){',
13
+ 'var t=localStorage.getItem("sl-theme")||"light";',
14
+ 'document.documentElement.setAttribute("data-theme",t);',
15
+ '})();</script>',
16
+ ].join('');
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "strict": true,
7
+ "skipLibCheck": true,
8
+ "esModuleInterop": true,
9
+ "experimentalDecorators": true,
10
+ "useDefineForClassFields": false
11
+ },
12
+ "include": ["**/*.ts", "**/*.tsx"],
13
+ "exclude": ["node_modules", "dist", ".nitro"]
14
+ }
@@ -0,0 +1,19 @@
1
+ import { defineConfig } from 'vite';
2
+ import litroContentPlugin from '@beatzball/litro/vite';
3
+
4
+ export default defineConfig({
5
+ plugins: [litroContentPlugin()],
6
+ base: '/_litro/',
7
+ resolve: {
8
+ conditions: ['source', 'browser', 'module', 'import', 'default'],
9
+ },
10
+ build: {
11
+ outDir: 'dist/client',
12
+ rollupOptions: {
13
+ input: 'app.ts',
14
+ output: {
15
+ entryFileNames: '[name].js',
16
+ },
17
+ },
18
+ },
19
+ });
@@ -200,5 +200,139 @@ describe('scaffold', () => {
200
200
  .rejects.toThrow();
201
201
  });
202
202
  });
203
+ // ---------------------------------------------------------------------------
204
+ // starlight recipe
205
+ // ---------------------------------------------------------------------------
206
+ it('starlight recipe writes litro.recipe.json with ssg mode', async () => {
207
+ await withTmpDir(async (dir) => {
208
+ const targetDir = join(dir, 'my-docs');
209
+ await scaffold('starlight', { projectName: 'my-docs', mode: 'ssg' }, targetDir);
210
+ const { existsSync } = await import('node:fs');
211
+ expect(existsSync(join(targetDir, 'litro.recipe.json'))).toBe(true);
212
+ const manifest = JSON.parse(await readFile(join(targetDir, 'litro.recipe.json'), 'utf-8'));
213
+ expect(manifest.recipe).toBe('starlight');
214
+ expect(manifest.mode).toBe('ssg');
215
+ expect(manifest.contentDir).toBe('content');
216
+ });
217
+ });
218
+ it('starlight recipe writes all expected files', async () => {
219
+ await withTmpDir(async (dir) => {
220
+ const targetDir = join(dir, 'my-docs');
221
+ await scaffold('starlight', { projectName: 'my-docs', mode: 'ssg' }, targetDir);
222
+ const { existsSync } = await import('node:fs');
223
+ // Core config
224
+ expect(existsSync(join(targetDir, 'package.json'))).toBe(true);
225
+ expect(existsSync(join(targetDir, 'tsconfig.json'))).toBe(true);
226
+ expect(existsSync(join(targetDir, 'nitro.config.ts'))).toBe(true);
227
+ expect(existsSync(join(targetDir, 'vite.config.ts'))).toBe(true);
228
+ expect(existsSync(join(targetDir, 'app.ts'))).toBe(true);
229
+ expect(existsSync(join(targetDir, '.gitignore'))).toBe(true);
230
+ expect(existsSync(join(targetDir, 'litro.recipe.json'))).toBe(true);
231
+ // Server
232
+ expect(existsSync(join(targetDir, 'server/starlight.config.js'))).toBe(true);
233
+ expect(existsSync(join(targetDir, 'server/routes/[...].ts'))).toBe(true);
234
+ expect(existsSync(join(targetDir, 'server/middleware/vite-dev.ts'))).toBe(true);
235
+ expect(existsSync(join(targetDir, 'server/stubs/page-manifest.ts'))).toBe(true);
236
+ // Pages
237
+ expect(existsSync(join(targetDir, 'pages/index.ts'))).toBe(true);
238
+ expect(existsSync(join(targetDir, 'pages/docs/[slug].ts'))).toBe(true);
239
+ expect(existsSync(join(targetDir, 'pages/blog/index.ts'))).toBe(true);
240
+ expect(existsSync(join(targetDir, 'pages/blog/[slug].ts'))).toBe(true);
241
+ expect(existsSync(join(targetDir, 'pages/blog/tags/[tag].ts'))).toBe(true);
242
+ // Utilities
243
+ expect(existsSync(join(targetDir, 'src/extract-headings.ts'))).toBe(true);
244
+ expect(existsSync(join(targetDir, 'src/date-utils.ts'))).toBe(true);
245
+ expect(existsSync(join(targetDir, 'src/route-meta.ts'))).toBe(true);
246
+ // Components
247
+ expect(existsSync(join(targetDir, 'src/components/starlight-page.ts'))).toBe(true);
248
+ expect(existsSync(join(targetDir, 'src/components/starlight-header.ts'))).toBe(true);
249
+ expect(existsSync(join(targetDir, 'src/components/starlight-sidebar.ts'))).toBe(true);
250
+ expect(existsSync(join(targetDir, 'src/components/starlight-toc.ts'))).toBe(true);
251
+ expect(existsSync(join(targetDir, 'src/components/sl-card.ts'))).toBe(true);
252
+ expect(existsSync(join(targetDir, 'src/components/sl-card-grid.ts'))).toBe(true);
253
+ expect(existsSync(join(targetDir, 'src/components/sl-badge.ts'))).toBe(true);
254
+ expect(existsSync(join(targetDir, 'src/components/sl-aside.ts'))).toBe(true);
255
+ expect(existsSync(join(targetDir, 'src/components/sl-tabs.ts'))).toBe(true);
256
+ expect(existsSync(join(targetDir, 'src/components/sl-tab-item.ts'))).toBe(true);
257
+ // Content
258
+ expect(existsSync(join(targetDir, 'content/docs/.11tydata.json'))).toBe(true);
259
+ expect(existsSync(join(targetDir, 'content/docs/getting-started.md'))).toBe(true);
260
+ expect(existsSync(join(targetDir, 'content/blog/.11tydata.json'))).toBe(true);
261
+ expect(existsSync(join(targetDir, 'content/blog/welcome.md'))).toBe(true);
262
+ // Public
263
+ expect(existsSync(join(targetDir, 'public/styles/starlight.css'))).toBe(true);
264
+ // Data
265
+ expect(existsSync(join(targetDir, '_data/metadata.js'))).toBe(true);
266
+ });
267
+ });
268
+ it('starlight recipe interpolates {{projectName}} in package.json', async () => {
269
+ await withTmpDir(async (dir) => {
270
+ const targetDir = join(dir, 'awesome-docs');
271
+ await scaffold('starlight', { projectName: 'awesome-docs', mode: 'ssg' }, targetDir);
272
+ const pkg = JSON.parse(await readFile(join(targetDir, 'package.json'), 'utf-8'));
273
+ expect(pkg.name).toBe('awesome-docs');
274
+ });
275
+ });
276
+ it('starlight recipe interpolates {{projectName}} in server/starlight.config.js', async () => {
277
+ await withTmpDir(async (dir) => {
278
+ const targetDir = join(dir, 'my-docs-site');
279
+ await scaffold('starlight', { projectName: 'my-docs-site', mode: 'ssg' }, targetDir);
280
+ const config = await readFile(join(targetDir, 'server/starlight.config.js'), 'utf-8');
281
+ expect(config).toContain('my-docs-site');
282
+ expect(config).not.toContain('{{projectName}}');
283
+ });
284
+ });
285
+ it('starlight recipe has no un-interpolated {{ }} in any output file', async () => {
286
+ await withTmpDir(async (dir) => {
287
+ const targetDir = join(dir, 'my-docs');
288
+ await scaffold('starlight', { projectName: 'my-docs', mode: 'ssg' }, targetDir);
289
+ const binaryExts = new Set(['.png', '.jpg', '.jpeg', '.gif', '.ico', '.webp', '.svg',
290
+ '.woff', '.woff2', '.ttf', '.eot', '.otf', '.pdf', '.zip', '.gz', '.tar', '.gitkeep']);
291
+ async function collectFiles(d) {
292
+ const { readdir: rd } = await import('node:fs/promises');
293
+ const entries = await rd(d, { withFileTypes: true });
294
+ const results = [];
295
+ for (const e of entries) {
296
+ const p = join(d, e.name);
297
+ if (e.isDirectory())
298
+ results.push(...(await collectFiles(p)));
299
+ else
300
+ results.push(p);
301
+ }
302
+ return results;
303
+ }
304
+ const files = await collectFiles(targetDir);
305
+ for (const file of files) {
306
+ const extPart = file.includes('.') ? `.${file.split('.').pop()}` : '';
307
+ if (binaryExts.has(extPart.toLowerCase()))
308
+ continue;
309
+ const content = await readFile(file, 'utf-8');
310
+ const matches = content.match(/\{\{[^}]+\}\}/g);
311
+ if (matches) {
312
+ throw new Error(`Un-interpolated placeholder in ${file}: ${matches.join(', ')}`);
313
+ }
314
+ }
315
+ });
316
+ });
317
+ it('starlight recipe page files use plain <a> tags, not <litro-link>', async () => {
318
+ // SSG pages must use <a> for full-page-reload navigation so each pre-rendered
319
+ // page loads its own __litro_data__. <litro-link> triggers SPA navigation which
320
+ // leaves serverData=null on the navigated page (no __litro_data__ in DOM).
321
+ await withTmpDir(async (dir) => {
322
+ const targetDir = join(dir, 'my-docs');
323
+ await scaffold('starlight', { projectName: 'my-docs', mode: 'ssg' }, targetDir);
324
+ const pageFiles = [
325
+ join(targetDir, 'pages/index.ts'),
326
+ join(targetDir, 'pages/docs/[slug].ts'),
327
+ join(targetDir, 'pages/blog/index.ts'),
328
+ join(targetDir, 'pages/blog/[slug].ts'),
329
+ join(targetDir, 'pages/blog/tags/[tag].ts'),
330
+ ];
331
+ for (const file of pageFiles) {
332
+ const content = await readFile(file, 'utf-8');
333
+ expect(content, `${file} should not contain <litro-link>`).not.toContain('litro-link');
334
+ }
335
+ });
336
+ });
203
337
  });
204
338
  //# sourceMappingURL=scaffold.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.test.js","sourceRoot":"","sources":["../../src/scaffold.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.test.js","sourceRoot":"","sources":["../../src/scaffold.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,KAAK,UAAU,UAAU,CAAC,EAAkC;IAC1D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAE/E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;YAC5G,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACxC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEjF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACzC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAElF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAEnC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9E,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAErC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEnF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;gBAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAEzF,KAAK,UAAU,YAAY,CAAC,CAAS;gBACnC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1B,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;wBACpB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;YAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;gBACpD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAChD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;YACtH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC5C,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAErF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,EAAE,OAAO,CAAC,CAAC;YACvF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,cAAc;YACd,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,8BAA8B;YAC9B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,SAAS;YACT,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;gBAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAEzF,KAAK,UAAU,YAAY,CAAC,CAAS;gBACnC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1B,IAAI,CAAC,CAAC,WAAW,EAAE;wBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;wBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;gBACpD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAChD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,8EAA8E;QAC9E,gFAAgF;QAChF,2EAA2E;QAC3E,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,SAAS,GAAG;gBAChB,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;gBACtC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC;gBACvC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;aACvC,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,kCAAkC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACzF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;iBACtF,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;YACtH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,cAAc;YACd,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,SAAS;YACT,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,QAAQ;YACR,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,YAAY;YACZ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,aAAa;YACb,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,UAAU;YACV,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,SAAS;YACT,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO;YACP,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC5C,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAErF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;YAC5G,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC5C,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAAE,OAAO,CAAC,CAAC;YACtF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;gBAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAEzF,KAAK,UAAU,YAAY,CAAC,CAAS;gBACnC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1B,IAAI,CAAC,CAAC,WAAW,EAAE;wBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;wBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;gBACpD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAChD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,8EAA8E;QAC9E,gFAAgF;QAChF,2EAA2E;QAC3E,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YAEhF,MAAM,SAAS,GAAG;gBAChB,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC;gBACvC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;gBACtC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC;gBACvC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC;aAC5C,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,kCAAkC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACzF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}