fromsrc 0.0.2 → 0.0.22

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 (408) hide show
  1. package/dist/access.d.ts +7 -7
  2. package/dist/access.js +12 -5
  3. package/dist/adapter.js +8 -16
  4. package/dist/adapterbrowser.js +6 -10
  5. package/dist/adapternext.js +7 -18
  6. package/dist/adapterreactrouter.js +5 -9
  7. package/dist/adapterremix.js +8 -17
  8. package/dist/adaptertanstack.js +6 -10
  9. package/dist/algolia.js +43 -21
  10. package/dist/analytics.d.ts +1 -1
  11. package/dist/analytics.js +16 -10
  12. package/dist/ansi.js +76 -37
  13. package/dist/api.d.ts +10 -10
  14. package/dist/api.js +14 -11
  15. package/dist/audit.d.ts +6 -6
  16. package/dist/audit.js +29 -10
  17. package/dist/autotype.js +20 -10
  18. package/dist/batch.d.ts +6 -6
  19. package/dist/batch.js +16 -9
  20. package/dist/changelog.js +28 -14
  21. package/dist/changelogutil.d.ts +4 -4
  22. package/dist/changelogutil.js +33 -13
  23. package/dist/cli.d.ts +6 -6
  24. package/dist/cli.js +7 -3
  25. package/dist/client.d.ts +1 -1
  26. package/dist/codesample.d.ts +4 -4
  27. package/dist/codesample.js +63 -24
  28. package/dist/collapse.js +31 -13
  29. package/dist/collections.js +36 -16
  30. package/dist/components/accordion.d.ts +1 -1
  31. package/dist/components/accordion.js +5 -1
  32. package/dist/components/alert.d.ts +1 -1
  33. package/dist/components/alert.js +24 -13
  34. package/dist/components/announce.js +40 -17
  35. package/dist/components/autofill.js +18 -8
  36. package/dist/components/avatar.js +4 -4
  37. package/dist/components/avatarstack.js +2 -2
  38. package/dist/components/backtotop.d.ts +1 -1
  39. package/dist/components/backtotop.js +18 -5
  40. package/dist/components/badge.js +9 -4
  41. package/dist/components/banner.js +22 -5
  42. package/dist/components/breadcrumb.js +11 -4
  43. package/dist/components/breadcrumbnav.js +37 -21
  44. package/dist/components/button.js +23 -8
  45. package/dist/components/callout.d.ts +1 -1
  46. package/dist/components/callout.js +35 -31
  47. package/dist/components/changelog.js +21 -8
  48. package/dist/components/checkbox.js +32 -19
  49. package/dist/components/code.d.ts +1 -1
  50. package/dist/components/code.js +6 -3
  51. package/dist/components/codeblock.js +157 -39
  52. package/dist/components/codecopy.d.ts +1 -1
  53. package/dist/components/codecopy.js +36 -13
  54. package/dist/components/codegroup.js +87 -25
  55. package/dist/components/collapsible.d.ts +1 -1
  56. package/dist/components/collapsible.js +5 -1
  57. package/dist/components/command.d.ts +1 -1
  58. package/dist/components/command.js +42 -15
  59. package/dist/components/compare.js +20 -8
  60. package/dist/components/content.js +121 -79
  61. package/dist/components/copybutton.d.ts +1 -1
  62. package/dist/components/copybutton.js +14 -7
  63. package/dist/components/countdown.js +9 -3
  64. package/dist/components/create.js +34 -24
  65. package/dist/components/definition.js +11 -4
  66. package/dist/components/diffview.js +63 -29
  67. package/dist/components/divider.js +5 -1
  68. package/dist/components/docheader.js +8 -1
  69. package/dist/components/doclinkcard.js +27 -3
  70. package/dist/components/dropdown.d.ts +1 -1
  71. package/dist/components/dropdown.js +32 -11
  72. package/dist/components/dynamiccode.js +5 -3
  73. package/dist/components/editlink.js +35 -23
  74. package/dist/components/embed.js +15 -7
  75. package/dist/components/endpoint.d.ts +3 -3
  76. package/dist/components/endpoint.js +24 -9
  77. package/dist/components/errormessage.d.ts +1 -1
  78. package/dist/components/errormessage.js +4 -1
  79. package/dist/components/expandcode.d.ts +1 -1
  80. package/dist/components/expandcode.js +6 -2
  81. package/dist/components/feature.js +8 -1
  82. package/dist/components/featuregrid.d.ts +4 -4
  83. package/dist/components/featuregrid.js +7 -1
  84. package/dist/components/feedback.js +11 -7
  85. package/dist/components/feedbackwidget.js +18 -12
  86. package/dist/components/files.d.ts +1 -1
  87. package/dist/components/files.js +52 -18
  88. package/dist/components/folder.d.ts +1 -1
  89. package/dist/components/folder.js +21 -4
  90. package/dist/components/footer.js +5 -1
  91. package/dist/components/formlabel.d.ts +1 -1
  92. package/dist/components/formlabel.js +31 -18
  93. package/dist/components/github.js +43 -14
  94. package/dist/components/graph.js +38 -14
  95. package/dist/components/heading.js +36 -29
  96. package/dist/components/headingcopy.js +13 -5
  97. package/dist/components/hero.js +20 -14
  98. package/dist/components/highlight.d.ts +2 -2
  99. package/dist/components/highlight.js +14 -8
  100. package/dist/components/hover.d.ts +2 -2
  101. package/dist/components/hover.js +11 -4
  102. package/dist/components/icons.js +4 -1
  103. package/dist/components/inlinetoc.js +3 -1
  104. package/dist/components/input.js +13 -3
  105. package/dist/components/install.js +34 -24
  106. package/dist/components/kbd.js +19 -11
  107. package/dist/components/langicon.d.ts +1 -1
  108. package/dist/components/langicon.js +32 -24
  109. package/dist/components/language.d.ts +1 -1
  110. package/dist/components/language.js +12 -4
  111. package/dist/components/lastupdated.d.ts +2 -2
  112. package/dist/components/lastupdated.js +36 -12
  113. package/dist/components/link.d.ts +1 -1
  114. package/dist/components/linkcard.js +3 -1
  115. package/dist/components/list.d.ts +1 -1
  116. package/dist/components/list.js +4 -1
  117. package/dist/components/math.js +33 -8
  118. package/dist/components/mermaid.js +3 -3
  119. package/dist/components/mobilenav.d.ts +2 -1
  120. package/dist/components/mobilenav.js +116 -47
  121. package/dist/components/modal.d.ts +1 -1
  122. package/dist/components/modal.js +9 -2
  123. package/dist/components/navlink.js +17 -3
  124. package/dist/components/openapi.d.ts +1 -1
  125. package/dist/components/openapi.js +102 -32
  126. package/dist/components/openapischema.d.ts +1 -1
  127. package/dist/components/openapischema.js +29 -9
  128. package/dist/components/openapitags.js +6 -2
  129. package/dist/components/pagetransition.js +5 -3
  130. package/dist/components/pagination.js +5 -4
  131. package/dist/components/panel.js +92 -16
  132. package/dist/components/playground.d.ts +1 -1
  133. package/dist/components/playground.js +153 -50
  134. package/dist/components/popover.js +9 -7
  135. package/dist/components/prelink.js +40 -9
  136. package/dist/components/prevnext.d.ts +1 -1
  137. package/dist/components/prevnext.js +36 -16
  138. package/dist/components/progress.js +2 -2
  139. package/dist/components/property.js +4 -2
  140. package/dist/components/quote.d.ts +2 -2
  141. package/dist/components/quote.js +32 -4
  142. package/dist/components/radio.js +36 -18
  143. package/dist/components/rating.js +14 -3
  144. package/dist/components/recent.d.ts +1 -1
  145. package/dist/components/recent.js +26 -10
  146. package/dist/components/responsive.js +21 -13
  147. package/dist/components/results.js +8 -4
  148. package/dist/components/screenshot.js +61 -21
  149. package/dist/components/scrollprogress.js +9 -5
  150. package/dist/components/scrollspy.d.ts +2 -2
  151. package/dist/components/scrollspy.js +9 -3
  152. package/dist/components/search.js +47 -18
  153. package/dist/components/searchbutton.js +3 -1
  154. package/dist/components/searchdialog.js +36 -23
  155. package/dist/components/searcher.d.ts +1 -1
  156. package/dist/components/searcher.js +51 -26
  157. package/dist/components/select.js +27 -13
  158. package/dist/components/shortcuts.d.ts +1 -1
  159. package/dist/components/shortcuts.js +57 -38
  160. package/dist/components/sidebar.d.ts +2 -1
  161. package/dist/components/sidebar.js +209 -64
  162. package/dist/components/sidebarfilter.d.ts +1 -1
  163. package/dist/components/sidebarfilter.js +33 -9
  164. package/dist/components/sidebarscript.d.ts +5 -0
  165. package/dist/components/sidebarscript.js +5 -0
  166. package/dist/components/skeleton.js +15 -3
  167. package/dist/components/spinner.js +13 -3
  168. package/dist/components/status.js +20 -8
  169. package/dist/components/steps.js +3 -1
  170. package/dist/components/switch.js +4 -4
  171. package/dist/components/table.js +37 -12
  172. package/dist/components/tabnav.d.ts +1 -1
  173. package/dist/components/tabnav.js +48 -36
  174. package/dist/components/tabs.d.ts +1 -1
  175. package/dist/components/tabs.js +56 -40
  176. package/dist/components/tag.js +8 -3
  177. package/dist/components/terminal.js +14 -4
  178. package/dist/components/textarea.js +96 -82
  179. package/dist/components/theme.d.ts +1 -1
  180. package/dist/components/theme.js +26 -4
  181. package/dist/components/themeprovider.d.ts +4 -4
  182. package/dist/components/themeprovider.js +16 -5
  183. package/dist/components/toast.d.ts +1 -1
  184. package/dist/components/toast.js +23 -14
  185. package/dist/components/toc/default.d.ts +1 -1
  186. package/dist/components/toc/default.js +28 -13
  187. package/dist/components/toc/hook.js +28 -14
  188. package/dist/components/toc/index.js +8 -4
  189. package/dist/components/toc/inline.js +12 -2
  190. package/dist/components/toc/minimal.js +11 -5
  191. package/dist/components/toc/zigzag.d.ts +1 -1
  192. package/dist/components/toc/zigzag.js +37 -17
  193. package/dist/components/tocprogress.d.ts +1 -1
  194. package/dist/components/tocprogress.js +66 -34
  195. package/dist/components/tooltip.d.ts +1 -1
  196. package/dist/components/tooltip.js +20 -8
  197. package/dist/components/trigger.js +13 -5
  198. package/dist/components/twoslash.js +49 -26
  199. package/dist/components/typetable.js +23 -4
  200. package/dist/components/typewriter.js +6 -2
  201. package/dist/components/version.js +40 -14
  202. package/dist/components/video.js +25 -15
  203. package/dist/components/zoom.js +6 -2
  204. package/dist/config.d.ts +2 -2
  205. package/dist/config.js +56 -30
  206. package/dist/content.d.ts +5 -5
  207. package/dist/content.js +121 -57
  208. package/dist/contentcache.d.ts +10 -10
  209. package/dist/contentcache.js +9 -5
  210. package/dist/contentdiff.d.ts +4 -4
  211. package/dist/contentdiff.js +16 -8
  212. package/dist/contributors.d.ts +4 -4
  213. package/dist/contributors.js +49 -19
  214. package/dist/diff.d.ts +6 -6
  215. package/dist/diff.js +37 -16
  216. package/dist/draft.d.ts +11 -11
  217. package/dist/draft.js +9 -5
  218. package/dist/env.js +21 -7
  219. package/dist/export.js +4 -4
  220. package/dist/frontmatter.js +11 -9
  221. package/dist/github.js +60 -30
  222. package/dist/gitsource.d.ts +1 -1
  223. package/dist/gitsource.js +16 -9
  224. package/dist/hash.d.ts +6 -6
  225. package/dist/hash.js +19 -7
  226. package/dist/highlight.d.ts +4 -4
  227. package/dist/highlight.js +34 -14
  228. package/dist/hooks/anchor.js +26 -14
  229. package/dist/hooks/arrownav.js +25 -7
  230. package/dist/hooks/async.js +3 -3
  231. package/dist/hooks/battery.js +11 -3
  232. package/dist/hooks/breakpoint.js +10 -2
  233. package/dist/hooks/clickoutside.js +10 -3
  234. package/dist/hooks/clipboard-paste.js +7 -3
  235. package/dist/hooks/clipboard.d.ts +2 -2
  236. package/dist/hooks/clipboard.js +21 -15
  237. package/dist/hooks/copy.js +11 -6
  238. package/dist/hooks/countdown.js +1 -1
  239. package/dist/hooks/counter.js +1 -1
  240. package/dist/hooks/escapekey.js +6 -1
  241. package/dist/hooks/eventlistener.js +3 -1
  242. package/dist/hooks/eventsource.js +4 -2
  243. package/dist/hooks/eyedropper.js +7 -3
  244. package/dist/hooks/favicon.js +1 -1
  245. package/dist/hooks/fetch.js +12 -4
  246. package/dist/hooks/focustrap.js +20 -8
  247. package/dist/hooks/focuswithin.js +6 -2
  248. package/dist/hooks/form.d.ts +2 -2
  249. package/dist/hooks/form.js +15 -2
  250. package/dist/hooks/fullscreen.js +1 -1
  251. package/dist/hooks/geolocation.js +8 -8
  252. package/dist/hooks/hotkeys.js +19 -7
  253. package/dist/hooks/hover.d.ts +4 -1
  254. package/dist/hooks/hover.js +3 -1
  255. package/dist/hooks/idle.js +13 -3
  256. package/dist/hooks/infinitescroll.js +4 -2
  257. package/dist/hooks/interval.js +3 -1
  258. package/dist/hooks/inview.js +7 -3
  259. package/dist/hooks/keyboard.js +36 -12
  260. package/dist/hooks/keypress.js +6 -2
  261. package/dist/hooks/list.js +11 -1
  262. package/dist/hooks/longpress.js +3 -3
  263. package/dist/hooks/map.js +1 -1
  264. package/dist/hooks/measure.js +16 -7
  265. package/dist/hooks/mediarecorder.js +7 -3
  266. package/dist/hooks/networkstate.js +4 -2
  267. package/dist/hooks/os.js +12 -4
  268. package/dist/hooks/pagination.js +6 -4
  269. package/dist/hooks/permission.js +6 -2
  270. package/dist/hooks/queue.js +4 -2
  271. package/dist/hooks/readprogress.js +6 -2
  272. package/dist/hooks/resizeobserver.js +6 -4
  273. package/dist/hooks/script.js +1 -1
  274. package/dist/hooks/scrolllock.js +6 -2
  275. package/dist/hooks/scrollspy.js +4 -2
  276. package/dist/hooks/selection.js +6 -3
  277. package/dist/hooks/share.js +18 -9
  278. package/dist/hooks/speechrecognition.js +7 -3
  279. package/dist/hooks/stepper.js +4 -4
  280. package/dist/hooks/storage.js +9 -3
  281. package/dist/hooks/stylesheet.js +4 -2
  282. package/dist/hooks/textselection.js +6 -3
  283. package/dist/hooks/throttle.js +6 -2
  284. package/dist/hooks/undoredo.js +19 -11
  285. package/dist/hooks/vibrate.js +3 -1
  286. package/dist/hooks/viewtransition.js +8 -4
  287. package/dist/hooks/wakelock.js +12 -7
  288. package/dist/hooks/websocket.js +4 -2
  289. package/dist/hooks/windowsize.js +2 -2
  290. package/dist/i18n.d.ts +2 -2
  291. package/dist/i18n.js +27 -14
  292. package/dist/index.d.ts +1 -0
  293. package/dist/index.js +1 -0
  294. package/dist/lastmodified.js +11 -5
  295. package/dist/linkcheck.d.ts +6 -6
  296. package/dist/linkcheck.js +55 -14
  297. package/dist/llms.js +20 -4
  298. package/dist/manifest.js +7 -7
  299. package/dist/mcp.js +28 -22
  300. package/dist/mdtoc.d.ts +4 -4
  301. package/dist/mdtoc.js +11 -5
  302. package/dist/mdxscope.d.ts +2 -2
  303. package/dist/mdxscope.js +3 -1
  304. package/dist/meta.js +19 -7
  305. package/dist/migrate.js +35 -25
  306. package/dist/navgen.d.ts +8 -8
  307. package/dist/navgen.js +73 -30
  308. package/dist/navtree.d.ts +1 -1
  309. package/dist/navtree.js +39 -19
  310. package/dist/oembed.d.ts +4 -4
  311. package/dist/oembed.js +24 -18
  312. package/dist/ogimage.d.ts +11 -11
  313. package/dist/ogimage.js +24 -24
  314. package/dist/openapi.js +60 -33
  315. package/dist/openapiguard.js +21 -11
  316. package/dist/openapiutil.js +66 -20
  317. package/dist/orama.js +52 -34
  318. package/dist/pipeline.d.ts +4 -4
  319. package/dist/pipeline.js +4 -4
  320. package/dist/preload.d.ts +2 -2
  321. package/dist/preload.js +4 -4
  322. package/dist/ranking.d.ts +6 -6
  323. package/dist/ranking.js +39 -13
  324. package/dist/readtime.js +3 -1
  325. package/dist/redirects.d.ts +2 -2
  326. package/dist/redirects.js +20 -12
  327. package/dist/rehype.js +16 -9
  328. package/dist/rehypeautolink.d.ts +2 -2
  329. package/dist/rehypeautolink.js +25 -23
  330. package/dist/rehypecode.js +38 -28
  331. package/dist/rehypecopy.js +17 -13
  332. package/dist/rehypeinline.js +33 -27
  333. package/dist/rehypelinks.js +28 -20
  334. package/dist/rehyperaw.js +9 -3
  335. package/dist/rehypeslug.d.ts +1 -1
  336. package/dist/rehypeslug.js +23 -19
  337. package/dist/rehypetablewrap.d.ts +2 -2
  338. package/dist/rehypetablewrap.js +9 -5
  339. package/dist/rehypetoc.d.ts +1 -1
  340. package/dist/rehypetoc.js +15 -7
  341. package/dist/remark.js +28 -13
  342. package/dist/remarkadmonition.js +40 -14
  343. package/dist/remarkannotation.d.ts +2 -2
  344. package/dist/remarkannotation.js +26 -10
  345. package/dist/remarkbadge.js +43 -31
  346. package/dist/remarkblockmath.js +29 -15
  347. package/dist/remarkcallout.js +32 -14
  348. package/dist/remarkcaption.js +28 -16
  349. package/dist/remarkcodetitle.js +29 -13
  350. package/dist/remarkcolumns.js +22 -10
  351. package/dist/remarkdetails.js +34 -14
  352. package/dist/remarkdirective.js +47 -20
  353. package/dist/remarkembed.js +38 -22
  354. package/dist/remarkfiletree.js +29 -19
  355. package/dist/remarkfootnote.js +46 -18
  356. package/dist/remarkgfm.js +13 -8
  357. package/dist/remarkheadingid.js +16 -6
  358. package/dist/remarkimage.js +54 -34
  359. package/dist/remarkinclude.js +20 -8
  360. package/dist/remarkinstall.js +20 -12
  361. package/dist/remarklinkcard.js +33 -14
  362. package/dist/remarkmath.js +34 -15
  363. package/dist/remarkmermaid.js +10 -6
  364. package/dist/remarkmeta.d.ts +2 -2
  365. package/dist/remarkmeta.js +15 -5
  366. package/dist/remarkreadingtime.d.ts +2 -2
  367. package/dist/remarkreadingtime.js +3 -1
  368. package/dist/remarksteps.js +26 -14
  369. package/dist/remarkstructure.js +16 -10
  370. package/dist/remarktabs.js +31 -14
  371. package/dist/remarktoc.js +40 -24
  372. package/dist/remarkts2js.js +51 -40
  373. package/dist/remarktwoslash.d.ts +4 -4
  374. package/dist/remarktwoslash.js +24 -14
  375. package/dist/remarkvideo.d.ts +4 -4
  376. package/dist/remarkvideo.js +42 -16
  377. package/dist/schema.d.ts +14 -14
  378. package/dist/schema.js +2 -2
  379. package/dist/search.js +106 -48
  380. package/dist/searchindex.js +86 -34
  381. package/dist/searchpolicy.js +1 -1
  382. package/dist/searchscore.js +5 -5
  383. package/dist/searchtypo.js +30 -10
  384. package/dist/seo.d.ts +2 -2
  385. package/dist/seo.js +14 -14
  386. package/dist/shortcodes.d.ts +4 -4
  387. package/dist/shortcodes.js +25 -20
  388. package/dist/sitemap.js +18 -8
  389. package/dist/snippets.js +26 -18
  390. package/dist/source.js +75 -41
  391. package/dist/stats.d.ts +4 -4
  392. package/dist/stats.js +18 -12
  393. package/dist/testing.d.ts +7 -7
  394. package/dist/testing.js +74 -29
  395. package/dist/themeutil.d.ts +6 -6
  396. package/dist/themeutil.js +145 -27
  397. package/dist/typegen.js +31 -12
  398. package/dist/validate.js +19 -7
  399. package/dist/validator.d.ts +11 -11
  400. package/dist/validator.js +68 -19
  401. package/dist/versioning.d.ts +7 -7
  402. package/dist/versioning.js +27 -11
  403. package/dist/watcher.js +39 -15
  404. package/dist/webhook.d.ts +6 -6
  405. package/dist/webhook.js +34 -12
  406. package/dist/workspace.js +26 -12
  407. package/package.json +137 -137
  408. package/styles/reset.css +1 -1
