@refrakt-md/runes 0.14.4 → 0.16.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 (119) hide show
  1. package/dist/aggregate-resolve.d.ts +4 -0
  2. package/dist/aggregate-resolve.d.ts.map +1 -0
  3. package/dist/aggregate-resolve.js +209 -0
  4. package/dist/aggregate-resolve.js.map +1 -0
  5. package/dist/collection-helpers.d.ts +101 -0
  6. package/dist/collection-helpers.d.ts.map +1 -0
  7. package/dist/collection-helpers.js +206 -0
  8. package/dist/collection-helpers.js.map +1 -0
  9. package/dist/collection-resolve.d.ts +5 -0
  10. package/dist/collection-resolve.d.ts.map +1 -0
  11. package/dist/collection-resolve.js +209 -0
  12. package/dist/collection-resolve.js.map +1 -0
  13. package/dist/config.d.ts +46 -4
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +208 -88
  16. package/dist/config.js.map +1 -1
  17. package/dist/deferred-body.d.ts +19 -0
  18. package/dist/deferred-body.d.ts.map +1 -0
  19. package/dist/deferred-body.js +70 -0
  20. package/dist/deferred-body.js.map +1 -0
  21. package/dist/drawer-pipeline.d.ts +33 -0
  22. package/dist/drawer-pipeline.d.ts.map +1 -0
  23. package/dist/drawer-pipeline.js +206 -0
  24. package/dist/drawer-pipeline.js.map +1 -0
  25. package/dist/expand-pipeline.d.ts +51 -0
  26. package/dist/expand-pipeline.d.ts.map +1 -0
  27. package/dist/expand-pipeline.js +314 -0
  28. package/dist/expand-pipeline.js.map +1 -0
  29. package/dist/field-match.d.ts +43 -0
  30. package/dist/field-match.d.ts.map +1 -0
  31. package/dist/field-match.js +121 -0
  32. package/dist/field-match.js.map +1 -0
  33. package/dist/functions.d.ts +36 -0
  34. package/dist/functions.d.ts.map +1 -0
  35. package/dist/functions.js +74 -0
  36. package/dist/functions.js.map +1 -0
  37. package/dist/index.d.ts +34 -4
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +95 -4
  40. package/dist/index.js.map +1 -1
  41. package/dist/lang-map.d.ts +32 -0
  42. package/dist/lang-map.d.ts.map +1 -0
  43. package/dist/lang-map.js +76 -0
  44. package/dist/lang-map.js.map +1 -0
  45. package/dist/lib/index.d.ts +6 -0
  46. package/dist/lib/index.d.ts.map +1 -1
  47. package/dist/lib/index.js +9 -0
  48. package/dist/lib/index.js.map +1 -1
  49. package/dist/lib/read-file.d.ts +78 -0
  50. package/dist/lib/read-file.d.ts.map +1 -0
  51. package/dist/lib/read-file.js +166 -0
  52. package/dist/lib/read-file.js.map +1 -0
  53. package/dist/nodes.d.ts.map +1 -1
  54. package/dist/nodes.js +18 -2
  55. package/dist/nodes.js.map +1 -1
  56. package/dist/outline-scope.d.ts +46 -0
  57. package/dist/outline-scope.d.ts.map +1 -0
  58. package/dist/outline-scope.js +208 -0
  59. package/dist/outline-scope.js.map +1 -0
  60. package/dist/plugins.d.ts +13 -0
  61. package/dist/plugins.d.ts.map +1 -1
  62. package/dist/plugins.js +65 -1
  63. package/dist/plugins.js.map +1 -1
  64. package/dist/relationships-resolve.d.ts +4 -0
  65. package/dist/relationships-resolve.d.ts.map +1 -0
  66. package/dist/relationships-resolve.js +180 -0
  67. package/dist/relationships-resolve.js.map +1 -0
  68. package/dist/snippet-pipeline.d.ts +42 -0
  69. package/dist/snippet-pipeline.d.ts.map +1 -0
  70. package/dist/snippet-pipeline.js +219 -0
  71. package/dist/snippet-pipeline.js.map +1 -0
  72. package/dist/tags/aggregate.d.ts +19 -0
  73. package/dist/tags/aggregate.d.ts.map +1 -0
  74. package/dist/tags/aggregate.js +59 -0
  75. package/dist/tags/aggregate.js.map +1 -0
  76. package/dist/tags/card.d.ts +25 -0
  77. package/dist/tags/card.d.ts.map +1 -0
  78. package/dist/tags/card.js +138 -0
  79. package/dist/tags/card.js.map +1 -0
  80. package/dist/tags/collection.d.ts +10 -0
  81. package/dist/tags/collection.d.ts.map +1 -0
  82. package/dist/tags/collection.js +54 -0
  83. package/dist/tags/collection.js.map +1 -0
  84. package/dist/tags/conversation.d.ts.map +1 -1
  85. package/dist/tags/conversation.js +26 -6
  86. package/dist/tags/conversation.js.map +1 -1
  87. package/dist/tags/drawer.d.ts +26 -0
  88. package/dist/tags/drawer.d.ts.map +1 -0
  89. package/dist/tags/drawer.js +134 -0
  90. package/dist/tags/drawer.js.map +1 -0
  91. package/dist/tags/expand.d.ts +22 -0
  92. package/dist/tags/expand.d.ts.map +1 -0
  93. package/dist/tags/expand.js +76 -0
  94. package/dist/tags/expand.js.map +1 -0
  95. package/dist/tags/progress.d.ts +9 -0
  96. package/dist/tags/progress.d.ts.map +1 -0
  97. package/dist/tags/progress.js +96 -0
  98. package/dist/tags/progress.js.map +1 -0
  99. package/dist/tags/relationships.d.ts +12 -0
  100. package/dist/tags/relationships.d.ts.map +1 -0
  101. package/dist/tags/relationships.js +62 -0
  102. package/dist/tags/relationships.js.map +1 -0
  103. package/dist/tags/snippet.d.ts +19 -0
  104. package/dist/tags/snippet.d.ts.map +1 -0
  105. package/dist/tags/snippet.js +49 -0
  106. package/dist/tags/snippet.js.map +1 -0
  107. package/dist/util.d.ts +11 -0
  108. package/dist/util.d.ts.map +1 -1
  109. package/dist/util.js +35 -0
  110. package/dist/util.js.map +1 -1
  111. package/dist/xref-patterns.d.ts +57 -0
  112. package/dist/xref-patterns.d.ts.map +1 -0
  113. package/dist/xref-patterns.js +140 -0
  114. package/dist/xref-patterns.js.map +1 -0
  115. package/dist/xref-resolve.d.ts +22 -5
  116. package/dist/xref-resolve.d.ts.map +1 -1
  117. package/dist/xref-resolve.js +203 -79
  118. package/dist/xref-resolve.js.map +1 -1
  119. package/package.json +3 -3
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Extension → language map for code-block syntax highlighting.
3
+ *
4
+ * Shared across the snippet rune, the inspect tool, the contracts generator,
5
+ * and any future rune that needs to infer a syntax-highlighting language
6
+ * from a file extension. Lives in `@refrakt-md/runes` (not in a plugin)
7
+ * because every consumer already depends on this package and plugins
8
+ * cannot be depended on by core.
9
+ *
10
+ * Authors can always override inferred languages with explicit `lang=`
11
+ * attributes; inference is the default, not the only path.
12
+ */
13
+ /** Lowercase file extension (with leading dot) → highlight-language identifier. */
14
+ export declare const LANG_MAP: Readonly<Record<string, string>>;
15
+ /** Fallback language for extensions not covered by {@link LANG_MAP}. */
16
+ export declare const FALLBACK_LANG = "text";
17
+ /**
18
+ * Infer the highlight-language identifier from a file path or extension.
19
+ *
20
+ * Accepts a full path (`"src/lib/foo.ts"`), a bare extension with the dot
21
+ * (`".ts"`), or a bare extension without (`"ts"`). Unknown extensions
22
+ * return {@link FALLBACK_LANG}.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * inferLanguage('src/lib/foo.ts'); // 'typescript'
27
+ * inferLanguage('.svelte'); // 'svelte'
28
+ * inferLanguage('config.unknown'); // 'text'
29
+ * ```
30
+ */
31
+ export declare function inferLanguage(pathOrExt: string): string;
32
+ //# sourceMappingURL=lang-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang-map.d.ts","sourceRoot":"","sources":["../src/lang-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,mFAAmF;AACnF,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBpD,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAuBvD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Extension → language map for code-block syntax highlighting.
3
+ *
4
+ * Shared across the snippet rune, the inspect tool, the contracts generator,
5
+ * and any future rune that needs to infer a syntax-highlighting language
6
+ * from a file extension. Lives in `@refrakt-md/runes` (not in a plugin)
7
+ * because every consumer already depends on this package and plugins
8
+ * cannot be depended on by core.
9
+ *
10
+ * Authors can always override inferred languages with explicit `lang=`
11
+ * attributes; inference is the default, not the only path.
12
+ */
13
+ /** Lowercase file extension (with leading dot) → highlight-language identifier. */
14
+ export const LANG_MAP = Object.freeze({
15
+ '.ts': 'typescript',
16
+ '.tsx': 'typescript',
17
+ '.js': 'javascript',
18
+ '.jsx': 'javascript',
19
+ '.mjs': 'javascript',
20
+ '.cjs': 'javascript',
21
+ '.svelte': 'svelte',
22
+ '.vue': 'vue',
23
+ '.md': 'markdoc',
24
+ '.markdoc': 'markdoc',
25
+ '.json': 'json',
26
+ '.jsonc': 'jsonc',
27
+ '.html': 'html',
28
+ '.css': 'css',
29
+ '.yml': 'yaml',
30
+ '.yaml': 'yaml',
31
+ '.toml': 'toml',
32
+ '.sh': 'bash',
33
+ '.bash': 'bash',
34
+ });
35
+ /** Fallback language for extensions not covered by {@link LANG_MAP}. */
36
+ export const FALLBACK_LANG = 'text';
37
+ /**
38
+ * Infer the highlight-language identifier from a file path or extension.
39
+ *
40
+ * Accepts a full path (`"src/lib/foo.ts"`), a bare extension with the dot
41
+ * (`".ts"`), or a bare extension without (`"ts"`). Unknown extensions
42
+ * return {@link FALLBACK_LANG}.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * inferLanguage('src/lib/foo.ts'); // 'typescript'
47
+ * inferLanguage('.svelte'); // 'svelte'
48
+ * inferLanguage('config.unknown'); // 'text'
49
+ * ```
50
+ */
51
+ export function inferLanguage(pathOrExt) {
52
+ if (typeof pathOrExt !== 'string' || pathOrExt.length === 0)
53
+ return FALLBACK_LANG;
54
+ // Reduce to the trailing extension. Three accepted shapes:
55
+ // - `"foo/bar.ts"` → last segment is `bar.ts`; extension is `.ts`
56
+ // - `".ts"` → already an extension
57
+ // - `"ts"` → bare extension, no dot
58
+ let ext;
59
+ const lastSlash = Math.max(pathOrExt.lastIndexOf('/'), pathOrExt.lastIndexOf('\\'));
60
+ const lastSegment = lastSlash >= 0 ? pathOrExt.slice(lastSlash + 1) : pathOrExt;
61
+ const lastDot = lastSegment.lastIndexOf('.');
62
+ if (lastDot === -1) {
63
+ // No dot anywhere — treat the whole string as a bare extension.
64
+ ext = '.' + lastSegment.toLowerCase();
65
+ }
66
+ else if (lastDot === 0) {
67
+ // Leading dot only — `".ts"` style.
68
+ ext = lastSegment.toLowerCase();
69
+ }
70
+ else {
71
+ // Normal `name.ext`.
72
+ ext = lastSegment.slice(lastDot).toLowerCase();
73
+ }
74
+ return LANG_MAP[ext] ?? FALLBACK_LANG;
75
+ }
76
+ //# sourceMappingURL=lang-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang-map.js","sourceRoot":"","sources":["../src/lang-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,QAAQ,GAAqC,MAAM,CAAC,MAAM,CAAC;IACvE,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;CACf,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAElF,2DAA2D;IAC3D,kEAAkE;IAClE,mCAAmC;IACnC,oCAAoC;IACpC,IAAI,GAAW,CAAC;IAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,gEAAgE;QAChE,GAAG,GAAG,GAAG,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAC1B,oCAAoC;QACpC,GAAG,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,qBAAqB;QACrB,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC;AACvC,CAAC"}
@@ -40,6 +40,12 @@ export interface ContentModelSchemaOptions {
40
40
  deprecations?: Record<string, DeprecationRule>;
41
41
  /** Whether this tag is self-closing (no children). */
42
42
  selfClosing?: boolean;
43
+ /**
44
+ * Mark this rune as deferring its body to postProcess (per-entity template).
45
+ * The content loader captures the pristine body as source on `__deferred-body`
46
+ * and empties it before transform; the rune reads it via `readDeferredBody`.
47
+ */
48
+ deferBody?: boolean;
43
49
  }
