@tonyclaw/llm-inspector 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/.output/nitro.json +17 -0
  2. package/.output/public/assets/alibaba-TTwafVwX.svg +1 -0
  3. package/.output/public/assets/index-B3RwBPLW.css +1 -0
  4. package/.output/public/assets/index-s4lwsWvq.js +97 -0
  5. package/.output/public/assets/main-Cp8AM0Pa.js +17 -0
  6. package/.output/public/assets/minimax-BPMzvuL-.jpeg +0 -0
  7. package/.output/public/assets/qwen-CONDcHqt.png +0 -0
  8. package/.output/public/assets/zhipuai-BPNAnxo-.svg +219 -0
  9. package/.output/server/_chunks/ssr-renderer.mjs +17 -0
  10. package/.output/server/_libs/@radix-ui/react-accessible-icon+[...].mjs +1 -0
  11. package/.output/server/_libs/@radix-ui/react-dismissable-layer+[...].mjs +210 -0
  12. package/.output/server/_libs/@radix-ui/react-navigation-menu+[...].mjs +1 -0
  13. package/.output/server/_libs/@radix-ui/react-one-time-password-field+[...].mjs +1 -0
  14. package/.output/server/_libs/@radix-ui/react-password-toggle-field+[...].mjs +1 -0
  15. package/.output/server/_libs/@radix-ui/react-use-callback-ref+[...].mjs +11 -0
  16. package/.output/server/_libs/@radix-ui/react-use-controllable-state+[...].mjs +69 -0
  17. package/.output/server/_libs/@radix-ui/react-use-effect-event+[...].mjs +1 -0
  18. package/.output/server/_libs/@radix-ui/react-use-escape-keydown+[...].mjs +17 -0
  19. package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +1 -0
  20. package/.output/server/_libs/@radix-ui/react-use-layout-effect+[...].mjs +6 -0
  21. package/.output/server/_libs/@radix-ui/react-visually-hidden+[...].mjs +34 -0
  22. package/.output/server/_libs/ajv-formats.mjs +330 -0
  23. package/.output/server/_libs/ajv.mjs +11444 -0
  24. package/.output/server/_libs/aria-hidden.mjs +122 -0
  25. package/.output/server/_libs/atomically.mjs +152 -0
  26. package/.output/server/_libs/bail.mjs +8 -0
  27. package/.output/server/_libs/character-entities.mjs +2130 -0
  28. package/.output/server/_libs/class-variance-authority.mjs +44 -0
  29. package/.output/server/_libs/clsx.mjs +16 -0
  30. package/.output/server/_libs/comma-separated-tokens.mjs +10 -0
  31. package/.output/server/_libs/conf.mjs +635 -0
  32. package/.output/server/_libs/cookie-es.mjs +58 -0
  33. package/.output/server/_libs/core-util-is.mjs +75 -0
  34. package/.output/server/_libs/croner.mjs +1 -0
  35. package/.output/server/_libs/crossws.mjs +1 -0
  36. package/.output/server/_libs/debounce-fn.mjs +69 -0
  37. package/.output/server/_libs/decode-named-character-reference+[...].mjs +8 -0
  38. package/.output/server/_libs/detect-node-es.mjs +1 -0
  39. package/.output/server/_libs/devlop.mjs +8 -0
  40. package/.output/server/_libs/dot-prop.mjs +265 -0
  41. package/.output/server/_libs/env-paths.mjs +57 -0
  42. package/.output/server/_libs/estree-util-is-identifier-name.mjs +11 -0
  43. package/.output/server/_libs/extend.mjs +97 -0
  44. package/.output/server/_libs/fast-deep-equal.mjs +38 -0
  45. package/.output/server/_libs/fast-uri.mjs +812 -0
  46. package/.output/server/_libs/floating-ui__core.mjs +725 -0
  47. package/.output/server/_libs/floating-ui__dom.mjs +622 -0
  48. package/.output/server/_libs/floating-ui__react-dom.mjs +292 -0
  49. package/.output/server/_libs/floating-ui__utils.mjs +320 -0
  50. package/.output/server/_libs/get-nonce.mjs +9 -0
  51. package/.output/server/_libs/h3-v2.mjs +276 -0
  52. package/.output/server/_libs/h3.mjs +400 -0
  53. package/.output/server/_libs/hast-util-to-jsx-runtime.mjs +388 -0
  54. package/.output/server/_libs/hast-util-whitespace.mjs +10 -0
  55. package/.output/server/_libs/hookable.mjs +1 -0
  56. package/.output/server/_libs/html-url-attributes.mjs +26 -0
  57. package/.output/server/_libs/immediate.mjs +74 -0
  58. package/.output/server/_libs/inherits.mjs +50 -0
  59. package/.output/server/_libs/inline-style-parser.mjs +142 -0
  60. package/.output/server/_libs/is-plain-obj.mjs +10 -0
  61. package/.output/server/_libs/isarray.mjs +14 -0
  62. package/.output/server/_libs/isbot.mjs +20 -0
  63. package/.output/server/_libs/json-schema-traverse.mjs +180 -0
  64. package/.output/server/_libs/jszip.mjs +3049 -0
  65. package/.output/server/_libs/lie.mjs +273 -0
  66. package/.output/server/_libs/lucide-react.mjs +368 -0
  67. package/.output/server/_libs/mdast-util-from-markdown.mjs +717 -0
  68. package/.output/server/_libs/mdast-util-to-hast.mjs +710 -0
  69. package/.output/server/_libs/mdast-util-to-string.mjs +38 -0
  70. package/.output/server/_libs/micromark-core-commonmark.mjs +2259 -0
  71. package/.output/server/_libs/micromark-factory-destination.mjs +94 -0
  72. package/.output/server/_libs/micromark-factory-label.mjs +63 -0
  73. package/.output/server/_libs/micromark-factory-space.mjs +24 -0
  74. package/.output/server/_libs/micromark-factory-title.mjs +65 -0
  75. package/.output/server/_libs/micromark-factory-whitespace.mjs +22 -0
  76. package/.output/server/_libs/micromark-util-character.mjs +44 -0
  77. package/.output/server/_libs/micromark-util-chunked.mjs +36 -0
  78. package/.output/server/_libs/micromark-util-classify-character+[...].mjs +12 -0
  79. package/.output/server/_libs/micromark-util-combine-extensions+[...].mjs +41 -0
  80. package/.output/server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +19 -0
  81. package/.output/server/_libs/micromark-util-decode-string.mjs +21 -0
  82. package/.output/server/_libs/micromark-util-encode.mjs +1 -0
  83. package/.output/server/_libs/micromark-util-html-tag-name.mjs +69 -0
  84. package/.output/server/_libs/micromark-util-normalize-identifier+[...].mjs +6 -0
  85. package/.output/server/_libs/micromark-util-resolve-all.mjs +15 -0
  86. package/.output/server/_libs/micromark-util-sanitize-uri.mjs +41 -0
  87. package/.output/server/_libs/micromark-util-subtokenize.mjs +346 -0
  88. package/.output/server/_libs/micromark.mjs +906 -0
  89. package/.output/server/_libs/mimic-function.mjs +47 -0
  90. package/.output/server/_libs/ohash.mjs +1 -0
  91. package/.output/server/_libs/pako.mjs +4223 -0
  92. package/.output/server/_libs/process-nextick-args.mjs +48 -0
  93. package/.output/server/_libs/property-information.mjs +1209 -0
  94. package/.output/server/_libs/radix-ui.mjs +1 -0
  95. package/.output/server/_libs/radix-ui__number.mjs +6 -0
  96. package/.output/server/_libs/radix-ui__primitive.mjs +11 -0
  97. package/.output/server/_libs/radix-ui__react-accordion.mjs +1 -0
  98. package/.output/server/_libs/radix-ui__react-alert-dialog.mjs +1 -0
  99. package/.output/server/_libs/radix-ui__react-arrow.mjs +23 -0
  100. package/.output/server/_libs/radix-ui__react-aspect-ratio.mjs +1 -0
  101. package/.output/server/_libs/radix-ui__react-avatar.mjs +1 -0
  102. package/.output/server/_libs/radix-ui__react-checkbox.mjs +1 -0
  103. package/.output/server/_libs/radix-ui__react-collapsible.mjs +144 -0
  104. package/.output/server/_libs/radix-ui__react-collection.mjs +69 -0
  105. package/.output/server/_libs/radix-ui__react-compose-refs.mjs +39 -0
  106. package/.output/server/_libs/radix-ui__react-context-menu.mjs +1 -0
  107. package/.output/server/_libs/radix-ui__react-context.mjs +78 -0
  108. package/.output/server/_libs/radix-ui__react-dialog.mjs +325 -0
  109. package/.output/server/_libs/radix-ui__react-direction.mjs +9 -0
  110. package/.output/server/_libs/radix-ui__react-dropdown-menu.mjs +1 -0
  111. package/.output/server/_libs/radix-ui__react-focus-guards.mjs +29 -0
  112. package/.output/server/_libs/radix-ui__react-focus-scope.mjs +206 -0
  113. package/.output/server/_libs/radix-ui__react-form.mjs +1 -0
  114. package/.output/server/_libs/radix-ui__react-hover-card.mjs +1 -0
  115. package/.output/server/_libs/radix-ui__react-id.mjs +14 -0
  116. package/.output/server/_libs/radix-ui__react-label.mjs +1 -0
  117. package/.output/server/_libs/radix-ui__react-menu.mjs +1 -0
  118. package/.output/server/_libs/radix-ui__react-menubar.mjs +1 -0
  119. package/.output/server/_libs/radix-ui__react-popover.mjs +1 -0
  120. package/.output/server/_libs/radix-ui__react-popper.mjs +286 -0
  121. package/.output/server/_libs/radix-ui__react-portal.mjs +16 -0
  122. package/.output/server/_libs/radix-ui__react-presence.mjs +128 -0
  123. package/.output/server/_libs/radix-ui__react-primitive.mjs +42 -0
  124. package/.output/server/_libs/radix-ui__react-progress.mjs +1 -0
  125. package/.output/server/_libs/radix-ui__react-radio-group.mjs +1 -0
  126. package/.output/server/_libs/radix-ui__react-roving-focus.mjs +224 -0
  127. package/.output/server/_libs/radix-ui__react-scroll-area.mjs +721 -0
  128. package/.output/server/_libs/radix-ui__react-select.mjs +1163 -0
  129. package/.output/server/_libs/radix-ui__react-separator.mjs +28 -0
  130. package/.output/server/_libs/radix-ui__react-slider.mjs +1 -0
  131. package/.output/server/_libs/radix-ui__react-slot.mjs +99 -0
  132. package/.output/server/_libs/radix-ui__react-switch.mjs +1 -0
  133. package/.output/server/_libs/radix-ui__react-tabs.mjs +189 -0
  134. package/.output/server/_libs/radix-ui__react-toast.mjs +1 -0
  135. package/.output/server/_libs/radix-ui__react-toggle-group.mjs +1 -0
  136. package/.output/server/_libs/radix-ui__react-toggle.mjs +1 -0
  137. package/.output/server/_libs/radix-ui__react-toolbar.mjs +1 -0
  138. package/.output/server/_libs/radix-ui__react-tooltip.mjs +495 -0
  139. package/.output/server/_libs/radix-ui__react-use-previous.mjs +14 -0
  140. package/.output/server/_libs/radix-ui__react-use-size.mjs +39 -0
  141. package/.output/server/_libs/react-dom.mjs +9935 -0
  142. package/.output/server/_libs/react-markdown.mjs +147 -0
  143. package/.output/server/_libs/react-remove-scroll-bar.mjs +82 -0
  144. package/.output/server/_libs/react-remove-scroll.mjs +328 -0
  145. package/.output/server/_libs/react-style-singleton.mjs +69 -0
  146. package/.output/server/_libs/react.mjs +515 -0
  147. package/.output/server/_libs/readable-stream.mjs +1518 -0
  148. package/.output/server/_libs/remark-parse.mjs +19 -0
  149. package/.output/server/_libs/remark-rehype.mjs +21 -0
  150. package/.output/server/_libs/rou3.mjs +8 -0
  151. package/.output/server/_libs/safe-buffer.mjs +64 -0
  152. package/.output/server/_libs/semver.mjs +1984 -0
  153. package/.output/server/_libs/seroval-plugins.mjs +58 -0
  154. package/.output/server/_libs/seroval.mjs +1765 -0
  155. package/.output/server/_libs/setimmediate.mjs +1 -0
  156. package/.output/server/_libs/space-separated-tokens.mjs +6 -0
  157. package/.output/server/_libs/srvx.mjs +334 -0
  158. package/.output/server/_libs/stubborn-fs.mjs +91 -0
  159. package/.output/server/_libs/stubborn-utils.mjs +66 -0
  160. package/.output/server/_libs/style-to-js.mjs +72 -0
  161. package/.output/server/_libs/style-to-object.mjs +38 -0
  162. package/.output/server/_libs/tailwind-merge.mjs +3010 -0
  163. package/.output/server/_libs/tanstack__history.mjs +217 -0
  164. package/.output/server/_libs/tanstack__react-router.mjs +1480 -0
  165. package/.output/server/_libs/tanstack__react-store.mjs +1 -0
  166. package/.output/server/_libs/tanstack__react-virtual.mjs +44 -0
  167. package/.output/server/_libs/tanstack__router-core.mjs +4827 -0
  168. package/.output/server/_libs/tanstack__store.mjs +1 -0
  169. package/.output/server/_libs/tanstack__virtual-core.mjs +1225 -0
  170. package/.output/server/_libs/tiny-invariant.mjs +12 -0
  171. package/.output/server/_libs/tiny-warning.mjs +5 -0
  172. package/.output/server/_libs/trim-lines.mjs +41 -0
  173. package/.output/server/_libs/trough.mjs +85 -0
  174. package/.output/server/_libs/tslib.mjs +576 -0
  175. package/.output/server/_libs/ufo.mjs +54 -0
  176. package/.output/server/_libs/uint8array-extras.mjs +69 -0
  177. package/.output/server/_libs/unctx.mjs +1 -0
  178. package/.output/server/_libs/ungap__structured-clone.mjs +212 -0
  179. package/.output/server/_libs/unified.mjs +661 -0
  180. package/.output/server/_libs/unist-util-is.mjs +100 -0
  181. package/.output/server/_libs/unist-util-position.mjs +27 -0
  182. package/.output/server/_libs/unist-util-stringify-position.mjs +27 -0
  183. package/.output/server/_libs/unist-util-visit-parents.mjs +82 -0
  184. package/.output/server/_libs/unist-util-visit.mjs +24 -0
  185. package/.output/server/_libs/unstorage.mjs +1 -0
  186. package/.output/server/_libs/use-callback-ref.mjs +66 -0
  187. package/.output/server/_libs/use-sidecar.mjs +106 -0
  188. package/.output/server/_libs/use-sync-external-store.mjs +1 -0
  189. package/.output/server/_libs/util-deprecate.mjs +12 -0
  190. package/.output/server/_libs/vfile-message.mjs +138 -0
  191. package/.output/server/_libs/vfile.mjs +467 -0
  192. package/.output/server/_libs/when-exit.mjs +53 -0
  193. package/.output/server/_libs/zod.mjs +4460 -0
  194. package/.output/server/_ssr/index-ByCLZu7J.mjs +3061 -0
  195. package/.output/server/_ssr/index.mjs +1176 -0
  196. package/.output/server/_ssr/router-Bq_mxeNz.mjs +2872 -0
  197. package/.output/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  198. package/.output/server/_tanstack-start-manifest_v-C4E0e9my.mjs +4 -0
  199. package/.output/server/index.mjs +393 -0
  200. package/README.md +196 -0
  201. package/package.json +91 -0
  202. package/src/assets/logos/alibaba.svg +1 -0
  203. package/src/assets/logos/anthropic.svg +1 -0
  204. package/src/assets/logos/deepseek.svg +1 -0
  205. package/src/assets/logos/minimax.jpeg +0 -0
  206. package/src/assets/logos/openai.svg +1 -0
  207. package/src/assets/logos/qwen.png +0 -0
  208. package/src/assets/logos/zhipuai.svg +219 -0
  209. package/src/cli.ts +68 -0
  210. package/src/components/ProxyViewer.tsx +325 -0
  211. package/src/components/ProxyViewerContainer.tsx +211 -0
  212. package/src/components/providers/ProviderCard.tsx +186 -0
  213. package/src/components/providers/ProviderForm.tsx +259 -0
  214. package/src/components/providers/ProviderLogo.tsx +111 -0
  215. package/src/components/providers/ProvidersPanel.tsx +259 -0
  216. package/src/components/providers/SettingsDialog.tsx +39 -0
  217. package/src/components/proxy-viewer/ConversationGroup.tsx +68 -0
  218. package/src/components/proxy-viewer/ConversationHeader.tsx +141 -0
  219. package/src/components/proxy-viewer/LogEntry.tsx +225 -0
  220. package/src/components/proxy-viewer/LogEntryHeader.tsx +250 -0
  221. package/src/components/proxy-viewer/ReplayDialog.tsx +208 -0
  222. package/src/components/proxy-viewer/ResponseView.tsx +161 -0
  223. package/src/components/proxy-viewer/StreamingChunkSequence.tsx +171 -0
  224. package/src/components/proxy-viewer/formats/anthropic/ContentBlocks.tsx +139 -0
  225. package/src/components/proxy-viewer/formats/anthropic/ResponseView.tsx +64 -0
  226. package/src/components/proxy-viewer/formats/index.tsx +24 -0
  227. package/src/components/proxy-viewer/formats/openai/ResponseView.tsx +80 -0
  228. package/src/components/proxy-viewer/index.ts +8 -0
  229. package/src/components/ui/badge.tsx +47 -0
  230. package/src/components/ui/button.tsx +47 -0
  231. package/src/components/ui/collapsible.tsx +21 -0
  232. package/src/components/ui/dialog.tsx +129 -0
  233. package/src/components/ui/json-viewer.tsx +464 -0
  234. package/src/components/ui/scroll-area.tsx +54 -0
  235. package/src/components/ui/select.tsx +178 -0
  236. package/src/components/ui/separator.tsx +28 -0
  237. package/src/components/ui/tabs.tsx +88 -0
  238. package/src/components/ui/tooltip.tsx +51 -0
  239. package/src/index.css +11 -0
  240. package/src/lib/export-logs.ts +51 -0
  241. package/src/lib/utils.ts +22 -0
  242. package/src/proxy/chunkStorage.ts +118 -0
  243. package/src/proxy/constants.ts +36 -0
  244. package/src/proxy/formats/anthropic/anthropicProvider.ts +75 -0
  245. package/src/proxy/formats/anthropic/handler.ts +74 -0
  246. package/src/proxy/formats/anthropic/index.ts +14 -0
  247. package/src/proxy/formats/anthropic/register.ts +4 -0
  248. package/src/proxy/formats/anthropic/schemas.ts +217 -0
  249. package/src/proxy/formats/anthropic/stream.ts +167 -0
  250. package/src/proxy/formats/handler.ts +46 -0
  251. package/src/proxy/formats/index.ts +12 -0
  252. package/src/proxy/formats/jsonSchema.ts +24 -0
  253. package/src/proxy/formats/openai/alibabaProvider.ts +38 -0
  254. package/src/proxy/formats/openai/handler.ts +70 -0
  255. package/src/proxy/formats/openai/index.ts +25 -0
  256. package/src/proxy/formats/openai/provider.ts +50 -0
  257. package/src/proxy/formats/openai/register.ts +4 -0
  258. package/src/proxy/formats/openai/schemas.ts +150 -0
  259. package/src/proxy/formats/openai/stream.ts +153 -0
  260. package/src/proxy/formats/protocol.ts +50 -0
  261. package/src/proxy/formats/providerRegistry.ts +51 -0
  262. package/src/proxy/formats/providers/index.ts +3 -0
  263. package/src/proxy/formats/registry.ts +61 -0
  264. package/src/proxy/handler.ts +389 -0
  265. package/src/proxy/logIndex.ts +187 -0
  266. package/src/proxy/logger.ts +99 -0
  267. package/src/proxy/providers.ts +234 -0
  268. package/src/proxy/schemas.ts +160 -0
  269. package/src/proxy/socketTracker.ts +158 -0
  270. package/src/proxy/store.ts +386 -0
  271. package/src/router.tsx +16 -0
  272. package/src/routes/__root.tsx +38 -0
  273. package/src/routes/api/config.paths.ts +14 -0
  274. package/src/routes/api/health.ts +11 -0
  275. package/src/routes/api/logs.$id.chunks.ts +36 -0
  276. package/src/routes/api/logs.$id.replay.ts +262 -0
  277. package/src/routes/api/logs.$id.ts +22 -0
  278. package/src/routes/api/logs.stream.ts +64 -0
  279. package/src/routes/api/logs.ts +30 -0
  280. package/src/routes/api/models.ts +10 -0
  281. package/src/routes/api/providers.$providerId.ts +45 -0
  282. package/src/routes/api/providers.ts +37 -0
  283. package/src/routes/api/sessions.ts +10 -0
  284. package/src/routes/index.tsx +6 -0
  285. package/src/routes/proxy/$.ts +15 -0
  286. package/styles/globals.css +121 -0
