@openuji/speculator 0.3.1 → 0.4.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 (610) hide show
  1. package/README.md +111 -50
  2. package/dist/file-provider/__tests__/compliance.test.d.ts +5 -0
  3. package/dist/file-provider/__tests__/compliance.test.d.ts.map +1 -0
  4. package/dist/file-provider/__tests__/compliance.test.js +52 -0
  5. package/dist/file-provider/__tests__/compliance.test.js.map +1 -0
  6. package/dist/file-provider/index.d.ts +8 -0
  7. package/dist/file-provider/index.d.ts.map +1 -0
  8. package/dist/file-provider/index.js +10 -0
  9. package/dist/file-provider/index.js.map +1 -0
  10. package/dist/file-provider/memory.d.ts +46 -0
  11. package/dist/file-provider/memory.d.ts.map +1 -0
  12. package/dist/file-provider/memory.js +99 -0
  13. package/dist/file-provider/memory.js.map +1 -0
  14. package/dist/file-provider/node.d.ts +32 -0
  15. package/dist/file-provider/node.d.ts.map +1 -0
  16. package/dist/file-provider/node.js +65 -0
  17. package/dist/file-provider/node.js.map +1 -0
  18. package/dist/file-provider/types.d.ts +69 -0
  19. package/dist/file-provider/types.d.ts.map +1 -0
  20. package/dist/file-provider/types.js +47 -0
  21. package/dist/file-provider/types.js.map +1 -0
  22. package/dist/file-provider/web.d.ts +32 -0
  23. package/dist/file-provider/web.d.ts.map +1 -0
  24. package/dist/file-provider/web.js +77 -0
  25. package/dist/file-provider/web.js.map +1 -0
  26. package/dist/index.d.ts +15 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +16 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/parse/AsideHtmlParser.d.ts +12 -0
  31. package/dist/parse/AsideHtmlParser.d.ts.map +1 -0
  32. package/dist/parse/AsideHtmlParser.js +74 -0
  33. package/dist/parse/AsideHtmlParser.js.map +1 -0
  34. package/dist/parse/BlockquoteHtmlParser.d.ts +11 -0
  35. package/dist/parse/BlockquoteHtmlParser.d.ts.map +1 -0
  36. package/dist/parse/BlockquoteHtmlParser.js +28 -0
  37. package/dist/parse/BlockquoteHtmlParser.js.map +1 -0
  38. package/dist/parse/BlockquoteMarkdownParser.d.ts +11 -0
  39. package/dist/parse/BlockquoteMarkdownParser.d.ts.map +1 -0
  40. package/dist/parse/BlockquoteMarkdownParser.js +26 -0
  41. package/dist/parse/BlockquoteMarkdownParser.js.map +1 -0
  42. package/dist/parse/CodeHtmlParser.d.ts +11 -0
  43. package/dist/parse/CodeHtmlParser.d.ts.map +1 -0
  44. package/dist/parse/CodeHtmlParser.js +38 -0
  45. package/dist/parse/CodeHtmlParser.js.map +1 -0
  46. package/dist/parse/CodeMarkdownParser.d.ts +11 -0
  47. package/dist/parse/CodeMarkdownParser.d.ts.map +1 -0
  48. package/dist/parse/CodeMarkdownParser.js +29 -0
  49. package/dist/parse/CodeMarkdownParser.js.map +1 -0
  50. package/dist/parse/DfnHtmlParser.d.ts +12 -0
  51. package/dist/parse/DfnHtmlParser.d.ts.map +1 -0
  52. package/dist/parse/DfnHtmlParser.js +53 -0
  53. package/dist/parse/DfnHtmlParser.js.map +1 -0
  54. package/dist/parse/HeadingsHtmlParser.d.ts +11 -0
  55. package/dist/parse/HeadingsHtmlParser.d.ts.map +1 -0
  56. package/dist/parse/HeadingsHtmlParser.js +30 -0
  57. package/dist/parse/HeadingsHtmlParser.js.map +1 -0
  58. package/dist/parse/HeadingsMarkdownParser.d.ts +11 -0
  59. package/dist/parse/HeadingsMarkdownParser.d.ts.map +1 -0
  60. package/dist/parse/HeadingsMarkdownParser.js +26 -0
  61. package/dist/parse/HeadingsMarkdownParser.js.map +1 -0
  62. package/dist/parse/InlinesHtmlParser.d.ts +12 -0
  63. package/dist/parse/InlinesHtmlParser.d.ts.map +1 -0
  64. package/dist/parse/InlinesHtmlParser.js +150 -0
  65. package/dist/parse/InlinesHtmlParser.js.map +1 -0
  66. package/dist/parse/InlinesMarkdownParser.d.ts +11 -0
  67. package/dist/parse/InlinesMarkdownParser.d.ts.map +1 -0
  68. package/dist/parse/InlinesMarkdownParser.js +91 -0
  69. package/dist/parse/InlinesMarkdownParser.js.map +1 -0
  70. package/dist/parse/ListsHtmlParser.d.ts +11 -0
  71. package/dist/parse/ListsHtmlParser.d.ts.map +1 -0
  72. package/dist/parse/ListsHtmlParser.js +71 -0
  73. package/dist/parse/ListsHtmlParser.js.map +1 -0
  74. package/dist/parse/ListsMarkdownParser.d.ts +11 -0
  75. package/dist/parse/ListsMarkdownParser.d.ts.map +1 -0
  76. package/dist/parse/ListsMarkdownParser.js +46 -0
  77. package/dist/parse/ListsMarkdownParser.js.map +1 -0
  78. package/dist/parse/MiscHtmlParser.d.ts +12 -0
  79. package/dist/parse/MiscHtmlParser.d.ts.map +1 -0
  80. package/dist/parse/MiscHtmlParser.js +85 -0
  81. package/dist/parse/MiscHtmlParser.js.map +1 -0
  82. package/dist/parse/MiscMarkdownParser.d.ts +11 -0
  83. package/dist/parse/MiscMarkdownParser.d.ts.map +1 -0
  84. package/dist/parse/MiscMarkdownParser.js +38 -0
  85. package/dist/parse/MiscMarkdownParser.js.map +1 -0
  86. package/dist/parse/ParagraphsHtmlParser.d.ts +11 -0
  87. package/dist/parse/ParagraphsHtmlParser.d.ts.map +1 -0
  88. package/dist/parse/ParagraphsHtmlParser.js +30 -0
  89. package/dist/parse/ParagraphsHtmlParser.js.map +1 -0
  90. package/dist/parse/ParagraphsMarkdownParser.d.ts +11 -0
  91. package/dist/parse/ParagraphsMarkdownParser.d.ts.map +1 -0
  92. package/dist/parse/ParagraphsMarkdownParser.js +25 -0
  93. package/dist/parse/ParagraphsMarkdownParser.js.map +1 -0
  94. package/dist/parse/SectionsHtmlParser.d.ts +12 -0
  95. package/dist/parse/SectionsHtmlParser.d.ts.map +1 -0
  96. package/dist/parse/SectionsHtmlParser.js +58 -0
  97. package/dist/parse/SectionsHtmlParser.js.map +1 -0
  98. package/dist/parse/TablesHtmlParser.d.ts +11 -0
  99. package/dist/parse/TablesHtmlParser.d.ts.map +1 -0
  100. package/dist/parse/TablesHtmlParser.js +81 -0
  101. package/dist/parse/TablesHtmlParser.js.map +1 -0
  102. package/dist/parse/TablesMarkdownParser.d.ts +11 -0
  103. package/dist/parse/TablesMarkdownParser.d.ts.map +1 -0
  104. package/dist/parse/TablesMarkdownParser.js +56 -0
  105. package/dist/parse/TablesMarkdownParser.js.map +1 -0
  106. package/dist/parse/XrefHtmlParser.d.ts +12 -0
  107. package/dist/parse/XrefHtmlParser.d.ts.map +1 -0
  108. package/dist/parse/XrefHtmlParser.js +124 -0
  109. package/dist/parse/XrefHtmlParser.js.map +1 -0
  110. package/dist/parse/__tests__/assembler.test.d.ts +5 -0
  111. package/dist/parse/__tests__/assembler.test.d.ts.map +1 -0
  112. package/dist/parse/__tests__/assembler.test.js +135 -0
  113. package/dist/parse/__tests__/assembler.test.js.map +1 -0
  114. package/dist/parse/__tests__/html.test.d.ts +5 -0
  115. package/dist/parse/__tests__/html.test.d.ts.map +1 -0
  116. package/dist/parse/__tests__/html.test.js +149 -0
  117. package/dist/parse/__tests__/html.test.js.map +1 -0
  118. package/dist/parse/__tests__/markdown.test.d.ts +5 -0
  119. package/dist/parse/__tests__/markdown.test.d.ts.map +1 -0
  120. package/dist/parse/__tests__/markdown.test.js +133 -0
  121. package/dist/parse/__tests__/markdown.test.js.map +1 -0
  122. package/dist/parse/__tests__/pipeline.test.d.ts +5 -0
  123. package/dist/parse/__tests__/pipeline.test.d.ts.map +1 -0
  124. package/dist/parse/__tests__/pipeline.test.js +215 -0
  125. package/dist/parse/__tests__/pipeline.test.js.map +1 -0
  126. package/dist/parse/__tests__/respec.test.d.ts +7 -0
  127. package/dist/parse/__tests__/respec.test.d.ts.map +1 -0
  128. package/dist/parse/__tests__/respec.test.js +151 -0
  129. package/dist/parse/__tests__/respec.test.js.map +1 -0
  130. package/dist/parse/assembler.d.ts +20 -0
  131. package/dist/parse/assembler.d.ts.map +1 -0
  132. package/dist/parse/assembler.js +175 -0
  133. package/dist/parse/assembler.js.map +1 -0
  134. package/dist/parse/html/AsideHtmlParser.d.ts +12 -0
  135. package/dist/parse/html/AsideHtmlParser.d.ts.map +1 -0
  136. package/dist/parse/html/AsideHtmlParser.js +74 -0
  137. package/dist/parse/html/AsideHtmlParser.js.map +1 -0
  138. package/dist/parse/html/BlockquoteHtmlParser.d.ts +11 -0
  139. package/dist/parse/html/BlockquoteHtmlParser.d.ts.map +1 -0
  140. package/dist/parse/html/BlockquoteHtmlParser.js +28 -0
  141. package/dist/parse/html/BlockquoteHtmlParser.js.map +1 -0
  142. package/dist/parse/html/CodeHtmlParser.d.ts +11 -0
  143. package/dist/parse/html/CodeHtmlParser.d.ts.map +1 -0
  144. package/dist/parse/html/CodeHtmlParser.js +38 -0
  145. package/dist/parse/html/CodeHtmlParser.js.map +1 -0
  146. package/dist/parse/html/DfnHtmlParser.d.ts +12 -0
  147. package/dist/parse/html/DfnHtmlParser.d.ts.map +1 -0
  148. package/dist/parse/html/DfnHtmlParser.js +53 -0
  149. package/dist/parse/html/DfnHtmlParser.js.map +1 -0
  150. package/dist/parse/html/HeadingsHtmlParser.d.ts +11 -0
  151. package/dist/parse/html/HeadingsHtmlParser.d.ts.map +1 -0
  152. package/dist/parse/html/HeadingsHtmlParser.js +30 -0
  153. package/dist/parse/html/HeadingsHtmlParser.js.map +1 -0
  154. package/dist/parse/html/InlinesHtmlParser.d.ts +12 -0
  155. package/dist/parse/html/InlinesHtmlParser.d.ts.map +1 -0
  156. package/dist/parse/html/InlinesHtmlParser.js +150 -0
  157. package/dist/parse/html/InlinesHtmlParser.js.map +1 -0
  158. package/dist/parse/html/ListsHtmlParser.d.ts +11 -0
  159. package/dist/parse/html/ListsHtmlParser.d.ts.map +1 -0
  160. package/dist/parse/html/ListsHtmlParser.js +71 -0
  161. package/dist/parse/html/ListsHtmlParser.js.map +1 -0
  162. package/dist/parse/html/MiscHtmlParser.d.ts +12 -0
  163. package/dist/parse/html/MiscHtmlParser.d.ts.map +1 -0
  164. package/dist/parse/html/MiscHtmlParser.js +85 -0
  165. package/dist/parse/html/MiscHtmlParser.js.map +1 -0
  166. package/dist/parse/html/ParagraphsHtmlParser.d.ts +11 -0
  167. package/dist/parse/html/ParagraphsHtmlParser.d.ts.map +1 -0
  168. package/dist/parse/html/ParagraphsHtmlParser.js +30 -0
  169. package/dist/parse/html/ParagraphsHtmlParser.js.map +1 -0
  170. package/dist/parse/html/SectionsHtmlParser.d.ts +12 -0
  171. package/dist/parse/html/SectionsHtmlParser.d.ts.map +1 -0
  172. package/dist/parse/html/SectionsHtmlParser.js +58 -0
  173. package/dist/parse/html/SectionsHtmlParser.js.map +1 -0
  174. package/dist/parse/html/TablesHtmlParser.d.ts +11 -0
  175. package/dist/parse/html/TablesHtmlParser.d.ts.map +1 -0
  176. package/dist/parse/html/TablesHtmlParser.js +81 -0
  177. package/dist/parse/html/TablesHtmlParser.js.map +1 -0
  178. package/dist/parse/html/XrefHtmlParser.d.ts +12 -0
  179. package/dist/parse/html/XrefHtmlParser.d.ts.map +1 -0
  180. package/dist/parse/html/XrefHtmlParser.js +125 -0
  181. package/dist/parse/html/XrefHtmlParser.js.map +1 -0
  182. package/dist/parse/html/handlers/blockquote.d.ts +9 -0
  183. package/dist/parse/html/handlers/blockquote.d.ts.map +1 -0
  184. package/dist/parse/html/handlers/blockquote.js +21 -0
  185. package/dist/parse/html/handlers/blockquote.js.map +1 -0
  186. package/dist/parse/html/handlers/code.d.ts +9 -0
  187. package/dist/parse/html/handlers/code.d.ts.map +1 -0
  188. package/dist/parse/html/handlers/code.js +31 -0
  189. package/dist/parse/html/handlers/code.js.map +1 -0
  190. package/dist/parse/html/handlers/containers.d.ts +16 -0
  191. package/dist/parse/html/handlers/containers.d.ts.map +1 -0
  192. package/dist/parse/html/handlers/containers.js +25 -0
  193. package/dist/parse/html/handlers/containers.js.map +1 -0
  194. package/dist/parse/html/handlers/heading.d.ts +9 -0
  195. package/dist/parse/html/handlers/heading.d.ts.map +1 -0
  196. package/dist/parse/html/handlers/heading.js +26 -0
  197. package/dist/parse/html/handlers/heading.js.map +1 -0
  198. package/dist/parse/html/handlers/index.d.ts +23 -0
  199. package/dist/parse/html/handlers/index.d.ts.map +1 -0
  200. package/dist/parse/html/handlers/index.js +47 -0
  201. package/dist/parse/html/handlers/index.js.map +1 -0
  202. package/dist/parse/html/handlers/inline.d.ts +35 -0
  203. package/dist/parse/html/handlers/inline.d.ts.map +1 -0
  204. package/dist/parse/html/handlers/inline.js +119 -0
  205. package/dist/parse/html/handlers/inline.js.map +1 -0
  206. package/dist/parse/html/handlers/list.d.ts +9 -0
  207. package/dist/parse/html/handlers/list.d.ts.map +1 -0
  208. package/dist/parse/html/handlers/list.js +63 -0
  209. package/dist/parse/html/handlers/list.js.map +1 -0
  210. package/dist/parse/html/handlers/paragraph.d.ts +9 -0
  211. package/dist/parse/html/handlers/paragraph.d.ts.map +1 -0
  212. package/dist/parse/html/handlers/paragraph.js +20 -0
  213. package/dist/parse/html/handlers/paragraph.js.map +1 -0
  214. package/dist/parse/html/handlers/section.d.ts +9 -0
  215. package/dist/parse/html/handlers/section.d.ts.map +1 -0
  216. package/dist/parse/html/handlers/section.js +53 -0
  217. package/dist/parse/html/handlers/section.js.map +1 -0
  218. package/dist/parse/html/index.d.ts +5 -0
  219. package/dist/parse/html/index.d.ts.map +1 -0
  220. package/dist/parse/html/index.js +12 -0
  221. package/dist/parse/html/index.js.map +1 -0
  222. package/dist/parse/html/parser.d.ts +51 -0
  223. package/dist/parse/html/parser.d.ts.map +1 -0
  224. package/dist/parse/html/parser.js +228 -0
  225. package/dist/parse/html/parser.js.map +1 -0
  226. package/dist/parse/index.d.ts +16 -0
  227. package/dist/parse/index.d.ts.map +1 -0
  228. package/dist/parse/index.js +19 -0
  229. package/dist/parse/index.js.map +1 -0
  230. package/dist/parse/markdown/BlockquoteMarkdownParser.d.ts +11 -0
  231. package/dist/parse/markdown/BlockquoteMarkdownParser.d.ts.map +1 -0
  232. package/dist/parse/markdown/BlockquoteMarkdownParser.js +26 -0
  233. package/dist/parse/markdown/BlockquoteMarkdownParser.js.map +1 -0
  234. package/dist/parse/markdown/CodeMarkdownParser.d.ts +11 -0
  235. package/dist/parse/markdown/CodeMarkdownParser.d.ts.map +1 -0
  236. package/dist/parse/markdown/CodeMarkdownParser.js +29 -0
  237. package/dist/parse/markdown/CodeMarkdownParser.js.map +1 -0
  238. package/dist/parse/markdown/HeadingsMarkdownParser.d.ts +11 -0
  239. package/dist/parse/markdown/HeadingsMarkdownParser.d.ts.map +1 -0
  240. package/dist/parse/markdown/HeadingsMarkdownParser.js +26 -0
  241. package/dist/parse/markdown/HeadingsMarkdownParser.js.map +1 -0
  242. package/dist/parse/markdown/InlinesMarkdownParser.d.ts +11 -0
  243. package/dist/parse/markdown/InlinesMarkdownParser.d.ts.map +1 -0
  244. package/dist/parse/markdown/InlinesMarkdownParser.js +91 -0
  245. package/dist/parse/markdown/InlinesMarkdownParser.js.map +1 -0
  246. package/dist/parse/markdown/ListsMarkdownParser.d.ts +11 -0
  247. package/dist/parse/markdown/ListsMarkdownParser.d.ts.map +1 -0
  248. package/dist/parse/markdown/ListsMarkdownParser.js +46 -0
  249. package/dist/parse/markdown/ListsMarkdownParser.js.map +1 -0
  250. package/dist/parse/markdown/MiscMarkdownParser.d.ts +11 -0
  251. package/dist/parse/markdown/MiscMarkdownParser.d.ts.map +1 -0
  252. package/dist/parse/markdown/MiscMarkdownParser.js +38 -0
  253. package/dist/parse/markdown/MiscMarkdownParser.js.map +1 -0
  254. package/dist/parse/markdown/ParagraphsMarkdownParser.d.ts +11 -0
  255. package/dist/parse/markdown/ParagraphsMarkdownParser.d.ts.map +1 -0
  256. package/dist/parse/markdown/ParagraphsMarkdownParser.js +25 -0
  257. package/dist/parse/markdown/ParagraphsMarkdownParser.js.map +1 -0
  258. package/dist/parse/markdown/TablesMarkdownParser.d.ts +11 -0
  259. package/dist/parse/markdown/TablesMarkdownParser.d.ts.map +1 -0
  260. package/dist/parse/markdown/TablesMarkdownParser.js +56 -0
  261. package/dist/parse/markdown/TablesMarkdownParser.js.map +1 -0
  262. package/dist/parse/markdown/handlers/blockquote.d.ts +9 -0
  263. package/dist/parse/markdown/handlers/blockquote.d.ts.map +1 -0
  264. package/dist/parse/markdown/handlers/blockquote.js +22 -0
  265. package/dist/parse/markdown/handlers/blockquote.js.map +1 -0
  266. package/dist/parse/markdown/handlers/code.d.ts +9 -0
  267. package/dist/parse/markdown/handlers/code.d.ts.map +1 -0
  268. package/dist/parse/markdown/handlers/code.js +25 -0
  269. package/dist/parse/markdown/handlers/code.js.map +1 -0
  270. package/dist/parse/markdown/handlers/heading.d.ts +9 -0
  271. package/dist/parse/markdown/handlers/heading.d.ts.map +1 -0
  272. package/dist/parse/markdown/handlers/heading.js +22 -0
  273. package/dist/parse/markdown/handlers/heading.js.map +1 -0
  274. package/dist/parse/markdown/handlers/index.d.ts +23 -0
  275. package/dist/parse/markdown/handlers/index.d.ts.map +1 -0
  276. package/dist/parse/markdown/handlers/index.js +47 -0
  277. package/dist/parse/markdown/handlers/index.js.map +1 -0
  278. package/dist/parse/markdown/handlers/inline.d.ts +35 -0
  279. package/dist/parse/markdown/handlers/inline.d.ts.map +1 -0
  280. package/dist/parse/markdown/handlers/inline.js +126 -0
  281. package/dist/parse/markdown/handlers/inline.js.map +1 -0
  282. package/dist/parse/markdown/handlers/list.d.ts +9 -0
  283. package/dist/parse/markdown/handlers/list.d.ts.map +1 -0
  284. package/dist/parse/markdown/handlers/list.js +42 -0
  285. package/dist/parse/markdown/handlers/list.js.map +1 -0
  286. package/dist/parse/markdown/handlers/misc.d.ts +15 -0
  287. package/dist/parse/markdown/handlers/misc.d.ts.map +1 -0
  288. package/dist/parse/markdown/handlers/misc.js +38 -0
  289. package/dist/parse/markdown/handlers/misc.js.map +1 -0
  290. package/dist/parse/markdown/handlers/paragraph.d.ts +9 -0
  291. package/dist/parse/markdown/handlers/paragraph.d.ts.map +1 -0
  292. package/dist/parse/markdown/handlers/paragraph.js +21 -0
  293. package/dist/parse/markdown/handlers/paragraph.js.map +1 -0
  294. package/dist/parse/markdown/handlers/table.d.ts +9 -0
  295. package/dist/parse/markdown/handlers/table.d.ts.map +1 -0
  296. package/dist/parse/markdown/handlers/table.js +52 -0
  297. package/dist/parse/markdown/handlers/table.js.map +1 -0
  298. package/dist/parse/markdown/index.d.ts +5 -0
  299. package/dist/parse/markdown/index.d.ts.map +1 -0
  300. package/dist/parse/markdown/index.js +12 -0
  301. package/dist/parse/markdown/index.js.map +1 -0
  302. package/dist/parse/markdown/parser.d.ts +51 -0
  303. package/dist/parse/markdown/parser.d.ts.map +1 -0
  304. package/dist/parse/markdown/parser.js +134 -0
  305. package/dist/parse/markdown/parser.js.map +1 -0
  306. package/dist/parse/normalize.d.ts +51 -0
  307. package/dist/parse/normalize.d.ts.map +1 -0
  308. package/dist/parse/normalize.js +78 -0
  309. package/dist/parse/normalize.js.map +1 -0
  310. package/dist/parse/parsers.d.ts +37 -0
  311. package/dist/parse/parsers.d.ts.map +1 -0
  312. package/dist/parse/parsers.js +86 -0
  313. package/dist/parse/parsers.js.map +1 -0
  314. package/dist/parse/pipeline.d.ts +41 -0
  315. package/dist/parse/pipeline.d.ts.map +1 -0
  316. package/dist/parse/pipeline.js +120 -0
  317. package/dist/parse/pipeline.js.map +1 -0
  318. package/dist/parse/registry.d.ts +156 -0
  319. package/dist/parse/registry.d.ts.map +1 -0
  320. package/dist/parse/registry.js +104 -0
  321. package/dist/parse/registry.js.map +1 -0
  322. package/dist/parse/types.d.ts +67 -0
  323. package/dist/parse/types.d.ts.map +1 -0
  324. package/dist/parse/types.js +19 -0
  325. package/dist/parse/types.js.map +1 -0
  326. package/dist/pipeline/__tests__/pipeline.test.d.ts +5 -0
  327. package/dist/pipeline/__tests__/pipeline.test.d.ts.map +1 -0
  328. package/dist/pipeline/__tests__/pipeline.test.js +69 -0
  329. package/dist/pipeline/__tests__/pipeline.test.js.map +1 -0
  330. package/dist/pipeline/__tests__/single-as-workspace.test.d.ts +2 -0
  331. package/dist/pipeline/__tests__/single-as-workspace.test.d.ts.map +1 -0
  332. package/dist/pipeline/__tests__/single-as-workspace.test.js +19 -0
  333. package/dist/pipeline/__tests__/single-as-workspace.test.js.map +1 -0
  334. package/dist/pipeline/__tests__/workspace-rules.test.d.ts +11 -0
  335. package/dist/pipeline/__tests__/workspace-rules.test.d.ts.map +1 -0
  336. package/dist/pipeline/__tests__/workspace-rules.test.js +54 -0
  337. package/dist/pipeline/__tests__/workspace-rules.test.js.map +1 -0
  338. package/dist/pipeline/__tests__/workspace.test.d.ts +2 -0
  339. package/dist/pipeline/__tests__/workspace.test.d.ts.map +1 -0
  340. package/dist/pipeline/__tests__/workspace.test.js +61 -0
  341. package/dist/pipeline/__tests__/workspace.test.js.map +1 -0
  342. package/dist/pipeline/index.d.ts +34 -0
  343. package/dist/pipeline/index.d.ts.map +1 -0
  344. package/dist/pipeline/index.js +45 -0
  345. package/dist/pipeline/index.js.map +1 -0
  346. package/dist/pipeline/runner.d.ts +38 -0
  347. package/dist/pipeline/runner.d.ts.map +1 -0
  348. package/dist/pipeline/runner.js +128 -0
  349. package/dist/pipeline/runner.js.map +1 -0
  350. package/dist/pipeline/types.d.ts +106 -0
  351. package/dist/pipeline/types.d.ts.map +1 -0
  352. package/dist/pipeline/types.js +9 -0
  353. package/dist/pipeline/types.js.map +1 -0
  354. package/dist/pipeline/workspace-index.d.ts +11 -0
  355. package/dist/pipeline/workspace-index.d.ts.map +1 -0
  356. package/dist/pipeline/workspace-index.js +57 -0
  357. package/dist/pipeline/workspace-index.js.map +1 -0
  358. package/dist/plugins/__tests__/citation-transform.test.d.ts +7 -0
  359. package/dist/plugins/__tests__/citation-transform.test.d.ts.map +1 -0
  360. package/dist/plugins/__tests__/citation-transform.test.js +89 -0
  361. package/dist/plugins/__tests__/citation-transform.test.js.map +1 -0
  362. package/dist/plugins/__tests__/dfn-parsing.test.d.ts +2 -0
  363. package/dist/plugins/__tests__/dfn-parsing.test.d.ts.map +1 -0
  364. package/dist/plugins/__tests__/dfn-parsing.test.js +65 -0
  365. package/dist/plugins/__tests__/dfn-parsing.test.js.map +1 -0
  366. package/dist/plugins/__tests__/dfn-resolve.test.d.ts +5 -0
  367. package/dist/plugins/__tests__/dfn-resolve.test.d.ts.map +1 -0
  368. package/dist/plugins/__tests__/dfn-resolve.test.js +152 -0
  369. package/dist/plugins/__tests__/dfn-resolve.test.js.map +1 -0
  370. package/dist/plugins/__tests__/xref-parsing.test.d.ts +2 -0
  371. package/dist/plugins/__tests__/xref-parsing.test.d.ts.map +1 -0
  372. package/dist/plugins/__tests__/xref-parsing.test.js +66 -0
  373. package/dist/plugins/__tests__/xref-parsing.test.js.map +1 -0
  374. package/dist/plugins/aside.d.ts +12 -0
  375. package/dist/plugins/aside.d.ts.map +1 -0
  376. package/dist/plugins/aside.js +78 -0
  377. package/dist/plugins/aside.js.map +1 -0
  378. package/dist/plugins/blockquote.d.ts +11 -0
  379. package/dist/plugins/blockquote.d.ts.map +1 -0
  380. package/dist/plugins/blockquote.js +47 -0
  381. package/dist/plugins/blockquote.js.map +1 -0
  382. package/dist/plugins/citation-transform.d.ts +19 -0
  383. package/dist/plugins/citation-transform.d.ts.map +1 -0
  384. package/dist/plugins/citation-transform.js +176 -0
  385. package/dist/plugins/citation-transform.js.map +1 -0
  386. package/dist/plugins/citation.d.ts +21 -0
  387. package/dist/plugins/citation.d.ts.map +1 -0
  388. package/dist/plugins/citation.js +131 -0
  389. package/dist/plugins/citation.js.map +1 -0
  390. package/dist/plugins/code.d.ts +11 -0
  391. package/dist/plugins/code.d.ts.map +1 -0
  392. package/dist/plugins/code.js +60 -0
  393. package/dist/plugins/code.js.map +1 -0
  394. package/dist/plugins/core-html.d.ts +27 -0
  395. package/dist/plugins/core-html.d.ts.map +1 -0
  396. package/dist/plugins/core-html.js +53 -0
  397. package/dist/plugins/core-html.js.map +1 -0
  398. package/dist/plugins/core-markdown.d.ts +26 -0
  399. package/dist/plugins/core-markdown.d.ts.map +1 -0
  400. package/dist/plugins/core-markdown.js +55 -0
  401. package/dist/plugins/core-markdown.js.map +1 -0
  402. package/dist/plugins/data-cite.d.ts +12 -0
  403. package/dist/plugins/data-cite.d.ts.map +1 -0
  404. package/dist/plugins/data-cite.js +50 -0
  405. package/dist/plugins/data-cite.js.map +1 -0
  406. package/dist/plugins/dfn-resolve.d.ts +15 -0
  407. package/dist/plugins/dfn-resolve.d.ts.map +1 -0
  408. package/dist/plugins/dfn-resolve.js +257 -0
  409. package/dist/plugins/dfn-resolve.js.map +1 -0
  410. package/dist/plugins/dfn.d.ts +12 -0
  411. package/dist/plugins/dfn.d.ts.map +1 -0
  412. package/dist/plugins/dfn.js +57 -0
  413. package/dist/plugins/dfn.js.map +1 -0
  414. package/dist/plugins/directives.d.ts +8 -0
  415. package/dist/plugins/directives.d.ts.map +1 -0
  416. package/dist/plugins/directives.js +34 -0
  417. package/dist/plugins/directives.js.map +1 -0
  418. package/dist/plugins/heading.d.ts +11 -0
  419. package/dist/plugins/heading.d.ts.map +1 -0
  420. package/dist/plugins/heading.js +49 -0
  421. package/dist/plugins/heading.js.map +1 -0
  422. package/dist/plugins/index.d.ts +12 -0
  423. package/dist/plugins/index.d.ts.map +1 -0
  424. package/dist/plugins/index.js +26 -0
  425. package/dist/plugins/index.js.map +1 -0
  426. package/dist/plugins/inline.d.ts +12 -0
  427. package/dist/plugins/inline.d.ts.map +1 -0
  428. package/dist/plugins/inline.js +234 -0
  429. package/dist/plugins/inline.js.map +1 -0
  430. package/dist/plugins/list.d.ts +11 -0
  431. package/dist/plugins/list.d.ts.map +1 -0
  432. package/dist/plugins/list.js +110 -0
  433. package/dist/plugins/list.js.map +1 -0
  434. package/dist/plugins/misc.d.ts +12 -0
  435. package/dist/plugins/misc.d.ts.map +1 -0
  436. package/dist/plugins/misc.js +116 -0
  437. package/dist/plugins/misc.js.map +1 -0
  438. package/dist/plugins/paragraph.d.ts +11 -0
  439. package/dist/plugins/paragraph.d.ts.map +1 -0
  440. package/dist/plugins/paragraph.js +48 -0
  441. package/dist/plugins/paragraph.js.map +1 -0
  442. package/dist/plugins/section.d.ts +12 -0
  443. package/dist/plugins/section.d.ts.map +1 -0
  444. package/dist/plugins/section.js +62 -0
  445. package/dist/plugins/section.js.map +1 -0
  446. package/dist/plugins/table.d.ts +11 -0
  447. package/dist/plugins/table.d.ts.map +1 -0
  448. package/dist/plugins/table.js +130 -0
  449. package/dist/plugins/table.js.map +1 -0
  450. package/dist/plugins/xref.d.ts +12 -0
  451. package/dist/plugins/xref.d.ts.map +1 -0
  452. package/dist/plugins/xref.js +92 -0
  453. package/dist/plugins/xref.js.map +1 -0
  454. package/dist/postprocess/__tests__/citation-transform.test.d.ts +7 -0
  455. package/dist/postprocess/__tests__/citation-transform.test.d.ts.map +1 -0
  456. package/dist/postprocess/__tests__/citation-transform.test.js +89 -0
  457. package/dist/postprocess/__tests__/citation-transform.test.js.map +1 -0
  458. package/dist/postprocess/__tests__/dfn-resolve.test.d.ts +5 -0
  459. package/dist/postprocess/__tests__/dfn-resolve.test.d.ts.map +1 -0
  460. package/dist/postprocess/__tests__/dfn-resolve.test.js +160 -0
  461. package/dist/postprocess/__tests__/dfn-resolve.test.js.map +1 -0
  462. package/dist/postprocess/__tests__/section-id.test.d.ts +5 -0
  463. package/dist/postprocess/__tests__/section-id.test.d.ts.map +1 -0
  464. package/dist/postprocess/__tests__/section-id.test.js +222 -0
  465. package/dist/postprocess/__tests__/section-id.test.js.map +1 -0
  466. package/dist/postprocess/citation-transform.d.ts +19 -0
  467. package/dist/postprocess/citation-transform.d.ts.map +1 -0
  468. package/dist/postprocess/citation-transform.js +176 -0
  469. package/dist/postprocess/citation-transform.js.map +1 -0
  470. package/dist/postprocess/dfn-index.d.ts +16 -0
  471. package/dist/postprocess/dfn-index.d.ts.map +1 -0
  472. package/dist/postprocess/dfn-index.js +72 -0
  473. package/dist/postprocess/dfn-index.js.map +1 -0
  474. package/dist/postprocess/dfn-resolve.d.ts +15 -0
  475. package/dist/postprocess/dfn-resolve.d.ts.map +1 -0
  476. package/dist/postprocess/dfn-resolve.js +257 -0
  477. package/dist/postprocess/dfn-resolve.js.map +1 -0
  478. package/dist/postprocess/index.d.ts +15 -0
  479. package/dist/postprocess/index.d.ts.map +1 -0
  480. package/dist/postprocess/index.js +36 -0
  481. package/dist/postprocess/index.js.map +1 -0
  482. package/dist/postprocess/plugins/citation-transform.d.ts +19 -0
  483. package/dist/postprocess/plugins/citation-transform.d.ts.map +1 -0
  484. package/dist/postprocess/plugins/citation-transform.js +179 -0
  485. package/dist/postprocess/plugins/citation-transform.js.map +1 -0
  486. package/dist/postprocess/plugins/dfn-index.d.ts +16 -0
  487. package/dist/postprocess/plugins/dfn-index.d.ts.map +1 -0
  488. package/dist/postprocess/plugins/dfn-index.js +76 -0
  489. package/dist/postprocess/plugins/dfn-index.js.map +1 -0
  490. package/dist/postprocess/plugins/reference-resolve.d.ts +19 -0
  491. package/dist/postprocess/plugins/reference-resolve.d.ts.map +1 -0
  492. package/dist/postprocess/plugins/reference-resolve.js +103 -0
  493. package/dist/postprocess/plugins/reference-resolve.js.map +1 -0
  494. package/dist/postprocess/plugins/section-id.d.ts +16 -0
  495. package/dist/postprocess/plugins/section-id.d.ts.map +1 -0
  496. package/dist/postprocess/plugins/section-id.js +116 -0
  497. package/dist/postprocess/plugins/section-id.js.map +1 -0
  498. package/dist/postprocess/plugins/walk-ast.d.ts +38 -0
  499. package/dist/postprocess/plugins/walk-ast.d.ts.map +1 -0
  500. package/dist/postprocess/plugins/walk-ast.js +92 -0
  501. package/dist/postprocess/plugins/walk-ast.js.map +1 -0
  502. package/dist/postprocess/reference-resolve.d.ts +19 -0
  503. package/dist/postprocess/reference-resolve.d.ts.map +1 -0
  504. package/dist/postprocess/reference-resolve.js +105 -0
  505. package/dist/postprocess/reference-resolve.js.map +1 -0
  506. package/dist/postprocess/walk-ast.d.ts +38 -0
  507. package/dist/postprocess/walk-ast.d.ts.map +1 -0
  508. package/dist/postprocess/walk-ast.js +94 -0
  509. package/dist/postprocess/walk-ast.js.map +1 -0
  510. package/dist/preprocess/__tests__/pipeline.test.d.ts +5 -0
  511. package/dist/preprocess/__tests__/pipeline.test.d.ts.map +1 -0
  512. package/dist/preprocess/__tests__/pipeline.test.js +188 -0
  513. package/dist/preprocess/__tests__/pipeline.test.js.map +1 -0
  514. package/dist/preprocess/__tests__/resolver.test.d.ts +5 -0
  515. package/dist/preprocess/__tests__/resolver.test.d.ts.map +1 -0
  516. package/dist/preprocess/__tests__/resolver.test.js +165 -0
  517. package/dist/preprocess/__tests__/resolver.test.js.map +1 -0
  518. package/dist/preprocess/__tests__/scan-html.test.d.ts +5 -0
  519. package/dist/preprocess/__tests__/scan-html.test.d.ts.map +1 -0
  520. package/dist/preprocess/__tests__/scan-html.test.js +99 -0
  521. package/dist/preprocess/__tests__/scan-html.test.js.map +1 -0
  522. package/dist/preprocess/__tests__/scan-markdown.test.d.ts +5 -0
  523. package/dist/preprocess/__tests__/scan-markdown.test.d.ts.map +1 -0
  524. package/dist/preprocess/__tests__/scan-markdown.test.js +92 -0
  525. package/dist/preprocess/__tests__/scan-markdown.test.js.map +1 -0
  526. package/dist/preprocess/config/doc-config.d.ts +30 -0
  527. package/dist/preprocess/config/doc-config.d.ts.map +1 -0
  528. package/dist/preprocess/config/doc-config.js +85 -0
  529. package/dist/preprocess/config/doc-config.js.map +1 -0
  530. package/dist/preprocess/config/index.d.ts +9 -0
  531. package/dist/preprocess/config/index.d.ts.map +1 -0
  532. package/dist/preprocess/config/index.js +7 -0
  533. package/dist/preprocess/config/index.js.map +1 -0
  534. package/dist/preprocess/config/loader.d.ts +61 -0
  535. package/dist/preprocess/config/loader.d.ts.map +1 -0
  536. package/dist/preprocess/config/loader.js +40 -0
  537. package/dist/preprocess/config/loader.js.map +1 -0
  538. package/dist/preprocess/config/normalize.d.ts +19 -0
  539. package/dist/preprocess/config/normalize.d.ts.map +1 -0
  540. package/dist/preprocess/config/normalize.js +106 -0
  541. package/dist/preprocess/config/normalize.js.map +1 -0
  542. package/dist/preprocess/config/types.d.ts +40 -0
  543. package/dist/preprocess/config/types.d.ts.map +1 -0
  544. package/dist/preprocess/config/types.js +8 -0
  545. package/dist/preprocess/config/types.js.map +1 -0
  546. package/dist/preprocess/include/index.d.ts +7 -0
  547. package/dist/preprocess/include/index.d.ts.map +1 -0
  548. package/dist/preprocess/include/index.js +7 -0
  549. package/dist/preprocess/include/index.js.map +1 -0
  550. package/dist/preprocess/include/resolver.d.ts +40 -0
  551. package/dist/preprocess/include/resolver.d.ts.map +1 -0
  552. package/dist/preprocess/include/resolver.js +187 -0
  553. package/dist/preprocess/include/resolver.js.map +1 -0
  554. package/dist/preprocess/include/scan-html.d.ts +31 -0
  555. package/dist/preprocess/include/scan-html.d.ts.map +1 -0
  556. package/dist/preprocess/include/scan-html.js +100 -0
  557. package/dist/preprocess/include/scan-html.js.map +1 -0
  558. package/dist/preprocess/include/scan-markdown.d.ts +31 -0
  559. package/dist/preprocess/include/scan-markdown.d.ts.map +1 -0
  560. package/dist/preprocess/include/scan-markdown.js +83 -0
  561. package/dist/preprocess/include/scan-markdown.js.map +1 -0
  562. package/dist/preprocess/index.d.ts +16 -0
  563. package/dist/preprocess/index.d.ts.map +1 -0
  564. package/dist/preprocess/index.js +16 -0
  565. package/dist/preprocess/index.js.map +1 -0
  566. package/dist/preprocess/pipeline.d.ts +57 -0
  567. package/dist/preprocess/pipeline.d.ts.map +1 -0
  568. package/dist/preprocess/pipeline.js +100 -0
  569. package/dist/preprocess/pipeline.js.map +1 -0
  570. package/dist/preprocess/types.d.ts +197 -0
  571. package/dist/preprocess/types.d.ts.map +1 -0
  572. package/dist/preprocess/types.js +22 -0
  573. package/dist/preprocess/types.js.map +1 -0
  574. package/dist/types/ast.generated.d.ts +517 -0
  575. package/dist/types/ast.generated.d.ts.map +1 -0
  576. package/dist/types/ast.generated.js +66 -0
  577. package/dist/types/ast.generated.js.map +1 -0
  578. package/dist/validation/validate.d.ts +86 -0
  579. package/dist/validation/validate.d.ts.map +1 -0
  580. package/dist/validation/validate.js +162 -0
  581. package/dist/validation/validate.js.map +1 -0
  582. package/dist/workspace/__tests__/sort.test.d.ts +2 -0
  583. package/dist/workspace/__tests__/sort.test.d.ts.map +1 -0
  584. package/dist/workspace/__tests__/sort.test.js +122 -0
  585. package/dist/workspace/__tests__/sort.test.js.map +1 -0
  586. package/dist/workspace/index.d.ts +8 -0
  587. package/dist/workspace/index.d.ts.map +1 -0
  588. package/dist/workspace/index.js +7 -0
  589. package/dist/workspace/index.js.map +1 -0
  590. package/dist/workspace/sort.d.ts +49 -0
  591. package/dist/workspace/sort.d.ts.map +1 -0
  592. package/dist/workspace/sort.js +114 -0
  593. package/dist/workspace/sort.js.map +1 -0
  594. package/package.json +46 -81
  595. package/schema/spec-ast.schema.json +1440 -0
  596. package/bin/speculator.mjs +0 -76
  597. package/dist/browser.cjs +0 -1690
  598. package/dist/browser.d.cts +0 -418
  599. package/dist/browser.d.ts +0 -418
  600. package/dist/browser.js +0 -36
  601. package/dist/chunk-H7C7MOU6.js +0 -28
  602. package/dist/chunk-V4GSFQE7.js +0 -1646
  603. package/dist/cli/export-assertions.cjs +0 -1710
  604. package/dist/cli/export-assertions.d.cts +0 -25
  605. package/dist/cli/export-assertions.d.ts +0 -25
  606. package/dist/cli/export-assertions.js +0 -107
  607. package/dist/node.cjs +0 -1712
  608. package/dist/node.d.cts +0 -17
  609. package/dist/node.d.ts +0 -17
  610. package/dist/node.js +0 -40
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-as-workspace.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/single-as-workspace.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;YAC9B,KAAK,EAAE,UAAU;YACjB,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Workspace Hierarchical Rules Tests
3
+ *
4
+ * NOTE: These tests are now obsolete as workspace validation has been moved
5
+ * to the standalone @openuji/speculator-lint package.
6
+ *
7
+ * The core pipeline no longer performs validation - it only parses, indexes, and resolves.
8
+ * See @openuji/speculator-lint package for workspace rule validation tests.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=workspace-rules.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-rules.test.d.ts","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace-rules.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Workspace Hierarchical Rules Tests
3
+ *
4
+ * NOTE: These tests are now obsolete as workspace validation has been moved
5
+ * to the standalone @openuji/speculator-lint package.
6
+ *
7
+ * The core pipeline no longer performs validation - it only parses, indexes, and resolves.
8
+ * See @openuji/speculator-lint package for workspace rule validation tests.
9
+ */
10
+ import { describe, it, expect } from 'vitest';
11
+ import { SpeculatorPipeline } from '../runner.js';
12
+ import { corePlugins } from '../../postprocess/index.js';
13
+ import { MemoryFileProvider } from '#src/file-provider/memory';
14
+ describe('Workspace Basic Functionality', () => {
15
+ it('should process workspace with multiple documents', async () => {
16
+ const fileProvider = new MemoryFileProvider();
17
+ fileProvider.setFile('/spec/high.html', `
18
+ <dfn id="dfn-concept">Concept A</dfn>
19
+ `);
20
+ fileProvider.setFile('/spec/low.html', `
21
+ <p>Some content</p>
22
+ `);
23
+ const pipeline = new SpeculatorPipeline(corePlugins);
24
+ const result = await pipeline.runWorkspace({
25
+ entries: [
26
+ { entry: '/spec/high.html' },
27
+ { entry: '/spec/low.html' }
28
+ ],
29
+ fileProvider
30
+ });
31
+ expect(result.workspace).toBeDefined();
32
+ expect(result.workspace?.documents.length).toBe(2);
33
+ });
34
+ it('should allow cross-document references', async () => {
35
+ const fileProvider = new MemoryFileProvider();
36
+ fileProvider.setFile('/spec/high.html', `
37
+ <dfn id="dfn-concept-a">Concept A</dfn>
38
+ `);
39
+ fileProvider.setFile('/spec/low.html', `
40
+ <p>Reference to <a data-link-type="dfn">Concept A</a></p>
41
+ `);
42
+ const pipeline = new SpeculatorPipeline(corePlugins);
43
+ const result = await pipeline.runWorkspace({
44
+ entries: [
45
+ { entry: '/spec/high.html' },
46
+ { entry: '/spec/low.html' }
47
+ ],
48
+ fileProvider
49
+ });
50
+ expect(result.workspace).toBeDefined();
51
+ expect(result.workspace?.documents.length).toBe(2);
52
+ });
53
+ });
54
+ //# sourceMappingURL=workspace-rules.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-rules.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace-rules.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE;;SAEvC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE;;SAEtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YACvC,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBAC5B,EAAE,KAAK,EAAE,gBAAgB,EAAE;aAC9B;YACD,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE;;SAEvC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE;;SAEtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YACvC,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBAC5B,EAAE,KAAK,EAAE,gBAAgB,EAAE;aAC9B;YACD,YAAY;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspace.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.test.d.ts","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { SpeculatorPipeline } from '../runner.js';
3
+ import { MemoryFileProvider } from '#src/file-provider/memory';
4
+ import { corePlugins } from '#src/postprocess/index.js';
5
+ describe('Workspace processing', () => {
6
+ it('should resolve cross-document references between HTML documents', async () => {
7
+ const fileProvider = new MemoryFileProvider();
8
+ // Spec A defines a term
9
+ fileProvider.setFile('/spec-a.html', `
10
+ <section>
11
+ <h1>Spec A</h1>
12
+ <p>This defines <dfn id="term-a">Term A</dfn>.</p>
13
+ </section>
14
+ `);
15
+ // Spec B references that term
16
+ fileProvider.setFile('/spec-b.html', `
17
+ <section>
18
+ <h1>Spec B</h1>
19
+ <p>This references <a data-link-type="dfn">Term A</a>.</p>
20
+ </section>
21
+ `);
22
+ const pipeline = new SpeculatorPipeline(corePlugins);
23
+ const result = await pipeline.runWorkspace({
24
+ entries: [
25
+ { entry: '/spec-a.html' },
26
+ { entry: '/spec-b.html' }
27
+ ],
28
+ fileProvider
29
+ });
30
+ expect(result.workspace).toBeDefined();
31
+ expect(result.workspace?.type).toBe('workspace');
32
+ expect(result.workspace?.documents.length).toBe(2);
33
+ // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
34
+ const docA = result.workspace?.documents.find(d => d.sourcePos?.file === '/spec-a.html');
35
+ // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
36
+ const docB = result.workspace?.documents.find(d => d.sourcePos?.file === '/spec-b.html');
37
+ // Check if Term A was indexed in docA
38
+ expect(docA.indexes?.definitions?.length).toBeGreaterThan(0);
39
+ // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
40
+ const termA = docA.indexes?.definitions?.find(d => d.term === 'term a'); // normalized
41
+ expect(termA).toBeDefined();
42
+ expect(termA.id).toBe('term-a');
43
+ // Check if Term A was resolved in docB
44
+ let resolved = false;
45
+ // Deep walk docB to find the reference
46
+ const findRef = (node) => {
47
+ if (typeof node === 'object' && node !== null && 'type' in node) {
48
+ if (node.type === 'reference' && 'targetTerm' in node && node.targetTerm === 'term a') {
49
+ expect('targetId' in node ? node.targetId : undefined).toBe('term-a');
50
+ resolved = true;
51
+ }
52
+ if ('children' in node && Array.isArray(node.children)) {
53
+ node.children.forEach(findRef);
54
+ }
55
+ }
56
+ };
57
+ docB.children.forEach(findRef);
58
+ expect(resolved).toBe(true);
59
+ });
60
+ });
61
+ //# sourceMappingURL=workspace.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.test.js","sourceRoot":"","sources":["../../../src/pipeline/__tests__/workspace.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Pipeline Entrypoint
3
+ *
4
+ * Single entrypoint for processing specifications with plugins.
5
+ */
6
+ import type { SpeculateOptions, SpeculateResult } from './types.js';
7
+ export type { Plugin, Phase, PostprocessPhase, SpeculateOptions, SpeculateResult, Workspace } from './types.js';
8
+ export { SpeculatorPipeline } from './runner.js';
9
+ export { PHASES, POSTPROCESS_PHASES } from './types.js';
10
+ /**
11
+ * Process a specification with the given plugins.
12
+ *
13
+ * This is the main entrypoint for the speculator pipeline.
14
+ *
15
+ * @param options - Pipeline options including entry, config, and plugins
16
+ * @returns Result with document and diagnostics
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { speculate, coreMarkdownPlugin, coreHtmlPlugin } from 'speculator';
21
+ *
22
+ * const result = await speculate({
23
+ * entry: './spec/index.md',
24
+ * configPath: './spec/config.respec.json',
25
+ * plugins: [coreMarkdownPlugin, coreHtmlPlugin],
26
+ * });
27
+ *
28
+ * if (!result.hasErrors) {
29
+ * console.log(result.document);
30
+ * }
31
+ * ```
32
+ */
33
+ export declare function speculate(options: SpeculateOptions): Promise<SpeculateResult>;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGpE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAcnF"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Pipeline Entrypoint
3
+ *
4
+ * Single entrypoint for processing specifications with plugins.
5
+ */
6
+ import { NodeFileProvider } from '#src/file-provider/node';
7
+ import { SpeculatorPipeline } from './runner.js';
8
+ export { SpeculatorPipeline } from './runner.js';
9
+ export { PHASES, POSTPROCESS_PHASES } from './types.js';
10
+ /**
11
+ * Process a specification with the given plugins.
12
+ *
13
+ * This is the main entrypoint for the speculator pipeline.
14
+ *
15
+ * @param options - Pipeline options including entry, config, and plugins
16
+ * @returns Result with document and diagnostics
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { speculate, coreMarkdownPlugin, coreHtmlPlugin } from 'speculator';
21
+ *
22
+ * const result = await speculate({
23
+ * entry: './spec/index.md',
24
+ * configPath: './spec/config.respec.json',
25
+ * plugins: [coreMarkdownPlugin, coreHtmlPlugin],
26
+ * });
27
+ *
28
+ * if (!result.hasErrors) {
29
+ * console.log(result.document);
30
+ * }
31
+ * ```
32
+ */
33
+ export async function speculate(options) {
34
+ // Use provided file provider or default to Node
35
+ const fileProvider = options.fileProvider ?? new NodeFileProvider();
36
+ // Create pipeline with plugins
37
+ const pipeline = new SpeculatorPipeline(options.plugins);
38
+ // Run the pipeline
39
+ return pipeline.run({
40
+ entry: options.entry,
41
+ configPath: options.configPath,
42
+ fileProvider,
43
+ });
44
+ }
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAyB;IACrD,gDAAgD;IAChD,MAAM,YAAY,GAAiB,OAAO,CAAC,YAAY,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAElF,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAGzD,mBAAmB;IACnB,OAAO,QAAQ,CAAC,GAAG,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY;KACf,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Pipeline Runner
3
+ *
4
+ * Orchestrates plugin execution across postprocess phases.
5
+ * Parsing is handled by parser modules registered via html/index and markdown/index.
6
+ */
7
+ import type { FileProvider } from '#src/file-provider/types';
8
+ import type { Plugin, SpeculateResult } from './types.js';
9
+ /**
10
+ * Speculator Pipeline Runner
11
+ *
12
+ * Coordinates execution of plugins across pipeline phases.
13
+ * In a workspace-first architecture, all runs produce a Workspace AST.
14
+ */
15
+ export declare class SpeculatorPipeline {
16
+ private plugins;
17
+ constructor(plugins?: Plugin[]);
18
+ /**
19
+ * Run the pipeline for a single document.
20
+ * Consolidates to runWorkspace internally.
21
+ */
22
+ run(options: {
23
+ entry: string;
24
+ configPath?: string;
25
+ fileProvider: FileProvider;
26
+ }): Promise<SpeculateResult>;
27
+ /**
28
+ * Run the complete pipeline for a workspace (one or more documents)
29
+ */
30
+ runWorkspace(options: {
31
+ entries: {
32
+ entry: string;
33
+ configPath?: string;
34
+ }[];
35
+ fileProvider: FileProvider;
36
+ }): Promise<SpeculateResult>;
37
+ }
38
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK7D,OAAO,KAAK,EACR,MAAM,EAEN,eAAe,EAElB,MAAM,YAAY,CAAC;AAiCpB;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,OAAO,CAAW;gBAEd,OAAO,GAAE,MAAM,EAAO;IAIlC;;;OAGG;IACG,GAAG,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,YAAY,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;IAO5B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAClD,YAAY,EAAE,YAAY,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;CAmF/B"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Pipeline Runner
3
+ *
4
+ * Orchestrates plugin execution across postprocess phases.
5
+ * Parsing is handled by parser modules registered via html/index and markdown/index.
6
+ */
7
+ import { preprocess } from '#src/preprocess/pipeline';
8
+ import { parseWithRegistry } from '#src/parse/pipeline';
9
+ import { ParseHandlerRegistry } from '#src/parse/registry';
10
+ import { coreHtmlParsers, coreMarkdownParsers } from '#src/parse/parsers';
11
+ import { buildGlobalIndex, finalizeWorkspace } from './workspace-index.js';
12
+ // Default order for plugins that don't specify
13
+ const DEFAULT_ORDER = 100;
14
+ /**
15
+ * Get plugin order for a specific phase
16
+ */
17
+ function getPluginOrder(plugin, phase) {
18
+ return plugin.order?.[phase] ?? DEFAULT_ORDER;
19
+ }
20
+ /**
21
+ * Sort plugins by order for a given phase
22
+ */
23
+ function sortPluginsForPhase(plugins, phase) {
24
+ return [...plugins].sort((a, b) => getPluginOrder(a, phase) - getPluginOrder(b, phase));
25
+ }
26
+ /**
27
+ * Register core parser modules to a registry
28
+ */
29
+ function registerCoreParsers(registry) {
30
+ for (const parser of coreHtmlParsers) {
31
+ registry.registerHtmlParser(parser);
32
+ }
33
+ for (const parser of coreMarkdownParsers) {
34
+ registry.registerMarkdownParser(parser);
35
+ }
36
+ }
37
+ /**
38
+ * Speculator Pipeline Runner
39
+ *
40
+ * Coordinates execution of plugins across pipeline phases.
41
+ * In a workspace-first architecture, all runs produce a Workspace AST.
42
+ */
43
+ export class SpeculatorPipeline {
44
+ plugins;
45
+ constructor(plugins = []) {
46
+ this.plugins = plugins;
47
+ }
48
+ /**
49
+ * Run the pipeline for a single document.
50
+ * Consolidates to runWorkspace internally.
51
+ */
52
+ async run(options) {
53
+ return this.runWorkspace({
54
+ entries: [{ entry: options.entry, configPath: options.configPath }],
55
+ fileProvider: options.fileProvider
56
+ });
57
+ }
58
+ /**
59
+ * Run the complete pipeline for a workspace (one or more documents)
60
+ */
61
+ async runWorkspace(options) {
62
+ const results = [];
63
+ // 1. Initial run: Preprocess + Parse
64
+ for (const entryConfig of options.entries) {
65
+ const preprocessResult = await preprocess({
66
+ entry: entryConfig.entry,
67
+ configPath: entryConfig.configPath,
68
+ fileProvider: options.fileProvider,
69
+ });
70
+ if (!preprocessResult.result)
71
+ continue;
72
+ const registry = new ParseHandlerRegistry();
73
+ registerCoreParsers(registry);
74
+ const parseResult = parseWithRegistry(preprocessResult.result, registry);
75
+ if (!parseResult.result)
76
+ continue;
77
+ results.push({ doc: parseResult.result.document, entry: entryConfig.entry });
78
+ }
79
+ if (results.length === 0) {
80
+ return {};
81
+ }
82
+ const runtimeWorkspace = {
83
+ documents: new Map(results.map(r => [r.entry, r.doc])),
84
+ documentLevels: new Map(results.map((r, i) => [r.entry, i])),
85
+ globalIndex: { definitions: new Map(), bibliography: new Map() }
86
+ };
87
+ // 2. TRANSFORM phase
88
+ const transformPlugins = sortPluginsForPhase(this.plugins.filter(p => p.transform), 'transform');
89
+ for (const res of results) {
90
+ const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
91
+ for (const plugin of transformPlugins) {
92
+ await plugin.transform({ document: res.doc, level, workspace: runtimeWorkspace });
93
+ }
94
+ }
95
+ // 3. INDEX phase
96
+ const indexPlugins = sortPluginsForPhase(this.plugins.filter(p => p.index), 'index');
97
+ for (const res of results) {
98
+ const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
99
+ for (const plugin of indexPlugins) {
100
+ await plugin.index({ document: res.doc, level, workspace: runtimeWorkspace });
101
+ }
102
+ }
103
+ // 4. AGGREGATE Global Index
104
+ runtimeWorkspace.globalIndex = buildGlobalIndex(runtimeWorkspace.documents, runtimeWorkspace.documentLevels);
105
+ // 5. RESOLVE phase
106
+ const resolvePlugins = sortPluginsForPhase(this.plugins.filter(p => p.resolve), 'resolve');
107
+ for (const res of results) {
108
+ const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
109
+ for (const plugin of resolvePlugins) {
110
+ await plugin.resolve({ document: res.doc, level, workspace: runtimeWorkspace });
111
+ }
112
+ }
113
+ // 6. COMPUTE phase
114
+ const computePlugins = sortPluginsForPhase(this.plugins.filter(p => p.compute), 'compute');
115
+ for (const res of results) {
116
+ const level = runtimeWorkspace.documentLevels.get(res.entry) ?? 0;
117
+ for (const plugin of computePlugins) {
118
+ await plugin.compute({ document: res.doc, level, workspace: runtimeWorkspace });
119
+ }
120
+ }
121
+ // Finalize: Convert runtime workspace to AST
122
+ const workspaceAST = finalizeWorkspace(runtimeWorkspace);
123
+ return {
124
+ workspace: workspaceAST
125
+ };
126
+ }
127
+ }
128
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import type { Workspace, Document, IndexDefinitionEntry, IndexBiblioEntry, Indexes1 as GlobalIndexAST } from '#src/types/ast.generated';
2
+ export type { Workspace, Document, IndexDefinitionEntry, IndexBiblioEntry, GlobalIndexAST };
3
+ /**
4
+ * Aggregated index for runtime lookups during postprocess phases.
5
+
6
+ * Uses Maps for O(1) term resolution.
7
+ */
8
+ export interface RuntimeGlobalIndex {
9
+ /** Map of normalized term -> definitions */
10
+ definitions: Map<string, IndexDefinitionEntry[]>;
11
+ /** Map of key -> bibliography entry */
12
+ bibliography: Map<string, IndexBiblioEntry>;
13
+ }
14
+ /**
15
+ * Runtime workspace container used during pipeline execution.
16
+ */
17
+ export interface RuntimeWorkspace {
18
+ /** Documents in the workspace, keyed by their canonical entry path */
19
+ documents: Map<string, Document>;
20
+ /** Map of document entry path -> level (0 is highest) */
21
+ documentLevels: Map<string, number>;
22
+ /** Aggregated index for cross-document resolution */
23
+ globalIndex: RuntimeGlobalIndex;
24
+ }
25
+ /**
26
+ * Postprocess pipeline phases in execution order.
27
+ *
28
+ * Note: Parsing is a separate stage before postprocess, not a plugin phase.
29
+ */
30
+ export type PostprocessPhase = 'transform' | 'resolve' | 'index' | 'compute';
31
+ /**
32
+ * Ordered list of postprocess phases for iteration
33
+ */
34
+ export declare const POSTPROCESS_PHASES: PostprocessPhase[];
35
+ /**
36
+ * @deprecated Use PostprocessPhase instead
37
+ */
38
+ export type Phase = PostprocessPhase;
39
+ /**
40
+ * @deprecated Use POSTPROCESS_PHASES instead
41
+ */
42
+ export declare const PHASES: Phase[];
43
+ export interface TransformContext {
44
+ readonly document: Document;
45
+ readonly level: number;
46
+ readonly workspace?: RuntimeWorkspace;
47
+ }
48
+ export interface IndexContext {
49
+ readonly document: Document;
50
+ readonly level: number;
51
+ readonly workspace?: RuntimeWorkspace;
52
+ }
53
+ export interface ResolveContext {
54
+ readonly document: Document;
55
+ readonly level: number;
56
+ readonly workspace?: RuntimeWorkspace;
57
+ }
58
+ export interface ComputeContext {
59
+ readonly document: Document;
60
+ readonly level: number;
61
+ readonly workspace?: RuntimeWorkspace;
62
+ }
63
+ /**
64
+ * Postprocess plugin interface.
65
+ *
66
+ * Plugins register hooks for postprocess phases only.
67
+ * Parsing is handled separately by parser modules in src/parse/.
68
+ */
69
+ export interface Plugin {
70
+ /** Unique plugin name */
71
+ name: string;
72
+ /**
73
+ * Optional ordering per phase.
74
+ * Lower numbers run first. Default is 100.
75
+ */
76
+ order?: Partial<Record<PostprocessPhase, number>>;
77
+ /** Transform phase hook */
78
+ transform?(ctx: TransformContext): Promise<void>;
79
+ /** Index phase hook (runs before resolve to build indexes) */
80
+ index?(ctx: IndexContext): Promise<void>;
81
+ /** Resolve phase hook (uses indexes) */
82
+ resolve?(ctx: ResolveContext): Promise<void>;
83
+ /** Compute phase hook */
84
+ compute?(ctx: ComputeContext): Promise<void>;
85
+ }
86
+ /**
87
+ * Options for the speculate() entrypoint
88
+ */
89
+ export interface SpeculateOptions {
90
+ /** Path to entry file (format.md or format.html) */
91
+ entry: string;
92
+ /** Optional path to config file (e.g., config.respec.json) */
93
+ configPath?: string;
94
+ /** Plugins to execute during postprocess phases */
95
+ plugins: Plugin[];
96
+ /** File provider for reading files (defaults to NodeFileProvider) */
97
+ fileProvider?: import('#src/file-provider/types').FileProvider;
98
+ }
99
+ /**
100
+ * Result from speculate()
101
+ */
102
+ export interface SpeculateResult {
103
+ /** The root Workspace AST */
104
+ workspace?: Workspace;
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ordered list of postprocess phases for iteration
3
+ */
4
+ export const POSTPROCESS_PHASES = ['transform', 'index', 'resolve', 'compute'];
5
+ /**
6
+ * @deprecated Use POSTPROCESS_PHASES instead
7
+ */
8
+ export const PHASES = POSTPROCESS_PHASES;
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"AAkDA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAOnG;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAY,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Document, RuntimeGlobalIndex, RuntimeWorkspace, Workspace } from './types.js';
2
+ /**
3
+ * Build a global index from a collection of documents.
4
+ */
5
+ export declare function buildGlobalIndex(documents: Map<string, Document>, _documentLevels: Map<string, number>): RuntimeGlobalIndex;
6
+ /**
7
+ * Convert a RuntimeWorkspace into a Workspace AST.
8
+ * This flattens the maps into arrays as defined by the schema.
9
+ */
10
+ export declare function finalizeWorkspace(runtime: RuntimeWorkspace): Workspace;
11
+ //# sourceMappingURL=workspace-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-index.d.ts","sourceRoot":"","sources":["../../src/pipeline/workspace-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EAGR,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EAEZ,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,kBAAkB,CAqCpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAiBtE"}
@@ -0,0 +1,57 @@
1
+ import { normalizeTerm } from '#src/parse/normalize';
2
+ /**
3
+ * Build a global index from a collection of documents.
4
+ */
5
+ export function buildGlobalIndex(documents, _documentLevels) {
6
+ const definitions = new Map();
7
+ const bibliography = new Map();
8
+ for (const [, doc] of documents) {
9
+ // Aggregate definitions
10
+ if (doc.indexes?.definitions) {
11
+ for (const entry of doc.indexes.definitions) {
12
+ const linkTexts = entry.linkTexts || [entry.term];
13
+ // Add primary term and all aliases to definitions lookup
14
+ const termsToProcess = new Set([entry.term, ...linkTexts]);
15
+ for (const term of termsToProcess) {
16
+ const key = normalizeTerm(term);
17
+ const existing = definitions.get(key) || [];
18
+ // Add entry to definitions
19
+ existing.push(entry);
20
+ definitions.set(key, existing);
21
+ }
22
+ }
23
+ }
24
+ // Aggregate bibliography
25
+ if (doc.indexes?.bibliography) {
26
+ for (const entry of doc.indexes.bibliography) {
27
+ if (!bibliography.has(entry.key)) {
28
+ bibliography.set(entry.key, entry);
29
+ }
30
+ }
31
+ }
32
+ }
33
+ return {
34
+ definitions,
35
+ bibliography,
36
+ };
37
+ }
38
+ /**
39
+ * Convert a RuntimeWorkspace into a Workspace AST.
40
+ * This flattens the maps into arrays as defined by the schema.
41
+ */
42
+ export function finalizeWorkspace(runtime) {
43
+ const globalIndex = {
44
+ // Flat array of all unique definition entries
45
+ // Note: Multiple terms might point to the same entry object.
46
+ // We collect the unique objects.
47
+ definitions: Array.from(new Set(Array.from(runtime.globalIndex.definitions.values()).flat())),
48
+ bibliography: Array.from(runtime.globalIndex.bibliography.values())
49
+ };
50
+ return {
51
+ type: 'workspace',
52
+ schemaVersion: '1.1.0',
53
+ documents: Array.from(runtime.documents.values()),
54
+ globalIndex
55
+ };
56
+ }
57
+ //# sourceMappingURL=workspace-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-index.js","sourceRoot":"","sources":["../../src/pipeline/workspace-index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC5B,SAAgC,EAChC,eAAoC;IAEpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEzD,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QAC9B,wBAAwB;QACxB,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElD,yDAAyD;gBACzD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC3D,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;oBAChC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAE5C,2BAA2B;oBAC3B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,WAAW;QACX,YAAY;KACf,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAyB;IACvD,MAAM,WAAW,GAAmB;QAChC,8CAA8C;QAC9C,8DAA8D;QAC9D,iCAAiC;QACjC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAC9D,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KACtE,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACjD,WAAW;KACd,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Citation Transform Tests
3
+ *
4
+ * Tests for bracket citation scanning in transform phase.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=citation-transform.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citation-transform.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/__tests__/citation-transform.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}