@refrakt-md/runes 0.15.0 → 0.16.1

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 (108) hide show
  1. package/dist/aggregate-resolve.d.ts +4 -0
  2. package/dist/aggregate-resolve.d.ts.map +1 -0
  3. package/dist/aggregate-resolve.js +209 -0
  4. package/dist/aggregate-resolve.js.map +1 -0
  5. package/dist/collection-helpers.d.ts +101 -0
  6. package/dist/collection-helpers.d.ts.map +1 -0
  7. package/dist/collection-helpers.js +206 -0
  8. package/dist/collection-helpers.js.map +1 -0
  9. package/dist/collection-resolve.d.ts +5 -0
  10. package/dist/collection-resolve.d.ts.map +1 -0
  11. package/dist/collection-resolve.js +209 -0
  12. package/dist/collection-resolve.js.map +1 -0
  13. package/dist/config.d.ts +13 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +87 -5
  16. package/dist/config.js.map +1 -1
  17. package/dist/deferred-body.d.ts +19 -0
  18. package/dist/deferred-body.d.ts.map +1 -0
  19. package/dist/deferred-body.js +70 -0
  20. package/dist/deferred-body.js.map +1 -0
  21. package/dist/drawer-pipeline.d.ts +72 -1
  22. package/dist/drawer-pipeline.d.ts.map +1 -1
  23. package/dist/drawer-pipeline.js +242 -1
  24. package/dist/drawer-pipeline.js.map +1 -1
  25. package/dist/expand-pipeline.js +25 -16
  26. package/dist/expand-pipeline.js.map +1 -1
  27. package/dist/field-match.d.ts +43 -0
  28. package/dist/field-match.d.ts.map +1 -0
  29. package/dist/field-match.js +121 -0
  30. package/dist/field-match.js.map +1 -0
  31. package/dist/file-ref-resolve.d.ts +22 -0
  32. package/dist/file-ref-resolve.d.ts.map +1 -0
  33. package/dist/file-ref-resolve.js +233 -0
  34. package/dist/file-ref-resolve.js.map +1 -0
  35. package/dist/functions.d.ts +36 -0
  36. package/dist/functions.d.ts.map +1 -0
  37. package/dist/functions.js +74 -0
  38. package/dist/functions.js.map +1 -0
  39. package/dist/index.d.ts +33 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +80 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/lib/index.d.ts +6 -0
  44. package/dist/lib/index.d.ts.map +1 -1
  45. package/dist/lib/index.js +9 -0
  46. package/dist/lib/index.js.map +1 -1
  47. package/dist/nodes.d.ts.map +1 -1
  48. package/dist/nodes.js +68 -9
  49. package/dist/nodes.js.map +1 -1
  50. package/dist/outline-scope.d.ts +17 -0
  51. package/dist/outline-scope.d.ts.map +1 -1
  52. package/dist/outline-scope.js +59 -0
  53. package/dist/outline-scope.js.map +1 -1
  54. package/dist/relationships-resolve.d.ts +4 -0
  55. package/dist/relationships-resolve.d.ts.map +1 -0
  56. package/dist/relationships-resolve.js +180 -0
  57. package/dist/relationships-resolve.js.map +1 -0
  58. package/dist/snippet-pipeline.d.ts +7 -5
  59. package/dist/snippet-pipeline.d.ts.map +1 -1
  60. package/dist/snippet-pipeline.js +32 -13
  61. package/dist/snippet-pipeline.js.map +1 -1
  62. package/dist/tags/aggregate.d.ts +19 -0
  63. package/dist/tags/aggregate.d.ts.map +1 -0
  64. package/dist/tags/aggregate.js +59 -0
  65. package/dist/tags/aggregate.js.map +1 -0
  66. package/dist/tags/card.d.ts +25 -0
  67. package/dist/tags/card.d.ts.map +1 -0
  68. package/dist/tags/card.js +138 -0
  69. package/dist/tags/card.js.map +1 -0
  70. package/dist/tags/codegroup.d.ts.map +1 -1
  71. package/dist/tags/codegroup.js +37 -1
  72. package/dist/tags/codegroup.js.map +1 -1
  73. package/dist/tags/collection.d.ts +10 -0
  74. package/dist/tags/collection.d.ts.map +1 -0
  75. package/dist/tags/collection.js +54 -0
  76. package/dist/tags/collection.js.map +1 -0
  77. package/dist/tags/conversation.d.ts.map +1 -1
  78. package/dist/tags/conversation.js +26 -6
  79. package/dist/tags/conversation.js.map +1 -1
  80. package/dist/tags/diff.d.ts.map +1 -1
  81. package/dist/tags/diff.js +85 -18
  82. package/dist/tags/diff.js.map +1 -1
  83. package/dist/tags/drawer.d.ts.map +1 -1
  84. package/dist/tags/drawer.js +32 -2
  85. package/dist/tags/drawer.js.map +1 -1
  86. package/dist/tags/file-ref.d.ts +21 -0
  87. package/dist/tags/file-ref.d.ts.map +1 -0
  88. package/dist/tags/file-ref.js +88 -0
  89. package/dist/tags/file-ref.js.map +1 -0
  90. package/dist/tags/progress.d.ts +9 -0
  91. package/dist/tags/progress.d.ts.map +1 -0
  92. package/dist/tags/progress.js +96 -0
  93. package/dist/tags/progress.js.map +1 -0
  94. package/dist/tags/relationships.d.ts +12 -0
  95. package/dist/tags/relationships.d.ts.map +1 -0
  96. package/dist/tags/relationships.js +62 -0
  97. package/dist/tags/relationships.js.map +1 -0
  98. package/dist/tags/snippet.d.ts.map +1 -1
  99. package/dist/tags/snippet.js +10 -0
  100. package/dist/tags/snippet.js.map +1 -1
  101. package/dist/tags/xref.d.ts.map +1 -1
  102. package/dist/tags/xref.js +9 -0
  103. package/dist/tags/xref.js.map +1 -1
  104. package/dist/xref-preview-resolve.d.ts +35 -0
  105. package/dist/xref-preview-resolve.d.ts.map +1 -0
  106. package/dist/xref-preview-resolve.js +188 -0
  107. package/dist/xref-preview-resolve.js.map +1 -0
  108. package/package.json +3 -3