@@ -1,21 +1,33 @@
1
1
  function oneedit(left, right) {
2
2
  const a = left.length;
3
3
  const b = right.length;
4
- if (Math.abs(a - b) > 1) return false;
4
+ if (Math.abs(a - b) > 1) {
5
+ return false;
6
+ }
5
7
  if (a === b) {
6
8
  const diffs = [];
7
9
  for (let i2 = 0; i2 < a; i2++) {
8
10
  if (left[i2] !== right[i2]) {
9
11
  diffs.push(i2);
10
- if (diffs.length > 2) return false;
12
+ if (diffs.length > 2) {
13
+ return false;
14
+ }
11
15
  }
12
16
  }
13
- if (diffs.length === 1) return true;
14
- if (diffs.length !== 2) return false;
17
+ if (diffs.length === 1) {
18
+ return true;
19
+ }
20
+ if (diffs.length !== 2) {
21
+ return false;
22
+ }
15
23
  const first = diffs[0];
16
24
  const second = diffs[1];
17
- if (first === void 0 || second === void 0) return false;
18
- if (second !== first + 1) return false;
25
+ if (first === void 0 || second === void 0) {
26
+ return false;
27
+ }
28
+ if (second !== first + 1) {
29
+ return false;
30
+ }
19
31
  return left[first] === right[second] && left[second] === right[first];
20
32
  }
21
33
  const longer = a > b ? left : right;
@@ -30,16 +42,24 @@ function oneedit(left, right) {
30
42
  continue;
31
43
  }
32
44
  diff++;
33
- if (diff > 1) return false;
45
+ if (diff > 1) {
46
+ return false;
47
+ }
34
48
  i++;
35
49
  }
