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,13 @@
1
+ import type { Plugin } from "vite";
2
+ export interface LivemarkOptions {
3
+ defaultsRoot: string;
4
+ overridesRoot: string;
5
+ subdirs: string[];
6
+ configPath: string;
7
+ }
8
+ /** Livemark dev/build integration:
9
+ * - Redirects imports that land in `<defaultsRoot>/<subdir>/` to the matching
10
+ * user file under `<overridesRoot>/<subdir>/` when it exists.
11
+ * - Watches `livemark.config.ts` and `.livemark/**` so edits, additions and
12
+ * deletions trigger the right reload without manual restart. */
13
+ export declare function livemark(opts: LivemarkOptions): Plugin;
@@ -0,0 +1,76 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ /** Livemark dev/build integration:
4
+ * - Redirects imports that land in `<defaultsRoot>/<subdir>/` to the matching
5
+ * user file under `<overridesRoot>/<subdir>/` when it exists.
6
+ * - Watches `livemark.config.ts` and `.livemark/**` so edits, additions and
7
+ * deletions trigger the right reload without manual restart. */
8
+ export function livemark(opts) {
9
+ const EXT_RE = /\.(tsx|ts|jsx|js|css)(\?|$)/;
10
+ return {
11
+ name: "livemark",
12
+ enforce: "pre",
13
+ async resolveId(id, importer, options) {
14
+ if (!importer || !EXT_RE.test(id))
15
+ return null;
16
+ const resolved = await this.resolve(id, importer, {
17
+ ...options,
18
+ skipSelf: true,
19
+ });
20
+ if (!resolved)
21
+ return null;
22
+ const queryIdx = resolved.id.indexOf("?");
23
+ const path = queryIdx === -1 ? resolved.id : resolved.id.slice(0, queryIdx);
24
+ const query = queryIdx === -1 ? "" : resolved.id.slice(queryIdx);
25
+ for (const subdir of opts.subdirs) {
26
+ const defaultsSubdir = `${join(opts.defaultsRoot, subdir)}/`;
27
+ if (!path.startsWith(defaultsSubdir))
28
+ continue;
29
+ const rel = path.slice(defaultsSubdir.length);
30
+ const userPath = join(opts.overridesRoot, subdir, rel);
31
+ if (existsSync(userPath))
32
+ return userPath + query;
33
+ return null;
34
+ }
35
+ return null;
36
+ },
37
+ configureServer(server) {
38
+ server.watcher.add(opts.configPath);
39
+ server.watcher.add(join(opts.overridesRoot, "**/*"));
40
+ const overrideRoots = opts.subdirs.map(subdir => `${join(opts.overridesRoot, subdir)}/`);
41
+ const routesRoot = `${join(opts.overridesRoot, "routes")}/`;
42
+ const onChange = (file) => {
43
+ if (file === opts.configPath) {
44
+ server.restart();
45
+ return;
46
+ }
47
+ if (file.startsWith(routesRoot)) {
48
+ server.restart();
49
+ return;
50
+ }
51
+ for (let i = 0; i < opts.subdirs.length; i++) {
52
+ const root = overrideRoots[i];
53
+ if (!root || !file.startsWith(root))
54
+ continue;
55
+ const rel = file.slice(root.length);
56
+ const subdir = opts.subdirs[i];
57
+ if (!subdir)
58
+ continue;
59
+ const defaultPath = join(opts.defaultsRoot, subdir, rel);
60
+ const mod = server.moduleGraph.getModuleById(defaultPath);
61
+ if (mod)
62
+ server.moduleGraph.invalidateModule(mod);
63
+ server.ws.send({ type: "full-reload" });
64
+ return;
65
+ }
66
+ };
67
+ server.watcher.on("add", onChange);
68
+ server.watcher.on("unlink", onChange);
69
+ server.watcher.on("change", file => {
70
+ if (file === opts.configPath)
71
+ server.restart();
72
+ });
73
+ },
74
+ };
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS1saXZlbWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3ZpdGUtbGl2ZW1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBVWhDOzs7O2tFQUlrRTtBQUNsRSxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQXFCO0lBQzVDLE1BQU0sTUFBTSxHQUFHLDZCQUE2QixDQUFBO0lBQzVDLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ25DLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQTtZQUM5QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRTtnQkFDaEQsR0FBRyxPQUFPO2dCQUNWLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxJQUFJLENBQUE7WUFDMUIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDekMsTUFBTSxJQUFJLEdBQ1IsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDaEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ2hFLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxNQUFNLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUE7Z0JBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztvQkFBRSxTQUFRO2dCQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUN0RCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQUUsT0FBTyxRQUFRLEdBQUcsS0FBSyxDQUFBO2dCQUNqRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxlQUFlLENBQUMsTUFBTTtZQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUVwRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQ2pELENBQUE7WUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUE7WUFFM0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUM3QixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7b0JBQ2hCLE9BQU07Z0JBQ1IsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO29CQUNoQixPQUFNO2dCQUNSLENBQUM7Z0JBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzdDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDN0IsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO3dCQUFFLFNBQVE7b0JBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUM5QixJQUFJLENBQUMsTUFBTTt3QkFBRSxTQUFRO29CQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUE7b0JBQ3hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBO29CQUN6RCxJQUFJLEdBQUc7d0JBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFDakQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQTtvQkFDdkMsT0FBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQyxDQUFBO1lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUNyQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVO29CQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNoRCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ2aXRlXCJcblxuZXhwb3J0IGludGVyZmFjZSBMaXZlbWFya09wdGlvbnMge1xuICBkZWZhdWx0c1Jvb3Q6IHN0cmluZ1xuICBvdmVycmlkZXNSb290OiBzdHJpbmdcbiAgc3ViZGlyczogc3RyaW5nW11cbiAgY29uZmlnUGF0aDogc3RyaW5nXG59XG5cbi8qKiBMaXZlbWFyayBkZXYvYnVpbGQgaW50ZWdyYXRpb246XG4gKiAtIFJlZGlyZWN0cyBpbXBvcnRzIHRoYXQgbGFuZCBpbiBgPGRlZmF1bHRzUm9vdD4vPHN1YmRpcj4vYCB0byB0aGUgbWF0Y2hpbmdcbiAqICAgdXNlciBmaWxlIHVuZGVyIGA8b3ZlcnJpZGVzUm9vdD4vPHN1YmRpcj4vYCB3aGVuIGl0IGV4aXN0cy5cbiAqIC0gV2F0Y2hlcyBgbGl2ZW1hcmsuY29uZmlnLnRzYCBhbmQgYC5saXZlbWFyay8qKmAgc28gZWRpdHMsIGFkZGl0aW9ucyBhbmRcbiAqICAgZGVsZXRpb25zIHRyaWdnZXIgdGhlIHJpZ2h0IHJlbG9hZCB3aXRob3V0IG1hbnVhbCByZXN0YXJ0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpdmVtYXJrKG9wdHM6IExpdmVtYXJrT3B0aW9ucyk6IFBsdWdpbiB7XG4gIGNvbnN0IEVYVF9SRSA9IC9cXC4odHN4fHRzfGpzeHxqc3xjc3MpKFxcP3wkKS9cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImxpdmVtYXJrXCIsXG4gICAgZW5mb3JjZTogXCJwcmVcIixcbiAgICBhc3luYyByZXNvbHZlSWQoaWQsIGltcG9ydGVyLCBvcHRpb25zKSB7XG4gICAgICBpZiAoIWltcG9ydGVyIHx8ICFFWFRfUkUudGVzdChpZCkpIHJldHVybiBudWxsXG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZShpZCwgaW1wb3J0ZXIsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICB9KVxuICAgICAgaWYgKCFyZXNvbHZlZCkgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IHF1ZXJ5SWR4ID0gcmVzb2x2ZWQuaWQuaW5kZXhPZihcIj9cIilcbiAgICAgIGNvbnN0IHBhdGggPVxuICAgICAgICBxdWVyeUlkeCA9PT0gLTEgPyByZXNvbHZlZC5pZCA6IHJlc29sdmVkLmlkLnNsaWNlKDAsIHF1ZXJ5SWR4KVxuICAgICAgY29uc3QgcXVlcnkgPSBxdWVyeUlkeCA9PT0gLTEgPyBcIlwiIDogcmVzb2x2ZWQuaWQuc2xpY2UocXVlcnlJZHgpXG4gICAgICBmb3IgKGNvbnN0IHN1YmRpciBvZiBvcHRzLnN1YmRpcnMpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdHNTdWJkaXIgPSBgJHtqb2luKG9wdHMuZGVmYXVsdHNSb290LCBzdWJkaXIpfS9gXG4gICAgICAgIGlmICghcGF0aC5zdGFydHNXaXRoKGRlZmF1bHRzU3ViZGlyKSkgY29udGludWVcbiAgICAgICAgY29uc3QgcmVsID0gcGF0aC5zbGljZShkZWZhdWx0c1N1YmRpci5sZW5ndGgpXG4gICAgICAgIGNvbnN0IHVzZXJQYXRoID0gam9pbihvcHRzLm92ZXJyaWRlc1Jvb3QsIHN1YmRpciwgcmVsKVxuICAgICAgICBpZiAoZXhpc3RzU3luYyh1c2VyUGF0aCkpIHJldHVybiB1c2VyUGF0aCArIHF1ZXJ5XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgY29uZmlndXJlU2VydmVyKHNlcnZlcikge1xuICAgICAgc2VydmVyLndhdGNoZXIuYWRkKG9wdHMuY29uZmlnUGF0aClcbiAgICAgIHNlcnZlci53YXRjaGVyLmFkZChqb2luKG9wdHMub3ZlcnJpZGVzUm9vdCwgXCIqKi8qXCIpKVxuXG4gICAgICBjb25zdCBvdmVycmlkZVJvb3RzID0gb3B0cy5zdWJkaXJzLm1hcChcbiAgICAgICAgc3ViZGlyID0+IGAke2pvaW4ob3B0cy5vdmVycmlkZXNSb290LCBzdWJkaXIpfS9gLFxuICAgICAgKVxuICAgICAgY29uc3Qgcm91dGVzUm9vdCA9IGAke2pvaW4ob3B0cy5vdmVycmlkZXNSb290LCBcInJvdXRlc1wiKX0vYFxuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9IChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGZpbGUgPT09IG9wdHMuY29uZmlnUGF0aCkge1xuICAgICAgICAgIHNlcnZlci5yZXN0YXJ0KClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgocm91dGVzUm9vdCkpIHtcbiAgICAgICAgICBzZXJ2ZXIucmVzdGFydCgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdHMuc3ViZGlycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJvb3QgPSBvdmVycmlkZVJvb3RzW2ldXG4gICAgICAgICAgaWYgKCFyb290IHx8ICFmaWxlLnN0YXJ0c1dpdGgocm9vdCkpIGNvbnRpbnVlXG4gICAgICAgICAgY29uc3QgcmVsID0gZmlsZS5zbGljZShyb290Lmxlbmd0aClcbiAgICAgICAgICBjb25zdCBzdWJkaXIgPSBvcHRzLnN1YmRpcnNbaV1cbiAgICAgICAgICBpZiAoIXN1YmRpcikgY29udGludWVcbiAgICAgICAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGpvaW4ob3B0cy5kZWZhdWx0c1Jvb3QsIHN1YmRpciwgcmVsKVxuICAgICAgICAgIGNvbnN0IG1vZCA9IHNlcnZlci5tb2R1bGVHcmFwaC5nZXRNb2R1bGVCeUlkKGRlZmF1bHRQYXRoKVxuICAgICAgICAgIGlmIChtb2QpIHNlcnZlci5tb2R1bGVHcmFwaC5pbnZhbGlkYXRlTW9kdWxlKG1vZClcbiAgICAgICAgICBzZXJ2ZXIud3Muc2VuZCh7IHR5cGU6IFwiZnVsbC1yZWxvYWRcIiB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlcnZlci53YXRjaGVyLm9uKFwiYWRkXCIsIG9uQ2hhbmdlKVxuICAgICAgc2VydmVyLndhdGNoZXIub24oXCJ1bmxpbmtcIiwgb25DaGFuZ2UpXG4gICAgICBzZXJ2ZXIud2F0Y2hlci5vbihcImNoYW5nZVwiLCBmaWxlID0+IHtcbiAgICAgICAgaWYgKGZpbGUgPT09IG9wdHMuY29uZmlnUGF0aCkgc2VydmVyLnJlc3RhcnQoKVxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { Command } from "commander";
2
+ import { build } from "./commands/build.js";
3
+ import { escape } from "./commands/escape.js";
4
+ import { preview } from "./commands/preview.js";
5
+ import { start } from "./commands/start.js";
6
+ import { helpConfiguration } from "./helpers/program.js";
7
+ import packageJson from "../package.json" with { type: "json" };
8
+ export const program = new Command()
9
+ .name("livemark")
10
+ .description("Livemark static site generator")
11
+ .version(packageJson.version, "-v, --version", "display the livemark version")
12
+ .option("-c, --config <path>", "path to config file")
13
+ .configureHelp(helpConfiguration)
14
+ .addCommand(start)
15
+ .addCommand(build)
16
+ .addCommand(preview)
17
+ .addCommand(escape);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9wcm9ncmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3hELE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBRS9ELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRTtLQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDO0tBQ2hCLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQztLQUM3QyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsOEJBQThCLENBQUM7S0FDN0UsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO0tBQ3BELGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztLQUNoQyxVQUFVLENBQUMsS0FBSyxDQUFDO0tBQ2pCLFVBQVUsQ0FBQyxLQUFLLENBQUM7S0FDakIsVUFBVSxDQUFDLE9BQU8sQ0FBQztLQUNuQixVQUFVLENBQUMsTUFBTSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiXG5pbXBvcnQgeyBidWlsZCB9IGZyb20gXCIuL2NvbW1hbmRzL2J1aWxkLnRzXCJcbmltcG9ydCB7IGVzY2FwZSB9IGZyb20gXCIuL2NvbW1hbmRzL2VzY2FwZS50c1wiXG5pbXBvcnQgeyBwcmV2aWV3IH0gZnJvbSBcIi4vY29tbWFuZHMvcHJldmlldy50c1wiXG5pbXBvcnQgeyBzdGFydCB9IGZyb20gXCIuL2NvbW1hbmRzL3N0YXJ0LnRzXCJcbmltcG9ydCB7IGhlbHBDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vaGVscGVycy9wcm9ncmFtLnRzXCJcbmltcG9ydCBwYWNrYWdlSnNvbiBmcm9tIFwiLi4vcGFja2FnZS5qc29uXCIgd2l0aCB7IHR5cGU6IFwianNvblwiIH1cblxuZXhwb3J0IGNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwibGl2ZW1hcmtcIilcbiAgLmRlc2NyaXB0aW9uKFwiTGl2ZW1hcmsgc3RhdGljIHNpdGUgZ2VuZXJhdG9yXCIpXG4gIC52ZXJzaW9uKHBhY2thZ2VKc29uLnZlcnNpb24sIFwiLXYsIC0tdmVyc2lvblwiLCBcImRpc3BsYXkgdGhlIGxpdmVtYXJrIHZlcnNpb25cIilcbiAgLm9wdGlvbihcIi1jLCAtLWNvbmZpZyA8cGF0aD5cIiwgXCJwYXRoIHRvIGNvbmZpZyBmaWxlXCIpXG4gIC5jb25maWd1cmVIZWxwKGhlbHBDb25maWd1cmF0aW9uKVxuICAuYWRkQ29tbWFuZChzdGFydClcbiAgLmFkZENvbW1hbmQoYnVpbGQpXG4gIC5hZGRDb21tYW5kKHByZXZpZXcpXG4gIC5hZGRDb21tYW5kKGVzY2FwZSlcbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { Route as rootRouteImport } from './routes/__root';
2
+ import { Route as splatRouteImport } from './routes/$';
3
+ import { Route as IndexRouteImport } from './../.livemark/routes/index';
4
+ declare const splatRoute: any;
5
+ declare const IndexRoute: any;
6
+ export interface FileRoutesByFullPath {
7
+ '/': typeof IndexRoute;
8
+ '/$': typeof splatRoute;
9
+ }
10
+ export interface FileRoutesByTo {
11
+ '/': typeof IndexRoute;
12
+ '/$': typeof splatRoute;
13
+ }
14
+ export interface FileRoutesById {
15
+ __root__: typeof rootRouteImport;
16
+ '/': typeof IndexRoute;
17
+ '/$': typeof splatRoute;
18
+ }
19
+ export interface FileRouteTypes {
20
+ fileRoutesByFullPath: FileRoutesByFullPath;
21
+ fullPaths: '/' | '/$';
22
+ fileRoutesByTo: FileRoutesByTo;
23
+ to: '/' | '/$';
24
+ id: '__root__' | '/' | '/$';
25
+ fileRoutesById: FileRoutesById;
26
+ }
27
+ export interface RootRouteChildren {
28
+ IndexRoute: typeof IndexRoute;
29
+ splatRoute: typeof splatRoute;
30
+ }
31
+ declare module '@tanstack/react-router' {
32
+ interface FileRoutesByPath {
33
+ '/$': {
34
+ id: '/$';
35
+ path: '/$';
36
+ fullPath: '/$';
37
+ preLoaderRoute: typeof splatRouteImport;
38
+ parentRoute: typeof rootRouteImport;
39
+ };
40
+ '/': {
41
+ id: '/';
42
+ path: '/';
43
+ fullPath: '/';
44
+ preLoaderRoute: typeof IndexRouteImport;
45
+ parentRoute: typeof rootRouteImport;
46
+ };
47
+ }
48
+ }
49
+ export declare const routeTree: any;
50
+ import type { getRouter } from './router.tsx';
51
+ declare module '@tanstack/react-start' {
52
+ interface Register {
53
+ ssr: true;
54
+ router: Awaited<ReturnType<typeof getRouter>>;
55
+ }
56
+ }
57
+ export {};
@@ -0,0 +1,27 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ // noinspection JSUnusedGlobalSymbols
4
+ // This file was automatically generated by TanStack Router.
5
+ // You should NOT make any changes in this file as it will be overwritten.
6
+ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
7
+ import { Route as rootRouteImport } from './routes/__root';
8
+ import { Route as splatRouteImport } from './routes/$';
9
+ import { Route as IndexRouteImport } from './../.livemark/routes/index';
10
+ const splatRoute = splatRouteImport.update({
11
+ id: '/$',
12
+ path: '/$',
13
+ getParentRoute: () => rootRouteImport,
14
+ });
15
+ const IndexRoute = IndexRouteImport.update({
16
+ id: '/',
17
+ path: '/',
18
+ getParentRoute: () => rootRouteImport,
19
+ });
20
+ const rootRouteChildren = {
21
+ IndexRoute: IndexRoute,
22
+ splatRoute: splatRoute,
23
+ };
24
+ export const routeTree = rootRouteImport
25
+ ._addFileChildren(rootRouteChildren)
26
+ ._addFileTypes();
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVUcmVlLmdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9yb3V0ZVRyZWUuZ2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUVwQixjQUFjO0FBRWQscUNBQXFDO0FBRXJDLDREQUE0RDtBQUM1RCwwRUFBMEU7QUFDMUUsa0lBQWtJO0FBRWxJLE9BQU8sRUFBRSxLQUFLLElBQUksZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDMUQsT0FBTyxFQUFFLEtBQUssSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN0RCxPQUFPLEVBQUUsS0FBSyxJQUFJLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFFdkUsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLEVBQUUsRUFBRSxJQUFJO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsZUFBZTtDQUMvQixDQUFDLENBQUE7QUFDVCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDekMsRUFBRSxFQUFFLEdBQUc7SUFDUCxJQUFJLEVBQUUsR0FBRztJQUNULGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFlO0NBQy9CLENBQUMsQ0FBQTtBQStDVCxNQUFNLGlCQUFpQixHQUFzQjtJQUMzQyxVQUFVLEVBQUUsVUFBVTtJQUN0QixVQUFVLEVBQUUsVUFBVTtDQUN2QixDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGVBQWU7S0FDckMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUM7S0FDbkMsYUFBYSxFQUFrQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cblxuLy8gQHRzLW5vY2hlY2tcblxuLy8gbm9pbnNwZWN0aW9uIEpTVW51c2VkR2xvYmFsU3ltYm9sc1xuXG4vLyBUaGlzIGZpbGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IFRhblN0YWNrIFJvdXRlci5cbi8vIFlvdSBzaG91bGQgTk9UIG1ha2UgYW55IGNoYW5nZXMgaW4gdGhpcyBmaWxlIGFzIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4vLyBBZGRpdGlvbmFsbHksIHlvdSBzaG91bGQgYWxzbyBleGNsdWRlIHRoaXMgZmlsZSBmcm9tIHlvdXIgbGludGVyIGFuZC9vciBmb3JtYXR0ZXIgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGNoZWNrZWQgb3IgbW9kaWZpZWQuXG5cbmltcG9ydCB7IFJvdXRlIGFzIHJvb3RSb3V0ZUltcG9ydCB9IGZyb20gJy4vcm91dGVzL19fcm9vdCdcbmltcG9ydCB7IFJvdXRlIGFzIHNwbGF0Um91dGVJbXBvcnQgfSBmcm9tICcuL3JvdXRlcy8kJ1xuaW1wb3J0IHsgUm91dGUgYXMgSW5kZXhSb3V0ZUltcG9ydCB9IGZyb20gJy4vLi4vLmxpdmVtYXJrL3JvdXRlcy9pbmRleCdcblxuY29uc3Qgc3BsYXRSb3V0ZSA9IHNwbGF0Um91dGVJbXBvcnQudXBkYXRlKHtcbiAgaWQ6ICcvJCcsXG4gIHBhdGg6ICcvJCcsXG4gIGdldFBhcmVudFJvdXRlOiAoKSA9PiByb290Um91dGVJbXBvcnQsXG59IGFzIGFueSlcbmNvbnN0IEluZGV4Um91dGUgPSBJbmRleFJvdXRlSW1wb3J0LnVwZGF0ZSh7XG4gIGlkOiAnLycsXG4gIHBhdGg6ICcvJyxcbiAgZ2V0UGFyZW50Um91dGU6ICgpID0+IHJvb3RSb3V0ZUltcG9ydCxcbn0gYXMgYW55KVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVSb3V0ZXNCeUZ1bGxQYXRoIHtcbiAgJy8nOiB0eXBlb2YgSW5kZXhSb3V0ZVxuICAnLyQnOiB0eXBlb2Ygc3BsYXRSb3V0ZVxufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlUm91dGVzQnlUbyB7XG4gICcvJzogdHlwZW9mIEluZGV4Um91dGVcbiAgJy8kJzogdHlwZW9mIHNwbGF0Um91dGVcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVJvdXRlc0J5SWQge1xuICBfX3Jvb3RfXzogdHlwZW9mIHJvb3RSb3V0ZUltcG9ydFxuICAnLyc6IHR5cGVvZiBJbmRleFJvdXRlXG4gICcvJCc6IHR5cGVvZiBzcGxhdFJvdXRlXG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVSb3V0ZVR5cGVzIHtcbiAgZmlsZVJvdXRlc0J5RnVsbFBhdGg6IEZpbGVSb3V0ZXNCeUZ1bGxQYXRoXG4gIGZ1bGxQYXRoczogJy8nIHwgJy8kJ1xuICBmaWxlUm91dGVzQnlUbzogRmlsZVJvdXRlc0J5VG9cbiAgdG86ICcvJyB8ICcvJCdcbiAgaWQ6ICdfX3Jvb3RfXycgfCAnLycgfCAnLyQnXG4gIGZpbGVSb3V0ZXNCeUlkOiBGaWxlUm91dGVzQnlJZFxufVxuZXhwb3J0IGludGVyZmFjZSBSb290Um91dGVDaGlsZHJlbiB7XG4gIEluZGV4Um91dGU6IHR5cGVvZiBJbmRleFJvdXRlXG4gIHNwbGF0Um91dGU6IHR5cGVvZiBzcGxhdFJvdXRlXG59XG5cbmRlY2xhcmUgbW9kdWxlICdAdGFuc3RhY2svcmVhY3Qtcm91dGVyJyB7XG4gIGludGVyZmFjZSBGaWxlUm91dGVzQnlQYXRoIHtcbiAgICAnLyQnOiB7XG4gICAgICBpZDogJy8kJ1xuICAgICAgcGF0aDogJy8kJ1xuICAgICAgZnVsbFBhdGg6ICcvJCdcbiAgICAgIHByZUxvYWRlclJvdXRlOiB0eXBlb2Ygc3BsYXRSb3V0ZUltcG9ydFxuICAgICAgcGFyZW50Um91dGU6IHR5cGVvZiByb290Um91dGVJbXBvcnRcbiAgICB9XG4gICAgJy8nOiB7XG4gICAgICBpZDogJy8nXG4gICAgICBwYXRoOiAnLydcbiAgICAgIGZ1bGxQYXRoOiAnLydcbiAgICAgIHByZUxvYWRlclJvdXRlOiB0eXBlb2YgSW5kZXhSb3V0ZUltcG9ydFxuICAgICAgcGFyZW50Um91dGU6IHR5cGVvZiByb290Um91dGVJbXBvcnRcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgcm9vdFJvdXRlQ2hpbGRyZW46IFJvb3RSb3V0ZUNoaWxkcmVuID0ge1xuICBJbmRleFJvdXRlOiBJbmRleFJvdXRlLFxuICBzcGxhdFJvdXRlOiBzcGxhdFJvdXRlLFxufVxuZXhwb3J0IGNvbnN0IHJvdXRlVHJlZSA9IHJvb3RSb3V0ZUltcG9ydFxuICAuX2FkZEZpbGVDaGlsZHJlbihyb290Um91dGVDaGlsZHJlbilcbiAgLl9hZGRGaWxlVHlwZXM8RmlsZVJvdXRlVHlwZXM+KClcblxuaW1wb3J0IHR5cGUgeyBnZXRSb3V0ZXIgfSBmcm9tICcuL3JvdXRlci50c3gnXG5pbXBvcnQgdHlwZSB7IGNyZWF0ZVN0YXJ0IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXN0YXJ0J1xuZGVjbGFyZSBtb2R1bGUgJ0B0YW5zdGFjay9yZWFjdC1zdGFydCcge1xuICBpbnRlcmZhY2UgUmVnaXN0ZXIge1xuICAgIHNzcjogdHJ1ZVxuICAgIHJvdXRlcjogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBnZXRSb3V0ZXI+PlxuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export declare function getRouter(): import("@tanstack/router-core").RouterCore<any, "always", false, import("@tanstack/history").RouterHistory, Record<string, any>>;
2
+ declare module "@tanstack/react-router" {
3
+ interface Register {
4
+ router: ReturnType<typeof getRouter>;
5
+ }
6
+ }
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { QueryClient } from "@tanstack/react-query";
3
+ import { createRouter } from "@tanstack/react-router";
4
+ import { setupRouterSsrQueryIntegration } from "@tanstack/react-router-ssr-query";
5
+ import { DefaultCatchBoundary } from "./components/DefaultCatchBoundary.js";
6
+ import { NotFound } from "./components/NotFound.js";
7
+ import { routeTree } from "./routeTree.gen.js";
8
+ export function getRouter() {
9
+ const queryClient = new QueryClient();
10
+ const router = createRouter({
11
+ routeTree,
12
+ context: { queryClient },
13
+ trailingSlash: "always",
14
+ defaultPreload: "intent",
15
+ defaultViewTransition: true,
16
+ defaultErrorComponent: DefaultCatchBoundary,
17
+ defaultNotFoundComponent: () => _jsx(NotFound, {}),
18
+ scrollRestoration: true,
19
+ });
20
+ setupRouterSsrQueryIntegration({
21
+ router,
22
+ queryClient,
23
+ });
24
+ return router;
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3JvdXRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDckQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXVDLENBQUE7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEyQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUU5QyxNQUFNLFVBQVUsU0FBUztJQUN2QixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO0lBRXJDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixTQUFTO1FBQ1QsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFO1FBQ3hCLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLHFCQUFxQixFQUFFLElBQUk7UUFDM0IscUJBQXFCLEVBQUUsb0JBQW9CO1FBQzNDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUMsUUFBUSxLQUFHO1FBQzVDLGlCQUFpQixFQUFFLElBQUk7S0FDeEIsQ0FBQyxDQUFBO0lBRUYsOEJBQThCLENBQUM7UUFDN0IsTUFBTTtRQUNOLFdBQVc7S0FDWixDQUFDLENBQUE7SUFFRixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIlxuaW1wb3J0IHsgY3JlYXRlUm91dGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgc2V0dXBSb3V0ZXJTc3JRdWVyeUludGVncmF0aW9uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXItc3NyLXF1ZXJ5XCJcbmltcG9ydCB7IERlZmF1bHRDYXRjaEJvdW5kYXJ5IH0gZnJvbSBcIi4vY29tcG9uZW50cy9EZWZhdWx0Q2F0Y2hCb3VuZGFyeS50c3hcIlxuaW1wb3J0IHsgTm90Rm91bmQgfSBmcm9tIFwiLi9jb21wb25lbnRzL05vdEZvdW5kLnRzeFwiXG5pbXBvcnQgeyByb3V0ZVRyZWUgfSBmcm9tIFwiLi9yb3V0ZVRyZWUuZ2VuLnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlcigpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKVxuXG4gIGNvbnN0IHJvdXRlciA9IGNyZWF0ZVJvdXRlcih7XG4gICAgcm91dGVUcmVlLFxuICAgIGNvbnRleHQ6IHsgcXVlcnlDbGllbnQgfSxcbiAgICB0cmFpbGluZ1NsYXNoOiBcImFsd2F5c1wiLFxuICAgIGRlZmF1bHRQcmVsb2FkOiBcImludGVudFwiLFxuICAgIGRlZmF1bHRWaWV3VHJhbnNpdGlvbjogdHJ1ZSxcbiAgICBkZWZhdWx0RXJyb3JDb21wb25lbnQ6IERlZmF1bHRDYXRjaEJvdW5kYXJ5LFxuICAgIGRlZmF1bHROb3RGb3VuZENvbXBvbmVudDogKCkgPT4gPE5vdEZvdW5kIC8+LFxuICAgIHNjcm9sbFJlc3RvcmF0aW9uOiB0cnVlLFxuICB9KVxuXG4gIHNldHVwUm91dGVyU3NyUXVlcnlJbnRlZ3JhdGlvbih7XG4gICAgcm91dGVyLFxuICAgIHF1ZXJ5Q2xpZW50LFxuICB9KVxuXG4gIHJldHVybiByb3V0ZXJcbn1cblxuZGVjbGFyZSBtb2R1bGUgXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCIge1xuICBpbnRlcmZhY2UgUmVnaXN0ZXIge1xuICAgIHJvdXRlcjogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0Um91dGVyPlxuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export declare const Route: import("@tanstack/router-core").Route<import("@tanstack/react-router").Register, any, "/$", "/$", "/$", "/$", undefined, import("@tanstack/react-router").ResolveParams<"/$">, import("@tanstack/react-router").AnyContext, import("@tanstack/react-router").AnyContext, import("@tanstack/react-router").AnyContext, {}, ({ params }: import("@tanstack/router-core").LoaderFnContext<import("@tanstack/react-router").Register, any, "/$", import("@tanstack/react-router").ResolveParams<"/$">, {}, import("@tanstack/react-router").AnyContext, import("@tanstack/react-router").AnyContext, import("@tanstack/react-router").AnyContext, unknown, undefined>) => any, unknown, unknown, unknown, unknown, undefined>;
@@ -0,0 +1,85 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createFileRoute, notFound, redirect } from "@tanstack/react-router";
3
+ import { currentSection, firstArticle, homeArticle, sortedArticles, } from "../content/article.js";
4
+ import { sectionTags } from "../content/tag.js";
5
+ import { Article } from "../components/Article.js";
6
+ import { BlogIndex } from "../components/BlogIndex.js";
7
+ import { ChangelogIndex } from "../components/ChangelogIndex.js";
8
+ import { TagIndex } from "../components/TagIndex.js";
9
+ import markdownCss from "../styles/markdown.css?url";
10
+ export const Route = createFileRoute("/$")({
11
+ loader: ({ params }) => {
12
+ if (!params._splat) {
13
+ if (homeArticle)
14
+ return { ...homeArticle, sidebar: homeArticle.sidebar };
15
+ if (!firstArticle)
16
+ throw notFound();
17
+ throw redirect({
18
+ to: "/$",
19
+ params: { _splat: firstArticle.path.replace(/^\/|\/$/g, "") },
20
+ });
21
+ }
22
+ const splat = `/${params._splat}/`;
23
+ const article = sortedArticles.find(a => a.path === splat);
24
+ if (article)
25
+ return article;
26
+ const section = currentSection(splat);
27
+ if (section?.type === "changelog" && section.prefix === splat) {
28
+ return {
29
+ changelogIndex: true,
30
+ sectionPrefix: section.prefix,
31
+ title: section.title,
32
+ sidebar: true,
33
+ };
34
+ }
35
+ if (section?.type === "blog") {
36
+ if (section.prefix === splat) {
37
+ return {
38
+ blogIndex: true,
39
+ sectionPrefix: section.prefix,
40
+ title: section.title,
41
+ sidebar: true,
42
+ };
43
+ }
44
+ const tagMatch = splat.match(new RegExp(`^${section.prefix}tags/([^/]+)/$`));
45
+ const tag = tagMatch?.[1];
46
+ if (tag) {
47
+ const tagMap = sectionTags.get(section.prefix);
48
+ if (tagMap?.has(tag)) {
49
+ return {
50
+ tagPage: true,
51
+ sectionPrefix: section.prefix,
52
+ tag,
53
+ title: `Posts tagged '${tag}'`,
54
+ sidebar: true,
55
+ };
56
+ }
57
+ }
58
+ }
59
+ throw notFound();
60
+ },
61
+ head: ({ loaderData }) => ({
62
+ meta: [
63
+ ...(loaderData ? [{ title: loaderData.title }] : []),
64
+ ...("description" in loaderData && loaderData.description
65
+ ? [{ name: "description", content: loaderData.description }]
66
+ : []),
67
+ ],
68
+ links: [{ rel: "stylesheet", href: markdownCss }],
69
+ }),
70
+ component: Component,
71
+ });
72
+ function Component() {
73
+ const data = Route.useLoaderData();
74
+ if ("blogIndex" in data) {
75
+ return _jsx(BlogIndex, { sectionPrefix: data.sectionPrefix });
76
+ }
77
+ if ("changelogIndex" in data) {
78
+ return _jsx(ChangelogIndex, { sectionPrefix: data.sectionPrefix });
79
+ }
80
+ if ("tagPage" in data) {
81
+ return _jsx(TagIndex, { sectionPrefix: data.sectionPrefix, tag: data.tag });
82
+ }
83
+ return _jsx(Article, { article: data });
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiJC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9yb3V0ZXMvJC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzVFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSx1QkFBdUIsQ0FBQTtBQUM5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEyQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWtDLENBQUE7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUE0QixDQUFBO0FBQ3JELE9BQU8sV0FBVyxNQUFNLDRCQUE0QixDQUFBO0FBRXBELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsSUFBSSxXQUFXO2dCQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ3hFLElBQUksQ0FBQyxZQUFZO2dCQUFFLE1BQU0sUUFBUSxFQUFFLENBQUE7WUFDbkMsTUFBTSxRQUFRLENBQUM7Z0JBQ2IsRUFBRSxFQUFFLElBQUk7Z0JBQ1IsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRTthQUM5RCxDQUFD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QUksQ0FBQTtJQUN6RCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLEtBQUMsY0FBYyxJQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFJLENBQUE7SUFDOUQsQ0FBQztJQUNELElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBQyxRQUFRLElBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUksQ0FBQTtJQUN2RSxDQUFDO0lBQ0QsT0FBTyxLQUFDLE9BQU8sSUFBQyxPQUFPLEVBQUUsSUFBSSxHQUFJLENBQUE7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUZpbGVSb3V0ZSwgbm90Rm91bmQsIHJlZGlyZWN0IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHtcbiAgY3VycmVudFNlY3Rpb24sXG4gIGZpcnN0QXJ0aWNsZSxcbiAgaG9tZUFydGljbGUsXG4gIHNvcnRlZEFydGljbGVzLFxufSBmcm9tIFwiLi4vY29udGVudC9hcnRpY2xlLnRzXCJcbmltcG9ydCB7IHNlY3Rpb25UYWdzIH0gZnJvbSBcIi4uL2NvbnRlbnQvdGFnLnRzXCJcbmltcG9ydCB7IEFydGljbGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9BcnRpY2xlLnRzeFwiXG5pbXBvcnQgeyBCbG9nSW5kZXggfSBmcm9tIFwiLi4vY29tcG9uZW50cy9CbG9nSW5kZXgudHN4XCJcbmltcG9ydCB7IENoYW5nZWxvZ0luZGV4IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQ2hhbmdlbG9nSW5kZXgudHN4XCJcbmltcG9ydCB7IFRhZ0luZGV4IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGFnSW5kZXgudHN4XCJcbmltcG9ydCBtYXJrZG93bkNzcyBmcm9tIFwiLi4vc3R5bGVzL21hcmtkb3duLmNzcz91cmxcIlxuXG5leHBvcnQgY29uc3QgUm91dGUgPSBjcmVhdGVGaWxlUm91dGUoXCIvJFwiKSh7XG4gIGxvYWRlcjogKHsgcGFyYW1zIH0pID0+IHtcbiAgICBpZiAoIXBhcmFtcy5fc3BsYXQpIHtcbiAgICAgIGlmIChob21lQXJ0aWNsZSkgcmV0dXJuIHsgLi4uaG9tZUFydGljbGUsIHNpZGViYXI6IGhvbWVBcnRpY2xlLnNpZGViYXIgfVxuICAgICAgaWYgKCFmaXJzdEFydGljbGUpIHRocm93IG5vdEZvdW5kKClcbiAgICAgIHRocm93IHJlZGlyZWN0KHtcbiAgICAgICAgdG86IFwiLyRcIixcbiAgICAgICAgcGFyYW1zOiB7IF9zcGxhdDogZmlyc3RBcnRpY2xlLnBhdGgucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBjb25zdCBzcGxhdCA9IGAvJHtwYXJhbXMuX3NwbGF0fS9gXG4gICAgY29uc3QgYXJ0aWNsZSA9IHNvcnRlZEFydGljbGVzLmZpbmQoYSA9PiBhLnBhdGggPT09IHNwbGF0KVxuICAgIGlmIChhcnRpY2xlKSByZXR1cm4gYXJ0aWNsZVxuXG4gICAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKHNwbGF0KVxuICAgIGlmIChzZWN0aW9uPy50eXBlID09PSBcImNoYW5nZWxvZ1wiICYmIHNlY3Rpb24ucHJlZml4ID09PSBzcGxhdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhbmdlbG9nSW5kZXg6IHRydWUgYXMgY29uc3QsXG4gICAgICAgIHNlY3Rpb25QcmVmaXg6IHNlY3Rpb24ucHJlZml4LFxuICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgc2lkZWJhcjogdHJ1ZSxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNlY3Rpb24/LnR5cGUgPT09IFwiYmxvZ1wiKSB7XG4gICAgICBpZiAoc2VjdGlvbi5wcmVmaXggPT09IHNwbGF0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYmxvZ0luZGV4OiB0cnVlIGFzIGNvbnN0LFxuICAgICAgICAgIHNlY3Rpb25QcmVmaXg6IHNlY3Rpb24ucHJlZml4LFxuICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgIHNpZGViYXI6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFnTWF0Y2ggPSBzcGxhdC5tYXRjaChcbiAgICAgICAgbmV3IFJlZ0V4cChgXiR7c2VjdGlvbi5wcmVmaXh9dGFncy8oW14vXSspLyRgKSxcbiAgICAgIClcbiAgICAgIGNvbnN0IHRhZyA9IHRhZ01hdGNoPy5bMV1cbiAgICAgIGlmICh0YWcpIHtcbiAgICAgICAgY29uc3QgdGFnTWFwID0gc2VjdGlvblRhZ3MuZ2V0KHNlY3Rpb24ucHJlZml4KVxuICAgICAgICBpZiAodGFnTWFwPy5oYXModGFnKSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWdQYWdlOiB0cnVlIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2VjdGlvblByZWZpeDogc2VjdGlvbi5wcmVmaXgsXG4gICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICB0aXRsZTogYFBvc3RzIHRhZ2dlZCAnJHt0YWd9J2AsXG4gICAgICAgICAgICBzaWRlYmFyOiB0cnVlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5vdEZvdW5kKClcbiAgfSxcbiAgaGVhZDogKHsgbG9hZGVyRGF0YSB9KSA9PiAoe1xuICAgIG1ldGE6IFtcbiAgICAgIC4uLihsb2FkZXJEYXRhID8gW3sgdGl0bGU6IGxvYWRlckRhdGEudGl0bGUgfV0gOiBbXSksXG4gICAgICAuLi4oXCJkZXNjcmlwdGlvblwiIGluIGxvYWRlckRhdGEgJiYgbG9hZGVyRGF0YS5kZXNjcmlwdGlvblxuICAgICAgICA/IFt7IG5hbWU6IFwiZGVzY3JpcHRpb25cIiwgY29udGVudDogbG9hZGVyRGF0YS5kZXNjcmlwdGlvbiB9XVxuICAgICAgICA6IFtdKSxcbiAgICBdLFxuICAgIGxpbmtzOiBbeyByZWw6IFwic3R5bGVzaGVldFwiLCBocmVmOiBtYXJrZG93bkNzcyB9XSxcbiAgfSksXG4gIGNvbXBvbmVudDogQ29tcG9uZW50LFxufSlcblxuZnVuY3Rpb24gQ29tcG9uZW50KCkge1xuICBjb25zdCBkYXRhID0gUm91dGUudXNlTG9hZGVyRGF0YSgpXG4gIGlmIChcImJsb2dJbmRleFwiIGluIGRhdGEpIHtcbiAgICByZXR1cm4gPEJsb2dJbmRleCBzZWN0aW9uUHJlZml4PXtkYXRhLnNlY3Rpb25QcmVmaXh9IC8+XG4gIH1cbiAgaWYgKFwiY2hhbmdlbG9nSW5kZXhcIiBpbiBkYXRhKSB7XG4gICAgcmV0dXJuIDxDaGFuZ2Vsb2dJbmRleCBzZWN0aW9uUHJlZml4PXtkYXRhLnNlY3Rpb25QcmVmaXh9IC8+XG4gIH1cbiAgaWYgKFwidGFnUGFnZVwiIGluIGRhdGEpIHtcbiAgICByZXR1cm4gPFRhZ0luZGV4IHNlY3Rpb25QcmVmaXg9e2RhdGEuc2VjdGlvblByZWZpeH0gdGFnPXtkYXRhLnRhZ30gLz5cbiAgfVxuICByZXR1cm4gPEFydGljbGUgYXJ0aWNsZT17ZGF0YX0gLz5cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export declare const Route: import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/react-router").AnyContext, import("@tanstack/react-router").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { TanStackDevtools } from "@tanstack/react-devtools";
3
+ import { ReactQueryDevtoolsPanel } from "@tanstack/react-query-devtools";
4
+ import { createRootRoute, HeadContent, Outlet, Scripts, useMatch, } from "@tanstack/react-router";
5
+ import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools";
6
+ import { Layout } from "../components/Layout.js";
7
+ import { DefaultCatchBoundary } from "../components/DefaultCatchBoundary.js";
8
+ import { NotFound } from "../components/NotFound.js";
9
+ import { Toaster } from "../elements/sonner.js";
10
+ import { faviconType } from "../helpers/favicon.js";
11
+ import defaultFavicon from "../assets/logo.svg";
12
+ import generalCss from "../styles/general.css?url";
13
+ export const Route = createRootRoute({
14
+ head: () => {
15
+ const favicon = import.meta.env.CONFIG.favicon ??
16
+ import.meta.env.CONFIG.logo ??
17
+ defaultFavicon;
18
+ return {
19
+ meta: [
20
+ { charSet: "utf-8" },
21
+ { title: import.meta.env.CONFIG.title },
22
+ { name: "description", content: import.meta.env.CONFIG.description },
23
+ { property: "og:title", content: import.meta.env.CONFIG.title },
24
+ {
25
+ property: "og:description",
26
+ content: import.meta.env.CONFIG.description,
27
+ },
28
+ { property: "og:site_name", content: import.meta.env.CONFIG.title },
29
+ { property: "og:type", content: "website" },
30
+ {
31
+ name: "viewport",
32
+ content: "width=device-width, initial-scale=1",
33
+ },
34
+ ],
35
+ links: [
36
+ { rel: "icon", href: favicon, type: faviconType(favicon) },
37
+ { rel: "stylesheet", href: generalCss },
38
+ ],
39
+ };
40
+ },
41
+ notFoundComponent: () => _jsx(NotFound, {}),
42
+ errorComponent: props => {
43
+ return (_jsx(Document, { children: _jsx(DefaultCatchBoundary, { ...props }) }));
44
+ },
45
+ component: () => {
46
+ return (_jsx(Document, { children: _jsx(Outlet, {}) }));
47
+ },
48
+ });
49
+ function Document(props) {
50
+ const articleRoute = useMatch({ from: "/$", shouldThrow: false });
51
+ const withSidebar = articleRoute?.loaderData?.sidebar;
52
+ return (_jsxs("html", { lang: "en", children: [
53
+ _jsx("head", { children: _jsx(HeadContent, {}) }), _jsxs("body", { children: [
54
+ _jsx(Layout, { withSidebar: withSidebar, children: props.children }), _jsx(Toaster, { position: "top-center" }), _jsx(TanStackDevtools, { config: { hideUntilHover: true, position: "bottom-left" }, plugins: [
55
+ {
56
+ name: "TanStack Query",
57
+ render: _jsx(ReactQueryDevtoolsPanel, {}),
58
+ defaultOpen: true,
59
+ },
60
+ {
61
+ name: "TanStack Router",
62
+ render: _jsx(TanStackRouterDevtoolsPanel, {}),
63
+ defaultOpen: false,
64
+ },
65
+ ] }), _jsx(Scripts, {})
66
+ ] })
67
+ ] }));
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX19yb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3JvdXRlcy9fX3Jvb3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN4RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLFdBQVcsRUFDWCxNQUFNLEVBQ04sT0FBTyxFQUNQLFFBQVEsR0FDVCxNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRTdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBMEIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBd0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTRCLENBQUE7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNuRCxPQUFPLGNBQWMsTUFBTSxvQkFBb0IsQ0FBQTtBQUMvQyxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQTtBQUVsRCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQ25DLElBQUksRUFBRSxHQUFHLEVBQUU7UUFDVCxNQUFNLE9BQU8sR0FDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDOUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1lBQzNCLGNBQWMsQ0FBQTtRQUNoQixPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtnQkFDcEIsRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQy9EO29CQUNFLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVc7aUJBQzVDO2dCQUNELEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ25FLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO2dCQUMzQztvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsT0FBTyxFQUFFLHFDQUFxQztpQkFDL0M7YUFDRjtZQUNELEtBQUssRUFBRTtnQkFDTCxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMxRCxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTthQUN4QztTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBQyxRQUFRLEtBQUc7SUFDckMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sQ0FDTCxLQUFDLFFBQVEsY0FDUCxLQUFDLG9CQUFvQixPQUFLLEtBQUssR0FBSSxHQUMxQixDQUNaLENBQUE7SUFDSCxDQUFDO0lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUNkLE9BQU8sQ0FDTCxLQUFDLFFBQVEsY0FDUCxLQUFDLE1BQU0sS0FBRyxHQUNELENBQ1osQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUE7QUFFRixTQUFTLFFBQVEsQ0FBQyxLQUFvQztJQUNwRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFBO0lBRXJELE9BQU8sQ0FDTCxnQkFBTSxJQUFJLEVBQUMsSUFBSTtZQUNiLHlCQUNFLEtBQUMsV0FBVyxLQUFHLEdBQ1YsRUFDUDtvQkFDRSxLQUFDLE1BQU0sSUFBQyxXQUFXLEVBQUUsV0FBVyxZQUFHLEtBQUssQ0FBQyxRQUFRLEdBQVUsRUFDM0QsS0FBQyxPQUFPLElBQUMsUUFBUSxFQUFDLFlBQVksR0FBRyxFQUNqQyxLQUFDLGdCQUFnQixJQUNmLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxFQUN6RCxPQUFPLEVBQUU7NEJBQ1A7Z0NBQ0UsSUFBSSxFQUFFLGdCQUFnQjtnQ0FDdEIsTUFBTSxFQUFFLEtBQUMsdUJBQXVCLEtBQUc7Z0NBQ25DLFdBQVcsRUFBRSxJQUFJOzZCQUNsQjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsaUJBQWlCO2dDQUN2QixNQUFNLEVBQUUsS0FBQywyQkFBMkIsS0FBRztnQ0FDdkMsV0FBVyxFQUFFLEtBQUs7NkJBQ25CO3lCQUNGLEdBQ0QsRUFDRixLQUFDLE9BQU8sS0FBRztvQkFDTjtZQUNGLENBQ1IsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYW5TdGFja0RldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1kZXZ0b29sc1wiXG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHNcIlxuaW1wb3J0IHtcbiAgY3JlYXRlUm9vdFJvdXRlLFxuICBIZWFkQ29udGVudCxcbiAgT3V0bGV0LFxuICBTY3JpcHRzLFxuICB1c2VNYXRjaCxcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgVGFuU3RhY2tSb3V0ZXJEZXZ0b29sc1BhbmVsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXItZGV2dG9vbHNcIlxuaW1wb3J0IHR5cGUgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvTGF5b3V0LnRzeFwiXG5pbXBvcnQgeyBEZWZhdWx0Q2F0Y2hCb3VuZGFyeSB9IGZyb20gXCIuLi9jb21wb25lbnRzL0RlZmF1bHRDYXRjaEJvdW5kYXJ5LnRzeFwiXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9jb21wb25lbnRzL05vdEZvdW5kLnRzeFwiXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSBcIi4uL2VsZW1lbnRzL3Nvbm5lci50c3hcIlxuaW1wb3J0IHsgZmF2aWNvblR5cGUgfSBmcm9tIFwiLi4vaGVscGVycy9mYXZpY29uLnRzXCJcbmltcG9ydCBkZWZhdWx0RmF2aWNvbiBmcm9tIFwiLi4vYXNzZXRzL2xvZ28uc3ZnXCJcbmltcG9ydCBnZW5lcmFsQ3NzIGZyb20gXCIuLi9zdHlsZXMvZ2VuZXJhbC5jc3M/dXJsXCJcblxuZXhwb3J0IGNvbnN0IFJvdXRlID0gY3JlYXRlUm9vdFJvdXRlKHtcbiAgaGVhZDogKCkgPT4ge1xuICAgIGNvbnN0IGZhdmljb24gPVxuICAgICAgaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy5mYXZpY29uID8/XG4gICAgICBpbXBvcnQubWV0YS5lbnYuQ09ORklHLmxvZ28gPz9cbiAgICAgIGRlZmF1bHRGYXZpY29uXG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGE6IFtcbiAgICAgICAgeyBjaGFyU2V0OiBcInV0Zi04XCIgfSxcbiAgICAgICAgeyB0aXRsZTogaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy50aXRsZSB9LFxuICAgICAgICB7IG5hbWU6IFwiZGVzY3JpcHRpb25cIiwgY29udGVudDogaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy5kZXNjcmlwdGlvbiB9LFxuICAgICAgICB7IHByb3BlcnR5OiBcIm9nOnRpdGxlXCIsIGNvbnRlbnQ6IGltcG9ydC5tZXRhLmVudi5DT05GSUcudGl0bGUgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3BlcnR5OiBcIm9nOmRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgY29udGVudDogaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm9wZXJ0eTogXCJvZzpzaXRlX25hbWVcIiwgY29udGVudDogaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy50aXRsZSB9LFxuICAgICAgICB7IHByb3BlcnR5OiBcIm9nOnR5cGVcIiwgY29udGVudDogXCJ3ZWJzaXRlXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwidmlld3BvcnRcIixcbiAgICAgICAgICBjb250ZW50OiBcIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbGlua3M6IFtcbiAgICAgICAgeyByZWw6IFwiaWNvblwiLCBocmVmOiBmYXZpY29uLCB0eXBlOiBmYXZpY29uVHlwZShmYXZpY29uKSB9LFxuICAgICAgICB7IHJlbDogXCJzdHlsZXNoZWV0XCIsIGhyZWY6IGdlbmVyYWxDc3MgfSxcbiAgICAgIF0sXG4gICAgfVxuICB9LFxuICBub3RGb3VuZENvbXBvbmVudDogKCkgPT4gPE5vdEZvdW5kIC8+LFxuICBlcnJvckNvbXBvbmVudDogcHJvcHMgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8RG9jdW1lbnQ+XG4gICAgICAgIDxEZWZhdWx0Q2F0Y2hCb3VuZGFyeSB7Li4ucHJvcHN9IC8+XG4gICAgICA8L0RvY3VtZW50PlxuICAgIClcbiAgfSxcbiAgY29tcG9uZW50OiAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEb2N1bWVudD5cbiAgICAgICAgPE91dGxldCAvPlxuICAgICAgPC9Eb2N1bWVudD5cbiAgICApXG4gIH0sXG59KVxuXG5mdW5jdGlvbiBEb2N1bWVudChwcm9wczogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgYXJ0aWNsZVJvdXRlID0gdXNlTWF0Y2goeyBmcm9tOiBcIi8kXCIsIHNob3VsZFRocm93OiBmYWxzZSB9KVxuICBjb25zdCB3aXRoU2lkZWJhciA9IGFydGljbGVSb3V0ZT8ubG9hZGVyRGF0YT8uc2lkZWJhclxuXG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPEhlYWRDb250ZW50IC8+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keT5cbiAgICAgICAgPExheW91dCB3aXRoU2lkZWJhcj17d2l0aFNpZGViYXJ9Pntwcm9wcy5jaGlsZHJlbn08L0xheW91dD5cbiAgICAgICAgPFRvYXN0ZXIgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIgLz5cbiAgICAgICAgPFRhblN0YWNrRGV2dG9vbHNcbiAgICAgICAgICBjb25maWc9e3sgaGlkZVVudGlsSG92ZXI6IHRydWUsIHBvc2l0aW9uOiBcImJvdHRvbS1sZWZ0XCIgfX1cbiAgICAgICAgICBwbHVnaW5zPXtbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwiVGFuU3RhY2sgUXVlcnlcIixcbiAgICAgICAgICAgICAgcmVuZGVyOiA8UmVhY3RRdWVyeURldnRvb2xzUGFuZWwgLz4sXG4gICAgICAgICAgICAgIGRlZmF1bHRPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJUYW5TdGFjayBSb3V0ZXJcIixcbiAgICAgICAgICAgICAgcmVuZGVyOiA8VGFuU3RhY2tSb3V0ZXJEZXZ0b29sc1BhbmVsIC8+LFxuICAgICAgICAgICAgICBkZWZhdWx0T3BlbjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF19XG4gICAgICAgIC8+XG4gICAgICAgIDxTY3JpcHRzIC8+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tanstack/react-start/server-entry").ServerEntry;
2
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import handler, { createServerEntry } from "@tanstack/react-start/server-entry";
2
+ export default createServerEntry({
3
+ fetch(request) {
4
+ return handler.fetch(request);
5
+ },
6
+ });
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFL0UsZUFBZSxpQkFBaUIsQ0FBQztJQUMvQixLQUFLLENBQUMsT0FBTztRQUNYLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvQixDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhhbmRsZXIsIHsgY3JlYXRlU2VydmVyRW50cnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXN0YXJ0L3NlcnZlci1lbnRyeVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVNlcnZlckVudHJ5KHtcbiAgZmV0Y2gocmVxdWVzdCkge1xuICAgIHJldHVybiBoYW5kbGVyLmZldGNoKHJlcXVlc3QpXG4gIH0sXG59KVxuIl19
@@ -0,0 +1,7 @@
1
+ /** Sub-directories of `website/` that participate in the override mechanism. */
2
+ export const OVERRIDE_SUBDIRS = [
3
+ "components",
4
+ "elements",
5
+ "styles",
6
+ ];
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2Uvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFzQjtJQUNqRCxZQUFZO0lBQ1osVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFN1Yi1kaXJlY3RvcmllcyBvZiBgd2Vic2l0ZS9gIHRoYXQgcGFydGljaXBhdGUgaW4gdGhlIG92ZXJyaWRlIG1lY2hhbmlzbS4gKi9cbmV4cG9ydCBjb25zdCBPVkVSUklERV9TVUJESVJTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgXCJjb21wb25lbnRzXCIsXG4gIFwiZWxlbWVudHNcIixcbiAgXCJzdHlsZXNcIixcbl1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,6 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvdXRpbHMvc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXhDLE1BQU0sVUFBVSxFQUFFLENBQUMsR0FBRyxNQUFvQjtJQUN4QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSBcImNsc3hcIlxuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiXG5cbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
@@ -0,0 +1,67 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { join, relative } from "node:path";
3
+ import contentCollections from "@content-collections/vite";
4
+ import tailwind from "@tailwindcss/vite";
5
+ import { devtools } from "@tanstack/devtools-vite";
6
+ import { tanstackStart } from "@tanstack/react-start/plugin/vite";
7
+ import { physical, rootRoute, route, } from "@tanstack/virtual-file-routes";
8
+ import react from "@vitejs/plugin-react";
9
+ import { defineConfig } from "vite";
10
+ import svgr from "vite-plugin-svgr";
11
+ import { loadConfig } from "./actions/config/load.js";
12
+ import { WebsiteConfig } from "./models/config.js";
13
+ import { OVERRIDE_SUBDIRS } from "./settings.js";
14
+ import { livemark } from "./plugins/vite-livemark.js";
15
+ const config = await loadConfig();
16
+ const sourceDir = import.meta.dirname;
17
+ const sourceRelative = relative(config.root, sourceDir);
18
+ const overridesRoot = join(config.root, ".livemark");
19
+ // Seed `.livemark/.gitignore` on first run so Vite's build/cache artifacts
20
+ // never get committed by accident.
21
+ const gitignorePath = join(overridesRoot, ".gitignore");
22
+ if (!existsSync(gitignorePath)) {
23
+ mkdirSync(overridesRoot, { recursive: true });
24
+ writeFileSync(gitignorePath, "/build\n/cache\n");
25
+ }
26
+ const routeChildren = [route("/$", "$.tsx")];
27
+ if (existsSync(join(overridesRoot, "routes"))) {
28
+ // physical() resolves its argument relative to this file. Hardcoding a
29
+ // relative literal lands at <pkg>/.livemark/ when livemark is installed
30
+ // under node_modules/. Compute it from the consumer's overridesRoot.
31
+ routeChildren.push(physical(relative(sourceDir, join(overridesRoot, "routes"))));
32
+ }
33
+ export default defineConfig({
34
+ root: config.root,
35
+ publicDir: join(config.root, ".livemark", "public"),
36
+ build: { outDir: ".livemark/build" },
37
+ define: {
38
+ "import.meta.env.CONFIG": JSON.stringify(WebsiteConfig.parse(config)),
39
+ },
40
+ plugins: [
41
+ livemark({
42
+ defaultsRoot: sourceDir,
43
+ overridesRoot,
44
+ subdirs: [...OVERRIDE_SUBDIRS],
45
+ configPath: config.configPath,
46
+ }),
47
+ devtools(),
48
+ tailwind(),
49
+ contentCollections({
50
+ configPath: join(sourceRelative, "content-collections.ts"),
51
+ }),
52
+ tanstackStart({
53
+ srcDirectory: sourceRelative,
54
+ pages: [{ path: "/" }],
55
+ prerender: { enabled: true, crawlLinks: true },
56
+ sitemap: config.site
57
+ ? { enabled: true, host: config.site }
58
+ : { enabled: false },
59
+ router: {
60
+ virtualRouteConfig: rootRoute("__root.tsx", routeChildren),
61
+ },
62
+ }),
63
+ react(),
64
+ svgr(),
65
+ ],
66
+ });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2Uvdml0ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sa0JBQWtCLE1BQU0sMkJBQTJCLENBQUE7QUFDMUQsT0FBTyxRQUFRLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSwrQkFBK0IsQ0FBQTtBQUN0QyxPQUFPLEtBQUssTUFBTSxzQkFBc0IsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25DLE9BQU8sSUFBSSxNQUFNLGtCQUFrQixDQUFBO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVyRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFBO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUNyQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQTtBQUVwRCwyRUFBMkU7QUFDM0UsbUNBQW1DO0FBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUE7QUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0lBQy9CLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM3QyxhQUFhLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5Qyx1RUFBdUU7SUFDdkUsd0VBQXdFO0lBQ3hFLHFFQUFxRTtJQUNyRSxhQUFhLENBQUMsSUFBSSxDQUNoQixRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FDN0QsQ0FBQTtBQUNILENBQUM7QUFFRCxlQUFlLFlBQVksQ0FBQztJQUMxQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7SUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUM7SUFDbkQsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFO0lBQ3BDLE1BQU0sRUFBRTtRQUNOLHdCQUF3QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0RTtJQUNELE9BQU8sRUFBRTtRQUNQLFFBQVEsQ0FBQztZQUNQLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLGFBQWE7WUFDYixPQUFPLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1lBQzlCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QixDQUFDO1FBQ0YsUUFBUSxFQUFFO1FBQ1YsUUFBUSxFQUFFO1FBQ1Ysa0JBQWtCLENBQUM7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUM7U0FDM0QsQ0FBQztRQUNGLGFBQWEsQ0FBQztZQUNaLFlBQVksRUFBRSxjQUFjO1lBQzVCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtZQUM5QyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2xCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3RDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7WUFDdEIsTUFBTSxFQUFFO2dCQUNOLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO2FBQzNEO1NBQ0YsQ0FBQztRQUNGLEtBQUssRUFBRTtRQUNQLElBQUksRUFBRTtLQUNQO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCBjb250ZW50Q29sbGVjdGlvbnMgZnJvbSBcIkBjb250ZW50LWNvbGxlY3Rpb25zL3ZpdGVcIlxuaW1wb3J0IHRhaWx3aW5kIGZyb20gXCJAdGFpbHdpbmRjc3Mvdml0ZVwiXG5pbXBvcnQgeyBkZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svZGV2dG9vbHMtdml0ZVwiXG5pbXBvcnQgeyB0YW5zdGFja1N0YXJ0IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1zdGFydC9wbHVnaW4vdml0ZVwiXG5pbXBvcnQge1xuICBwaHlzaWNhbCxcbiAgcm9vdFJvdXRlLFxuICByb3V0ZSxcbiAgdHlwZSBWaXJ0dWFsUm91dGVOb2RlLFxufSBmcm9tIFwiQHRhbnN0YWNrL3ZpcnR1YWwtZmlsZS1yb3V0ZXNcIlxuaW1wb3J0IHJlYWN0IGZyb20gXCJAdml0ZWpzL3BsdWdpbi1yZWFjdFwiXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgc3ZnciBmcm9tIFwidml0ZS1wbHVnaW4tc3ZnclwiXG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSBcIi4vYWN0aW9ucy9jb25maWcvbG9hZC50c1wiXG5pbXBvcnQgeyBXZWJzaXRlQ29uZmlnIH0gZnJvbSBcIi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgeyBPVkVSUklERV9TVUJESVJTIH0gZnJvbSBcIi4vc2V0dGluZ3MudHNcIlxuaW1wb3J0IHsgbGl2ZW1hcmsgfSBmcm9tIFwiLi9wbHVnaW5zL3ZpdGUtbGl2ZW1hcmsudHNcIlxuXG5jb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKClcbmNvbnN0IHNvdXJjZURpciA9IGltcG9ydC5tZXRhLmRpcm5hbWVcbmNvbnN0IHNvdXJjZVJlbGF0aXZlID0gcmVsYXRpdmUoY29uZmlnLnJvb3QsIHNvdXJjZURpcilcbmNvbnN0IG92ZXJyaWRlc1Jvb3QgPSBqb2luKGNvbmZpZy5yb290LCBcIi5saXZlbWFya1wiKVxuXG4vLyBTZWVkIGAubGl2ZW1hcmsvLmdpdGlnbm9yZWAgb24gZmlyc3QgcnVuIHNvIFZpdGUncyBidWlsZC9jYWNoZSBhcnRpZmFjdHNcbi8vIG5ldmVyIGdldCBjb21taXR0ZWQgYnkgYWNjaWRlbnQuXG5jb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihvdmVycmlkZXNSb290LCBcIi5naXRpZ25vcmVcIilcbmlmICghZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICBta2RpclN5bmMob3ZlcnJpZGVzUm9vdCwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgd3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIi9idWlsZFxcbi9jYWNoZVxcblwiKVxufVxuXG5jb25zdCByb3V0ZUNoaWxkcmVuOiBWaXJ0dWFsUm91dGVOb2RlW10gPSBbcm91dGUoXCIvJFwiLCBcIiQudHN4XCIpXVxuaWYgKGV4aXN0c1N5bmMoam9pbihvdmVycmlkZXNSb290LCBcInJvdXRlc1wiKSkpIHtcbiAgLy8gcGh5c2ljYWwoKSByZXNvbHZlcyBpdHMgYXJndW1lbnQgcmVsYXRpdmUgdG8gdGhpcyBmaWxlLiBIYXJkY29kaW5nIGFcbiAgLy8gcmVsYXRpdmUgbGl0ZXJhbCBsYW5kcyBhdCA8cGtnPi8ubGl2ZW1hcmsvIHdoZW4gbGl2ZW1hcmsgaXMgaW5zdGFsbGVkXG4gIC8vIHVuZGVyIG5vZGVfbW9kdWxlcy8uIENvbXB1dGUgaXQgZnJvbSB0aGUgY29uc3VtZXIncyBvdmVycmlkZXNSb290LlxuICByb3V0ZUNoaWxkcmVuLnB1c2goXG4gICAgcGh5c2ljYWwocmVsYXRpdmUoc291cmNlRGlyLCBqb2luKG92ZXJyaWRlc1Jvb3QsIFwicm91dGVzXCIpKSksXG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcm9vdDogY29uZmlnLnJvb3QsXG4gIHB1YmxpY0Rpcjogam9pbihjb25maWcucm9vdCwgXCIubGl2ZW1hcmtcIiwgXCJwdWJsaWNcIiksXG4gIGJ1aWxkOiB7IG91dERpcjogXCIubGl2ZW1hcmsvYnVpbGRcIiB9LFxuICBkZWZpbmU6IHtcbiAgICBcImltcG9ydC5tZXRhLmVudi5DT05GSUdcIjogSlNPTi5zdHJpbmdpZnkoV2Vic2l0ZUNvbmZpZy5wYXJzZShjb25maWcpKSxcbiAgfSxcbiAgcGx1Z2luczogW1xuICAgIGxpdmVtYXJrKHtcbiAgICAgIGRlZmF1bHRzUm9vdDogc291cmNlRGlyLFxuICAgICAgb3ZlcnJpZGVzUm9vdCxcbiAgICAgIHN1YmRpcnM6IFsuLi5PVkVSUklERV9TVUJESVJTXSxcbiAgICAgIGNvbmZpZ1BhdGg6IGNvbmZpZy5jb25maWdQYXRoLFxuICAgIH0pLFxuICAgIGRldnRvb2xzKCksXG4gICAgdGFpbHdpbmQoKSxcbiAgICBjb250ZW50Q29sbGVjdGlvbnMoe1xuICAgICAgY29uZmlnUGF0aDogam9pbihzb3VyY2VSZWxhdGl2ZSwgXCJjb250ZW50LWNvbGxlY3Rpb25zLnRzXCIpLFxuICAgIH0pLFxuICAgIHRhbnN0YWNrU3RhcnQoe1xuICAgICAgc3JjRGlyZWN0b3J5OiBzb3VyY2VSZWxhdGl2ZSxcbiAgICAgIHBhZ2VzOiBbeyBwYXRoOiBcIi9cIiB9XSxcbiAgICAgIHByZXJlbmRlcjogeyBlbmFibGVkOiB0cnVlLCBjcmF3bExpbmtzOiB0cnVlIH0sXG4gICAgICBzaXRlbWFwOiBjb25maWcuc2l0ZVxuICAgICAgICA/IHsgZW5hYmxlZDogdHJ1ZSwgaG9zdDogY29uZmlnLnNpdGUgfVxuICAgICAgICA6IHsgZW5hYmxlZDogZmFsc2UgfSxcbiAgICAgIHJvdXRlcjoge1xuICAgICAgICB2aXJ0dWFsUm91dGVDb25maWc6IHJvb3RSb3V0ZShcIl9fcm9vdC50c3hcIiwgcm91dGVDaGlsZHJlbiksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJlYWN0KCksXG4gICAgc3ZncigpLFxuICBdLFxufSlcbiJdfQ==