@rsaglobaltech/specgate 0.8.1 → 0.9.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 (121) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +8 -8
  3. package/bin/specgate.ts +13 -2
  4. package/dist/bin/specgate.js +11 -1
  5. package/dist/bin/specgate.js.map +1 -1
  6. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js +56 -0
  7. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js.map +1 -1
  8. package/dist/packages/core/src/application/ValidateProjectUseCase.js +54 -0
  9. package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
  10. package/dist/packages/core/src/domain/AdversarialProbe.js +75 -0
  11. package/dist/packages/core/src/domain/AdversarialProbe.js.map +1 -0
  12. package/dist/packages/core/src/domain/AgentPrompt.js +52 -3
  13. package/dist/packages/core/src/domain/AgentPrompt.js.map +1 -1
  14. package/dist/packages/core/src/domain/DeclaredArtifacts.js +25 -0
  15. package/dist/packages/core/src/domain/DeclaredArtifacts.js.map +1 -1
  16. package/dist/packages/core/src/domain/DoneVerification.js +68 -0
  17. package/dist/packages/core/src/domain/DoneVerification.js.map +1 -0
  18. package/dist/packages/core/src/domain/GateCommandIntegrity.js +139 -0
  19. package/dist/packages/core/src/domain/GateCommandIntegrity.js.map +1 -0
  20. package/dist/packages/core/src/domain/HarnessConfig.js +6 -0
  21. package/dist/packages/core/src/domain/HarnessConfig.js.map +1 -1
  22. package/dist/packages/core/src/domain/MultiStack.js +96 -0
  23. package/dist/packages/core/src/domain/MultiStack.js.map +1 -0
  24. package/dist/packages/core/src/domain/Precedents.js +96 -0
  25. package/dist/packages/core/src/domain/Precedents.js.map +1 -0
  26. package/dist/packages/core/src/domain/RequirementRemoval.js +161 -0
  27. package/dist/packages/core/src/domain/RequirementRemoval.js.map +1 -0
  28. package/dist/packages/core/src/domain/ScenarioCoverage.js +178 -0
  29. package/dist/packages/core/src/domain/ScenarioCoverage.js.map +1 -0
  30. package/dist/packages/core/src/domain/SpecSections.js +206 -0
  31. package/dist/packages/core/src/domain/SpecSections.js.map +1 -0
  32. package/dist/packages/core/src/domain/TestCommand.js +82 -0
  33. package/dist/packages/core/src/domain/TestCommand.js.map +1 -0
  34. package/dist/packages/core/src/domain/TraceabilityFormat.js +37 -1
  35. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
  36. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +31 -0
  37. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -1
  38. package/dist/packages/core/test/unit/adversarial-probe.test.js +81 -0
  39. package/dist/packages/core/test/unit/adversarial-probe.test.js.map +1 -0
  40. package/dist/packages/core/test/unit/done-verification.test.js +83 -0
  41. package/dist/packages/core/test/unit/done-verification.test.js.map +1 -0
  42. package/dist/packages/core/test/unit/gate-command-integrity.test.js +114 -0
  43. package/dist/packages/core/test/unit/gate-command-integrity.test.js.map +1 -0
  44. package/dist/packages/core/test/unit/multi-stack.test.js +86 -0
  45. package/dist/packages/core/test/unit/multi-stack.test.js.map +1 -0
  46. package/dist/packages/core/test/unit/precedents.test.js +99 -0
  47. package/dist/packages/core/test/unit/precedents.test.js.map +1 -0
  48. package/dist/packages/core/test/unit/requirement-removal.test.js +124 -0
  49. package/dist/packages/core/test/unit/requirement-removal.test.js.map +1 -0
  50. package/dist/packages/core/test/unit/scenario-coverage.test.js +146 -0
  51. package/dist/packages/core/test/unit/scenario-coverage.test.js.map +1 -0
  52. package/dist/packages/core/test/unit/spec-sections.test.js +146 -0
  53. package/dist/packages/core/test/unit/spec-sections.test.js.map +1 -0
  54. package/dist/packages/core/test/unit/test-command.test.js +81 -0
  55. package/dist/packages/core/test/unit/test-command.test.js.map +1 -0
  56. package/dist/packages/core/test/unit/validate-project.test.js +21 -0
  57. package/dist/packages/core/test/unit/validate-project.test.js.map +1 -1
  58. package/dist/scripts/agents/commands.js +1 -1
  59. package/dist/scripts/agents/commands.js.map +1 -1
  60. package/dist/scripts/agents/init.js +1 -1
  61. package/dist/scripts/agents/init.js.map +1 -1
  62. package/dist/scripts/change/instructions.js +2 -2
  63. package/dist/scripts/change/instructions.js.map +1 -1
  64. package/dist/scripts/cli/commands/change/ChangeCommand.js +2 -2
  65. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  66. package/dist/scripts/cli/commands/config/CiInitCommand.js +1 -1
  67. package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -1
  68. package/dist/scripts/cli/commands/harness/RunCommand.js +203 -4
  69. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  70. package/dist/scripts/cli/commands/pack/InferPackCommand.js +331 -31
  71. package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
  72. package/dist/scripts/cli/commands/project/AdoptCommand.js +81 -4
  73. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  74. package/dist/scripts/cli/commands/project/InitProjectCommand.js +245 -45
  75. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  76. package/dist/scripts/cli/commands/quality/DoctorCommand.js +20 -2
  77. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
  78. package/dist/scripts/cli/commands/quality/FixCommand.js +1 -1
  79. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
  80. package/dist/scripts/cli/commands/quality/ReportCommand.js +1 -1
  81. package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
  82. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +340 -18
  83. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  84. package/dist/scripts/cli/commands/spec/DoneCommand.js +108 -0
  85. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  86. package/dist/scripts/cli/commands/spec/PlanCommand.js +7 -1
  87. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  88. package/dist/scripts/cli/commands/spec/ReqCommand.js +112 -2
  89. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
  90. package/dist/scripts/cli/commands/spec/StatusCommand.js +2 -2
  91. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  92. package/dist/scripts/docs/build-site.js +145 -35
  93. package/dist/scripts/docs/build-site.js.map +1 -1
  94. package/dist/scripts/docs/components.js +208 -0
  95. package/dist/scripts/docs/components.js.map +1 -0
  96. package/dist/scripts/docs/highlight.js +180 -0
  97. package/dist/scripts/docs/highlight.js.map +1 -0
  98. package/dist/scripts/docs/icons.js +63 -0
  99. package/dist/scripts/docs/icons.js.map +1 -0
  100. package/dist/scripts/docs/nav.js +9 -3
  101. package/dist/scripts/docs/nav.js.map +1 -1
  102. package/dist/scripts/gen_mcp_tools.js +22 -2
  103. package/dist/scripts/gen_mcp_tools.js.map +1 -1
  104. package/dist/scripts/harness/init.js +101 -40
  105. package/dist/scripts/harness/init.js.map +1 -1
  106. package/dist/scripts/harness/worktree-lock.js +161 -0
  107. package/dist/scripts/harness/worktree-lock.js.map +1 -0
  108. package/dist/scripts/infer_pack.js +4 -1
  109. package/dist/scripts/infer_pack.js.map +1 -1
  110. package/dist/scripts/lib/surface.js +35 -7
  111. package/dist/scripts/lib/surface.js.map +1 -1
  112. package/package.json +5 -2
  113. package/templates/adopt/AI_RULES.md.tpl +1 -1
  114. package/templates/adopt/spec.md.tpl +4 -4
  115. package/templates/base/spec.md.tpl +12 -0
  116. package/templates/ci/azure.yml.tpl +2 -2
  117. package/templates/ci/github.yml.tpl +2 -2
  118. package/templates/ci/gitlab.yml.tpl +1 -1
  119. package/templates/ci/jenkins.tpl +1 -1
  120. package/templates/contracts/test-strategy.md.tpl +2 -2
  121. package/templates/harness/prompt-prefix.md.tpl +2 -5