36
50
  return true;
37
51
  }
38
52
  function typomatch(term, words) {
39
- if (term.length < 3) return false;
53
+ if (term.length < 3) {
54
+ return false;
55
+ }
40
56
  for (const word of words) {
41
- if (Math.abs(word.length - term.length) > 1) continue;
42
- if (word === term || oneedit(term, word)) return true;
57
+ if (Math.abs(word.length - term.length) > 1) {
58
+ continue;
59
+ }
60
+ if (word === term || oneedit(term, word)) {
61
+ return true;
62
+ }
43
63
  }
44
64
  return false;
45
65
  }
package/dist/seo.d.ts CHANGED
@@ -17,9 +17,9 @@ interface PageSeo {
17
17
  noindex?: boolean;
18
18
  }
19
19
  declare function createSeo(config: SeoConfig): {
20
- meta: (page: PageSeo) => Record<string, string>[];
21
- jsonLd: (page: PageSeo) => object;
22
20
  canonical: (page: PageSeo) => string;
21
+ jsonLd: (page: PageSeo) => object;
22
+ meta: (page: PageSeo) => Record<string, string>[];
23
23
  title: (page: PageSeo) => string;
24
24
  };
25
25
 
package/dist/seo.js CHANGED
@@ -15,25 +15,25 @@ function createSeo(config) {
15
15
  const image = page.image ?? config.defaultImage;
16
16
  const type = page.type ?? "article";
17
17
  const tags = [
18
- { property: "og:title", content: formatted },
19
- { property: "og:url", content: url },
20
- { property: "og:type", content: type },
21
- { property: "og:site_name", content: config.siteName },
22
- { property: "og:locale", content: locale },
23
- { name: "twitter:card", content: "summary_large_image" }
18
+ { content: formatted, property: "og:title" },
19
+ { content: url, property: "og:url" },
20
+ { content: type, property: "og:type" },
21
+ { content: config.siteName, property: "og:site_name" },
22
+ { content: locale, property: "og:locale" },
23
+ { content: "summary_large_image", name: "twitter:card" }
24
24
  ];
25
25
  if (page.description) {
26
- tags.unshift({ name: "description", content: page.description });
27
- tags.push({ property: "og:description", content: page.description });
26
+ tags.unshift({ content: page.description, name: "description" });
27
+ tags.push({ content: page.description, property: "og:description" });
28
28
  }
29
29
  if (image) {
30
- tags.push({ property: "og:image", content: image });
30
+ tags.push({ content: image, property: "og:image" });
31
31
  }
32
32
  if (config.twitter) {
33
- tags.push({ name: "twitter:site", content: config.twitter });
33
+ tags.push({ content: config.twitter, name: "twitter:site" });
34
34
  }
35
35
  if (page.noindex) {
36
- tags.push({ name: "robots", content: "noindex,nofollow" });
36
+ tags.push({ content: "noindex,nofollow", name: "robots" });
37
37
  }
38
38
  return tags;
39
39
  }
