@refrakt-md/runes 0.31.0 → 0.33.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 (111) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/config.js +44 -8
  3. package/dist/config.js.map +1 -1
  4. package/dist/data-emit.d.ts +1 -0
  5. package/dist/data-emit.d.ts.map +1 -1
  6. package/dist/data-emit.js +40 -0
  7. package/dist/data-emit.js.map +1 -1
  8. package/dist/data-pipeline.d.ts +10 -4
  9. package/dist/data-pipeline.d.ts.map +1 -1
  10. package/dist/data-pipeline.js +296 -30
  11. package/dist/data-pipeline.js.map +1 -1
  12. package/dist/data-projection.d.ts +21 -0
  13. package/dist/data-projection.d.ts.map +1 -1
  14. package/dist/data-projection.js +37 -0
  15. package/dist/data-projection.js.map +1 -1
  16. package/dist/include-pipeline.d.ts +52 -0
  17. package/dist/include-pipeline.d.ts.map +1 -0
  18. package/dist/include-pipeline.js +204 -0
  19. package/dist/include-pipeline.js.map +1 -0
  20. package/dist/index.d.ts +8 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +23 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib/component.d.ts +20 -0
  25. package/dist/lib/component.d.ts.map +1 -1
  26. package/dist/lib/component.js +35 -0
  27. package/dist/lib/component.js.map +1 -1
  28. package/dist/lib/index.d.ts +54 -4
  29. package/dist/lib/index.d.ts.map +1 -1
  30. package/dist/lib/index.js +44 -10
  31. package/dist/lib/index.js.map +1 -1
  32. package/dist/nodes.d.ts.map +1 -1
  33. package/dist/nodes.js +15 -11
  34. package/dist/nodes.js.map +1 -1
  35. package/dist/reference.d.ts +37 -2
  36. package/dist/reference.d.ts.map +1 -1
  37. package/dist/reference.js +73 -7
  38. package/dist/reference.js.map +1 -1
  39. package/dist/schema-universals.d.ts +43 -0
  40. package/dist/schema-universals.d.ts.map +1 -0
  41. package/dist/schema-universals.js +39 -0
  42. package/dist/schema-universals.js.map +1 -0
  43. package/dist/tags/accordion.d.ts.map +1 -1
  44. package/dist/tags/accordion.js +24 -5
  45. package/dist/tags/accordion.js.map +1 -1
  46. package/dist/tags/annotate.d.ts.map +1 -1
  47. package/dist/tags/annotate.js +1 -0
  48. package/dist/tags/annotate.js.map +1 -1
  49. package/dist/tags/badge.d.ts.map +1 -1
  50. package/dist/tags/badge.js +3 -0
  51. package/dist/tags/badge.js.map +1 -1
  52. package/dist/tags/bg.d.ts.map +1 -1
  53. package/dist/tags/bg.js +3 -0
  54. package/dist/tags/bg.js.map +1 -1
  55. package/dist/tags/blog.d.ts.map +1 -1
  56. package/dist/tags/blog.js +1 -0
  57. package/dist/tags/blog.js.map +1 -1
  58. package/dist/tags/card.d.ts.map +1 -1
  59. package/dist/tags/card.js +1 -0
  60. package/dist/tags/card.js.map +1 -1
  61. package/dist/tags/code.d.ts +25 -0
  62. package/dist/tags/code.d.ts.map +1 -0
  63. package/dist/tags/code.js +36 -0
  64. package/dist/tags/code.js.map +1 -0
  65. package/dist/tags/data.d.ts.map +1 -1
  66. package/dist/tags/data.js +26 -4
  67. package/dist/tags/data.js.map +1 -1
  68. package/dist/tags/drawer.d.ts.map +1 -1
  69. package/dist/tags/drawer.js +1 -0
  70. package/dist/tags/drawer.js.map +1 -1
  71. package/dist/tags/expand.d.ts.map +1 -1
  72. package/dist/tags/expand.js +3 -0
  73. package/dist/tags/expand.js.map +1 -1
  74. package/dist/tags/icon.d.ts +10 -0
  75. package/dist/tags/icon.d.ts.map +1 -1
  76. package/dist/tags/icon.js +13 -0
  77. package/dist/tags/icon.js.map +1 -1
  78. package/dist/tags/include.d.ts +24 -0
  79. package/dist/tags/include.d.ts.map +1 -0
  80. package/dist/tags/include.js +46 -0
  81. package/dist/tags/include.js.map +1 -0
  82. package/dist/tags/mediatext.d.ts.map +1 -1
  83. package/dist/tags/mediatext.js +1 -0
  84. package/dist/tags/mediatext.js.map +1 -1
  85. package/dist/tags/pullquote.d.ts.map +1 -1
  86. package/dist/tags/pullquote.js +1 -0
  87. package/dist/tags/pullquote.js.map +1 -1
  88. package/dist/tags/sidenote.d.ts.map +1 -1
  89. package/dist/tags/sidenote.js +1 -0
  90. package/dist/tags/sidenote.js.map +1 -1
  91. package/dist/tags/snippet.d.ts.map +1 -1
  92. package/dist/tags/snippet.js +14 -6
  93. package/dist/tags/snippet.js.map +1 -1
  94. package/dist/tags/textblock.d.ts.map +1 -1
  95. package/dist/tags/textblock.js +1 -0
  96. package/dist/tags/textblock.js.map +1 -1
  97. package/dist/tags/tint.d.ts.map +1 -1
  98. package/dist/tags/tint.js +3 -0
  99. package/dist/tags/tint.js.map +1 -1
  100. package/dist/tags/xref.d.ts.map +1 -1
  101. package/dist/tags/xref.js +3 -0
  102. package/dist/tags/xref.js.map +1 -1
  103. package/dist/universal-attributes.d.ts +90 -0
  104. package/dist/universal-attributes.d.ts.map +1 -0
  105. package/dist/universal-attributes.js +107 -0
  106. package/dist/universal-attributes.js.map +1 -0
  107. package/dist/util.d.ts +41 -1
  108. package/dist/util.d.ts.map +1 -1
  109. package/dist/util.js +70 -12
  110. package/dist/util.js.map +1 -1
  111. package/package.json +3 -3
