livemark 0.7.2 → 0.9.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 (627) hide show
  1. package/README.md +115 -4
  2. package/package.json +15 -14
  3. package/source/actions/changelog/build.ts +245 -0
  4. package/source/actions/changelog/build.unit.ts +69 -0
  5. package/source/actions/config/define.ts +11 -0
  6. package/source/actions/config/define.unit.ts +33 -0
  7. package/source/actions/config/load.ts +22 -0
  8. package/source/actions/config/load.unit.ts +30 -0
  9. package/source/commands/build.ts +21 -0
  10. package/source/commands/escape.ts +77 -0
  11. package/source/commands/preview.ts +25 -0
  12. package/source/commands/start.ts +26 -0
  13. package/{build/website → source}/components/Article.tsx +44 -44
  14. package/{build/website → source}/components/Callout.tsx +1 -1
  15. package/{build/website → source}/components/Layout.tsx +3 -14
  16. package/{build/website → source}/components/LinkButton.tsx +1 -1
  17. package/{build/website → source}/components/PageToolbar.tsx +21 -8
  18. package/{build/website → source}/components/Section.tsx +1 -1
  19. package/{build/website → source}/components/SectionHeader.tsx +1 -1
  20. package/{build/website/components/MiniSidebar.tsx → source/components/Sidebar.tsx} +21 -5
  21. package/{build/website/components/Sidebar.tsx → source/components/SidebarArticles.tsx} +22 -55
  22. package/source/components/SidebarPosts.tsx +129 -0
  23. package/source/components/SidebarReleases.tsx +85 -0
  24. package/{build/website → source}/content-collections.ts +12 -3
  25. package/{build/website → source}/elements/accordion.tsx +1 -1
  26. package/{build/website → source}/elements/alert-dialog.tsx +1 -1
  27. package/{build/website → source}/elements/alert.tsx +1 -1
  28. package/{build/website → source}/elements/aspect-ratio.tsx +1 -1
  29. package/{build/website → source}/elements/avatar.tsx +1 -1
  30. package/{build/website → source}/elements/badge.tsx +1 -1
  31. package/{build/website → source}/elements/breadcrumb.tsx +1 -1
  32. package/{build/website → source}/elements/button-group.tsx +1 -1
  33. package/{build/website → source}/elements/button.tsx +1 -1
  34. package/{build/website → source}/elements/calendar.tsx +1 -1
  35. package/{build/website → source}/elements/card.tsx +1 -1
  36. package/{build/website → source}/elements/carousel.tsx +1 -1
  37. package/{build/website → source}/elements/chart.tsx +1 -1
  38. package/{build/website → source}/elements/checkbox.tsx +1 -1
  39. package/{build/website → source}/elements/command.tsx +1 -1
  40. package/{build/website → source}/elements/context-menu.tsx +1 -1
  41. package/{build/website → source}/elements/dialog.tsx +1 -1
  42. package/{build/website → source}/elements/drawer.tsx +1 -1
  43. package/{build/website → source}/elements/dropdown-menu.tsx +1 -1
  44. package/{build/website → source}/elements/empty.tsx +1 -1
  45. package/{build/website → source}/elements/field.tsx +1 -1
  46. package/{build/website → source}/elements/hover-card.tsx +1 -1
  47. package/{build/website → source}/elements/input-group.tsx +1 -1
  48. package/{build/website → source}/elements/input-otp.tsx +1 -1
  49. package/{build/website → source}/elements/input.tsx +1 -1
  50. package/{build/website → source}/elements/item.tsx +1 -1
  51. package/{build/website → source}/elements/kbd.tsx +1 -1
  52. package/{build/website → source}/elements/label.tsx +1 -1
  53. package/{build/website → source}/elements/menubar.tsx +1 -1
  54. package/{build/website → source}/elements/native-select.tsx +1 -1
  55. package/{build/website → source}/elements/navigation-menu.tsx +1 -1
  56. package/{build/website → source}/elements/pagination.tsx +1 -1
  57. package/{build/website → source}/elements/popover.tsx +1 -1
  58. package/{build/website → source}/elements/progress.tsx +1 -1
  59. package/{build/website → source}/elements/radio-group.tsx +1 -1
  60. package/{build/website → source}/elements/resizable.tsx +1 -1
  61. package/{build/website → source}/elements/scroll-area.tsx +1 -1
  62. package/{build/website → source}/elements/select.tsx +1 -1
  63. package/{build/website → source}/elements/separator.tsx +1 -1
  64. package/{build/website → source}/elements/sheet.tsx +1 -1
  65. package/{build/website → source}/elements/sidebar.tsx +7 -4
  66. package/{build/website → source}/elements/skeleton.tsx +1 -1
  67. package/{build/website → source}/elements/slider.tsx +1 -1
  68. package/{build/website → source}/elements/spinner.tsx +1 -1
  69. package/{build/website → source}/elements/switch.tsx +1 -1
  70. package/{build/website → source}/elements/table.tsx +1 -1
  71. package/{build/website → source}/elements/tabs.tsx +1 -1
  72. package/{build/website → source}/elements/textarea.tsx +1 -1
  73. package/{build/website → source}/elements/toggle-group.tsx +1 -1
  74. package/{build/website → source}/elements/toggle.tsx +1 -1
  75. package/{build/website → source}/elements/tooltip.tsx +1 -1
  76. package/source/entrypoints/main.ts +12 -0
  77. package/{build/website → source}/env.d.ts +1 -1
  78. package/source/helpers/program.ts +6 -0
  79. package/{build/website → source}/helpers/section.ts +1 -1
  80. package/source/hooks/media.ts +29 -0
  81. package/source/index.ts +1 -0
  82. package/{build/website → source}/models/article.ts +5 -0
  83. package/source/models/config.ts +51 -0
  84. package/source/models/link.ts +11 -0
  85. package/source/models/patch.ts +9 -0
  86. package/source/models/section.ts +45 -0
  87. package/source/models/theme.ts +74 -0
  88. package/source/program.ts +18 -0
  89. package/source/settings.ts +6 -0
  90. package/{build/website → source}/vite.config.ts +14 -9
  91. package/{build → target}/actions/changelog/build.d.ts +1 -0
  92. package/target/actions/changelog/build.js +187 -0
  93. package/target/actions/changelog/build.unit.js +66 -0
  94. package/target/actions/config/define.js +8 -0
  95. package/target/actions/config/define.unit.js +29 -0
  96. package/target/actions/config/load.js +25 -0
  97. package/target/actions/config/load.unit.js +23 -0
  98. package/target/client.d.ts +1 -0
  99. package/target/client.js +6 -0
  100. package/target/commands/build.js +14 -0
  101. package/target/commands/escape.js +56 -0
  102. package/target/commands/preview.js +18 -0
  103. package/target/commands/start.js +19 -0
  104. package/target/components/Abbr.d.ts +5 -0
  105. package/target/components/Abbr.js +9 -0
  106. package/target/components/AnsiCode.d.ts +4 -0
  107. package/target/components/AnsiCode.js +6 -0
  108. package/target/components/Article.d.ts +5 -0
  109. package/target/components/Article.js +104 -0
  110. package/target/components/BackToTop.d.ts +3 -0
  111. package/target/components/BackToTop.js +19 -0
  112. package/target/components/Banner.d.ts +2 -0
  113. package/target/components/Banner.js +12 -0
  114. package/target/components/BlogIndex.d.ts +4 -0
  115. package/target/components/BlogIndex.js +62 -0
  116. package/target/components/Breadcrumbs.d.ts +1 -0
  117. package/target/components/Breadcrumbs.js +13 -0
  118. package/target/components/Callout.d.ts +8 -0
  119. package/target/components/Callout.js +43 -0
  120. package/target/components/Card.d.ts +7 -0
  121. package/target/components/Card.js +17 -0
  122. package/target/components/Cards.d.ts +4 -0
  123. package/target/components/Cards.js +6 -0
  124. package/target/components/ChangelogIndex.d.ts +4 -0
  125. package/target/components/ChangelogIndex.js +57 -0
  126. package/target/components/CodeBlock.d.ts +1 -0
  127. package/target/components/CodeBlock.js +47 -0
  128. package/target/components/CodeTabs.d.ts +6 -0
  129. package/target/components/CodeTabs.js +49 -0
  130. package/target/components/Column.d.ts +4 -0
  131. package/target/components/Column.js +6 -0
  132. package/target/components/Columns.d.ts +5 -0
  133. package/target/components/Columns.js +10 -0
  134. package/target/components/Content.d.ts +3 -0
  135. package/target/components/Content.js +5 -0
  136. package/target/components/ContentTab.d.ts +5 -0
  137. package/target/components/ContentTab.js +6 -0
  138. package/target/components/ContentTabs.d.ts +5 -0
  139. package/target/components/ContentTabs.js +47 -0
  140. package/target/components/DefaultCatchBoundary.d.ts +2 -0
  141. package/target/components/DefaultCatchBoundary.js +20 -0
  142. package/target/components/DefinitionList.d.ts +7 -0
  143. package/target/components/DefinitionList.js +14 -0
  144. package/target/components/Details.d.ts +5 -0
  145. package/target/components/Details.js +13 -0
  146. package/target/components/FileTree.d.ts +4 -0
  147. package/target/components/FileTree.js +17 -0
  148. package/target/components/Footer.d.ts +2 -0
  149. package/target/components/Footer.js +9 -0
  150. package/target/components/FootnoteRef.d.ts +3 -0
  151. package/target/components/FootnoteRef.js +31 -0
  152. package/target/components/Heading.d.ts +8 -0
  153. package/target/components/Heading.js +18 -0
  154. package/target/components/InlineBadge.d.ts +5 -0
  155. package/target/components/InlineBadge.js +7 -0
  156. package/target/components/InlineIcon.d.ts +5 -0
  157. package/target/components/InlineIcon.js +10 -0
  158. package/target/components/InlineToc.d.ts +4 -0
  159. package/target/components/InlineToc.js +14 -0
  160. package/target/components/Layout.d.ts +4 -0
  161. package/target/components/Layout.js +65 -0
  162. package/target/components/LinkButton.d.ts +7 -0
  163. package/target/components/LinkButton.js +11 -0
  164. package/target/components/Mermaid.d.ts +4 -0
  165. package/target/components/Mermaid.js +8 -0
  166. package/target/components/MermaidRenderer.d.ts +4 -0
  167. package/target/components/MermaidRenderer.js +32 -0
  168. package/target/components/NotFound.d.ts +3 -0
  169. package/target/components/NotFound.js +10 -0
  170. package/target/components/PackageTabs.d.ts +9 -0
  171. package/target/components/PackageTabs.js +28 -0
  172. package/target/components/PageToolbar.d.ts +7 -0
  173. package/target/components/PageToolbar.js +34 -0
  174. package/target/components/PrevNext.d.ts +4 -0
  175. package/target/components/PrevNext.js +34 -0
  176. package/target/components/Search.d.ts +2 -0
  177. package/target/components/Search.js +16 -0
  178. package/target/components/SearchDialog.d.ts +5 -0
  179. package/target/components/SearchDialog.js +139 -0
  180. package/target/components/Section.d.ts +5 -0
  181. package/target/components/Section.js +8 -0
  182. package/target/components/SectionHeader.d.ts +7 -0
  183. package/target/components/SectionHeader.js +7 -0
  184. package/target/components/Sidebar.d.ts +4 -0
  185. package/target/components/Sidebar.js +33 -0
  186. package/target/components/SidebarArticles.d.ts +2 -0
  187. package/target/components/SidebarArticles.js +45 -0
  188. package/target/components/SidebarLinks.d.ts +4 -0
  189. package/target/components/SidebarLinks.js +26 -0
  190. package/target/components/SidebarPosts.d.ts +2 -0
  191. package/target/components/SidebarPosts.js +53 -0
  192. package/target/components/SidebarReleases.d.ts +2 -0
  193. package/target/components/SidebarReleases.js +35 -0
  194. package/target/components/SidebarSections.d.ts +4 -0
  195. package/target/components/SidebarSections.js +36 -0
  196. package/target/components/SiteTitle.d.ts +2 -0
  197. package/target/components/SiteTitle.js +12 -0
  198. package/target/components/SortableTable.d.ts +5 -0
  199. package/target/components/SortableTable.js +63 -0
  200. package/target/components/SoundCloud.d.ts +4 -0
  201. package/target/components/SoundCloud.js +7 -0
  202. package/target/components/TagIndex.d.ts +5 -0
  203. package/target/components/TagIndex.js +64 -0
  204. package/target/components/Theme.d.ts +1 -0
  205. package/target/components/Theme.js +21 -0
  206. package/target/components/Toc.d.ts +12 -0
  207. package/target/components/Toc.js +128 -0
  208. package/target/components/YouTube.d.ts +4 -0
  209. package/target/components/YouTube.js +6 -0
  210. package/target/components/ZoomImage.d.ts +4 -0
  211. package/target/components/ZoomImage.js +26 -0
  212. package/target/content/article.d.ts +43 -0
  213. package/target/content/article.js +54 -0
  214. package/target/content/tag.d.ts +2 -0
  215. package/target/content/tag.js +30 -0
  216. package/target/content-collections.d.ts +2 -0
  217. package/target/content-collections.js +200 -0
  218. package/target/elements/accordion.d.ts +6 -0
  219. package/target/elements/accordion.js +19 -0
  220. package/target/elements/alert-dialog.d.ts +18 -0
  221. package/target/elements/alert-dialog.js +44 -0
  222. package/target/elements/alert.d.ts +9 -0
  223. package/target/elements/alert.js +28 -0
  224. package/target/elements/aspect-ratio.d.ts +4 -0
  225. package/target/elements/aspect-ratio.js +9 -0
  226. package/target/elements/avatar.d.ts +11 -0
  227. package/target/elements/avatar.js +23 -0
  228. package/target/elements/badge.d.ts +7 -0
  229. package/target/elements/badge.js +34 -0
  230. package/target/elements/breadcrumb.d.ts +9 -0
  231. package/target/elements/breadcrumb.js +39 -0
  232. package/target/elements/button-group.d.ts +10 -0
  233. package/target/elements/button-group.js +37 -0
  234. package/target/elements/button.d.ts +8 -0
  235. package/target/elements/button.js +35 -0
  236. package/target/elements/calendar.d.ts +10 -0
  237. package/target/elements/calendar.js +76 -0
  238. package/target/elements/card.d.ts +11 -0
  239. package/target/elements/card.js +25 -0
  240. package/target/elements/carousel.d.ts +28 -0
  241. package/target/elements/carousel.js +95 -0
  242. package/target/elements/chart.d.ts +44 -0
  243. package/target/elements/chart.js +140 -0
  244. package/target/elements/checkbox.d.ts +3 -0
  245. package/target/elements/checkbox.js +9 -0
  246. package/target/elements/collapsible.d.ts +5 -0
  247. package/target/elements/collapsible.js +13 -0
  248. package/target/elements/command.d.ts +23 -0
  249. package/target/elements/command.js +42 -0
  250. package/target/elements/context-menu.d.ts +29 -0
  251. package/target/elements/context-menu.js +54 -0
  252. package/target/elements/dialog.d.ts +16 -0
  253. package/target/elements/dialog.js +41 -0
  254. package/target/elements/direction.d.ts +1 -0
  255. package/target/elements/direction.js +2 -0
  256. package/target/elements/drawer.d.ts +12 -0
  257. package/target/elements/drawer.js +38 -0
  258. package/target/elements/dropdown-menu.d.ts +24 -0
  259. package/target/elements/dropdown-menu.js +54 -0
  260. package/target/elements/empty.d.ts +11 -0
  261. package/target/elements/empty.js +34 -0
  262. package/target/elements/field.d.ts +24 -0
  263. package/target/elements/field.js +69 -0
  264. package/target/elements/hover-card.d.ts +5 -0
  265. package/target/elements/hover-card.js +14 -0
  266. package/target/elements/input-group.d.ts +18 -0
  267. package/target/elements/input-group.js +60 -0
  268. package/target/elements/input-otp.d.ts +11 -0
  269. package/target/elements/input-otp.js +21 -0
  270. package/target/elements/input.d.ts +2 -0
  271. package/target/elements/input.js +8 -0
  272. package/target/elements/item.d.ts +21 -0
  273. package/target/elements/item.js +79 -0
  274. package/target/elements/kbd.d.ts +3 -0
  275. package/target/elements/kbd.js +10 -0
  276. package/target/elements/label.d.ts +2 -0
  277. package/target/elements/label.js +8 -0
  278. package/target/elements/menubar.d.ts +29 -0
  279. package/target/elements/menubar.js +58 -0
  280. package/target/elements/native-select.d.ts +8 -0
  281. package/target/elements/native-select.js +16 -0
  282. package/target/elements/navigation-menu.d.ts +11 -0
  283. package/target/elements/navigation-menu.js +34 -0
  284. package/target/elements/pagination.d.ts +17 -0
  285. package/target/elements/pagination.js +33 -0
  286. package/target/elements/popover.d.ts +9 -0
  287. package/target/elements/popover.js +23 -0
  288. package/target/elements/progress.d.ts +7 -0
  289. package/target/elements/progress.js +21 -0
  290. package/target/elements/radio-group.d.ts +5 -0
  291. package/target/elements/radio-group.js +12 -0
  292. package/target/elements/resizable.d.ts +7 -0
  293. package/target/elements/resizable.js +14 -0
  294. package/target/elements/scroll-area.d.ts +4 -0
  295. package/target/elements/scroll-area.js +13 -0
  296. package/target/elements/select.d.ts +15 -0
  297. package/target/elements/select.js +39 -0
  298. package/target/elements/separator.d.ts +3 -0
  299. package/target/elements/separator.js +8 -0
  300. package/target/elements/sheet.d.ts +13 -0
  301. package/target/elements/sheet.js +41 -0
  302. package/target/elements/sidebar.d.ts +63 -0
  303. package/target/elements/sidebar.js +272 -0
  304. package/target/elements/skeleton.d.ts +2 -0
  305. package/target/elements/skeleton.js +7 -0
  306. package/target/elements/slider.d.ts +3 -0
  307. package/target/elements/slider.js +15 -0
  308. package/target/elements/sonner.d.ts +3 -0
  309. package/target/elements/sonner.js +23 -0
  310. package/target/elements/spinner.d.ts +2 -0
  311. package/target/elements/spinner.js +8 -0
  312. package/target/elements/switch.d.ts +5 -0
  313. package/target/elements/switch.js +8 -0
  314. package/target/elements/table.d.ts +9 -0
  315. package/target/elements/table.js +28 -0
  316. package/target/elements/tabs.d.ts +10 -0
  317. package/target/elements/tabs.js +29 -0
  318. package/target/elements/textarea.d.ts +2 -0
  319. package/target/elements/textarea.js +7 -0
  320. package/target/elements/toggle-group.d.ts +10 -0
  321. package/target/elements/toggle-group.js +24 -0
  322. package/target/elements/toggle.d.ts +8 -0
  323. package/target/elements/toggle.js +26 -0
  324. package/target/elements/tooltip.d.ts +6 -0
  325. package/target/elements/tooltip.js +18 -0
  326. package/target/entrypoints/main.js +12 -0
  327. package/target/helpers/article-icon.d.ts +3 -0
  328. package/target/helpers/article-icon.js +34 -0
  329. package/target/helpers/article.d.ts +24 -0
  330. package/target/helpers/article.js +73 -0
  331. package/target/helpers/changelog-source.d.ts +7 -0
  332. package/target/helpers/changelog-source.js +16 -0
  333. package/target/helpers/changelog-source.unit.d.ts +1 -0
  334. package/target/helpers/changelog-source.unit.js +33 -0
  335. package/target/helpers/dynamic-icon-resolver.d.ts +5 -0
  336. package/target/helpers/dynamic-icon-resolver.js +17 -0
  337. package/target/helpers/dynamic-icon.d.ts +5 -0
  338. package/target/helpers/dynamic-icon.js +8 -0
  339. package/target/helpers/favicon.d.ts +2 -0
  340. package/target/helpers/favicon.js +11 -0
  341. package/target/helpers/model.d.ts +3 -0
  342. package/target/helpers/model.js +4 -0
  343. package/target/helpers/program.js +5 -0
  344. package/target/helpers/resolve-asset-path.d.ts +2 -0
  345. package/target/helpers/resolve-asset-path.js +9 -0
  346. package/target/helpers/resolve-includes.d.ts +2 -0
  347. package/target/helpers/resolve-includes.js +113 -0
  348. package/target/helpers/resolve-includes.unit.d.ts +1 -0
  349. package/target/helpers/resolve-includes.unit.js +76 -0
  350. package/target/helpers/search-text.d.ts +2 -0
  351. package/target/helpers/search-text.js +16 -0
  352. package/target/helpers/section.d.ts +13 -0
  353. package/target/helpers/section.js +39 -0
  354. package/target/helpers/section.unit.d.ts +1 -0
  355. package/target/helpers/section.unit.js +62 -0
  356. package/target/helpers/theme.d.ts +5 -0
  357. package/target/helpers/theme.js +23 -0
  358. package/target/helpers/toc-context.d.ts +5 -0
  359. package/target/helpers/toc-context.js +8 -0
  360. package/target/helpers/toc.d.ts +3 -0
  361. package/target/helpers/toc.js +41 -0
  362. package/target/helpers/toc.unit.d.ts +1 -0
  363. package/target/helpers/toc.unit.js +65 -0
  364. package/target/hooks/in-view.d.ts +4 -0
  365. package/target/hooks/in-view.js +23 -0
  366. package/target/hooks/media.d.ts +6 -0
  367. package/target/hooks/media.js +25 -0
  368. package/target/index.js +2 -0
  369. package/target/models/article.d.ts +58 -0
  370. package/target/models/article.js +21 -0
  371. package/{build → target}/models/config.d.ts +10 -0
  372. package/target/models/config.js +34 -0
  373. package/target/models/link.js +9 -0
  374. package/{build → target}/models/patch.d.ts +5 -0
  375. package/target/models/patch.js +7 -0
  376. package/target/models/section.js +26 -0
  377. package/target/models/theme.js +73 -0
  378. package/target/models/toc.d.ts +5 -0
  379. package/target/models/toc.js +2 -0
  380. package/target/plugins/rehype-inline-code.d.ts +19 -0
  381. package/target/plugins/rehype-inline-code.js +55 -0
  382. package/target/plugins/rehype-task-list-a11y.d.ts +10 -0
  383. package/target/plugins/rehype-task-list-a11y.js +29 -0
  384. package/target/plugins/remark-abbr.d.ts +6 -0
  385. package/target/plugins/remark-abbr.js +39 -0
  386. package/target/plugins/remark-abbr.unit.d.ts +1 -0
  387. package/target/plugins/remark-abbr.unit.js +79 -0
  388. package/target/plugins/remark-ansi.d.ts +8 -0
  389. package/target/plugins/remark-ansi.js +239 -0
  390. package/target/plugins/remark-ansi.unit.d.ts +1 -0
  391. package/target/plugins/remark-ansi.unit.js +134 -0
  392. package/target/plugins/remark-badge.d.ts +6 -0
  393. package/target/plugins/remark-badge.js +43 -0
  394. package/target/plugins/remark-badge.unit.d.ts +1 -0
  395. package/target/plugins/remark-badge.unit.js +76 -0
  396. package/target/plugins/remark-button.d.ts +6 -0
  397. package/target/plugins/remark-button.js +52 -0
  398. package/target/plugins/remark-button.unit.d.ts +1 -0
  399. package/target/plugins/remark-button.unit.js +105 -0
  400. package/target/plugins/remark-callout.d.ts +4 -0
  401. package/target/plugins/remark-callout.js +39 -0
  402. package/target/plugins/remark-card.d.ts +4 -0
  403. package/target/plugins/remark-card.js +66 -0
  404. package/target/plugins/remark-code-tabs.d.ts +4 -0
  405. package/target/plugins/remark-code-tabs.js +72 -0
  406. package/target/plugins/remark-columns.d.ts +4 -0
  407. package/target/plugins/remark-columns.js +54 -0
  408. package/target/plugins/remark-custom-heading-id.d.ts +14 -0
  409. package/target/plugins/remark-custom-heading-id.js +54 -0
  410. package/target/plugins/remark-custom-heading-id.unit.d.ts +1 -0
  411. package/target/plugins/remark-custom-heading-id.unit.js +91 -0
  412. package/target/plugins/remark-deflist.d.ts +4 -0
  413. package/target/plugins/remark-deflist.js +31 -0
  414. package/target/plugins/remark-details.d.ts +4 -0
  415. package/target/plugins/remark-details.js +33 -0
  416. package/target/plugins/remark-filetree.d.ts +12 -0
  417. package/target/plugins/remark-filetree.js +61 -0
  418. package/target/plugins/remark-filetree.unit.d.ts +1 -0
  419. package/target/plugins/remark-filetree.unit.js +87 -0
  420. package/target/plugins/remark-github-callout.d.ts +4 -0
  421. package/target/plugins/remark-github-callout.js +62 -0
  422. package/target/plugins/remark-icon.d.ts +4 -0
  423. package/target/plugins/remark-icon.js +36 -0
  424. package/target/plugins/remark-image.d.ts +9 -0
  425. package/target/plugins/remark-image.js +26 -0
  426. package/target/plugins/remark-media.d.ts +6 -0
  427. package/target/plugins/remark-media.js +52 -0
  428. package/target/plugins/remark-media.unit.d.ts +1 -0
  429. package/target/plugins/remark-media.unit.js +54 -0
  430. package/target/plugins/remark-mermaid.d.ts +4 -0
  431. package/target/plugins/remark-mermaid.js +20 -0
  432. package/target/plugins/remark-npm.d.ts +4 -0
  433. package/target/plugins/remark-npm.js +32 -0
  434. package/target/plugins/remark-steps.d.ts +6 -0
  435. package/target/plugins/remark-steps.js +30 -0
  436. package/target/plugins/remark-steps.unit.d.ts +1 -0
  437. package/target/plugins/remark-steps.unit.js +65 -0
  438. package/target/plugins/remark-tab.d.ts +6 -0
  439. package/target/plugins/remark-tab.js +76 -0
  440. package/target/plugins/remark-tab.unit.d.ts +1 -0
  441. package/target/plugins/remark-tab.unit.js +156 -0
  442. package/target/plugins/remark-toc.d.ts +6 -0
  443. package/target/plugins/remark-toc.js +33 -0
  444. package/target/plugins/remark-toc.unit.d.ts +1 -0
  445. package/target/plugins/remark-toc.unit.js +57 -0
  446. package/target/plugins/shiki-icon.d.ts +16 -0
  447. package/target/plugins/shiki-icon.js +66 -0
  448. package/target/plugins/shiki-line-highlight.d.ts +27 -0
  449. package/target/plugins/shiki-line-highlight.js +140 -0
  450. package/target/plugins/vite-livemark.d.ts +13 -0
  451. package/target/plugins/vite-livemark.js +76 -0
  452. package/target/program.js +18 -0
  453. package/target/routeTree.gen.d.ts +57 -0
  454. package/target/routeTree.gen.js +27 -0
  455. package/target/router.d.ts +6 -0
  456. package/target/router.js +26 -0
  457. package/target/routes/$.d.ts +1 -0
  458. package/target/routes/$.js +85 -0
  459. package/target/routes/__root.d.ts +1 -0
  460. package/target/routes/__root.js +69 -0
  461. package/target/server.d.ts +2 -0
  462. package/target/server.js +7 -0
  463. package/target/settings.js +7 -0
  464. package/target/utils/style.d.ts +2 -0
  465. package/target/utils/style.js +6 -0
  466. package/target/vite.config.d.ts +2 -0
  467. package/target/vite.config.js +67 -0
  468. package/build/actions/changelog/build.js +0 -158
  469. package/build/actions/changelog/build.unit.js +0 -66
  470. package/build/actions/config/define.js +0 -8
  471. package/build/actions/config/define.unit.js +0 -29
  472. package/build/actions/config/load.js +0 -25
  473. package/build/actions/config/load.unit.js +0 -23
  474. package/build/commands/build.js +0 -14
  475. package/build/commands/escape.js +0 -56
  476. package/build/commands/preview.js +0 -18
  477. package/build/commands/start.js +0 -19
  478. package/build/docs/markdown/includes/example.d.ts +0 -58
  479. package/build/docs/markdown/includes/example.js +0 -5
  480. package/build/entrypoints/main.js +0 -12
  481. package/build/helpers/program.js +0 -5
  482. package/build/index.js +0 -2
  483. package/build/livemark.config.d.ts +0 -58
  484. package/build/livemark.config.js +0 -25
  485. package/build/models/config.js +0 -34
  486. package/build/models/link.js +0 -9
  487. package/build/models/patch.js +0 -7
  488. package/build/models/section.js +0 -26
  489. package/build/models/theme.js +0 -73
  490. package/build/package.json +0 -138
  491. package/build/program.js +0 -18
  492. package/build/settings.js +0 -7
  493. package/build/vite.config.d.ts +0 -2
  494. package/build/vite.config.js +0 -48
  495. package/build/website/components/BlogSidebar.tsx +0 -162
  496. package/build/website/components/ChangelogSidebar.tsx +0 -120
  497. package/build/website/hooks/media.ts +0 -19
  498. package/build/website/routeTree.gen.ts +0 -86
  499. /package/{build/website → source}/assets/logo.svg +0 -0
  500. /package/{build/website → source}/client.tsx +0 -0
  501. /package/{build/website → source}/components/Abbr.tsx +0 -0
  502. /package/{build/website → source}/components/AnsiCode.tsx +0 -0
  503. /package/{build/website → source}/components/BackToTop.tsx +0 -0
  504. /package/{build/website → source}/components/Banner.tsx +0 -0
  505. /package/{build/website → source}/components/BlogIndex.tsx +0 -0
  506. /package/{build/website → source}/components/Breadcrumbs.tsx +0 -0
  507. /package/{build/website → source}/components/Card.tsx +0 -0
  508. /package/{build/website → source}/components/Cards.tsx +0 -0
  509. /package/{build/website → source}/components/ChangelogIndex.tsx +0 -0
  510. /package/{build/website → source}/components/CodeBlock.tsx +0 -0
  511. /package/{build/website → source}/components/CodeTabs.tsx +0 -0
  512. /package/{build/website → source}/components/Column.tsx +0 -0
  513. /package/{build/website → source}/components/Columns.tsx +0 -0
  514. /package/{build/website → source}/components/Content.tsx +0 -0
  515. /package/{build/website → source}/components/ContentTab.tsx +0 -0
  516. /package/{build/website → source}/components/ContentTabs.tsx +0 -0
  517. /package/{build/website → source}/components/DefaultCatchBoundary.tsx +0 -0
  518. /package/{build/website → source}/components/DefinitionList.tsx +0 -0
  519. /package/{build/website → source}/components/Details.tsx +0 -0
  520. /package/{build/website → source}/components/FileTree.tsx +0 -0
  521. /package/{build/website → source}/components/Footer.tsx +0 -0
  522. /package/{build/website → source}/components/FootnoteRef.tsx +0 -0
  523. /package/{build/website → source}/components/Heading.tsx +0 -0
  524. /package/{build/website → source}/components/InlineBadge.tsx +0 -0
  525. /package/{build/website → source}/components/InlineIcon.tsx +0 -0
  526. /package/{build/website → source}/components/InlineToc.tsx +0 -0
  527. /package/{build/website → source}/components/Mermaid.tsx +0 -0
  528. /package/{build/website → source}/components/MermaidRenderer.tsx +0 -0
  529. /package/{build/website → source}/components/NotFound.tsx +0 -0
  530. /package/{build/website → source}/components/PackageTabs.tsx +0 -0
  531. /package/{build/website → source}/components/PrevNext.tsx +0 -0
  532. /package/{build/website → source}/components/Search.tsx +0 -0
  533. /package/{build/website → source}/components/SearchDialog.tsx +0 -0
  534. /package/{build/website → source}/components/SidebarLinks.tsx +0 -0
  535. /package/{build/website → source}/components/SidebarSections.tsx +0 -0
  536. /package/{build/website → source}/components/SiteTitle.tsx +0 -0
  537. /package/{build/website → source}/components/SortableTable.tsx +0 -0
  538. /package/{build/website → source}/components/SoundCloud.tsx +0 -0
  539. /package/{build/website → source}/components/TagIndex.tsx +0 -0
  540. /package/{build/website → source}/components/Theme.tsx +0 -0
  541. /package/{build/website → source}/components/Toc.tsx +0 -0
  542. /package/{build/website → source}/components/YouTube.tsx +0 -0
  543. /package/{build/website → source}/components/ZoomImage.tsx +0 -0
  544. /package/{build/website → source}/content/article.ts +0 -0
  545. /package/{build/website → source}/content/tag.ts +0 -0
  546. /package/{build/website → source}/elements/collapsible.tsx +0 -0
  547. /package/{build/website → source}/elements/direction.tsx +0 -0
  548. /package/{build/website → source}/elements/sonner.tsx +0 -0
  549. /package/{build/website → source}/helpers/article-icon.ts +0 -0
  550. /package/{build/website → source}/helpers/article.ts +0 -0
  551. /package/{build/website → source}/helpers/changelog-source.ts +0 -0
  552. /package/{build/website → source}/helpers/changelog-source.unit.ts +0 -0
  553. /package/{build/website → source}/helpers/dynamic-icon-resolver.tsx +0 -0
  554. /package/{build/website → source}/helpers/dynamic-icon.tsx +0 -0
  555. /package/{build/website → source}/helpers/favicon.ts +0 -0
  556. /package/{build/website → source}/helpers/model.ts +0 -0
  557. /package/{build/website → source}/helpers/resolve-asset-path.ts +0 -0
  558. /package/{build/website → source}/helpers/resolve-includes.ts +0 -0
  559. /package/{build/website → source}/helpers/resolve-includes.unit.ts +0 -0
  560. /package/{build/website → source}/helpers/search-text.ts +0 -0
  561. /package/{build/website → source}/helpers/section.unit.ts +0 -0
  562. /package/{build/website → source}/helpers/theme.ts +0 -0
  563. /package/{build/website → source}/helpers/toc-context.ts +0 -0
  564. /package/{build/website → source}/helpers/toc.ts +0 -0
  565. /package/{build/website → source}/helpers/toc.unit.ts +0 -0
  566. /package/{build/website → source}/hooks/in-view.ts +0 -0
  567. /package/{build/website → source}/models/toc.ts +0 -0
  568. /package/{build/website → source}/plugins/rehype-inline-code.ts +0 -0
  569. /package/{build/website → source}/plugins/rehype-task-list-a11y.ts +0 -0
  570. /package/{build/website → source}/plugins/remark-abbr.ts +0 -0
  571. /package/{build/website → source}/plugins/remark-abbr.unit.ts +0 -0
  572. /package/{build/website → source}/plugins/remark-ansi.ts +0 -0
  573. /package/{build/website → source}/plugins/remark-ansi.unit.ts +0 -0
  574. /package/{build/website → source}/plugins/remark-badge.ts +0 -0
  575. /package/{build/website → source}/plugins/remark-badge.unit.ts +0 -0
  576. /package/{build/website → source}/plugins/remark-button.ts +0 -0
  577. /package/{build/website → source}/plugins/remark-button.unit.ts +0 -0
  578. /package/{build/website → source}/plugins/remark-callout.ts +0 -0
  579. /package/{build/website → source}/plugins/remark-card.ts +0 -0
  580. /package/{build/website → source}/plugins/remark-code-tabs.ts +0 -0
  581. /package/{build/website → source}/plugins/remark-columns.ts +0 -0
  582. /package/{build/website → source}/plugins/remark-custom-heading-id.ts +0 -0
  583. /package/{build/website → source}/plugins/remark-custom-heading-id.unit.ts +0 -0
  584. /package/{build/website → source}/plugins/remark-deflist.ts +0 -0
  585. /package/{build/website → source}/plugins/remark-details.ts +0 -0
  586. /package/{build/website → source}/plugins/remark-filetree.ts +0 -0
  587. /package/{build/website → source}/plugins/remark-filetree.unit.ts +0 -0
  588. /package/{build/website → source}/plugins/remark-github-callout.ts +0 -0
  589. /package/{build/website → source}/plugins/remark-icon.ts +0 -0
  590. /package/{build/website → source}/plugins/remark-image.ts +0 -0
  591. /package/{build/website → source}/plugins/remark-media.ts +0 -0
  592. /package/{build/website → source}/plugins/remark-media.unit.ts +0 -0
  593. /package/{build/website → source}/plugins/remark-mermaid.ts +0 -0
  594. /package/{build/website → source}/plugins/remark-npm.ts +0 -0
  595. /package/{build/website → source}/plugins/remark-steps.ts +0 -0
  596. /package/{build/website → source}/plugins/remark-steps.unit.ts +0 -0
  597. /package/{build/website → source}/plugins/remark-tab.ts +0 -0
  598. /package/{build/website → source}/plugins/remark-tab.unit.ts +0 -0
  599. /package/{build/website → source}/plugins/remark-toc.ts +0 -0
  600. /package/{build/website → source}/plugins/remark-toc.unit.ts +0 -0
  601. /package/{build/website → source}/plugins/shiki-icon.ts +0 -0
  602. /package/{build/website → source}/plugins/shiki-line-highlight.ts +0 -0
  603. /package/{build/website → source}/plugins/vite-livemark.ts +0 -0
  604. /package/{build/website → source}/router.tsx +0 -0
  605. /package/{build/website → source}/routes/$.tsx +0 -0
  606. /package/{build/website → source}/routes/__root.tsx +0 -0
  607. /package/{build/website → source}/server.ts +0 -0
  608. /package/{build/website → source}/styles/general.css +0 -0
  609. /package/{build/website → source}/styles/markdown.css +0 -0
  610. /package/{build/website/helpers → source/utils}/style.ts +0 -0
  611. /package/{build → target}/actions/changelog/build.unit.d.ts +0 -0
  612. /package/{build → target}/actions/config/define.d.ts +0 -0
  613. /package/{build → target}/actions/config/define.unit.d.ts +0 -0
  614. /package/{build → target}/actions/config/load.d.ts +0 -0
  615. /package/{build → target}/actions/config/load.unit.d.ts +0 -0
  616. /package/{build → target}/commands/build.d.ts +0 -0
  617. /package/{build → target}/commands/escape.d.ts +0 -0
  618. /package/{build → target}/commands/preview.d.ts +0 -0
  619. /package/{build → target}/commands/start.d.ts +0 -0
  620. /package/{build → target}/entrypoints/main.d.ts +0 -0
  621. /package/{build → target}/helpers/program.d.ts +0 -0
  622. /package/{build → target}/index.d.ts +0 -0
  623. /package/{build → target}/models/link.d.ts +0 -0
  624. /package/{build → target}/models/section.d.ts +0 -0
  625. /package/{build → target}/models/theme.d.ts +0 -0
  626. /package/{build → target}/program.d.ts +0 -0
  627. /package/{build → target}/settings.d.ts +0 -0