@@ -42,11 +42,11 @@ function createSeo(config) {
42
42
  "@context": "https://schema.org",
43
43
  "@type": "TechArticle",
44
44
  headline: title(page),
45
- url: canonical(page),
46
45
  publisher: {
47
46
  "@type": "Organization",
48
47
  name: config.siteName
49
- }
48
+ },
49
+ url: canonical(page)
50
50
  };
51
51
  if (page.description) {
52
52
  data.description = page.description;
@@ -63,7 +63,7 @@ function createSeo(config) {
63
63
  }
64
64
  return data;
65
65
  }
66
- return { meta, jsonLd, canonical, title };
66
+ return { canonical, jsonLd, meta, title };
67
67
  }
68
68
 
69
69
  export { createSeo };
@@ -1,10 +1,10 @@
1
- type ShortcodeDefinition = {
1
+ interface ShortcodeDefinition {
2
2
  name: string;
3
3
  transform: (attrs: Record<string, string>, content?: string) => string;
4
- };
5
- type ShortcodeConfig = {
4
+ }
5
+ interface ShortcodeConfig {
6
6
  definitions: ShortcodeDefinition[];
7
- };
7
+ }
8
8
  declare function parseAttrs(tag: string): Record<string, string>;
9
9
  declare function registerShortcode(name: string, transform: (attrs: Record<string, string>, content?: string) => string): ShortcodeDefinition;
