@kernhq/module-quire 0.14.0 → 0.16.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 (74) hide show
  1. package/dist/contract/models.d.ts +209 -0
  2. package/dist/contract/models.d.ts.map +1 -1
  3. package/dist/contract/models.js +151 -0
  4. package/dist/contract/models.js.map +1 -1
  5. package/dist/contract/permissions.d.ts.map +1 -1
  6. package/dist/contract/permissions.js +32 -0
  7. package/dist/contract/permissions.js.map +1 -1
  8. package/dist/contract/properties.d.ts +3 -3
  9. package/dist/contract/router.d.ts +509 -8
  10. package/dist/contract/router.d.ts.map +1 -1
  11. package/dist/contract/router.js +211 -1
  12. package/dist/contract/router.js.map +1 -1
  13. package/dist/server/_impl.d.ts +573 -1269
  14. package/dist/server/_impl.d.ts.map +1 -1
  15. package/dist/server/_impl.js +180 -0
  16. package/dist/server/_impl.js.map +1 -1
  17. package/dist/server/export/markdown.d.ts.map +1 -1
  18. package/dist/server/export/markdown.js +84 -1
  19. package/dist/server/export/markdown.js.map +1 -1
  20. package/dist/server/render.d.ts +190 -1
  21. package/dist/server/render.d.ts.map +1 -1
  22. package/dist/server/render.js +413 -0
  23. package/dist/server/render.js.map +1 -1
  24. package/dist/server/schema.d.ts +260 -1
  25. package/dist/server/schema.d.ts.map +1 -1
  26. package/dist/server/schema.js +108 -1
  27. package/dist/server/schema.js.map +1 -1
  28. package/dist/server/services/databases.d.ts +5 -5
  29. package/dist/server/services/index.d.ts +6 -0
  30. package/dist/server/services/index.d.ts.map +1 -1
  31. package/dist/server/services/index.js +27 -3
  32. package/dist/server/services/index.js.map +1 -1
  33. package/dist/server/services/macros.d.ts +83 -0
  34. package/dist/server/services/macros.d.ts.map +1 -0
  35. package/dist/server/services/macros.js +488 -0
  36. package/dist/server/services/macros.js.map +1 -0
  37. package/dist/server/services/objects.d.ts +61 -0
  38. package/dist/server/services/objects.d.ts.map +1 -0
  39. package/dist/server/services/objects.js +110 -0
  40. package/dist/server/services/objects.js.map +1 -0
  41. package/dist/server/services/publications.d.ts +2 -1
  42. package/dist/server/services/publications.d.ts.map +1 -1
  43. package/dist/server/services/publications.js +43 -4
  44. package/dist/server/services/publications.js.map +1 -1
  45. package/dist/server/services/templates.d.ts +135 -0
  46. package/dist/server/services/templates.d.ts.map +1 -0
  47. package/dist/server/services/templates.js +897 -0
  48. package/dist/server/services/templates.js.map +1 -0
  49. package/dist/server/services/unfurl.d.ts +154 -0
  50. package/dist/server/services/unfurl.d.ts.map +1 -0
  51. package/dist/server/services/unfurl.js +593 -0
  52. package/dist/server/services/unfurl.js.map +1 -0
  53. package/dist/server/services/versions.d.ts +12 -0
  54. package/dist/server/services/versions.d.ts.map +1 -1
  55. package/dist/server/services/versions.js +3 -1
  56. package/dist/server/services/versions.js.map +1 -1
  57. package/migrations/0011_templates.sql +157 -0
  58. package/migrations/meta/_journal.json +7 -0
  59. package/package.json +5 -5
  60. package/src/client/components/NewSpaceDialog.svelte +77 -8
  61. package/src/client/components/PageEditor.svelte +80 -0
  62. package/src/client/components/PagePicker.svelte +264 -0
  63. package/src/client/components/SaveAsTemplateDialog.svelte +502 -0
  64. package/src/client/components/SidebarSpaces.svelte +33 -1
  65. package/src/client/components/TemplatePicker.svelte +437 -0
  66. package/src/client/i18n.ts +327 -0
  67. package/src/client/index.ts +19 -0
  68. package/src/client/mock.ts +274 -0
  69. package/src/client/pages/PageView.svelte +50 -0
  70. package/src/client/pages/SpacePage.svelte +20 -4
  71. package/src/client/query.ts +17 -0
  72. package/src/contract/models.ts +191 -0
  73. package/src/contract/permissions.ts +33 -0
  74. package/src/contract/router.ts +228 -0