@@ -61,6 +61,9 @@ const path = __importStar(require("node:path"));
61
61
  const marked_1 = require("marked");
62
62
  const nav_1 = require("./nav");
63
63
  const blocks_1 = require("./blocks");
64
+ const components_1 = require("./components");
65
+ const highlight_1 = require("./highlight");
66
+ const icons_1 = require("./icons");
64
67
  const ROOT = path.resolve(__dirname, "..", "..", "..");
65
68
  /** Absolute base for metadata a link scraper resolves without a page context. */
66
69
  const SITE = "https://rsaglobaltech.github.io/specgate";
@@ -168,11 +171,22 @@ function renderMarkdown(source, currentSlug) {
168
171
  .join(" ");
169
172
  return `<a ${attrs}>${text}</a>`;
170
173
  };
174
+ // ```bash Install → language `bash`, label "Install" in the block header.
175
+ // The label is how the reference documentation names the file or the shell a
176
+ // snippet belongs to, and it is the difference between six unlabelled blocks
177
+ // and six blocks you can tell apart.
171
178
  renderer.code = ({ text, lang }) => {
172
- const language = String(lang || "").split(/\s+/)[0] || "text";
179
+ const parts = String(lang || "")
180
+ .trim()
181
+ .split(/\s+/);
182
+ const language = parts[0] || "text";
183
+ const label = parts.slice(1).join(" ");
173
184
  return (`<figure class="code" data-lang="${escapeHtml(language)}">` +
185
+ `<figcaption class="code__head">` +
186
+ `<span class="code__lang">${escapeHtml(label || language)}</span>` +
174
187
  `<button class="code__copy" type="button" aria-label="Copy to clipboard">Copy</button>` +
175
- `<pre><code class="language-${escapeHtml(language)}">${escapeHtml(text)}</code></pre>` +
188
+ `</figcaption>` +
189
+ `<pre><code class="language-${escapeHtml(language)}">${(0, highlight_1.highlight)(text, language)}</code></pre>` +
176
190
  `</figure>\n`);
177
191
  };
