@refrakt-md/runes 0.39.0 → 0.41.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 (68) 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/composed-rune.d.ts +61 -0
  6. package/dist/composed-rune.d.ts.map +1 -0
  7. package/dist/composed-rune.js +158 -0
  8. package/dist/composed-rune.js.map +1 -0
  9. package/dist/index.d.ts +12 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +15 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/composition-errors.d.ts +80 -0
  14. package/dist/lib/composition-errors.d.ts.map +1 -0
  15. package/dist/lib/composition-errors.js +82 -0
  16. package/dist/lib/composition-errors.js.map +1 -0
  17. package/dist/lib/composition.d.ts +167 -0
  18. package/dist/lib/composition.d.ts.map +1 -0
  19. package/dist/lib/composition.js +1182 -0
  20. package/dist/lib/composition.js.map +1 -0
  21. package/dist/lib/index.d.ts +30 -5
  22. package/dist/lib/index.d.ts.map +1 -1
  23. package/dist/lib/index.js +107 -16
  24. package/dist/lib/index.js.map +1 -1
  25. package/dist/lib/preprocess.d.ts +3 -2
  26. package/dist/lib/preprocess.d.ts.map +1 -1
  27. package/dist/lib/preprocess.js +2 -1
  28. package/dist/lib/preprocess.js.map +1 -1
  29. package/dist/lib/registers.d.ts +2 -2
  30. package/dist/lib/registers.d.ts.map +1 -1
  31. package/dist/lib/registers.js +2 -1
  32. package/dist/lib/registers.js.map +1 -1
  33. package/dist/lib/resolver.d.ts +32 -4
  34. package/dist/lib/resolver.d.ts.map +1 -1
  35. package/dist/lib/resolver.js +87 -33
  36. package/dist/lib/resolver.js.map +1 -1
  37. package/dist/lib/schema-side-table.d.ts +26 -0
  38. package/dist/lib/schema-side-table.d.ts.map +1 -0
  39. package/dist/lib/schema-side-table.js +34 -0
  40. package/dist/lib/schema-side-table.js.map +1 -0
  41. package/dist/lib/schema-table.d.ts +16 -1
  42. package/dist/lib/schema-table.d.ts.map +1 -1
  43. package/dist/lib/schema-table.js +101 -3
  44. package/dist/lib/schema-table.js.map +1 -1
  45. package/dist/lib/slot-markers.d.ts +38 -0
  46. package/dist/lib/slot-markers.d.ts.map +1 -0
  47. package/dist/lib/slot-markers.js +105 -0
  48. package/dist/lib/slot-markers.js.map +1 -0
  49. package/dist/plugins.d.ts +31 -9
  50. package/dist/plugins.d.ts.map +1 -1
  51. package/dist/plugins.js +242 -64
  52. package/dist/plugins.js.map +1 -1
  53. package/dist/project-runes.d.ts +53 -0
  54. package/dist/project-runes.d.ts.map +1 -0
  55. package/dist/project-runes.js +85 -0
  56. package/dist/project-runes.js.map +1 -0
  57. package/dist/registers-pipeline.d.ts +1 -0
  58. package/dist/registers-pipeline.d.ts.map +1 -1
  59. package/dist/registers-pipeline.js +7 -1
  60. package/dist/registers-pipeline.js.map +1 -1
  61. package/dist/rune-dir.d.ts +52 -0
  62. package/dist/rune-dir.d.ts.map +1 -0
  63. package/dist/rune-dir.js +90 -0
  64. package/dist/rune-dir.js.map +1 -0
  65. package/dist/tags/sandbox.d.ts.map +1 -1
  66. package/dist/tags/sandbox.js +15 -3
  67. package/dist/tags/sandbox.js.map +1 -1
  68. package/package.json +3 -3
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Every construction-time error a composed rune definition can produce, by
3
+ * stable code — the compiler's (`composition.ts`), its wrapper's
4
+ * (`composed-rune.ts`), the catalog check's, and the loaders' (`rune-dir.ts`,
5
+ * `project-runes.ts`, the `runeDir`/precedence/`runes.local` paths in
6
+ * `plugins.ts`).
7
+ *
8
+ * The codes are what the authoring guide documents
9
+ * (`site/content/extend/rune-authoring/composed-runes.md`, "Errors"), one entry
10
+ * each with its cause and its fix. `composed-runes-guide.test.ts` fails when a
11
+ * throw site in those files carries no code, when a code has no docs entry, and
12
+ * when the docs list a code that no longer exists — so an error cannot be added
13
+ * without being documented.
14
+ */
15
+ export const COMPOSITION_ERRORS = {
16
+ // The definition file and its frontmatter
17
+ 'name-not-kebab': 'The rune name (the file name) is not kebab-case.',
18
+ 'no-frontmatter': 'The definition has no `---` frontmatter block.',
19
+ 'frontmatter-yaml': 'The frontmatter is not valid YAML, or not a mapping.',
20
+ 'name-restated': 'The frontmatter restates the rune’s name (`rune:` / `name:`).',
21
+ 'style-key': 'The frontmatter declares styles (`css`, `block`, `class`, …).',
22
+ 'second-emit-path': 'The definition declares another emit path (`transform`, `emits`, `slots`).',
23
+ 'layout-key': 'The frontmatter declares `layout`.',
24
+ 'unknown-key': 'The frontmatter has a key a definition does not take.',
25
+ 'invalid-value': 'A frontmatter value has the wrong shape (`tag`, `aliases`, `schema`, …).',
26
+ 'attribute-invalid': 'An `attributes` entry is malformed.',
27
+ 'attribute-reserved': 'An enum attribute would render as a `data-*` the engine writes itself.',
28
+ 'content-model-type': '`content.type` is not `sequence` or `sections`.',
29
+ 'content-model-invalid': 'The `content` model, or one of its fields, is malformed.',
30
+ 'schema-invalid': 'The `schema` table is rejected by its own checks.',
31
+ 'registers-invalid': 'The `registers` declaration is rejected by its own checks.',
32
+ // The template
33
+ 'template-parse': 'Markdoc cannot parse the template.',
34
+ 'preprocessor-tag': 'The template uses `{% data %}`, `{% snippet %}` or `{% include %}`.',
35
+ 'attrs-undeclared': '`$attrs.x` names no declared attribute.',
36
+ 'each-outside-slot': '`$each` is used outside an `each` slot.',
37
+ 'each-field-not-emitted': '`$each.x` names a field the content model does not emit.',
38
+ 'slot-invalid': 'A `{% slot %}` has an attribute other than `name` and `each`, or a bad value.',
39
+ 'bare-slot-misplaced': 'A bare `{% slot /%}` is outside an `each` slot, iterates, or has fallback.',
40
+ 'slot-inside-each': 'A named slot is placed inside an `each` slot.',
41
+ 'slot-unknown-field': 'A slot names no field of the content model.',
42
+ 'slot-placed-twice': 'The same slot is placed twice.',
43
+ 'each-on-single-field': '`each` is used on a field that holds one value, not a list.',
44
+ 'each-item-unplaced': 'An `each` slot never places its item with a bare `{% slot /%}`.',
45
+ 'field-unplaced': 'A content-model field is placed by no slot.',
46
+ 'metablock-invalid': 'A `{% metablock %}` is malformed: no name, content, an extra attribute, or inline.',
47
+ 'metablock-inside-each': 'A `{% metablock %}` is placed inside an `each` slot.',
48
+ 'metablock-undeclared': 'A `{% metablock %}` names no declared block.',
49
+ 'metablock-placed-twice': 'The same meta block is placed twice.',
50
+ // Across the catalog, once every rune is loaded
51
+ 'composition-cycle': 'A composed rune places itself, directly or through another.',
52
+ 'parent-required': 'The template places a rune that requires a parent it does not get.',
53
+ 'peer-schema-type': 'A rune declaring a schema type places a rune declaring a peer type.',
54
+ // Where definitions are loaded from
55
+ 'file-name-invalid': 'A `.md` file in a rune directory is not named `<rune>.md`.',
56
+ 'file-unreadable': 'A definition file is listed but cannot be read.',
57
+ 'rune-dir-invalid': 'A plugin’s `runeDir` is not a path inside its package.',
58
+ 'rune-dir-unreadable': 'A plugin’s declared rune directory cannot be read.',
59
+ 'rune-dir-empty': 'A plugin’s declared rune directory holds no definitions.',
60
+ 'package-unresolvable': 'A plugin’s `<pkg>/package.json` does not resolve.',
61
+ 'rune-defined-twice': 'A plugin defines a rune in its `runeDir` and in `Plugin.runes`.',
62
+ 'project-schema': 'A project definition declares `schema`.',
63
+ 'project-core-name': 'A project rune takes a core rune’s name or alias.',
64
+ 'project-plugin-name': 'A project rune takes a plugin rune’s name with no `runes.prefer` entry.',
65
+ 'local-definition': '`runes.local` is given a composed rune definition.',
66
+ 'template-entry-invalid': 'A `Plugin.runes` entry’s `template` is not a definition string, or sits beside a `transform` or a theme config.',
67
+ };
68
+ /**
69
+ * A definition or template the compiler rejects. `code` is its entry in
70
+ * {@link COMPOSITION_ERRORS}; `line` is the 1-based line in the definition's
71
+ * source where the problem is, when it can be located: the template node it
72
+ * names, or the frontmatter key it is about. `refrakt validate` reports both
73
+ * with the file (SPEC-153, WORK-634).
74
+ */
75
+ export class CompositionError extends Error {
76
+ constructor(code, message) {
77
+ super(message);
78
+ this.name = 'CompositionError';
79
+ this.code = code;
80
+ }
81
+ }
82
+ //# sourceMappingURL=composition-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition-errors.js","sourceRoot":"","sources":["../../src/lib/composition-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,0CAA0C;IAC1C,gBAAgB,EAAE,kDAAkD;IACpE,gBAAgB,EAAE,gDAAgD;IAClE,kBAAkB,EAAE,sDAAsD;IAC1E,eAAe,EAAE,+DAA+D;IAChF,WAAW,EAAE,+DAA+D;IAC5E,kBAAkB,EAAE,4EAA4E;IAChG,YAAY,EAAE,oCAAoC;IAClD,aAAa,EAAE,uDAAuD;IACtE,eAAe,EAAE,0EAA0E;IAC3F,mBAAmB,EAAE,qCAAqC;IAC1D,oBAAoB,EAAE,wEAAwE;IAC9F,oBAAoB,EAAE,iDAAiD;IACvE,uBAAuB,EAAE,0DAA0D;IACnF,gBAAgB,EAAE,mDAAmD;IACrE,mBAAmB,EAAE,4DAA4D;IAEjF,eAAe;IACf,gBAAgB,EAAE,oCAAoC;IACtD,kBAAkB,EAAE,qEAAqE;IACzF,kBAAkB,EAAE,yCAAyC;IAC7D,mBAAmB,EAAE,yCAAyC;IAC9D,wBAAwB,EAAE,0DAA0D;IACpF,cAAc,EAAE,+EAA+E;IAC/F,qBAAqB,EACpB,4EAA4E;IAC7E,kBAAkB,EAAE,+CAA+C;IACnE,oBAAoB,EAAE,6CAA6C;IACnE,mBAAmB,EAAE,gCAAgC;IACrD,sBAAsB,EAAE,6DAA6D;IACrF,oBAAoB,EAAE,iEAAiE;IACvF,gBAAgB,EAAE,6CAA6C;IAC/D,mBAAmB,EAClB,oFAAoF;IACrF,uBAAuB,EAAE,sDAAsD;IAC/E,sBAAsB,EAAE,8CAA8C;IACtE,wBAAwB,EAAE,sCAAsC;IAEhE,gDAAgD;IAChD,mBAAmB,EAAE,6DAA6D;IAClF,iBAAiB,EAAE,oEAAoE;IACvF,kBAAkB,EAAE,qEAAqE;IAEzF,oCAAoC;IACpC,mBAAmB,EAAE,4DAA4D;IACjF,iBAAiB,EAAE,iDAAiD;IACpE,kBAAkB,EAAE,wDAAwD;IAC5E,qBAAqB,EAAE,oDAAoD;IAC3E,gBAAgB,EAAE,0DAA0D;IAC5E,sBAAsB,EAAE,mDAAmD;IAC3E,oBAAoB,EAAE,iEAAiE;IACvF,gBAAgB,EAAE,yCAAyC;IAC3D,mBAAmB,EAAE,mDAAmD;IACxE,qBAAqB,EAAE,yEAAyE;IAChG,kBAAkB,EAAE,oDAAoD;IACxE,wBAAwB,EACvB,iHAAiH;CACzG,CAAC;AAIX;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAO1C,YAAY,IAA0B,EAAE,OAAe;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;CACD"}
@@ -0,0 +1,167 @@
1
+ import type { Config, Node, RenderableTreeNodes, Schema, SchemaAttribute } from '@markdoc/markdoc';
2
+ import type { ContentModel, ResolvedContent } from '@refrakt-md/types';
3
+ import type { RuneConfig } from '@refrakt-md/transform';
4
+ import type { SchemaTable } from './schema-table.js';
5
+ import { SchemaSideTable } from './schema-side-table.js';
6
+ import type { RegistersDeclaration } from './registers.js';
7
+ /**
8
+ * A composition template, as `createContentModelSchema` receives it — the third
9
+ * of D5's three mutually exclusive emit paths, beside `transform` and `emits`.
10
+ */
11
+ export interface CompositionTemplate {
12
+ /** The composed rune's kebab-case name — its `data-rune`. */
13
+ rune: string;
14
+ /** The root element. */
15
+ tag: string;
16
+ /** Other names the rune answers to. A template placing one of them places itself. */
17
+ aliases?: readonly string[];
18
+ /** The Markdoc template body. */
19
+ body: string;
20
+ /** The `blocks` the rune declares — what `{% metablock %}` may name (D7). */
21
+ blocks?: readonly string[];
22
+ }
23
+ /** One node of a composition's expansion, as the contract records it (D6). */
24
+ export interface CompositionOutlineNode {
25
+ /** A rune the template places. */
26
+ rune?: string;
27
+ /** A slot, by name; `''` for a bare `{% slot /%}` inside an `each`. */
28
+ slot?: string;
29
+ /** The slot iterates its field. */
30
+ each?: true;
31
+ /** The slot carries fallback content. */
32
+ fallback?: true;
33
+ /** A Markdoc node the template writes itself (`heading`, `paragraph`, …). */
34
+ node?: string;
35
+ /** `if` — a branch the template takes on an attribute. */
36
+ conditional?: true;
37
+ /** A declared meta block placed with `{% metablock %}` (D7). */
38
+ metablock?: string;
39
+ children?: CompositionOutlineNode[];
40
+ }
41
+ /** What construction learned about a composition — recorded per schema. */
42
+ export interface CompositionInfo {
43
+ rune: string;
44
+ /** Slot names in template order — the composed rune's published part names (D10c). */
45
+ slots: string[];
46
+ /** Every rune the template places, each with the nearest placed rune around it. */
47
+ placements: Array<{
48
+ rune: string;
49
+ parent?: string;
50
+ }>;
51
+ /** The template's structure, for `contracts` (D6). */
52
+ outline: CompositionOutlineNode[];
53
+ /** The schema type the composed rune declares, if any. */
54
+ schemaType?: string;
55
+ /** The generated block-less config (D2a), when built from a definition. */
56
+ config?: RuneConfig;
57
+ /** The config key the engine finds it under. */
58
+ typeName?: string;
59
+ }
60
+ /** Compositions by schema — the same pattern as `schemaTables`: tooling has only
61
+ * the schema to read from. */
62
+ export declare const schemaCompositions: SchemaSideTable<CompositionInfo>;
63
+ /** The composition a schema renders, if it is one. */
64
+ export declare function compositionFor(schema: unknown): CompositionInfo | undefined;
65
+ /** Tags a template may not contain: they resolve at preprocess, a stage a
66
+ * template comes after (D4). `include` is the route for a repeated block that
67
+ * needs one. */
68
+ export { CompositionError, COMPOSITION_ERRORS } from './composition-errors.js';
69
+ export type { CompositionErrorCode } from './composition-errors.js';
70
+ /**
71
+ * The 0-based line, within a YAML frontmatter block, of the key at `path` —
72
+ * each key searched for after the line its parent was found on. A best-effort
73
+ * locator for error reporting, not a YAML parser: `undefined` when not found.
74
+ */
75
+ export declare function frontmatterKeyLine(frontmatter: string, path: readonly string[]): number | undefined;
76
+ /** Schema types a placed rune may emit under a composed type: a media object
77
+ * that becomes a property of the outer entity, not a peer of it (D9). */
78
+ export declare const SUBORDINATE_SCHEMA_TYPES: ReadonlySet<string>;
79
+ export interface CompiledComposition {
80
+ /** The transform `createContentModelSchema` calls where it would call `transform`. */
81
+ transform: (resolved: ResolvedContent, attrs: Record<string, any>, config: Config, node: Node) => RenderableTreeNodes;
82
+ info: CompositionInfo;
83
+ }
84
+ export interface CompileCompositionOptions {
85
+ contentModel: ContentModel | ((attrs: Record<string, any>) => ContentModel);
86
+ /** The attributes the rune declares — what `$attrs` may name. */
87
+ attributes: readonly string[];
88
+ /** The rune's schema table, for its declared type (D9). */
89
+ schema?: SchemaTable;
90
+ /** The rune's registration, for D10b's copy into the field bag. */
91
+ registers?: RegistersDeclaration;
92
+ }
93
+ /**
94
+ * Check a template against the rune's content model and attributes, and build
95
+ * the transform that renders it. Called once, at schema construction. Throws,
96
+ * naming the rune and the offending tag, slot, field or name, rather than
97
+ * building anything it cannot honour.
98
+ */
99
+ export declare function compileComposition(template: CompositionTemplate, options: CompileCompositionOptions): CompiledComposition;
100
+ /**
101
+ * A composed rune's definition, parsed. The template is still source; it is
102
+ * checked and compiled by `createContentModelSchema`.
103
+ */
104
+ export interface CompositionDefinition {
105
+ rune: string;
106
+ tag: string;
107
+ aliases?: string[];
108
+ description?: string;
109
+ attributes: Record<string, SchemaAttribute>;
110
+ contentModel: ContentModel;
111
+ schema?: SchemaTable;
112
+ registers?: RegistersDeclaration;
113
+ metaFields?: Record<string, unknown>;
114
+ blocks?: Record<string, unknown>;
115
+ provides?: string[];
116
+ template: string;
117
+ /** 1-based line of the source on which the template body starts. */
118
+ templateLine: number;
119
+ /** The frontmatter block's text, for locating a key in error reports. */
120
+ frontmatter: string;
121
+ }
122
+ /** kebab-case → PascalCase: the config key the engine finds a rune under. */
123
+ export declare function composedTypeName(rune: string): string;
124
+ /**
125
+ * Split and parse a definition. The rune's name is the file's name (SPEC-153
126
+ * D9), passed in; a frontmatter key restating it is rejected rather than
127
+ * silently preferred.
128
+ */
129
+ export declare function parseCompositionDefinition(rune: string, source: string): CompositionDefinition;
130
+ /**
131
+ * The generated, block-less engine config of a composed rune (D2a). Not
132
+ * hand-written beside the definition: modifiers come from its enum attributes
133
+ * and from every attribute a `metaFields` entry reads, and `metaFields` /
134
+ * `blocks` are carried as declared.
135
+ *
136
+ * The second source is what lets a placed meta block render (D7): the engine
137
+ * resolves a field against the rune's modifier values, exactly as it does for a
138
+ * tree-owning rune — which must declare the same attributes as modifiers for
139
+ * its own blocks to fill.
140
+ */
141
+ export declare function composedRuneConfig(def: CompositionDefinition): RuneConfig;
142
+ /** One rune as the catalog-wide checks see it. */
143
+ export interface CompositionCatalogEntry {
144
+ schema?: Schema;
145
+ /** The rune's `data-rune`, when it differs from its tag name (`tabs` renders
146
+ * as `tab-group`). What `requiresParent` names. */
147
+ dataRune?: string;
148
+ seoType?: string;
149
+ /** Other names the rune answers to. */
150
+ aliases?: readonly string[];
151
+ /** From the rune's engine config (SPEC-084). */
152
+ requiresParent?: string;
153
+ }
154
+ /**
155
+ * The checks that need every rune in hand: a composition cycle (A places B
156
+ * places A), a composed type placed over a peer type (D9), and a placed rune
157
+ * that requires a parent the template does not give it (D12). Run once the
158
+ * catalog is assembled — by `mergePlugins`, before any page renders — and
159
+ * throws on the first problem, naming the runes involved.
160
+ *
161
+ * D9 is relational: a composition that declares no type of its own may place
162
+ * an entity rune, because then exactly one type exists in the subtree. The
163
+ * check fires only when the composed rune declares a type and a placed rune
164
+ * declares a non-subordinate one.
165
+ */
166
+ export declare function checkCompositions(catalog: Record<string, CompositionCatalogEntry>, tableOf: (schema: Schema) => SchemaTable | undefined): void;
167
+ //# sourceMappingURL=composition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lib/composition.ts"],"names":[],"mappings":"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"}