hermium 0.1.9 → 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 (209) 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-BHkmI3j7.js +0 -1
  28. package/dist/public/assets/IconAlertTriangle-wCJudlVg.js +0 -1
  29. package/dist/public/assets/IconCheck-CFuEh_p7.js +0 -1
  30. package/dist/public/assets/IconLoader2-BIx3OuF9.js +0 -1
  31. package/dist/public/assets/IconRefresh-Dgm93w3T.js +0 -1
  32. package/dist/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  33. package/dist/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  34. package/dist/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  35. package/dist/public/assets/index-Bbz3abmO.js +0 -14
  36. package/dist/public/assets/index-CWUaRwcE.js +0 -1
  37. package/dist/public/assets/index-CinLq3cd.js +0 -1
  38. package/dist/public/assets/index-CrQs9n6q.js +0 -29
  39. package/dist/public/assets/index-CtacpN3I.js +0 -1
  40. package/dist/public/assets/index-DY7aE-9s.js +0 -2
  41. package/dist/public/assets/index-DkYGodJj.js +0 -94
  42. package/dist/public/assets/index-DvDLadUx.js +0 -1
  43. package/dist/public/assets/index-U6RcWedt.js +0 -1
  44. package/dist/public/assets/index-_6iFZ0fh.js +0 -1
  45. package/dist/public/assets/index-enFS26SU.js +0 -1
  46. package/dist/public/assets/input-eNcwlDHp.js +0 -1
  47. package/dist/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  48. package/dist/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  49. package/dist/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  50. package/dist/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  51. package/dist/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  52. package/dist/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  53. package/dist/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  54. package/dist/public/assets/queries-iHRgZzw2.js +0 -1
  55. package/dist/public/assets/styles-KcflDlA_.css +0 -1
  56. package/dist/public/assets/switch-B1DcZLwL.js +0 -1
  57. package/dist/public/assets/syntax-highlighter-DWPF-A_h.js +0 -6
  58. package/dist/public/assets/textarea-Di_syYTS.js +0 -1
  59. package/dist/public/favicon.png +0 -0
  60. package/dist/public/nous-logo.png +0 -0
  61. package/dist/server/index.mjs +0 -244
  62. package/dist/web-server/__23tanstack-start-plugin-adapters-Cwee5PKy.mjs +0 -6
  63. package/dist/web-server/_chunks/ssr-renderer.mjs +0 -22
  64. package/dist/web-server/_libs/babel__runtime.mjs +0 -237
  65. package/dist/web-server/_libs/bail.mjs +0 -8
  66. package/dist/web-server/_libs/base-ui__react.mjs +0 -9554
  67. package/dist/web-server/_libs/base-ui__utils.mjs +0 -1101
  68. package/dist/web-server/_libs/ccount.mjs +0 -16
  69. package/dist/web-server/_libs/character-entities-legacy.mjs +0 -111
  70. package/dist/web-server/_libs/character-entities.mjs +0 -2130
  71. package/dist/web-server/_libs/character-reference-invalid.mjs +0 -33
  72. package/dist/web-server/_libs/class-variance-authority.mjs +0 -44
  73. package/dist/web-server/_libs/clsx.mjs +0 -16
  74. package/dist/web-server/_libs/comma-separated-tokens.mjs +0 -31
  75. package/dist/web-server/_libs/cookie-es.mjs +0 -44
  76. package/dist/web-server/_libs/croner.mjs +0 -1
  77. package/dist/web-server/_libs/crossws.mjs +0 -1
  78. package/dist/web-server/_libs/decode-named-character-reference+[...].mjs +0 -8
  79. package/dist/web-server/_libs/devlop.mjs +0 -8
  80. package/dist/web-server/_libs/escape-string-regexp.mjs +0 -9
  81. package/dist/web-server/_libs/estree-util-is-identifier-name.mjs +0 -11
  82. package/dist/web-server/_libs/extend.mjs +0 -97
  83. package/dist/web-server/_libs/fault.mjs +0 -1
  84. package/dist/web-server/_libs/floating-ui__core.mjs +0 -663
  85. package/dist/web-server/_libs/floating-ui__dom.mjs +0 -624
  86. package/dist/web-server/_libs/floating-ui__react-dom.mjs +0 -279
  87. package/dist/web-server/_libs/floating-ui__utils.mjs +0 -322
  88. package/dist/web-server/_libs/format.mjs +0 -1
  89. package/dist/web-server/_libs/h3.mjs +0 -408
  90. package/dist/web-server/_libs/hast-util-parse-selector.mjs +0 -39
  91. package/dist/web-server/_libs/hast-util-to-jsx-runtime.mjs +0 -388
  92. package/dist/web-server/_libs/hast-util-whitespace.mjs +0 -10
  93. package/dist/web-server/_libs/hastscript.mjs +0 -200
  94. package/dist/web-server/_libs/highlight.js.mjs +0 -1
  95. package/dist/web-server/_libs/hookable.mjs +0 -1
  96. package/dist/web-server/_libs/html-url-attributes.mjs +0 -26
  97. package/dist/web-server/_libs/inline-style-parser.mjs +0 -142
  98. package/dist/web-server/_libs/is-alphabetical.mjs +0 -7
  99. package/dist/web-server/_libs/is-alphanumerical.mjs +0 -8
  100. package/dist/web-server/_libs/is-decimal.mjs +0 -7
  101. package/dist/web-server/_libs/is-hexadecimal.mjs +0 -7
  102. package/dist/web-server/_libs/is-plain-obj.mjs +0 -10
  103. package/dist/web-server/_libs/isbot.mjs +0 -21
  104. package/dist/web-server/_libs/longest-streak.mjs +0 -25
  105. package/dist/web-server/_libs/lowlight.mjs +0 -1
  106. package/dist/web-server/_libs/markdown-table.mjs +0 -142
  107. package/dist/web-server/_libs/mdast-util-find-and-replace.mjs +0 -109
  108. package/dist/web-server/_libs/mdast-util-from-markdown.mjs +0 -717
  109. package/dist/web-server/_libs/mdast-util-gfm-autolink-literal+[...].mjs +0 -156
  110. package/dist/web-server/_libs/mdast-util-gfm-footnote.mjs +0 -117
  111. package/dist/web-server/_libs/mdast-util-gfm-strikethrough.mjs +0 -54
  112. package/dist/web-server/_libs/mdast-util-gfm-table.mjs +0 -157
  113. package/dist/web-server/_libs/mdast-util-gfm-task-list-item.mjs +0 -77
  114. package/dist/web-server/_libs/mdast-util-gfm.mjs +0 -29
  115. package/dist/web-server/_libs/mdast-util-phrasing.mjs +0 -30
  116. package/dist/web-server/_libs/mdast-util-to-hast.mjs +0 -710
  117. package/dist/web-server/_libs/mdast-util-to-markdown.mjs +0 -798
  118. package/dist/web-server/_libs/mdast-util-to-string.mjs +0 -38
  119. package/dist/web-server/_libs/micromark-core-commonmark.mjs +0 -2259
  120. package/dist/web-server/_libs/micromark-extension-gfm-autolink-literal+[...].mjs +0 -344
  121. package/dist/web-server/_libs/micromark-extension-gfm-footnote+[...].mjs +0 -279
  122. package/dist/web-server/_libs/micromark-extension-gfm-strikethrough+[...].mjs +0 -98
  123. package/dist/web-server/_libs/micromark-extension-gfm-table.mjs +0 -491
  124. package/dist/web-server/_libs/micromark-extension-gfm-tagfilter+[...].mjs +0 -1
  125. package/dist/web-server/_libs/micromark-extension-gfm-task-list-item+[...].mjs +0 -77
  126. package/dist/web-server/_libs/micromark-extension-gfm.mjs +0 -18
  127. package/dist/web-server/_libs/micromark-factory-destination.mjs +0 -94
  128. package/dist/web-server/_libs/micromark-factory-label.mjs +0 -63
  129. package/dist/web-server/_libs/micromark-factory-space.mjs +0 -24
  130. package/dist/web-server/_libs/micromark-factory-title.mjs +0 -65
  131. package/dist/web-server/_libs/micromark-factory-whitespace.mjs +0 -22
  132. package/dist/web-server/_libs/micromark-util-character.mjs +0 -44
  133. package/dist/web-server/_libs/micromark-util-chunked.mjs +0 -36
  134. package/dist/web-server/_libs/micromark-util-classify-character+[...].mjs +0 -12
  135. package/dist/web-server/_libs/micromark-util-combine-extensions+[...].mjs +0 -41
  136. package/dist/web-server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +0 -19
  137. package/dist/web-server/_libs/micromark-util-decode-string.mjs +0 -21
  138. package/dist/web-server/_libs/micromark-util-encode.mjs +0 -1
  139. package/dist/web-server/_libs/micromark-util-html-tag-name.mjs +0 -69
  140. package/dist/web-server/_libs/micromark-util-normalize-identifier+[...].mjs +0 -6
  141. package/dist/web-server/_libs/micromark-util-resolve-all.mjs +0 -15
  142. package/dist/web-server/_libs/micromark-util-sanitize-uri.mjs +0 -41
  143. package/dist/web-server/_libs/micromark-util-subtokenize.mjs +0 -346
  144. package/dist/web-server/_libs/micromark.mjs +0 -906
  145. package/dist/web-server/_libs/ocache.mjs +0 -1
  146. package/dist/web-server/_libs/ohash.mjs +0 -1
  147. package/dist/web-server/_libs/parse-entities.mjs +0 -245
  148. package/dist/web-server/_libs/property-information.mjs +0 -1210
  149. package/dist/web-server/_libs/react-dom.mjs +0 -10779
  150. package/dist/web-server/_libs/react-markdown.mjs +0 -147
  151. package/dist/web-server/_libs/react-syntax-highlighter.mjs +0 -941
  152. package/dist/web-server/_libs/react.mjs +0 -513
  153. package/dist/web-server/_libs/refractor.mjs +0 -2425
  154. package/dist/web-server/_libs/remark-gfm.mjs +0 -20
  155. package/dist/web-server/_libs/remark-parse.mjs +0 -19
  156. package/dist/web-server/_libs/remark-rehype.mjs +0 -21
  157. package/dist/web-server/_libs/reselect.mjs +0 -1
  158. package/dist/web-server/_libs/rou3.mjs +0 -8
  159. package/dist/web-server/_libs/seroval-plugins.mjs +0 -58
  160. package/dist/web-server/_libs/seroval.mjs +0 -1775
  161. package/dist/web-server/_libs/space-separated-tokens.mjs +0 -11
  162. package/dist/web-server/_libs/srvx.mjs +0 -781
  163. package/dist/web-server/_libs/style-to-js.mjs +0 -72
  164. package/dist/web-server/_libs/style-to-object.mjs +0 -38
  165. package/dist/web-server/_libs/tabler__icons-react.mjs +0 -230
  166. package/dist/web-server/_libs/tanstack__history.mjs +0 -204
  167. package/dist/web-server/_libs/tanstack__query-core.mjs +0 -2552
  168. package/dist/web-server/_libs/tanstack__react-query.mjs +0 -190
  169. package/dist/web-server/_libs/tanstack__react-router.mjs +0 -1120
  170. package/dist/web-server/_libs/tanstack__react-store.mjs +0 -2
  171. package/dist/web-server/_libs/tanstack__router-core.mjs +0 -4288
  172. package/dist/web-server/_libs/tanstack__store.mjs +0 -1
  173. package/dist/web-server/_libs/trim-lines.mjs +0 -41
  174. package/dist/web-server/_libs/trough.mjs +0 -85
  175. package/dist/web-server/_libs/ufo.mjs +0 -54
  176. package/dist/web-server/_libs/unctx.mjs +0 -1
  177. package/dist/web-server/_libs/ungap__structured-clone.mjs +0 -224
  178. package/dist/web-server/_libs/unified.mjs +0 -661
  179. package/dist/web-server/_libs/unist-util-is.mjs +0 -100
  180. package/dist/web-server/_libs/unist-util-position.mjs +0 -27
  181. package/dist/web-server/_libs/unist-util-stringify-position.mjs +0 -27
  182. package/dist/web-server/_libs/unist-util-visit-parents.mjs +0 -83
  183. package/dist/web-server/_libs/unist-util-visit.mjs +0 -24
  184. package/dist/web-server/_libs/unstorage.mjs +0 -1
  185. package/dist/web-server/_libs/use-sync-external-store.mjs +0 -139
  186. package/dist/web-server/_libs/vfile-message.mjs +0 -138
  187. package/dist/web-server/_libs/vfile.mjs +0 -467
  188. package/dist/web-server/_libs/zod.mjs +0 -3915
  189. package/dist/web-server/_libs/zustand.mjs +0 -343
  190. package/dist/web-server/_libs/zwitch.mjs +0 -1
  191. package/dist/web-server/_ssr/index-0n2Z3BPQ.mjs +0 -369
  192. package/dist/web-server/_ssr/index-6itDALOw.mjs +0 -339
  193. package/dist/web-server/_ssr/index-BIRTrOmp.mjs +0 -449
  194. package/dist/web-server/_ssr/index-BPzfADac.mjs +0 -66
  195. package/dist/web-server/_ssr/index-BQE3bF14.mjs +0 -1870
  196. package/dist/web-server/_ssr/index-C5HpvlUP.mjs +0 -190
  197. package/dist/web-server/_ssr/index-C_ZxnypN.mjs +0 -213
  198. package/dist/web-server/_ssr/index-Ca8JFH8f.mjs +0 -612
  199. package/dist/web-server/_ssr/index-DNVESZiA.mjs +0 -513
  200. package/dist/web-server/_ssr/index.mjs +0 -1558
  201. package/dist/web-server/_ssr/input-CqXjTRQg.mjs +0 -20
  202. package/dist/web-server/_ssr/queries-3H_19mUt.mjs +0 -16
  203. package/dist/web-server/_ssr/router-sbsNus0Y.mjs +0 -2093
  204. package/dist/web-server/_ssr/start-HYkvq4Ni.mjs +0 -4
  205. package/dist/web-server/_ssr/switch-usf2F1UM.mjs +0 -33
  206. package/dist/web-server/_ssr/syntax-highlighter-5vezNTce.mjs +0 -62
  207. package/dist/web-server/_ssr/textarea-DfRheWY0.mjs +0 -18
  208. package/dist/web-server/_tanstack-start-manifest_v-DqW-pKEH.mjs +0 -4
  209. package/dist/web-server/index.mjs +0 -597