@@ -0,0 +1,107 @@
1
+ import { UNIVERSAL_AXIS_FACETS, UNIVERSAL_POSTURE_REASONS } from '@refrakt-md/transform';
2
+ /**
3
+ * Which universal attributes a rune may carry — SPEC-125 Phase 3.
4
+ *
5
+ * `createContentModelSchema` used to merge all ~37 universal attributes onto
6
+ * every rune unconditionally. Several of them are inert on most runes: `reading`
7
+ * and `dropcap` need a `body` section role, `prominence` a header-ish one,
8
+ * `frame` a media surface, the cover `scrim*` family a `media-position`
9
+ * modifier. Authoring tools read the schema, so they promised every attribute
10
+ * everywhere, and the engine dropped the inapplicable ones — three of them in
11
+ * total silence.
12
+ *
13
+ * **Availability is derived from the same registry the structure contract uses.**
14
+ * `generateStructureContract` builds its `unavailable` map by calling
15
+ * `UniversalAxisFacet.describeForRune`; so does this. The two derivations are
16
+ * one call, not two implementations that must be kept in step — which is the
17
+ * only way "the contract and the schemas agree" survives the next axis.
18
+ */
19
+ /**
20
+ * Which universal attributes each axis owns.
21
+ *
22
+ * The axis registry's `contract.inputs` cannot serve here: for the `meta`-source
23
+ * axes those are engine-side `data-field` names (`bg-src`, `tint-bg`), not the
24
+ * author-facing attributes a schema declares. This map is the author-facing
25
+ * half, and `universal-attributes.test.ts` holds it to covering
26
+ * `UNIVERSAL_ATTRIBUTE_NAMES` exactly — every attribute owned by one axis, no
27
+ * attribute owned by none.
28
+ */
29
+ export const AXIS_ATTRIBUTES = {
30
+ tint: ['tint', 'tint-mode'],
31
+ // The `scrim*` family belongs to `bg`, not to `cover`. The background layer
32
+ // builds the scrim on any rune — `bgAxis.contract.inputs` lists all five, and
33
+ // `bg` is available everywhere — while `cover` merely *reroutes* it to the
34
+ // media well when a rune enters cover mode. Filing them under `cover` (which
35
+ // is gated on a `media-position` modifier) narrowed a working attribute off
36
+ // 82 of 83 runes; see WORK-536.
37
+ bg: [
38
+ 'bg', 'bg-gradient', 'bg-from', 'bg-to', 'bg-via', 'bg-gradient-type',
39
+ 'scrim', 'scrim-type', 'scrim-strength', 'scrim-blur', 'scrim-tone',
40
+ ],
41
+ width: ['width'],
42
+ spacing: ['spacing'],
43
+ inset: ['inset'],
44
+ elevation: ['elevation'],
45
+ prominence: ['prominence'],
46
+ reading: ['reading'],
47
+ dropcap: ['dropcap'],
48
+ motion: ['reveal', 'stagger'],
49
+ frame: [
50
+ 'frame', 'frame-aspect', 'frame-displace', 'frame-displace-mode', 'frame-offset',
51
+ 'frame-oversize', 'frame-place', 'frame-anchor', 'frame-overflow', 'frame-shadow',
52
+ ],
53
+ substrate: ['substrate', 'substrate-size', 'substrate-opacity', 'substrate-fill', 'substrate-target'],
54
+ // `cover` owns no author-facing attribute of its own — like `density`,
55
+ // `content-measure` and `content-place`, it can still be reported unavailable
56
+ // on a rune, it simply removes nothing from the schema.
57
+ };
58
+ /** The prose behind a non-`auto` posture, for tooling that explains itself.
59
+ * Re-exported from the transform registry rather than restated, so the schema
60
+ * layer and the structure contract give the same reason. */
61
+ export const POSTURE_REASONS = UNIVERSAL_POSTURE_REASONS;
62
+ /**
63
+ * Resolve which universal attributes apply to one rune.
64
+ *
65
+ * A non-`auto` posture short-circuits: nothing structural is consulted, because
66
+ * the reason is about the rune's kind rather than its anatomy.
67
+ */
68
+ export function resolveUniversalAttributes(input = {}) {
69
+ const posture = input.posture ?? 'auto';
70
+ if (posture !== 'auto') {
71
+ const reason = POSTURE_REASONS[posture];
72
+ return {
73
+ available: new Set(),
74
+ unavailable: new Map(Object.keys(AXIS_ATTRIBUTES).map((axis) => [axis, reason])),
75
+ };
76
+ }
77
+ // A config-shaped view of what the schema knows. The gates read exactly these
78
+ // four fields; `block` is required by the type and unused by every gate.
79
+ const asConfig = {
80
+ block: '',
81
+ sections: input.structure?.sections,
82
+ mediaSlots: input.structure?.mediaSlots,
83
+ frameTarget: input.structure?.frameTarget,
84
+ // SPEC-125 Phase 4 — `reading` and `dropcap` gate on a declared content
85
+ // capability rather than on the `body` section role, which was only ever
86
+ // a proxy for it.
87
+ provides: input.structure?.provides,
88
+ modifiers: Object.fromEntries([...(input.declaredAttributes ?? [])].map((name) => [name, { source: 'attribute' }])),
89
+ };
90
+ const unavailable = new Map();
91
+ for (const facet of UNIVERSAL_AXIS_FACETS) {
92
+ const described = facet.describeForRune(asConfig, '');
93
+ if (typeof described === 'string')
94
+ unavailable.set(facet.axis, described);
95
+ }
96
+ const available = new Set();
97
+ for (const [axis, names] of Object.entries(AXIS_ATTRIBUTES)) {
98
+ if (unavailable.has(axis))
99
+ continue;
100
+ for (const name of names)
101
+ available.add(name);
102
+ }
103
+ // Axes with no author-facing attributes (density, content-measure,
104
+ // content-place) can still be unavailable; they simply remove nothing here.
105
+ return { available, unavailable };
106
+ }
107
+ //# sourceMappingURL=universal-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal-attributes.js","sourceRoot":"","sources":["../src/universal-attributes.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -14,9 +14,49 @@ export interface HeadingInfo {
14
14
  /** Canonical name of the known section this heading belongs to, if any. */
