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,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
- };