10
10
  declare function processShortcodes(content: string, config: ShortcodeConfig): string;
@@ -8,7 +8,9 @@ function parseAttrs(tag) {
8
8
  while ((match = pattern.exec(tag)) !== null) {
9
9
  const key = match[1];
10
10
  const value = match[2];
11
- if (!key || value === void 0) continue;
11
+ if (!key || value === void 0) {
12
+ continue;
13
+ }
12
14
  attrs[key] = value;
13
15
  }
14
16
  return attrs;
@@ -23,35 +25,38 @@ function processShortcodes(content, config) {
23
25
  `\\{\\{${def.name}([^}]*)\\}\\}([\\s\\S]*?)\\{\\{/${def.name}\\}\\}`,
24
26
  "g"
25
27
  );
26
- result = result.replace(block, (_, tag, inner) => {
27
- return def.transform(parseAttrs(tag), inner);
28
- });
28
+ result = result.replace(
29
+ block,
30
+ (_, tag, inner) => def.transform(parseAttrs(tag), inner)
31
+ );
29
32
  const inline = new RegExp(`\\{\\{${def.name}([^}]*)\\}\\}`, "g");
30
- result = result.replace(inline, (_, tag) => {
31
- return def.transform(parseAttrs(tag));
32
- });
33
+ result = result.replace(
34
+ inline,
35
+ (_, tag) => def.transform(parseAttrs(tag))
36
+ );
33
37
  }
