fromsrc 0.0.0 → 0.0.1

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 (683) hide show
  1. package/dist/access.d.ts +23 -0
  2. package/dist/access.js +54 -0
  3. package/dist/adapter.d.ts +31 -0
  4. package/dist/adapter.js +59 -0
  5. package/dist/adapterastro.d.ts +6 -0
  6. package/dist/adapterastro.js +6 -0
  7. package/dist/adapterbrowser.d.ts +6 -0
  8. package/dist/adapterbrowser.js +38 -0
  9. package/dist/adapternext.d.ts +6 -0
  10. package/dist/adapternext.js +49 -0
  11. package/dist/adapterreactrouter.d.ts +6 -0
  12. package/dist/adapterreactrouter.js +37 -0
  13. package/dist/adapterremix.d.ts +6 -0
  14. package/dist/adapterremix.js +41 -0
  15. package/dist/adaptertanstack.d.ts +6 -0
  16. package/dist/adaptertanstack.js +38 -0
  17. package/dist/adaptervite.d.ts +6 -0
  18. package/dist/adaptervite.js +6 -0
  19. package/dist/algolia.d.ts +16 -0
  20. package/dist/algolia.js +83 -0
  21. package/dist/analytics.d.ts +31 -0
  22. package/dist/analytics.js +61 -0
  23. package/dist/ansi.d.ts +5 -0
  24. package/dist/ansi.js +192 -0
  25. package/dist/api.d.ts +30 -0
  26. package/dist/api.js +75 -0
  27. package/dist/astro.d.ts +3 -0
  28. package/dist/astro.js +3 -0
  29. package/dist/audit.d.ts +19 -0
  30. package/dist/audit.js +78 -0
  31. package/dist/autotype.d.ts +17 -0
  32. package/dist/autotype.js +73 -0
  33. package/dist/batch.d.ts +22 -0
  34. package/dist/batch.js +68 -0
  35. package/dist/browser.d.ts +5 -0
  36. package/dist/browser.js +53 -0
  37. package/dist/changelog.d.ts +27 -0
  38. package/dist/changelog.js +87 -0
  39. package/dist/changelogutil.d.ts +20 -0
  40. package/dist/changelogutil.js +84 -0
  41. package/dist/cli.d.ts +24 -0
  42. package/dist/cli.js +76 -0
  43. package/dist/client.d.ts +212 -0
  44. package/dist/client.js +202 -0
  45. package/dist/codesample.d.ts +20 -0
  46. package/dist/codesample.js +115 -0
  47. package/dist/collapse.d.ts +5 -0
  48. package/dist/collapse.js +101 -0
  49. package/dist/collections.d.ts +32 -0
  50. package/dist/collections.js +82 -0
  51. package/dist/components/accordion.d.ts +22 -0
  52. package/dist/components/accordion.js +54 -0
  53. package/dist/components/alert.d.ts +18 -0
  54. package/dist/components/alert.js +30 -0
  55. package/dist/components/announce.d.ts +11 -0
  56. package/dist/components/announce.js +38 -0
  57. package/dist/components/autofill.d.ts +27 -0
  58. package/dist/components/autofill.js +152 -0
  59. package/dist/components/avatar.d.ts +42 -0
  60. package/dist/components/avatar.js +67 -0
  61. package/dist/components/avatarstack.d.ts +23 -0
  62. package/dist/components/avatarstack.js +54 -0
  63. package/dist/components/backtotop.d.ts +20 -0
  64. package/dist/components/backtotop.js +42 -0
  65. package/dist/components/badge.d.ts +17 -0
  66. package/dist/components/badge.js +25 -0
  67. package/dist/components/banner.d.ts +21 -0
  68. package/dist/components/banner.js +63 -0
  69. package/dist/components/breadcrumb.d.ts +25 -0
  70. package/dist/components/breadcrumb.js +35 -0
  71. package/dist/components/breadcrumbnav.d.ts +15 -0
  72. package/dist/components/breadcrumbnav.js +60 -0
  73. package/dist/components/button.d.ts +22 -0
  74. package/dist/components/button.js +47 -0
  75. package/dist/components/callout.d.ts +26 -0
  76. package/dist/components/callout.js +91 -0
  77. package/dist/components/cards.d.ts +34 -0
  78. package/dist/components/cards.js +24 -0
  79. package/dist/components/changelog.d.ts +34 -0
  80. package/dist/components/changelog.js +50 -0
  81. package/dist/components/checkbox.d.ts +26 -0
  82. package/dist/components/checkbox.js +80 -0
  83. package/dist/components/code.d.ts +27 -0
  84. package/dist/components/code.js +36 -0
  85. package/dist/components/codeblock.d.ts +12 -0
  86. package/dist/components/codeblock.js +102 -0
  87. package/dist/components/codecopy.d.ts +12 -0
  88. package/dist/components/codecopy.js +56 -0
  89. package/dist/components/codegroup.d.ts +22 -0
  90. package/dist/components/codegroup.js +134 -0
  91. package/dist/components/collapsible.d.ts +29 -0
  92. package/dist/components/collapsible.js +64 -0
  93. package/dist/components/command.d.ts +22 -0
  94. package/dist/components/command.js +138 -0
  95. package/dist/components/compare.d.ts +54 -0
  96. package/dist/components/compare.js +88 -0
  97. package/dist/components/content.d.ts +12 -0
  98. package/dist/components/content.js +232 -0
  99. package/dist/components/copyable.d.ts +25 -0
  100. package/dist/components/copyable.js +51 -0
  101. package/dist/components/copybutton.d.ts +11 -0
  102. package/dist/components/copybutton.js +50 -0
  103. package/dist/components/countdown.d.ts +18 -0
  104. package/dist/components/countdown.js +112 -0
  105. package/dist/components/create.d.ts +10 -0
  106. package/dist/components/create.js +149 -0
  107. package/dist/components/definition.d.ts +43 -0
  108. package/dist/components/definition.js +46 -0
  109. package/dist/components/diffview.d.ts +12 -0
  110. package/dist/components/diffview.js +129 -0
  111. package/dist/components/divider.d.ts +19 -0
  112. package/dist/components/divider.js +24 -0
  113. package/dist/components/docheader.d.ts +17 -0
  114. package/dist/components/docheader.js +24 -0
  115. package/dist/components/doclinkcard.d.ts +19 -0
  116. package/dist/components/doclinkcard.js +37 -0
  117. package/dist/components/docslayout.d.ts +14 -0
  118. package/dist/components/docslayout.js +24 -0
  119. package/dist/components/dropdown.d.ts +23 -0
  120. package/dist/components/dropdown.js +134 -0
  121. package/dist/components/dynamiccode.d.ts +12 -0
  122. package/dist/components/dynamiccode.js +40 -0
  123. package/dist/components/editlink.d.ts +15 -0
  124. package/dist/components/editlink.js +45 -0
  125. package/dist/components/embed.d.ts +45 -0
  126. package/dist/components/embed.js +85 -0
  127. package/dist/components/endpoint.d.ts +58 -0
  128. package/dist/components/endpoint.js +100 -0
  129. package/dist/components/errormessage.d.ts +11 -0
  130. package/dist/components/errormessage.js +10 -0
  131. package/dist/components/expandcode.d.ts +13 -0
  132. package/dist/components/expandcode.js +58 -0
  133. package/dist/components/feature.d.ts +31 -0
  134. package/dist/components/feature.js +58 -0
  135. package/dist/components/featuregrid.d.ts +17 -0
  136. package/dist/components/featuregrid.js +36 -0
  137. package/dist/components/feedback.d.ts +14 -0
  138. package/dist/components/feedback.js +62 -0
  139. package/dist/components/feedbackwidget.d.ts +14 -0
  140. package/dist/components/feedbackwidget.js +106 -0
  141. package/dist/components/files.d.ts +21 -0
  142. package/dist/components/files.js +133 -0
  143. package/dist/components/folder.d.ts +15 -0
  144. package/dist/components/folder.js +102 -0
  145. package/dist/components/footer.d.ts +16 -0
  146. package/dist/components/footer.js +28 -0
  147. package/dist/components/formlabel.d.ts +24 -0
  148. package/dist/components/formlabel.js +27 -0
  149. package/dist/components/github.d.ts +14 -0
  150. package/dist/components/github.js +99 -0
  151. package/dist/components/graph.d.ts +36 -0
  152. package/dist/components/graph.js +210 -0
  153. package/dist/components/heading.d.ts +25 -0
  154. package/dist/components/heading.js +82 -0
  155. package/dist/components/headingcopy.d.ts +3 -0
  156. package/dist/components/headingcopy.js +31 -0
  157. package/dist/components/hero.d.ts +16 -0
  158. package/dist/components/hero.js +28 -0
  159. package/dist/components/highlight.d.ts +41 -0
  160. package/dist/components/highlight.js +42 -0
  161. package/dist/components/hover.d.ts +23 -0
  162. package/dist/components/hover.js +79 -0
  163. package/dist/components/icons.d.ts +30 -0
  164. package/dist/components/icons.js +419 -0
  165. package/dist/components/inlinetoc.d.ts +19 -0
  166. package/dist/components/inlinetoc.js +28 -0
  167. package/dist/components/input.d.ts +25 -0
  168. package/dist/components/input.js +42 -0
  169. package/dist/components/install.d.ts +10 -0
  170. package/dist/components/install.js +149 -0
  171. package/dist/components/kbd.d.ts +22 -0
  172. package/dist/components/kbd.js +30 -0
  173. package/dist/components/langicon.d.ts +8 -0
  174. package/dist/components/langicon.js +48 -0
  175. package/dist/components/language.d.ts +17 -0
  176. package/dist/components/language.js +123 -0
  177. package/dist/components/lastupdated.d.ts +12 -0
  178. package/dist/components/lastupdated.js +44 -0
  179. package/dist/components/link.d.ts +14 -0
  180. package/dist/components/link.js +53 -0
  181. package/dist/components/linkcard.d.ts +33 -0
  182. package/dist/components/linkcard.js +50 -0
  183. package/dist/components/list.d.ts +50 -0
  184. package/dist/components/list.js +55 -0
  185. package/dist/components/math.d.ts +34 -0
  186. package/dist/components/math.js +63 -0
  187. package/dist/components/mermaid.d.ts +19 -0
  188. package/dist/components/mermaid.js +79 -0
  189. package/dist/components/mobilenav.d.ts +17 -0
  190. package/dist/components/mobilenav.js +263 -0
  191. package/dist/components/modal.d.ts +18 -0
  192. package/dist/components/modal.js +69 -0
  193. package/dist/components/navbar.d.ts +19 -0
  194. package/dist/components/navbar.js +45 -0
  195. package/dist/components/navlink.d.ts +14 -0
  196. package/dist/components/navlink.js +77 -0
  197. package/dist/components/note.d.ts +28 -0
  198. package/dist/components/note.js +60 -0
  199. package/dist/components/openapi.d.ts +14 -0
  200. package/dist/components/openapi.js +145 -0
  201. package/dist/components/openapischema.d.ts +13 -0
  202. package/dist/components/openapischema.js +51 -0
  203. package/dist/components/openapitags.d.ts +13 -0
  204. package/dist/components/openapitags.js +20 -0
  205. package/dist/components/pagetransition.d.ts +13 -0
  206. package/dist/components/pagetransition.js +37 -0
  207. package/dist/components/pagination.d.ts +26 -0
  208. package/dist/components/pagination.js +68 -0
  209. package/dist/components/panel.d.ts +25 -0
  210. package/dist/components/panel.js +75 -0
  211. package/dist/components/playground.d.ts +14 -0
  212. package/dist/components/playground.js +89 -0
  213. package/dist/components/popover.d.ts +18 -0
  214. package/dist/components/popover.js +109 -0
  215. package/dist/components/prelink.d.ts +10 -0
  216. package/dist/components/prelink.js +46 -0
  217. package/dist/components/prevnext.d.ts +17 -0
  218. package/dist/components/prevnext.js +43 -0
  219. package/dist/components/progress.d.ts +30 -0
  220. package/dist/components/progress.js +74 -0
  221. package/dist/components/property.d.ts +24 -0
  222. package/dist/components/property.js +44 -0
  223. package/dist/components/quote.d.ts +44 -0
  224. package/dist/components/quote.js +41 -0
  225. package/dist/components/radio.d.ts +48 -0
  226. package/dist/components/radio.js +140 -0
  227. package/dist/components/rating.d.ts +22 -0
  228. package/dist/components/rating.js +100 -0
  229. package/dist/components/readtime.d.ts +17 -0
  230. package/dist/components/readtime.js +26 -0
  231. package/dist/components/recent.d.ts +12 -0
  232. package/dist/components/recent.js +23 -0
  233. package/dist/components/responsive.d.ts +35 -0
  234. package/dist/components/responsive.js +73 -0
  235. package/dist/components/results.d.ts +20 -0
  236. package/dist/components/results.js +72 -0
  237. package/dist/components/screenshot.d.ts +33 -0
  238. package/dist/components/screenshot.js +52 -0
  239. package/dist/components/scrollprogress.d.ts +12 -0
  240. package/dist/components/scrollprogress.js +56 -0
  241. package/dist/components/scrollspy.d.ts +18 -0
  242. package/dist/components/scrollspy.js +51 -0
  243. package/dist/components/search.d.ts +19 -0
  244. package/dist/components/search.js +228 -0
  245. package/dist/components/searchbutton.d.ts +10 -0
  246. package/dist/components/searchbutton.js +51 -0
  247. package/dist/components/searchdialog.d.ts +19 -0
  248. package/dist/components/searchdialog.js +108 -0
  249. package/dist/components/searcher.d.ts +12 -0
  250. package/dist/components/searcher.js +121 -0
  251. package/dist/components/select.d.ts +39 -0
  252. package/dist/components/select.js +162 -0
  253. package/dist/components/shortcuts.d.ts +17 -0
  254. package/dist/components/shortcuts.js +62 -0
  255. package/dist/components/sidebar.d.ts +35 -0
  256. package/dist/components/sidebar.js +215 -0
  257. package/dist/components/sidebarfilter.d.ts +13 -0
  258. package/dist/components/sidebarfilter.js +50 -0
  259. package/dist/components/skeleton.d.ts +40 -0
  260. package/dist/components/skeleton.js +59 -0
  261. package/dist/components/skiplink.d.ts +12 -0
  262. package/dist/components/skiplink.js +21 -0
  263. package/dist/components/spinner.d.ts +34 -0
  264. package/dist/components/spinner.js +56 -0
  265. package/dist/components/status.d.ts +27 -0
  266. package/dist/components/status.js +63 -0
  267. package/dist/components/steps.d.ts +30 -0
  268. package/dist/components/steps.js +15 -0
  269. package/dist/components/switch.d.ts +26 -0
  270. package/dist/components/switch.js +79 -0
  271. package/dist/components/table.d.ts +36 -0
  272. package/dist/components/table.js +138 -0
  273. package/dist/components/tabnav.d.ts +30 -0
  274. package/dist/components/tabnav.js +199 -0
  275. package/dist/components/tabs.d.ts +15 -0
  276. package/dist/components/tabs.js +96 -0
  277. package/dist/components/tag.d.ts +32 -0
  278. package/dist/components/tag.js +38 -0
  279. package/dist/components/terminal.d.ts +48 -0
  280. package/dist/components/terminal.js +62 -0
  281. package/dist/components/textarea.d.ts +30 -0
  282. package/dist/components/textarea.js +100 -0
  283. package/dist/components/theme.d.ts +11 -0
  284. package/dist/components/theme.js +66 -0
  285. package/dist/components/themeprovider.d.ts +19 -0
  286. package/dist/components/themeprovider.js +58 -0
  287. package/dist/components/toast.d.ts +31 -0
  288. package/dist/components/toast.js +107 -0
  289. package/dist/components/toc/default.d.ts +21 -0
  290. package/dist/components/toc/default.js +100 -0
  291. package/dist/components/toc/hook.d.ts +13 -0
  292. package/dist/components/toc/hook.js +125 -0
  293. package/dist/components/toc/index.d.ts +15 -0
  294. package/dist/components/toc/index.js +44 -0
  295. package/dist/components/toc/inline.d.ts +20 -0
  296. package/dist/components/toc/inline.js +75 -0
  297. package/dist/components/toc/minimal.d.ts +22 -0
  298. package/dist/components/toc/minimal.js +136 -0
  299. package/dist/components/toc/zigzag.d.ts +18 -0
  300. package/dist/components/toc/zigzag.js +57 -0
  301. package/dist/components/tocprogress.d.ts +17 -0
  302. package/dist/components/tocprogress.js +67 -0
  303. package/dist/components/tooltip.d.ts +19 -0
  304. package/dist/components/tooltip.js +76 -0
  305. package/dist/components/trigger.d.ts +8 -0
  306. package/dist/components/trigger.js +13 -0
  307. package/dist/components/twoslash.d.ts +9 -0
  308. package/dist/components/twoslash.js +52 -0
  309. package/dist/components/typetable.d.ts +21 -0
  310. package/dist/components/typetable.js +68 -0
  311. package/dist/components/typewriter.d.ts +20 -0
  312. package/dist/components/typewriter.js +50 -0
  313. package/dist/components/version.d.ts +29 -0
  314. package/dist/components/version.js +181 -0
  315. package/dist/components/video.d.ts +33 -0
  316. package/dist/components/video.js +147 -0
  317. package/dist/components/zoom.d.ts +9 -0
  318. package/dist/components/zoom.js +110 -0
  319. package/dist/config.d.ts +54 -0
  320. package/dist/config.js +102 -0
  321. package/dist/content.d.ts +83 -0
  322. package/dist/content.js +464 -0
  323. package/dist/contentcache.d.ts +28 -0
  324. package/dist/contentcache.js +76 -0
  325. package/dist/contentdiff.d.ts +19 -0
  326. package/dist/contentdiff.js +48 -0
  327. package/dist/contributors.d.ts +22 -0
  328. package/dist/contributors.js +64 -0
  329. package/dist/diff.d.ts +25 -0
  330. package/dist/diff.js +117 -0
  331. package/dist/draft.d.ts +33 -0
  332. package/dist/draft.js +62 -0
  333. package/dist/env.d.ts +12 -0
  334. package/dist/env.js +50 -0
  335. package/dist/export.d.ts +9 -0
  336. package/dist/export.js +32 -0
  337. package/dist/frontmatter.d.ts +19 -0
  338. package/dist/frontmatter.js +65 -0
  339. package/dist/github.d.ts +15 -0
  340. package/dist/github.js +254 -0
  341. package/dist/gitsource.d.ts +23 -0
  342. package/dist/gitsource.js +50 -0
  343. package/dist/hash.d.ts +21 -0
  344. package/dist/hash.js +65 -0
  345. package/dist/highlight.d.ts +18 -0
  346. package/dist/highlight.js +90 -0
  347. package/dist/hooks/anchor.d.ts +7 -0
  348. package/dist/hooks/anchor.js +44 -0
  349. package/dist/hooks/arrownav.d.ts +11 -0
  350. package/dist/hooks/arrownav.js +49 -0
  351. package/dist/hooks/async.d.ts +9 -0
  352. package/dist/hooks/async.js +28 -0
  353. package/dist/hooks/battery.d.ts +8 -0
  354. package/dist/hooks/battery.js +34 -0
  355. package/dist/hooks/breakpoint.d.ts +6 -0
  356. package/dist/hooks/breakpoint.js +34 -0
  357. package/dist/hooks/clickoutside.d.ts +11 -0
  358. package/dist/hooks/clickoutside.js +19 -0
  359. package/dist/hooks/clipboard-paste.d.ts +8 -0
  360. package/dist/hooks/clipboard-paste.js +18 -0
  361. package/dist/hooks/clipboard.d.ts +9 -0
  362. package/dist/hooks/clipboard.js +24 -0
  363. package/dist/hooks/colorscheme.d.ts +4 -0
  364. package/dist/hooks/colorscheme.js +18 -0
  365. package/dist/hooks/copy.d.ts +12 -0
  366. package/dist/hooks/copy.js +28 -0
  367. package/dist/hooks/countdown.d.ts +10 -0
  368. package/dist/hooks/countdown.js +41 -0
  369. package/dist/hooks/counter.d.ts +10 -0
  370. package/dist/hooks/counter.js +12 -0
  371. package/dist/hooks/debounce.d.ts +9 -0
  372. package/dist/hooks/debounce.js +16 -0
  373. package/dist/hooks/documenttitle.d.ts +3 -0
  374. package/dist/hooks/documenttitle.js +20 -0
  375. package/dist/hooks/documentvisibility.d.ts +4 -0
  376. package/dist/hooks/documentvisibility.js +19 -0
  377. package/dist/hooks/escapekey.d.ts +8 -0
  378. package/dist/hooks/escapekey.js +18 -0
  379. package/dist/hooks/eventlistener.d.ts +13 -0
  380. package/dist/hooks/eventlistener.js +15 -0
  381. package/dist/hooks/eventsource.d.ts +10 -0
  382. package/dist/hooks/eventsource.js +31 -0
  383. package/dist/hooks/eyedropper.d.ts +8 -0
  384. package/dist/hooks/eyedropper.js +23 -0
  385. package/dist/hooks/favicon.d.ts +3 -0
  386. package/dist/hooks/favicon.js +14 -0
  387. package/dist/hooks/fetch.d.ts +8 -0
  388. package/dist/hooks/fetch.js +29 -0
  389. package/dist/hooks/focustrap.d.ts +12 -0
  390. package/dist/hooks/focustrap.js +62 -0
  391. package/dist/hooks/focuswithin.d.ts +6 -0
  392. package/dist/hooks/focuswithin.js +24 -0
  393. package/dist/hooks/form.d.ts +20 -0
  394. package/dist/hooks/form.js +42 -0
  395. package/dist/hooks/fullscreen.d.ts +10 -0
  396. package/dist/hooks/fullscreen.js +34 -0
  397. package/dist/hooks/geolocation.d.ts +10 -0
  398. package/dist/hooks/geolocation.js +38 -0
  399. package/dist/hooks/hash.d.ts +3 -0
  400. package/dist/hooks/hash.js +21 -0
  401. package/dist/hooks/hotkeys.d.ts +11 -0
  402. package/dist/hooks/hotkeys.js +35 -0
  403. package/dist/hooks/hover.d.ts +3 -0
  404. package/dist/hooks/hover.js +22 -0
  405. package/dist/hooks/idle.d.ts +3 -0
  406. package/dist/hooks/idle.js +28 -0
  407. package/dist/hooks/infinitescroll.d.ts +9 -0
  408. package/dist/hooks/infinitescroll.js +31 -0
  409. package/dist/hooks/interval.d.ts +3 -0
  410. package/dist/hooks/interval.js +16 -0
  411. package/dist/hooks/inview.d.ts +10 -0
  412. package/dist/hooks/inview.js +28 -0
  413. package/dist/hooks/keyboard.d.ts +14 -0
  414. package/dist/hooks/keyboard.js +82 -0
  415. package/dist/hooks/keypress.d.ts +3 -0
  416. package/dist/hooks/keypress.js +23 -0
  417. package/dist/hooks/list.d.ts +14 -0
  418. package/dist/hooks/list.js +28 -0
  419. package/dist/hooks/longpress.d.ts +10 -0
  420. package/dist/hooks/longpress.js +24 -0
  421. package/dist/hooks/map.d.ts +12 -0
  422. package/dist/hooks/map.js +23 -0
  423. package/dist/hooks/measure.d.ts +16 -0
  424. package/dist/hooks/measure.js +34 -0
  425. package/dist/hooks/media.d.ts +33 -0
  426. package/dist/hooks/media.js +35 -0
  427. package/dist/hooks/mediarecorder.d.ts +11 -0
  428. package/dist/hooks/mediarecorder.js +37 -0
  429. package/dist/hooks/mounted.d.ts +3 -0
  430. package/dist/hooks/mounted.js +12 -0
  431. package/dist/hooks/mouseposition.d.ts +7 -0
  432. package/dist/hooks/mouseposition.js +16 -0
  433. package/dist/hooks/networkstate.d.ts +10 -0
  434. package/dist/hooks/networkstate.js +34 -0
  435. package/dist/hooks/online.d.ts +3 -0
  436. package/dist/hooks/online.js +20 -0
  437. package/dist/hooks/orientation.d.ts +8 -0
  438. package/dist/hooks/orientation.js +20 -0
  439. package/dist/hooks/os.d.ts +4 -0
  440. package/dist/hooks/os.js +15 -0
  441. package/dist/hooks/pageleave.d.ts +3 -0
  442. package/dist/hooks/pageleave.js +18 -0
  443. package/dist/hooks/pagination.d.ts +26 -0
  444. package/dist/hooks/pagination.js +49 -0
  445. package/dist/hooks/permission.d.ts +5 -0
  446. package/dist/hooks/permission.js +29 -0
  447. package/dist/hooks/preferredlanguage.d.ts +3 -0
  448. package/dist/hooks/preferredlanguage.js +17 -0
  449. package/dist/hooks/previous.d.ts +3 -0
  450. package/dist/hooks/previous.js +12 -0
  451. package/dist/hooks/queue.d.ts +11 -0
  452. package/dist/hooks/queue.js +23 -0
  453. package/dist/hooks/readprogress.d.ts +6 -0
  454. package/dist/hooks/readprogress.js +32 -0
  455. package/dist/hooks/resizeobserver.d.ts +10 -0
  456. package/dist/hooks/resizeobserver.js +25 -0
  457. package/dist/hooks/script.d.ts +4 -0
  458. package/dist/hooks/script.js +30 -0
  459. package/dist/hooks/scrolldirection.d.ts +4 -0
  460. package/dist/hooks/scrolldirection.js +33 -0
  461. package/dist/hooks/scrolllock.d.ts +3 -0
  462. package/dist/hooks/scrolllock.js +38 -0
  463. package/dist/hooks/scrollspy.d.ts +7 -0
  464. package/dist/hooks/scrollspy.js +28 -0
  465. package/dist/hooks/scrolltop.d.ts +7 -0
  466. package/dist/hooks/scrolltop.js +19 -0
  467. package/dist/hooks/selection.d.ts +12 -0
  468. package/dist/hooks/selection.js +32 -0
  469. package/dist/hooks/share.d.ts +13 -0
  470. package/dist/hooks/share.js +37 -0
  471. package/dist/hooks/speechrecognition.d.ts +10 -0
  472. package/dist/hooks/speechrecognition.js +34 -0
  473. package/dist/hooks/stepper.d.ts +13 -0
  474. package/dist/hooks/stepper.js +31 -0
  475. package/dist/hooks/storage.d.ts +5 -0
  476. package/dist/hooks/storage.js +57 -0
  477. package/dist/hooks/stylesheet.d.ts +4 -0
  478. package/dist/hooks/stylesheet.js +30 -0
  479. package/dist/hooks/textselection.d.ts +7 -0
  480. package/dist/hooks/textselection.js +24 -0
  481. package/dist/hooks/throttle.d.ts +3 -0
  482. package/dist/hooks/throttle.js +28 -0
  483. package/dist/hooks/toggle.d.ts +13 -0
  484. package/dist/hooks/toggle.js +10 -0
  485. package/dist/hooks/undoredo.d.ts +12 -0
  486. package/dist/hooks/undoredo.js +50 -0
  487. package/dist/hooks/vibrate.d.ts +7 -0
  488. package/dist/hooks/vibrate.js +15 -0
  489. package/dist/hooks/viewtransition.d.ts +9 -0
  490. package/dist/hooks/viewtransition.js +38 -0
  491. package/dist/hooks/wakelock.d.ts +9 -0
  492. package/dist/hooks/wakelock.js +32 -0
  493. package/dist/hooks/websocket.d.ts +10 -0
  494. package/dist/hooks/websocket.js +30 -0
  495. package/dist/hooks/windowsize.d.ts +7 -0
  496. package/dist/hooks/windowsize.js +17 -0
  497. package/dist/i18n.d.ts +30 -0
  498. package/dist/i18n.js +73 -0
  499. package/dist/index.d.ts +115 -0
  500. package/dist/index.js +107 -0
  501. package/dist/lastmodified.d.ts +4 -0
  502. package/dist/lastmodified.js +24 -0
  503. package/dist/linkcheck.d.ts +26 -0
  504. package/dist/linkcheck.js +113 -0
  505. package/dist/llms.d.ts +14 -0
  506. package/dist/llms.js +39 -0
  507. package/dist/manifest.d.ts +24 -0
  508. package/dist/manifest.js +31 -0
  509. package/dist/mcp.d.ts +56 -0
  510. package/dist/mcp.js +74 -0
  511. package/dist/mdtoc.d.ts +16 -0
  512. package/dist/mdtoc.js +59 -0
  513. package/dist/mdxscope.d.ts +17 -0
  514. package/dist/mdxscope.js +58 -0
  515. package/dist/meta.d.ts +19 -0
  516. package/dist/meta.js +71 -0
  517. package/dist/migrate.d.ts +17 -0
  518. package/dist/migrate.js +108 -0
  519. package/dist/navgen.d.ts +31 -0
  520. package/dist/navgen.js +147 -0
  521. package/dist/navtree.d.ts +28 -0
  522. package/dist/navtree.js +93 -0
  523. package/dist/next.d.ts +3 -0
  524. package/dist/next.js +3 -0
  525. package/dist/oembed.d.ts +20 -0
  526. package/dist/oembed.js +62 -0
  527. package/dist/ogimage.d.ts +45 -0
  528. package/dist/ogimage.js +62 -0
  529. package/dist/openapi.d.ts +6 -0
  530. package/dist/openapi.js +141 -0
  531. package/dist/openapiguard.d.ts +22 -0
  532. package/dist/openapiguard.js +87 -0
  533. package/dist/openapiutil.d.ts +72 -0
  534. package/dist/openapiutil.js +61 -0
  535. package/dist/orama.d.ts +16 -0
  536. package/dist/orama.js +100 -0
  537. package/dist/pipeline.d.ts +19 -0
  538. package/dist/pipeline.js +40 -0
  539. package/dist/preload.d.ts +15 -0
  540. package/dist/preload.js +19 -0
  541. package/dist/ranking.d.ts +28 -0
  542. package/dist/ranking.js +95 -0
  543. package/dist/reactrouter.d.ts +3 -0
  544. package/dist/reactrouter.js +3 -0
  545. package/dist/readtime.d.ts +3 -0
  546. package/dist/readtime.js +8 -0
  547. package/dist/redirects.d.ts +27 -0
  548. package/dist/redirects.js +74 -0
  549. package/dist/rehype.d.ts +5 -0
  550. package/dist/rehype.js +30 -0
  551. package/dist/rehypeautolink.d.ts +11 -0
  552. package/dist/rehypeautolink.js +43 -0
  553. package/dist/rehypecode.d.ts +6 -0
  554. package/dist/rehypecode.js +68 -0
  555. package/dist/rehypecopy.d.ts +6 -0
  556. package/dist/rehypecopy.js +29 -0
  557. package/dist/rehypeinline.d.ts +6 -0
  558. package/dist/rehypeinline.js +32 -0
  559. package/dist/rehypelinks.d.ts +10 -0
  560. package/dist/rehypelinks.js +49 -0
  561. package/dist/rehyperaw.d.ts +6 -0
  562. package/dist/rehyperaw.js +27 -0
  563. package/dist/rehypeslug.d.ts +7 -0
  564. package/dist/rehypeslug.js +39 -0
  565. package/dist/rehypetablewrap.d.ts +9 -0
  566. package/dist/rehypetablewrap.js +24 -0
  567. package/dist/rehypetoc.d.ts +16 -0
  568. package/dist/rehypetoc.js +61 -0
  569. package/dist/remark.d.ts +6 -0
  570. package/dist/remark.js +48 -0
  571. package/dist/remarkadmonition.d.ts +6 -0
  572. package/dist/remarkadmonition.js +78 -0
  573. package/dist/remarkannotation.d.ts +10 -0
  574. package/dist/remarkannotation.js +65 -0
  575. package/dist/remarkbadge.d.ts +6 -0
  576. package/dist/remarkbadge.js +40 -0
  577. package/dist/remarkblockmath.d.ts +6 -0
  578. package/dist/remarkblockmath.js +57 -0
  579. package/dist/remarkcallout.d.ts +6 -0
  580. package/dist/remarkcallout.js +65 -0
  581. package/dist/remarkcaption.d.ts +6 -0
  582. package/dist/remarkcaption.js +48 -0
  583. package/dist/remarkcodetitle.d.ts +6 -0
  584. package/dist/remarkcodetitle.js +39 -0
  585. package/dist/remarkcolumns.d.ts +6 -0
  586. package/dist/remarkcolumns.js +67 -0
  587. package/dist/remarkdetails.d.ts +6 -0
  588. package/dist/remarkdetails.js +61 -0
  589. package/dist/remarkdirective.d.ts +7 -0
  590. package/dist/remarkdirective.js +98 -0
  591. package/dist/remarkembed.d.ts +6 -0
  592. package/dist/remarkembed.js +72 -0
  593. package/dist/remarkfiletree.d.ts +6 -0
  594. package/dist/remarkfiletree.js +67 -0
  595. package/dist/remarkfootnote.d.ts +6 -0
  596. package/dist/remarkfootnote.js +63 -0
  597. package/dist/remarkgfm.d.ts +6 -0
  598. package/dist/remarkgfm.js +60 -0
  599. package/dist/remarkheadingid.d.ts +6 -0
  600. package/dist/remarkheadingid.js +40 -0
  601. package/dist/remarkimage.d.ts +11 -0
  602. package/dist/remarkimage.js +91 -0
  603. package/dist/remarkinclude.d.ts +10 -0
  604. package/dist/remarkinclude.js +49 -0
  605. package/dist/remarkinstall.d.ts +6 -0
  606. package/dist/remarkinstall.js +52 -0
  607. package/dist/remarklinkcard.d.ts +6 -0
  608. package/dist/remarklinkcard.js +38 -0
  609. package/dist/remarkmath.d.ts +6 -0
  610. package/dist/remarkmath.js +69 -0
  611. package/dist/remarkmermaid.d.ts +6 -0
  612. package/dist/remarkmermaid.js +21 -0
  613. package/dist/remarkmeta.d.ts +15 -0
  614. package/dist/remarkmeta.js +63 -0
  615. package/dist/remarkreadingtime.d.ts +11 -0
  616. package/dist/remarkreadingtime.js +44 -0
  617. package/dist/remarksteps.d.ts +6 -0
  618. package/dist/remarksteps.js +56 -0
  619. package/dist/remarkstructure.d.ts +18 -0
  620. package/dist/remarkstructure.js +53 -0
  621. package/dist/remarktabs.d.ts +6 -0
  622. package/dist/remarktabs.js +42 -0
  623. package/dist/remarktoc.d.ts +6 -0
  624. package/dist/remarktoc.js +47 -0
  625. package/dist/remarkts2js.d.ts +6 -0
  626. package/dist/remarkts2js.js +88 -0
  627. package/dist/remarktwoslash.d.ts +20 -0
  628. package/dist/remarktwoslash.js +86 -0
  629. package/dist/remarkvideo.d.ts +16 -0
  630. package/dist/remarkvideo.js +59 -0
  631. package/dist/remix.d.ts +3 -0
  632. package/dist/remix.js +3 -0
  633. package/dist/schema.d.ts +54 -0
  634. package/dist/schema.js +17 -0
  635. package/dist/search.d.ts +24 -0
  636. package/dist/search.js +155 -0
  637. package/dist/searchindex.d.ts +28 -0
  638. package/dist/searchindex.js +184 -0
  639. package/dist/searchpolicy.d.ts +5 -0
  640. package/dist/searchpolicy.js +9 -0
  641. package/dist/searchscore.d.ts +30 -0
  642. package/dist/searchscore.js +54 -0
  643. package/dist/searchtypo.d.ts +3 -0
  644. package/dist/searchtypo.js +47 -0
  645. package/dist/seo.d.ts +26 -0
  646. package/dist/seo.js +69 -0
  647. package/dist/shortcodes.d.ts +13 -0
  648. package/dist/shortcodes.js +61 -0
  649. package/dist/sitemap.d.ts +25 -0
  650. package/dist/sitemap.js +69 -0
  651. package/dist/snippets.d.ts +18 -0
  652. package/dist/snippets.js +89 -0
  653. package/dist/source.d.ts +23 -0
  654. package/dist/source.js +188 -0
  655. package/dist/stats.d.ts +25 -0
  656. package/dist/stats.js +81 -0
  657. package/dist/tanstack.d.ts +3 -0
  658. package/dist/tanstack.js +3 -0
  659. package/dist/testing.d.ts +35 -0
  660. package/dist/testing.js +134 -0
  661. package/dist/themeutil.d.ts +31 -0
  662. package/dist/themeutil.js +92 -0
  663. package/dist/typegen.d.ts +10 -0
  664. package/dist/typegen.js +74 -0
  665. package/dist/types.d.ts +267 -0
  666. package/dist/types.js +1 -0
  667. package/dist/validate.d.ts +13 -0
  668. package/dist/validate.js +78 -0
  669. package/dist/validator.d.ts +35 -0
  670. package/dist/validator.js +53 -0
  671. package/dist/versioning.d.ts +32 -0
  672. package/dist/versioning.js +62 -0
  673. package/dist/vite.d.ts +3 -0
  674. package/dist/vite.js +3 -0
  675. package/dist/watcher.d.ts +19 -0
  676. package/dist/watcher.js +82 -0
  677. package/dist/webhook.d.ts +25 -0
  678. package/dist/webhook.js +67 -0
  679. package/dist/workspace.d.ts +26 -0
  680. package/dist/workspace.js +81 -0
  681. package/package.json +138 -11
  682. package/styles/reset.css +3 -0
  683. package/index.js +0 -3