@@ -1,3 +1,5 @@
1
+ import { renderMermaid } from '@kernhq/ui/editor/mermaid';
2
+ import { DEFAULT_PAGE_DIAGRAM_KIND, PAGE_DIAGRAM_KINDS, PAGE_DIAGRAM_MAX_SOURCE, PAGE_DIAGRAM_MAX_TITLE, PAGE_EMBED_MAX_DESCRIPTION, PAGE_EMBED_MAX_SITE, PAGE_EMBED_MAX_TITLE, PAGE_EMBED_MAX_URL, } from '@kernhq/ui/editor/page-doc';
1
3
  /**
2
4
  * A page, drawn outside the browser.
3
5
  *
@@ -115,6 +117,15 @@ function safeInt(value, min, max) {
115
117
  const attr = (name, value) => value === null || value === undefined || value === '' ? '' : ` ${name}="${escapeHtml(String(value))}"`;
116
118
  /** `id` when the writer's editor stamped one, so a heading can be linked to. */
117
119
  const idAttr = (node) => attr('id', safeId(node.attrs?.id));
120
+ export const DEFAULT_MACRO_STRINGS = {
121
+ empty: 'Nothing to show',
122
+ untitled: 'Untitled',
123
+ diagramEmpty: 'This diagram has no source yet',
124
+ diagramUnsupported: 'This diagram uses something that cannot be drawn here',
125
+ diagramBroken: 'This diagram could not be drawn',
126
+ diagramNoPicture: 'No picture has been saved for this diagram',
127
+ diagramOpen: 'Open the diagram',
128
+ };
118
129
  /** Every character in the node, ignoring marks. What a `<pre>` wants. */
119
130
  function textOf(node) {
120
131
  if (typeof node.text === 'string')
@@ -163,6 +174,162 @@ function renderMarks(html, marks) {
163
174
  }
164
175
  return out;
165
176
  }
