@refrakt-md/runes 0.38.0 → 0.40.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 (106) hide show
  1. package/dist/attribute-presets.d.ts +3 -2
  2. package/dist/attribute-presets.d.ts.map +1 -1
  3. package/dist/attribute-presets.js +2 -1
  4. package/dist/attribute-presets.js.map +1 -1
  5. package/dist/collection-helpers.d.ts +21 -2
  6. package/dist/collection-helpers.d.ts.map +1 -1
  7. package/dist/collection-helpers.js +72 -15
  8. package/dist/collection-helpers.js.map +1 -1
  9. package/dist/composed-rune.d.ts +59 -0
  10. package/dist/composed-rune.d.ts.map +1 -0
  11. package/dist/composed-rune.js +129 -0
  12. package/dist/composed-rune.js.map +1 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +73 -40
  15. package/dist/config.js.map +1 -1
  16. package/dist/data-pipeline.d.ts +24 -10
  17. package/dist/data-pipeline.d.ts.map +1 -1
  18. package/dist/data-pipeline.js +34 -56
  19. package/dist/data-pipeline.js.map +1 -1
  20. package/dist/file-ref-resolve.js +9 -13
  21. package/dist/file-ref-resolve.js.map +1 -1
  22. package/dist/index.d.ts +14 -4
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +19 -5
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/composition.d.ts +152 -0
  27. package/dist/lib/composition.d.ts.map +1 -0
  28. package/dist/lib/composition.js +1120 -0
  29. package/dist/lib/composition.js.map +1 -0
  30. package/dist/lib/index.d.ts +63 -4
  31. package/dist/lib/index.d.ts.map +1 -1
  32. package/dist/lib/index.js +137 -8
  33. package/dist/lib/index.js.map +1 -1
  34. package/dist/lib/preprocess.d.ts +64 -0
  35. package/dist/lib/preprocess.d.ts.map +1 -0
  36. package/dist/lib/preprocess.js +72 -0
  37. package/dist/lib/preprocess.js.map +1 -0
  38. package/dist/lib/registers.d.ts +132 -0
  39. package/dist/lib/registers.d.ts.map +1 -0
  40. package/dist/lib/registers.js +329 -0
  41. package/dist/lib/registers.js.map +1 -0
  42. package/dist/lib/resolver.d.ts +21 -1
  43. package/dist/lib/resolver.d.ts.map +1 -1
  44. package/dist/lib/resolver.js +41 -18
  45. package/dist/lib/resolver.js.map +1 -1
  46. package/dist/lib/schema-side-table.d.ts +26 -0
  47. package/dist/lib/schema-side-table.d.ts.map +1 -0
  48. package/dist/lib/schema-side-table.js +34 -0
  49. package/dist/lib/schema-side-table.js.map +1 -0
  50. package/dist/lib/schema-table.d.ts +59 -9
  51. package/dist/lib/schema-table.d.ts.map +1 -1
  52. package/dist/lib/schema-table.js +158 -22
  53. package/dist/lib/schema-table.js.map +1 -1
  54. package/dist/lib/slot-markers.d.ts +38 -0
  55. package/dist/lib/slot-markers.d.ts.map +1 -0
  56. package/dist/lib/slot-markers.js +105 -0
  57. package/dist/lib/slot-markers.js.map +1 -0
  58. package/dist/lib/slots.d.ts +99 -0
  59. package/dist/lib/slots.d.ts.map +1 -0
  60. package/dist/lib/slots.js +448 -0
  61. package/dist/lib/slots.js.map +1 -0
  62. package/dist/plugins.d.ts +3 -0
  63. package/dist/plugins.d.ts.map +1 -1
  64. package/dist/plugins.js +53 -4
  65. package/dist/plugins.js.map +1 -1
  66. package/dist/reference.d.ts +18 -0
  67. package/dist/reference.d.ts.map +1 -1
  68. package/dist/reference.js +34 -1
  69. package/dist/reference.js.map +1 -1
  70. package/dist/registers-pipeline.d.ts +51 -0
  71. package/dist/registers-pipeline.d.ts.map +1 -0
  72. package/dist/registers-pipeline.js +224 -0
  73. package/dist/registers-pipeline.js.map +1 -0
  74. package/dist/schema-row.d.ts +5 -0
  75. package/dist/schema-row.d.ts.map +1 -1
  76. package/dist/schema-row.js +1 -0
  77. package/dist/schema-row.js.map +1 -1
  78. package/dist/tags/data.d.ts +2 -2
  79. package/dist/tags/data.d.ts.map +1 -1
  80. package/dist/tags/data.js +6 -4
  81. package/dist/tags/data.js.map +1 -1
  82. package/dist/tags/figure.d.ts +10 -4
  83. package/dist/tags/figure.d.ts.map +1 -1
  84. package/dist/tags/figure.js +65 -20
  85. package/dist/tags/figure.js.map +1 -1
  86. package/dist/tags/include.d.ts +51 -7
  87. package/dist/tags/include.d.ts.map +1 -1
  88. package/dist/tags/include.js +216 -7
  89. package/dist/tags/include.js.map +1 -1
  90. package/dist/tags/sandbox.d.ts.map +1 -1
  91. package/dist/tags/sandbox.js +13 -3
  92. package/dist/tags/sandbox.js.map +1 -1
  93. package/dist/tags/snippet.d.ts +9 -10
  94. package/dist/tags/snippet.d.ts.map +1 -1
  95. package/dist/tags/snippet.js +213 -10
  96. package/dist/tags/snippet.js.map +1 -1
  97. package/dist/universal-attributes.d.ts +1 -1
  98. package/package.json +3 -3
  99. package/dist/include-pipeline.d.ts +0 -52
  100. package/dist/include-pipeline.d.ts.map +0 -1
  101. package/dist/include-pipeline.js +0 -206
  102. package/dist/include-pipeline.js.map +0 -1
  103. package/dist/snippet-pipeline.d.ts +0 -44
  104. package/dist/snippet-pipeline.d.ts.map +0 -1
  105. package/dist/snippet-pipeline.js +0 -307
  106. package/dist/snippet-pipeline.js.map +0 -1