15
15
  knownSection?: string;
16
16
  }
17
+ /**
18
+ * Build a heading's `id` from its plain text.
19
+ *
20
+ * The single implementation behind both the parse-time heading index
21
+ * (`extractHeadings`) and the rendered `<h*>` id (the `heading` node
22
+ * transform). They used to be two near-copies that had drifted apart — one
23
+ * stripped `?`, the other `?{}%` — so a heading containing `{`, `}` or `%` was
24
+ * indexed under one id and rendered under another (BUG-005).
25
+ *
26
+ * The rules are the ones an author writing an anchor by hand already assumes,
27
+ * and they match GitHub closely enough to be guessable: lowercase, drop
28
+ * punctuation, collapse whitespace and separator runs to a single `-`. Dropping
29
+ * punctuation also subsumes the reason `%` was stripped — a literal `%` not
30
+ * followed by a hex pair used to crash SvelteKit's prerender crawler in
31
+ * `decodeURI`.
32
+ */
33
+ export declare function headingSlug(text: string): string;
34
+ /**
35
+ * Collect a heading node's plain text, including the content of inline `code`.
36
+ *
37
+ * Concatenated rather than joined with a space: the AST's own text nodes carry
38
+ * the spacing, so joining would double it. Inline code used to be skipped
39
+ * entirely — `` ### `fileRoots` — named directories `` indexed as
40
+ * `" — named directories"`, losing the heading's actual subject (BUG-005).
41
+ */
42
+ export declare function headingText(n: Node): string;
43
+ /**
44
+ * Collect the plain text of already-transformed children, walking into tags.
45
+ *
46
+ * The renderable counterpart to {@link headingText}: inline code is a `Tag` by
47
+ * this point, and a variable has been resolved to its value. Used for the
48
+ * rendered heading id, where both of those matter.
49
+ */
50
+ export declare function renderableText(children: RenderableTreeNode[]): string;
17
51
  /**
18
52
  * Pre-scan an AST for heading nodes, extracting their text and generating
19
- * IDs using the same algorithm as nodes.ts heading transform.
53
+ * IDs with {@link headingSlug} — the same slug rules the `heading` node
54
+ * transform applies, so the index and the rendered anchor agree.
55
+ *
56
+ * The two necessarily read different phases: this runs at parse time, so a
57
+ * heading whose text comes from a variable (`### {% $row.name %}` inside a
58
+ * `{% data %}` body) is not knowable here and is indexed under its unresolved
59
+ * form. The rendered anchor, which is what a link targets, is correct.
20
60
  */