44
50
  /**
45
51
  * Create a Markdoc Schema from a declarative content model.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAwB,MAAM,kBAAkB,CAAC;AAKzH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnK,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,kDAA+C,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,YAAY,EAAI,CAAC;AAExH,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,CAI9C;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CAChE;AA4FD,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEvC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C,4EAA4E;IAC5E,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC;IAE5E;;;;OAIG;IACH,SAAS,EAAE,CACT,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,KACP,mBAAmB,CAAC;IAEzB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE/C,sDAAsD;IACtD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CA8GnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAwB,MAAM,kBAAkB,CAAC;AAKzH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnK,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,kDAA+C,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,YAAY,EAAI,CAAC;AAExH,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,CAI9C;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CAChE;AA4FD,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEvC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C,4EAA4E;IAC5E,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC;IAE5E;;;;OAIG;IACH,SAAS,EAAE,CACT,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,KACP,mBAAmB,CAAC;IAEzB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE/C,sDAAsD;IACtD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAyHnF"}
package/dist/lib/index.js CHANGED
@@ -96,6 +96,11 @@ export function createContentModelSchema(options) {
96
96
  }
97
97
  // Add universal attributes
98
98
  Object.assign(attributes, universalAttributes);
99
+ // deferBody: declare the stash attribute so the loader-captured body source
100
+ // is readable in the transform (see deferred-body.ts).
101
+ if (options.deferBody) {
102
+ attributes['__deferred-body'] = { type: String, required: false };
103
+ }
99
104
  // Register deprecated attribute names
100
105
  const deprecations = options.deprecations;
101
106
  if (deprecations) {
@@ -170,6 +175,10 @@ export function createContentModelSchema(options) {
170
175
  return errors;
171
176
  };
172
177
  }
178
+ // Mark deferBody so the content loader captures the body pre-transform.
179
+ if (options.deferBody) {
180
+ schema.deferBody = true;
181
+ }
173
182
  // Register content model for introspection by editor / language server
174
183
  schemaContentModels.set(schema, options.contentModel);
175
184
  // Record the base record reference so reference output can identify
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAGvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnK,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAyE,CAAC;AAExH,iFAAiF;AACjF,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAe,CAAC;IACjD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,CAAC,KAAa,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC;AACZ,CAAC;AAUD,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,MAAM,mBAAmB,GAAoC;IAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACjG,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE;IACvJ,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,yCAAyC,EAAE;IAC/F,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE;IAC7J,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE;IACpK,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE;CACnJ,CAAC;AAeF,SAAS,mBAAmB,CAAC,MAA2B,EAAE,GAAkB;IAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE9C,MAAM,KAAK,GAAU,EAAE,CAAC;IAExB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACxC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACtD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,CACjE,CAAC;IAEF,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA2B,EAAE,GAAkB;IACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE9C,MAAM,KAAK,GAAU,EAAE,CAAC;IAExB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACtD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,WAAW,CACxE,CAAC;IACF,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAsCD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAkC;IACzE,MAAM,UAAU,GAAoC,EAAE,CAAC;IAEvD,wBAAwB;IACxB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,2BAA2B;IAC3B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAE/C,sCAAsC;IACtC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAqB,CAAC;YAC/G,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAW;QACrB,UAAU;QACV,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACxE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC1B,gCAAgC;YAChC,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS;4BAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;4BAC3D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;4BACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAE/C,wBAAwB;YACxB,MAAM,aAAa,GAAG,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU;gBAC9D,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC7B,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;YACzB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,mBAAmB,CACvD,IAAI,CAAC,QAAQ,EACb,aAAa,EACb,KAAK,CACN,CAAC;YAEF,qCAAqC;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAE/D,yBAAyB;YACzB,MAAM,SAAS,GAAkB;gBAC/B,QAAQ;gBACR,MAAM;gBACN,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;gBAC/B,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,MAAM;aACP,CAAC;YACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;YAEpF,sCAAsC;YACtC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,IAAI,KAAK,CAAC,KAAK;oBAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACvD,IAAI,KAAK,CAAC,OAAO;oBAAE,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC7D,IAAI,KAAK,CAAC,KAAK;oBAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;IAEF,0CAA0C;IAC1C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC;wBACV,EAAE,EAAE,sBAAsB;wBAC1B,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,cAAc,OAAO,yBAAyB,IAAI,CAAC,OAAO,YAAY;qBAChF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAEtD,oEAAoE;IACpE,iDAAiD;IACjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Sandboxed file reader for the snippet rune (SPEC-062).
3
+ *
4
+ * Resolves a project-root-relative path, enforces the snippet sandbox
5
+ * (absolute-path reject, traversal reject, symlink-escape reject,
6
+ * existence + file-type check), and optionally slices by line range.
7
+ *
8
+ * Pure synchronous I/O — runs at build time during the preprocess
9
+ * phase. Errors are thrown as `Error` instances with structured messages
10
+ * the preprocess hook formats for the user.
11
+ */
12
+ /** Diagnostics from a single read. */
13
+ export interface ReadFileResult {
14
+ /** Resolved file content (possibly sliced by `lines`). */
15
+ content: string;
16
+ /** Absolute resolved path. */
17
+ absolutePath: string;
18
+ /** Project-root-relative POSIX path — what `data-snippet-source` carries. */
19
+ relativePath: string;
20
+ /** Warnings the preprocess hook should surface (e.g., end-clamp). */
21
+ warnings: string[];
22
+ }
23
+ export interface ReadFileOptions {
24
+ /** The author-supplied `path=` attribute value (project-root-relative). */
25
+ pathAttr: string;
26
+ /** Absolute path to the project root (the directory containing
27
+ * `refrakt.config.json`). The sandbox anchor. */
28
+ projectRoot: string;
29
+ /** Optional `lines=` attribute value (`"10-25"`, `"10-"`, `"-20"`, `"10"`). */
30
+ lines?: string;
31
+ /** Optional source-page context used in error messages
32
+ * ("Referenced from: docs/getting-started.md:42"). */
33
+ referencingPage?: string;
34
+ }
35
+ /**
36
+ * Validate a path attribute against the snippet sandbox rules.
37
+ * Throws `SnippetSandboxError` on rejection; returns the absolute resolved
38
+ * path on success.
39
+ */
40
+ export declare function resolveSnippetPath(pathAttr: string, projectRoot: string): string;
41
+ /** Range parsed from the `lines=` attribute. */
42
+ interface LineRange {
43
+ /** 1-indexed start (inclusive). Undefined means "from start of file". */
44
+ start?: number;
45
+ /** 1-indexed end (inclusive). Undefined means "to end of file". */
46
+ end?: number;
47
+ }
48
+ /** Parse a `lines=` attribute. Returns null when the attribute is empty/absent;
49
+ * throws `SnippetSandboxError` on malformed input. */
50
+ export declare function parseLineRange(raw: string | undefined): LineRange | null;
51
+ /** Slice file content by line range. Returns the sliced text and any warnings
52
+ * about clamping. Throws `SnippetSandboxError` when the range is entirely
53
+ * past EOF. */
54
+ export declare function sliceContent(content: string, range: LineRange | null): {
55
+ sliced: string;
56
+ warnings: string[];
57
+ };
58
+ /** Read a snippet's source file with full sandbox enforcement + line slicing. */
59
+ export declare function readSnippetFile(opts: ReadFileOptions): ReadFileResult;
60
+ /**
61
+ * Read a file's raw text content with the snippet sandbox applied.
62
+ * Used by expand (SPEC-066) when it needs the whole file (no line
63
+ * slicing) to parse as Markdoc. Lives here so the `node:fs` import
64
+ * stays inside this Node-only helper module — expand-pipeline.ts
65
+ * imports the function, not `fs` directly, which keeps the runes
66
+ * package tree-shakable for browser bundles.
67
+ */
68
+ export declare function readWholeSandboxedFile(opts: {
69
+ relativePath: string;
70
+ projectRoot: string;
71
+ }): string;
72
+ /** All sandbox-rejection cases throw this — the preprocess hook can catch and
73
+ * format with source-line context for the user. */
74
+ export declare class SnippetSandboxError extends Error {
75
+ constructor(message: string);
76
+ }
77
+ export {};
78
+ //# sourceMappingURL=read-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../src/lib/read-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC9B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB;sDACkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;2DACuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAOD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkChF;AAED,gDAAgD;AAChD,UAAU,SAAS;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;uDACuD;AACvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAkCxE;AAED;;gBAEgB;AAChB,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,GAAG,IAAI,GACrB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBxC;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CA8BrE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAYT;AAED;oDACoD;AACpD,qBAAa,mBAAoB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI3B"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Sandboxed file reader for the snippet rune (SPEC-062).
3
+ *
4
+ * Resolves a project-root-relative path, enforces the snippet sandbox
5
+ * (absolute-path reject, traversal reject, symlink-escape reject,
6
+ * existence + file-type check), and optionally slices by line range.
7
+ *
8
+ * Pure synchronous I/O — runs at build time during the preprocess
9
+ * phase. Errors are thrown as `Error` instances with structured messages
10
+ * the preprocess hook formats for the user.
11
+ */
12
+ import * as fs from 'node:fs';
13
+ import * as path from 'node:path';
14
+ /** Convert host-OS file path to POSIX form (forward slashes). */
15
+ function posixPath(p) {
16
+ return path.sep === '/' ? p : p.split(path.sep).join('/');
17
+ }
18
+ /**
19
+ * Validate a path attribute against the snippet sandbox rules.
20
+ * Throws `SnippetSandboxError` on rejection; returns the absolute resolved
21
+ * path on success.
22
+ */
23
+ export function resolveSnippetPath(pathAttr, projectRoot) {
24
+ if (typeof pathAttr !== 'string' || pathAttr.length === 0) {
25
+ throw new SnippetSandboxError('snippet `path` attribute is required');
26
+ }
27
+ if (path.isAbsolute(pathAttr)) {
28
+ throw new SnippetSandboxError(`snippet path "${pathAttr}" is absolute; project-root-relative paths only`);
29
+ }
30
+ const joined = path.resolve(projectRoot, pathAttr);
31
+ const normalized = path.normalize(joined);
32
+ const rootWithSep = projectRoot.endsWith(path.sep) ? projectRoot : projectRoot + path.sep;
33
+ if (!normalized.startsWith(rootWithSep) && normalized !== projectRoot) {
34
+ throw new SnippetSandboxError(`snippet path "${pathAttr}" escapes the project root after normalization`);
35
+ }
36
+ // Symlink-escape check via realpath. Fails open if realpath errors
37
+ // (which mostly means the file doesn't exist — we'll surface that below).
38
+ try {
39
+ const real = fs.realpathSync(normalized);
40
+ if (!real.startsWith(rootWithSep) && real !== projectRoot) {
41
+ throw new SnippetSandboxError(`snippet path "${pathAttr}" resolves through a symlink that escapes the project root`);
42
+ }
43
+ }
44
+ catch (err) {
45
+ if (err.code !== 'ENOENT') {
46
+ throw err;
47
+ }
48
+ // File doesn't exist — let the stat check below produce the canonical
49
+ // "file not found" error with the resolved path in the message.
50
+ }
51
+ return normalized;
52
+ }
53
+ /** Parse a `lines=` attribute. Returns null when the attribute is empty/absent;
54
+ * throws `SnippetSandboxError` on malformed input. */
55
+ export function parseLineRange(raw) {
56
+ if (raw === undefined || raw === null || raw === '')
57
+ return null;
58
+ if (typeof raw !== 'string') {
59
+ throw new SnippetSandboxError(`snippet \`lines\` attribute must be a string, got ${typeof raw}`);
60
+ }
61
+ const trimmed = raw.trim();
62
+ if (trimmed.length === 0)
63
+ return null;
64
+ // "10" — single line shorthand
65
+ if (/^\d+$/.test(trimmed)) {
66
+ const n = Number(trimmed);
67
+ if (!Number.isFinite(n) || n < 1)
68
+ throw new SnippetSandboxError(`snippet \`lines\` value "${raw}" is not a positive integer`);
69
+ return { start: n, end: n };
70
+ }
71
+ // "10-25" | "10-" | "-20"
72
+ const m = /^(\d*)-(\d*)$/.exec(trimmed);
73
+ if (!m) {
74
+ throw new SnippetSandboxError(`snippet \`lines\` value "${raw}" is malformed; expected "N", "N-M", "N-", or "-M"`);
75
+ }
76
+ const startStr = m[1];
77
+ const endStr = m[2];
78
+ const start = startStr.length > 0 ? Number(startStr) : undefined;
79
+ const end = endStr.length > 0 ? Number(endStr) : undefined;
80
+ if (start !== undefined && (!Number.isFinite(start) || start < 1)) {
81
+ throw new SnippetSandboxError(`snippet \`lines\` start "${startStr}" is not a positive integer`);
82
+ }
83
+ if (end !== undefined && (!Number.isFinite(end) || end < 1)) {
84
+ throw new SnippetSandboxError(`snippet \`lines\` end "${endStr}" is not a positive integer`);
85
+ }
86
+ if (start !== undefined && end !== undefined && end < start) {
87
+ throw new SnippetSandboxError(`snippet \`lines\` value "${raw}" is inverted (end before start)`);
88
+ }
89
+ return { start, end };
90
+ }
91
+ /** Slice file content by line range. Returns the sliced text and any warnings
92
+ * about clamping. Throws `SnippetSandboxError` when the range is entirely
93
+ * past EOF. */
94
+ export function sliceContent(content, range) {
95
+ if (range === null)
96
+ return { sliced: content, warnings: [] };
97
+ const lines = content.split('\n');
98
+ const total = lines.length;
99
+ const startLine = range.start ?? 1;
100
+ let endLine = range.end ?? total;
101
+ const warnings = [];
102
+ if (startLine > total) {
103
+ throw new SnippetSandboxError(`snippet \`lines\` start ${startLine} is past end of file (${total} lines)`);
104
+ }
105
+ if (endLine > total) {
106
+ warnings.push(`snippet \`lines\` end ${endLine} exceeds file length; clamped to ${total}`);
107
+ endLine = total;
108
+ }
109
+ // Convert to 0-indexed slice bounds. `slice(a, b)` returns indices [a, b);
110
+ // we want lines [startLine, endLine] inclusive → slice(startLine - 1, endLine).
111
+ const sliced = lines.slice(startLine - 1, endLine).join('\n');
112
+ return { sliced, warnings };
113
+ }
114
+ /** Read a snippet's source file with full sandbox enforcement + line slicing. */
115
+ export function readSnippetFile(opts) {
116
+ const absolutePath = resolveSnippetPath(opts.pathAttr, opts.projectRoot);
117
+ let stat;
118
+ try {
119
+ stat = fs.statSync(absolutePath);
120
+ }
121
+ catch {
122
+ const referenced = opts.referencingPage ? `\n\nReferenced from: ${opts.referencingPage}` : '';
123
+ throw new SnippetSandboxError(`snippet path "${opts.pathAttr}" cannot be resolved.\n\nResolved to: ${absolutePath}\nReason: file not found${referenced}`);
124
+ }
125
+ if (!stat.isFile()) {
126
+ throw new SnippetSandboxError(`snippet path "${opts.pathAttr}" must be a file (got ${stat.isDirectory() ? 'directory' : 'other'})`);
127
+ }
128
+ const rawContent = fs.readFileSync(absolutePath, 'utf-8');
129
+ const range = parseLineRange(opts.lines);
130
+ const { sliced, warnings } = sliceContent(rawContent, range);
131
+ const relativePath = posixPath(path.relative(opts.projectRoot, absolutePath));
132
+ return {
133
+ content: sliced,
134
+ absolutePath,
135
+ relativePath,
136
+ warnings,
137
+ };
138
+ }
139
+ /**
140
+ * Read a file's raw text content with the snippet sandbox applied.
141
+ * Used by expand (SPEC-066) when it needs the whole file (no line
142
+ * slicing) to parse as Markdoc. Lives here so the `node:fs` import
143
+ * stays inside this Node-only helper module — expand-pipeline.ts
144
+ * imports the function, not `fs` directly, which keeps the runes
145
+ * package tree-shakable for browser bundles.
146
+ */
147
+ export function readWholeSandboxedFile(opts) {
148
+ const absolutePath = resolveSnippetPath(opts.relativePath, opts.projectRoot);
149
+ if (!fs.existsSync(absolutePath)) {
150
+ throw new SnippetSandboxError(`source file "${opts.relativePath}" does not exist`);
151
+ }
152
+ const stat = fs.statSync(absolutePath);
153
+ if (!stat.isFile()) {
154
+ throw new SnippetSandboxError(`source file "${opts.relativePath}" must be a regular file (got ${stat.isDirectory() ? 'directory' : 'other'})`);
155
+ }
156
+ return fs.readFileSync(absolutePath, 'utf-8');
157
+ }
158
+ /** All sandbox-rejection cases throw this — the preprocess hook can catch and
159
+ * format with source-line context for the user. */
160
+ export class SnippetSandboxError extends Error {
161
+ constructor(message) {
162
+ super(message);
163
+ this.name = 'SnippetSandboxError';
164
+ }
165
+ }
166
+ //# sourceMappingURL=read-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../src/lib/read-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AA2BlC,iEAAiE;AACjE,SAAS,SAAS,CAAC,CAAS;IAC3B,OAAO,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IACvE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,mBAAmB,CAAC,sCAAsC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAC5B,iBAAiB,QAAQ,iDAAiD,CAC1E,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;IAC1F,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QACvE,MAAM,IAAI,mBAAmB,CAC5B,iBAAiB,QAAQ,gDAAgD,CACzE,CAAC;IACH,CAAC;IACD,mEAAmE;IACnE,0EAA0E;IAC1E,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3D,MAAM,IAAI,mBAAmB,CAC5B,iBAAiB,QAAQ,4DAA4D,CACrF,CAAC;QACH,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,GAAG,CAAC;QACX,CAAC;QACD,sEAAsE;QACtE,gEAAgE;IACjE,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAUD;uDACuD;AACvD,MAAM,UAAU,cAAc,CAAC,GAAuB;IACrD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,mBAAmB,CAAC,qDAAqD,OAAO,GAAG,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,+BAA+B;IAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,GAAG,6BAA6B,CAAC,CAAC;QAC9H,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7B,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,EAAE,CAAC;QACR,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,GAAG,oDAAoD,CAAC,CAAC;IACpH,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,QAAQ,6BAA6B,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,MAAM,6BAA6B,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAC7D,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,GAAG,kCAAkC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;gBAEgB;AAChB,MAAM,UAAU,YAAY,CAC3B,OAAe,EACf,KAAuB;IAEvB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAC5B,2BAA2B,SAAS,yBAAyB,KAAK,SAAS,CAC3E,CAAC;IACH,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CACZ,yBAAyB,OAAO,oCAAoC,KAAK,EAAE,CAC3E,CAAC;QACF,OAAO,GAAG,KAAK,CAAC;IACjB,CAAC;IAED,2EAA2E;IAC3E,gFAAgF;IAChF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,IAAqB;IACpD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAEzE,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACJ,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,mBAAmB,CAC5B,iBAAiB,IAAI,CAAC,QAAQ,yCAAyC,YAAY,2BAA2B,UAAU,EAAE,CAC1H,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAmB,CAC5B,iBAAiB,IAAI,CAAC,QAAQ,yBAAyB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,CACpG,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9E,OAAO;QACN,OAAO,EAAE,MAAM;QACf,YAAY;QACZ,YAAY;QACZ,QAAQ;KACR,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACA,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,IAAI,CAAC,YAAY,kBAAkB,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAmB,CAC5B,gBAAgB,IAAI,CAAC,YAAY,iCAAiC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,CAC/G,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;oDACoD;AACpD,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACnC,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAO/C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,OAAO,EAAE,MAyBrB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MAMvB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,MAkBnB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,MAclB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,MAkBlB,CAAC;AAEF,eAAO,MAAM,EAAE,EAAE,MAMhB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAMpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAalB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAqBlB,CAAA;AAED,eAAO,MAAM,SAAS,gBAA0B,CAAC;AAEjD,eAAO,MAAM,KAAK,EAAE,MAkCnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAOnB,CAAA"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAO/C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,OAAO,EAAE,MA8BrB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MAMvB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,MA6BnB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,MAclB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,MAkBlB,CAAC;AAEF,eAAO,MAAM,EAAE,EAAE,MAMhB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAMpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAalB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAqBlB,CAAA;AAED,eAAO,MAAM,SAAS,gBAA0B,CAAC;AAEjD,eAAO,MAAM,KAAK,EAAE,MAkCnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAOnB,CAAA"}
package/dist/nodes.js CHANGED
@@ -17,7 +17,12 @@ export const heading = {
17
17
  attributes.id = children
18
18
  .filter((child) => typeof child === 'string')
19
19
  .join(' ')
20
- .replace(/[?]/g, '')
20
+ // Strip URL-unsafe punctuation that breaks fragment links. `%` in
21
+ // particular trips `decodeURI` (SvelteKit's prerender crawler) when
22
+ // it isn't followed by a valid hex pair — e.g. a heading whose text
23
+ // contains a literal `{% symbol %}` would otherwise produce an id
24
+ // like `…-{%-symbol-%}-…` and crash the prerender.
25
+ .replace(/[?{}%]/g, '')
21
26
  .replace(/\s+/g, '-')
22
27
  .toLowerCase();
23
28
  }