34
38
  return result;
35
39
  }
36
40
  const builtinShortcodes = [
37
- registerShortcode("youtube", (attrs) => {
38
- return `<YouTube id="${attrs.id}" />`;
39
- }),
40
- registerShortcode("note", (attrs, content) => {
41
- return `<Note type="${attrs.type}">${content ?? ""}</Note>`;
42
- }),
43
- registerShortcode("badge", (attrs) => {
44
- return `<Badge>${attrs.text}</Badge>`;
45
- }),
41
+ registerShortcode("youtube", (attrs) => `<YouTube id="${attrs.id}" />`),
42
+ registerShortcode(
43
+ "note",
44
+ (attrs, content) => `<Note type="${attrs.type}">${content ?? ""}</Note>`
45
+ ),
46
+ registerShortcode("badge", (attrs) => `<Badge>${attrs.text}</Badge>`),
46
47
  registerShortcode("include", (attrs) => {
47
48
  try {
48
- const file = attrs.file;
49
- if (!file || file.includes("..") || isAbsolute(file)) return "";
49
+ const { file } = attrs;
50
+ if (!file || file.includes("..") || isAbsolute(file)) {
51
+ return "";
52
+ }
50
53
  const root = resolve(process.cwd());
51
54
  const full = resolve(root, file);
52
55
  const rooted = `${root}/`;
53
- if (full !== root && !full.startsWith(rooted)) return "";
54
- return readFileSync(full, "utf-8");
56
+ if (full !== root && !full.startsWith(rooted)) {
57
+ return "";
58
+ }
59
+ return readFileSync(full, "utf8");
55
60
  } catch {
56
61
  return "";
57
62
  }
package/dist/sitemap.js CHANGED
@@ -1,15 +1,21 @@
1
1
  function escape(str) {
2
- return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
2
+ return str.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&apos;");
3
3
  }
4
4
  function urlEntry(entry) {
5
5
  let xml = ` <url>
6
6
  <loc>${escape(entry.url)}</loc>`;
7
- if (entry.lastmod) xml += `
7
+ if (entry.lastmod) {
8
+ xml += `
8
9
  <lastmod>${escape(entry.lastmod)}</lastmod>`;
9
- if (entry.changefreq) xml += `
10
+ }
11
+ if (entry.changefreq) {
12
+ xml += `
10
13
  <changefreq>${entry.changefreq}</changefreq>`;
11
- if (entry.priority !== void 0) xml += `
14
+ }
15
+ if (entry.priority !== void 0) {
16
+ xml += `
12
17
  <priority>${entry.priority}</priority>`;
18
+ }
13
19
  xml += "\n </url>";
14
20
  return xml;
15
21
  }
@@ -23,9 +29,11 @@ function generateSitemap(config, entries) {
23
29
  ].join("\n");
24
30
  }
25
31
  function generateSitemapIndex(baseUrl, sitemaps) {
26
- const entries = sitemaps.map((url) => ` <sitemap>
32
+ const entries = sitemaps.map(
33
+ (url) => ` <sitemap>
27
34
  <loc>${escape(`${baseUrl}${url}`)}</loc>
28
- </sitemap>`).join("\n");
35
+ </sitemap>`
36
+ ).join("\n");
29
37
  return [
30
38
  `<?xml version="1.0" encoding="UTF-8"?>`,
31
39
  `<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">`,
@@ -53,7 +61,9 @@ function entriesToRss(config, entries) {
53
61
  ].join("\n");
54
62
  }
55
63
  function depth(slug) {
56
- if (slug === "") return 0;
64
+ if (slug === "") {
65
+ return 0;
66
+ }
57
67
  return slug.split("/").length;
58
68
  }
59
69
  function docsToEntries(config, docs) {
@@ -62,7 +72,7 @@ function docsToEntries(config, docs) {
62
72
  const d = depth(doc.slug);
63
73
  const priority = d === 0 ? 1 : d === 1 ? 0.8 : d === 2 ? 0.6 : 0.4;
64
74
  const url = `${config.baseUrl}${prefix}${doc.slug ? `/${doc.slug}` : ""}`;
65
- return { url, priority };
75
+ return { priority, url };
66
76
  });
67
77
  }
68
78
 
package/dist/snippets.js CHANGED
@@ -3,19 +3,19 @@ import { join, extname, relative } from 'node:path';
3
3
 
4
4
  const defaults = [".ts", ".tsx", ".js", ".jsx"];
5
5
  const languages = {
6
- ".ts": "typescript",
7
- ".tsx": "typescript",
6
+ ".css": "css",
7
+ ".go": "go",
8
+ ".html": "html",
8
9
  ".js": "javascript",
10
+ ".json": "json",
9
11
  ".jsx": "javascript",
10
12
  ".py": "python",
11
- ".go": "go",
12
13
  ".rs": "rust",
13
- ".css": "css",
14
- ".html": "html",
15
- ".json": "json",
14
+ ".sh": "bash",
15
+ ".ts": "typescript",
16
+ ".tsx": "typescript",
16
17
  ".yaml": "yaml",
17
- ".yml": "yaml",
18
- ".sh": "bash"
18
+ ".yml": "yaml"
19
19
  };
20
20
  const regionRe = /(?:\/\/|\/\*|#|\{\/\*)\s*#region\s+(\S+)(?:\s*\*\/|\s*\*\/\})?/;
21
21
  const endRe = /(?:\/\/|\/\*|#|\{\/\*)\s*#endregion\s+(\S+)(?:\s*\*\/|\s*\*\/\})?/;
@@ -24,7 +24,9 @@ async function collect(dir, exts) {
24
24
  const nested = await Promise.all(
25
25
  entries.map((e) => {
26
26
  const full = join(dir, e.name);
27
- if (e.isDirectory()) return collect(full, exts);
27
+ if (e.isDirectory()) {
28
+ return collect(full, exts);
29
+ }
28
30
  return exts.includes(extname(e.name)) ? [full] : [];
29
31
  })
30
32
  );
@@ -37,7 +39,9 @@ function parse(content, filepath) {
37
39
  const results = [];
38
40
  for (let i = 0; i < lines.length; i++) {
39
41
  const line = lines[i];
40
- if (!line) continue;
42
+ if (!line) {
43
+ continue;
44
+ }
41
45
  const start = line.match(regionRe);
42
46
  const startId = start?.[1];
43
47
  if (startId) {
@@ -48,15 +52,17 @@ function parse(content, filepath) {
48
52
  const endId = end?.[1];
49
53
  if (endId && open.has(endId)) {
50
54
  const s = open.get(endId);
51
- if (s === void 0) continue;
55
+ if (s === void 0) {
56
+ continue;
57
+ }
52
58
  open.delete(endId);
53
59
  results.push({
54
- id: `${relative(process.cwd(), filepath)}:${endId}`,
55
- file: filepath,
56
60
  code: lines.slice(s + 1, i).join("\n"),
61
+ endLine: i,
62
+ file: filepath,
63
+ id: `${relative(process.cwd(), filepath)}:${endId}`,
57
64
  lang,
58
- startLine: s + 2,
59
- endLine: i
65
+ startLine: s + 2
60
66
  });
61
67
  }
62
68
  }
@@ -68,7 +74,7 @@ async function extractSnippets(config) {
68
74
  for (const dir of config.dirs) {
69
75
  const files = await collect(dir, exts);
70
76
  for (const file of files) {
71
- snippets.push(...parse(await readFile(file, "utf-8"), file));
77
+ snippets.push(...parse(await readFile(file, "utf8"), file));
72
78
  }
73
79
  }
74
80
  return snippets;
@@ -78,11 +84,13 @@ function getSnippet(snippets, id) {
78
84
  }
79
85
  function generateSnippetMap(snippets) {
80
86
  const map = {};
81
- for (const s of snippets) map[s.id] = s.code;
87
+ for (const s of snippets) {
88
+ map[s.id] = s.code;
89
+ }
82
90
  return map;
83
91
  }
84
92
  async function extractFileSnippet(filepath, startLine, endLine) {
85
- const lines = (await readFile(filepath, "utf-8")).split("\n");
93
+ const lines = (await readFile(filepath, "utf8")).split("\n");
86
94
  return lines.slice(startLine - 1, endLine).join("\n");
87
95
  }
88
96
 
package/dist/source.js CHANGED
@@ -12,39 +12,53 @@ function createRemoteSource(config) {
12
12
  const filecache = createcache(ttl);
13
13
  const searchcache = createcache(ttl);
14
14
  return {
15
- async list() {
16
- const cached = listcache.get("list");
17
- if (cached) return cached;
18
- const docs = await loaddocs(docsUrl);
19
- if (docs.length > 0) {
20
- listcache.set("list", docs);
21
- return docs;
22
- }
23
- const llms = await loadllms(indexUrl, base);
24
- listcache.set("list", llms);
25
- return llms;
26
- },
27
15
  async get(slug) {
28
16
  const path = slug.length === 0 ? "index" : slug.join("/");
29
17
  const cached = filecache.get(path);
30
- if (cached) return cached;
18
+ if (cached) {
19
+ return cached;
20
+ }
31
21
  const normalized = slug.length === 0 ? "index" : slug.map((part) => encodeURIComponent(part)).join("/");
32
22
  const res = await fetch(`${rawUrl}/${normalized}`);
33
- if (!res.ok) return null;
23
+ if (!res.ok) {
24
+ return null;
25
+ }
34
26
  const source = await res.text();
35
27
  const parsed = parsefrontmatter(source);
36
28
  const docs = await this.list();
37
- const item = docs.find((doc) => doc.slug === path || path === "index" && doc.slug === "");
29
+ const item = docs.find(
30
+ (doc) => doc.slug === path || path === "index" && doc.slug === ""
31
+ );
38
32
  const data = { ...parsed.data };
39
- if (item?.title) data.title = item.title;
40
- if (item?.description) data.description = item.description;
33
+ if (item?.title) {
34
+ data.title = item.title;
35
+ }
36
+ if (item?.description) {
37
+ data.description = item.description;
38
+ }
41
39
  const value = { content: parsed.content, data };
42
40
  filecache.set(path, value);
43
41
  return value;
44
42
  },
43
+ async list() {
44
+ const cached = listcache.get("list");
45
+ if (cached) {
46
+ return cached;
47
+ }
48
+ const docs = await loaddocs(docsUrl);
49
+ if (docs.length > 0) {
50
+ listcache.set("list", docs);
51
+ return docs;
52
+ }
53
+ const llms = await loadllms(indexUrl, base);
54
+ listcache.set("list", llms);
55
+ return llms;
56
+ },
45
57
  async search() {
46
58
  const cached = searchcache.get("search");
47
- if (cached) return cached;
59
+ if (cached) {
60
+ return cached;
61
+ }
48
62
  const docs = await loadsearch(searchIndexUrl);
49
63
  searchcache.set("search", docs);
50
64
  return docs;
@@ -56,7 +70,9 @@ function createcache(ttl) {
56
70
  return {
57
71
  get(key) {
58
72
  const value = store.get(key);
59
- if (!value) return null;
73
+ if (!value) {
74
+ return null;
75
+ }
60
76
  if (Date.now() - value.at > ttl) {
61
77
  store.delete(key);
62
78
  return null;
@@ -64,34 +80,36 @@ function createcache(ttl) {
64
80
  return value.data;
65
81
  },
66
82
  set(key, data) {
67
- store.set(key, { data, at: Date.now() });
83
+ store.set(key, { at: Date.now(), data });
68
84
  }
69
85
  };
70
86
  }
71
87
  const docsSchema = z.object({
72
88
  data: z.array(
73
89
  z.object({
90
+ description: z.string().optional(),
74
91
  slug: z.string(),
75
- title: z.string(),
76
- description: z.string().optional()
92
+ title: z.string()
77
93
  })
78
94
  )
79
95
  });
80
96
  const indexSchema = z.object({
81
97
  documents: z.array(
82
98
  z.object({
83
- path: z.string(),
84
- title: z.string(),
99
+ content: z.string(),
85
100
  description: z.string().optional(),
86
101
  headings: z.array(z.string()),
87
- content: z.string()
102
+ path: z.string(),
103
+ title: z.string()
88
104
  })
89
105
  )
90
106
  });
91
107
  async function loaddocs(url) {
92
108
  try {
93
109
  const res = await fetch(url);
94
- if (!res.ok) return [];
110
+ if (!res.ok) {
111
+ return [];
112
+ }
95
113
  const data = docsSchema.parse(await res.json());
96
114
  return data.data;
97
115
  } catch {
@@ -101,14 +119,16 @@ async function loaddocs(url) {
101
119
  async function loadsearch(url) {
102
120
  try {
103
121
  const res = await fetch(url);
104
- if (!res.ok) return [];
122
+ if (!res.ok) {
123
+ return [];
124
+ }
105
125
  const data = indexSchema.parse(await res.json());
106
126
  return data.documents.map((doc) => ({
107
- slug: normalizepath(doc.path),
108
- title: doc.title,
109
- description: doc.description,
110
127
  content: doc.content,
111
- headings: headings(doc.headings)
128
+ description: doc.description,
129
+ headings: headings(doc.headings),
130
+ slug: normalizepath(doc.path),
131
+ title: doc.title
112
132
  }));
113
133
  } catch {
114
134
  return [];
@@ -117,7 +137,9 @@ async function loadsearch(url) {
117
137
  async function loadllms(url, base) {
118
138
  try {
119
139
  const res = await fetch(url);
120
- if (!res.ok) return [];
140
+ if (!res.ok) {
141
+ return [];
142
+ }
121
143
  const text = await res.text();
122
144
  return parseLlmsIndex(text, base);
123
145
  } catch {
@@ -128,20 +150,28 @@ function parseLlmsIndex(text, baseUrl) {
128
150
  const docs = [];
129
151
  for (const line of text.split("\n")) {
130
152
  const match = line.match(/^- \[(.+?)\]\((.+?)\)(?:: (.+))?$/);
131
- if (!match) continue;
153
+ if (!match) {
154
+ continue;
155
+ }
132
156
  const title = match[1];
133
157
  const url = match[2];
134
- if (!title || !url) continue;
158
+ if (!title || !url) {
159
+ continue;
160
+ }
135
161
  const description = match[3]?.trim();
136
162
  const slug = slugfrom(url, baseUrl);
137
- if (!slug && url !== `${baseUrl}/docs`) continue;
138
- docs.push({ slug, title, description });
163
+ if (!slug && url !== `${baseUrl}/docs`) {
164
+ continue;
165
+ }
166
+ docs.push({ description, slug, title });
139
167
  }
140
168
  return docs;
141
169
  }
142
170
  function slugfrom(value, base) {
143
171
  const parsed = parseurl(value, base);
144
- if (!parsed) return "";
172
+ if (!parsed) {
173
+ return "";
174
+ }
145
175
  const path = parsed.pathname.replace(/^\/docs\/?/, "").replace(/\/$/, "").trim();
146
176
  return normalizepath(path);
147
177
  }
@@ -159,7 +189,7 @@ function trimslash(value) {
159
189
  return value.replace(/\/+$/, "");
160
190
  }
161
191
  function headingid(text) {
162
- return text.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9_-]/g, "").replace(/-+/g, "-").replace(/^-|-$/g, "");
192
+ return text.toLowerCase().replaceAll(/\s+/g, "-").replaceAll(/[^a-z0-9_-]/g, "").replaceAll(/-+/g, "-").replaceAll(/^-|-$/g, "");
163
193
  }
164
194
  function parsefrontmatter(source) {
165
195
  try {
@@ -171,16 +201,20 @@ function parsefrontmatter(source) {
171
201
  }
172
202
  }
173
203
  function headings(values) {
174
- if (values.length === 0) return void 0;
204
+ if (values.length === 0) {
205
+ return void 0;
206
+ }
175
207
  const seen = /* @__PURE__ */ new Map();
176
208
  const list = [];
177
209
  for (const text of values) {
178
210
  const base = headingid(text);
179
- if (!base) continue;
211
+ if (!base) {
212
+ continue;
213
+ }
180
214
  const count = seen.get(base) ?? 0;
181
215
  seen.set(base, count + 1);
182
216
  const id = count === 0 ? base : `${base}-${count}`;
183
- list.push({ id, text, level: 2 });
217
+ list.push({ id, level: 2, text });
184
218
  }
185
219
  return list.length > 0 ? list : void 0;
186
220
  }
package/dist/stats.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- type DocsStats = {
1
+ interface DocsStats {
2
2
  totalPages: number;
3
3
  totalWords: number;
4
4
  avgWords: number;
@@ -8,15 +8,15 @@ type DocsStats = {
8
8
  totalImages: number;
9
9
  languages: Record<string, number>;
10
10
  lastUpdated: string;
11
- };
12
- type PageStats = {
11
+ }
12
+ interface PageStats {
13
13
  path: string;
14
14
  words: number;
15
15
  headings: number;
16
16
  links: number;
17
17
  codeBlocks: number;
18
18
  images: number;
19
- };
19
+ }
20
20
  declare function analyzePage(content: string, path: string): PageStats;
21
21
  declare function analyzeDocs(dir: string): Promise<DocsStats>;
22
22
  declare function formatStats(stats: DocsStats): string;