@@ -0,0 +1,180 @@
1
+ /**
2
+ * relationships postProcess resolver (SPEC-072).
3
+ *
4
+ * Walks the serialized renderable, finds `relationships` sentinels, queries the
5
+ * registry's relationship graph (`getRelated`), and renders either a per-edge
6
+ * body template (deferBody, with `$item` + `$kind` bound) or a built-in
7
+ * grouped-by-kind list. Shares render helpers with `collection`.
8
+ */
9
+ import Markdoc from '@markdoc/markdoc';
10
+ import { humanize } from './functions.js';
11
+ import { fieldValue, titleLink as titleLinkFor, groupBy, projectItem, renderItemTemplate, buildOrdering, splitBodyZones, renderGroupAccordion, } from './collection-helpers.js';
12
+ import { RELATIONSHIPS_SENTINEL } from './tags/relationships.js';
13
+ const { Tag } = Markdoc;
14
+ function isTag(node) {
15
+ return Tag.isTag(node);
16
+ }
17
+ function metaContent(tag, field) {
18
+ for (const child of tag.children ?? []) {
19
+ if (isTag(child) && child.name === 'meta' && child.attributes['data-field'] === field) {
20
+ return String(child.attributes.content ?? '');
21
+ }
22
+ }
23
+ return '';
24
+ }
25
+ function hasSentinel(tag) {
26
+ return (tag.children ?? []).some((c) => isTag(c) && c.name === 'meta' && c.attributes['data-field'] === RELATIONSHIPS_SENTINEL);
27
+ }
28
+ function csv(s) {
29
+ return s.split(',').map((x) => x.trim()).filter(Boolean);
30
+ }
31
+ function readQuery(tag) {
32
+ const limitRaw = metaContent(tag, 'relationships-limit');
33
+ const limitNum = Number(limitRaw);
34
+ return {
35
+ of: metaContent(tag, 'relationships-of'),
36
+ kinds: csv(metaContent(tag, 'relationships-kind')),
37
+ types: csv(metaContent(tag, 'relationships-type')),
38
+ group: metaContent(tag, 'relationships-group') || 'kind',
39
+ groupDisplay: metaContent(tag, 'relationships-group-display') || 'headings',
40
+ sort: metaContent(tag, 'relationships-sort'),
41
+ limit: limitRaw && Number.isFinite(limitNum) && limitNum > 0 ? Math.floor(limitNum) : undefined,
42
+ fields: csv(metaContent(tag, 'relationships-fields')),
43
+ layout: metaContent(tag, 'relationships-layout') || 'list',
44
+ bodySource: metaContent(tag, 'relationships-body'),
45
+ empty: metaContent(tag, 'relationships-empty'),
46
+ };
47
+ }
48
+ /** Sort edges by a related-entity field, honoring domain ordering. */
49
+ function sortEdges(edges, sortExpr, ordering) {
50
+ if (!sortExpr)
51
+ return edges;
52
+ let field = sortExpr.trim();
53
+ let dir = 1;
54
+ if (field.startsWith('-')) {
55
+ dir = -1;
56
+ field = field.slice(1);
57
+ }
58
+ else if (field.endsWith('-desc')) {
59
+ dir = -1;
60
+ field = field.slice(0, -5);
61
+ }
62
+ else if (field.endsWith('-asc')) {
63
+ field = field.slice(0, -4);
64
+ }
65
+ const ranked = edges.some((e) => ordering.order(e.target.type, field));
66
+ return [...edges].sort((a, b) => {
67
+ if (ranked) {
68
+ const ra = ordering.rank(a.target.type, field, fieldValue(a.target, field));
69
+ const rb = ordering.rank(b.target.type, field, fieldValue(b.target, field));
70
+ const aR = ra >= 0, bR = rb >= 0;
71
+ if (aR && bR) {
72
+ if (ra !== rb)
73
+ return (ra - rb) * dir;
74
+ }
75
+ else if (aR !== bR)
76
+ return aR ? -1 : 1;
77
+ }
78
+ const av = fieldValue(a.target, field);
79
+ const bv = fieldValue(b.target, field);
80
+ return av.localeCompare(bv) * dir;
81
+ });
82
+ }
83
+ function titleLink(e) {
84
+ return titleLinkFor(e, 'rf-relationships');
85
+ }
86
+ function builtInItem(edge, q) {
87
+ const spans = q.fields.map((f) => new Tag('span', { class: 'rf-relationships__field', 'data-field': f }, [fieldValue(edge.target, f)]));
88
+ const attrs = { 'data-entity-id': edge.target.id, 'data-kind': edge.kind };
89
+ // grid gets card chrome (mirroring collection); list stays an inline row.
90
+ if (q.layout === 'grid') {
91
+ return new Tag('article', { class: 'rf-relationships__card', ...attrs }, [titleLink(edge.target), ...spans]);
92
+ }
93
+ return new Tag('div', { class: 'rf-relationships__item', ...attrs }, [titleLink(edge.target), ...spans]);
94
+ }
95
+ function renderEdges(edges, q, tmpl, embedConfig) {
96
+ return edges.map((edge) => {
97
+ if (tmpl && embedConfig) {
98
+ const kids = renderItemTemplate(tmpl, embedConfig, { item: projectItem(edge.target), kind: edge.kind });
99
+ return new Tag('div', { class: 'rf-relationships__item', 'data-entity-id': edge.target.id, 'data-kind': edge.kind, 'data-block': '' }, kids);
100
+ }
101
+ return builtInItem(edge, q);
102
+ });
103
+ }
104
+ function resolveOne(tag, registry, embedConfig, ordering, ctx, pageUrl) {
105
+ const q = readQuery(tag);
106
+ if (!q.of) {
107
+ ctx.warn('relationships — no `of` entity given (pass of=$item.id on an entity page)', pageUrl);
108
+ }
109
+ let edges = q.of && registry.getRelated
110
+ ? registry.getRelated(q.of, {
111
+ kind: q.kinds.length ? q.kinds : undefined,
112
+ type: q.types.length ? q.types : undefined,
113
+ })
114
+ : [];
115
+ edges = sortEdges(edges, q.sort, ordering);
116
+ // `$count` = total matched (pre-limit); `$shown` = rendered (post-limit).
117
+ const matched = edges.length;
118
+ if (q.limit !== undefined && edges.length > q.limit)
119
+ edges = edges.slice(0, q.limit);
120
+ const counts = { count: matched, shown: edges.length };
121
+ const zones = splitBodyZones(q.bodySource);
122
+ const tmpl = zones.template;
123
+ const attrs = { ...tag.attributes, 'data-of': q.of, 'data-layout': q.layout };
124
+ // Empty state (SPEC-072 Cap 5): fallback zone, else `empty` attribute, else nothing.
125
+ if (edges.length === 0) {
126
+ const out = [];
127
+ if (zones.fallback && embedConfig) {
128
+ out.push(new Tag('div', { 'data-name': 'empty', class: 'rf-relationships__empty' }, renderItemTemplate(zones.fallback, embedConfig, counts)));
129
+ }
130
+ else if (q.empty) {
131
+ out.push(new Tag('div', { 'data-name': 'empty', class: 'rf-relationships__empty' }, [q.empty]));
132
+ }
133
+ return new Tag(tag.name, attrs, out);
134
+ }
135
+ let children;
136
+ if (q.group === 'none' || !q.group) {
137
+ children = renderEdges(edges, q, tmpl, embedConfig);
138
+ }
139
+ else {
140
+ // group by kind (default) or by target type
141
+ const keyOf = q.group === 'type' ? (e) => e.target.type : (e) => e.kind;
142
+ const groups = groupBy(edges, keyOf);
143
+ if (q.groupDisplay === 'accordion') {
144
+ children = renderGroupAccordion([...groups].map(([key, es]) => ({ key, label: humanize(key), count: es.length, nodes: renderEdges(es, q, tmpl, embedConfig) })));
145
+ }
146
+ else {
147
+ children = [];
148
+ for (const [key, es] of groups) {
149
+ children.push(new Tag('div', { class: 'rf-relationships__group', 'data-group': key }, [
150
+ new Tag('h3', { class: 'rf-relationships__group-title' }, [humanize(key)]),
151
+ ...renderEdges(es, q, tmpl, embedConfig),
152
+ ]));
153
+ }
154
+ }
155
+ }
156
+ const itemsDiv = new Tag('div', { 'data-name': 'items', class: 'rf-relationships__items' }, children);
157
+ const head = [];
158
+ if (zones.preamble && embedConfig) {
159
+ head.push(new Tag('div', { 'data-name': 'preamble', class: 'rf-relationships__preamble' }, renderItemTemplate(zones.preamble, embedConfig, counts)));
160
+ }
161
+ return new Tag(tag.name, attrs, [...head, itemsDiv]);
162
+ }
163
+ export function resolveRelationships(renderable, pageUrl, registry, embedConfig, ctx) {
164
+ const ordering = buildOrdering(embedConfig);
165
+ const walk = (node) => {
166
+ if (Array.isArray(node))
167
+ return node.map(walk);
168
+ if (!isTag(node))
169
+ return node;
170
+ const tag = node;
171
+ if (tag.attributes?.['data-rune'] === 'relationships' && hasSentinel(tag)) {
172
+ return resolveOne(tag, registry, embedConfig, ordering, ctx, pageUrl);
173
+ }
174
+ if (!tag.children || tag.children.length === 0)
175
+ return tag;
176
+ return new Tag(tag.name, tag.attributes, tag.children.map(walk));
177
+ };
178
+ return walk(renderable);
179
+ }
180
+ //# sourceMappingURL=relationships-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships-resolve.js","sourceRoot":"","sources":["../src/relationships-resolve.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Snippet pipeline hooks (SPEC-062).
2
+ * Snippet pipeline hooks (SPEC-062, WORK-304).
3
3
  *