@@ -1,798 +0,0 @@
1
- import { l as longestStreak } from "./longest-streak.mjs";
2
- import { c as classifyCharacter } from "./micromark-util-classify-character+[...].mjs";
3
- import { v as visit } from "./unist-util-visit.mjs";
4
- import { t as toString } from "./mdast-util-to-string.mjs";
5
- import { E as EXIT } from "./unist-util-visit-parents.mjs";
6
- import { p as phrasing } from "./mdast-util-phrasing.mjs";
7
- function blockquote(node, _, state, info) {
8
- const exit = state.enter("blockquote");
9
- const tracker = state.createTracker(info);
10
- tracker.move("> ");
11
- tracker.shift(2);
12
- const value = state.indentLines(
13
- state.containerFlow(node, tracker.current()),
14
- map$1
15
- );
16
- exit();
17
- return value;
18
- }
19
- function map$1(line, _, blank) {
20
- return ">" + (blank ? "" : " ") + line;
21
- }
22
- function patternInScope(stack, pattern) {
23
- return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);
24
- }
25
- function listInScope(stack, list2, none) {
26
- if (typeof list2 === "string") {
27
- list2 = [list2];
28
- }
29
- if (!list2 || list2.length === 0) {
30
- return none;
31
- }
32
- let index = -1;
33
- while (++index < list2.length) {
34
- if (stack.includes(list2[index])) {
35
- return true;
36
- }
37
- }
38
- return false;
39
- }
40
- function hardBreak(_, _1, state, info) {
41
- let index = -1;
42
- while (++index < state.unsafe.length) {
43
- if (state.unsafe[index].character === "\n" && patternInScope(state.stack, state.unsafe[index])) {
44
- return /[ \t]/.test(info.before) ? "" : " ";
45
- }
46
- }
47
- return "\\\n";
48
- }
49
- function formatCodeAsIndented(node, state) {
50
- return Boolean(
51
- state.options.fences === false && node.value && // If there’s no info…
52
- !node.lang && // And there’s a non-whitespace character…
53
- /[^ \r\n]/.test(node.value) && // And the value doesn’t start or end in a blank…
54
- !/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(node.value)
55
- );
56
- }
57
- function checkFence(state) {
58
- const marker = state.options.fence || "`";
59
- if (marker !== "`" && marker !== "~") {
60
- throw new Error(
61
- "Cannot serialize code with `" + marker + "` for `options.fence`, expected `` ` `` or `~`"
62
- );
63
- }
64
- return marker;
65
- }
66
- function code(node, _, state, info) {
67
- const marker = checkFence(state);
68
- const raw = node.value || "";
69
- const suffix = marker === "`" ? "GraveAccent" : "Tilde";
70
- if (formatCodeAsIndented(node, state)) {
71
- const exit2 = state.enter("codeIndented");
72
- const value2 = state.indentLines(raw, map);
73
- exit2();
74
- return value2;
75
- }
76
- const tracker = state.createTracker(info);
77
- const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));
78
- const exit = state.enter("codeFenced");
79
- let value = tracker.move(sequence);
80
- if (node.lang) {
81
- const subexit = state.enter(`codeFencedLang${suffix}`);
82
- value += tracker.move(
83
- state.safe(node.lang, {
84
- before: value,
85
- after: " ",
86
- encode: ["`"],
87
- ...tracker.current()
88
- })
89
- );
90
- subexit();
91
- }
92
- if (node.lang && node.meta) {
93
- const subexit = state.enter(`codeFencedMeta${suffix}`);
94
- value += tracker.move(" ");
95
- value += tracker.move(
96
- state.safe(node.meta, {
97
- before: value,
98
- after: "\n",
99
- encode: ["`"],
100
- ...tracker.current()
101
- })
102
- );
103
- subexit();
104
- }
105
- value += tracker.move("\n");
106
- if (raw) {
107
- value += tracker.move(raw + "\n");
108
- }
109
- value += tracker.move(sequence);
110
- exit();
111
- return value;
112
- }
113
- function map(line, _, blank) {
114
- return (blank ? "" : " ") + line;
115
- }
116
- function checkQuote(state) {
117
- const marker = state.options.quote || '"';
118
- if (marker !== '"' && marker !== "'") {
119
- throw new Error(
120
- "Cannot serialize title with `" + marker + "` for `options.quote`, expected `\"`, or `'`"
121
- );
122
- }
123
- return marker;
124
- }
125
- function definition(node, _, state, info) {
126
- const quote = checkQuote(state);
127
- const suffix = quote === '"' ? "Quote" : "Apostrophe";
128
- const exit = state.enter("definition");
129
- let subexit = state.enter("label");
130
- const tracker = state.createTracker(info);
131
- let value = tracker.move("[");
132
- value += tracker.move(
133
- state.safe(state.associationId(node), {
134
- before: value,
135
- after: "]",
136
- ...tracker.current()
137
- })
138
- );
139
- value += tracker.move("]: ");
140
- subexit();
141
- if (
142
- // If there’s no url, or…
143
- !node.url || // If there are control characters or whitespace.
144
- /[\0- \u007F]/.test(node.url)
145
- ) {
146
- subexit = state.enter("destinationLiteral");
147
- value += tracker.move("<");
148
- value += tracker.move(
149
- state.safe(node.url, { before: value, after: ">", ...tracker.current() })
150
- );
151
- value += tracker.move(">");
152
- } else {
153
- subexit = state.enter("destinationRaw");
154
- value += tracker.move(
155
- state.safe(node.url, {
156
- before: value,
157
- after: node.title ? " " : "\n",
158
- ...tracker.current()
159
- })
160
- );
161
- }
162
- subexit();
163
- if (node.title) {
164
- subexit = state.enter(`title${suffix}`);
165
- value += tracker.move(" " + quote);
166
- value += tracker.move(
167
- state.safe(node.title, {
168
- before: value,
169
- after: quote,
170
- ...tracker.current()
171
- })
172
- );
173
- value += tracker.move(quote);
174
- subexit();
175
- }
176
- exit();
177
- return value;
178
- }
179
- function checkEmphasis(state) {
180
- const marker = state.options.emphasis || "*";
181
- if (marker !== "*" && marker !== "_") {
182
- throw new Error(
183
- "Cannot serialize emphasis with `" + marker + "` for `options.emphasis`, expected `*`, or `_`"
184
- );
185
- }
186
- return marker;
187
- }
188
- function encodeCharacterReference(code2) {
189
- return "&#x" + code2.toString(16).toUpperCase() + ";";
190
- }
191
- function encodeInfo(outside, inside, marker) {
192
- const outsideKind = classifyCharacter(outside);
193
- const insideKind = classifyCharacter(inside);
194
- if (outsideKind === void 0) {
195
- return insideKind === void 0 ? (
196
- // Letter inside:
197
- // we have to encode *both* letters for `_` as it is looser.
198
- // it already forms for `*` (and GFMs `~`).
199
- marker === "_" ? { inside: true, outside: true } : { inside: false, outside: false }
200
- ) : insideKind === 1 ? (
201
- // Whitespace inside: encode both (letter, whitespace).
202
- { inside: true, outside: true }
203
- ) : (
204
- // Punctuation inside: encode outer (letter)
205
- { inside: false, outside: true }
206
- );
207
- }
208
- if (outsideKind === 1) {
209
- return insideKind === void 0 ? (
210
- // Letter inside: already forms.
211
- { inside: false, outside: false }
212
- ) : insideKind === 1 ? (
213
- // Whitespace inside: encode both (whitespace).
214
- { inside: true, outside: true }
215
- ) : (
216
- // Punctuation inside: already forms.
217
- { inside: false, outside: false }
218
- );
219
- }
220
- return insideKind === void 0 ? (
221
- // Letter inside: already forms.
222
- { inside: false, outside: false }
223
- ) : insideKind === 1 ? (
224
- // Whitespace inside: encode inner (whitespace).
225
- { inside: true, outside: false }
226
- ) : (
227
- // Punctuation inside: already forms.
228
- { inside: false, outside: false }
229
- );
230
- }
231
- emphasis.peek = emphasisPeek;
232
- function emphasis(node, _, state, info) {
233
- const marker = checkEmphasis(state);
234
- const exit = state.enter("emphasis");
235
- const tracker = state.createTracker(info);
236
- const before = tracker.move(marker);
237
- let between = tracker.move(
238
- state.containerPhrasing(node, {
239
- after: marker,
240
- before,
241
- ...tracker.current()
242
- })
243
- );
244
- const betweenHead = between.charCodeAt(0);
245
- const open = encodeInfo(
246
- info.before.charCodeAt(info.before.length - 1),
247
- betweenHead,
248
- marker
249
- );
250
- if (open.inside) {
251
- between = encodeCharacterReference(betweenHead) + between.slice(1);
252
- }
253
- const betweenTail = between.charCodeAt(between.length - 1);
254
- const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);
255
- if (close.inside) {
256
- between = between.slice(0, -1) + encodeCharacterReference(betweenTail);
257
- }
258
- const after = tracker.move(marker);
259
- exit();
260
- state.attentionEncodeSurroundingInfo = {
261
- after: close.outside,
262
- before: open.outside
263
- };
264
- return before + between + after;
265
- }
266
- function emphasisPeek(_, _1, state) {
267
- return state.options.emphasis || "*";
268
- }
269
- function formatHeadingAsSetext(node, state) {
270
- let literalWithBreak = false;
271
- visit(node, function(node2) {
272
- if ("value" in node2 && /\r?\n|\r/.test(node2.value) || node2.type === "break") {
273
- literalWithBreak = true;
274
- return EXIT;
275
- }
276
- });
277
- return Boolean(
278
- (!node.depth || node.depth < 3) && toString(node) && (state.options.setext || literalWithBreak)
279
- );
280
- }
281
- function heading(node, _, state, info) {
282
- const rank = Math.max(Math.min(6, node.depth || 1), 1);
283
- const tracker = state.createTracker(info);
284
- if (formatHeadingAsSetext(node, state)) {
285
- const exit2 = state.enter("headingSetext");
286
- const subexit2 = state.enter("phrasing");
287
- const value2 = state.containerPhrasing(node, {
288
- ...tracker.current(),
289
- before: "\n",
290
- after: "\n"
291
- });
292
- subexit2();
293
- exit2();
294
- return value2 + "\n" + (rank === 1 ? "=" : "-").repeat(
295
- // The whole size…
296
- value2.length - // Minus the position of the character after the last EOL (or
297
- // 0 if there is none)…
298
- (Math.max(value2.lastIndexOf("\r"), value2.lastIndexOf("\n")) + 1)
299
- );
300
- }
301
- const sequence = "#".repeat(rank);
302
- const exit = state.enter("headingAtx");
303
- const subexit = state.enter("phrasing");
304
- tracker.move(sequence + " ");
305
- let value = state.containerPhrasing(node, {
306
- before: "# ",
307
- after: "\n",
308
- ...tracker.current()
309
- });
310
- if (/^[\t ]/.test(value)) {
311
- value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1);
312
- }
313
- value = value ? sequence + " " + value : sequence;
314
- if (state.options.closeAtx) {
315
- value += " " + sequence;
316
- }
317
- subexit();
318
- exit();
319
- return value;
320
- }
321
- html.peek = htmlPeek;
322
- function html(node) {
323
- return node.value || "";
324
- }
325
- function htmlPeek() {
326
- return "<";
327
- }
328
- image.peek = imagePeek;
329
- function image(node, _, state, info) {
330
- const quote = checkQuote(state);
331
- const suffix = quote === '"' ? "Quote" : "Apostrophe";
332
- const exit = state.enter("image");
333
- let subexit = state.enter("label");
334
- const tracker = state.createTracker(info);
335
- let value = tracker.move("![");
336
- value += tracker.move(
337
- state.safe(node.alt, { before: value, after: "]", ...tracker.current() })
338
- );
339
- value += tracker.move("](");
340
- subexit();
341
- if (
342
- // If there’s no url but there is a title…
343
- !node.url && node.title || // If there are control characters or whitespace.
344
- /[\0- \u007F]/.test(node.url)
345
- ) {
346
- subexit = state.enter("destinationLiteral");
347
- value += tracker.move("<");
348
- value += tracker.move(
349
- state.safe(node.url, { before: value, after: ">", ...tracker.current() })
350
- );
351
- value += tracker.move(">");
352
- } else {
353
- subexit = state.enter("destinationRaw");
354
- value += tracker.move(
355
- state.safe(node.url, {
356
- before: value,
357
- after: node.title ? " " : ")",
358
- ...tracker.current()
359
- })
360
- );
361
- }
362
- subexit();
363
- if (node.title) {
364
- subexit = state.enter(`title${suffix}`);
365
- value += tracker.move(" " + quote);
366
- value += tracker.move(
367
- state.safe(node.title, {
368
- before: value,
369
- after: quote,
370
- ...tracker.current()
371
- })
372
- );
373
- value += tracker.move(quote);
374
- subexit();
375
- }
376
- value += tracker.move(")");
377
- exit();
378
- return value;
379
- }
380
- function imagePeek() {
381
- return "!";
382
- }
383
- imageReference.peek = imageReferencePeek;
384
- function imageReference(node, _, state, info) {
385
- const type = node.referenceType;
386
- const exit = state.enter("imageReference");
387
- let subexit = state.enter("label");
388
- const tracker = state.createTracker(info);
389
- let value = tracker.move("![");
390
- const alt = state.safe(node.alt, {
391
- before: value,
392
- after: "]",
393
- ...tracker.current()
394
- });
395
- value += tracker.move(alt + "][");
396
- subexit();
397
- const stack = state.stack;
398
- state.stack = [];
399
- subexit = state.enter("reference");
400
- const reference = state.safe(state.associationId(node), {
401
- before: value,
402
- after: "]",
403
- ...tracker.current()
404
- });
405
- subexit();
406
- state.stack = stack;
407
- exit();
408
- if (type === "full" || !alt || alt !== reference) {
409
- value += tracker.move(reference + "]");
410
- } else if (type === "shortcut") {
411
- value = value.slice(0, -1);
412
- } else {
413
- value += tracker.move("]");
414
- }
415
- return value;
416
- }
417
- function imageReferencePeek() {
418
- return "!";
419
- }
420
- inlineCode.peek = inlineCodePeek;
421
- function inlineCode(node, _, state) {
422
- let value = node.value || "";
423
- let sequence = "`";
424
- let index = -1;
425
- while (new RegExp("(^|[^`])" + sequence + "([^`]|$)").test(value)) {
426
- sequence += "`";
427
- }
428
- if (/[^ \r\n]/.test(value) && (/^[ \r\n]/.test(value) && /[ \r\n]$/.test(value) || /^`|`$/.test(value))) {
429
- value = " " + value + " ";
430
- }
431
- while (++index < state.unsafe.length) {
432
- const pattern = state.unsafe[index];
433
- const expression = state.compilePattern(pattern);
434
- let match;
435
- if (!pattern.atBreak) continue;
436
- while (match = expression.exec(value)) {
437
- let position = match.index;
438
- if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {
439
- position--;
440
- }
441
- value = value.slice(0, position) + " " + value.slice(match.index + 1);
442
- }
443
- }
444
- return sequence + value + sequence;
445
- }
446
- function inlineCodePeek() {
447
- return "`";
448
- }
449
- function formatLinkAsAutolink(node, state) {
450
- const raw = toString(node);
451
- return Boolean(
452
- !state.options.resourceLink && // If there’s a url…
453
- node.url && // And there’s a no title…
454
- !node.title && // And the content of `node` is a single text node…
455
- node.children && node.children.length === 1 && node.children[0].type === "text" && // And if the url is the same as the content…
456
- (raw === node.url || "mailto:" + raw === node.url) && // And that starts w/ a protocol…
457
- /^[a-z][a-z+.-]+:/i.test(node.url) && // And that doesn’t contain ASCII control codes (character escapes and
458
- // references don’t work), space, or angle brackets…
459
- !/[\0- <>\u007F]/.test(node.url)
460
- );
461
- }
462
- link.peek = linkPeek;
463
- function link(node, _, state, info) {
464
- const quote = checkQuote(state);
465
- const suffix = quote === '"' ? "Quote" : "Apostrophe";
466
- const tracker = state.createTracker(info);
467
- let exit;
468
- let subexit;
469
- if (formatLinkAsAutolink(node, state)) {
470
- const stack = state.stack;
471
- state.stack = [];
472
- exit = state.enter("autolink");
473
- let value2 = tracker.move("<");
474
- value2 += tracker.move(
475
- state.containerPhrasing(node, {
476
- before: value2,
477
- after: ">",
478
- ...tracker.current()
479
- })
480
- );
481
- value2 += tracker.move(">");
482
- exit();
483
- state.stack = stack;
484
- return value2;
485
- }
486
- exit = state.enter("link");
487
- subexit = state.enter("label");
488
- let value = tracker.move("[");
489
- value += tracker.move(
490
- state.containerPhrasing(node, {
491
- before: value,
492
- after: "](",
493
- ...tracker.current()
494
- })
495
- );
496
- value += tracker.move("](");
497
- subexit();
498
- if (
499
- // If there’s no url but there is a title…
500
- !node.url && node.title || // If there are control characters or whitespace.
501
- /[\0- \u007F]/.test(node.url)
502
- ) {
503
- subexit = state.enter("destinationLiteral");
504
- value += tracker.move("<");
505
- value += tracker.move(
506
- state.safe(node.url, { before: value, after: ">", ...tracker.current() })
507
- );
508
- value += tracker.move(">");
509
- } else {
510
- subexit = state.enter("destinationRaw");
511
- value += tracker.move(
512
- state.safe(node.url, {
513
- before: value,
514
- after: node.title ? " " : ")",
515
- ...tracker.current()
516
- })
517
- );
518
- }
519
- subexit();
520
- if (node.title) {
521
- subexit = state.enter(`title${suffix}`);
522
- value += tracker.move(" " + quote);
523
- value += tracker.move(
524
- state.safe(node.title, {
525
- before: value,
526
- after: quote,
527
- ...tracker.current()
528
- })
529
- );
530
- value += tracker.move(quote);
531
- subexit();
532
- }
533
- value += tracker.move(")");
534
- exit();
535
- return value;
536
- }
537
- function linkPeek(node, _, state) {
538
- return formatLinkAsAutolink(node, state) ? "<" : "[";
539
- }
540
- linkReference.peek = linkReferencePeek;
541
- function linkReference(node, _, state, info) {
542
- const type = node.referenceType;
543
- const exit = state.enter("linkReference");
544
- let subexit = state.enter("label");
545
- const tracker = state.createTracker(info);
546
- let value = tracker.move("[");
547
- const text2 = state.containerPhrasing(node, {
548
- before: value,
549
- after: "]",
550
- ...tracker.current()
551
- });
552
- value += tracker.move(text2 + "][");
553
- subexit();
554
- const stack = state.stack;
555
- state.stack = [];
556
- subexit = state.enter("reference");
557
- const reference = state.safe(state.associationId(node), {
558
- before: value,
559
- after: "]",
560
- ...tracker.current()
561
- });
562
- subexit();
563
- state.stack = stack;
564
- exit();
565
- if (type === "full" || !text2 || text2 !== reference) {
566
- value += tracker.move(reference + "]");
567
- } else if (type === "shortcut") {
568
- value = value.slice(0, -1);
569
- } else {
570
- value += tracker.move("]");
571
- }
572
- return value;
573
- }
574
- function linkReferencePeek() {
575
- return "[";
576
- }
577
- function checkBullet(state) {
578
- const marker = state.options.bullet || "*";
579
- if (marker !== "*" && marker !== "+" && marker !== "-") {
580
- throw new Error(
581
- "Cannot serialize items with `" + marker + "` for `options.bullet`, expected `*`, `+`, or `-`"
582
- );
583
- }
584
- return marker;
585
- }
586
- function checkBulletOther(state) {
587
- const bullet = checkBullet(state);
588
- const bulletOther = state.options.bulletOther;
589
- if (!bulletOther) {
590
- return bullet === "*" ? "-" : "*";
591
- }
592
- if (bulletOther !== "*" && bulletOther !== "+" && bulletOther !== "-") {
593
- throw new Error(
594
- "Cannot serialize items with `" + bulletOther + "` for `options.bulletOther`, expected `*`, `+`, or `-`"
595
- );
596
- }
597
- if (bulletOther === bullet) {
598
- throw new Error(
599
- "Expected `bullet` (`" + bullet + "`) and `bulletOther` (`" + bulletOther + "`) to be different"
600
- );
601
- }
602
- return bulletOther;
603
- }
604
- function checkBulletOrdered(state) {
605
- const marker = state.options.bulletOrdered || ".";
606
- if (marker !== "." && marker !== ")") {
607
- throw new Error(
608
- "Cannot serialize items with `" + marker + "` for `options.bulletOrdered`, expected `.` or `)`"
609
- );
610
- }
611
- return marker;
612
- }
613
- function checkRule(state) {
614
- const marker = state.options.rule || "*";
615
- if (marker !== "*" && marker !== "-" && marker !== "_") {
616
- throw new Error(
617
- "Cannot serialize rules with `" + marker + "` for `options.rule`, expected `*`, `-`, or `_`"
618
- );
619
- }
620
- return marker;
621
- }
622
- function list(node, parent, state, info) {
623
- const exit = state.enter("list");
624
- const bulletCurrent = state.bulletCurrent;
625
- let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state);
626
- const bulletOther = node.ordered ? bullet === "." ? ")" : "." : checkBulletOther(state);
627
- let useDifferentMarker = parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false;
628
- if (!node.ordered) {
629
- const firstListItem = node.children ? node.children[0] : void 0;
630
- if (
631
- // Bullet could be used as a thematic break marker:
632
- (bullet === "*" || bullet === "-") && // Empty first list item:
633
- firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:
634
- state.stack[state.stack.length - 1] === "list" && state.stack[state.stack.length - 2] === "listItem" && state.stack[state.stack.length - 3] === "list" && state.stack[state.stack.length - 4] === "listItem" && // That are each the first child.
635
- state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0
636
- ) {
637
- useDifferentMarker = true;
638
- }
639
- if (checkRule(state) === bullet && firstListItem) {
640
- let index = -1;
641
- while (++index < node.children.length) {
642
- const item = node.children[index];
643
- if (item && item.type === "listItem" && item.children && item.children[0] && item.children[0].type === "thematicBreak") {
644
- useDifferentMarker = true;
645
- break;
646
- }
647
- }
648
- }
649
- }
650
- if (useDifferentMarker) {
651
- bullet = bulletOther;
652
- }
653
- state.bulletCurrent = bullet;
654
- const value = state.containerFlow(node, info);
655
- state.bulletLastUsed = bullet;
656
- state.bulletCurrent = bulletCurrent;
657
- exit();
658
- return value;
659
- }
660
- function checkListItemIndent(state) {
661
- const style = state.options.listItemIndent || "one";
662
- if (style !== "tab" && style !== "one" && style !== "mixed") {
663
- throw new Error(
664
- "Cannot serialize items with `" + style + "` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`"
665
- );
666
- }
667
- return style;
668
- }
669
- function listItem(node, parent, state, info) {
670
- const listItemIndent = checkListItemIndent(state);
671
- let bullet = state.bulletCurrent || checkBullet(state);
672
- if (parent && parent.type === "list" && parent.ordered) {
673
- bullet = (typeof parent.start === "number" && parent.start > -1 ? parent.start : 1) + (state.options.incrementListMarker === false ? 0 : parent.children.indexOf(node)) + bullet;
674
- }
675
- let size = bullet.length + 1;
676
- if (listItemIndent === "tab" || listItemIndent === "mixed" && (parent && parent.type === "list" && parent.spread || node.spread)) {
677
- size = Math.ceil(size / 4) * 4;
678
- }
679
- const tracker = state.createTracker(info);
680
- tracker.move(bullet + " ".repeat(size - bullet.length));
681
- tracker.shift(size);
682
- const exit = state.enter("listItem");
683
- const value = state.indentLines(
684
- state.containerFlow(node, tracker.current()),
685
- map2
686
- );
687
- exit();
688
- return value;
689
- function map2(line, index, blank) {
690
- if (index) {
691
- return (blank ? "" : " ".repeat(size)) + line;
692
- }
693
- return (blank ? bullet : bullet + " ".repeat(size - bullet.length)) + line;
694
- }
695
- }
696
- function paragraph(node, _, state, info) {
697
- const exit = state.enter("paragraph");
698
- const subexit = state.enter("phrasing");
699
- const value = state.containerPhrasing(node, info);
700
- subexit();
701
- exit();
702
- return value;
703
- }
704
- function root(node, _, state, info) {
705
- const hasPhrasing = node.children.some(function(d) {
706
- return phrasing(d);
707
- });
708
- const container = hasPhrasing ? state.containerPhrasing : state.containerFlow;
709
- return container.call(state, node, info);
710
- }
711
- function checkStrong(state) {
712
- const marker = state.options.strong || "*";
713
- if (marker !== "*" && marker !== "_") {
714
- throw new Error(
715
- "Cannot serialize strong with `" + marker + "` for `options.strong`, expected `*`, or `_`"
716
- );
717
- }
718
- return marker;
719
- }
720
- strong.peek = strongPeek;
721
- function strong(node, _, state, info) {
722
- const marker = checkStrong(state);
723
- const exit = state.enter("strong");
724
- const tracker = state.createTracker(info);
725
- const before = tracker.move(marker + marker);
726
- let between = tracker.move(
727
- state.containerPhrasing(node, {
728
- after: marker,
729
- before,
730
- ...tracker.current()
731
- })
732
- );
733
- const betweenHead = between.charCodeAt(0);
734
- const open = encodeInfo(
735
- info.before.charCodeAt(info.before.length - 1),
736
- betweenHead,
737
- marker
738
- );
739
- if (open.inside) {
740
- between = encodeCharacterReference(betweenHead) + between.slice(1);
741
- }
742
- const betweenTail = between.charCodeAt(between.length - 1);
743
- const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);
744
- if (close.inside) {
745
- between = between.slice(0, -1) + encodeCharacterReference(betweenTail);
746
- }
747
- const after = tracker.move(marker + marker);
748
- exit();
749
- state.attentionEncodeSurroundingInfo = {
750
- after: close.outside,
751
- before: open.outside
752
- };
753
- return before + between + after;
754
- }
755
- function strongPeek(_, _1, state) {
756
- return state.options.strong || "*";
757
- }
758
- function text(node, _, state, info) {
759
- return state.safe(node.value, info);
760
- }
761
- function checkRuleRepetition(state) {
762
- const repetition = state.options.ruleRepetition || 3;
763
- if (repetition < 3) {
764
- throw new Error(
765
- "Cannot serialize rules with repetition `" + repetition + "` for `options.ruleRepetition`, expected `3` or more"
766
- );
767
- }
768
- return repetition;
769
- }
770
- function thematicBreak(_, _1, state) {
771
- const value = (checkRule(state) + (state.options.ruleSpaces ? " " : "")).repeat(checkRuleRepetition(state));
772
- return state.options.ruleSpaces ? value.slice(0, -1) : value;
773
- }
774
- const handle = {
775
- blockquote,
776
- break: hardBreak,
777
- code,
778
- definition,
779
- emphasis,
780
- hardBreak,
781
- heading,
782
- html,
783
- image,
784
- imageReference,
785
- inlineCode,
786
- link,
787
- linkReference,
788
- list,
789
- listItem,
790
- paragraph,
791
- root,
792
- strong,
793
- text,
794
- thematicBreak
795
- };
796
- export {
797
- handle as h
798
- };