21
61
  export declare function extractHeadings(node: Node): HeadingInfo[];
22
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAoB7D;AAED,wBAAiB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAShE;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE,CA+BzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAyBtD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,IAIpD,OAAO,IAAI,EAAE,oBAkCtB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAoB7D;AAED,wBAAiB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAShE;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAQ3C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAOrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE,CAsBzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAyBtD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,IAIpD,OAAO,IAAI,EAAE,oBAkCtB"}
package/dist/util.js CHANGED
@@ -30,25 +30,83 @@ export function* walkTag(tag) {
30
30
  }
31
31
  }
32
32
  }
33
+ /**
34
+ * Build a heading's `id` from its plain text.
35
+ *
36
+ * The single implementation behind both the parse-time heading index
37
+ * (`extractHeadings`) and the rendered `<h*>` id (the `heading` node
38
+ * transform). They used to be two near-copies that had drifted apart — one
39
+ * stripped `?`, the other `?{}%` — so a heading containing `{`, `}` or `%` was
40
+ * indexed under one id and rendered under another (BUG-005).
41
+ *
42
+ * The rules are the ones an author writing an anchor by hand already assumes,
43
+ * and they match GitHub closely enough to be guessable: lowercase, drop
44
+ * punctuation, collapse whitespace and separator runs to a single `-`. Dropping
45
+ * punctuation also subsumes the reason `%` was stripped — a literal `%` not
46
+ * followed by a hex pair used to crash SvelteKit's prerender crawler in
47
+ * `decodeURI`.
48
+ */
49
+ export function headingSlug(text) {
50
+ return text
51
+ .toLowerCase()
52
+ // Keep letters, numbers, whitespace and hyphens; drop everything else.
53
+ // Unicode-aware so non-ASCII headings keep their words rather than
54
+ // collapsing to an empty id.
55
+ .replace(/[^\p{L}\p{N}\s-]/gu, '')
56
+ .trim()
57
+ .replace(/[\s-]+/g, '-')
58
+ .replace(/^-+|-+$/g, '');
59
+ }
60
+ /**
61
+ * Collect a heading node's plain text, including the content of inline `code`.
62
+ *
63
+ * Concatenated rather than joined with a space: the AST's own text nodes carry
64
+ * the spacing, so joining would double it. Inline code used to be skipped
65
+ * entirely — `` ### `fileRoots` — named directories `` indexed as
66
+ * `" — named directories"`, losing the heading's actual subject (BUG-005).
67
+ */
68
+ export function headingText(n) {
69
+ let text = '';
70
+ for (const child of n.walk()) {
71
+ if ((child.type === 'text' || child.type === 'code') && child.attributes.content) {
72
+ text += String(child.attributes.content);
73
+ }
74
+ }
75
+ return text;
76
+ }
77
+ /**
78
+ * Collect the plain text of already-transformed children, walking into tags.
79
+ *
80
+ * The renderable counterpart to {@link headingText}: inline code is a `Tag` by
81
+ * this point, and a variable has been resolved to its value. Used for the
82
+ * rendered heading id, where both of those matter.
83
+ */
84
+ export function renderableText(children) {
85
+ let text = '';
86
+ for (const child of children) {
87
+ if (typeof child === 'string')
88
+ text += child;
89
+ else if (Markdoc.Tag.isTag(child))
90
+ text += renderableText(child.children ?? []);
91
+ }
92
+ return text;
93
+ }
33
94
  /**
34
95
  * Pre-scan an AST for heading nodes, extracting their text and generating
35
- * IDs using the same algorithm as nodes.ts heading transform.
96
+ * IDs with {@link headingSlug} — the same slug rules the `heading` node
97
+ * transform applies, so the index and the rendered anchor agree.
98
+ *
99
+ * The two necessarily read different phases: this runs at parse time, so a
100
+ * heading whose text comes from a variable (`### {% $row.name %}` inside a
101
+ * `{% data %}` body) is not knowable here and is indexed under its unresolved
102
+ * form. The rendered anchor, which is what a link targets, is correct.
36
103
  */