178
192
  renderer.table = ({ header, rows }) => {
@@ -198,24 +212,43 @@ function renderMarkdown(source, currentSlug) {
198
212
  * which does not exist. Every link out of a nested page needs the climb.
199
213
  */
200
214
  function sidebar(currentSlug, up) {
201
- const sections = nav_1.NAV.map((section) => {
215
+ return nav_1.NAV.map((section) => {
216
+ const open = section.entries.some((e) => e.slug === currentSlug);
202
217
  const items = section.entries
203
218
  .map((entry) => {
204
219
  const active = entry.slug === currentSlug ? ' class="is-active" aria-current="page"' : "";
205
220
  return `<li><a href="${up}${entry.slug}.html"${active}>${escapeHtml(entry.label)}</a></li>`;
206
221
  })
207
222
  .join("");
208
- return `<div class="side__group"><h2>${escapeHtml(section.title)}</h2><ul>${items}</ul></div>`;
223
+ // `open` on the group holding the current page, so a reader always lands
224
+ // with their own section unfolded. The rest remember their last state in
225
+ // localStorage; `details` keeps that working with JavaScript disabled.
226
+ return (`<details class="side__group" data-group="${escapeHtml(section.title)}"${open ? " open" : ""}>` +
227
+ `<summary class="side__head">${(0, icons_1.icon)(section.icon, "icon side__icon")}` +
228
+ `<span>${escapeHtml(section.title)}</span></summary>` +
229
+ `<ul>${items}</ul></details>`);
209
230
  }).join("");
210
- return sections;
231
+ }
232
+ /** `Reference › Command reference` above the title, so depth is visible. */
233
+ function breadcrumbs(slug, up) {
234
+ const section = nav_1.NAV.find((s) => s.entries.some((e) => e.slug === slug));
235
+ const entry = (0, nav_1.navEntry)(slug);
236
+ if (!section || !entry)
237
+ return "";
238
+ return (`<nav class="crumbs" aria-label="Breadcrumb"><ol>` +
239
+ `<li><a href="${up}docs.html">Docs</a></li>` +
240
+ `<li>${escapeHtml(section.title)}</li>` +
241
+ `<li aria-current="page">${escapeHtml(entry.label)}</li>` +
242
+ `</ol></nav>`);
211
243
  }
212
244
  function onThisPage(headings) {
213
245
  if (headings.length < 2)
214
- return "";
246
+ return '<div class="rail" aria-hidden="true"></div>';
215
247
  const items = headings
216
248
  .map((h) => `<li class="toc__l${h.level}"><a href="#${h.id}">${escapeHtml(h.text)}</a></li>`)
217
249
  .join("");
218
- return `<nav class="toc" aria-label="On this page"><h2>On this page</h2><ul>${items}</ul></nav>`;
250
+ return (`<div class="rail"><nav class="toc" aria-label="On this page">` +
251
+ `<h2>On this page</h2><ul>${items}</ul></nav></div>`);
219
252
  }
220
253
  function pageShell(page, version) {
221
254
  const entry = (0, nav_1.navEntry)(page.slug);
@@ -236,13 +269,13 @@ function pageShell(page, version) {
236
269
  <head>
237
270
  <meta charset="utf-8">
238
271
  <meta name="viewport" content="width=device-width, initial-scale=1">
239
- <title>${escapeHtml(page.title)} — create-spec-driven-app</title>
272
+ <title>${escapeHtml(page.title)} — Specgate</title>
240
273
  <meta name="description" content="${escapeHtml(entry?.blurb || page.title)}">
241
274
  <link rel="preconnect" href="https://fonts.googleapis.com">
242
275
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
243
276
  <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=IBM+Plex+Mono:wght@400;600&display=swap" rel="stylesheet">
244
277
  <link rel="icon" href="${up}assets/favicon.svg" type="image/svg+xml">
245
- <meta property="og:title" content="${escapeHtml(page.title)} — create-spec-driven-app">
278
+ <meta property="og:title" content="${escapeHtml(page.title)} — Specgate">
246
279
  <meta property="og:description" content="${escapeHtml(entry?.blurb || page.title)}">
247
280
  <meta property="og:image" content="${SITE}/assets/og-card.png">
248
281
  <meta name="twitter:card" content="summary_large_image">
@@ -259,33 +292,41 @@ function pageShell(page, version) {
259
292
  <a class="skip" href="#content">Skip to content</a>
260
293
 
261
294
  <header class="top">
262
- <button class="top__menu" type="button" aria-label="Open navigation" aria-expanded="false">☰</button>
263
- <a class="top__brand" href="${up}index.html"><span aria-hidden="true">⬡</span> create-spec-driven-app</a>
295
+ <button class="top__menu" type="button" aria-label="Open navigation" aria-expanded="false">
296
+ <span aria-hidden="true">☰</span>
297
+ </button>
298
+ <a class="top__brand" href="${up}index.html"><span aria-hidden="true">⬡</span> Specgate</a>
264
299
  <span class="top__version">v${escapeHtml(version)}</span>
265
- <div class="top__search">
266
- <input type="search" id="search" placeholder="Search the docs…" autocomplete="off"
267
- aria-label="Search documentation">
268
- <div class="top__results" id="results" hidden></div>
269
- </div>
300
+ <button class="top__search" id="search" type="button" aria-label="Search documentation"
301
+ aria-keyshortcuts="Meta+K Control+K">
302
+ ${(0, icons_1.icon)("search", "icon")}
303
+ <span class="top__search-label">Search</span>
304
+ <kbd class="top__kbd"><span class="top__kbd-mod">⌘</span>K</kbd>
305
+ </button>
270
306
  <nav class="top__links">
307
+ <a href="${up}docs.html">Docs</a>
271
308
  <a href="${up}packs/">Packs</a>
272
309
  <a href="${REPO}" target="_blank" rel="noreferrer">GitHub</a>
273
- <a href="https://www.npmjs.com/package/create-spec-driven-app" target="_blank" rel="noreferrer">npm</a>
310
+ <a href="https://www.npmjs.com/package/@rsaglobaltech/specgate" target="_blank" rel="noreferrer">npm</a>
274
311
  </nav>
275
312
  <button class="top__theme" type="button" aria-label="Switch theme">◐</button>
276
313
  </header>
277
314
 
278
315
  <div class="shell">
279
- <aside class="side" id="side">${sidebar(page.slug, up)}</aside>
316
+ <aside class="side" id="side">
317
+ <nav aria-label="Documentation">${sidebar(page.slug, up)}</nav>
318
+ </aside>
280
319
 
281
320
  <main class="content" id="content">
321
+ ${breadcrumbs(page.slug, up)}
282
322
  <article class="prose">
283
323
  ${page.html}
284
324
  </article>
285
325
  <nav class="pager" aria-label="Neighbouring pages">${pager}</nav>
286
326
  <footer class="page-foot">
327
+ <p class="page-foot__ask">Was this page useful?</p>
287
328
  <a href="${REPO}/edit/main/docs/${escapeHtml(page.slug)}.md" target="_blank" rel="noreferrer">Edit this page</a>
288
- <span>·</span>
329
+ <span aria-hidden="true">·</span>
289
330
  <a href="${REPO}/issues/new" target="_blank" rel="noreferrer">Something wrong? Open an issue</a>
290
331
  </footer>
291
332
  </main>
@@ -293,6 +334,23 @@ ${page.html}
293
334
  ${onThisPage(page.headings)}
294
335
  </div>
295
336
 
337
+ <div class="palette" id="palette" hidden>
338
+ <div class="palette__scrim" data-close="1"></div>
339
+ <div class="palette__box" role="dialog" aria-modal="true" aria-label="Search documentation">
340
+ <div class="palette__field">
341
+ ${(0, icons_1.icon)("search", "icon")}
342
+ <input type="search" id="palette-input" placeholder="Search the documentation…"
343
+ autocomplete="off" spellcheck="false" aria-label="Search documentation"
344
+ aria-controls="results" aria-expanded="true">
345
+ <kbd class="palette__esc">Esc</kbd>
346
+ </div>
347
+ <div class="palette__results" id="results" role="listbox" aria-label="Results"></div>
348
+ <p class="palette__hint">
349
+ <kbd>↑</kbd><kbd>↓</kbd> to navigate · <kbd>↵</kbd> to open · <kbd>Esc</kbd> to close
350
+ </p>
351
+ </div>
352
+ </div>
353
+
296
354
  <script src="${up}assets/docs.js" defer></script>
297
355
  </body>
298
356
  </html>
@@ -345,61 +403,113 @@ function copyVerbatim(outDir, available) {
345
403
  * here without anybody remembering to add it twice.
346
404
  */
347
405
  function docsHome(version) {
348
- const cards = nav_1.NAV.map((section) => {
349
- const items = section.entries
350
- .map((entry) => `<li><a href="${entry.slug}.html"><strong>${escapeHtml(entry.label)}</strong>` +
351
- `<span>${escapeHtml(entry.blurb)}</span></a></li>`)
406
+ const groups = nav_1.NAV.map((section) => {
407
+ const cards = section.entries
408
+ .map((entry) => `<a class="card" href="${entry.slug}.html">` +
409
+ `<strong class="card__title">${escapeHtml(entry.label)}</strong>` +
410
+ `<span class="card__body">${escapeHtml(entry.blurb)}</span></a>`)
352
411
  .join("");
353
412
  return (`<section class="home__group">` +
354
- `<h2>${escapeHtml(section.title)}</h2>` +
413
+ `<h2>${(0, icons_1.icon)(section.icon, "icon")}${escapeHtml(section.title)}</h2>` +
355
414
  `<p class="home__summary">${escapeHtml(section.summary)}</p>` +
356
- `<ul class="home__list">${items}</ul></section>`);
415
+ `<div class="cards" data-cols="2">${cards}</div></section>`);
357
416
  }).join("");
358
417
  const page = {
359
418
  slug: "docs",
360
419
  title: "Documentation",
361
- headings: [],
420
+ headings: nav_1.NAV.map((section) => ({
421
+ id: slugifyHeading(section.title, new Set()),
422
+ text: section.title,
423
+ level: 2,
424
+ })),
362
425
  text: "",
363
426
  html: `<h1>Documentation</h1>` +
364
427
  `<p class="home__lede">Specifications that are checked, not admired. Start with ` +
365
428
  `<a href="getting-started.html">Getting started</a> if the folder is empty, or ` +
366
429
  `<a href="quickstart.html">You cloned a repo</a> if somebody handed you one.</p>` +
367
430
  `<figure class="code" data-lang="bash">` +
431
+ `<figcaption class="code__head"><span class="code__lang">Install</span>` +
368
432
  `<button class="code__copy" type="button" aria-label="Copy to clipboard">Copy</button>` +
369
- `<pre><code class="language-bash">npx create-spec-driven-app@latest init</code></pre>` +
433
+ `</figcaption>` +
434
+ `<pre><code class="language-bash">npx @rsaglobaltech/specgate@latest init</code></pre>` +
370
435
  `</figure>` +
371
- `<div class="home">${cards}</div>`,
436
+ `<div class="home">${groups}</div>`,
372
437
  };
373
438
  return pageShell(page, version);
374
439
  }
440
+ /** Markdown reduced to prose: no fences, no marker punctuation. */
441
+ function plainText(markdown) {
442
+ return markdown
443
+ .replace(/```[\s\S]*?```/g, " ")
444
+ .replace(/<!--[\s\S]*?-->/g, " ")
445
+ .replace(/[#*`>|_-]/g, " ")
446
+ .replace(/\s+/g, " ")
447
+ .trim();
448
+ }
449
+ /**
450
+ * One search record per `##`/`###` section, carrying the anchor to jump to.
451
+ *
452
+ * Split on the heading text rather than re-parsing: `headings` already holds
453
+ * the ids `renderMarkdown` minted, so the two cannot drift apart.
454
+ */
455
+ function sectionChunks(markdown, headings) {
456
+ const out = [];
457
+ const lines = markdown.split("\n");
458
+ let current = null;
459
+ const flush = () => {
460
+ if (!current)
461
+ return;
462
+ const text = plainText(current.body.join("\n")).slice(0, 600);
463
+ if (text)
464
+ out.push({ section: current.section, hash: current.hash, text });
465
+ };
466
+ for (const line of lines) {
467
+ const m = /^(#{2,3})\s+(.+?)\s*$/.exec(line);
468
+ if (m) {
469
+ flush();
470
+ const plain = stripTags(m[2]).replace(/`/g, "");
471
+ const heading = headings.find((h) => h.text === plain);
472
+ current = heading ? { section: plain, hash: heading.id, body: [] } : null;
473
+ continue;
474
+ }
475
+ if (current)
476
+ current.body.push(line);
477
+ }
478
+ flush();
479
+ return out;
480
+ }
375
481
  function buildSite(outDir) {
376
482
  const version = JSON.parse(fs.readFileSync(path.join(ROOT, "package.json"), "utf8")).version;
377
483
  fs.rmSync(outDir, { recursive: true, force: true });
378
484
  fs.mkdirSync(outDir, { recursive: true });
379
485
  const slugs = markdownFiles(DOCS);
486
+ // One record per *section*, not per page. A search that can only answer
487
+ // "which page" is close to useless on `tutorial.md`, which is 1075 lines; a
488
+ // record per heading lands the reader on the paragraph they asked for.
380
489
  const index = [];
381
490
  const available = (0, blocks_1.diagrams)(DOCS);
382
491
  for (const slug of slugs) {
383
492
  const source = fs.readFileSync(path.join(DOCS, `${slug}.md`), "utf8");
384
493
  // The marker is ours and means nothing to a reader.
385
494
  const cleaned = (0, blocks_1.inlineDiagrams)(source.replace(/^<!--\s*csda:allow-placeholders[^>]*-->\s*\n?/gm, ""), available);
386
- const { html, headings, title } = renderMarkdown(cleaned, slug);
495
+ // Components expand before `marked` sees the source, and are handed the
496
+ // site's own renderer so a tab can hold a code block and a callout a list.
497
+ const expanded = (0, components_1.expandComponents)(cleaned, slug, (md) => renderMarkdown(md, slug).html, (href) => rewriteLink(href, slug));
498
+ const { html, headings, title } = renderMarkdown(expanded, slug);
387
499
  const page = {
388
500
  slug,
389
501
  title: title || (0, nav_1.navEntry)(slug)?.label || slug,
390
502
  html,
391
503
  headings,
392
- text: cleaned
393
- .replace(/```[\s\S]*?```/g, " ")
394
- .replace(/[#*`>|_-]/g, " ")
395
- .replace(/\s+/g, " ")
396
- .trim()
397
- .slice(0, 1500),
504
+ text: plainText(cleaned).slice(0, 2000),
398
505
  };
399
506
  const target = path.join(outDir, `${slug}.html`);
400
507
  fs.mkdirSync(path.dirname(target), { recursive: true });
401
508
  fs.writeFileSync(target, pageShell(page, version), "utf8");
402
509
  index.push({ slug, title: page.title, text: page.text });
510
+ for (const chunk of sectionChunks(cleaned, headings)) {
511
+ index.push({ slug, title: page.title, ...chunk });
512
+ }
403
513
  }
404
514
  fs.writeFileSync(path.join(outDir, "docs.html"), docsHome(version), "utf8");
405
515
  fs.mkdirSync(path.join(outDir, "assets"), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"build-site.js","sourceRoot":"","sources":["../../../scripts/docs/build-site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-site.js","sourceRoot":"","sources":["../../../scripts/docs/build-site.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * Content components, written as HTML comments inside markdown.
4
+ *
5
+ * ## Why comments
6
+ *
7
+ * Documentation here is read in two places: on the site, and on GitHub, where
8
+ * `docs/*.md` is what a contributor opens. MDX-style `<Card>` tags would render
9
+ * as literal angle brackets there. An HTML comment is invisible in both, so the
10
+ * markdown between the markers stays a plain list or plain prose — which is why
11
+ * the fallback for every component below is "the source, rendered normally".
12
+ *
13
+ * It is also the convention this repository already uses for generated regions
14
+ * and diagrams (`blocks.ts`), so there is one syntax to learn rather than two.
15
+ *
16
+ * ## Why it fails the build
17
+ *
18
+ * An unterminated block is silent breakage: the reader gets a page missing a
19
+ * section and nobody finds out until someone reads it. `inlineDiagrams` already
20
+ * throws on an unknown diagram for the same reason.
21
+ *
22
+ * ## The vocabulary
23
+ *
24
+ * ```markdown
25
+ * <!-- csda:cards cols=2 -->
26
+ * - [Getting started](./getting-started.md) — Install and run the gate.
27
+ * <!-- csda:endcards -->
28
+ *
29
+ * <!-- csda:tabs -->
30
+ * <!-- csda:tab npm --> …markdown…
31
+ * <!-- csda:tab Docker --> …markdown…
32
+ * <!-- csda:endtabs -->
33
+ *
34
+ * <!-- csda:steps -->
35
+ * ### Install ← each h3 becomes a numbered step
36
+ * <!-- csda:endsteps -->
37
+ *
38
+ * <!-- csda:note --> … <!-- csda:endnote --> also: warning, tip, danger
39
+ * ```
40
+ */
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.ComponentError = void 0;
43
+ exports.expandComponents = expandComponents;
44
+ const icons_1 = require("./icons");
45
+ /** Raised when a directive is malformed. Carries the page so the fix is obvious. */
46
+ class ComponentError extends Error {
47
+ }
48
+ exports.ComponentError = ComponentError;
49
+ const CALLOUTS = {
50
+ note: { label: "Note", icon: "book" },
51
+ tip: { label: "Tip", icon: "spark" },
52
+ warning: { label: "Warning", icon: "shield" },
53
+ danger: { label: "Careful", icon: "shield" },
54
+ };
55
+ function escapeAttr(value) {
56
+ return value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;");
57
+ }
58
+ function fail(slug, message) {
59
+ throw new ComponentError(`${slug}.md: ${message}`);
60
+ }
61
+ /** `<!-- csda:name arg=value -->` → the raw attribute string, or null. */
62
+ function openTag(name) {
63
+ return new RegExp(`<!--\\s*csda:${name}([^>]*?)-->`, "i");
64
+ }
65
+ function closeTag(name) {
66
+ return new RegExp(`<!--\\s*csda:end${name}\\s*-->`, "i");
67
+ }
68
+ function attr(raw, key) {
69
+ const m = new RegExp(`\\b${key}\\s*=\\s*"?([\\w-]+)"?`).exec(raw || "");
70
+ return m ? m[1] : undefined;
71
+ }
72
+ /**
73
+ * Replace every `csda:NAME … csda:endNAME` region, innermost content passed to
74
+ * `body`. Scans left to right so two blocks of the same kind on one page work.
75
+ */
76
+ function replaceRegions(source, name, slug, body) {
77
+ let out = "";
78
+ let rest = source;
79
+ for (;;) {
80
+ const open = openTag(name).exec(rest);
81
+ if (!open)
82
+ return out + rest;
83
+ const start = open.index;
84
+ const afterOpen = start + open[0].length;
85
+ const close = closeTag(name).exec(rest.slice(afterOpen));
86
+ if (!close) {
87
+ fail(slug, `<!-- csda:${name} --> is never closed with <!-- csda:end${name} -->`);
88
+ }
89
+ const inner = rest.slice(afterOpen, afterOpen + close.index);
90
+ out += rest.slice(0, start) + body(inner, open[1] || "");
91
+ rest = rest.slice(afterOpen + close.index + close[0].length);
92
+ }
93
+ }
94
+ // ── cards ────────────────────────────────────────────────────────────────────
95
+ /**
96
+ * A markdown list of links becomes a grid of cards.
97
+ *
98
+ * `- [Label](href) — description` is the shape, and it is deliberately the
99
+ * shape the list already had before anyone wrapped it: the markers can be
100
+ * deleted and the page still reads.
101
+ */
102
+ function cards(inner, args, slug, href) {
103
+ const cols = attr(args, "cols") || "2";
104
+ const items = [...inner.matchAll(/^\s*[-*]\s+\[([^\]]+)\]\(([^)]+)\)\s*(?:[—–-]\s*(.*))?$/gm)];
105
+ if (items.length === 0) {
106
+ fail(slug, "csda:cards contains no `- [Label](href) — description` items");
107
+ }
108
+ const cells = items
109
+ .map(([, label, target, blurb]) => {
110
+ const ic = attr(args, "icon");
111
+ return (
112
+ // Through the site's rewriter, or a card would link to raw markdown —
113
+ // the one thing every other link on the page is careful not to do.
114
+ `<a class="card" href="${escapeAttr(href(target.trim()))}">` +
115
+ (ic ? `<span class="card__icon">${(0, icons_1.icon)(ic)}</span>` : "") +
116
+ `<strong class="card__title">${label.trim()}</strong>` +
117
+ (blurb ? `<span class="card__body">${blurb.trim()}</span>` : "") +
118
+ `</a>`);
119
+ })
120
+ .join("");
121
+ return `\n<div class="cards" data-cols="${cols}">${cells}</div>\n`;
122
+ }
123
+ // ── tabs ─────────────────────────────────────────────────────────────────────
124
+ function tabs(inner, slug, renderInline) {
125
+ const parts = inner.split(/<!--\s*csda:tab\s+([^>]*?)-->/i);
126
+ // split() yields [before, title, body, title, body…]; `before` must be blank.
127
+ if (parts[0].trim() !== "") {
128
+ fail(slug, "content inside csda:tabs before the first <!-- csda:tab NAME -->");
129
+ }
130
+ if (parts.length < 3)
131
+ fail(slug, "csda:tabs needs at least one <!-- csda:tab NAME -->");
132
+ const id = `t${Math.abs(hash(inner)).toString(36)}`;
133
+ const heads = [];
134
+ const panels = [];
135
+ for (let i = 1; i < parts.length; i += 2) {
136
+ const title = parts[i].trim();
137
+ const selected = i === 1;
138
+ heads.push(`<button class="tabs__tab" type="button" role="tab" id="${id}-t${i}" ` +
139
+ `aria-controls="${id}-p${i}" aria-selected="${selected}" tabindex="${selected ? 0 : -1}">` +
140
+ `${title}</button>`);
141
+ panels.push(`<div class="tabs__panel" role="tabpanel" id="${id}-p${i}" aria-labelledby="${id}-t${i}"` +
142
+ `${selected ? "" : " hidden"}>${renderInline(parts[i + 1])}</div>`);
143
+ }
144
+ return (`\n<div class="tabs">` +
145
+ `<div class="tabs__list" role="tablist">${heads.join("")}</div>` +
146
+ panels.join("") +
147
+ `</div>\n`);
148
+ }
149
+ /** Stable id per block, so the markup does not churn between builds. */
150
+ function hash(s) {
151
+ let h = 0;
152
+ for (let i = 0; i < s.length; i++)
153
+ h = (h * 31 + s.charCodeAt(i)) | 0;
154
+ return h;
155
+ }
156
+ // ── steps ────────────────────────────────────────────────────────────────────
157
+ /** Each `### Heading` inside the block becomes a numbered step. */
158
+ function steps(inner, slug, renderInline) {
159
+ const chunks = inner.split(/^###\s+(.+)$/gm);
160
+ if (chunks[0].trim() !== "")
161
+ fail(slug, "content inside csda:steps before the first `### `");
162
+ if (chunks.length < 3)
163
+ fail(slug, "csda:steps needs at least one `### ` heading");
164
+ let n = 0;
165
+ const items = [];
166
+ for (let i = 1; i < chunks.length; i += 2) {
167
+ n += 1;
168
+ items.push(`<li class="steps__step">` +
169
+ `<span class="steps__n" aria-hidden="true">${n}</span>` +
170
+ `<div class="steps__body"><h3 class="steps__title">${chunks[i].trim()}</h3>` +
171
+ `${renderInline(chunks[i + 1])}</div></li>`);
172
+ }
173
+ return `\n<ol class="steps">${items.join("")}</ol>\n`;
174
+ }
175
+ // ── callouts ─────────────────────────────────────────────────────────────────
176
+ function callout(kind, inner, renderInline) {
177
+ const { label, icon: ic } = CALLOUTS[kind];
178
+ return (`\n<div class="callout callout--${kind}" role="note">` +
179
+ `<p class="callout__label">${(0, icons_1.icon)(ic, "icon callout__icon")}${label}</p>` +
180
+ `<div class="callout__body">${renderInline(inner)}</div></div>\n`);
181
+ }
182
+ // ── the pass ─────────────────────────────────────────────────────────────────
183
+ /**
184
+ * Expand every component in one markdown source.
185
+ *
186
+ * `renderInline` is the site's own markdown renderer, injected rather than
187
+ * imported so this module has no dependency on `marked` and stays testable on
188
+ * its own. It is called for component *bodies*, which is what lets a tab hold a
189
+ * code block and a callout hold a list.
190
+ */
191
+ function expandComponents(source, slug, renderInline, rewriteHref) {
192
+ let out = source;
193
+ out = replaceRegions(out, "cards", slug, (inner, args) => cards(inner, args, slug, rewriteHref));
194
+ out = replaceRegions(out, "tabs", slug, (inner) => tabs(inner, slug, renderInline));
195
+ out = replaceRegions(out, "steps", slug, (inner) => steps(inner, slug, renderInline));
196
+ for (const kind of Object.keys(CALLOUTS)) {
197
+ out = replaceRegions(out, kind, slug, (inner) => callout(kind, inner, renderInline));
198
+ }
199
+ // A stray closer means someone deleted the opener and left the pair broken.
200
+ const orphan = /<!--\s*csda:end(cards|tabs|steps|note|tip|warning|danger)\s*-->/i.exec(out);
201
+ if (orphan)
202
+ fail(slug, `<!-- csda:${orphan[1]} --> closer with no opener`);
203
+ const strayTab = /<!--\s*csda:tab\s/i.exec(out);
204
+ if (strayTab)
205
+ fail(slug, "<!-- csda:tab NAME --> outside a csda:tabs block");
206
+ return out;
207
+ }
208
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../scripts/docs/components.ts"],"names":[],"mappings":"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"}