@@ -0,0 +1,65 @@
1
+ import { readFile, readdir } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import matter from 'gray-matter';
4
+
5
+ function parseFrontmatter(source, schema) {
6
+ try {
7
+ const { data, content } = matter(source);
8
+ const result = schema.safeParse(data);
9
+ if (result.success) {
10
+ return {
11
+ data: result.data,
12
+ content,
13
+ valid: true
14
+ };
15
+ }
16
+ const errors = result.error.errors.map((err) => {
17
+ const path = err.path.join(".");
18
+ return path ? `${path}: ${err.message}` : err.message;
19
+ });
20
+ return {
21
+ valid: false,
22
+ errors,
23
+ content
24
+ };
25
+ } catch (error) {
26
+ return {
27
+ valid: false,
28
+ errors: [error instanceof Error ? error.message : "Failed to parse frontmatter"],
29
+ content: source
30
+ };
31
+ }
32
+ }
33
+ async function getAllMdxFiles(dir) {
34
+ const files = [];
35
+ async function scan(currentDir) {
36
+ const entries = await readdir(currentDir, { withFileTypes: true });
37
+ for (const entry of entries) {
38
+ const fullPath = join(currentDir, entry.name);
39
+ if (entry.isDirectory()) {
40
+ await scan(fullPath);
41
+ } else if (entry.isFile() && entry.name.endsWith(".mdx")) {
42
+ files.push(fullPath);
43
+ }
44
+ }
45
+ }
46
+ await scan(dir);
47
+ return files;
48
+ }
49
+ async function validateAllFrontmatter(docsDir, schema) {
50
+ const files = await getAllMdxFiles(docsDir);
51
+ const results = [];
52
+ for (const file of files) {
53
+ const source = await readFile(file, "utf-8");
54
+ const result = parseFrontmatter(source, schema);
55
+ if (!result.valid) {
56
+ results.push({
57
+ path: file,
58
+ errors: result.errors
59
+ });
60
+ }
61
+ }
62
+ return results;
63
+ }
64
+
65
+ export { parseFrontmatter, validateAllFrontmatter };
@@ -0,0 +1,15 @@
1
+ import { ContentSource } from './source.js';
2
+ import './content.js';
3
+ import 'zod';
4
+ import './schema.js';
5
+
6
+ interface GithubSourceConfig {
7
+ owner: string;
8
+ repo: string;
9
+ branch?: string;
10
+ path?: string;
11
+ token?: string;
12
+ }
13
+ declare function createGithubSource(config: GithubSourceConfig): ContentSource;
14
+
15
+ export { type GithubSourceConfig, createGithubSource };
package/dist/github.js ADDED
@@ -0,0 +1,254 @@
1
+ import matter from 'gray-matter';
2
+ import { extractHeadings } from './content';
3
+
4
+ const TTL = 5 * 60 * 1e3;
5
+ const SEARCH_CONCURRENCY = 12;
6
+ const RATE_RETRIES = 3;
7
+ function createCache() {
8
+ const store = /* @__PURE__ */ new Map();
9
+ return {
10
+ get(key) {
11
+ const entry = store.get(key);
12
+ if (!entry) return null;
13
+ if (Date.now() - entry.timestamp > TTL) {
14
+ store.delete(key);
15
+ return null;
16
+ }
17
+ return entry.data;
18
+ },
19
+ set(key, data) {
20
+ store.set(key, { data, timestamp: Date.now() });
21
+ }
22
+ };
23
+ }
24
+ async function maplimit(items, limit, run) {
25
+ if (items.length === 0) return [];
26
+ const workers = Math.max(1, Math.min(limit, items.length));
27
+ const output = new Array(items.length);
28
+ let cursor = 0;
29
+ await Promise.all(
30
+ Array.from({ length: workers }, async () => {
31
+ while (cursor < items.length) {
32
+ const index = cursor++;
33
+ const item = items[index];
34
+ if (item === void 0) continue;
35
+ output[index] = await run(item, index);
36
+ }
37
+ })
38
+ );
39
+ return output;
40
+ }
41
+ function waitms(res, attempt) {
42
+ const retry = Number(res.headers.get("retry-after") ?? "");
43
+ if (Number.isFinite(retry) && retry > 0) {
44
+ return retry * 1e3;
45
+ }
46
+ const reset = Number(res.headers.get("x-ratelimit-reset") ?? "");
47
+ if (Number.isFinite(reset) && reset > 0) {
48
+ return Math.max(0, reset * 1e3 - Date.now());
49
+ }
50
+ return Math.min(4e3, 500 * 2 ** attempt);
51
+ }
52
+ function sleep(ms) {
53
+ return new Promise((resolve) => setTimeout(resolve, ms));
54
+ }
55
+ async function request(url, headers) {
56
+ for (let attempt = 0; attempt < RATE_RETRIES; attempt++) {
57
+ const res = await fetch(url, { headers });
58
+ const limited = res.status === 429 || res.status === 403 && res.headers.get("x-ratelimit-remaining") === "0";
59
+ if (!limited || attempt === RATE_RETRIES - 1) {
60
+ return res;
61
+ }
62
+ await sleep(waitms(res, attempt));
63
+ }
64
+ return new Response(null, { status: 429 });
65
+ }
66
+ function createGithubSource(config) {
67
+ const branch = config.branch ?? "main";
68
+ const docsPath = config.path ?? "docs";
69
+ const headers = {
70
+ Accept: "application/vnd.github+json",
71
+ "X-GitHub-Api-Version": "2022-11-28"
72
+ };
73
+ if (config.token) {
74
+ headers.Authorization = `Bearer ${config.token}`;
75
+ }
76
+ const listCache = createCache();
77
+ const fileCache = createCache();
78
+ const searchCache = createCache();
79
+ const treeCache = createCache();
80
+ const pathCache = createCache();
81
+ const rawCache = createCache();
82
+ function rawUrl(filepath) {
83
+ return `https://raw.githubusercontent.com/${config.owner}/${config.repo}/${branch}/${filepath}`;
84
+ }
85
+ function treeUrl(ref, recursive) {
86
+ const suffix = recursive ? "?recursive=1" : "";
87
+ return `https://api.github.com/repos/${config.owner}/${config.repo}/git/trees/${ref}${suffix}`;
88
+ }
89
+ function joinPath(base, path) {
90
+ if (!base) return path;
91
+ return `${base}/${path}`;
92
+ }
93
+ async function tree(ref, recursive) {
94
+ const url = treeUrl(ref, recursive);
95
+ const cached = treeCache.get(url);
96
+ const requestHeaders = { ...headers };
97
+ if (cached?.etag) {
98
+ requestHeaders["If-None-Match"] = cached.etag;
99
+ }
100
+ const res = await request(url, requestHeaders);
101
+ if (res.status === 304 && cached) {
102
+ return { entries: cached.entries, truncated: cached.truncated };
103
+ }
104
+ if (!res.ok) {
105
+ console.error(`github tree request failed (${res.status}) for ${url}`);
106
+ return cached ? { entries: cached.entries, truncated: cached.truncated } : { entries: [], truncated: false };
107
+ }
108
+ const json = await res.json();
109
+ const entries = (json.tree ?? []).filter(
110
+ (item) => typeof item.path === "string" && (item.type === "blob" || item.type === "tree") && typeof item.sha === "string"
111
+ ).map((item) => ({
112
+ path: item.path,
113
+ type: item.type,
114
+ sha: item.sha
115
+ }));
116
+ const result = {
117
+ entries,
118
+ truncated: json.truncated === true
119
+ };
120
+ treeCache.set(url, {
121
+ entries: result.entries,
122
+ truncated: result.truncated,
123
+ etag: res.headers.get("etag") ?? void 0
124
+ });
125
+ return result;
126
+ }
127
+ async function allEntries() {
128
+ const recursive = await tree(branch, true);
129
+ if (!recursive.truncated) return recursive.entries;
130
+ const root = await tree(branch, false);
131
+ const files = root.entries.filter((item) => item.type === "blob");
132
+ const queue = root.entries.filter((item) => item.type === "tree");
133
+ const width = 6;
134
+ while (queue.length > 0) {
135
+ const batch = queue.splice(0, width);
136
+ const nodes = await Promise.all(
137
+ batch.map(async (current) => {
138
+ const next = await tree(current.sha, false);
139
+ return { base: current.path, entries: next.entries };
140
+ })
141
+ );
142
+ for (const node of nodes) {
143
+ for (const item of node.entries) {
144
+ const path = joinPath(node.base, item.path);
145
+ if (item.type === "blob") {
146
+ files.push({ ...item, path });
147
+ } else {
148
+ queue.push({ ...item, path });
149
+ }
150
+ }
151
+ }
152
+ }
153
+ return files;
154
+ }
155
+ const list = async () => {
156
+ const cached = listCache.get("list");
157
+ if (cached) return cached;
158
+ try {
159
+ const entries = await allEntries();
160
+ const prefix = docsPath ? `${docsPath}/` : "";
161
+ const paths = {};
162
+ const docs = entries.filter((item) => item.path.startsWith(prefix) && item.path.endsWith(".mdx")).map((item) => {
163
+ const rawSlug = item.path.slice(prefix.length).replace(/\.mdx$/, "").replace(/\/index$/, "");
164
+ const slug = rawSlug === "index" ? "" : rawSlug;
165
+ const fallbackTitle = slug === "" ? "index" : slug.split("/").pop() ?? slug;
166
+ paths[slug] = item.path;
167
+ return { slug, title: fallbackTitle };
168
+ });
169
+ pathCache.set("paths", paths);
170
+ listCache.set("list", docs);
171
+ return docs;
172
+ } catch (error) {
173
+ console.error("github source list failed", error);
174
+ return [];
175
+ }
176
+ };
177
+ const get = async (slug) => {
178
+ const path = slug.length === 0 ? "index" : slug.join("/");
179
+ const slugValue = slug.join("/");
180
+ const cacheKey = path;
181
+ const cached = fileCache.get(cacheKey);
182
+ if (cached) return cached;
183
+ const knownPaths = pathCache.get("paths") ?? {};
184
+ const knownPath = knownPaths[slugValue];
185
+ const filepath = `${docsPath}/${path}.mdx`;
186
+ const indexPath = `${docsPath}/${path}/index.mdx`;
187
+ const candidates = knownPath ? [knownPath, filepath, indexPath] : [filepath, indexPath];
188
+ const seen = /* @__PURE__ */ new Set();
189
+ for (const candidate of candidates) {
190
+ if (seen.has(candidate)) continue;
191
+ seen.add(candidate);
192
+ try {
193
+ const url = rawUrl(candidate);
194
+ const cachedRaw = rawCache.get(url);
195
+ const requestHeaders = { ...headers };
196
+ if (cachedRaw?.etag) {
197
+ requestHeaders["If-None-Match"] = cachedRaw.etag;
198
+ }
199
+ const res = await request(url, requestHeaders);
200
+ if (res.status === 304 && cachedRaw) {
201
+ const result2 = { content: cachedRaw.content, data: cachedRaw.data };
202
+ fileCache.set(cacheKey, result2);
203
+ return result2;
204
+ }
205
+ if (!res.ok) continue;
206
+ const raw = await res.text();
207
+ const { content, data } = matter(raw);
208
+ const result = { content, data };
209
+ rawCache.set(url, {
210
+ content,
211
+ data,
212
+ etag: res.headers.get("etag") ?? void 0
213
+ });
214
+ fileCache.set(cacheKey, result);
215
+ return result;
216
+ } catch (error) {
217
+ console.error(`github source fetch failed for ${candidate}`, error);
218
+ continue;
219
+ }
220
+ }
221
+ return null;
222
+ };
223
+ return {
224
+ list,
225
+ get,
226
+ async search() {
227
+ const cached = searchCache.get("search");
228
+ if (cached) return cached;
229
+ const listed = await list();
230
+ const values = await maplimit(listed, SEARCH_CONCURRENCY, async (doc) => {
231
+ const value = await get(doc.slug ? doc.slug.split("/") : []);
232
+ if (!value) return null;
233
+ const title = typeof value.data.title === "string" && value.data.title.length > 0 ? value.data.title : doc.title;
234
+ const description = typeof value.data.description === "string" ? value.data.description : doc.description;
235
+ return {
236
+ slug: doc.slug,
237
+ title,
238
+ description,
239
+ content: value.content,
240
+ headings: extractHeadings(value.content)
241
+ };
242
+ });
243
+ const docs = [];
244
+ for (const item of values) {
245
+ if (!item) continue;
246
+ docs.push(item);
247
+ }
248
+ searchCache.set("search", docs);
249
+ return docs;
250
+ }
251
+ };
252
+ }
253
+
254
+ export { createGithubSource };
@@ -0,0 +1,23 @@
1
+ interface GitSourceConfig {
2
+ dir: string;
3
+ branch?: string;
4
+ tag?: string;
5
+ glob?: string;
6
+ }
7
+ interface GitFile {
8
+ path: string;
9
+ content: string;
10
+ lastModified: Date;
11
+ hash: string;
12
+ }
13
+ declare function gitExec(args: string[], cwd: string): Promise<string>;
14
+ declare function listFiles(config: GitSourceConfig): Promise<string[]>;
15
+ declare function readFile(config: GitSourceConfig, path: string): Promise<GitFile>;
16
+ declare function getLastModified(dir: string, path: string): Promise<Date>;
17
+ declare function getFileHash(dir: string, path: string): Promise<string>;
18
+ declare function createGitSource(config: GitSourceConfig): {
19
+ list(): Promise<string[]>;
20
+ get(path: string): Promise<GitFile>;
21
+ };
22
+
23
+ export { type GitFile, type GitSourceConfig, createGitSource, getFileHash, getLastModified, gitExec, listFiles, readFile };
@@ -0,0 +1,50 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+
4
+ const exec = promisify(execFile);
5
+ function ref(config) {
6
+ return config.tag ?? config.branch ?? "HEAD";
7
+ }
8
+ async function gitExec(args, cwd) {
9
+ const { stdout } = await exec("git", args, { cwd });
10
+ return stdout.trim();
11
+ }
12
+ async function listFiles(config) {
13
+ const output = await gitExec(["ls-tree", "-r", "--name-only", ref(config)], config.dir);
14
+ if (!output) return [];
15
+ const files = output.split("\n");
16
+ if (!config.glob) return files;
17
+ const pattern = globToRegex(config.glob);
18
+ return files.filter((f) => pattern.test(f));
19
+ }
20
+ async function readFile(config, path) {
21
+ const r = ref(config);
22
+ const content = await gitExec(["show", `${r}:${path}`], config.dir);
23
+ const lastModified = await getLastModified(config.dir, path);
24
+ const hash = await getFileHash(config.dir, path);
25
+ return { path, content, lastModified, hash };
26
+ }
27
+ async function getLastModified(dir, path) {
28
+ const output = await gitExec(["log", "-1", "--format=%aI", path], dir);
29
+ return new Date(output);
30
+ }
31
+ async function getFileHash(dir, path) {
32
+ const output = await gitExec(["hash-object", path], dir);
33
+ return output;
34
+ }
35
+ function createGitSource(config) {
36
+ return {
37
+ async list() {
38
+ return listFiles(config);
39
+ },
40
+ async get(path) {
41
+ return readFile(config, path);
42
+ }
43
+ };
44
+ }
45
+ function globToRegex(glob) {
46
+ const escaped = glob.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*/g, "\0").replace(/\*/g, "[^/]*").replace(/\0/g, ".*").replace(/\?/g, "[^/]");
47
+ return new RegExp(`^${escaped}$`);
48
+ }
49
+
50
+ export { createGitSource, getFileHash, getLastModified, gitExec, listFiles, readFile };
package/dist/hash.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ type ContentHash = {
2
+ path: string;
3
+ hash: string;
4
+ size: number;
5
+ };
6
+ type HashManifest = {
7
+ generated: string;
8
+ hashes: ContentHash[];
9
+ };
10
+ type Changes = {
11
+ added: string[];
12
+ modified: string[];
13
+ removed: string[];
14
+ };
15
+ declare function hashContent(content: string): string;
16
+ declare function hashFile(filepath: string): Promise<ContentHash>;
17
+ declare function generateHashManifest(dir: string): Promise<HashManifest>;
18
+ declare function detectChanges(previous: HashManifest, current: HashManifest): Changes;
19
+ declare function hashFrontmatter(content: string): string | null;
20
+
21
+ export { type Changes, type ContentHash, type HashManifest, detectChanges, generateHashManifest, hashContent, hashFile, hashFrontmatter };
package/dist/hash.js ADDED
@@ -0,0 +1,65 @@
1
+ import { readFile, stat, readdir } from 'node:fs/promises';
2
+ import { relative, join } from 'node:path';
3
+
4
+ function fnv1a(input) {
5
+ let h = 2166136261;
6
+ for (let i = 0; i < input.length; i++) {
7
+ h ^= input.charCodeAt(i);
8
+ h = Math.imul(h, 16777619);
9
+ }
10
+ return (h >>> 0).toString(16).padStart(8, "0");
11
+ }
12
+ function hashContent(content) {
13
+ return fnv1a(content);
14
+ }
15
+ async function hashFile(filepath) {
16
+ const [content, info] = await Promise.all([readFile(filepath, "utf-8"), stat(filepath)]);
17
+ return { path: filepath, hash: fnv1a(content), size: info.size };
18
+ }
19
+ async function collectFiles(dir) {
20
+ const results = [];
21
+ const entries = await readdir(dir, { withFileTypes: true });
22
+ for (const entry of entries) {
23
+ const full = join(dir, entry.name);
24
+ if (entry.isDirectory()) {
25
+ results.push(...await collectFiles(full));
26
+ } else if (/\.mdx?$/.test(entry.name)) {
27
+ results.push(full);
28
+ }
29
+ }
30
+ return results;
31
+ }
32
+ async function generateHashManifest(dir) {
33
+ const files = await collectFiles(dir);
34
+ const hashes = await Promise.all(
35
+ files.map(async (f) => {
36
+ const h = await hashFile(f);
37
+ return { ...h, path: relative(dir, f) };
38
+ })
39
+ );
40
+ return { generated: (/* @__PURE__ */ new Date()).toISOString(), hashes };
41
+ }
42
+ function detectChanges(previous, current) {
43
+ const prev = new Map(previous.hashes.map((h) => [h.path, h.hash]));
44
+ const curr = new Map(current.hashes.map((h) => [h.path, h.hash]));
45
+ const added = [];
46
+ const modified = [];
47
+ const removed = [];
48
+ for (const [path, hash] of curr) {
49
+ if (!prev.has(path)) added.push(path);
50
+ else if (prev.get(path) !== hash) modified.push(path);
51
+ }
52
+ for (const path of prev.keys()) {
53
+ if (!curr.has(path)) removed.push(path);
54
+ }
55
+ return { added, modified, removed };
56
+ }
57
+ function hashFrontmatter(content) {
58
+ const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
59
+ if (!match) return null;
60
+ const body = match[1];
61
+ if (!body) return null;
62
+ return fnv1a(body);
63
+ }
64
+
65
+ export { detectChanges, generateHashManifest, hashContent, hashFile, hashFrontmatter };
@@ -0,0 +1,18 @@
1
+ type HighlightResult = {
2
+ text: string;
3
+ ranges: {
4
+ start: number;
5
+ end: number;
6
+ }[];
7
+ };
8
+ type SnippetOptions = {
9
+ maxLength?: number;
10
+ surroundingWords?: number;
11
+ };
12
+ declare function highlightMatches(text: string, query: string): HighlightResult;
13
+ declare function generateSnippet(text: string, query: string, options?: SnippetOptions): string;
14
+ declare function highlightHtml(text: string, query: string): string;
15
+ declare function tokenize(query: string): string[];
16
+ declare function fuzzyHighlight(text: string, terms: string[]): HighlightResult;
17
+
18
+ export { type HighlightResult, type SnippetOptions, fuzzyHighlight, generateSnippet, highlightHtml, highlightMatches, tokenize };
@@ -0,0 +1,90 @@
1
+ function escape(t) {
2
+ return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
3
+ }
4
+ function findAll(text, query) {
5
+ const ranges = [];
6
+ const lower = text.toLowerCase();
7
+ const q = query.toLowerCase();
8
+ let pos = 0;
9
+ while (pos < lower.length) {
10
+ const idx = lower.indexOf(q, pos);
11
+ if (idx === -1) break;
12
+ ranges.push({ start: idx, end: idx + q.length });
13
+ pos = idx + 1;
14
+ }
15
+ return ranges;
16
+ }
17
+ function highlightMatches(text, query) {
18
+ return { text, ranges: query ? findAll(text, query) : [] };
19
+ }
20
+ function generateSnippet(text, query, options) {
21
+ const maxLength = options?.maxLength ?? 200;
22
+ const surrounding = options?.surroundingWords ?? 10;
23
+ const idx = text.toLowerCase().indexOf(query.toLowerCase());
24
+ if (idx === -1) return text.slice(0, maxLength) + (text.length > maxLength ? "..." : "");
25
+ const words = text.split(/(\s+)/);
26
+ let charCount = 0;
27
+ let matchWord = 0;
28
+ for (let i = 0; i < words.length; i++) {
29
+ const word = words[i] ?? "";
30
+ if (charCount + word.length > idx) {
31
+ matchWord = i;
32
+ break;
33
+ }
34
+ charCount += word.length;
35
+ }
36
+ const startWord = Math.max(0, matchWord - surrounding * 2);
37
+ const endWord = Math.min(words.length, matchWord + surrounding * 2 + 1);
38
+ let snippet = words.slice(startWord, endWord).join("");
39
+ if (snippet.length > maxLength) snippet = snippet.slice(0, maxLength);
40
+ const prefix = startWord > 0 ? "..." : "";
41
+ const suffix = endWord < words.length || snippet.length >= maxLength ? "..." : "";
42
+ return prefix + snippet.trim() + suffix;
43
+ }
44
+ function highlightHtml(text, query) {
45
+ if (!query) return escape(text);
46
+ const terms = tokenize(query).map((term) => term.toLowerCase()).filter(Boolean);
47
+ if (terms.length === 0) return escape(text);
48
+ const result = [];
49
+ const lower = text.toLowerCase();
50
+ let last = 0;
51
+ let pos = 0;
52
+ while (pos < lower.length) {
53
+ let nearest = -1;
54
+ let match = "";
55
+ for (const term of terms) {
56
+ const idx = lower.indexOf(term, pos);
57
+ if (idx === -1) continue;
58
+ if (nearest === -1 || idx < nearest) {
59
+ nearest = idx;
60
+ match = term;
61
+ }
62
+ }
63
+ if (nearest === -1 || !match) break;
64
+ result.push(escape(text.slice(last, nearest)));
65
+ result.push(`<mark>${escape(text.slice(nearest, nearest + match.length))}</mark>`);
66
+ last = nearest + match.length;
67
+ pos = nearest + 1;
68
+ }
69
+ result.push(escape(text.slice(last)));
70
+ return result.join("");
71
+ }
72
+ function tokenize(query) {
73
+ const terms = [];
74
+ const regex = /"([^"]+)"|(\S+)/g;
75
+ let match;
76
+ while ((match = regex.exec(query)) !== null) {
77
+ const term = match[1] ?? match[2];
78
+ if (!term) continue;
79
+ terms.push(term);
80
+ }
81
+ return terms;
82
+ }
83
+ function fuzzyHighlight(text, terms) {
84
+ const ranges = [];
85
+ for (const term of terms) ranges.push(...findAll(text, term));
86
+ ranges.sort((a, b) => a.start - b.start);
87
+ return { text, ranges };
88
+ }
89
+
90
+ export { fuzzyHighlight, generateSnippet, highlightHtml, highlightMatches, tokenize };
@@ -0,0 +1,7 @@
1
+ interface AnchorOptions {
2
+ offset?: number;
3
+ smooth?: boolean;
4
+ }
5
+ declare function useAnchorScroll(options?: AnchorOptions): void;
6
+
7
+ export { type AnchorOptions, useAnchorScroll };
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { useEffect } from 'react';
3
+
4
+ function useAnchorScroll(options = {}) {
5
+ const { offset = 80, smooth = true } = options;
6
+ useEffect(() => {
7
+ function handleClick(e) {
8
+ if (!(e.target instanceof Element)) return;
9
+ const target = e.target;
10
+ const anchor = target.closest("a");
11
+ if (!anchor) return;
12
+ const href = anchor.getAttribute("href");
13
+ if (!href?.startsWith("#")) return;
14
+ const id = href.slice(1);
15
+ const element = document.getElementById(id);
16
+ if (!element) return;
17
+ e.preventDefault();
18
+ const top = element.offsetTop - offset;
19
+ window.scrollTo({
20
+ top: Math.max(0, top),
21
+ behavior: smooth ? "smooth" : "auto"
22
+ });
23
+ window.history.pushState(null, "", href);
24
+ }
25
+ document.addEventListener("click", handleClick);
26
+ return () => document.removeEventListener("click", handleClick);
27
+ }, [offset, smooth]);
28
+ useEffect(() => {
29
+ const hash = window.location.hash;
30
+ if (!hash) return;
31
+ const id = hash.slice(1);
32
+ const element = document.getElementById(id);
33
+ if (!element) return;
34
+ setTimeout(() => {
35
+ const top = element.offsetTop - offset;
36
+ window.scrollTo({
37
+ top: Math.max(0, top),
38
+ behavior: "auto"
39
+ });
40
+ }, 100);
41
+ }, [offset]);
42
+ }
43
+
44
+ export { useAnchorScroll };
@@ -0,0 +1,11 @@
1
+ type ArrowDirection = "vertical" | "horizontal" | "both";
2
+ interface ArrowNavOptions {
3
+ count: number;
4
+ current: number;
5
+ direction?: ArrowDirection;
6
+ wrap?: boolean;
7
+ isDisabled?: (index: number) => boolean;
8
+ }
9
+ declare function getNextIndex(key: string, options: ArrowNavOptions): number;
10
+
11
+ export { type ArrowDirection, type ArrowNavOptions, getNextIndex };