@@ -19,7 +19,8 @@
19
19
  * The `refrakt reference` output will then identify attributes coming from
20
20
  * that record as inherited from your named preset.
21
21
  */
22
- import type { Schema, SchemaAttribute } from '@markdoc/markdoc';
22
+ import type { SchemaAttribute } from '@markdoc/markdoc';
23
+ import { SchemaSideTable } from './lib/schema-side-table.js';
23
24
  export interface AttributePresetMetadata {
24
25
  /** Short, human-readable preset name (e.g., `"split layout"`). */
25
26
  name: string;
@@ -41,7 +42,7 @@ export declare function lookupAttributePreset(record: object): AttributePresetMe
41
42
  * Map a Markdoc schema back to the `base:` record it was built from.
42
43
  * Populated by `createContentModelSchema()` when `base:` is provided.
43
44
  */
44
- export declare const schemaBasePresets: WeakMap<Schema, Record<string, SchemaAttribute>>;
45
+ export declare const schemaBasePresets: SchemaSideTable<Record<string, SchemaAttribute>>;
45
46
  /** Names of the universal attributes auto-merged into every content-model schema. */
46
47
  export declare const UNIVERSAL_ATTRIBUTE_NAMES: ReadonlySet<string>;
47
48
  //# sourceMappingURL=attribute-presets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-presets.d.ts","sourceRoot":"","sources":["../src/attribute-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACvC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACpB;AAKD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACvC,QAAQ,EAAE,uBAAuB,GAC/B,IAAI,CAEN;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAEzF;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,kDAAyD,CAAC;AAExF,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAsCxD,CAAC"}
1
+ {"version":3,"file":"attribute-presets.d.ts","sourceRoot":"","sources":["../src/attribute-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAU,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACvC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACpB;AAKD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACvC,QAAQ,EAAE,uBAAuB,GAC/B,IAAI,CAEN;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAEzF;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,kDAAyD,CAAC;AAExF,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAsCxD,CAAC"}
@@ -19,6 +19,7 @@
19
19
  * The `refrakt reference` output will then identify attributes coming from
20
20
  * that record as inherited from your named preset.
21
21
  */
22
+ import { SchemaSideTable } from './lib/schema-side-table.js';
22
23
  /** Reference-identity map — a preset is matched by the exact record object. */
23
24
  const presets = new Map();
24
25
  /**
@@ -40,7 +41,7 @@ export function lookupAttributePreset(record) {
40
41
  * Map a Markdoc schema back to the `base:` record it was built from.
41
42
  * Populated by `createContentModelSchema()` when `base:` is provided.
42
43
  */
43
- export const schemaBasePresets = new WeakMap();
44
+ export const schemaBasePresets = new SchemaSideTable();
44
45
  /** Names of the universal attributes auto-merged into every content-model schema. */
45
46
  export const UNIVERSAL_ATTRIBUTE_NAMES = new Set([
46
47
  'tint',
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-presets.js","sourceRoot":"","sources":["../src/attribute-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,+EAA+E;AAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACtC,MAAuC,EACvC,QAAiC;IAEjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,MAAc;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA2C,CAAC;AAExF,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACrE,MAAM;IACN,WAAW;IACX,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,OAAO;IACP,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,SAAS;IACT,OAAO;IACP,QAAQ;IACR,kBAAkB;IAClB,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,YAAY;CACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"attribute-presets.js","sourceRoot":"","sources":["../src/attribute-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAS7D,+EAA+E;AAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACtC,MAAuC,EACvC,QAAiC;IAEjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,MAAc;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAmC,CAAC;AAExF,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACrE,MAAM;IACN,WAAW;IACX,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,OAAO;IACP,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,SAAS;IACT,OAAO;IACP,QAAQ;IACR,kBAAkB;IAClB,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,YAAY;CACZ,CAAC,CAAC"}
@@ -60,7 +60,18 @@ export declare class Ordering {
60
60
  export declare function buildOrdering(embedConfig: CollectionEmbedConfig | undefined): Ordering;
61
61
  export declare function entityUrl(e: EntityRegistration): string;
62
62
  export declare function entityTitle(e: EntityRegistration): string;
63
+ /** A field rendered for display — an array is joined with `, `. Not a
64
+ * grouping or sorting key: a multi-value field reads as one combined string
65
+ * here (BUG-025); use {@link fieldMembers} / {@link groupKeys} for that. */
63
66
  export declare function fieldValue(e: EntityRegistration, field: string): string;
67
+ /** A field's individual values — the split the filter side applies
68
+ * (`candidates()` in `field-match.ts`): a genuine array fans out by element, a
69
+ * comma-string by member, each trimmed. Empty members are dropped and repeats
70
+ * collapse, so `"a, , a, b"` is `['a', 'b']` and a missing value is `[]`. */
71
+ export declare function fieldMembers(e: EntityRegistration, field: string): string[];
72
+ /** The groups an entity joins under `group="<field>"` — one per member of a
73
+ * multi-value field (BUG-025), or `(none)` when it carries no value. */
74
+ export declare function groupKeys(e: EntityRegistration, field: string): string[];
64
75
  /** A title link to an entity, or a plain span when it has no URL. The BEM
65
76
  * block is the caller's (collection / relationships). */
66
77
  export declare function titleLink(e: EntityRegistration, block: string): TagNode;
@@ -91,11 +102,19 @@ export declare function projectItem(e: EntityRegistration, opts?: {
91
102
  /** Sort entities by a `sort` expression (`field`, `-field`, `field-desc`).
92
103
  * With an {@link Ordering}, enum fields sort by domain rank (each entity ranked
93
104
  * within its *own* `(type, field)` order — so mixed-type sets compose); ranked
94
- * items come before unranked, which then fall back to numeric/lexical. */
105
+ * items come before unranked, which then fall back to numeric/lexical.
106
+ *
107
+ * A multi-value field sorts each entity by one representative member, never by
108
+ * the joined string (BUG-025): its smallest member ascending, its largest
109
+ * descending — MongoDB's rule for sorting on an array. With an ordering, a
110
+ * ranked member is preferred over an unranked one. */
95
111
  export declare function sortEntities(entities: EntityRegistration[], sortExpr: string, ordering?: Ordering): EntityRegistration[];
96
112
  /** Group items into an insertion-ordered map keyed by a derived string. */
97
113
  export declare function groupBy<T>(items: T[], keyOf: (item: T) => string): Map<string, T[]>;
98
- /** Group entities by one of their fields (empty → `(none)`). With an
114
+ /** Group entities by one of their fields (empty → `(none)`). A multi-value
115
+ * field fans out (BUG-025): an entity tagged `runes, data` joins both the
116
+ * `runes` and the `data` group, so group sizes can sum past the entity count —
117
+ * a group's size is the number of entities *carrying* that value. With an
99
118
  * {@link Ordering}, groups are emitted in domain order — each group's
100
119
  * representative (minimum) rank across its members, ranked groups first. */
101
120
  export declare function groupEntities(entities: EntityRegistration[], field: string, ordering?: Ordering): Map<string, EntityRegistration[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"collection-helpers.d.ts","sourceRoot":"","sources":["../src/collection-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAQ,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAQ,GAAG,oBAAiB,CAAC;AAC7B,KAAK,OAAO,GAAG,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;AAExC,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAmB5D;AAED;mDACmD;AACnD,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;+EAE2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD;;;gDAG4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED;;+EAE+E;AAC/E,qBAAa,QAAQ;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACjD,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAG1E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIxD;gDAC4C;IAC5C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAKxD;AAED;6EAC6E;AAC7E,wBAAgB,aAAa,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,GAAG,QAAQ,CActF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAGzD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;0DAC0D;AAC1D,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOvE;AAED;8EAC8E;AAC9E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAE9D;AAED;;;;kBAIkB;AAClB,wBAAgB,WAAW,CAC1B,CAAC,EAAE,kBAAkB,EACrB,IAAI,CAAC,EAAE;IACN,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;EAeD;AAED;;;2EAG2E;AAC3E,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,QAAQ,GACjB,kBAAkB,EAAE,CAgCtB;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CASnF;AAED;;6EAE6E;AAC7E,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,QAAQ,GACjB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAanC;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC9B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAED;;;;yEAIyE;AACzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,kBAAkB,EAAE,CAYnF;AAED;4EAC4E;AAC5E,wBAAgB,kBAAkB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,kBAAkB,EAAE,CAGtB"}
1
+ {"version":3,"file":"collection-helpers.d.ts","sourceRoot":"","sources":["../src/collection-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAQ,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAQ,GAAG,oBAAiB,CAAC;AAC7B,KAAK,OAAO,GAAG,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;AAExC,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAmB5D;AAED;mDACmD;AACnD,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;+EAE2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD;;;gDAG4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED;;+EAE+E;AAC/E,qBAAa,QAAQ;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACjD,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAG1E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIxD;gDAC4C;IAC5C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAKxD;AAED;6EAC6E;AAC7E,wBAAgB,aAAa,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,GAAG,QAAQ,CActF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAGzD;AAED;;6EAE6E;AAC7E,wBAAgB,UAAU,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;;;8EAG8E;AAC9E,wBAAgB,YAAY,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAI3E;AAED;yEACyE;AACzE,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAGxE;AAED;0DAC0D;AAC1D,wBAAgB,SAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOvE;AAED;8EAC8E;AAC9E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAE9D;AAED;;;;kBAIkB;AAClB,wBAAgB,WAAW,CAC1B,CAAC,EAAE,kBAAkB,EACrB,IAAI,CAAC,EAAE;IACN,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;EAeD;AAWD;;;;;;;;uDAQuD;AACvD,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,QAAQ,GACjB,kBAAkB,EAAE,CA4CtB;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CASnF;AAED;;;;;6EAK6E;AAC7E,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,QAAQ,GACjB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAoBnC;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC9B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAED;;;;yEAIyE;AACzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,kBAAkB,EAAE,CAYnF;AAED;4EAC4E;AAC5E,wBAAgB,kBAAkB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,kBAAkB,EAAE,CAGtB"}
@@ -88,12 +88,30 @@ export function entityTitle(e) {
88
88
  const d = e.data;
89
89
  return String(d.title ?? d.name ?? e.id);
90
90
  }
91
+ /** A field rendered for display — an array is joined with `, `. Not a
92
+ * grouping or sorting key: a multi-value field reads as one combined string
93
+ * here (BUG-025); use {@link fieldMembers} / {@link groupKeys} for that. */
91
94
  export function fieldValue(e, field) {
92
95
  const v = resolveEntityField(e, field);
93
96
  if (Array.isArray(v))
94
97
  return v.join(', ');
95
98
  return String(v ?? '');
96
99
  }
100
+ /** A field's individual values — the split the filter side applies
101
+ * (`candidates()` in `field-match.ts`): a genuine array fans out by element, a
102
+ * comma-string by member, each trimmed. Empty members are dropped and repeats
103
+ * collapse, so `"a, , a, b"` is `['a', 'b']` and a missing value is `[]`. */
104
+ export function fieldMembers(e, field) {
105
+ const v = resolveEntityField(e, field);
106
+ const raw = Array.isArray(v) ? v.map((x) => String(x ?? '')) : String(v ?? '').split(',');
107
+ return [...new Set(raw.map((m) => m.trim()).filter(Boolean))];
108
+ }
109
+ /** The groups an entity joins under `group="<field>"` — one per member of a
110
+ * multi-value field (BUG-025), or `(none)` when it carries no value. */
111
+ export function groupKeys(e, field) {
112
+ const members = fieldMembers(e, field);
113
+ return members.length ? members : ['(none)'];
114
+ }
97
115
  /** A title link to an entity, or a plain span when it has no URL. The BEM
98
116
  * block is the caller's (collection / relationships). */
99
117
  export function titleLink(e, block) {
@@ -129,10 +147,24 @@ export function projectItem(e, opts) {
129
147
  groupCount: opts?.groupCount ?? 0,
130
148
  };
131
149
  }
150
+ /** Order two scalar field values: numeric when both are finite numbers,
151
+ * lexical otherwise. */
152
+ function compareScalar(av, bv) {
153
+ const an = Number(av);
154
+ const bn = Number(bv);
155
+ if (av !== '' && bv !== '' && Number.isFinite(an) && Number.isFinite(bn))
156
+ return an - bn;
157
+ return av.localeCompare(bv);
158
+ }
132
159
  /** Sort entities by a `sort` expression (`field`, `-field`, `field-desc`).
133
160
  * With an {@link Ordering}, enum fields sort by domain rank (each entity ranked
134
161
  * within its *own* `(type, field)` order — so mixed-type sets compose); ranked
135
- * items come before unranked, which then fall back to numeric/lexical. */
162
+ * items come before unranked, which then fall back to numeric/lexical.
163
+ *
164
+ * A multi-value field sorts each entity by one representative member, never by
165
+ * the joined string (BUG-025): its smallest member ascending, its largest
166
+ * descending — MongoDB's rule for sorting on an array. With an ordering, a
167
+ * ranked member is preferred over an unranked one. */
136
168
  export function sortEntities(entities, sortExpr, ordering) {
137
169
  if (!sortExpr)
138
170
  return entities;
@@ -150,10 +182,29 @@ export function sortEntities(entities, sortExpr, ordering) {
150
182
  field = field.slice(0, -4);
151
183
  }
152
184
  const ranked = ordering && entities.some((e) => ordering.order(e.type, field));
185
+ const rankOf = (e, v) => ranked ? ordering.rank(e.type, field, v) : -1;
186
+ // The value each entity sorts by — its own value when single-valued, else
187
+ // the member that sorts first in this direction.
188
+ const keyOf = (e) => {
189
+ const members = fieldMembers(e, field);
190
+ if (members.length < 2)
191
+ return fieldValue(e, field);
192
+ return members.reduce((best, m) => {
193
+ const rm = rankOf(e, m);
194
+ const rb = rankOf(e, best);
195
+ if (rm >= 0 !== rb >= 0)
196
+ return rm >= 0 ? m : best;
197
+ const c = rm >= 0 ? rm - rb : compareScalar(m, best);
198
+ return c * dir < 0 ? m : best;
199
+ });
200
+ };
201
+ const keys = new Map(entities.map((e) => [e, keyOf(e)]));
153
202
  return [...entities].sort((a, b) => {
203
+ const av = keys.get(a);
204
+ const bv = keys.get(b);
154
205
  if (ranked) {
155
- const ra = ordering.rank(a.type, field, fieldValue(a, field));
156
- const rb = ordering.rank(b.type, field, fieldValue(b, field));
206
+ const ra = rankOf(a, av);
207
+ const rb = rankOf(b, bv);
157
208
  const aR = ra >= 0, bR = rb >= 0;
158
209
  if (aR && bR) {
159
210
  if (ra !== rb)
@@ -162,13 +213,7 @@ export function sortEntities(entities, sortExpr, ordering) {
162
213
  else if (aR !== bR)
163
214
  return aR ? -1 : 1; // ranked before unranked, dir-independent
164
215
  }
165
- const av = fieldValue(a, field);
166
- const bv = fieldValue(b, field);
167
- const an = Number(av);
168
- const bn = Number(bv);
169
- if (av !== '' && bv !== '' && Number.isFinite(an) && Number.isFinite(bn))
170
- return (an - bn) * dir;
171
- return av.localeCompare(bv) * dir;
216
+ return compareScalar(av, bv) * dir;
172
217
  });
173
218
  }
174
219
  /** Group items into an insertion-ordered map keyed by a derived string. */
@@ -184,23 +229,35 @@ export function groupBy(items, keyOf) {
184
229
  }
185
230
  return groups;
186
231
  }
187
- /** Group entities by one of their fields (empty → `(none)`). With an
232
+ /** Group entities by one of their fields (empty → `(none)`). A multi-value
233
+ * field fans out (BUG-025): an entity tagged `runes, data` joins both the
234
+ * `runes` and the `data` group, so group sizes can sum past the entity count —
235
+ * a group's size is the number of entities *carrying* that value. With an
188
236
  * {@link Ordering}, groups are emitted in domain order — each group's
189
237
  * representative (minimum) rank across its members, ranked groups first. */
190
238
  export function groupEntities(entities, field, ordering) {
191
- const groups = groupBy(entities, (e) => fieldValue(e, field) || '(none)');
239
+ const groups = new Map();
240
+ for (const e of entities) {
241
+ for (const key of groupKeys(e, field)) {
242
+ const arr = groups.get(key);
243
+ if (arr)
244
+ arr.push(e);
245
+ else
246
+ groups.set(key, [e]);
247
+ }
248
+ }
192
249
  if (!ordering || ![...entities].some((e) => ordering.order(e.type, field)))
193
250
  return groups;
194
- const repRank = (members) => {
251
+ const repRank = (key, members) => {
195
252
  let min = Infinity;
196
253
  for (const m of members) {
197
- const r = ordering.rank(m.type, field, fieldValue(m, field));
254
+ const r = ordering.rank(m.type, field, key);
198
255
  if (r >= 0 && r < min)
199
256
  min = r;
200
257
  }
201
258
  return min;
202
259
  };
203
- const sorted = [...groups.entries()].sort((a, b) => repRank(a[1]) - repRank(b[1]));
260
+ const sorted = [...groups.entries()].sort((a, b) => repRank(...a) - repRank(...b));
204
261
  return new Map(sorted);
205
262
  }
206
263
  /** Render grouped items as an accordion of native `<details>` panels, styled to
@@ -1 +1 @@
1
- {"version":3,"file":"collection-helpers.js","sourceRoot":"","sources":["../src/collection-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection-helpers.js","sourceRoot":"","sources":["../src/collection-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * A composed rune from its definition — SPEC-145, delivered as SPEC-153 D11
3
+ * describes: a `PluginRune` carrying a `template` and no `transform`.
4
+ *
5
+ * Loading definitions from a rune directory (`Plugin.runeDir`, `runes.dir`) is
6
+ * SPEC-153's later steps. Here a definition is a string, and its name is
7
+ * passed beside it — the name a file would have carried (SPEC-153 D9).
8
+ */
9
+ import type { Schema } from '@markdoc/markdoc';
10
+ import type { PluginRune } from '@refrakt-md/types';
11
+ import type { RuneConfig } from '@refrakt-md/transform';
12
+ import type { CompositionDefinition, CompositionOutlineNode } from './lib/composition.js';
13
+ import type { Rune } from './rune.js';
14
+ /** A composed rune, built from its definition. */
15
+ export interface ComposedRune {
16
+ rune: Rune;
17
+ /** The generated, block-less engine config (D2a). */
18
+ config: RuneConfig;
19
+ /** The key the engine finds `config` under. */
20
+ typeName: string;
21
+ definition: CompositionDefinition;
22
+ }
23
+ /**
24
+ * Build a composed rune from a definition: frontmatter declaring its input, a
25
+ * Markdoc body that is its output template. Every check SPEC-145 decides at
26
+ * definition load or schema construction runs here, and a failure names the
27
+ * rune and the thing it rejected.
28
+ */
29
+ export declare function defineComposedRune(name: string, source: string): ComposedRune;
30
+ /**
31
+ * The composed rune a plugin's `template` entry defines, built once per entry.
32
+ * `loadPlugin`, the registration pipeline and tooling all ask for it, and all
33
+ * have to see the same schema: the side tables are keyed by it.
34
+ */
35
+ export declare function composedPluginRune(name: string, entry: PluginRune): ComposedRune;
36
+ /** The Markdoc schema a plugin rune entry renders with — its `transform`, or
37
+ * the one its composition template compiles to. */
38
+ export declare function pluginRuneSchema(name: string, entry: PluginRune): Schema | undefined;
39
+ /** Called once by the package entry, so the catalog check can see core runes
40
+ * without this module importing the entry (which imports it). */
41
+ export declare function registerCoreCatalog(runes: Record<string, Rune>, configs: Record<string, RuneConfig>): void;
42
+ /**
43
+ * Run the composition checks that need every rune in hand — cycles, D9's peer
44
+ * types, D12's required parents — over the core catalog plus the given runes.
45
+ * `mergePlugins` calls it with the merged plugin runes and their configs, so a
46
+ * bad composition fails site assembly, before any page renders.
47
+ */
48
+ export declare function checkComposedCatalog(runes: Record<string, Rune>, configs: Record<string, RuneConfig>): void;
49
+ /** One composed rune as `contracts` records it (D6, D10c). */
50
+ export interface CompositionContract {
51
+ slots: string[];
52
+ outline: CompositionOutlineNode[];
53
+ }
54
+ /** The compositions in a rune catalog, keyed by `data-rune`, for `contracts`. */
55
+ export declare function collectCompositions(runes: Record<string, {
56
+ name: string;
57
+ schema?: Schema;
58
+ }>): Record<string, CompositionContract>;
59
+ //# sourceMappingURL=composed-rune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composed-rune.d.ts","sourceRoot":"","sources":["../src/composed-rune.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAUxD,OAAO,KAAK,EAEX,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,qDAAqD;IACrD,MAAM,EAAE,UAAU,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,qBAAqB,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAwC7E;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,YAAY,CAehF;AAED;oDACoD;AACpD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAIpF;AAQD;kEACkE;AAClE,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACjC,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACjC,IAAI,CAmBN;AAED,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,sBAAsB,EAAE,CAAC;CAClC;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACtD,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAOrC"}
@@ -0,0 +1,129 @@
1
+ import { toKebabCase } from '@refrakt-md/transform';
2
+ import { createContentModelSchema, schemaTables } from './lib/index.js';
3
+ import { checkCompositions, composedRuneConfig, composedTypeName, compositionFor, parseCompositionDefinition, } from './lib/composition.js';
4
+ import { defineRune } from './rune.js';
5
+ /**
6
+ * Build a composed rune from a definition: frontmatter declaring its input, a
7
+ * Markdoc body that is its output template. Every check SPEC-145 decides at
8
+ * definition load or schema construction runs here, and a failure names the
9
+ * rune and the thing it rejected.
10
+ */
11
+ export function defineComposedRune(name, source) {
12
+ const definition = parseCompositionDefinition(name, source);
13
+ let schema;
14
+ try {
15
+ schema = createContentModelSchema({
16
+ attributes: definition.attributes,
17
+ contentModel: definition.contentModel,
18
+ template: {
19
+ rune: name,
20
+ tag: definition.tag,
21
+ ...(definition.aliases ? { aliases: definition.aliases } : {}),
22
+ body: definition.template,
23
+ ...(definition.blocks ? { blocks: Object.keys(definition.blocks) } : {}),
24
+ },
25
+ ...(definition.schema ? { schema: definition.schema } : {}),
26
+ ...(definition.registers ? { registers: definition.registers } : {}),
27
+ ...(definition.provides ? { provides: definition.provides } : {}),
28
+ });
29
+ }
30
+ catch (e) {
31
+ // The schema table's and the registration's own checks report the path
32
+ // inside the declaration; say whose declaration it is.
33
+ const message = e.message;
34
+ if (message.startsWith(`Rune "${name}"`))
35
+ throw e;
36
+ throw new Error(`Rune "${name}": ${message}`);
37
+ }
38
+ const config = composedRuneConfig(definition);
39
+ const typeName = composedTypeName(name);
40
+ const info = compositionFor(schema);
41
+ info.config = config;
42
+ info.typeName = typeName;
43
+ const rune = defineRune({
44
+ name,
45
+ schema,
46
+ typeName,
47
+ ...(definition.aliases ? { aliases: definition.aliases } : {}),
48
+ description: definition.description ?? `Composed rune "${name}"`,
49
+ });
50
+ return { rune, config, typeName, definition };
51
+ }
52
+ const composedEntries = new WeakMap();
53
+ /**
54
+ * The composed rune a plugin's `template` entry defines, built once per entry.
55
+ * `loadPlugin`, the registration pipeline and tooling all ask for it, and all
56
+ * have to see the same schema: the side tables are keyed by it.
57
+ */
58
+ export function composedPluginRune(name, entry) {
59
+ let byName = composedEntries.get(entry);
60
+ if (!byName) {
61
+ byName = new Map();
62
+ composedEntries.set(entry, byName);
63
+ }
64
+ let built = byName.get(name);
65
+ if (!built) {
66
+ if (typeof entry.template !== 'string') {
67
+ throw new Error(`Rune "${name}" carries no composition template.`);
68
+ }
69
+ built = defineComposedRune(name, entry.template);
70
+ byName.set(name, built);
71
+ }
72
+ return built;
73
+ }
74
+ /** The Markdoc schema a plugin rune entry renders with — its `transform`, or
75
+ * the one its composition template compiles to. */
76
+ export function pluginRuneSchema(name, entry) {
77
+ if (entry.transform)
78
+ return entry.transform;
79
+ if (entry.template !== undefined)
80
+ return composedPluginRune(name, entry).rune.schema;
81
+ return undefined;
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // The catalog-wide checks
85
+ // ---------------------------------------------------------------------------
86
+ let coreCatalog;
87
+ /** Called once by the package entry, so the catalog check can see core runes
88
+ * without this module importing the entry (which imports it). */
89
+ export function registerCoreCatalog(runes, configs) {
90
+ coreCatalog = { runes, configs };
91
+ }
92
+ /**
93
+ * Run the composition checks that need every rune in hand — cycles, D9's peer
94
+ * types, D12's required parents — over the core catalog plus the given runes.
95
+ * `mergePlugins` calls it with the merged plugin runes and their configs, so a
96
+ * bad composition fails site assembly, before any page renders.
97
+ */
98
+ export function checkComposedCatalog(runes, configs) {
99
+ const allRunes = { ...coreCatalog?.runes, ...runes };
100
+ if (!Object.values(allRunes).some((r) => compositionFor(r.schema)))
101
+ return;
102
+ const byKebab = new Map();
103
+ for (const [key, cfg] of Object.entries({ ...coreCatalog?.configs, ...configs })) {
104
+ byKebab.set(toKebabCase(key), cfg);
105
+ }
106
+ const catalog = {};
107
+ for (const [name, rune] of Object.entries(allRunes)) {
108
+ const config = (rune.typeName && byKebab.get(toKebabCase(rune.typeName))) || byKebab.get(name);
109
+ catalog[name] = {
110
+ schema: rune.schema,
111
+ ...(rune.typeName ? { dataRune: toKebabCase(rune.typeName) } : {}),
112
+ ...(rune.seoType ? { seoType: rune.seoType } : {}),
113
+ aliases: rune.aliases,
114
+ ...(config?.requiresParent ? { requiresParent: config.requiresParent } : {}),
115
+ };
116
+ }
117
+ checkCompositions(catalog, (schema) => schemaTables.get(schema));
118
+ }
119
+ /** The compositions in a rune catalog, keyed by `data-rune`, for `contracts`. */
120
+ export function collectCompositions(runes) {
121
+ const out = {};
122
+ for (const rune of Object.values(runes)) {
123
+ const info = compositionFor(rune.schema);
124
+ if (info)
125
+ out[info.rune] = { slots: [...info.slots], outline: info.outline };
126
+ }
127
+ return out;
128
+ }
129
+ //# sourceMappingURL=composed-rune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composed-rune.js","sourceRoot":"","sources":["../src/composed-rune.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA+B,MAAM,uBAAuB,CAAC;AAUtF,OAAO,KAAK,EACX,mBAAmB,EAEnB,cAAc,EAEd,eAAe,EACf,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAoE9D;gFACgF;AAChF,eAAO,MAAM,UAAU,EAAE,WA6pBxB,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,UAAU,aAAa,CAAC;AAIrC,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,EAAE,CAAC;CACzB;AAs1CD,UAAU,YAAY;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAuKD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE;IACT,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,EAAE,GAAG,CACd,MAAM,EACN;QACC,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CACD,CAAC;IACF,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC;;;uBAGmB;IACnB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACrC,EACD,GAAG,EAAE,eAAe;AACpB;;yEAEyE;AACzE,cAAc,CAAC,EAAE,OAAO,EAAE,GACxB,OAAO,CA0BT;AAED,2DAA2D;AAC3D,MAAM,WAAW,wBAAwB;IACxC;;8DAE0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC;;kFAE8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;6CACyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;2EAIuE;IACvE,WAAW,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC;;;yEAGiE;QACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;2CACmC;QACnC,YAAY,CAAC,EAAE,YAAY,CAAC;KAC5B,CAAC;CACF;AA6BD,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,wBAA6B,GAAG,mBAAmB,CAkUhG;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,mBAA+C,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA+B,MAAM,uBAAuB,CAAC;AAUtF,OAAO,KAAK,EACX,mBAAmB,EAEnB,cAAc,EAEd,eAAe,EACf,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAqE9D;gFACgF;AAChF,eAAO,MAAM,UAAU,EAAE,WA4pBxB,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,UAAU,aAAa,CAAC;AAIrC,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,EAAE,CAAC;CACzB;AA63CD,UAAU,YAAY;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAuKD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE;IACT,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,EAAE,GAAG,CACd,MAAM,EACN;QACC,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CACD,CAAC;IACF,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC;;;uBAGmB;IACnB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACrC,EACD,GAAG,EAAE,eAAe;AACpB;;yEAEyE;AACzE,cAAc,CAAC,EAAE,OAAO,EAAE,GACxB,OAAO,CA0BT;AAED,2DAA2D;AAC3D,MAAM,WAAW,wBAAwB;IACxC;;8DAE0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC;;kFAE8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;6CACyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;2EAIuE;IACvE,WAAW,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC;;;yEAGiE;QACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;2CACmC;QACnC,YAAY,CAAC,EAAE,YAAY,CAAC;KAC5B,CAAC;CACF;AA6BD,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,wBAA6B,GAAG,mBAAmB,CA0ThG;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,mBAA+C,CAAC"}