@@ -0,0 +1,39 @@
1
+ import { visit } from "unist-util-visit";
2
+ /** Walk a mdast tree and convert :abbr text directives into Abbr JSX elements */
3
+ export function transformAbbrDirectives(tree) {
4
+ visit(tree, "textDirective", (node, index, parent) => {
5
+ if (node.name !== "abbr" || index === undefined || !parent)
6
+ return;
7
+ const text = node.children
8
+ .map(c => ("value" in c ? String(c.value) : ""))
9
+ .join("");
10
+ const title = node.attributes?.title ?? "";
11
+ const jsxNode = {
12
+ type: "mdxJsxTextElement",
13
+ name: "Abbr",
14
+ attributes: [
15
+ {
16
+ type: "mdxJsxAttribute",
17
+ name: "text",
18
+ value: text,
19
+ },
20
+ {
21
+ type: "mdxJsxAttribute",
22
+ name: "title",
23
+ value: title,
24
+ },
25
+ ],
26
+ children: [],
27
+ data: { _mdxExplicitJsx: true },
28
+ };
29
+ // @ts-expect-error mdxJsxTextElement is not in mdast types
30
+ parent.children.splice(index, 1, jsxNode);
31
+ });
32
+ }
33
+ /** Remark plugin that converts :abbr text directives into Abbr JSX elements */
34
+ export const remarkAbbr = () => {
35
+ return tree => {
36
+ transformAbbrDirectives(tree);
37
+ };
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWFiYnIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstYWJici50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFeEMsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxJQUFVO0lBQ2hELEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsSUFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDbEUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU07UUFFbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDdkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMvQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUE7UUFFMUMsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUUsbUJBQTRCO1lBQ2xDLElBQUksRUFBRSxNQUFNO1lBQ1osVUFBVSxFQUFFO2dCQUNWO29CQUNFLElBQUksRUFBRSxpQkFBMEI7b0JBQ2hDLElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxpQkFBMEI7b0JBQ2hDLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxLQUFLO2lCQUNiO2FBQ0Y7WUFDRCxRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUU7U0FDaEMsQ0FBQTtRQUVELDJEQUEyRDtRQUMzRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELCtFQUErRTtBQUMvRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQXFCLEdBQUcsRUFBRTtJQUMvQyxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgVGV4dERpcmVjdGl2ZSB9IGZyb20gXCJtZGFzdC11dGlsLWRpcmVjdGl2ZVwiXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuXG4vKiogV2FsayBhIG1kYXN0IHRyZWUgYW5kIGNvbnZlcnQgOmFiYnIgdGV4dCBkaXJlY3RpdmVzIGludG8gQWJiciBKU1ggZWxlbWVudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1BYmJyRGlyZWN0aXZlcyh0cmVlOiBSb290KSB7XG4gIHZpc2l0KHRyZWUsIFwidGV4dERpcmVjdGl2ZVwiLCAobm9kZTogVGV4dERpcmVjdGl2ZSwgaW5kZXgsIHBhcmVudCkgPT4ge1xuICAgIGlmIChub2RlLm5hbWUgIT09IFwiYWJiclwiIHx8IGluZGV4ID09PSB1bmRlZmluZWQgfHwgIXBhcmVudCkgcmV0dXJuXG5cbiAgICBjb25zdCB0ZXh0ID0gbm9kZS5jaGlsZHJlblxuICAgICAgLm1hcChjID0+IChcInZhbHVlXCIgaW4gYyA/IFN0cmluZyhjLnZhbHVlKSA6IFwiXCIpKVxuICAgICAgLmpvaW4oXCJcIilcblxuICAgIGNvbnN0IHRpdGxlID0gbm9kZS5hdHRyaWJ1dGVzPy50aXRsZSA/PyBcIlwiXG5cbiAgICBjb25zdCBqc3hOb2RlID0ge1xuICAgICAgdHlwZTogXCJtZHhKc3hUZXh0RWxlbWVudFwiIGFzIGNvbnN0LFxuICAgICAgbmFtZTogXCJBYmJyXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6IFwidGV4dFwiLFxuICAgICAgICAgIHZhbHVlOiB0ZXh0LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiBcInRpdGxlXCIsXG4gICAgICAgICAgdmFsdWU6IHRpdGxlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGRhdGE6IHsgX21keEV4cGxpY2l0SnN4OiB0cnVlIH0sXG4gICAgfVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hUZXh0RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxLCBqc3hOb2RlKVxuICB9KVxufVxuXG4vKiogUmVtYXJrIHBsdWdpbiB0aGF0IGNvbnZlcnRzIDphYmJyIHRleHQgZGlyZWN0aXZlcyBpbnRvIEFiYnIgSlNYIGVsZW1lbnRzICovXG5leHBvcnQgY29uc3QgcmVtYXJrQWJicjogUGx1Z2luPFtdLCBSb290PiA9ICgpID0+IHtcbiAgcmV0dXJuIHRyZWUgPT4ge1xuICAgIHRyYW5zZm9ybUFiYnJEaXJlY3RpdmVzKHRyZWUpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,79 @@
1
+ import { describe, expect, it } from "vite-plus/test";
2
+ import { transformAbbrDirectives } from "./remark-abbr.js";
3
+ function makeTextDirective(name, text, attributes) {
4
+ return {
5
+ type: "textDirective",
6
+ name,
7
+ attributes: attributes ?? {},
8
+ children: [{ type: "text", value: text }],
9
+ };
10
+ }
11
+ function makeTree(...children) {
12
+ return { type: "root", children };
13
+ }
14
+ describe("transformAbbrDirectives", () => {
15
+ function process(tree) {
16
+ transformAbbrDirectives(tree);
17
+ return tree;
18
+ }
19
+ it("should convert :abbr directive to Abbr JSX element", () => {
20
+ const directive = makeTextDirective("abbr", "HTML", {
21
+ title: "HyperText Markup Language",
22
+ });
23
+ const tree = process(makeTree({
24
+ type: "paragraph",
25
+ children: [directive],
26
+ }));
27
+ const paragraph = tree.children[0];
28
+ if (!paragraph || paragraph.type !== "paragraph")
29
+ throw new Error("Expected paragraph");
30
+ const node = paragraph.children[0];
31
+ expect(node).toMatchObject({
32
+ type: "mdxJsxTextElement",
33
+ name: "Abbr",
34
+ attributes: [
35
+ { type: "mdxJsxAttribute", name: "text", value: "HTML" },
36
+ {
37
+ type: "mdxJsxAttribute",
38
+ name: "title",
39
+ value: "HyperText Markup Language",
40
+ },
41
+ ],
42
+ children: [],
43
+ });
44
+ });
45
+ it("should use empty string when title is not provided", () => {
46
+ const directive = makeTextDirective("abbr", "CSS");
47
+ const tree = process(makeTree({
48
+ type: "paragraph",
49
+ children: [directive],
50
+ }));
51
+ const paragraph = tree.children[0];
52
+ if (!paragraph || paragraph.type !== "paragraph")
53
+ throw new Error("Expected paragraph");
54
+ const node = paragraph.children[0];
55
+ expect(node).toMatchObject({
56
+ type: "mdxJsxTextElement",
57
+ name: "Abbr",
58
+ attributes: [
59
+ { type: "mdxJsxAttribute", name: "text", value: "CSS" },
60
+ { type: "mdxJsxAttribute", name: "title", value: "" },
61
+ ],
62
+ });
63
+ });
64
+ it("should ignore non-abbr text directives", () => {
65
+ const directive = makeTextDirective("other", "Text");
66
+ const tree = process(makeTree({
67
+ type: "paragraph",
68
+ children: [directive],
69
+ }));
70
+ const paragraph = tree.children[0];
71
+ if (!paragraph || paragraph.type !== "paragraph")
72
+ throw new Error("Expected paragraph");
73
+ expect(paragraph.children[0]).toMatchObject({
74
+ type: "textDirective",
75
+ name: "other",
76
+ });
77
+ });
78
+ });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWFiYnIudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3JlbWFyay1hYmJyLnVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFMUQsU0FBUyxpQkFBaUIsQ0FDeEIsSUFBWSxFQUNaLElBQVksRUFDWixVQUFtQztJQUVuQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLGVBQWU7UUFDckIsSUFBSTtRQUNKLFVBQVUsRUFBRSxVQUFVLElBQUksRUFBRTtRQUM1QixRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQzFDLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsR0FBRyxRQUEwQjtJQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxTQUFTLE9BQU8sQ0FBQyxJQUFVO1FBQ3pCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzdCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUNsRCxLQUFLLEVBQUUsMkJBQTJCO1NBQ25DLENBQUMsQ0FBQTtRQUNGLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FDbEIsUUFBUSxDQUFDO1lBQ1AsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1NB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IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgVGV4dERpcmVjdGl2ZSB9IGZyb20gXCJtZGFzdC11dGlsLWRpcmVjdGl2ZVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyB0cmFuc2Zvcm1BYmJyRGlyZWN0aXZlcyB9IGZyb20gXCIuL3JlbWFyay1hYmJyLnRzXCJcblxuZnVuY3Rpb24gbWFrZVRleHREaXJlY3RpdmUoXG4gIG5hbWU6IHN0cmluZyxcbiAgdGV4dDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFRleHREaXJlY3RpdmUge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwidGV4dERpcmVjdGl2ZVwiLFxuICAgIG5hbWUsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyA/PyB7fSxcbiAgICBjaGlsZHJlbjogW3sgdHlwZTogXCJ0ZXh0XCIsIHZhbHVlOiB0ZXh0IH1dLFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VUcmVlKC4uLmNoaWxkcmVuOiBSb290W1wiY2hpbGRyZW5cIl0pOiBSb290IHtcbiAgcmV0dXJuIHsgdHlwZTogXCJyb290XCIsIGNoaWxkcmVuIH1cbn1cblxuZGVzY3JpYmUoXCJ0cmFuc2Zvcm1BYmJyRGlyZWN0aXZlc1wiLCAoKSA9PiB7XG4gIGZ1bmN0aW9uIHByb2Nlc3ModHJlZTogUm9vdCkge1xuICAgIHRyYW5zZm9ybUFiYnJEaXJlY3RpdmVzKHRyZWUpXG4gICAgcmV0dXJuIHRyZWVcbiAgfVxuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgOmFiYnIgZGlyZWN0aXZlIHRvIEFiYnIgSlNYIGVsZW1lbnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpcmVjdGl2ZSA9IG1ha2VUZXh0RGlyZWN0aXZlKFwiYWJiclwiLCBcIkhUTUxcIiwge1xuICAgICAgdGl0bGU6IFwiSHlwZXJUZXh0IE1hcmt1cCBMYW5ndWFnZVwiLFxuICAgIH0pXG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZSh7XG4gICAgICAgIHR5cGU6IFwicGFyYWdyYXBoXCIsXG4gICAgICAgIGNoaWxkcmVuOiBbZGlyZWN0aXZlXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBpZiAoIXBhcmFncmFwaCB8fCBwYXJhZ3JhcGgudHlwZSAhPT0gXCJwYXJhZ3JhcGhcIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHBhcmFncmFwaFwiKVxuICAgIGNvbnN0IG5vZGUgPSBwYXJhZ3JhcGguY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeFRleHRFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIkFiYnJcIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLCBuYW1lOiBcInRleHRcIiwgdmFsdWU6IFwiSFRNTFwiIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLFxuICAgICAgICAgIG5hbWU6IFwidGl0bGVcIixcbiAgICAgICAgICB2YWx1ZTogXCJIeXBlclRleHQgTWFya3VwIExhbmd1YWdlXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgdXNlIGVtcHR5IHN0cmluZyB3aGVuIHRpdGxlIGlzIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aXZlID0gbWFrZVRleHREaXJlY3RpdmUoXCJhYmJyXCIsIFwiQ1NTXCIpXG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZSh7XG4gICAgICAgIHR5cGU6IFwicGFyYWdyYXBoXCIsXG4gICAgICAgIGNoaWxkcmVuOiBbZGlyZWN0aXZlXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBpZiAoIXBhcmFncmFwaCB8fCBwYXJhZ3JhcGgudHlwZSAhPT0gXCJwYXJhZ3JhcGhcIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHBhcmFncmFwaFwiKVxuICAgIGNvbnN0IG5vZGUgPSBwYXJhZ3JhcGguY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeFRleHRFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIkFiYnJcIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLCBuYW1lOiBcInRleHRcIiwgdmFsdWU6IFwiQ1NTXCIgfSxcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLCBuYW1lOiBcInRpdGxlXCIsIHZhbHVlOiBcIlwiIH0sXG4gICAgICBdLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaWdub3JlIG5vbi1hYmJyIHRleHQgZGlyZWN0aXZlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aXZlID0gbWFrZVRleHREaXJlY3RpdmUoXCJvdGhlclwiLCBcIlRleHRcIilcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKHtcbiAgICAgICAgdHlwZTogXCJwYXJhZ3JhcGhcIixcbiAgICAgICAgY2hpbGRyZW46IFtkaXJlY3RpdmVdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgcGFyYWdyYXBoID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGlmICghcGFyYWdyYXBoIHx8IHBhcmFncmFwaC50eXBlICE9PSBcInBhcmFncmFwaFwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgcGFyYWdyYXBoXCIpXG4gICAgZXhwZWN0KHBhcmFncmFwaC5jaGlsZHJlblswXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcInRleHREaXJlY3RpdmVcIixcbiAgICAgIG5hbWU6IFwib3RoZXJcIixcbiAgICB9KVxuICB9KVxufSlcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import type { Root } from "mdast";
2
+ import type { Plugin } from "unified";
3
+ /** Convert a string containing ANSI escape sequences into HTML with inline styles */
4
+ export declare function ansiToHtml(input: string): string;
5
+ /** Walk a mdast tree and convert ansi code blocks into AnsiCode JSX elements */
6
+ export declare function transformAnsiCodeBlocks(tree: Root): void;
7
+ /** Remark plugin that converts ansi code blocks into colored HTML output */
8
+ export declare const remarkAnsi: Plugin<[], Root>;
@@ -0,0 +1,239 @@
1
+ const STANDARD_COLORS = [
2
+ "#4f5b66", // 0 black
3
+ "#bf616a", // 1 red
4
+ "#a3be8c", // 2 green
5
+ "#ebcb8b", // 3 yellow
6
+ "#8fa1b3", // 4 blue
7
+ "#b48ead", // 5 magenta
8
+ "#96b5b4", // 6 cyan
9
+ "#c0c5ce", // 7 white
10
+ ];
11
+ const BRIGHT_COLORS = [
12
+ "#65737e", // 8 bright black
13
+ "#bf616a", // 9 bright red
14
+ "#a3be8c", // 10 bright green
15
+ "#ebcb8b", // 11 bright yellow
16
+ "#8fa1b3", // 12 bright blue
17
+ "#b48ead", // 13 bright magenta
18
+ "#96b5b4", // 14 bright cyan
19
+ "#eff1f5", // 15 bright white
20
+ ];
21
+ function color256(n) {
22
+ if (n < 8)
23
+ return STANDARD_COLORS[n];
24
+ if (n < 16)
25
+ return BRIGHT_COLORS[n - 8];
26
+ if (n < 232) {
27
+ const idx = n - 16;
28
+ const r = Math.floor(idx / 36);
29
+ const g = Math.floor((idx % 36) / 6);
30
+ const b = idx % 6;
31
+ const toHex = (v) => (v === 0 ? 0 : 55 + v * 40).toString(16).padStart(2, "0");
32
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
33
+ }
34
+ if (n < 256) {
35
+ const v = (8 + (n - 232) * 10).toString(16).padStart(2, "0");
36
+ return `#${v}${v}${v}`;
37
+ }
38
+ return undefined;
39
+ }
40
+ function escapeHtml(text) {
41
+ return text
42
+ .replace(/&/g, "&amp;")
43
+ .replace(/</g, "&lt;")
44
+ .replace(/>/g, "&gt;")
45
+ .replace(/"/g, "&quot;");
46
+ }
47
+ function buildStyle(state) {
48
+ const parts = [];
49
+ if (state.fg)
50
+ parts.push(`color:${state.fg}`);
51
+ if (state.bg)
52
+ parts.push(`background-color:${state.bg}`);
53
+ if (state.bold)
54
+ parts.push("font-weight:bold");
55
+ if (state.dim)
56
+ parts.push("opacity:0.7");
57
+ if (state.italic)
58
+ parts.push("font-style:italic");
59
+ if (state.underline)
60
+ parts.push("text-decoration:underline");
61
+ if (state.strikethrough)
62
+ parts.push("text-decoration:line-through");
63
+ return parts.join(";");
64
+ }
65
+ function makeDefaultState() {
66
+ return {
67
+ bold: false,
68
+ dim: false,
69
+ italic: false,
70
+ underline: false,
71
+ strikethrough: false,
72
+ fg: undefined,
73
+ bg: undefined,
74
+ };
75
+ }
76
+ function applyParams(state, params) {
77
+ let i = 0;
78
+ while (i < params.length) {
79
+ const code = params[i];
80
+ switch (code) {
81
+ case 0: {
82
+ const reset = makeDefaultState();
83
+ state.bold = reset.bold;
84
+ state.dim = reset.dim;
85
+ state.italic = reset.italic;
86
+ state.underline = reset.underline;
87
+ state.strikethrough = reset.strikethrough;
88
+ state.fg = reset.fg;
89
+ state.bg = reset.bg;
90
+ break;
91
+ }
92
+ case 1:
93
+ state.bold = true;
94
+ break;
95
+ case 2:
96
+ state.dim = true;
97
+ break;
98
+ case 3:
99
+ state.italic = true;
100
+ break;
101
+ case 4:
102
+ state.underline = true;
103
+ break;
104
+ case 9:
105
+ state.strikethrough = true;
106
+ break;
107
+ case 22:
108
+ state.bold = false;
109
+ state.dim = false;
110
+ break;
111
+ case 23:
112
+ state.italic = false;
113
+ break;
114
+ case 24:
115
+ state.underline = false;
116
+ break;
117
+ case 29:
118
+ state.strikethrough = false;
119
+ break;
120
+ case 39:
121
+ state.fg = undefined;
122
+ break;
123
+ case 49:
124
+ state.bg = undefined;
125
+ break;
126
+ default:
127
+ if (code >= 30 && code <= 37) {
128
+ state.fg = STANDARD_COLORS[code - 30];
129
+ }
130
+ else if (code >= 40 && code <= 47) {
131
+ state.bg = STANDARD_COLORS[code - 40];
132
+ }
133
+ else if (code >= 90 && code <= 97) {
134
+ state.fg = BRIGHT_COLORS[code - 90];
135
+ }
136
+ else if (code >= 100 && code <= 107) {
137
+ state.bg = BRIGHT_COLORS[code - 100];
138
+ }
139
+ else if (code === 38 || code === 48) {
140
+ const kind = params[i + 1];
141
+ if (kind === 5) {
142
+ const colorIdx = params[i + 2];
143
+ if (colorIdx !== undefined) {
144
+ const c = color256(colorIdx);
145
+ if (code === 38)
146
+ state.fg = c;
147
+ else
148
+ state.bg = c;
149
+ }
150
+ i += 2;
151
+ }
152
+ else if (kind === 2) {
153
+ const r = params[i + 2] ?? 0;
154
+ const g = params[i + 3] ?? 0;
155
+ const b = params[i + 4] ?? 0;
156
+ const toHex = (v) => v.toString(16).padStart(2, "0");
157
+ const c = `#${toHex(r)}${toHex(g)}${toHex(b)}`;
158
+ if (code === 38)
159
+ state.fg = c;
160
+ else
161
+ state.bg = c;
162
+ i += 4;
163
+ }
164
+ }
165
+ break;
166
+ }
167
+ i++;
168
+ }
169
+ }
170
+ /** Convert a string containing ANSI escape sequences into HTML with inline styles */
171
+ export function ansiToHtml(input) {
172
+ // oxlint-disable-next-line no-control-regex -- ANSI escape sequences start with U+001B
173
+ const sgr = /\u001b\[([0-9;]*)m/g;
174
+ const state = makeDefaultState();
175
+ const parts = [];
176
+ let lastIndex = 0;
177
+ let match = sgr.exec(input);
178
+ while (match !== null) {
179
+ const textBefore = input.slice(lastIndex, match.index);
180
+ if (textBefore) {
181
+ const style = buildStyle(state);
182
+ if (style) {
183
+ parts.push(`<span style="${style}">${escapeHtml(textBefore)}</span>`);
184
+ }
185
+ else {
186
+ parts.push(escapeHtml(textBefore));
187
+ }
188
+ }
189
+ const rawParams = match[1];
190
+ const params = rawParams === ""
191
+ ? [0]
192
+ : rawParams.split(";").map(s => Number.parseInt(s, 10));
193
+ applyParams(state, params);
194
+ lastIndex = match.index + match[0].length;
195
+ match = sgr.exec(input);
196
+ }
197
+ const trailing = input.slice(lastIndex);
198
+ if (trailing) {
199
+ const style = buildStyle(state);
200
+ if (style) {
201
+ parts.push(`<span style="${style}">${escapeHtml(trailing)}</span>`);
202
+ }
203
+ else {
204
+ parts.push(escapeHtml(trailing));
205
+ }
206
+ }
207
+ return parts.join("");
208
+ }
209
+ /** Walk a mdast tree and convert ansi code blocks into AnsiCode JSX elements */
210
+ export function transformAnsiCodeBlocks(tree) {
211
+ const children = tree.children;
212
+ for (let i = 0; i < children.length; i++) {
213
+ const node = children[i];
214
+ if (node?.type !== "code" || node.lang !== "ansi")
215
+ continue;
216
+ const html = ansiToHtml(node.value);
217
+ const jsxNode = {
218
+ type: "mdxJsxFlowElement",
219
+ name: "AnsiCode",
220
+ attributes: [
221
+ {
222
+ type: "mdxJsxAttribute",
223
+ name: "html",
224
+ value: html,
225
+ },
226
+ ],
227
+ children: [],
228
+ };
229
+ // @ts-expect-error mdxJsxFlowElement is not in mdast types
230
+ children[i] = jsxNode;
231
+ }
232
+ }
233
+ /** Remark plugin that converts ansi code blocks into colored HTML output */
234
+ export const remarkAnsi = () => {
235
+ return tree => {
236
+ transformAnsiCodeBlocks(tree);
237
+ };
238
+ };
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWFuc2kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstYW5zaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLGVBQWUsR0FBMEI7SUFDN0MsU0FBUyxFQUFFLFVBQVU7SUFDckIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFVBQVU7SUFDckIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFVBQVU7Q0FDdEIsQ0FBQTtBQUVELE1BQU0sYUFBYSxHQUEwQjtJQUMzQyxTQUFTLEVBQUUsaUJBQWlCO0lBQzVCLFNBQVMsRUFBRSxlQUFlO0lBQzFCLFNBQVMsRUFBRSxrQkFBa0I7SUFDN0IsU0FBUyxFQUFFLG1CQUFtQjtJQUM5QixTQUFTLEVBQUUsaUJBQWlCO0lBQzVCLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixTQUFTLEVBQUUsa0JBQWtCO0NBQzlCLENBQUE7QUFFRCxTQUFTLFFBQVEsQ0FBQyxDQUFTO0lBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQUUsT0FBTyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1osTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDakIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUMxQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUMzRCxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQVk7SUFDOUIsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUM1QixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBZ0I7SUFDbEMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQzFC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TSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUFFLFNBQVE7UUFFM0QsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVuQyxNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksRUFBRSxtQkFBNEI7WUFDbEMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFO2dCQUNWO29CQUNFLElBQUksRUFBRSxpQkFBMEI7b0JBQ2hDLElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7WUFDRCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUE7UUFFRCwyREFBMkQ7UUFDM0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0FBQ0gsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQXFCLEdBQUcsRUFBRTtJQUMvQyxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInVuaWZpZWRcIlxuXG5pbnRlcmZhY2UgQW5zaVN0YXRlIHtcbiAgYm9sZDogYm9vbGVhblxuICBkaW06IGJvb2xlYW5cbiAgaXRhbGljOiBib29sZWFuXG4gIHVuZGVybGluZTogYm9vbGVhblxuICBzdHJpa2V0aHJvdWdoOiBib29sZWFuXG4gIGZnOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYmc6IHN0cmluZyB8IHVuZGVmaW5lZFxufVxuXG5jb25zdCBTVEFOREFSRF9DT0xPUlM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiA9IFtcbiAgXCIjNGY1YjY2XCIsIC8vIDAgYmxhY2tcbiAgXCIjYmY2MTZhXCIsIC8vIDEgcmVkXG4gIFwiI2EzYmU4Y1wiLCAvLyAyIGdyZWVuXG4gIFwiI2ViY2I4YlwiLCAvLyAzIHllbGxvd1xuICBcIiM4ZmExYjNcIiwgLy8gNCBibHVlXG4gIFwiI2I0OGVhZFwiLCAvLyA1IG1hZ2VudGFcbiAgXCIjOTZiNWI0XCIsIC8vIDYgY3lhblxuICBcIiNjMGM1Y2VcIiwgLy8gNyB3aGl0ZVxuXVxuXG5jb25zdCBCUklHSFRfQ09MT1JTOiBSZWFkb25seUFycmF5PHN0cmluZz4gPSBbXG4gIFwiIzY1NzM3ZVwiLCAvLyA4IGJyaWdodCBibGFja1xuICBcIiNiZjYxNmFcIiwgLy8gOSBicmlnaHQgcmVkXG4gIFwiI2EzYmU4Y1wiLCAvLyAxMCBicmlnaHQgZ3JlZW5cbiAgXCIjZWJjYjhiXCIsIC8vIDExIGJyaWdodCB5ZWxsb3dcbiAgXCIjOGZhMWIzXCIsIC8vIDEyIGJyaWdodCBibHVlXG4gIFwiI2I0OGVhZFwiLCAvLyAxMyBicmlnaHQgbWFnZW50YVxuICBcIiM5NmI1YjRcIiwgLy8gMTQgYnJpZ2h0IGN5YW5cbiAgXCIjZWZmMWY1XCIsIC8vIDE1IGJyaWdodCB3aGl0ZVxuXVxuXG5mdW5jdGlvbiBjb2xvcjI1NihuOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAobiA8IDgpIHJldHVybiBTVEFOREFSRF9DT0xPUlNbbl1cbiAgaWYgKG4gPCAxNikgcmV0dXJuIEJSSUdIVF9DT0xPUlNbbiAtIDhdXG4gIGlmIChuIDwgMjMyKSB7XG4gICAgY29uc3QgaWR4ID0gbiAtIDE2XG4gICAgY29uc3QgciA9IE1hdGguZmxvb3IoaWR4IC8gMzYpXG4gICAgY29uc3QgZyA9IE1hdGguZmxvb3IoKGlkeCAlIDM2KSAvIDYpXG4gICAgY29uc3QgYiA9IGlkeCAlIDZcbiAgICBjb25zdCB0b0hleCA9ICh2OiBudW1iZXIpID0+XG4gICAgICAodiA9PT0gMCA/IDAgOiA1NSArIHYgKiA0MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgIHJldHVybiBgIyR7dG9IZXgocil9JHt0b0hleChnKX0ke3RvSGV4KGIpfWBcbiAgfVxuICBpZiAobiA8IDI1Nikge1xuICAgIGNvbnN0IHYgPSAoOCArIChuIC0gMjMyKSAqIDEwKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpXG4gICAgcmV0dXJuIGAjJHt2fSR7dn0ke3Z9YFxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZXNjYXBlSHRtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAucmVwbGFjZSgvPi9nLCBcIiZndDtcIilcbiAgICAucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxuZnVuY3Rpb24gYnVpbGRTdHlsZShzdGF0ZTogQW5zaVN0YXRlKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW11cbiAgaWYgKHN0YXRlLmZnKSBwYXJ0cy5wdXNoKGBjb2xvcjoke3N0YXRlLmZnfWApXG4gIGlmIChzdGF0ZS5iZykgcGFydHMucHVzaChgYmFja2dyb3VuZC1jb2xvcjoke3N0YXRlLmJnfWApXG4gIGlmIChzdGF0ZS5ib2xkKSBwYXJ0cy5wdXNoKFwiZm9udC13ZWlnaHQ6Ym9sZFwiKVxuICBpZiAoc3RhdGUuZGltKSBwYXJ0cy5wdXNoKFwib3BhY2l0eTowLjdcIilcbiAgaWYgKHN0YXRlLml0YWxpYykgcGFydHMucHVzaChcImZvbnQtc3R5bGU6aXRhbGljXCIpXG4gIGlmIChzdGF0ZS51bmRlcmxpbmUpIHBhcnRzLnB1c2goXCJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lXCIpXG4gIGlmIChzdGF0ZS5zdHJpa2V0aHJvdWdoKSBwYXJ0cy5wdXNoKFwidGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaFwiKVxuICByZXR1cm4gcGFydHMuam9pbihcIjtcIilcbn1cblxuZnVuY3Rpb24gbWFrZURlZmF1bHRTdGF0ZSgpOiBBbnNpU3RhdGUge1xuICByZXR1cm4ge1xuICAgIGJvbGQ6IGZhbHNlLFxuICAgIGRpbTogZmFsc2UsXG4gICAgaXRhbGljOiBmYWxzZSxcbiAgICB1bmRlcmxpbmU6IGZhbHNlLFxuICAgIHN0cmlrZXRocm91Z2g6IGZhbHNlLFxuICAgIGZnOiB1bmRlZmluZWQsXG4gICAgYmc6IHVuZGVmaW5lZCxcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVBhcmFtcyhzdGF0ZTogQW5zaVN0YXRlLCBwYXJhbXM6IFJlYWRvbmx5QXJyYXk8bnVtYmVyPikge1xuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBwYXJhbXMubGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IHBhcmFtc1tpXSFcbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICBjb25zdCByZXNldCA9IG1ha2VEZWZhdWx0U3RhdGUoKVxuICAgICAgICBzdGF0ZS5ib2xkID0gcmVzZXQuYm9sZFxuICAgICAgICBzdGF0ZS5kaW0gPSByZXNldC5kaW1cbiAgICAgICAgc3RhdGUuaXRhbGljID0gcmVzZXQuaXRhbGljXG4gICAgICAgIHN0YXRlLnVuZGVybGluZSA9IHJlc2V0LnVuZGVybGluZVxuICAgICAgICBzdGF0ZS5zdHJpa2V0aHJvdWdoID0gcmVzZXQuc3RyaWtldGhyb3VnaFxuICAgICAgICBzdGF0ZS5mZyA9IHJlc2V0LmZnXG4gICAgICAgIHN0YXRlLmJnID0gcmVzZXQuYmdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgMTpcbiAgICAgICAgc3RhdGUuYm9sZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgc3RhdGUuZGltID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAzOlxuICAgICAgICBzdGF0ZS5pdGFsaWMgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHN0YXRlLnVuZGVybGluZSA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgOTpcbiAgICAgICAgc3RhdGUuc3RyaWtldGhyb3VnaCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjI6XG4gICAgICAgIHN0YXRlLmJvbGQgPSBmYWxzZVxuICAgICAgICBzdGF0ZS5kaW0gPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyMzpcbiAgICAgICAgc3RhdGUuaXRhbGljID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ6XG4gICAgICAgIHN0YXRlLnVuZGVybGluZSA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI5OlxuICAgICAgICBzdGF0ZS5zdHJpa2V0aHJvdWdoID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMzk6XG4gICAgICAgIHN0YXRlLmZnID0gdW5kZWZpbmVkXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDQ5OlxuICAgICAgICBzdGF0ZS5iZyA9IHVuZGVmaW5lZFxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvZGUgPj0gMzAgJiYgY29kZSA8PSAzNykge1xuICAgICAgICAgIHN0YXRlLmZnID0gU1RBTkRBUkRfQ09MT1JTW2NvZGUgLSAzMF1cbiAgICAgICAgfSBlbHNlIGlmIChjb2RlID49IDQwICYmIGNvZGUgPD0gNDcpIHtcbiAgICAgICAgICBzdGF0ZS5iZyA9IFNUQU5EQVJEX0NPTE9SU1tjb2RlIC0gNDBdXG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA+PSA5MCAmJiBjb2RlIDw9IDk3KSB7XG4gICAgICAgICAgc3RhdGUuZmcgPSBCUklHSFRfQ09MT1JTW2NvZGUgLSA5MF1cbiAgICAgICAgfSBlbHNlIGlmIChjb2RlID49IDEwMCAmJiBjb2RlIDw9IDEwNykge1xuICAgICAgICAgIHN0YXRlLmJnID0gQlJJR0hUX0NPTE9SU1tjb2RlIC0gMTAwXVxuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDM4IHx8IGNvZGUgPT09IDQ4KSB7XG4gICAgICAgICAgY29uc3Qga2luZCA9IHBhcmFtc1tpICsgMV1cbiAgICAgICAgICBpZiAoa2luZCA9PT0gNSkge1xuICAgICAgICAgICAgY29uc3QgY29sb3JJZHggPSBwYXJhbXNbaSArIDJdXG4gICAgICAgICAgICBpZiAoY29sb3JJZHggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zdCBjID0gY29sb3IyNTYoY29sb3JJZHgpXG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSAzOCkgc3RhdGUuZmcgPSBjXG4gICAgICAgICAgICAgIGVsc2Ugc3RhdGUuYmcgPSBjXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IDJcbiAgICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBwYXJhbXNbaSArIDJdID8/IDBcbiAgICAgICAgICAgIGNvbnN0IGcgPSBwYXJhbXNbaSArIDNdID8/IDBcbiAgICAgICAgICAgIGNvbnN0IGIgPSBwYXJhbXNbaSArIDRdID8/IDBcbiAgICAgICAgICAgIGNvbnN0IHRvSGV4ID0gKHY6IG51bWJlcikgPT4gdi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpXG4gICAgICAgICAgICBjb25zdCBjID0gYCMke3RvSGV4KHIpfSR7dG9IZXgoZyl9JHt0b0hleChiKX1gXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMzgpIHN0YXRlLmZnID0gY1xuICAgICAgICAgICAgZWxzZSBzdGF0ZS5iZyA9IGNcbiAgICAgICAgICAgIGkgKz0gNFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cbiAgICBpKytcbiAgfVxufVxuXG4vKiogQ29udmVydCBhIHN0cmluZyBjb250YWluaW5nIEFOU0kgZXNjYXBlIHNlcXVlbmNlcyBpbnRvIEhUTUwgd2l0aCBpbmxpbmUgc3R5bGVzICovXG5leHBvcnQgZnVuY3Rpb24gYW5zaVRvSHRtbChpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXggLS0gQU5TSSBlc2NhcGUgc2VxdWVuY2VzIHN0YXJ0IHdpdGggVSswMDFCXG4gIGNvbnN0IHNnciA9IC9cXHUwMDFiXFxbKFswLTk7XSopbS9nXG4gIGNvbnN0IHN0YXRlID0gbWFrZURlZmF1bHRTdGF0ZSgpXG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdXG4gIGxldCBsYXN0SW5kZXggPSAwXG5cbiAgbGV0IG1hdGNoID0gc2dyLmV4ZWMoaW5wdXQpXG4gIHdoaWxlIChtYXRjaCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRleHRCZWZvcmUgPSBpbnB1dC5zbGljZShsYXN0SW5kZXgsIG1hdGNoLmluZGV4KVxuICAgIGlmICh0ZXh0QmVmb3JlKSB7XG4gICAgICBjb25zdCBzdHlsZSA9IGJ1aWxkU3R5bGUoc3RhdGUpXG4gICAgICBpZiAoc3R5bGUpIHtcbiAgICAgICAgcGFydHMucHVzaChgPHNwYW4gc3R5bGU9XCIke3N0eWxlfVwiPiR7ZXNjYXBlSHRtbCh0ZXh0QmVmb3JlKX08L3NwYW4+YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRzLnB1c2goZXNjYXBlSHRtbCh0ZXh0QmVmb3JlKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByYXdQYXJhbXMgPSBtYXRjaFsxXSFcbiAgICBjb25zdCBwYXJhbXMgPVxuICAgICAgcmF3UGFyYW1zID09PSBcIlwiXG4gICAgICAgID8gWzBdXG4gICAgICAgIDogcmF3UGFyYW1zLnNwbGl0KFwiO1wiKS5tYXAocyA9PiBOdW1iZXIucGFyc2VJbnQocywgMTApKVxuICAgIGFwcGx5UGFyYW1zKHN0YXRlLCBwYXJhbXMpXG4gICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcbiAgICBtYXRjaCA9IHNnci5leGVjKGlucHV0KVxuICB9XG5cbiAgY29uc3QgdHJhaWxpbmcgPSBpbnB1dC5zbGljZShsYXN0SW5kZXgpXG4gIGlmICh0cmFpbGluZykge1xuICAgIGNvbnN0IHN0eWxlID0gYnVpbGRTdHlsZShzdGF0ZSlcbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIHBhcnRzLnB1c2goYDxzcGFuIHN0eWxlPVwiJHtzdHlsZX1cIj4ke2VzY2FwZUh0bWwodHJhaWxpbmcpfTwvc3Bhbj5gKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKGVzY2FwZUh0bWwodHJhaWxpbmcpKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKFwiXCIpXG59XG5cbi8qKiBXYWxrIGEgbWRhc3QgdHJlZSBhbmQgY29udmVydCBhbnNpIGNvZGUgYmxvY2tzIGludG8gQW5zaUNvZGUgSlNYIGVsZW1lbnRzICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQW5zaUNvZGVCbG9ja3ModHJlZTogUm9vdCkge1xuICBjb25zdCBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG5vZGUgPSBjaGlsZHJlbltpXVxuICAgIGlmIChub2RlPy50eXBlICE9PSBcImNvZGVcIiB8fCBub2RlLmxhbmcgIT09IFwiYW5zaVwiKSBjb250aW51ZVxuXG4gICAgY29uc3QgaHRtbCA9IGFuc2lUb0h0bWwobm9kZS52YWx1ZSlcblxuICAgIGNvbnN0IGpzeE5vZGUgPSB7XG4gICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIgYXMgY29uc3QsXG4gICAgICBuYW1lOiBcIkFuc2lDb2RlXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6IFwiaHRtbFwiLFxuICAgICAgICAgIHZhbHVlOiBodG1sLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICB9XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1keEpzeEZsb3dFbGVtZW50IGlzIG5vdCBpbiBtZGFzdCB0eXBlc1xuICAgIGNoaWxkcmVuW2ldID0ganN4Tm9kZVxuICB9XG59XG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgYW5zaSBjb2RlIGJsb2NrcyBpbnRvIGNvbG9yZWQgSFRNTCBvdXRwdXQgKi9cbmV4cG9ydCBjb25zdCByZW1hcmtBbnNpOiBQbHVnaW48W10sIFJvb3Q+ID0gKCkgPT4ge1xuICByZXR1cm4gdHJlZSA9PiB7XG4gICAgdHJhbnNmb3JtQW5zaUNvZGVCbG9ja3ModHJlZSlcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,134 @@
1
+ import { describe, expect, it } from "vite-plus/test";
2
+ import { ansiToHtml, transformAnsiCodeBlocks } from "./remark-ansi.js";
3
+ function makeTree(...children) {
4
+ return { type: "root", children };
5
+ }
6
+ describe("ansiToHtml", () => {
7
+ it("should return plain text unchanged", () => {
8
+ expect(ansiToHtml("hello world")).toBe("hello world");
9
+ });
10
+ it("should escape HTML characters", () => {
11
+ expect(ansiToHtml("<div>&</div>")).toBe("&lt;div&gt;&amp;&lt;/div&gt;");
12
+ });
13
+ it("should render standard foreground colors", () => {
14
+ const input = "\x1b[31mred text\x1b[0m";
15
+ expect(ansiToHtml(input)).toBe('<span style="color:#bf616a">red text</span>');
16
+ });
17
+ it("should render bold text", () => {
18
+ const input = "\x1b[1mbold\x1b[0m";
19
+ expect(ansiToHtml(input)).toBe('<span style="font-weight:bold">bold</span>');
20
+ });
21
+ it("should render italic text", () => {
22
+ const input = "\x1b[3mitalic\x1b[0m";
23
+ expect(ansiToHtml(input)).toBe('<span style="font-style:italic">italic</span>');
24
+ });
25
+ it("should render underline text", () => {
26
+ const input = "\x1b[4munderline\x1b[0m";
27
+ expect(ansiToHtml(input)).toBe('<span style="text-decoration:underline">underline</span>');
28
+ });
29
+ it("should render dim text", () => {
30
+ const input = "\x1b[2mdim\x1b[0m";
31
+ expect(ansiToHtml(input)).toBe('<span style="opacity:0.7">dim</span>');
32
+ });
33
+ it("should render strikethrough text", () => {
34
+ const input = "\x1b[9mstruck\x1b[0m";
35
+ expect(ansiToHtml(input)).toBe('<span style="text-decoration:line-through">struck</span>');
36
+ });
37
+ it("should render background colors", () => {
38
+ const input = "\x1b[42mgreen bg\x1b[0m";
39
+ expect(ansiToHtml(input)).toBe('<span style="background-color:#a3be8c">green bg</span>');
40
+ });
41
+ it("should combine foreground and background", () => {
42
+ const input = "\x1b[31;42mred on green\x1b[0m";
43
+ expect(ansiToHtml(input)).toBe('<span style="color:#bf616a;background-color:#a3be8c">red on green</span>');
44
+ });
45
+ it("should handle bright foreground colors", () => {
46
+ const input = "\x1b[91mbright red\x1b[0m";
47
+ expect(ansiToHtml(input)).toBe('<span style="color:#bf616a">bright red</span>');
48
+ });
49
+ it("should handle bright background colors", () => {
50
+ const input = "\x1b[102mbright green bg\x1b[0m";
51
+ expect(ansiToHtml(input)).toBe('<span style="background-color:#a3be8c">bright green bg</span>');
52
+ });
53
+ it("should handle 256-color foreground", () => {
54
+ const input = "\x1b[38;5;196mcolor\x1b[0m";
55
+ expect(ansiToHtml(input)).toBe('<span style="color:#ff0000">color</span>');
56
+ });
57
+ it("should handle 256-color background", () => {
58
+ const input = "\x1b[48;5;21mbg\x1b[0m";
59
+ expect(ansiToHtml(input)).toBe('<span style="background-color:#0000ff">bg</span>');
60
+ });
61
+ it("should handle 24-bit RGB foreground", () => {
62
+ const input = "\x1b[38;2;255;128;0mrgb\x1b[0m";
63
+ expect(ansiToHtml(input)).toBe('<span style="color:#ff8000">rgb</span>');
64
+ });
65
+ it("should handle 24-bit RGB background", () => {
66
+ const input = "\x1b[48;2;0;128;255mbg\x1b[0m";
67
+ expect(ansiToHtml(input)).toBe('<span style="background-color:#0080ff">bg</span>');
68
+ });
69
+ it("should handle reset via empty escape", () => {
70
+ const input = "\x1b[31mred\x1b[mnormal";
71
+ expect(ansiToHtml(input)).toBe('<span style="color:#bf616a">red</span>normal');
72
+ });
73
+ it("should handle multiple segments", () => {
74
+ const input = "start \x1b[32mgreen\x1b[0m middle \x1b[34mblue\x1b[0m end";
75
+ expect(ansiToHtml(input)).toBe('start <span style="color:#a3be8c">green</span> middle <span style="color:#8fa1b3">blue</span> end');
76
+ });
77
+ it("should handle combined bold and color", () => {
78
+ const input = "\x1b[1;33mbold yellow\x1b[0m";
79
+ expect(ansiToHtml(input)).toBe('<span style="color:#ebcb8b;font-weight:bold">bold yellow</span>');
80
+ });
81
+ it("should handle 256-color grayscale", () => {
82
+ const input = "\x1b[38;5;232mblack\x1b[0m";
83
+ expect(ansiToHtml(input)).toBe('<span style="color:#080808">black</span>');
84
+ });
85
+ it("should reset individual attributes", () => {
86
+ const input = "\x1b[1;3mbold italic\x1b[23mnot italic\x1b[0m";
87
+ expect(ansiToHtml(input)).toBe('<span style="font-weight:bold;font-style:italic">bold italic</span><span style="font-weight:bold">not italic</span>');
88
+ });
89
+ });
90
+ describe("transformAnsiCodeBlocks", () => {
91
+ function process(tree) {
92
+ transformAnsiCodeBlocks(tree);
93
+ return tree;
94
+ }
95
+ it("should convert ansi code block to AnsiCode JSX element", () => {
96
+ const tree = process(makeTree({ type: "code", lang: "ansi", value: "\x1b[31mhello\x1b[0m" }));
97
+ const node = tree.children[0];
98
+ expect(node).toMatchObject({
99
+ type: "mdxJsxFlowElement",
100
+ name: "AnsiCode",
101
+ attributes: [
102
+ {
103
+ type: "mdxJsxAttribute",
104
+ name: "html",
105
+ value: '<span style="color:#bf616a">hello</span>',
106
+ },
107
+ ],
108
+ });
109
+ });
110
+ it("should ignore non-ansi code blocks", () => {
111
+ const tree = process(makeTree({ type: "code", lang: "javascript", value: "const x = 1" }));
112
+ const node = tree.children[0];
113
+ expect(node).toMatchObject({
114
+ type: "code",
115
+ lang: "javascript",
116
+ });
117
+ });
118
+ it("should handle plain text in ansi code block", () => {
119
+ const tree = process(makeTree({ type: "code", lang: "ansi", value: "no escapes here" }));
120
+ const node = tree.children[0];
121
+ expect(node).toMatchObject({
122
+ type: "mdxJsxFlowElement",
123
+ name: "AnsiCode",
124
+ attributes: [
125
+ {
126
+ type: "mdxJsxAttribute",
127
+ name: "html",
128
+ value: "no escapes here",
129
+ },
130
+ ],
131
+ });
132
+ });
133
+ });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWFuc2kudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3JlbWFyay1hbnNpLnVuaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXRFLFNBQVMsUUFBUSxDQUFDLEdBQUcsUUFBMEI7SUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUE7QUFDbkMsQ0FBQztBQUVELFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7UUFDNUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBQ3pFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQTtRQUN2QyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1Qiw2Q0FBNkMsQ0FDOUMsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FBQTtRQUNsQyxNQUFNLENBQUMsVUFBVSxD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QUUsQ0FBQyxDQUNyRSxDQUFBO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ3pCLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLFlBQVk7U0FDbkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FDbEIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQ25FLENBQUE7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDekIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixJQUFJLEVBQUUsVUFBVTtZQUNoQixVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLE1BQU07b0JBQ1osS0FBSyxFQUFFLGlCQUFpQjtpQkFDekI7YUFDRjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwibWRhc3RcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgYW5zaVRvSHRtbCwgdHJhbnNmb3JtQW5zaUNvZGVCbG9ja3MgfSBmcm9tIFwiLi9yZW1hcmstYW5zaS50c1wiXG5cbmZ1bmN0aW9uIG1ha2VUcmVlKC4uLmNoaWxkcmVuOiBSb290W1wiY2hpbGRyZW5cIl0pOiBSb290IHtcbiAgcmV0dXJuIHsgdHlwZTogXCJyb290XCIsIGNoaWxkcmVuIH1cbn1cblxuZGVzY3JpYmUoXCJhbnNpVG9IdG1sXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgcmV0dXJuIHBsYWluIHRleHQgdW5jaGFuZ2VkXCIsICgpID0+IHtcbiAgICBleHBlY3QoYW5zaVRvSHRtbChcImhlbGxvIHdvcmxkXCIpKS50b0JlKFwiaGVsbG8gd29ybGRcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBlc2NhcGUgSFRNTCBjaGFyYWN0ZXJzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYW5zaVRvSHRtbChcIjxkaXY+JjwvZGl2PlwiKSkudG9CZShcIiZsdDtkaXYmZ3Q7JmFtcDsmbHQ7L2RpdiZndDtcIilcbiAgfSlcblxuICBpdChcInNob3VsZCByZW5kZXIgc3RhbmRhcmQgZm9yZWdyb3VuZCBjb2xvcnNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJcXHgxYlszMW1yZWQgdGV4dFxceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJjb2xvcjojYmY2MTZhXCI+cmVkIHRleHQ8L3NwYW4+JyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmVuZGVyIGJvbGQgdGV4dFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzFtYm9sZFxceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoJzxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6Ym9sZFwiPmJvbGQ8L3NwYW4+JylcbiAgfSlcblxuICBpdChcInNob3VsZCByZW5kZXIgaXRhbGljIHRleHRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJcXHgxYlszbWl0YWxpY1xceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJmb250LXN0eWxlOml0YWxpY1wiPml0YWxpYzwvc3Bhbj4nLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCByZW5kZXIgdW5kZXJsaW5lIHRleHRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJcXHgxYls0bXVuZGVybGluZVxceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lXCI+dW5kZXJsaW5lPC9zcGFuPicsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlbmRlciBkaW0gdGV4dFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzJtZGltXFx4MWJbMG1cIlxuICAgIGV4cGVjdChhbnNpVG9IdG1sKGlucHV0KSkudG9CZSgnPHNwYW4gc3R5bGU9XCJvcGFjaXR5OjAuN1wiPmRpbTwvc3Bhbj4nKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlbmRlciBzdHJpa2V0aHJvdWdoIHRleHRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJcXHgxYls5bXN0cnVja1xceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoXCI+c3RydWNrPC9zcGFuPicsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlbmRlciBiYWNrZ3JvdW5kIGNvbG9yc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzQybWdyZWVuIGJnXFx4MWJbMG1cIlxuICAgIGV4cGVjdChhbnNpVG9IdG1sKGlucHV0KSkudG9CZShcbiAgICAgICc8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2EzYmU4Y1wiPmdyZWVuIGJnPC9zcGFuPicsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGNvbWJpbmUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzMxOzQybXJlZCBvbiBncmVlblxceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJjb2xvcjojYmY2MTZhO2JhY2tncm91bmQtY29sb3I6I2EzYmU4Y1wiPnJlZCBvbiBncmVlbjwvc3Bhbj4nLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgYnJpZ2h0IGZvcmVncm91bmQgY29sb3JzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiXFx4MWJbOTFtYnJpZ2h0IHJlZFxceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJjb2xvcjojYmY2MTZhXCI+YnJpZ2h0IHJlZDwvc3Bhbj4nLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgYnJpZ2h0IGJhY2tncm91bmQgY29sb3JzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiXFx4MWJbMTAybWJyaWdodCBncmVlbiBiZ1xceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNhM2JlOGNcIj5icmlnaHQgZ3JlZW4gYmc8L3NwYW4+JyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIDI1Ni1jb2xvciBmb3JlZ3JvdW5kXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiXFx4MWJbMzg7NTsxOTZtY29sb3JcXHgxYlswbVwiXG4gICAgZXhwZWN0KGFuc2lUb0h0bWwoaW5wdXQpKS50b0JlKCc8c3BhbiBzdHlsZT1cImNvbG9yOiNmZjAwMDBcIj5jb2xvcjwvc3Bhbj4nKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSAyNTYtY29sb3IgYmFja2dyb3VuZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzQ4OzU7MjFtYmdcXHgxYlswbVwiXG4gICAgZXhwZWN0KGFuc2lUb0h0bWwoaW5wdXQpKS50b0JlKFxuICAgICAgJzxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojMDAwMGZmXCI+Ymc8L3NwYW4+JyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIDI0LWJpdCBSR0IgZm9yZWdyb3VuZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzM4OzI7MjU1OzEyODswbXJnYlxceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoJzxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmODAwMFwiPnJnYjwvc3Bhbj4nKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSAyNC1iaXQgUkdCIGJhY2tncm91bmRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJcXHgxYls0ODsyOzA7MTI4OzI1NW1iZ1xceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiMwMDgwZmZcIj5iZzwvc3Bhbj4nLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgcmVzZXQgdmlhIGVtcHR5IGVzY2FwZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzMxbXJlZFxceDFiW21ub3JtYWxcIlxuICAgIGV4cGVjdChhbnNpVG9IdG1sKGlucHV0KSkudG9CZShcbiAgICAgICc8c3BhbiBzdHlsZT1cImNvbG9yOiNiZjYxNmFcIj5yZWQ8L3NwYW4+bm9ybWFsJyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIHNlZ21lbnRzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwic3RhcnQgXFx4MWJbMzJtZ3JlZW5cXHgxYlswbSBtaWRkbGUgXFx4MWJbMzRtYmx1ZVxceDFiWzBtIGVuZFwiXG4gICAgZXhwZWN0KGFuc2lUb0h0bWwoaW5wdXQpKS50b0JlKFxuICAgICAgJ3N0YXJ0IDxzcGFuIHN0eWxlPVwiY29sb3I6I2EzYmU4Y1wiPmdyZWVuPC9zcGFuPiBtaWRkbGUgPHNwYW4gc3R5bGU9XCJjb2xvcjojOGZhMWIzXCI+Ymx1ZTwvc3Bhbj4gZW5kJyxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIGNvbWJpbmVkIGJvbGQgYW5kIGNvbG9yXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiXFx4MWJbMTszM21ib2xkIHllbGxvd1xceDFiWzBtXCJcbiAgICBleHBlY3QoYW5zaVRvSHRtbChpbnB1dCkpLnRvQmUoXG4gICAgICAnPHNwYW4gc3R5bGU9XCJjb2xvcjojZWJjYjhiO2ZvbnQtd2VpZ2h0OmJvbGRcIj5ib2xkIHllbGxvdzwvc3Bhbj4nLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgMjU2LWNvbG9yIGdyYXlzY2FsZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlxceDFiWzM4OzU7MjMybWJsYWNrXFx4MWJbMG1cIlxuICAgIGV4cGVjdChhbnNpVG9IdG1sKGlucHV0KSkudG9CZSgnPHNwYW4gc3R5bGU9XCJjb2xvcjojMDgwODA4XCI+YmxhY2s8L3NwYW4+JylcbiAgfSlcblxuICBpdChcInNob3VsZCByZXNldCBpbmRpdmlkdWFsIGF0dHJpYnV0ZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJcXHgxYlsxOzNtYm9sZCBpdGFsaWNcXHgxYlsyM21ub3QgaXRhbGljXFx4MWJbMG1cIlxuICAgIGV4cGVjdChhbnNpVG9IdG1sKGlucHV0KSkudG9CZShcbiAgICAgICc8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHlsZTppdGFsaWNcIj5ib2xkIGl0YWxpYzwvc3Bhbj48c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGRcIj5ub3QgaXRhbGljPC9zcGFuPicsXG4gICAgKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJ0cmFuc2Zvcm1BbnNpQ29kZUJsb2Nrc1wiLCAoKSA9PiB7XG4gIGZ1bmN0aW9uIHByb2Nlc3ModHJlZTogUm9vdCkge1xuICAgIHRyYW5zZm9ybUFuc2lDb2RlQmxvY2tzKHRyZWUpXG4gICAgcmV0dXJuIHRyZWVcbiAgfVxuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgYW5zaSBjb2RlIGJsb2NrIHRvIEFuc2lDb2RlIEpTWCBlbGVtZW50XCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKHsgdHlwZTogXCJjb2RlXCIsIGxhbmc6IFwiYW5zaVwiLCB2YWx1ZTogXCJcXHgxYlszMW1oZWxsb1xceDFiWzBtXCIgfSksXG4gICAgKVxuXG4gICAgY29uc3Qgbm9kZSA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIkFuc2lDb2RlXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLFxuICAgICAgICAgIG5hbWU6IFwiaHRtbFwiLFxuICAgICAgICAgIHZhbHVlOiAnPHNwYW4gc3R5bGU9XCJjb2xvcjojYmY2MTZhXCI+aGVsbG88L3NwYW4+JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcblxuICBpdChcInNob3VsZCBpZ25vcmUgbm9uLWFuc2kgY29kZSBibG9ja3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRyZWUgPSBwcm9jZXNzKFxuICAgICAgbWFrZVRyZWUoeyB0eXBlOiBcImNvZGVcIiwgbGFuZzogXCJqYXZhc2NyaXB0XCIsIHZhbHVlOiBcImNvbnN0IHggPSAxXCIgfSksXG4gICAgKVxuXG4gICAgY29uc3Qgbm9kZSA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcImNvZGVcIixcbiAgICAgIGxhbmc6IFwiamF2YXNjcmlwdFwiLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHBsYWluIHRleHQgaW4gYW5zaSBjb2RlIGJsb2NrXCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKHsgdHlwZTogXCJjb2RlXCIsIGxhbmc6IFwiYW5zaVwiLCB2YWx1ZTogXCJubyBlc2NhcGVzIGhlcmVcIiB9KSxcbiAgICApXG5cbiAgICBjb25zdCBub2RlID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGV4cGVjdChub2RlKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIixcbiAgICAgIG5hbWU6IFwiQW5zaUNvZGVcIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsXG4gICAgICAgICAgbmFtZTogXCJodG1sXCIsXG4gICAgICAgICAgdmFsdWU6IFwibm8gZXNjYXBlcyBoZXJlXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gIH0pXG59KVxuIl19
@@ -0,0 +1,6 @@
1
+ import type { Root } from "mdast";
2
+ import type { Plugin } from "unified";
3
+ /** Walk a mdast tree and convert :badge text directives into InlineBadge JSX elements */
4
+ export declare function transformBadgeDirectives(tree: Root): void;
5
+ /** Remark plugin that converts :badge text directives into InlineBadge JSX elements */
6
+ export declare const remarkBadge: Plugin<[], Root>;