177
+ /* ---------------------------------------------------------------------------------------------- */
178
+ /* Macros */
179
+ /* ---------------------------------------------------------------------------------------------- */
180
+ /**
181
+ * The lozenge colours, restated rather than imported.
182
+ *
183
+ * `@kernhq/ui` is a peer dependency and its editor half loads Tiptap and Svelte, neither of which
184
+ * belongs in a backend process — so this file imports **types** from it and nothing else, exactly as
185
+ * it already restates the callout tones and the table alignments. What keeps the two honest is
186
+ * `render.test.ts`, which is a test and may import at runtime: it compares this list against
187
+ * `STATUS_TONES` in the package, in both directions.
188
+ */
189
+ export const STATUS_TONES = ['neutral', 'info', 'success', 'warning', 'danger'];
190
+ const DEFAULT_STATUS_TONE = 'neutral';
191
+ const statusTone = (value) => STATUS_TONES.includes(String(value)) ? String(value) : DEFAULT_STATUS_TONE;
192
+ /**
193
+ * The macro nodes that need an audience before they can draw anything.
194
+ *
195
+ * Exported for the same parity test: `PAGE_DOC_READING_MACROS` in `@kernhq/ui` is the writer's half
196
+ * of this list, and a sixth reading macro added there without a fail-closed case here is exactly the
197
+ * defect the whole arrangement exists to prevent.
198
+ */
199
+ export const READING_MACROS = [
200
+ 'contributors',
201
+ 'excerptInclude',
202
+ 'includePage',
203
+ /*
204
+ * The sixth. An object embed names an issue, a page or a channel by reference and holds no title,
205
+ * so what a reader may be told about it is a question rather than a stored answer — which is the
206
+ * definition of a reading macro and the reason it is drawn through `macroFrame` like the rest.
207
+ * `embed`, next door, is deliberately *not* one: it holds the unfurl of a public URL.
208
+ */
209
+ 'objectEmbed',
210
+ 'pageChildren',
211
+ 'recentlyUpdated',
212
+ ];
213
+ /**
214
+ * The `data-macro` value each reading macro draws with, in one place.
215
+ *
216
+ * The node is named in the document's own vocabulary (`pageChildren`) and in the markup contract's
217
+ * (`children`), and both halves have to agree with `nodes/macros.ts` in `@kernhq/ui`. Written as a
218
+ * map the renderers read rather than as a literal in each case, because the second consumer of it
219
+ * is `hasReadingMacro` — and a marker list that had drifted from the renderers would make that
220
+ * function answer "no macros here" about a page that has one, which is a stored public render
221
+ * nobody re-resolves. `render.test.ts` holds the keys to `READING_MACROS`.
222
+ */
223
+ export const READING_MACRO_KINDS = {
224
+ contributors: 'contributors',
225
+ excerptInclude: 'excerpt-include',
226
+ includePage: 'include-page',
227
+ objectEmbed: 'object',
228
+ pageChildren: 'children',
229
+ recentlyUpdated: 'recently-updated',
230
+ };
231
+ /**
232
+ * Does this rendered HTML contain a macro that had to be resolved against a reader?
233
+ *
234
+ * The cheap question the public read path asks before deciding whether to re-render a page. Stored
235
+ * publish-time HTML has reading macros as **empty frames** — resolving them at publish time would
236
+ * freeze a set of titles into a row and keep serving them after the pages were unpublished, which
237
+ * is precisely the leak this feature's rule exists to prevent. So the frames are drawn empty and
238
+ * filled per read, and this is how a read finds out whether it has to do that work at all.
239
+ *
240
+ * A string search rather than a parse: the alternative is decoding a Y.Doc on every public page
241
+ * view to discover that almost none of them have a macro.
242
+ */
243
+ export const hasReadingMacro = (html) => Object.values(READING_MACRO_KINDS).some((kind) => html.includes(`data-macro="${kind}"`));
244
+ /** A boolean attribute out of a document, where `"true"` is what an HTML attribute carries. */
245
+ const macroFlag = (value) => value === true || value === 'true';
246
+ /**
247
+ * A page's icon, but only when the icon *is* the character.
248
+ *
249
+ * A page stores either an emoji or a Lucide icon name, and this renderer has no icon set — printing
250
+ * `book` in front of a title because somebody chose the book icon is worse than printing nothing.
251
+ * An emoji is outside ASCII, which is the whole test: the character carries itself. Counted by code
252
+ * rather than matched by a regex, for the reason `stripUrlNoise` above gives.
253
+ */
254
+ function emojiIcon(icon) {
255
+ if (!icon)
256
+ return '';
257
+ let outsideAscii = false;
258
+ for (let i = 0; i < icon.length; i++)
259
+ if (icon.charCodeAt(i) > 127)
260
+ outsideAscii = true;
261
+ return outsideAscii ? `<span class="kern-macro-icon">${escapeHtml(icon)}</span>` : '';
262
+ }
263
+ /** One page in a macro's answer: a link where there is an address, plain text where there is not. */
264
+ function pageLink(page, strings) {
265
+ const body = `${emojiIcon(page.icon)}${escapeHtml(page.title || strings.untitled)}`;
266
+ const href = safeHref(page.href);
267
+ return href ? `<a href="${escapeHtml(href)}">${body}</a>` : `<span>${body}</span>`;
268
+ }
269
+ /** The same, introducing prose lifted from that page, so a reader can see where it came from. */
270
+ const pageSource = (page, strings) => `<span class="kern-macro-source">${pageLink(page, strings)}</span>`;
271
+ /**
272
+ * A tree of pages, as nested lists.
273
+ *
274
+ * Recursive because a children macro may go several levels down, and depth is meaningful — a flat
275
+ * list of everything under a page says nothing about which section a page is in. The recursion is
276
+ * bounded by the resolver, which builds the tree; this function walks whatever it was handed.
277
+ */
278
+ function pageList(pages, strings) {
279
+ if (pages.length === 0)
280
+ return '';
281
+ const rows = pages
282
+ .map((page) => {
283
+ const excerpt = page.excerpt ? `<p class="kern-macro-excerpt">${escapeHtml(page.excerpt)}</p>` : '';
284
+ const updated = page.updated ? `<p class="kern-macro-meta">${escapeHtml(page.updated)}</p>` : '';
285
+ const nested = page.children?.length ? pageList(page.children, strings) : '';
286
+ return `<li>${pageLink(page, strings)}${excerpt}${updated}${nested}</li>`;
287
+ })
288
+ .join('');
289
+ return `<ul class="kern-macro-pages">${rows}</ul>`;
290
+ }
291
+ /**
292
+ * The frame every reading macro draws, and the one place the fail-closed rule is implemented.
293
+ *
294
+ * `options.macros` is consulted once; a null answer, a wrong-shaped answer and an empty answer are
295
+ * all the same thing to a reader and all draw the "nothing to show" line. That is what makes the
296
+ * absence of a resolver the *safe* state rather than a case somebody has to remember: there is no
297
+ * branch here that reads a database, so no caller can accidentally get one.
298
+ */
299
+ function macroFrame(kind, node, options, draw) {
300
+ const strings = options.macroStrings ?? DEFAULT_MACRO_STRINGS;
301
+ const body = draw(options.macros?.(node) ?? null, strings);
302
+ const inner = body || `<p class="kern-macro-empty">${escapeHtml(strings.empty)}</p>`;
303
+ return `<div${idAttr(node)} class="kern-macro" data-macro="${escapeHtml(kind)}">${inner}</div>`;
304
+ }
305
+ /* ---------------------------------------------------------------------------------------------- */
306
+ /* Diagrams and embeds */
307
+ /* ---------------------------------------------------------------------------------------------- */
308
+ /**
309
+ * The narrowing the diagram and embed nodes apply, restated.
310
+ *
311
+ * Restated rather than imported for the reason the lozenge tones are: those functions live beside
312
+ * the Tiptap nodes, and this file must not load Tiptap. What keeps the two honest is the *ceilings*,
313
+ * which come out of `page-doc.ts` — the one file in `@kernhq/ui` that imports nothing — plus
314
+ * `render.test.ts`, which is a test and may import the extension at runtime to compare them.
315
+ */
316
+ const diagramKind = (value) => PAGE_DIAGRAM_KINDS.includes(String(value))
317
+ ? String(value)
318
+ : DEFAULT_PAGE_DIAGRAM_KIND;
319
+ const capped = (value, max) => (typeof value === 'string' ? value.slice(0, max) : '');
320
+ const trimmedTo = (value, max) => {
321
+ const text = typeof value === 'string' ? value.replace(/\s+/g, ' ').trim().slice(0, max) : '';
322
+ return text || null;
323
+ };
324
+ /**
325
+ * A source nobody could draw, shown rather than hidden.
326
+ *
327
+ * This is the rule the whole diagram feature turns on: **a diagram never renders as a blank block.**
328
+ * A writer whose Mermaid has a typo in it sees their own text and a sentence saying what went
329
+ * wrong; a reader sees the same, which is what makes the writer find out. The alternative — an empty
330
+ * figure — is a page that looks finished and is not, on a published site nobody re-reads.
331
+ */
332
+ const diagramFallback = (message, source) => `<p class="kern-diagram-message">${escapeHtml(message)}</p>${source ? `<pre><code>${escapeHtml(source)}</code></pre>` : ''}`;
166
333
  /** `<td>` and `<th>` differ only in the tag, so the attributes are written once. */