37
104
  export function extractHeadings(node) {
38
105
  const headings = [];
39
106
  function walk(n) {
40
107
  if (n.type === 'heading') {
41
- const textParts = [];
42
- for (const child of n.walk()) {
43
- if (child.type === 'text' && child.attributes.content) {
44
- textParts.push(child.attributes.content);
45
- }
46
- }
47
- const text = textParts.join(' ');
48
- const id = n.attributes.id || text
49
- .replace(/[?]/g, '')
50
- .replace(/\s+/g, '-')
51
- .toLowerCase();
108
+ const text = headingText(n);
109
+ const id = n.attributes.id || headingSlug(text);
52
110
  headings.push({
53
111
  level: n.attributes.level,
54
112
  text,
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@refrakt-md/runes",
3
3
  "description": "Semantic Markdoc runes for refrakt.md",
4
- "version": "0.31.0",
4
+ "version": "0.33.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -32,8 +32,8 @@
32
32
  "generate-translations": "node scripts/generate-translations.mjs"
33
33
  },
34
34
  "dependencies": {
35
- "@refrakt-md/types": "0.31.0",
36
- "@refrakt-md/transform": "0.31.0",
35
+ "@refrakt-md/types": "0.33.0",
36
+ "@refrakt-md/transform": "0.33.0",
37
37
  "@markdoc/markdoc": "0.4.0",
38
38
  "reflect-metadata": "^0.2.0",
39
39
  "fast-xml-parser": "4.5.1",