@@ -0,0 +1,710 @@
1
+ import { s as structuredClone } from "./ungap__structured-clone.mjs";
2
+ import { n as normalizeUri } from "./micromark-util-sanitize-uri.mjs";
3
+ import { p as pointStart, a as pointEnd, b as position } from "./unist-util-position.mjs";
4
+ import { t as trimLines } from "./trim-lines.mjs";
5
+ import { v as visit } from "./unist-util-visit.mjs";
6
+ function blockquote(state, node) {
7
+ const result = {
8
+ type: "element",
9
+ tagName: "blockquote",
10
+ properties: {},
11
+ children: state.wrap(state.all(node), true)
12
+ };
13
+ state.patch(node, result);
14
+ return state.applyData(node, result);
15
+ }
16
+ function hardBreak(state, node) {
17
+ const result = { type: "element", tagName: "br", properties: {}, children: [] };
18
+ state.patch(node, result);
19
+ return [state.applyData(node, result), { type: "text", value: "\n" }];
20
+ }
21
+ function code(state, node) {
22
+ const value = node.value ? node.value + "\n" : "";
23
+ const properties = {};
24
+ const language = node.lang ? node.lang.split(/\s+/) : [];
25
+ if (language.length > 0) {
26
+ properties.className = ["language-" + language[0]];
27
+ }
28
+ let result = {
29
+ type: "element",
30
+ tagName: "code",
31
+ properties,
32
+ children: [{ type: "text", value }]
33
+ };
34
+ if (node.meta) {
35
+ result.data = { meta: node.meta };
36
+ }
37
+ state.patch(node, result);
38
+ result = state.applyData(node, result);
39
+ result = { type: "element", tagName: "pre", properties: {}, children: [result] };
40
+ state.patch(node, result);
41
+ return result;
42
+ }
43
+ function strikethrough(state, node) {
44
+ const result = {
45
+ type: "element",
46
+ tagName: "del",
47
+ properties: {},
48
+ children: state.all(node)
49
+ };
50
+ state.patch(node, result);
51
+ return state.applyData(node, result);
52
+ }
53
+ function emphasis(state, node) {
54
+ const result = {
55
+ type: "element",
56
+ tagName: "em",
57
+ properties: {},
58
+ children: state.all(node)
59
+ };
60
+ state.patch(node, result);
61
+ return state.applyData(node, result);
62
+ }
63
+ function footnoteReference(state, node) {
64
+ const clobberPrefix = typeof state.options.clobberPrefix === "string" ? state.options.clobberPrefix : "user-content-";
65
+ const id = String(node.identifier).toUpperCase();
66
+ const safeId = normalizeUri(id.toLowerCase());
67
+ const index = state.footnoteOrder.indexOf(id);
68
+ let counter;
69
+ let reuseCounter = state.footnoteCounts.get(id);
70
+ if (reuseCounter === void 0) {
71
+ reuseCounter = 0;
72
+ state.footnoteOrder.push(id);
73
+ counter = state.footnoteOrder.length;
74
+ } else {
75
+ counter = index + 1;
76
+ }
77
+ reuseCounter += 1;
78
+ state.footnoteCounts.set(id, reuseCounter);
79
+ const link2 = {
80
+ type: "element",
81
+ tagName: "a",
82
+ properties: {
83
+ href: "#" + clobberPrefix + "fn-" + safeId,
84
+ id: clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""),
85
+ dataFootnoteRef: true,
86
+ ariaDescribedBy: ["footnote-label"]
87
+ },
88
+ children: [{ type: "text", value: String(counter) }]
89
+ };
90
+ state.patch(node, link2);
91
+ const sup = {
92
+ type: "element",
93
+ tagName: "sup",
94
+ properties: {},
95
+ children: [link2]
96
+ };
97
+ state.patch(node, sup);
98
+ return state.applyData(node, sup);
99
+ }
100
+ function heading(state, node) {
101
+ const result = {
102
+ type: "element",
103
+ tagName: "h" + node.depth,
104
+ properties: {},
105
+ children: state.all(node)
106
+ };
107
+ state.patch(node, result);
108
+ return state.applyData(node, result);
109
+ }
110
+ function html(state, node) {
111
+ if (state.options.allowDangerousHtml) {
112
+ const result = { type: "raw", value: node.value };
113
+ state.patch(node, result);
114
+ return state.applyData(node, result);
115
+ }
116
+ return void 0;
117
+ }
118
+ function revert(state, node) {
119
+ const subtype = node.referenceType;
120
+ let suffix = "]";
121
+ if (subtype === "collapsed") {
122
+ suffix += "[]";
123
+ } else if (subtype === "full") {
124
+ suffix += "[" + (node.label || node.identifier) + "]";
125
+ }
126
+ if (node.type === "imageReference") {
127
+ return [{ type: "text", value: "![" + node.alt + suffix }];
128
+ }
129
+ const contents = state.all(node);
130
+ const head = contents[0];
131
+ if (head && head.type === "text") {
132
+ head.value = "[" + head.value;
133
+ } else {
134
+ contents.unshift({ type: "text", value: "[" });
135
+ }
136
+ const tail = contents[contents.length - 1];
137
+ if (tail && tail.type === "text") {
138
+ tail.value += suffix;
139
+ } else {
140
+ contents.push({ type: "text", value: suffix });
141
+ }
142
+ return contents;
143
+ }
144
+ function imageReference(state, node) {
145
+ const id = String(node.identifier).toUpperCase();
146
+ const definition = state.definitionById.get(id);
147
+ if (!definition) {
148
+ return revert(state, node);
149
+ }
150
+ const properties = { src: normalizeUri(definition.url || ""), alt: node.alt };
151
+ if (definition.title !== null && definition.title !== void 0) {
152
+ properties.title = definition.title;
153
+ }
154
+ const result = { type: "element", tagName: "img", properties, children: [] };
155
+ state.patch(node, result);
156
+ return state.applyData(node, result);
157
+ }
158
+ function image(state, node) {
159
+ const properties = { src: normalizeUri(node.url) };
160
+ if (node.alt !== null && node.alt !== void 0) {
161
+ properties.alt = node.alt;
162
+ }
163
+ if (node.title !== null && node.title !== void 0) {
164
+ properties.title = node.title;
165
+ }
166
+ const result = { type: "element", tagName: "img", properties, children: [] };
167
+ state.patch(node, result);
168
+ return state.applyData(node, result);
169
+ }
170
+ function inlineCode(state, node) {
171
+ const text2 = { type: "text", value: node.value.replace(/\r?\n|\r/g, " ") };
172
+ state.patch(node, text2);
173
+ const result = {
174
+ type: "element",
175
+ tagName: "code",
176
+ properties: {},
177
+ children: [text2]
178
+ };
179
+ state.patch(node, result);
180
+ return state.applyData(node, result);
181
+ }
182
+ function linkReference(state, node) {
183
+ const id = String(node.identifier).toUpperCase();
184
+ const definition = state.definitionById.get(id);
185
+ if (!definition) {
186
+ return revert(state, node);
187
+ }
188
+ const properties = { href: normalizeUri(definition.url || "") };
189
+ if (definition.title !== null && definition.title !== void 0) {
190
+ properties.title = definition.title;
191
+ }
192
+ const result = {
193
+ type: "element",
194
+ tagName: "a",
195
+ properties,
196
+ children: state.all(node)
197
+ };
198
+ state.patch(node, result);
199
+ return state.applyData(node, result);
200
+ }
201
+ function link(state, node) {
202
+ const properties = { href: normalizeUri(node.url) };
203
+ if (node.title !== null && node.title !== void 0) {
204
+ properties.title = node.title;
205
+ }
206
+ const result = {
207
+ type: "element",
208
+ tagName: "a",
209
+ properties,
210
+ children: state.all(node)
211
+ };
212
+ state.patch(node, result);
213
+ return state.applyData(node, result);
214
+ }
215
+ function listItem(state, node, parent) {
216
+ const results = state.all(node);
217
+ const loose = parent ? listLoose(parent) : listItemLoose(node);
218
+ const properties = {};
219
+ const children = [];
220
+ if (typeof node.checked === "boolean") {
221
+ const head = results[0];
222
+ let paragraph2;
223
+ if (head && head.type === "element" && head.tagName === "p") {
224
+ paragraph2 = head;
225
+ } else {
226
+ paragraph2 = { type: "element", tagName: "p", properties: {}, children: [] };
227
+ results.unshift(paragraph2);
228
+ }
229
+ if (paragraph2.children.length > 0) {
230
+ paragraph2.children.unshift({ type: "text", value: " " });
231
+ }
232
+ paragraph2.children.unshift({
233
+ type: "element",
234
+ tagName: "input",
235
+ properties: { type: "checkbox", checked: node.checked, disabled: true },
236
+ children: []
237
+ });
238
+ properties.className = ["task-list-item"];
239
+ }
240
+ let index = -1;
241
+ while (++index < results.length) {
242
+ const child = results[index];
243
+ if (loose || index !== 0 || child.type !== "element" || child.tagName !== "p") {
244
+ children.push({ type: "text", value: "\n" });
245
+ }
246
+ if (child.type === "element" && child.tagName === "p" && !loose) {
247
+ children.push(...child.children);
248
+ } else {
249
+ children.push(child);
250
+ }
251
+ }
252
+ const tail = results[results.length - 1];
253
+ if (tail && (loose || tail.type !== "element" || tail.tagName !== "p")) {
254
+ children.push({ type: "text", value: "\n" });
255
+ }
256
+ const result = { type: "element", tagName: "li", properties, children };
257
+ state.patch(node, result);
258
+ return state.applyData(node, result);
259
+ }
260
+ function listLoose(node) {
261
+ let loose = false;
262
+ if (node.type === "list") {
263
+ loose = node.spread || false;
264
+ const children = node.children;
265
+ let index = -1;
266
+ while (!loose && ++index < children.length) {
267
+ loose = listItemLoose(children[index]);
268
+ }
269
+ }
270
+ return loose;
271
+ }
272
+ function listItemLoose(node) {
273
+ const spread = node.spread;
274
+ return spread === null || spread === void 0 ? node.children.length > 1 : spread;
275
+ }
276
+ function list(state, node) {
277
+ const properties = {};
278
+ const results = state.all(node);
279
+ let index = -1;
280
+ if (typeof node.start === "number" && node.start !== 1) {
281
+ properties.start = node.start;
282
+ }
283
+ while (++index < results.length) {
284
+ const child = results[index];
285
+ if (child.type === "element" && child.tagName === "li" && child.properties && Array.isArray(child.properties.className) && child.properties.className.includes("task-list-item")) {
286
+ properties.className = ["contains-task-list"];
287
+ break;
288
+ }
289
+ }
290
+ const result = {
291
+ type: "element",
292
+ tagName: node.ordered ? "ol" : "ul",
293
+ properties,
294
+ children: state.wrap(results, true)
295
+ };
296
+ state.patch(node, result);
297
+ return state.applyData(node, result);
298
+ }
299
+ function paragraph(state, node) {
300
+ const result = {
301
+ type: "element",
302
+ tagName: "p",
303
+ properties: {},
304
+ children: state.all(node)
305
+ };
306
+ state.patch(node, result);
307
+ return state.applyData(node, result);
308
+ }
309
+ function root(state, node) {
310
+ const result = { type: "root", children: state.wrap(state.all(node)) };
311
+ state.patch(node, result);
312
+ return state.applyData(node, result);
313
+ }
314
+ function strong(state, node) {
315
+ const result = {
316
+ type: "element",
317
+ tagName: "strong",
318
+ properties: {},
319
+ children: state.all(node)
320
+ };
321
+ state.patch(node, result);
322
+ return state.applyData(node, result);
323
+ }
324
+ function table(state, node) {
325
+ const rows = state.all(node);
326
+ const firstRow = rows.shift();
327
+ const tableContent = [];
328
+ if (firstRow) {
329
+ const head = {
330
+ type: "element",
331
+ tagName: "thead",
332
+ properties: {},
333
+ children: state.wrap([firstRow], true)
334
+ };
335
+ state.patch(node.children[0], head);
336
+ tableContent.push(head);
337
+ }
338
+ if (rows.length > 0) {
339
+ const body = {
340
+ type: "element",
341
+ tagName: "tbody",
342
+ properties: {},
343
+ children: state.wrap(rows, true)
344
+ };
345
+ const start = pointStart(node.children[1]);
346
+ const end = pointEnd(node.children[node.children.length - 1]);
347
+ if (start && end) body.position = { start, end };
348
+ tableContent.push(body);
349
+ }
350
+ const result = {
351
+ type: "element",
352
+ tagName: "table",
353
+ properties: {},
354
+ children: state.wrap(tableContent, true)
355
+ };
356
+ state.patch(node, result);
357
+ return state.applyData(node, result);
358
+ }
359
+ function tableRow(state, node, parent) {
360
+ const siblings = parent ? parent.children : void 0;
361
+ const rowIndex = siblings ? siblings.indexOf(node) : 1;
362
+ const tagName = rowIndex === 0 ? "th" : "td";
363
+ const align = parent && parent.type === "table" ? parent.align : void 0;
364
+ const length = align ? align.length : node.children.length;
365
+ let cellIndex = -1;
366
+ const cells = [];
367
+ while (++cellIndex < length) {
368
+ const cell = node.children[cellIndex];
369
+ const properties = {};
370
+ const alignValue = align ? align[cellIndex] : void 0;
371
+ if (alignValue) {
372
+ properties.align = alignValue;
373
+ }
374
+ let result2 = { type: "element", tagName, properties, children: [] };
375
+ if (cell) {
376
+ result2.children = state.all(cell);
377
+ state.patch(cell, result2);
378
+ result2 = state.applyData(cell, result2);
379
+ }
380
+ cells.push(result2);
381
+ }
382
+ const result = {
383
+ type: "element",
384
+ tagName: "tr",
385
+ properties: {},
386
+ children: state.wrap(cells, true)
387
+ };
388
+ state.patch(node, result);
389
+ return state.applyData(node, result);
390
+ }
391
+ function tableCell(state, node) {
392
+ const result = {
393
+ type: "element",
394
+ tagName: "td",
395
+ // Assume body cell.
396
+ properties: {},
397
+ children: state.all(node)
398
+ };
399
+ state.patch(node, result);
400
+ return state.applyData(node, result);
401
+ }
402
+ function text(state, node) {
403
+ const result = { type: "text", value: trimLines(String(node.value)) };
404
+ state.patch(node, result);
405
+ return state.applyData(node, result);
406
+ }
407
+ function thematicBreak(state, node) {
408
+ const result = {
409
+ type: "element",
410
+ tagName: "hr",
411
+ properties: {},
412
+ children: []
413
+ };
414
+ state.patch(node, result);
415
+ return state.applyData(node, result);
416
+ }
417
+ const handlers = {
418
+ blockquote,
419
+ break: hardBreak,
420
+ code,
421
+ delete: strikethrough,
422
+ emphasis,
423
+ footnoteReference,
424
+ heading,
425
+ html,
426
+ imageReference,
427
+ image,
428
+ inlineCode,
429
+ linkReference,
430
+ link,
431
+ listItem,
432
+ list,
433
+ paragraph,
434
+ // @ts-expect-error: root is different, but hard to type.
435
+ root,
436
+ strong,
437
+ table,
438
+ tableCell,
439
+ tableRow,
440
+ text,
441
+ thematicBreak,
442
+ toml: ignore,
443
+ yaml: ignore,
444
+ definition: ignore,
445
+ footnoteDefinition: ignore
446
+ };
447
+ function ignore() {
448
+ return void 0;
449
+ }
450
+ function defaultFootnoteBackContent(_, rereferenceIndex) {
451
+ const result = [{ type: "text", value: "↩" }];
452
+ if (rereferenceIndex > 1) {
453
+ result.push({
454
+ type: "element",
455
+ tagName: "sup",
456
+ properties: {},
457
+ children: [{ type: "text", value: String(rereferenceIndex) }]
458
+ });
459
+ }
460
+ return result;
461
+ }
462
+ function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {
463
+ return "Back to reference " + (referenceIndex + 1) + (rereferenceIndex > 1 ? "-" + rereferenceIndex : "");
464
+ }
465
+ function footer(state) {
466
+ const clobberPrefix = typeof state.options.clobberPrefix === "string" ? state.options.clobberPrefix : "user-content-";
467
+ const footnoteBackContent = state.options.footnoteBackContent || defaultFootnoteBackContent;
468
+ const footnoteBackLabel = state.options.footnoteBackLabel || defaultFootnoteBackLabel;
469
+ const footnoteLabel = state.options.footnoteLabel || "Footnotes";
470
+ const footnoteLabelTagName = state.options.footnoteLabelTagName || "h2";
471
+ const footnoteLabelProperties = state.options.footnoteLabelProperties || {
472
+ className: ["sr-only"]
473
+ };
474
+ const listItems = [];
475
+ let referenceIndex = -1;
476
+ while (++referenceIndex < state.footnoteOrder.length) {
477
+ const definition = state.footnoteById.get(
478
+ state.footnoteOrder[referenceIndex]
479
+ );
480
+ if (!definition) {
481
+ continue;
482
+ }
483
+ const content = state.all(definition);
484
+ const id = String(definition.identifier).toUpperCase();
485
+ const safeId = normalizeUri(id.toLowerCase());
486
+ let rereferenceIndex = 0;
487
+ const backReferences = [];
488
+ const counts = state.footnoteCounts.get(id);
489
+ while (counts !== void 0 && ++rereferenceIndex <= counts) {
490
+ if (backReferences.length > 0) {
491
+ backReferences.push({ type: "text", value: " " });
492
+ }
493
+ let children = typeof footnoteBackContent === "string" ? footnoteBackContent : footnoteBackContent(referenceIndex, rereferenceIndex);
494
+ if (typeof children === "string") {
495
+ children = { type: "text", value: children };
496
+ }
497
+ backReferences.push({
498
+ type: "element",
499
+ tagName: "a",
500
+ properties: {
501
+ href: "#" + clobberPrefix + "fnref-" + safeId + (rereferenceIndex > 1 ? "-" + rereferenceIndex : ""),
502
+ dataFootnoteBackref: "",
503
+ ariaLabel: typeof footnoteBackLabel === "string" ? footnoteBackLabel : footnoteBackLabel(referenceIndex, rereferenceIndex),
504
+ className: ["data-footnote-backref"]
505
+ },
506
+ children: Array.isArray(children) ? children : [children]
507
+ });
508
+ }
509
+ const tail = content[content.length - 1];
510
+ if (tail && tail.type === "element" && tail.tagName === "p") {
511
+ const tailTail = tail.children[tail.children.length - 1];
512
+ if (tailTail && tailTail.type === "text") {
513
+ tailTail.value += " ";
514
+ } else {
515
+ tail.children.push({ type: "text", value: " " });
516
+ }
517
+ tail.children.push(...backReferences);
518
+ } else {
519
+ content.push(...backReferences);
520
+ }
521
+ const listItem2 = {
522
+ type: "element",
523
+ tagName: "li",
524
+ properties: { id: clobberPrefix + "fn-" + safeId },
525
+ children: state.wrap(content, true)
526
+ };
527
+ state.patch(definition, listItem2);
528
+ listItems.push(listItem2);
529
+ }
530
+ if (listItems.length === 0) {
531
+ return;
532
+ }
533
+ return {
534
+ type: "element",
535
+ tagName: "section",
536
+ properties: { dataFootnotes: true, className: ["footnotes"] },
537
+ children: [
538
+ {
539
+ type: "element",
540
+ tagName: footnoteLabelTagName,
541
+ properties: {
542
+ ...structuredClone(footnoteLabelProperties),
543
+ id: "footnote-label"
544
+ },
545
+ children: [{ type: "text", value: footnoteLabel }]
546
+ },
547
+ { type: "text", value: "\n" },
548
+ {
549
+ type: "element",
550
+ tagName: "ol",
551
+ properties: {},
552
+ children: state.wrap(listItems, true)
553
+ },
554
+ { type: "text", value: "\n" }
555
+ ]
556
+ };
557
+ }
558
+ const own = {}.hasOwnProperty;
559
+ const emptyOptions = {};
560
+ function createState(tree, options) {
561
+ const settings = options || emptyOptions;
562
+ const definitionById = /* @__PURE__ */ new Map();
563
+ const footnoteById = /* @__PURE__ */ new Map();
564
+ const footnoteCounts = /* @__PURE__ */ new Map();
565
+ const handlers$1 = { ...handlers, ...settings.handlers };
566
+ const state = {
567
+ all,
568
+ applyData,
569
+ definitionById,
570
+ footnoteById,
571
+ footnoteCounts,
572
+ footnoteOrder: [],
573
+ handlers: handlers$1,
574
+ one,
575
+ options: settings,
576
+ patch,
577
+ wrap
578
+ };
579
+ visit(tree, function(node) {
580
+ if (node.type === "definition" || node.type === "footnoteDefinition") {
581
+ const map = node.type === "definition" ? definitionById : footnoteById;
582
+ const id = String(node.identifier).toUpperCase();
583
+ if (!map.has(id)) {
584
+ map.set(id, node);
585
+ }
586
+ }
587
+ });
588
+ return state;
589
+ function one(node, parent) {
590
+ const type = node.type;
591
+ const handle = state.handlers[type];
592
+ if (own.call(state.handlers, type) && handle) {
593
+ return handle(state, node, parent);
594
+ }
595
+ if (state.options.passThrough && state.options.passThrough.includes(type)) {
596
+ if ("children" in node) {
597
+ const { children, ...shallow } = node;
598
+ const result = structuredClone(shallow);
599
+ result.children = state.all(node);
600
+ return result;
601
+ }
602
+ return structuredClone(node);
603
+ }
604
+ const unknown = state.options.unknownHandler || defaultUnknownHandler;
605
+ return unknown(state, node, parent);
606
+ }
607
+ function all(parent) {
608
+ const values = [];
609
+ if ("children" in parent) {
610
+ const nodes = parent.children;
611
+ let index = -1;
612
+ while (++index < nodes.length) {
613
+ const result = state.one(nodes[index], parent);
614
+ if (result) {
615
+ if (index && nodes[index - 1].type === "break") {
616
+ if (!Array.isArray(result) && result.type === "text") {
617
+ result.value = trimMarkdownSpaceStart(result.value);
618
+ }
619
+ if (!Array.isArray(result) && result.type === "element") {
620
+ const head = result.children[0];
621
+ if (head && head.type === "text") {
622
+ head.value = trimMarkdownSpaceStart(head.value);
623
+ }
624
+ }
625
+ }
626
+ if (Array.isArray(result)) {
627
+ values.push(...result);
628
+ } else {
629
+ values.push(result);
630
+ }
631
+ }
632
+ }
633
+ }
634
+ return values;
635
+ }
636
+ }
637
+ function patch(from, to) {
638
+ if (from.position) to.position = position(from);
639
+ }
640
+ function applyData(from, to) {
641
+ let result = to;
642
+ if (from && from.data) {
643
+ const hName = from.data.hName;
644
+ const hChildren = from.data.hChildren;
645
+ const hProperties = from.data.hProperties;
646
+ if (typeof hName === "string") {
647
+ if (result.type === "element") {
648
+ result.tagName = hName;
649
+ } else {
650
+ const children = "children" in result ? result.children : [result];
651
+ result = { type: "element", tagName: hName, properties: {}, children };
652
+ }
653
+ }
654
+ if (result.type === "element" && hProperties) {
655
+ Object.assign(result.properties, structuredClone(hProperties));
656
+ }
657
+ if ("children" in result && result.children && hChildren !== null && hChildren !== void 0) {
658
+ result.children = hChildren;
659
+ }
660
+ }
661
+ return result;
662
+ }
663
+ function defaultUnknownHandler(state, node) {
664
+ const data = node.data || {};
665
+ const result = "value" in node && !(own.call(data, "hProperties") || own.call(data, "hChildren")) ? { type: "text", value: node.value } : {
666
+ type: "element",
667
+ tagName: "div",
668
+ properties: {},
669
+ children: state.all(node)
670
+ };
671
+ state.patch(node, result);
672
+ return state.applyData(node, result);
673
+ }
674
+ function wrap(nodes, loose) {
675
+ const result = [];
676
+ let index = -1;
677
+ if (loose) {
678
+ result.push({ type: "text", value: "\n" });
679
+ }
680
+ while (++index < nodes.length) {
681
+ if (index) result.push({ type: "text", value: "\n" });
682
+ result.push(nodes[index]);
683
+ }
684
+ if (loose && nodes.length > 0) {
685
+ result.push({ type: "text", value: "\n" });
686
+ }
687
+ return result;
688
+ }
689
+ function trimMarkdownSpaceStart(value) {
690
+ let index = 0;
691
+ let code2 = value.charCodeAt(index);
692
+ while (code2 === 9 || code2 === 32) {
693
+ index++;
694
+ code2 = value.charCodeAt(index);
695
+ }
696
+ return value.slice(index);
697
+ }
698
+ function toHast(tree, options) {
699
+ const state = createState(tree, options);
700
+ const node = state.one(tree, void 0);
701
+ const foot = footer(state);
702
+ const result = Array.isArray(node) ? { type: "root", children: node } : node || { type: "root", children: [] };
703
+ if (foot) {
704
+ result.children.push({ type: "text", value: "\n" }, foot);
705
+ }
706
+ return result;
707
+ }
708
+ export {
709
+ toHast as t
710
+ };