@refrakt-md/runes 0.42.0 → 0.44.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 (112) hide show
  1. package/dist/composed-rune.d.ts +9 -1
  2. package/dist/composed-rune.d.ts.map +1 -1
  3. package/dist/composed-rune.js +14 -2
  4. package/dist/composed-rune.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +27 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/examples.d.ts.map +1 -1
  9. package/dist/examples.js +2 -0
  10. package/dist/examples.js.map +1 -1
  11. package/dist/index.d.ts +5 -8
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +19 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/lib/component.d.ts +5 -1
  16. package/dist/lib/component.d.ts.map +1 -1
  17. package/dist/lib/component.js +0 -1
  18. package/dist/lib/component.js.map +1 -1
  19. package/dist/lib/composition-errors.d.ts +7 -0
  20. package/dist/lib/composition-errors.d.ts.map +1 -1
  21. package/dist/lib/composition-errors.js +7 -0
  22. package/dist/lib/composition-errors.js.map +1 -1
  23. package/dist/lib/composition-placement.d.ts +88 -0
  24. package/dist/lib/composition-placement.d.ts.map +1 -0
  25. package/dist/lib/composition-placement.js +180 -0
  26. package/dist/lib/composition-placement.js.map +1 -0
  27. package/dist/lib/composition.d.ts +60 -3
  28. package/dist/lib/composition.d.ts.map +1 -1
  29. package/dist/lib/composition.js +263 -38
  30. package/dist/lib/composition.js.map +1 -1
  31. package/dist/lib/header-roles.d.ts +32 -0
  32. package/dist/lib/header-roles.d.ts.map +1 -0
  33. package/dist/lib/header-roles.js +52 -0
  34. package/dist/lib/header-roles.js.map +1 -0
  35. package/dist/lib/index.d.ts +2 -2
  36. package/dist/lib/index.d.ts.map +1 -1
  37. package/dist/lib/index.js +161 -243
  38. package/dist/lib/index.js.map +1 -1
  39. package/dist/lib/resolver.d.ts +5 -0
  40. package/dist/lib/resolver.d.ts.map +1 -1
  41. package/dist/lib/resolver.js +25 -3
  42. package/dist/lib/resolver.js.map +1 -1
  43. package/dist/lib/slot-markers.js +9 -1
  44. package/dist/lib/slot-markers.js.map +1 -1
  45. package/dist/lib/slots.d.ts +5 -2
  46. package/dist/lib/slots.d.ts.map +1 -1
  47. package/dist/lib/slots.js +1 -1
  48. package/dist/lib/slots.js.map +1 -1
  49. package/dist/lib/universal-attribute-defs.d.ts +12 -0
  50. package/dist/lib/universal-attribute-defs.d.ts.map +1 -0
  51. package/dist/lib/universal-attribute-defs.js +225 -0
  52. package/dist/lib/universal-attribute-defs.js.map +1 -0
  53. package/dist/nodes.d.ts +11 -0
  54. package/dist/nodes.d.ts.map +1 -1
  55. package/dist/nodes.js +34 -0
  56. package/dist/nodes.js.map +1 -1
  57. package/dist/plugins.d.ts.map +1 -1
  58. package/dist/plugins.js +36 -1
  59. package/dist/plugins.js.map +1 -1
  60. package/dist/project-runes.d.ts +9 -2
  61. package/dist/project-runes.d.ts.map +1 -1
  62. package/dist/project-runes.js +5 -5
  63. package/dist/project-runes.js.map +1 -1
  64. package/dist/reference.d.ts.map +1 -1
  65. package/dist/reference.js +9 -0
  66. package/dist/reference.js.map +1 -1
  67. package/dist/tags/accordion.d.ts +1 -0
  68. package/dist/tags/accordion.d.ts.map +1 -1
  69. package/dist/tags/accordion.js +1 -1
  70. package/dist/tags/accordion.js.map +1 -1
  71. package/dist/tags/actions.d.ts +20 -0
  72. package/dist/tags/actions.d.ts.map +1 -0
  73. package/dist/tags/actions.js +72 -0
  74. package/dist/tags/actions.js.map +1 -0
  75. package/dist/tags/blog.d.ts.map +1 -1
  76. package/dist/tags/blog.js +0 -1
  77. package/dist/tags/blog.js.map +1 -1
  78. package/dist/tags/budget.d.ts.map +1 -1
  79. package/dist/tags/budget.js +0 -1
  80. package/dist/tags/budget.js.map +1 -1
  81. package/dist/tags/card.d.ts +3 -1
  82. package/dist/tags/card.d.ts.map +1 -1
  83. package/dist/tags/card.js +7 -4
  84. package/dist/tags/card.js.map +1 -1
  85. package/dist/tags/common.d.ts +9 -0
  86. package/dist/tags/common.d.ts.map +1 -1
  87. package/dist/tags/common.js +11 -0
  88. package/dist/tags/common.js.map +1 -1
  89. package/dist/tags/hint.d.ts.map +1 -1
  90. package/dist/tags/hint.js +0 -1
  91. package/dist/tags/hint.js.map +1 -1
  92. package/dist/tags/reveal.d.ts +1 -0
  93. package/dist/tags/reveal.d.ts.map +1 -1
  94. package/dist/tags/reveal.js +1 -1
  95. package/dist/tags/reveal.js.map +1 -1
  96. package/dist/tags/section.d.ts +43 -2
  97. package/dist/tags/section.d.ts.map +1 -1
  98. package/dist/tags/section.js +178 -10
  99. package/dist/tags/section.js.map +1 -1
  100. package/dist/tags/tabs.d.ts +1 -0
  101. package/dist/tags/tabs.d.ts.map +1 -1
  102. package/dist/tags/tabs.js +1 -1
  103. package/dist/tags/tabs.js.map +1 -1
  104. package/package.json +3 -3
  105. package/dist/documents/doc.d.ts +0 -4
  106. package/dist/documents/doc.d.ts.map +0 -1
  107. package/dist/documents/doc.js +0 -4
  108. package/dist/documents/doc.js.map +0 -1
  109. package/dist/documents/page.d.ts +0 -10
  110. package/dist/documents/page.d.ts.map +0 -1
  111. package/dist/documents/page.js +0 -30
  112. package/dist/documents/page.js.map +0 -1
