hermium 0.1.10 → 0.2.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 (212) hide show
  1. package/README.md +56 -0
  2. package/bin/hermium.mjs +185 -164
  3. package/dist/api.mjs +3513 -0
  4. package/dist/public/assets/css/index-Dfs9RUU9.css +1 -0
  5. package/dist/public/assets/css/styles-B8p6jk5Z.css +1 -0
  6. package/dist/public/assets/js/ChatInputBlock-Bw7AL70H.js +1 -0
  7. package/dist/public/assets/js/MarkdownMessage-8d7Y6VL-.js +1 -0
  8. package/dist/public/assets/js/base-ui-BvQbAt_1.js +1 -0
  9. package/dist/public/assets/js/chat._sessionId-BG6lVraH.js +1 -0
  10. package/dist/public/assets/js/chat.index-D2zdMPTT.js +1 -0
  11. package/dist/public/assets/js/index-C0AK45FU.js +60 -0
  12. package/dist/public/assets/js/index-Cx5En4FK.js +1 -0
  13. package/dist/public/assets/js/memory-CeSRdTkW.js +3 -0
  14. package/dist/public/assets/js/router-8uDKazL-.js +1 -0
  15. package/dist/public/assets/js/settings-Bc3Y5zXO.js +1 -0
  16. package/dist/public/assets/js/skills-DZv7sA_5.js +1 -0
  17. package/dist/public/assets/js/theme-CPkdkpaj.js +1 -0
  18. package/dist/public/assets/js/usage-DXQsT9_b.js +1 -0
  19. package/dist/public/assets/woff2/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  20. package/dist/public/assets/woff2/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  21. package/dist/public/assets/woff2/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  22. package/dist/public/assets/woff2/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  23. package/dist/public/assets/woff2/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  24. package/dist/public/favicon.ico +0 -0
  25. package/dist/public/logo.png +0 -0
  26. package/package.json +1 -1
  27. package/dist/public/assets/IconAlertCircle-BW147gsG.js +0 -1
  28. package/dist/public/assets/IconAlertTriangle-DCoTLVSd.js +0 -1
  29. package/dist/public/assets/IconCheck-DAO7Fpl9.js +0 -1
  30. package/dist/public/assets/IconCode-BqfTl5wU.js +0 -1
  31. package/dist/public/assets/IconLoader2-B_pehSXN.js +0 -1
  32. package/dist/public/assets/IconRefresh-BbMGoMV8.js +0 -1
  33. package/dist/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  34. package/dist/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  35. package/dist/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  36. package/dist/public/assets/index-BL9a2Xg9.js +0 -1
  37. package/dist/public/assets/index-BSwXjgjr.js +0 -1
  38. package/dist/public/assets/index-BWl8tn18.js +0 -1
  39. package/dist/public/assets/index-CQh8SXb2.js +0 -94
  40. package/dist/public/assets/index-Cxd-kSUY.js +0 -1
  41. package/dist/public/assets/index-DA5SH--7.js +0 -2
  42. package/dist/public/assets/index-DCHbvtBS.js +0 -1
  43. package/dist/public/assets/index-DCYXJZEe.js +0 -1
  44. package/dist/public/assets/index-DFDfp0ca.js +0 -1
  45. package/dist/public/assets/index-GuAAqSCJ.js +0 -14
  46. package/dist/public/assets/index-WIDirTHx.js +0 -29
  47. package/dist/public/assets/index-X3XZcAzy.js +0 -1
  48. package/dist/public/assets/input-7TQEEJq6.js +0 -1
  49. package/dist/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  50. package/dist/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  51. package/dist/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  52. package/dist/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  53. package/dist/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  54. package/dist/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  55. package/dist/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  56. package/dist/public/assets/models-BlUb1eaf.js +0 -1
  57. package/dist/public/assets/styles-PHtUFHUr.css +0 -1
  58. package/dist/public/assets/switch-B_iYUUM3.js +0 -1
  59. package/dist/public/assets/syntax-highlighter-DcBYfnEK.js +0 -6
  60. package/dist/public/assets/textarea-Dm4aaRqS.js +0 -1
  61. package/dist/public/favicon.png +0 -0
  62. package/dist/public/nous-logo.png +0 -0
  63. package/dist/server/index.mjs +0 -244
  64. package/dist/web-server/__23tanstack-start-plugin-adapters-Cwee5PKy.mjs +0 -6
  65. package/dist/web-server/_chunks/ssr-renderer.mjs +0 -22
  66. package/dist/web-server/_libs/babel__runtime.mjs +0 -237
  67. package/dist/web-server/_libs/bail.mjs +0 -8
  68. package/dist/web-server/_libs/base-ui__react.mjs +0 -9554
  69. package/dist/web-server/_libs/base-ui__utils.mjs +0 -1101
  70. package/dist/web-server/_libs/ccount.mjs +0 -16
  71. package/dist/web-server/_libs/character-entities-legacy.mjs +0 -111
  72. package/dist/web-server/_libs/character-entities.mjs +0 -2130
  73. package/dist/web-server/_libs/character-reference-invalid.mjs +0 -33
  74. package/dist/web-server/_libs/class-variance-authority.mjs +0 -44
  75. package/dist/web-server/_libs/clsx.mjs +0 -16
  76. package/dist/web-server/_libs/comma-separated-tokens.mjs +0 -31
  77. package/dist/web-server/_libs/cookie-es.mjs +0 -44
  78. package/dist/web-server/_libs/croner.mjs +0 -1
  79. package/dist/web-server/_libs/crossws.mjs +0 -1
  80. package/dist/web-server/_libs/decode-named-character-reference+[...].mjs +0 -8
  81. package/dist/web-server/_libs/devlop.mjs +0 -8
  82. package/dist/web-server/_libs/escape-string-regexp.mjs +0 -9
  83. package/dist/web-server/_libs/estree-util-is-identifier-name.mjs +0 -11
  84. package/dist/web-server/_libs/extend.mjs +0 -97
  85. package/dist/web-server/_libs/fault.mjs +0 -1
  86. package/dist/web-server/_libs/floating-ui__core.mjs +0 -663
  87. package/dist/web-server/_libs/floating-ui__dom.mjs +0 -624
  88. package/dist/web-server/_libs/floating-ui__react-dom.mjs +0 -279
  89. package/dist/web-server/_libs/floating-ui__utils.mjs +0 -322
  90. package/dist/web-server/_libs/format.mjs +0 -1
  91. package/dist/web-server/_libs/h3.mjs +0 -408
  92. package/dist/web-server/_libs/hast-util-parse-selector.mjs +0 -39
  93. package/dist/web-server/_libs/hast-util-to-jsx-runtime.mjs +0 -388
  94. package/dist/web-server/_libs/hast-util-whitespace.mjs +0 -10
  95. package/dist/web-server/_libs/hastscript.mjs +0 -200
  96. package/dist/web-server/_libs/highlight.js.mjs +0 -1
  97. package/dist/web-server/_libs/hookable.mjs +0 -1
  98. package/dist/web-server/_libs/html-url-attributes.mjs +0 -26
  99. package/dist/web-server/_libs/inline-style-parser.mjs +0 -142
  100. package/dist/web-server/_libs/is-alphabetical.mjs +0 -7
  101. package/dist/web-server/_libs/is-alphanumerical.mjs +0 -8
  102. package/dist/web-server/_libs/is-decimal.mjs +0 -7
  103. package/dist/web-server/_libs/is-hexadecimal.mjs +0 -7
  104. package/dist/web-server/_libs/is-plain-obj.mjs +0 -10
  105. package/dist/web-server/_libs/isbot.mjs +0 -21
  106. package/dist/web-server/_libs/longest-streak.mjs +0 -25
  107. package/dist/web-server/_libs/lowlight.mjs +0 -1
  108. package/dist/web-server/_libs/markdown-table.mjs +0 -142
  109. package/dist/web-server/_libs/mdast-util-find-and-replace.mjs +0 -109
  110. package/dist/web-server/_libs/mdast-util-from-markdown.mjs +0 -717
  111. package/dist/web-server/_libs/mdast-util-gfm-autolink-literal+[...].mjs +0 -156
  112. package/dist/web-server/_libs/mdast-util-gfm-footnote.mjs +0 -117
  113. package/dist/web-server/_libs/mdast-util-gfm-strikethrough.mjs +0 -54
  114. package/dist/web-server/_libs/mdast-util-gfm-table.mjs +0 -157
  115. package/dist/web-server/_libs/mdast-util-gfm-task-list-item.mjs +0 -77
  116. package/dist/web-server/_libs/mdast-util-gfm.mjs +0 -29
  117. package/dist/web-server/_libs/mdast-util-phrasing.mjs +0 -30
  118. package/dist/web-server/_libs/mdast-util-to-hast.mjs +0 -710
  119. package/dist/web-server/_libs/mdast-util-to-markdown.mjs +0 -798
  120. package/dist/web-server/_libs/mdast-util-to-string.mjs +0 -38
  121. package/dist/web-server/_libs/micromark-core-commonmark.mjs +0 -2259
  122. package/dist/web-server/_libs/micromark-extension-gfm-autolink-literal+[...].mjs +0 -344
  123. package/dist/web-server/_libs/micromark-extension-gfm-footnote+[...].mjs +0 -279
  124. package/dist/web-server/_libs/micromark-extension-gfm-strikethrough+[...].mjs +0 -98
  125. package/dist/web-server/_libs/micromark-extension-gfm-table.mjs +0 -491
  126. package/dist/web-server/_libs/micromark-extension-gfm-tagfilter+[...].mjs +0 -1
  127. package/dist/web-server/_libs/micromark-extension-gfm-task-list-item+[...].mjs +0 -77
  128. package/dist/web-server/_libs/micromark-extension-gfm.mjs +0 -18
  129. package/dist/web-server/_libs/micromark-factory-destination.mjs +0 -94
  130. package/dist/web-server/_libs/micromark-factory-label.mjs +0 -63
  131. package/dist/web-server/_libs/micromark-factory-space.mjs +0 -24
  132. package/dist/web-server/_libs/micromark-factory-title.mjs +0 -65
  133. package/dist/web-server/_libs/micromark-factory-whitespace.mjs +0 -22
  134. package/dist/web-server/_libs/micromark-util-character.mjs +0 -44
  135. package/dist/web-server/_libs/micromark-util-chunked.mjs +0 -36
  136. package/dist/web-server/_libs/micromark-util-classify-character+[...].mjs +0 -12
  137. package/dist/web-server/_libs/micromark-util-combine-extensions+[...].mjs +0 -41
  138. package/dist/web-server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +0 -19
  139. package/dist/web-server/_libs/micromark-util-decode-string.mjs +0 -21
  140. package/dist/web-server/_libs/micromark-util-encode.mjs +0 -1
  141. package/dist/web-server/_libs/micromark-util-html-tag-name.mjs +0 -69
  142. package/dist/web-server/_libs/micromark-util-normalize-identifier+[...].mjs +0 -6
  143. package/dist/web-server/_libs/micromark-util-resolve-all.mjs +0 -15
  144. package/dist/web-server/_libs/micromark-util-sanitize-uri.mjs +0 -41
  145. package/dist/web-server/_libs/micromark-util-subtokenize.mjs +0 -346
  146. package/dist/web-server/_libs/micromark.mjs +0 -906
  147. package/dist/web-server/_libs/ocache.mjs +0 -1
  148. package/dist/web-server/_libs/ohash.mjs +0 -1
  149. package/dist/web-server/_libs/parse-entities.mjs +0 -245
  150. package/dist/web-server/_libs/property-information.mjs +0 -1210
  151. package/dist/web-server/_libs/react-dom.mjs +0 -10779
  152. package/dist/web-server/_libs/react-markdown.mjs +0 -147
  153. package/dist/web-server/_libs/react-syntax-highlighter.mjs +0 -941
  154. package/dist/web-server/_libs/react.mjs +0 -513
  155. package/dist/web-server/_libs/refractor.mjs +0 -2425
  156. package/dist/web-server/_libs/remark-gfm.mjs +0 -20
  157. package/dist/web-server/_libs/remark-parse.mjs +0 -19
  158. package/dist/web-server/_libs/remark-rehype.mjs +0 -21
  159. package/dist/web-server/_libs/reselect.mjs +0 -1
  160. package/dist/web-server/_libs/rou3.mjs +0 -8
  161. package/dist/web-server/_libs/seroval-plugins.mjs +0 -58
  162. package/dist/web-server/_libs/seroval.mjs +0 -1775
  163. package/dist/web-server/_libs/space-separated-tokens.mjs +0 -11
  164. package/dist/web-server/_libs/srvx.mjs +0 -781
  165. package/dist/web-server/_libs/style-to-js.mjs +0 -72
  166. package/dist/web-server/_libs/style-to-object.mjs +0 -38
  167. package/dist/web-server/_libs/tabler__icons-react.mjs +0 -233
  168. package/dist/web-server/_libs/tanstack__history.mjs +0 -204
  169. package/dist/web-server/_libs/tanstack__query-core.mjs +0 -2552
  170. package/dist/web-server/_libs/tanstack__react-query.mjs +0 -190
  171. package/dist/web-server/_libs/tanstack__react-router.mjs +0 -1120
  172. package/dist/web-server/_libs/tanstack__react-store.mjs +0 -2
  173. package/dist/web-server/_libs/tanstack__router-core.mjs +0 -4288
  174. package/dist/web-server/_libs/tanstack__store.mjs +0 -1
  175. package/dist/web-server/_libs/trim-lines.mjs +0 -41
  176. package/dist/web-server/_libs/trough.mjs +0 -85
  177. package/dist/web-server/_libs/ufo.mjs +0 -54
  178. package/dist/web-server/_libs/unctx.mjs +0 -1
  179. package/dist/web-server/_libs/ungap__structured-clone.mjs +0 -224
  180. package/dist/web-server/_libs/unified.mjs +0 -661
  181. package/dist/web-server/_libs/unist-util-is.mjs +0 -100
  182. package/dist/web-server/_libs/unist-util-position.mjs +0 -27
  183. package/dist/web-server/_libs/unist-util-stringify-position.mjs +0 -27
  184. package/dist/web-server/_libs/unist-util-visit-parents.mjs +0 -83
  185. package/dist/web-server/_libs/unist-util-visit.mjs +0 -24
  186. package/dist/web-server/_libs/unstorage.mjs +0 -1
  187. package/dist/web-server/_libs/use-sync-external-store.mjs +0 -139
  188. package/dist/web-server/_libs/vfile-message.mjs +0 -138
  189. package/dist/web-server/_libs/vfile.mjs +0 -467
  190. package/dist/web-server/_libs/zod.mjs +0 -3915
  191. package/dist/web-server/_libs/zustand.mjs +0 -343
  192. package/dist/web-server/_libs/zwitch.mjs +0 -1
  193. package/dist/web-server/_ssr/index--Bo2_ipW.mjs +0 -277
  194. package/dist/web-server/_ssr/index-BEvygh5x.mjs +0 -612
  195. package/dist/web-server/_ssr/index-BFaKxYfN.mjs +0 -40
  196. package/dist/web-server/_ssr/index-BdrMzRTd.mjs +0 -513
  197. package/dist/web-server/_ssr/index-CoDfv1vI.mjs +0 -66
  198. package/dist/web-server/_ssr/index-Cwp8Gyl1.mjs +0 -1812
  199. package/dist/web-server/_ssr/index-DQsfKYjV.mjs +0 -449
  200. package/dist/web-server/_ssr/index-Dbs9k8Ea.mjs +0 -251
  201. package/dist/web-server/_ssr/index-Dk93oyZD.mjs +0 -213
  202. package/dist/web-server/_ssr/index-KNJ7huw_.mjs +0 -369
  203. package/dist/web-server/_ssr/index.mjs +0 -1558
  204. package/dist/web-server/_ssr/input-BV1DMASc.mjs +0 -20
  205. package/dist/web-server/_ssr/models-MzrvbL2i.mjs +0 -43
  206. package/dist/web-server/_ssr/router-CS6Zq3md.mjs +0 -2134
  207. package/dist/web-server/_ssr/start-HYkvq4Ni.mjs +0 -4
  208. package/dist/web-server/_ssr/switch-Bd-Sg0HG.mjs +0 -33
  209. package/dist/web-server/_ssr/syntax-highlighter-5vezNTce.mjs +0 -62
  210. package/dist/web-server/_ssr/textarea-CB4kQp9w.mjs +0 -18
  211. package/dist/web-server/_tanstack-start-manifest_v-m5lY48LR.mjs +0 -4
  212. package/dist/web-server/index.mjs +0 -611
@@ -1,710 +0,0 @@
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
- };