4
4
  * - **Preprocess** walks the parsed Markdoc AST, finds every `{% snippet %}`
5
5
  * tag, resolves + slices its source file, and replaces the tag with a
6
- * Markdoc `fence` node. The fence carries `content` and `language` (so
6
+ * Markdoc `fence` node. The fence carries `content` + `language` (so
7
7
  * the existing code-block transform syntax-highlights it identically to
8
- * a triple-backtick fence) plus `data-snippet-source` / `data-snippet-lines`
9
- * attributes for downstream tooling and the wrap step.
8
+ * a triple-backtick fence) plus `source` / `lines` + author-set
9
+ * `linenumbers` / `highlight` annotations (WORK-304). The fence schema
10
+ * renders them as `data-source` / `data-lines` / `data-linenumbers` /
11
+ * `data-highlight-lines` on the output `<pre>` + `<code>`.
10
12
  *
11
13
  * - **PostProcess** walks the rendered renderable tree, finds every `<pre>`
12
- * element carrying `data-snippet-source`, and — when not nested under a
14
+ * element carrying `data-source`, and — when not nested under a
13
15
  * fence-consuming container (`data-rune="code-group"`, `data-rune="diff"`)
14
16
  * — wraps it in `<figure class="rf-snippet">` so themes can style snippet