167
334
  function cell(tag, node, children) {
168
335
  const colspan = safeInt(node.attrs?.colspan, 1, 1000);
@@ -300,6 +467,171 @@ export const NODE_RENDERERS = {
300
467
  return `<span class="kern-page-mention"${data}>${body}</span>`;
301
468
  return `<a class="kern-page-mention" href="${escapeHtml(href)}"${data}>${body}</a>`;
302
469
  },
470
+ /* -------------------------------------------------------------------------------------------- */
471
+ /* Diagrams */
472
+ /* -------------------------------------------------------------------------------------------- */
473
+ /**
474
+ * A diagram, drawn as far as this process honestly can — and never as nothing.
475
+ *
476
+ * Three kinds, three different answers, and the difference is not arbitrary:
477
+ *
478
+ * - **Mermaid is drawn.** `renderMermaid` is a real server-side render: it parses the source and
479
+ * emits an SVG, with no browser and no network, and it is the same function the editor's node
480
+ * view calls, so a writer sees what a reader will. A source it refuses shows the source and
481
+ * the reason.
482
+ * - **Excalidraw and Draw.io are shown, not drawn.** They are editors rather than notations, so
483
+ * the only faithful picture is the SVG their own editor exported — `svgFileId`, resolved
484
+ * through the same `fileSrc` a picture uses. With no saved picture the block falls back to the
485
+ * link the writer stored, and with neither it shows its source. It never renders empty.
486
+ *
487
+ * The SVG goes through unescaped, and it is the second string in this file that does. It is safe
488
+ * for the same kind of reason `includePage`'s HTML is: the only producer of it is `renderMermaid`,
489
+ * which escapes every character it takes from the source — asserted in its own tests, and asserted
490
+ * again here.
491
+ */
492
+ diagram: (node, _children, options) => {
493
+ const strings = options.macroStrings ?? DEFAULT_MACRO_STRINGS;
494
+ const kind = diagramKind(node.attrs?.kind);
495
+ const source = capped(node.attrs?.source, PAGE_DIAGRAM_MAX_SOURCE);
496
+ const title = trimmedTo(node.attrs?.title, PAGE_DIAGRAM_MAX_TITLE);
497
+ const caption = title ? `<figcaption>${escapeHtml(title)}</figcaption>` : '';
498
+ const frame = (inner) => `<figure${idAttr(node)} class="kern-diagram" data-diagram="${escapeHtml(kind)}">${inner}${caption}</figure>`;
499
+ if (kind === 'mermaid') {
500
+ const drawn = renderMermaid(source);
501
+ if (drawn.ok)
502
+ return frame(drawn.svg);
503
+ const why = drawn.reason === 'empty'
504
+ ? strings.diagramEmpty
505
+ : drawn.reason === 'unsupported'
506
+ ? strings.diagramUnsupported
507
+ : strings.diagramBroken;
508
+ return frame(diagramFallback(why, source));
509
+ }
510
+ const fileId = typeof node.attrs?.svgFileId === 'string' ? node.attrs.svgFileId : null;
511
+ const picture = fileId ? safeHref(options.fileSrc?.(fileId) ?? null) : null;
512
+ if (picture)
513
+ return frame(`<img src="${escapeHtml(picture)}" alt="${escapeHtml(title ?? '')}" loading="lazy">`);
514
+ const href = safeHref(node.attrs?.href);
515
+ if (href)
516
+ return frame(`<p class="kern-diagram-message">${escapeHtml(strings.diagramNoPicture)}</p>` +
517
+ `<a class="kern-diagram-link" href="${escapeHtml(href)}" rel="noreferrer noopener" target="_blank">${escapeHtml(title ?? strings.diagramOpen)}</a>`);
518
+ return frame(diagramFallback(strings.diagramNoPicture, source));
519
+ },
520
+ /* -------------------------------------------------------------------------------------------- */
521
+ /* Embeds */
522
+ /* -------------------------------------------------------------------------------------------- */
523
+ /**
524
+ * A public URL and what it said about itself, drawn from the document alone.
525
+ *
526
+ * **Nothing here makes a request.** The unfurl happened once, in `services/unfurl.ts`, when a
527
+ * member inserted the block — so a page render, which happens on every read of every published
528
+ * page, is a pure function of what is stored. That is not only a performance argument: a renderer
529
+ * that fetched would be an SSRF reachable by anyone who can read a page, rather than by a member
530
+ * who can write one.
531
+ *
532
+ * There is no remote picture in the card on purpose. An `<img>` pointing at a third party tells
533
+ * that third party the address of everyone who reads the page, which is not a thing a wiki should
534
+ * arrange on its writers' behalf.
535
+ */
536
+ embed: (node) => {
537
+ const strings = DEFAULT_MACRO_STRINGS;
538
+ const url = capped(node.attrs?.url, PAGE_EMBED_MAX_URL).trim();
539
+ const href = safeHref(url);
540
+ const title = trimmedTo(node.attrs?.title, PAGE_EMBED_MAX_TITLE) ?? (url || null);
541
+ const site = trimmedTo(node.attrs?.siteName, PAGE_EMBED_MAX_SITE);
542
+ const description = trimmedTo(node.attrs?.description, PAGE_EMBED_MAX_DESCRIPTION);
543
+ const label = `<span class="kern-embed-title">${escapeHtml(title ?? strings.untitled)}</span>`;
544
+ const where = site ? `<span class="kern-embed-site">${escapeHtml(site)}</span>` : '';
545
+ // No `<a>` at all rather than a dead one, exactly as a rejected link mark degrades.
546
+ const head = href
547
+ ? `<a class="kern-embed-link" href="${escapeHtml(href)}" rel="noreferrer noopener" target="_blank">${label}${where}</a>`
548
+ : `${label}${where}`;
549
+ const body = description ? `<p class="kern-embed-description">${escapeHtml(description)}</p>` : '';
550
+ return `<div${idAttr(node)} class="kern-embed" data-embed="">${head}${body}</div>`;
551
+ },
552
+ /* -------------------------------------------------------------------------------------------- */
553
+ /* The eight macros */
554
+ /* -------------------------------------------------------------------------------------------- */
555
+ /*
556
+ * The three that resolve from the document, and are therefore safe on a page with no reader.
557
+ *
558
+ * An excerpt is a region of *this* page marked as quotable, so it draws its own prose — unless the
559
+ * writer hid it, which is the case for a page whose only job is to be quoted somewhere else.
560
+ * `data-hidden` rather than dropping the children here: the CSS hides it, so the same HTML serves
561
+ * a print stylesheet that may reasonably decide to show it.
562
+ */
563
+ excerpt: (node, children) => `<div${idAttr(node)} class="kern-excerpt" data-macro="excerpt"${macroFlag(node.attrs?.hidden) ? ' data-hidden="true"' : ''}>${children}</div>`,
564
+ /*
565
+ * The expand, byte-for-byte the arrangement `nodes/macros.ts` renders — see the note there for why
566
+ * it and the toggle both exist. `open` is the writer's stored decision, which is the whole
567
+ * difference: a toggle's open state belongs to the reader and is not in the document.
568
+ */
569
+ expand: (node, children) => `<details${idAttr(node)} class="kern-expand" data-macro="expand"${macroFlag(node.attrs?.open) ? ' open' : ''}>${children}</details>`,
570
+ /*
571
+ * The lozenge. Inline, and the only macro with nothing to resolve at all: the word and the colour
572
+ * are both in the document, which is why it is the one that works identically for a signed-in
573
+ * reader, a published site, a PDF and a Markdown file.
574
+ */
575
+ statusLozenge: (node, children) => `<span class="kern-status" data-status="${statusTone(node.attrs?.tone)}">${children}</span>`,
576
+ /*
577
+ * The five that read other pages. Each draws `options.macros`' answer or an empty frame, and the
578
+ * empty frame is what a caller with no resolver gets — see `MacroResolver`.
579
+ */
580
+ pageChildren: (node, _children, options) => macroFrame(READING_MACRO_KINDS.pageChildren, node, options, (content, strings) => content?.kind === 'pages' ? pageList(content.pages, strings) : ''),
581
+ recentlyUpdated: (node, _children, options) => macroFrame(READING_MACRO_KINDS.recentlyUpdated, node, options, (content, strings) => content?.kind === 'pages' ? pageList(content.pages, strings) : ''),
582
+ /*
583
+ * Another page's excerpt. The extract is plain text — `macros.ts` flattens it rather than lifting
584
+ * markup out of one document into another, where a half-open tag would be the reader's problem.
585
+ */
586
+ excerptInclude: (node, _children, options) => macroFrame(READING_MACRO_KINDS.excerptInclude, node, options, (content, strings) => {
587
+ if (content?.kind !== 'page' || !content.page)
588
+ return '';
589
+ const text = content.page.excerpt ?? '';
590
+ if (!text)
591
+ return '';
592
+ const source = node.attrs?.showTitle === false ? '' : pageSource(content.page, strings);
593
+ return `${source}<p>${escapeHtml(text)}</p>`;
594
+ }),
595
+ /*
596
+ * Another page's whole body.
597
+ *
598
+ * `content.html` goes through unescaped and is the only string in this file that does. It is safe
599
+ * because `macros.ts` is the only thing that can produce it, and it produces it by calling this
600
+ * very function on the included page's stored document — so every character in it has already been
601
+ * escaped here. See the note on `MacroContent`.
602
+ */
603
+ includePage: (node, _children, options) => macroFrame(READING_MACRO_KINDS.includePage, node, options, (content, strings) => {
604
+ if (content?.kind !== 'page' || !content.page || !content.html)
605
+ return '';
606
+ const source = node.attrs?.showTitle === false ? '' : pageSource(content.page, strings);
607
+ return `${source}${content.html}`;
608
+ }),
609
+ /**
610
+ * One of Kern's own objects, resolved against this reader or not drawn at all.
611
+ *
612
+ * The fail-closed frame is the whole reason this is a reading macro rather than an embed: the
613
+ * document holds `tracker:issue:<id>` and nothing else, so a renderer with no resolver has no
614
+ * title to leak and no way to get one. `services/objects.ts` is the only thing that answers it,
615
+ * through the module's own `resolvers`, and it answers nothing at all for a published site.
616
+ */
617
+ objectEmbed: (node, _children, options) => macroFrame(READING_MACRO_KINDS.objectEmbed, node, options, (content, strings) => {
618
+ if (content?.kind !== 'object' || !content.object)
619
+ return '';
620
+ const object = content.object;
621
+ const body = `${emojiIcon(object.icon)}${escapeHtml(object.title || strings.untitled)}`;
622
+ const href = safeHref(object.href);
623
+ const named = href ? `<a href="${escapeHtml(href)}">${body}</a>` : `<span>${body}</span>`;
624
+ const subtitle = object.subtitle
625
+ ? `<span class="kern-object-subtitle">${escapeHtml(object.subtitle)}</span>`
626
+ : '';
627
+ return `<span class="kern-object"><span class="kern-object-kind">${escapeHtml(object.label)}</span>${named}${subtitle}</span>`;
628
+ }),
629
+ contributors: (node, _children, options) => macroFrame(READING_MACRO_KINDS.contributors, node, options, (content) => {
630
+ if (content?.kind !== 'people' || content.people.length === 0)
631
+ return '';
632
+ const names = content.people.map((p) => `<li>${escapeHtml(p.name)}</li>`).join('');
633
+ return `<ul class="kern-macro-pages">${names}</ul>`;
634
+ }),
303
635
  };