@@ -0,0 +1,180 @@
1
+ import { UNIVERSAL_AXIS_FACETS } from '@refrakt-md/transform';
2
+ import { AXIS_ATTRIBUTES } from '../universal-attributes.js';
3
+ // ---------------------------------------------------------------------------
4
+ // The runes a template may place, by name
5
+ // ---------------------------------------------------------------------------
6
+ /**
7
+ * Runes a composition can place, by tag name. A composition decides at
8
+ * construction which placed rune owns a role, and only the placed rune's schema
9
+ * says what it accepts. Core runes register when the package entry loads; a
10
+ * plugin's own runes register before its compositions are built, and each
11
+ * composed rune registers once built, so a later composition can place it.
12
+ */
13
+ const placeable = new Map();
14
+ export function registerPlaceableSchema(name, schema) {
15
+ if (schema)
16
+ placeable.set(name, schema);
17
+ }
18
+ export function placeableSchema(name) {
19
+ return placeable.get(name);
20
+ }
21
+ const ROLE_NAMES = {
22
+ header: 'a page-section header',
23
+ 'prose-body': 'a prose body',
24
+ media: 'a media zone or frame target',
25
+ };
26
+ /** Whether a placed rune takes an axis: its schema declares the axis's first
27
+ * attribute. Schema narrowing (SPEC-125) put it there only where the axis
28
+ * applies, and a composed rune's own narrowing follows its placements, so the
29
+ * same question looks through a nested composition. */
30
+ function takes(rune, axis) {
31
+ const names = AXIS_ATTRIBUTES[axis];
32
+ if (!names || names.length === 0)
33
+ return true;
34
+ const schema = placeable.get(rune);
35
+ return schema?.attributes?.[names[0]] !== undefined;
36
+ }
37
+ /**
38
+ * Nominate the carrier (D31) and place every axis (D33). Throws, through
39
+ * `fail`, on a marker that cannot stand and on several top-level runes with no
40
+ * marker.
41
+ */
42
+ export function resolvePlacements(rune, runes, fail) {
43
+ for (const r of runes) {
44
+ const schema = placeable.get(r.node.tag);
45
+ if (schema?.attributes?.chrome !== undefined) {
46
+ fail('chrome-collision', `it places \`{% ${r.node.tag} %}\`, which declares an attribute named \`chrome\`. In a template \`chrome\` nominates the paint carrier (D31), so the two cannot be told apart. Rename the rune's attribute.`, r.node);
47
+ }
48
+ }
49
+ const marked = runes.filter((r) => r.node.attributes.chrome !== undefined);
50
+ for (const r of marked) {
51
+ if (r.node.attributes.chrome !== true) {
52
+ fail('chrome-invalid', `\`chrome\` on \`{% ${r.node.tag} %}\` takes no value; write it bare, as \`{% ${r.node.tag} chrome %}\` (D31).`, r.node);
53
+ }
54
+ if (r.inEach) {
55
+ fail('chrome-invalid', `\`{% ${r.node.tag} chrome %}\` is inside an \`each\` slot, so it would be placed once per item. The carrier is one region; mark a rune outside the slot (D31).`, r.node);
56
+ }
57
+ }
58
+ if (marked.length > 1) {
59
+ fail('chrome-marked-twice', `\`chrome\` marks ${marked.map((r) => `\`{% ${r.node.tag} %}\``).join(' and ')}. A rune has exactly one paint carrier; mark one of them (D31).`, marked[1].node);
60
+ }
61
+ let carrier = marked[0]?.node;
62
+ if (!carrier) {
63
+ const top = runes.filter((r) => r.top);
64
+ // A rune repeated per item is several regions, however it is written.
65
+ const several = top.length > 1 || top.some((r) => r.inEach);
66
+ if (several) {
67
+ const names = [...new Set(top.map((r) => `\`{% ${r.node.tag} %}\``))].join(', ');
68
+ fail('chrome-ambiguous', `it places several runes at its top level (${names}) and marks none as the paint carrier, so \`elevation\`, \`tint\` and the rest would have nowhere to land. Wrap them in one \`{% section %}\`, which then carries them, or mark one with \`chrome\` (D14, D31).`, top[1]?.node ?? top[0].node);
69
+ }
70
+ carrier = top[0]?.node;
71
+ }
72
+ const carrierRune = carrier?.tag;
73
+ const axes = {};
74
+ const axisOf = {};
75
+ for (const facet of UNIVERSAL_AXIS_FACETS) {
76
+ for (const name of AXIS_ATTRIBUTES[facet.axis] ?? [])
77
+ axisOf[name] = facet.axis;
78
+ const placement = facet.placement;
79
+ if (placement === 'root') {
80
+ axes[facet.axis] = { placement };
81
+ continue;
82
+ }
83
+ if (placement === 'carrier') {
84
+ if (!carrier) {
85
+ axes[facet.axis] = {
86
+ placement,
87
+ dropped: `\`${rune}\` places no rune to carry it`,
88
+ };
89
+ }
90
+ else if (takes(carrierRune, facet.axis)) {
91
+ axes[facet.axis] = { placement, node: carrier, rune: carrierRune };
92
+ }
93
+ else {
94
+ axes[facet.axis] = {
95
+ placement,
96
+ unavailable: `its paint carrier \`${carrierRune}\` does not take \`${facet.axis}\``,
97
+ };
98
+ }
99
+ continue;
100
+ }
101
+ // A role owner: the carrier when it owns the role, else the single rune
102
+ // the template places itself that does (D33.2).
103
+ if (carrier && takes(carrierRune, facet.axis)) {
104
+ axes[facet.axis] = { placement, node: carrier, rune: carrierRune };
105
+ continue;
106
+ }
107
+ const owners = runes.filter((r) => !r.inEach && takes(r.node.tag, facet.axis));
108
+ if (owners.length === 1) {
109
+ axes[facet.axis] = { placement, node: owners[0].node, rune: owners[0].node.tag };
110
+ }
111
+ else if (owners.length === 0) {
112
+ axes[facet.axis] = {
113
+ placement,
114
+ unavailable: `no rune \`${rune}\` places owns ${ROLE_NAMES[placement]}`,
115
+ };
116
+ }
117
+ else {
118
+ axes[facet.axis] = {
119
+ placement,
120
+ unavailable: `several runes \`${rune}\` places own ${ROLE_NAMES[placement]} (${owners.map((o) => `\`${o.node.tag}\``).join(', ')}) and none is its paint carrier`,
121
+ };
122
+ }
123
+ }
124
+ return { carrier, axes, axisOf };
125
+ }
126
+ /** The universal attributes this composition offers, and why it offers none of
127
+ * an axis's — the composed half of SPEC-125's narrowing. Root-placed axes, and
128
+ * axes no placed rune takes, are left to the ordinary structural gates on the
129
+ * composed rune itself: a composition that places no rune and declares
130
+ * `provides: [prose]` keeps `reading` on its own root, as before. */
131
+ export function placementAvailability(placements) {
132
+ const offered = new Set();
133
+ const withheld = new Map();
134
+ for (const [axis, target] of Object.entries(placements.axes)) {
135
+ if (target.placement === 'root')
136
+ continue;
137
+ if ('unavailable' in target) {
138
+ withheld.set(axis, target.unavailable);
139
+ continue;
140
+ }
141
+ for (const name of AXIS_ATTRIBUTES[axis] ?? [])
142
+ offered.add(name);
143
+ }
144
+ return { offered, withheld };
145
+ }
146
+ /**
147
+ * Split one instance's attributes: the universal ones that move to a placed
148
+ * rune, by target node, and those dropped for want of a carrier. What is left
149
+ * stays on the root. The author's value replaces a literal the template wrote on
150
+ * the target (D34.4).
151
+ */
152
+ export function moveAttributes(placements, attrs) {
153
+ const moves = new Map();
154
+ const moved = new Set();
155
+ const dropped = [];
156
+ for (const [name, value] of Object.entries(attrs)) {
157
+ if (value === undefined || value === null)
158
+ continue;
159
+ const axis = placements.axisOf[name];
160
+ if (!axis)
161
+ continue;
162
+ const target = placements.axes[axis];
163
+ if (!target || target.placement === 'root')
164
+ continue;
165
+ if ('node' in target) {
166
+ moved.add(name);
167
+ const into = moves.get(target.node) ?? {};
168
+ into[name] = value;
169
+ moves.set(target.node, into);
170
+ }
171
+ else if ('dropped' in target) {
172
+ moved.add(name);
173
+ dropped.push(name);
174
+ }
175
+ // An axis no placed rune takes stays on the root, where it is offered only
176
+ // when the composed rune meets the axis's gate itself.
177
+ }
178
+ return { moves, moved, dropped };
179
+ }
180
+ //# sourceMappingURL=composition-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition-placement.js","sourceRoot":"","sources":["../../src/lib/composition-placement.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { RuneConfig } from '@refrakt-md/transform';
4
4
  import type { SchemaTable } from './schema-table.js';
5
5
  import { SchemaSideTable } from './schema-side-table.js';
6
6
  import type { RegistersDeclaration } from './registers.js';
7
+ import type { AxisTarget, CompositionPlacements } from './composition-placement.js';
7
8
  /**
8
9
  * A composition template, as `createContentModelSchema` receives it — the third
9
10
  * of D5's three mutually exclusive emit paths, beside `transform` and `emits`.
@@ -19,6 +20,8 @@ export interface CompositionTemplate {
19
20
  body: string;
20
21
  /** The `blocks` the rune declares — what `{% metablock %}` may name (D7). */
21
22
  blocks?: readonly string[];
23
+ /** D34 — the definition's defaults for universal axes, by attribute. */
24
+ defaults?: Readonly<Record<string, string>>;
22
25
  }
23
26
  /** One node of a composition's expansion, as the contract records it (D6). */
24
27
  export interface CompositionOutlineNode {
@@ -56,6 +59,31 @@ export interface CompositionInfo {
56
59
  config?: RuneConfig;
57
60
  /** The config key the engine finds it under. */
58
61
  typeName?: string;
62
+ /** Where each universal axis lands (D33): its placement, the rune it lands
63
+ * on, or why it is not offered. For `inspect`, `contracts` and `reference`. */
64
+ axes: Record<string, AxisPlacementInfo>;
65
+ /** D34 — the definition's defaults, each with where it lands and any literal
66
+ * the template writes there, which wins over it. */
67
+ defaults?: Record<string, CompositionDefaultInfo>;
68
+ }
69
+ /** One `defaults` entry, as tooling reads it (D34). */
70
+ export interface CompositionDefaultInfo {
71
+ value: string;
72
+ placement: AxisTarget['placement'];
73
+ /** The placed rune it lands on; absent for a root-placed axis. */
74
+ rune?: string;
75
+ /** A literal the template writes on that rune, which the default yields to. */
76
+ literal?: string;
77
+ }
78
+ /** One axis's placement on a composed rune, as tooling reads it. */
79
+ export interface AxisPlacementInfo {
80
+ placement: AxisTarget['placement'];
81
+ /** The placed rune it lands on. */
82
+ rune?: string;
83
+ /** Offered, but dropped with a warning: there is no carrier (D24). */
84
+ dropped?: string;
85
+ /** Not offered, and why (D33.3). */
86
+ unavailable?: string;
59
87
  }
60
88
  /** Compositions by schema — the same pattern as `schemaTables`: tooling has only
61
89
  * the schema to read from. */
@@ -77,15 +105,35 @@ export declare function frontmatterKeyLine(frontmatter: string, path: readonly s
77
105
  * that becomes a property of the outer entity, not a peer of it (D9). */
78
106
  export declare const SUBORDINATE_SCHEMA_TYPES: ReadonlySet<string>;
79
107
  /**
80
- * `{% slot name="x" each %}` is the spec's spelling, and Markdoc's tag grammar
81
- * has no bare boolean attribute. Rewrite it to `each=true` inside slot tags
82
- * only, outside quoted values, before parsing.
108
+ * `{% slot name="x" each %}` and `{% section chrome %}` are the spec's
109
+ * spellings (D26, D31), and Markdoc's tag grammar has no bare boolean
110
+ * attribute. Rewrite `each` inside slot tags, and `chrome` inside any tag, to
111
+ * `=true`, outside quoted values, before parsing.
83
112
  */
84
113
  export declare function normaliseEach(body: string): string;
85
114
  export interface CompiledComposition {
86
115
  /** The transform `createContentModelSchema` calls where it would call `transform`. */
87
116
  transform: (resolved: ResolvedContent, attrs: Record<string, any>, config: Config, node: Node) => RenderableTreeNodes;
88
117
  info: CompositionInfo;
118
+ /**
119
+ * The template expanded for one instance: what `transform` hands Markdoc,
120
+ * before it is transformed. Validation reads it to see which slot each
121
+ * placed node came from (ADR-046 decision 3).
122
+ */
123
+ place: (resolved: ResolvedContent, attrs: Record<string, any>) => Node[];
124
+ /** Where the universal attributes land (D14, D31, D33). */
125
+ placements: CompositionPlacements;
126
+ /** One instance's attributes less the universal ones that moved off the root
127
+ * (or were dropped for want of a carrier). What the root keeps. */
128
+ rootAttributes: (attrs: Record<string, any>) => Record<string, any>;
129
+ /** The parsed template, as construction checked it. */
130
+ templateNodes: readonly Node[];
131
+ /** SPEC-182 D4 — the filled attributes the author also wrote, for the
132
+ * `fill-overridden` warning. */
133
+ overriddenFills: (resolved: ResolvedContent, written: Record<string, unknown>) => Array<{
134
+ attribute: string;
135
+ field: string;
136
+ }>;
89
137
  }
90
138
  export interface CompileCompositionOptions {
91
139
  contentModel: ContentModel | ((attrs: Record<string, any>) => ContentModel);
@@ -119,6 +167,8 @@ export interface CompositionDefinition {
119
167
  metaFields?: Record<string, unknown>;
120
168
  blocks?: Record<string, unknown>;
121
169
  provides?: string[];
170
+ /** D34 — defaults for universal axes, by attribute name. */
171
+ defaults?: Record<string, string>;
122
172
  template: string;
123
173
  /** 1-based line of the source on which the template body starts. */
124
174
  templateLine: number;
@@ -143,6 +193,13 @@ export declare function parseCompositionDefinition(rune: string, source: string)
143
193
  * resolves a field against the rune's modifier values, exactly as it does for a
144
194
  * tree-owning rune — which must declare the same attributes as modifiers for
145
195
  * its own blocks to fill.
196
+ *
197
+ * An enum attribute the template only forwards to a placed rune
198
+ * (`{% section media-position=$attrs["media-position"] %}`) is that rune's
199
+ * input, not a modifier of the composition: as a `data-*` on the empty root it
200
+ * would match the dimension rules meant for the rune it is forwarded to — a
201
+ * `data-media-position="cover"` root is laid out as a cover well. It stays in
202
+ * the field bag, which the schema row and registration read.
146
203
  */
147
204
  export declare function composedRuneConfig(def: CompositionDefinition): RuneConfig;
148
205
  /** One rune as the catalog-wide checks see it. */
@@ -1 +1 @@
1
- {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lib/composition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lib/composition.ts"],"names":[],"mappings":"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"}