15
17
  * blocks distinctly from regular code blocks (and tooling can find
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-pipeline.d.ts","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAiC7H;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,GACpB,IAAI,GAAG,IAAI,CAYb;AAsGD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,eAAe,GACnB,eAAe,CAIjB"}
1
+ {"version":3,"file":"snippet-pipeline.d.ts","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAiC7H;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,GACpB,IAAI,GAAG,IAAI,CAYb;AAqHD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,eAAe,GACnB,eAAe,CAIjB"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Snippet pipeline hooks (SPEC-062).
2
+ * Snippet pipeline hooks (SPEC-062, WORK-304).
3
3
  *
4
4
  * - **Preprocess** walks the parsed Markdoc AST, finds every `{% snippet %}`
5
5
  * tag, resolves + slices its source file, and replaces the tag with a
6
- * Markdoc `fence` node. The fence carries `content` and `language` (so
6
+ * Markdoc `fence` node. The fence carries `content` + `language` (so
7
7
  * the existing code-block transform syntax-highlights it identically to
8
- * a triple-backtick fence) plus `data-snippet-source` / `data-snippet-lines`
9
- * attributes for downstream tooling and the wrap step.
8
+ * a triple-backtick fence) plus `source` / `lines` + author-set
9
+ * `linenumbers` / `highlight` annotations (WORK-304). The fence schema
10
+ * renders them as `data-source` / `data-lines` / `data-linenumbers` /
11
+ * `data-highlight-lines` on the output `<pre>` + `<code>`.
10
12
  *
11
13
  * - **PostProcess** walks the rendered renderable tree, finds every `<pre>`
12
- * element carrying `data-snippet-source`, and — when not nested under a
14
+ * element carrying `data-source`, and — when not nested under a
13
15
  * fence-consuming container (`data-rune="code-group"`, `data-rune="diff"`)
14
16
  * — wraps it in `<figure class="rf-snippet">` so themes can style snippet
15
17
  * blocks distinctly from regular code blocks (and tooling can find
@@ -95,13 +97,14 @@ function walkAndReplaceSnippets(node, page, ctx, projectRoot, onReplaced) {
95
97
  /** Build a `fence` AST node that renders a clear error message in place of
96
98
  * the snippet. Used when resolution fails (sandbox, missing file, malformed
97
99
  * lines, unresolvable variable reference). The fence carries the original
98
- * attempted path in `data-snippet-source` so tooling can still detect
99
- * snippet provenance. */
100
+ * attempted path in `source` so tooling can still detect snippet
101
+ * provenance, plus a `data-snippet-error` raw data-attr that's
102
+ * forwarded through the fence transform for the error styling hook. */
100
103
  function makeErrorFence(pathAttr, message) {
101
104
  return new Ast.Node('fence', {
102
105
  content: `snippet error: ${message}\n`,
103
106
  language: 'text',
104
- 'data-snippet-source': pathAttr || '(unresolved)',
107
+ source: pathAttr || '(unresolved)',
105
108
  'data-snippet-error': message,
106
109
  });
107
110
  }
@@ -113,6 +116,14 @@ function resolveSnippetToFence(tag, page, ctx, projectRoot) {
113
116
  const langAttr = tag.attributes.lang !== undefined
114
117
  ? resolveAttributeValue(tag.attributes.lang, ctx.variables)
115
118
  : undefined;
119
+ // WORK-304 — propagate author-set fence-level annotations from the
120
+ // snippet rune through to the fence node. The fence schema renders
121
+ // them as `data-linenumbers` / `data-highlight-lines`. `linenumbers`
122
+ // arrives as a Boolean from the rune schema; `highlight` as a String.
123
+ const linenumbers = tag.attributes.linenumbers === true;
124
+ const highlight = tag.attributes.highlight !== undefined
125
+ ? resolveAttributeValue(tag.attributes.highlight, ctx.variables)
126
+ : undefined;
116
127
  if (!pathAttr) {
117
128
  const msg = 'snippet `path` attribute is required (and an unresolvable variable reference resolves to empty)';
118
129
  ctx.error(msg, page.url);
@@ -142,13 +153,21 @@ function resolveSnippetToFence(tag, page, ctx, projectRoot) {
142
153
  ctx.warn(warning, page.url);
143
154
  }
144
155
  const language = (langAttr && langAttr.length > 0) ? langAttr : inferLanguage(result.relativePath);
156
+ // WORK-304 — write unprefixed `source` / `lines` directly. The fence
157
+ // schema renders them as `data-source` / `data-lines`. `linenumbers` /
158
+ // `highlight` are propagated from the rune attributes (file-coordinate
159
+ // semantics — see WORK-304 acceptance criteria).
145
160
  const fenceAttrs = {
146
161
  content: result.content,
147
162
  language,
148
- 'data-snippet-source': result.relativePath,
163
+ source: result.relativePath,
149
164
  };
150
165
  if (lines)
151
- fenceAttrs['data-snippet-lines'] = lines;
166
+ fenceAttrs.lines = lines;
167
+ if (linenumbers)
168
+ fenceAttrs.linenumbers = true;
169
+ if (highlight && highlight.length > 0)
170
+ fenceAttrs.highlight = highlight;
152
171
  // Construct a fence Ast.Node. Markdoc parses ``` blocks as
153
172
  // new Ast.Node('fence', { content, language }) — same shape here.
154
173
  return new Ast.Node('fence', fenceAttrs);
@@ -186,7 +205,7 @@ function walkAndWrap(node, insideFenceContainer) {
186
205
  const childAncestor = insideFenceContainer || enteredFenceContainer;
187
206
  // Wrap matching <pre> elements that aren't inside a fence-consuming container.
188
207
  if (tag.name === 'pre' &&
189
- tag.attributes?.['data-snippet-source'] !== undefined &&
208
+ tag.attributes?.['data-source'] !== undefined &&
190
209
  !insideFenceContainer) {
191
210
  return wrapPreInFigure(tag);
192
211
  }
@@ -205,8 +224,8 @@ function walkAndWrap(node, insideFenceContainer) {
205
224
  }
206
225
  function wrapPreInFigure(preTag) {
207
226
  const attrs = preTag.attributes;
208
- const source = String(attrs['data-snippet-source'] ?? '');
209
- const linesAttr = attrs['data-snippet-lines'] !== undefined ? String(attrs['data-snippet-lines']) : undefined;
227
+ const source = String(attrs['data-source'] ?? '');
228
+ const linesAttr = attrs['data-lines'] !== undefined ? String(attrs['data-lines']) : undefined;
210
229
  const figureAttrs = {
211
230
  class: 'rf-snippet',
212
231
  'data-rune': 'snippet',
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-pipeline.js","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snippet-pipeline.js","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ export declare const AGGREGATE_SENTINEL = "__aggregate-sentinel";
3
+ /**
4
+ * `aggregate` (SPEC-076) — the third post-process-resolved query rune, beside
5
+ * `collection` and `relationships`. Where they project entities and edges, this
6
+ * one projects **numbers** — counts over the same field-match query, optionally
7
+ * broken down by group. Two modes from the same rune:
8
+ *
9
+ * - **No-body**: emits a single inline integer (the count). Replaces the
10
+ * standalone `count` rune proposal.
11
+ * - **Body-zoned**: source splits on top-level `hr` into preamble / template /
12
+ * fallback. `$item` is bound differently per zone — preamble gets totals,
13
+ * template gets the per-group projection, fallback gets zeros.
14
+ *
15
+ * The body is captured via `deferBody` and reparsed per group in the resolver
16
+ * (the same path collection's per-item template uses).
17
+ */
18
+ export declare const aggregate: Markdoc.Schema;
19
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/tags/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAKvC,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,gBAsCpB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ const { Tag } = Markdoc;
3
+ import { createContentModelSchema, createComponentRenderable } from '../lib/index.js';
4
+ import { readDeferredBody } from '../deferred-body.js';
5
+ export const AGGREGATE_SENTINEL = '__aggregate-sentinel';
6
+ /**
7
+ * `aggregate` (SPEC-076) — the third post-process-resolved query rune, beside
8
+ * `collection` and `relationships`. Where they project entities and edges, this
9
+ * one projects **numbers** — counts over the same field-match query, optionally
10
+ * broken down by group. Two modes from the same rune:
11
+ *
12
+ * - **No-body**: emits a single inline integer (the count). Replaces the
13
+ * standalone `count` rune proposal.
14
+ * - **Body-zoned**: source splits on top-level `hr` into preamble / template /
15
+ * fallback. `$item` is bound differently per zone — preamble gets totals,
16
+ * template gets the per-group projection, fallback gets zeros.
17
+ *
18
+ * The body is captured via `deferBody` and reparsed per group in the resolver
19
+ * (the same path collection's per-item template uses).
20
+ */
21
+ export const aggregate = createContentModelSchema({
22
+ attributes: {
23
+ type: { type: String, required: false, default: '', description: 'Entity type(s), comma-separated.' },
24
+ filter: { type: String, required: false, default: '', description: 'field:value clauses defining the primary set being measured (SPEC-070 grammar).' },
25
+ value: { type: String, required: false, default: '', description: 'Optional secondary field:value clause defining the achieved subset within `filter` (e.g. value="status:done"). When set, $item.value is the count matching both; $item.percent is the ratio. Without it, the rune is a pure count + breakdown — no progress-bar semantics.' },
26
+ group: { type: String, required: false, default: '', description: 'Group-by field; omit to render the body once with totals.' },
27
+ sort: { type: String, required: false, default: '', description: 'Sort groups by `key`, `count`, `value`, or `percent` (prefix `-` for descending). Honors SPEC-072 domain-aware ordering when the group field has one.' },
28
+ limit: { type: String, required: false, default: '', description: 'Cap the number of groups (after sort).' },
29
+ empty: { type: String, required: false, default: '', description: 'Fallback text shown when the query matches no entities (self-closing form; body form uses a fallback zone). Absent → render nothing.' },
30
+ },
31
+ deferBody: true,
32
+ contentModel: { type: 'sequence', fields: [] },
33
+ transform(_resolved, attrs) {
34
+ const meta = (field, content) => new Tag('meta', { 'data-field': field, content });
35
+ const bodySource = readDeferredBody(attrs) ?? '';
36
+ const hasBody = bodySource.length > 0;
37
+ const metas = [
38
+ meta('aggregate-type', String(attrs.type ?? '')),
39
+ meta('aggregate-filter', String(attrs.filter ?? '')),
40
+ meta('aggregate-value', String(attrs.value ?? '')),
41
+ meta('aggregate-group', String(attrs.group ?? '')),
42
+ meta('aggregate-sort', String(attrs.sort ?? '')),
43
+ meta('aggregate-limit', String(attrs.limit ?? '')),
44
+ meta('aggregate-empty', String(attrs.empty ?? '')),
45
+ meta(AGGREGATE_SENTINEL, 'true'),
46
+ ];
47
+ if (bodySource)
48
+ metas.push(meta('aggregate-body', bodySource));
49
+ // Self-closing form must be inline-safe (no <section> mid-prose), so the
50
+ // outer tag is a span when there's no body. Body form is a <section>.
51
+ return createComponentRenderable({
52
+ rune: 'aggregate',
53
+ tag: hasBody ? 'section' : 'span',
54
+ properties: {},
55
+ children: metas,
56
+ });
57
+ },
58
+ });
59
+ //# sourceMappingURL=aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/tags/aggregate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ /**
3
+ * `card` (SPEC-070) — a generic, self-contained content card.
4
+ *
5
+ * The body is divided by `---` (hr) into up to three zones:
6
+ *
7
+ * [media] --- body [--- footer]
8
+ *
9
+ * - **media** (optional leading zone): any content — an image, a `{% codegroup %}`,
10
+ * a `{% sandbox %}`, etc. Reuses the shared split layout (`SplitLayoutModel`):
11
+ * side-by-side with the body on wide screens, a full-bleed header on mobile
12
+ * (`data-media-position="top"`).
13
+ * - **body**: the main content.
14
+ * - **footer** (optional trailing zone): a muted meta row (date · tags · …).
15
+ *
16
+ * Zone roles are positional by count: 1 → body; 2 → media + body; 3 → media +
17
+ * body + footer. A leading empty zone (`--- body --- footer`) means "no media".
18
+ *
19
+ * `href` makes the whole card a link (a stretched link overlay, so real links
20
+ * inside body/footer stay clickable). The card carries no `$item`/registry
21
+ * knowledge — it's plain and composable, standalone or fed by a collection
22
+ * body template.
23
+ */
24
+ export declare const card: Markdoc.Schema;
25
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/tags/card.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAOvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,IAAI,gBAwHf,CAAC"}
@@ -0,0 +1,138 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ const { Tag } = Markdoc;
3
+ import { createContentModelSchema, createComponentRenderable, asNodes } from '../lib/index.js';
4
+ import { RenderableNodeCursor } from '../lib/renderable.js';
5
+ import { SplitLayoutModel, buildLayoutMetas, extractMediaImage } from './common.js';
6
+ /**
7
+ * `card` (SPEC-070) — a generic, self-contained content card.
8
+ *
9
+ * The body is divided by `---` (hr) into up to three zones:
10
+ *
11
+ * [media] --- body [--- footer]
12
+ *
13
+ * - **media** (optional leading zone): any content — an image, a `{% codegroup %}`,
14
+ * a `{% sandbox %}`, etc. Reuses the shared split layout (`SplitLayoutModel`):
15
+ * side-by-side with the body on wide screens, a full-bleed header on mobile
16
+ * (`data-media-position="top"`).
17
+ * - **body**: the main content.
18
+ * - **footer** (optional trailing zone): a muted meta row (date · tags · …).
19
+ *
20
+ * Zone roles are positional by count: 1 → body; 2 → media + body; 3 → media +
21
+ * body + footer. A leading empty zone (`--- body --- footer`) means "no media".
22
+ *
23
+ * `href` makes the whole card a link (a stretched link overlay, so real links
24
+ * inside body/footer stay clickable). The card carries no `$item`/registry
25
+ * knowledge — it's plain and composable, standalone or fed by a collection
26
+ * body template.
27
+ */
28
+ export const card = createContentModelSchema({
29
+ base: SplitLayoutModel,
30
+ attributes: {
31
+ href: { type: String, required: false, default: '', description: 'Optional link target; makes the whole card clickable.' },
32
+ },
33
+ contentModel: {
34
+ type: 'sequence',
35
+ fields: [{ name: 'body', match: 'any', optional: true, greedy: true }],
36
+ },
37
+ transform(resolved, attrs, config) {
38
+ // Split the body nodes on `hr` (`---`) into zones.
39
+ const nodes = asNodes(resolved.body);
40
+ const zones = [[]];
41
+ for (const n of nodes) {
42
+ if (n.type === 'hr')
43
+ zones.push([]);
44
+ else
45
+ zones[zones.length - 1].push(n);
46
+ }
47
+ let mediaNodes = [];
48
+ let bodyNodes = [];
49
+ let footerNodes = [];
50
+ if (zones.length === 1) {
51
+ bodyNodes = zones[0];
52
+ }
53
+ else if (zones.length === 2) {
54
+ mediaNodes = zones[0];
55
+ bodyNodes = zones[1];
56
+ }
57
+ else {
58
+ mediaNodes = zones[0];
59
+ footerNodes = zones[zones.length - 1];
60
+ bodyNodes = zones.slice(1, -1).flat();
61
+ }
62
+ const { metas: layoutMetas, children: layoutChildren } = buildLayoutMetas(attrs);
63
+ const children = [...layoutChildren];
64
+ // Media zone — unwrap a bare image; otherwise render arbitrary content.
65
+ if (mediaNodes.length > 0) {
66
+ const mediaCursor = new RenderableNodeCursor(Markdoc.transform(mediaNodes, config));
67
+ const img = extractMediaImage(mediaCursor);
68
+ const inner = img ? [img] : mediaCursor.toArray();
69
+ children.push(new Tag('div', { 'data-section': 'media', 'data-name': 'media' }, inner));
70
+ }
71
+ // Eyebrow: a leading paragraph immediately followed by a heading becomes a
72
+ // kicker (the page-section / recipe pattern). The rest stays freeform body.
73
+ let eyebrowNode;
74
+ let mainBodyNodes = bodyNodes;
75
+ if (bodyNodes.length >= 2 &&
76
+ bodyNodes[0].type === 'paragraph' &&
77
+ bodyNodes[1].type === 'heading') {
78
+ eyebrowNode = bodyNodes[0];
79
+ mainBodyNodes = bodyNodes.slice(1);
80
+ }
81
+ // Content zone (body + optional footer) — one grid child so the split
82
+ // layout puts media | content; footer sits at the bottom of content.
83
+ const bodyInner = [];
84
+ let eyebrowTag;
85
+ if (eyebrowNode) {
86
+ const eyebrowCursor = new RenderableNodeCursor(Markdoc.transform([eyebrowNode], config));
87
+ const first = eyebrowCursor.toArray()[0];
88
+ if (Markdoc.Tag.isTag(first)) {
89
+ eyebrowTag = first;
90
+ bodyInner.push(eyebrowTag);
91
+ }
92
+ }
93
+ const bodyCursor = new RenderableNodeCursor(Markdoc.transform(mainBodyNodes, config));
94
+ const bodyRendered = bodyCursor.toArray();
95
+ // The body's leading heading is the card title — give it a hook so it can
96
+ // sit tight under an eyebrow instead of carrying default prose top margin.
97
+ let titleTag;
98
+ const firstBody = bodyRendered[0];
99
+ if (Markdoc.Tag.isTag(firstBody) && /^h[1-6]$/.test(firstBody.name)) {
100
+ titleTag = firstBody;
101
+ }
102
+ bodyInner.push(...bodyRendered);
103
+ const bodyDiv = new Tag('div', { 'data-name': 'body' }, bodyInner);
104
+ const contentChildren = [bodyDiv];
105
+ let footerTag;
106
+ if (footerNodes.length > 0) {
107
+ const footerCursor = new RenderableNodeCursor(Markdoc.transform(footerNodes, config));
108
+ footerTag = new Tag('footer', { 'data-name': 'footer' }, footerCursor.toArray());
109
+ contentChildren.push(footerTag);
110
+ }
111
+ const contentDiv = new Tag('div', { 'data-name': 'content' }, contentChildren);
112
+ children.push(contentDiv);
113
+ // Whole-card link as a stretched overlay (keeps nested links valid).
114
+ let linkTag;
115
+ const href = String(attrs.href ?? '');
116
+ if (href) {
117
+ linkTag = new Tag('a', { 'data-name': 'link', href, 'aria-hidden': 'true', tabindex: '-1' }, []);
118
+ children.push(linkTag);
119
+ }
120
+ const refs = { content: contentDiv, body: bodyDiv };
121
+ if (titleTag)
122
+ refs.title = titleTag;
123
+ if (eyebrowTag)
124
+ refs.eyebrow = eyebrowTag;
125
+ if (footerTag)
126
+ refs.footer = footerTag;
127
+ if (linkTag)
128
+ refs.link = linkTag;
129
+ return createComponentRenderable({
130
+ rune: 'card',
131
+ tag: 'div',
132
+ properties: { layout: layoutMetas.layout },
133
+ refs,
134
+ children,
135
+ });
136
+ },
137
+ });
138
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/tags/card.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codegroup.d.ts","sourceRoot":"","sources":["../../src/tags/codegroup.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAqBvC,eAAO,MAAM,SAAS,gBA0EpB,CAAC"}
1
+ {"version":3,"file":"codegroup.d.ts","sourceRoot":"","sources":["../../src/tags/codegroup.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAyCvC,eAAO,MAAM,SAAS,gBA4FpB,CAAC"}