304
636
  function renderNode(node, options) {
305
637
  if (node.type === 'text')
@@ -336,6 +668,14 @@ export function referencesIn(doc) {
336
668
  const walk = (node) => {
337
669
  if (node.type === 'image' && typeof node.attrs?.fileId === 'string')
338
670
  fileIds.add(node.attrs.fileId);
671
+ /*
672
+ * A diagram this process cannot draw is shown as the SVG its own editor exported, which is an
673
+ * ordinary stored file — so it is collected here beside the pictures. Missing it would not have
674
+ * failed anything: the render would simply have fallen through to the link, on every Excalidraw
675
+ * drawing in the workspace, silently.
676
+ */
677
+ if (node.type === 'diagram' && typeof node.attrs?.svgFileId === 'string')
678
+ fileIds.add(node.attrs.svgFileId);
339
679
  if (node.type === 'pageMention' && typeof node.attrs?.id === 'string')
340
680
  pageIds.add(node.attrs.id);
341
681
  for (const child of node.content ?? [])
@@ -345,6 +685,51 @@ export function referencesIn(doc) {
345
685
  walk(node);
346
686
  return { fileIds: [...fileIds], pageIds: [...pageIds] };
347
687
  }
688
+ /**
689
+ * A macro instance, named by what it asks for rather than by where it sits.
690
+ *
691
+ * Two identical macros on one page are one question and get one answer, which is what makes the key
692
+ * the *attributes* rather than the node's `id` — and means the resolver works on a document written
693
+ * by an importer that never stamped ids. `id` is excluded deliberately: including it would ask the
694
+ * database the same question twice for two blocks that must draw the same thing.
695
+ *
696
+ * The keys are sorted, because `JSON.stringify` preserves insertion order and two clients writing
697
+ * the same attributes in a different order would otherwise be two questions.
698
+ */
699
+ export function macroKey(node) {
700
+ const attrs = node.attrs ?? {};
701
+ const parts = Object.keys(attrs)
702
+ .filter((name) => name !== 'id')
703
+ .sort()
704
+ .map((name) => `${name}=${JSON.stringify(attrs[name] ?? null)}`);
705
+ return `${node.type ?? ''}(${parts.join(',')})`;
706
+ }
707
+ /**
708
+ * Every reading macro in a document, de-duplicated — the `referencesIn` of the macro half.
709
+ *
710
+ * A caller resolves these against one audience in one pass and hands back a `MacroResolver`. The
711
+ * three macros that resolve from the document itself are not here: they need nothing looked up, so
712
+ * collecting them would only invite a caller to ask a database about a status lozenge.
713
+ */
714
+ export function macrosIn(doc) {
715
+ const reading = new Set(READING_MACROS);
716
+ const seen = new Set();
717
+ const found = [];
718
+ const walk = (node) => {
719
+ if (typeof node.type === 'string' && reading.has(node.type)) {
720
+ const key = macroKey(node);
721
+ if (!seen.has(key)) {
722
+ seen.add(key);
723
+ found.push(node);
724
+ }
725
+ }
726
+ for (const child of node.content ?? [])
727
+ walk(child);
728
+ };
729
+ for (const node of doc?.content ?? [])
730
+ walk(node);
731
+ return found;
732
+ }
348
733
  /** Nodes whose children are separate blocks, so their text needs a line between each. */
349
734
  const BLOCK_PARENTS = new Set([
350
735
  'blockquote',
@@ -353,6 +738,8 @@ const BLOCK_PARENTS = new Set([
353
738
  'details',
354
739
  'detailsContent',
355
740
  'doc',
741
+ 'excerpt',
742
+ 'expand',
356
743
  'listItem',
357
744
  'orderedList',
358
745
  'table',
@@ -369,6 +756,12 @@ const TEXT_LIMIT = 100_000;
369
756
  * *as markup* — so a page containing one link put
370
757
  * `<link class="null" href="…" rel="noreferrer noopener" target="_blank">` into the search body,
371
758
  * and every page in the workspace matched a search for "noopener".
759
+ *
760
+ * **A macro contributes nothing.** The five that read other pages are atoms with no content, so they
761
+ * fall out of this walk on their own — and that is the behaviour to keep rather than an omission to
762
+ * fix. What a children macro would contribute is other pages' titles, resolved against nobody, into
763
+ * a search index that is read by everybody: the same leak the render rule exists to prevent, one
764
+ * layer further from where anybody would look for it.
372
765
  */
373
766
  export function textFromPageDoc(doc) {
374
767
  if (!doc || !Array.isArray(doc.content))
@@ -387,6 +780,26 @@ export function textFromPageDoc(doc) {
387
780
  // A picture contributes its alt text, the only part of it anybody can search for.
388
781
  case 'image':
389
782
  return typeof node.attrs?.alt === 'string' ? node.attrs.alt : '';
783
+ /*
784
+ * A diagram contributes its **name and not its source**. A Mermaid source is `A-->B` and an
785
+ * Excalidraw scene is a megabyte of JSON with a font name in it — putting either in the search
786
+ * body would make every diagram in the workspace match a search for `flowchart`, which is the
787
+ * same defect as the `noopener` one this function was written to fix.
788
+ */
789
+ case 'diagram':
790
+ return trimmedTo(node.attrs?.title, PAGE_DIAGRAM_MAX_TITLE) ?? '';
791
+ /*
792
+ * An embed contributes what a person reads on the card: the headline and the sentence under
793
+ * it. Not the URL — a search body full of addresses matches on `https` and on every hostname
794
+ * anybody has ever linked to.
795
+ */
796
+ case 'embed':
797
+ return [
798
+ trimmedTo(node.attrs?.title, PAGE_EMBED_MAX_TITLE),
799
+ trimmedTo(node.attrs?.description, PAGE_EMBED_MAX_DESCRIPTION),
800
+ ]
801
+ .filter(Boolean)
802
+ .join('\n');
390
803
  // Cells are joined with a tab, or two columns run together into one nonsense word.
391
804
  case 'tableRow':
392
805
  return (node.content ?? []).map(walk).join('\t');
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/server/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/server/render.ts"],"names":[],"mappings":"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"}