@@ -43,7 +48,18 @@ export const fence = {
43
48
  },
44
49
  transform(node, config) {
45
50
  const lang = node.attributes.language || 'shell';
46
- const pre = new Tag('pre', { 'data-language': lang }, [
51
+ // Forward any data-* attributes from the fence node onto the rendered
52
+ // <pre>. The snippet preprocess (SPEC-062) attaches `data-snippet-source`
53
+ // / `data-snippet-title` / `data-snippet-lines` to fence nodes it
54
+ // synthesizes from `{% snippet %}` tags; the standalone wrap step
55
+ // queries against `data-snippet-source` to know which <pre>s to wrap
56
+ // in the snippet figure chrome.
57
+ const preAttrs = { 'data-language': lang };
58
+ for (const [key, value] of Object.entries(node.attributes)) {
59
+ if (key.startsWith('data-'))
60
+ preAttrs[key] = value;
61
+ }
62
+ const pre = new Tag('pre', preAttrs, [
47
63
  new Tag('code', { 'data-language': lang }, [unescapeFenceContent(node.attributes.content)])
48
64
  ]);
49
65
  return new Tag('div', { class: 'rf-codeblock' }, [pre]);
package/dist/nodes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Outline-scope walkers (SPEC-066, WORK-259).
3
+ *
4
+ * Two generic walkers that consume the `data-outline-scope` attribute on
5
+ * any rendered element as a neutral "this subtree is a sub-outline
6
+ * boundary" marker. Any rune can set the attribute and get TOC
7
+ * isolation + heading-ID namespacing for free — the walkers themselves
8
+ * know nothing about expand, drawer, or any specific rune.
9
+ *
10
+ * Two cooperating passes over the page's renderable tree:
11
+ *
12
+ * 1. **Heading-ID walker** — for each `h1`..`h6` descended from an
13
+ * element with `data-outline-scope` set, prefix its `id` attribute
14
+ * with `${scopeValue}--`. Innermost scope wins for nested scopes.
15
+ * Headings outside any scoped subtree are untouched.
16
+ *
17
+ * 2. **TOC walker** — for each `<nav data-rune="table-of-contents">`,
18
+ * remove `<li>` items whose `<a href="#id">` points at a heading
19
+ * that's now inside an outline scope (the host TOC reflects only the
20
+ * host's structure; embedded / scoped heading entries don't belong).
21
+ *
22
+ * The TOC walker reads the set of "scoped original IDs" produced as a
23
+ * side-effect of the heading-ID walker — one tree walk seeds both.
24
+ */
25
+ /** Apply the outline-scope walkers to a page's renderable tree. Mutates
26
+ * in place (we're operating on Tag instances that we already constructed
27
+ * upstream) and returns the same root for caller chaining. */
28
+ export declare function applyOutlineScopeWalkers(renderable: unknown): unknown;
29
+ export interface HarvestedHeading {
30
+ level: number;
31
+ text: string;
32
+ id: string;
33
+ }
34
+ /**
35
+ * Walk a final renderable tree and collect every `h1`..`h6` not inside a
36
+ * `data-outline-scope` subtree, in document order. Used to refresh
37
+ * `page.headings` after postProcess substitutions (expand `level=N`,
38
+ * collection bodies, …) bring new headings into the host outline that
39
+ * the parse-time `extractHeadings` couldn't see — the source AST only
40
+ * had the placeholder rune at that point.
41
+ *
42
+ * Skips scoped subtrees so embedded sub-outlines (expand in peer-document
43
+ * mode) stay isolated from the host TOC, mirroring `filterTocItems`.
44
+ */
45
+ export declare function harvestHeadingsFromRenderable(renderable: unknown): HarvestedHeading[];
46
+ //# sourceMappingURL=outline-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline-scope.d.ts","sourceRoot":"","sources":["../src/outline-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH;;+DAE+D;AAC/D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAOrE;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAIrF"}