@kerebron/extension-codejar 0.4.5 → 0.4.6

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 (248) hide show
  1. package/esm/{extension-codejar/src/CodeJar.d.ts → CodeJar.d.ts} +1 -1
  2. package/esm/CodeJar.d.ts.map +1 -0
  3. package/esm/{extension-codejar/src/CodeJar.js → CodeJar.js} +1 -1
  4. package/esm/Decorator.d.ts.map +1 -0
  5. package/esm/{extension-codejar/src/ExtensionCodeJar.d.ts → ExtensionCodeJar.d.ts} +1 -1
  6. package/esm/ExtensionCodeJar.d.ts.map +1 -0
  7. package/esm/{extension-codejar/src/ExtensionCodeJar.js → ExtensionCodeJar.js} +2 -2
  8. package/esm/{extension-codejar/src/NodeCodeJar.d.ts → NodeCodeJar.d.ts} +3 -3
  9. package/esm/NodeCodeJar.d.ts.map +1 -0
  10. package/esm/{extension-codejar/src/NodeCodeJar.js → NodeCodeJar.js} +3 -3
  11. package/esm/{extension-codejar/src/TreeSitterHighlighter.d.ts → TreeSitterHighlighter.d.ts} +1 -1
  12. package/esm/TreeSitterHighlighter.d.ts.map +1 -0
  13. package/esm/{extension-codejar/src/TreeSitterHighlighter.js → TreeSitterHighlighter.js} +3 -8
  14. package/esm/{extension-codejar/src/codeJarBlockNodeView.d.ts → codeJarBlockNodeView.d.ts} +1 -1
  15. package/esm/codeJarBlockNodeView.d.ts.map +1 -0
  16. package/esm/{extension-codejar/src/codeJarBlockNodeView.js → codeJarBlockNodeView.js} +2 -2
  17. package/esm/codeJarLineNumbers.d.ts.map +1 -0
  18. package/esm/mod.d.ts +2 -0
  19. package/esm/mod.d.ts.map +1 -0
  20. package/esm/{extension-codejar/src/mod.js → mod.js} +0 -1
  21. package/esm/utils.d.ts.map +1 -0
  22. package/package.json +10 -6
  23. package/esm/_dnt.polyfills.d.ts +0 -101
  24. package/esm/_dnt.polyfills.d.ts.map +0 -1
  25. package/esm/_dnt.polyfills.js +0 -127
  26. package/esm/editor/src/CoreEditor.d.ts +0 -40
  27. package/esm/editor/src/CoreEditor.d.ts.map +0 -1
  28. package/esm/editor/src/CoreEditor.js +0 -252
  29. package/esm/editor/src/DummyEditorView.d.ts +0 -60
  30. package/esm/editor/src/DummyEditorView.d.ts.map +0 -1
  31. package/esm/editor/src/DummyEditorView.js +0 -277
  32. package/esm/editor/src/Extension.d.ts +0 -31
  33. package/esm/editor/src/Extension.d.ts.map +0 -1
  34. package/esm/editor/src/Extension.js +0 -53
  35. package/esm/editor/src/ExtensionManager.d.ts +0 -32
  36. package/esm/editor/src/ExtensionManager.d.ts.map +0 -1
  37. package/esm/editor/src/ExtensionManager.js +0 -260
  38. package/esm/editor/src/Mark.d.ts +0 -23
  39. package/esm/editor/src/Mark.d.ts.map +0 -1
  40. package/esm/editor/src/Mark.js +0 -51
  41. package/esm/editor/src/Node.d.ts +0 -32
  42. package/esm/editor/src/Node.d.ts.map +0 -1
  43. package/esm/editor/src/Node.js +0 -60
  44. package/esm/editor/src/commands/CommandManager.d.ts +0 -23
  45. package/esm/editor/src/commands/CommandManager.d.ts.map +0 -1
  46. package/esm/editor/src/commands/CommandManager.js +0 -118
  47. package/esm/editor/src/commands/baseCommandFactories.d.ts +0 -3
  48. package/esm/editor/src/commands/baseCommandFactories.d.ts.map +0 -1
  49. package/esm/editor/src/commands/baseCommandFactories.js +0 -836
  50. package/esm/editor/src/commands/createChainableState.d.ts +0 -3
  51. package/esm/editor/src/commands/createChainableState.d.ts.map +0 -1
  52. package/esm/editor/src/commands/createChainableState.js +0 -29
  53. package/esm/editor/src/commands/keyCommandFactories.d.ts +0 -3
  54. package/esm/editor/src/commands/keyCommandFactories.d.ts.map +0 -1
  55. package/esm/editor/src/commands/keyCommandFactories.js +0 -10
  56. package/esm/editor/src/commands/mod.d.ts +0 -7
  57. package/esm/editor/src/commands/mod.d.ts.map +0 -1
  58. package/esm/editor/src/commands/mod.js +0 -76
  59. package/esm/editor/src/commands/replaceCommandFactories.d.ts +0 -3
  60. package/esm/editor/src/commands/replaceCommandFactories.d.ts.map +0 -1
  61. package/esm/editor/src/commands/replaceCommandFactories.js +0 -94
  62. package/esm/editor/src/commands/types.d.ts +0 -18
  63. package/esm/editor/src/commands/types.d.ts.map +0 -1
  64. package/esm/editor/src/commands/types.js +0 -1
  65. package/esm/editor/src/mod.d.ts +0 -9
  66. package/esm/editor/src/mod.d.ts.map +0 -1
  67. package/esm/editor/src/mod.js +0 -8
  68. package/esm/editor/src/nodeToTreeString.d.ts +0 -10
  69. package/esm/editor/src/nodeToTreeString.d.ts.map +0 -1
  70. package/esm/editor/src/nodeToTreeString.js +0 -74
  71. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts +0 -6
  72. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts.map +0 -1
  73. package/esm/editor/src/plugins/TrackSelecionPlugin.js +0 -24
  74. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts +0 -23
  75. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts.map +0 -1
  76. package/esm/editor/src/plugins/input-rules/InputRulesPlugin.js +0 -163
  77. package/esm/editor/src/plugins/input-rules/mod.d.ts +0 -3
  78. package/esm/editor/src/plugins/input-rules/mod.d.ts.map +0 -1
  79. package/esm/editor/src/plugins/input-rules/mod.js +0 -2
  80. package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts +0 -5
  81. package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts.map +0 -1
  82. package/esm/editor/src/plugins/input-rules/rulebuilders.js +0 -50
  83. package/esm/editor/src/plugins/keymap/keymap.d.ts +0 -11
  84. package/esm/editor/src/plugins/keymap/keymap.d.ts.map +0 -1
  85. package/esm/editor/src/plugins/keymap/keymap.js +0 -125
  86. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts +0 -4
  87. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts.map +0 -1
  88. package/esm/editor/src/plugins/keymap/w3c-keyname.js +0 -124
  89. package/esm/editor/src/types.d.ts +0 -52
  90. package/esm/editor/src/types.d.ts.map +0 -1
  91. package/esm/editor/src/types.js +0 -1
  92. package/esm/editor/src/ui.d.ts +0 -15
  93. package/esm/editor/src/ui.d.ts.map +0 -1
  94. package/esm/editor/src/ui.js +0 -16
  95. package/esm/editor/src/utilities/SmartOutput.d.ts +0 -41
  96. package/esm/editor/src/utilities/SmartOutput.d.ts.map +0 -1
  97. package/esm/editor/src/utilities/SmartOutput.js +0 -228
  98. package/esm/editor/src/utilities/createNodeFromContent.d.ts +0 -9
  99. package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +0 -1
  100. package/esm/editor/src/utilities/createNodeFromContent.js +0 -32
  101. package/esm/editor/src/utilities/getHtmlAttributes.d.ts +0 -9
  102. package/esm/editor/src/utilities/getHtmlAttributes.d.ts.map +0 -1
  103. package/esm/editor/src/utilities/getHtmlAttributes.js +0 -47
  104. package/esm/editor/src/utilities/getShadowRoot.d.ts +0 -2
  105. package/esm/editor/src/utilities/getShadowRoot.d.ts.map +0 -1
  106. package/esm/editor/src/utilities/getShadowRoot.js +0 -16
  107. package/esm/editor/src/utilities/mod.d.ts +0 -6
  108. package/esm/editor/src/utilities/mod.d.ts.map +0 -1
  109. package/esm/editor/src/utilities/mod.js +0 -5
  110. package/esm/editor/src/utilities/toRawTextResult.d.ts +0 -3
  111. package/esm/editor/src/utilities/toRawTextResult.d.ts.map +0 -1
  112. package/esm/editor/src/utilities/toRawTextResult.js +0 -21
  113. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts +0 -8
  114. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts.map +0 -1
  115. package/esm/extension-autocomplete/src/AutocompletePlugin.js +0 -232
  116. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts +0 -17
  117. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts.map +0 -1
  118. package/esm/extension-autocomplete/src/DefaultRenderer.js +0 -137
  119. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts +0 -26
  120. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts.map +0 -1
  121. package/esm/extension-autocomplete/src/ExtensionAutocomplete.js +0 -30
  122. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts +0 -11
  123. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts.map +0 -1
  124. package/esm/extension-autocomplete/src/createDefaultMatcher.js +0 -58
  125. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts +0 -4
  126. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts.map +0 -1
  127. package/esm/extension-autocomplete/src/createRegexMatcher.js +0 -50
  128. package/esm/extension-autocomplete/src/mod.d.ts +0 -3
  129. package/esm/extension-autocomplete/src/mod.d.ts.map +0 -1
  130. package/esm/extension-autocomplete/src/mod.js +0 -2
  131. package/esm/extension-autocomplete/src/types.d.ts +0 -60
  132. package/esm/extension-autocomplete/src/types.d.ts.map +0 -1
  133. package/esm/extension-autocomplete/src/types.js +0 -1
  134. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts +0 -15
  135. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts.map +0 -1
  136. package/esm/extension-basic-editor/src/ExtensionHtml.js +0 -108
  137. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts +0 -9
  138. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts.map +0 -1
  139. package/esm/extension-basic-editor/src/NodeCodeBlock.js +0 -58
  140. package/esm/extension-codejar/src/CodeJar.d.ts.map +0 -1
  141. package/esm/extension-codejar/src/Decorator.d.ts.map +0 -1
  142. package/esm/extension-codejar/src/ExtensionCodeJar.d.ts.map +0 -1
  143. package/esm/extension-codejar/src/NodeCodeJar.d.ts.map +0 -1
  144. package/esm/extension-codejar/src/TreeSitterHighlighter.d.ts.map +0 -1
  145. package/esm/extension-codejar/src/codeJarBlockNodeView.d.ts.map +0 -1
  146. package/esm/extension-codejar/src/codeJarLineNumbers.d.ts.map +0 -1
  147. package/esm/extension-codejar/src/mod.d.ts +0 -3
  148. package/esm/extension-codejar/src/mod.d.ts.map +0 -1
  149. package/esm/extension-codejar/src/utils.d.ts.map +0 -1
  150. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts +0 -32
  151. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts.map +0 -1
  152. package/esm/extension-lsp/src/DiagnosticPlugin.js +0 -131
  153. package/esm/extension-lsp/src/ExtensionLsp.d.ts +0 -25
  154. package/esm/extension-lsp/src/ExtensionLsp.d.ts.map +0 -1
  155. package/esm/extension-lsp/src/ExtensionLsp.js +0 -126
  156. package/esm/extension-lsp/src/LSPClient.d.ts +0 -56
  157. package/esm/extension-lsp/src/LSPClient.d.ts.map +0 -1
  158. package/esm/extension-lsp/src/LSPClient.js +0 -449
  159. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts +0 -8
  160. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts.map +0 -1
  161. package/esm/extension-lsp/src/computeIncrementalChanges.js +0 -82
  162. package/esm/extension-lsp/src/createLspAutocomplete.d.ts +0 -23
  163. package/esm/extension-lsp/src/createLspAutocomplete.d.ts.map +0 -1
  164. package/esm/extension-lsp/src/createLspAutocomplete.js +0 -68
  165. package/esm/extension-lsp/src/mod.d.ts +0 -4
  166. package/esm/extension-lsp/src/mod.d.ts.map +0 -1
  167. package/esm/extension-lsp/src/mod.js +0 -3
  168. package/esm/extension-lsp/src/workspace.d.ts +0 -62
  169. package/esm/extension-lsp/src/workspace.d.ts.map +0 -1
  170. package/esm/extension-lsp/src/workspace.js +0 -168
  171. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts +0 -36
  172. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts.map +0 -1
  173. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.js +0 -240
  174. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts +0 -26
  175. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts.map +0 -1
  176. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.js +0 -115
  177. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts +0 -22
  178. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts.map +0 -1
  179. package/esm/extension-markdown/src/ExtensionMarkdown.js +0 -48
  180. package/esm/extension-markdown/src/MarkdownParser.d.ts +0 -61
  181. package/esm/extension-markdown/src/MarkdownParser.d.ts.map +0 -1
  182. package/esm/extension-markdown/src/MarkdownParser.js +0 -249
  183. package/esm/extension-markdown/src/MarkdownSerializer.d.ts +0 -42
  184. package/esm/extension-markdown/src/MarkdownSerializer.d.ts.map +0 -1
  185. package/esm/extension-markdown/src/MarkdownSerializer.js +0 -325
  186. package/esm/extension-markdown/src/PositionMapper.d.ts +0 -15
  187. package/esm/extension-markdown/src/PositionMapper.d.ts.map +0 -1
  188. package/esm/extension-markdown/src/PositionMapper.js +0 -100
  189. package/esm/extension-markdown/src/TokenSource.d.ts +0 -11
  190. package/esm/extension-markdown/src/TokenSource.d.ts.map +0 -1
  191. package/esm/extension-markdown/src/TokenSource.js +0 -39
  192. package/esm/extension-markdown/src/mdToPmConverter.d.ts +0 -5
  193. package/esm/extension-markdown/src/mdToPmConverter.d.ts.map +0 -1
  194. package/esm/extension-markdown/src/mdToPmConverter.js +0 -111
  195. package/esm/extension-markdown/src/pmToMdConverter.d.ts +0 -16
  196. package/esm/extension-markdown/src/pmToMdConverter.d.ts.map +0 -1
  197. package/esm/extension-markdown/src/pmToMdConverter.js +0 -433
  198. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts +0 -4
  199. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts.map +0 -1
  200. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.js +0 -151
  201. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts +0 -3
  202. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts.map +0 -1
  203. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.js +0 -34
  204. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts +0 -6
  205. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts.map +0 -1
  206. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.js +0 -380
  207. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts +0 -3
  208. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts.map +0 -1
  209. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.js +0 -323
  210. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts +0 -9
  211. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts.map +0 -1
  212. package/esm/extension-markdown/src/token_handlers/table_token_handlers.js +0 -308
  213. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts +0 -5
  214. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts.map +0 -1
  215. package/esm/extension-markdown/src/treeSitterTokenizer.js +0 -769
  216. package/esm/extension-markdown/src/types.d.ts +0 -28
  217. package/esm/extension-markdown/src/types.d.ts.map +0 -1
  218. package/esm/extension-markdown/src/types.js +0 -131
  219. package/esm/extension-markdown/src/utils.d.ts +0 -8
  220. package/esm/extension-markdown/src/utils.d.ts.map +0 -1
  221. package/esm/extension-markdown/src/utils.js +0 -86
  222. package/esm/tree-sitter-shim/src/main.d.ts +0 -15
  223. package/esm/tree-sitter-shim/src/main.d.ts.map +0 -1
  224. package/esm/tree-sitter-shim/src/main.js +0 -25
  225. package/esm/tree-sitter-shim/src/tree_sitter/language.d.ts +0 -7
  226. package/esm/tree-sitter-shim/src/tree_sitter/language.d.ts.map +0 -1
  227. package/esm/tree-sitter-shim/src/tree_sitter/language.js +0 -5
  228. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts +0 -6
  229. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts.map +0 -1
  230. package/esm/tree-sitter-shim/src/tree_sitter/node.js +0 -1
  231. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts +0 -7
  232. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts.map +0 -1
  233. package/esm/tree-sitter-shim/src/tree_sitter/parser.js +0 -5
  234. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts +0 -6
  235. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts.map +0 -1
  236. package/esm/tree-sitter-shim/src/tree_sitter/tree.js +0 -1
  237. package/esm/wasm/src/mod.d.ts +0 -12
  238. package/esm/wasm/src/mod.d.ts.map +0 -1
  239. package/esm/wasm/src/mod.js +0 -48
  240. package/esm/wasm/wasm.d.ts +0 -138
  241. package/esm/wasm/wasm.d.ts.map +0 -1
  242. package/esm/wasm/wasm.js +0 -120
  243. /package/esm/{extension-codejar/src/Decorator.d.ts → Decorator.d.ts} +0 -0
  244. /package/esm/{extension-codejar/src/Decorator.js → Decorator.js} +0 -0
  245. /package/esm/{extension-codejar/src/codeJarLineNumbers.d.ts → codeJarLineNumbers.d.ts} +0 -0
  246. /package/esm/{extension-codejar/src/codeJarLineNumbers.js → codeJarLineNumbers.js} +0 -0
  247. /package/esm/{extension-codejar/src/utils.d.ts → utils.d.ts} +0 -0
  248. /package/esm/{extension-codejar/src/utils.js → utils.js} +0 -0
@@ -1,769 +0,0 @@
1
- import { createParser } from '../../tree-sitter-shim/src/main.js';
2
- import { NESTING_CLOSING, NESTING_OPENING, NESTING_SELF_CLOSING, Token, } from './types.js';
3
- import { fetchWasm, getLangTreeSitter } from '../../wasm/src/mod.js';
4
- function treeToTokens(tree, inlineParser) {
5
- const retVal = [];
6
- let blockLevel = 0;
7
- const pushInlineNode = (someInlineToken, debug) => {
8
- const lastBlockToken = retVal[retVal.length - 1];
9
- if (lastBlockToken?.type === 'inline') {
10
- if (!lastBlockToken.children) {
11
- lastBlockToken.children = [];
12
- }
13
- lastBlockToken.children.push(someInlineToken);
14
- lastBlockToken.content = someInlineToken.content;
15
- return;
16
- }
17
- const blockToken = new Token('inline', '', NESTING_SELF_CLOSING);
18
- blockToken.info = debug;
19
- blockToken.level = blockLevel;
20
- blockToken.children = [someInlineToken];
21
- blockToken.content = blockToken.children
22
- .map((c) => c.content || '').join('');
23
- retVal.push(blockToken);
24
- };
25
- const walkInline = (children, startPosition = { row: 0, column: 0 }) => {
26
- for (const node of children) {
27
- const map = [
28
- startPosition.row + node.startPosition?.row,
29
- startPosition.row + node.endPosition?.row,
30
- startPosition.column + node.startPosition?.column,
31
- (+node.endPosition.row === +node.startPosition.row
32
- ? startPosition.column
33
- : 0) + node.endPosition?.column,
34
- ];
35
- if (node.type.length === 1) { // single letter type is text
36
- const token = new Token('text', '', NESTING_SELF_CLOSING);
37
- token.map = map;
38
- token.meta = 'noEscText';
39
- token.content = node.text ?? '';
40
- pushInlineNode(token, 'walkInline');
41
- continue;
42
- }
43
- switch (node.type) {
44
- case 'block_continuation':
45
- case 'emphasis_delimiter':
46
- case 'code_span_delimiter':
47
- break;
48
- case 'text':
49
- {
50
- const token = new Token('text', '', NESTING_SELF_CLOSING);
51
- token.map = map;
52
- token.meta = 'noEscText';
53
- token.content = node.text ?? '';
54
- pushInlineNode(token, 'text');
55
- break;
56
- }
57
- break;
58
- case 'latex_block':
59
- {
60
- const delimiter = node.children
61
- .find((c) => c.type === 'latex_span_delimiter');
62
- const content = node.children
63
- .filter((c) => c.type !== 'latex_span_delimiter')
64
- .map((c) => c.text)
65
- .join('');
66
- if (delimiter?.text === '$$') {
67
- const token = new Token('fence', 'pre', NESTING_SELF_CLOSING);
68
- token.level = blockLevel;
69
- token.markup = '$$';
70
- token.info = 'latex';
71
- token.content = content.trim();
72
- retVal.push(token);
73
- }
74
- else {
75
- const token = new Token('math', '', NESTING_SELF_CLOSING);
76
- token.map = map;
77
- token.meta = 'noEscText';
78
- token.content = content;
79
- pushInlineNode(token, 'latex_block');
80
- }
81
- }
82
- break;
83
- case 'whitespace':
84
- if (node.text === '\n') {
85
- const token = new Token('hardbreak', 'br', NESTING_SELF_CLOSING);
86
- token.map = map;
87
- token.content = node.text ?? '';
88
- pushInlineNode(token, 'whitespace \n');
89
- break;
90
- }
91
- if (node.text && node.text.match(/^\s+$/)) {
92
- const token = new Token('text', 'br', NESTING_SELF_CLOSING);
93
- token.map = map;
94
- token.meta = 'noEscText';
95
- token.content = node.text ?? '';
96
- pushInlineNode(token, 'whitespace space');
97
- break;
98
- }
99
- if (node.text.trim().length > 0) {
100
- const token = new Token('text', '', NESTING_SELF_CLOSING);
101
- token.map = map;
102
- token.meta = 'noEscText';
103
- token.content = node.text ?? '';
104
- pushInlineNode(token, 'whitespace other');
105
- break;
106
- }
107
- break;
108
- case 'shortcut_link':
109
- {
110
- const tokenName = 'link';
111
- const tagName = 'a';
112
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
113
- const destination = node.children
114
- .find((c) => c.type === 'link_destination');
115
- openToken.attrSet('href', destination?.text || '');
116
- const title = node.children
117
- .find((c) => c.type === 'link_title');
118
- if (title) {
119
- openToken.attrSet('title', title.text || '');
120
- }
121
- pushInlineNode(openToken, 'shortcut_link');
122
- node.children
123
- .filter((c) => c.type === 'link_text')
124
- .forEach((c) => {
125
- const token = new Token('text', '', NESTING_SELF_CLOSING);
126
- token.map = map;
127
- token.meta = 'noEscText';
128
- token.content = c.text ?? '';
129
- pushInlineNode(token, 'link_text');
130
- });
131
- // walkInline(node.children);
132
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
133
- pushInlineNode(closeToken, '/shortcut_link');
134
- }
135
- break;
136
- case 'inline_link':
137
- {
138
- const tokenName = 'link';
139
- const tagName = 'a';
140
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
141
- const destination = node.children
142
- .find((c) => c.type === 'link_destination');
143
- openToken.attrSet('href', destination?.text || '');
144
- const title = node.children
145
- .find((c) => c.type === 'link_title');
146
- if (title) {
147
- openToken.attrSet('title', title.text || '');
148
- }
149
- pushInlineNode(openToken, 'inline_link');
150
- node.children
151
- .filter((c) => c.type === 'link_text')
152
- .forEach((c) => {
153
- const token = new Token('text', '', NESTING_SELF_CLOSING);
154
- token.map = map;
155
- token.meta = 'noEscText';
156
- token.content = c.text ?? '';
157
- pushInlineNode(token, 'inline_link_txt');
158
- });
159
- // walkInline(node.children);
160
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
161
- pushInlineNode(closeToken, '/inline_link');
162
- }
163
- break;
164
- case 'image':
165
- {
166
- const tokenName = 'image';
167
- const tagName = 'img';
168
- const token = new Token(tokenName, tagName, NESTING_SELF_CLOSING);
169
- const image_description = node.children
170
- .find((c) => c.type === 'image_description');
171
- token.attrSet('alt', image_description?.text || '');
172
- const destination = node.children
173
- .find((c) => c.type === 'link_destination');
174
- token.attrSet('src', destination?.text || '');
175
- const title = node.children
176
- .find((c) => c.type === 'link_title');
177
- if (title) {
178
- token.attrSet('title', title.text || '');
179
- }
180
- pushInlineNode(token, 'image');
181
- }
182
- break;
183
- case 'strong_emphasis':
184
- {
185
- const delimiter = node.children
186
- .find((c) => c.type === 'emphasis_delimiter');
187
- const tokenName = delimiter?.text === '_' ? 'underline' : 'strong';
188
- const tagName = delimiter?.text === '_' ? 'u' : 'strong';
189
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
190
- if (delimiter?.text === '_') {
191
- openToken.markup = '__';
192
- }
193
- pushInlineNode(openToken, 'strongem');
194
- walkInline(node.children);
195
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
196
- if (delimiter?.text === '_') {
197
- closeToken.markup = '__';
198
- }
199
- pushInlineNode(closeToken, '/strongem');
200
- }
201
- break;
202
- case 'emphasis':
203
- {
204
- const delimiter = node.children
205
- .find((c) => c.type === 'emphasis_delimiter');
206
- const children = node.children
207
- .filter((c) => c.type !== 'emphasis_delimiter');
208
- const tokenName = delimiter?.text === '_' ? 'underline' : 'em';
209
- const tagName = delimiter?.text === '_' ? 'u' : 'em';
210
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
211
- pushInlineNode(openToken, 'em');
212
- walkInline(children);
213
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
214
- pushInlineNode(closeToken, '/em');
215
- }
216
- break;
217
- case 'strikethrough':
218
- {
219
- const tokenName = 'strike';
220
- const tagName = 'strike';
221
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
222
- pushInlineNode(openToken, 's');
223
- walkInline(node.children);
224
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
225
- pushInlineNode(closeToken, '/s');
226
- }
227
- break;
228
- case 'code_span':
229
- {
230
- const tokenName = 'code';
231
- const tagName = 'code';
232
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
233
- pushInlineNode(openToken, 'code');
234
- walkInline(node.children);
235
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
236
- pushInlineNode(closeToken, '/code');
237
- }
238
- break;
239
- case 'html_tag':
240
- {
241
- const tokenName = 'html_block';
242
- const tagName = '';
243
- const token = new Token(tokenName, tagName, NESTING_SELF_CLOSING);
244
- token.content = node.text;
245
- pushInlineNode(token, 'html_block');
246
- }
247
- break;
248
- default:
249
- console.debug('inline_node', node);
250
- throw new Error(`Unhandled inline node type: ${node.type}`);
251
- }
252
- }
253
- };
254
- const walkRecursive = (node, ctx = { tableRowType: 'tbody', cellNo: 0, cellAlign: [] }) => {
255
- if (!node) {
256
- return;
257
- }
258
- if (node.type === 'inline') {
259
- const inlineText = node.text;
260
- if (!inlineText) {
261
- throw new Error('!inlineText');
262
- }
263
- if (node.children.length > 0) {
264
- walkInline(node.children, node.startPosition);
265
- }
266
- else {
267
- const inlineTree = inlineParser.parse(inlineText);
268
- if (!inlineTree) {
269
- throw new Error('!inlineTree');
270
- }
271
- walkInline(inlineTree?.rootNode.children, node.startPosition);
272
- }
273
- return;
274
- }
275
- if (!node.children || node.children.length === 0) {
276
- if (node.type === 'text' || node.type.length === 1) {
277
- const token = new Token('text', '', NESTING_SELF_CLOSING);
278
- token.map = [
279
- +node.startPosition?.row,
280
- +node.endPosition?.row,
281
- +node.startPosition?.column,
282
- +node.endPosition?.column,
283
- ];
284
- token.meta = 'noEscText';
285
- token.content = node.text ?? '';
286
- pushInlineNode(token, 'txt2');
287
- return;
288
- }
289
- if (node.type === 'whitespace') {
290
- if (blockLevel === 0) {
291
- return;
292
- }
293
- if (node.text.match(/^\n+$/)) {
294
- // const token = new Token('hardbreak', 'br', NESTING_SELF_CLOSING);
295
- // token.map = [ +node.startPosition?.row, +node.endPosition?.row, +node.startPosition?.column, +node.endPosition?.column ];
296
- // token.content = node.text ?? '';
297
- // retVal.push(token);
298
- return;
299
- }
300
- if (node.text && node.text.match(/^\s+$/)) {
301
- const token = new Token('text', 'br', NESTING_SELF_CLOSING);
302
- token.map = [
303
- +node.startPosition?.row,
304
- +node.endPosition?.row,
305
- +node.startPosition?.column,
306
- +node.endPosition?.column,
307
- ];
308
- token.meta = 'noEscText';
309
- token.content = node.text ?? '';
310
- pushInlineNode(token, 'txt3');
311
- return;
312
- }
313
- if (node.text.trim().length > 0) {
314
- const token = new Token('text', '', NESTING_SELF_CLOSING);
315
- token.map = [
316
- +node.startPosition?.row,
317
- +node.endPosition?.row,
318
- +node.startPosition?.column,
319
- +node.endPosition?.column,
320
- ];
321
- token.meta = 'noEscText';
322
- token.content = node.text ?? '';
323
- pushInlineNode(token, 'txt4');
324
- return;
325
- }
326
- }
327
- }
328
- switch (node.type) {
329
- case 'block_continuation':
330
- break;
331
- case 'document':
332
- case 'section':
333
- node.children?.forEach((child) => walkRecursive(child, ctx));
334
- break;
335
- case 'thematic_break':
336
- {
337
- const token = new Token('hr', 'hr', NESTING_SELF_CLOSING);
338
- token.level = blockLevel;
339
- token.map = [
340
- +node.startPosition?.row,
341
- +node.endPosition?.row,
342
- +node.startPosition?.column,
343
- +node.endPosition?.column,
344
- ];
345
- token.markup = node.text;
346
- retVal.push(token);
347
- }
348
- break;
349
- case 'setext_heading':
350
- // case 'setext_h2_underline':
351
- // TODO
352
- // TODO
353
- {
354
- const tokenName = 'heading';
355
- const underline = node.children.find((child) => child.type.startsWith('setext_') &&
356
- child.type.endsWith('_underline'));
357
- // const marker = node.children.find((child) =>
358
- // child.type.startsWith('atx_') && child.type.endsWith('_marker')
359
- // );
360
- const tagName = underline?.type.substring('setext_'.length, 'setext_'.length + 2) ||
361
- 'h1';
362
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
363
- openToken.level = blockLevel;
364
- openToken.markup = underline?.text || '#';
365
- retVal.push(openToken);
366
- const children = node.children.filter((c) => !c.type.startsWith('setext_'));
367
- blockLevel++;
368
- children.forEach((child) => walkRecursive(child, ctx));
369
- blockLevel--;
370
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
371
- closeToken.level = blockLevel;
372
- closeToken.markup = underline?.text || '';
373
- retVal.push(closeToken);
374
- }
375
- break;
376
- case 'atx_heading':
377
- {
378
- const tokenName = 'heading';
379
- const marker = node.children.find((child) => child.type.startsWith('atx_') && child.type.endsWith('_marker'));
380
- const tagName = marker?.type.substring('atx_'.length, 'atx_'.length + 2) || 'h1';
381
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
382
- openToken.level = blockLevel;
383
- openToken.markup = marker?.text || '#';
384
- retVal.push(openToken);
385
- const children = [...node.children];
386
- if (children.length > 0 && children[0].type.endsWith('_marker')) {
387
- children.splice(0, 1);
388
- }
389
- if (children.length > 0 && children[0].type === 'whitespace') { // ' '
390
- children.splice(0, 1);
391
- }
392
- if (children.length > 0 &&
393
- children[children.length - 1].type === 'whitespace') { // /n
394
- children.splice(children.length - 1, 1);
395
- }
396
- blockLevel++;
397
- children.forEach((child) => walkRecursive(child, ctx));
398
- blockLevel--;
399
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
400
- closeToken.level = blockLevel;
401
- retVal.push(closeToken);
402
- }
403
- break;
404
- case 'minus_metadata':
405
- {
406
- const tokenName = 'frontmatter';
407
- const tagName = 'frontmatter';
408
- const token = new Token(tokenName, tagName, NESTING_SELF_CLOSING);
409
- token.level = blockLevel;
410
- token.content = node.text || '';
411
- retVal.push(token);
412
- }
413
- break;
414
- case 'fenced_code_block':
415
- {
416
- const tokenName = 'fence';
417
- const tagName = 'pre';
418
- const info = node.children.find((child) => child.type === 'info_string');
419
- const token = new Token(tokenName, tagName, NESTING_SELF_CLOSING);
420
- token.level = blockLevel;
421
- token.markup = '```';
422
- if (info) {
423
- token.attrSet('lang', info.text);
424
- }
425
- const children = [...node.children
426
- .filter((item) => item.type === 'code_fence_content')];
427
- const content = children.map((item) => item.children
428
- .map((inline) => inline.text || '')
429
- .join('')).join('');
430
- token.content = content;
431
- retVal.push(token);
432
- }
433
- break;
434
- case 'block_quote':
435
- {
436
- const tokenName = 'blockquote';
437
- const tagName = 'blockquote';
438
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
439
- openToken.level = blockLevel;
440
- retVal.push(openToken);
441
- blockLevel++;
442
- node.children
443
- ?.filter((child) => !['block_quote_marker'].includes(child.type))
444
- .forEach((child) => walkRecursive(child, ctx));
445
- blockLevel--;
446
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
447
- closeToken.level = blockLevel;
448
- retVal.push(closeToken);
449
- }
450
- break;
451
- case 'indented_code_block':
452
- {
453
- const tokenName = 'code_block';
454
- const tagName = 'code_block';
455
- const token = new Token(tokenName, tagName, NESTING_SELF_CLOSING);
456
- token.level = blockLevel;
457
- let indent = 0;
458
- if ('indent' in node) {
459
- indent = node.indent.length;
460
- }
461
- const lines = node.text.split('\n');
462
- for (const line of lines) {
463
- if (line.trim().length === 0) {
464
- continue;
465
- }
466
- const m = line.match(/^ +/);
467
- if (!m) {
468
- indent = 0;
469
- }
470
- else {
471
- if (indent > m[0].length) {
472
- indent = m[0].length;
473
- }
474
- }
475
- }
476
- const content = lines
477
- .map((line) => line.substring(indent))
478
- .join('\n');
479
- token.attrSet('indent', '' + indent);
480
- token.content = content;
481
- retVal.push(token);
482
- }
483
- break;
484
- case 'paragraph':
485
- {
486
- const tokenName = 'paragraph';
487
- const tagName = 'p';
488
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
489
- openToken.level = blockLevel;
490
- retVal.push(openToken);
491
- blockLevel++;
492
- node.children?.forEach((child) => walkRecursive(child, ctx));
493
- blockLevel--;
494
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
495
- closeToken.level = blockLevel;
496
- retVal.push(closeToken);
497
- }
498
- break;
499
- case 'pipe_table_cell':
500
- {
501
- const tokenName = ctx.tableRowType === 'thead' ? 'th' : 'td';
502
- const tagName = ctx.tableRowType === 'thead' ? 'th' : 'td';
503
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
504
- openToken.attrSet('align', ctx.cellAlign[ctx.cellNo] || 'left');
505
- openToken.level = blockLevel;
506
- retVal.push(openToken);
507
- blockLevel++;
508
- {
509
- const tokenName = 'paragraph';
510
- const tagName = 'p';
511
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
512
- openToken.level = blockLevel;
513
- retVal.push(openToken);
514
- const children = [...node.children];
515
- while (children.length > 0) {
516
- if (children[children.length - 1].type === 'whitespace') {
517
- children.splice(children.length - 1, 1);
518
- }
519
- else {
520
- break;
521
- }
522
- }
523
- if (children.length > 0) {
524
- children
525
- .forEach((child) => walkRecursive(child, ctx));
526
- }
527
- else {
528
- const map = [
529
- node.startPosition?.row,
530
- node.endPosition?.row,
531
- node.startPosition?.column,
532
- node.endPosition?.column,
533
- ];
534
- const token = new Token('text', '', NESTING_SELF_CLOSING);
535
- token.map = map;
536
- token.meta = 'noEscText';
537
- token.content = node.text?.replace(/\s+$/, '') ?? '';
538
- pushInlineNode(token, 'txt5');
539
- }
540
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
541
- closeToken.level = blockLevel;
542
- retVal.push(closeToken);
543
- }
544
- blockLevel--;
545
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
546
- closeToken.level = blockLevel;
547
- retVal.push(closeToken);
548
- ctx.cellNo++;
549
- }
550
- break;
551
- case 'pipe_table_header':
552
- case 'pipe_table_row':
553
- {
554
- const tokenName = 'tr';
555
- const tagName = 'tr';
556
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
557
- openToken.level = blockLevel;
558
- retVal.push(openToken);
559
- blockLevel++;
560
- node.children
561
- ?.filter((c) => c.type === 'pipe_table_cell')
562
- .forEach((child) => walkRecursive(child, ctx));
563
- blockLevel--;
564
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
565
- closeToken.level = blockLevel;
566
- retVal.push(closeToken);
567
- }
568
- break;
569
- case 'pipe_table':
570
- {
571
- const tokenName = 'table';
572
- const tagName = 'table';
573
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
574
- openToken.level = blockLevel;
575
- retVal.push(openToken);
576
- blockLevel++;
577
- const delimiterRows = node.children
578
- ?.filter((c) => c.type === 'pipe_table_delimiter_row');
579
- const cellAlign = [];
580
- if (delimiterRows.length > 0) {
581
- const delimiterRow = delimiterRows[0];
582
- const delimiterCells = delimiterRow.children
583
- ?.filter((c) => c.type === 'pipe_table_delimiter_cell');
584
- for (let cellNo = 0; cellNo < delimiterCells.length; cellNo++) {
585
- const cell = delimiterCells[cellNo];
586
- if (cell.children.find((c) => c.type === 'pipe_table_align_right')) {
587
- cellAlign.push('right');
588
- }
589
- else {
590
- cellAlign.push('left');
591
- }
592
- }
593
- }
594
- const headRows = node.children
595
- ?.filter((c) => c.type === 'pipe_table_header');
596
- if (headRows.length > 0) {
597
- const tokenName = 'thead';
598
- const tagName = 'thead';
599
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
600
- openToken.level = blockLevel;
601
- retVal.push(openToken);
602
- blockLevel++;
603
- headRows.forEach((child) => walkRecursive(child, {
604
- ...ctx,
605
- tableRowType: 'thead',
606
- cellNo: 0,
607
- cellAlign: cellAlign,
608
- }));
609
- blockLevel--;
610
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
611
- closeToken.level = blockLevel;
612
- retVal.push(closeToken);
613
- }
614
- const bodyRows = node.children
615
- ?.filter((c) => c.type === 'pipe_table_row');
616
- if (bodyRows.length > 0) {
617
- // const tokenName = 'tbody';
618
- // const tagName = 'tbody';
619
- // const openToken = new Token(
620
- // tokenName + '_open',
621
- // tagName,
622
- // NESTING_OPENING,
623
- // );
624
- // openToken.level = blockLevel;
625
- // retVal.push(openToken);
626
- blockLevel++;
627
- bodyRows.forEach((child) => walkRecursive(child, {
628
- ...ctx,
629
- tableRowType: 'tbody',
630
- cellAlign: cellAlign,
631
- }));
632
- blockLevel--;
633
- // const closeToken = new Token(
634
- // tokenName + '_close',
635
- // tagName,
636
- // NESTING_CLOSING,
637
- // );
638
- // closeToken.level = blockLevel;
639
- // retVal.push(closeToken);
640
- }
641
- blockLevel--;
642
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
643
- closeToken.level = blockLevel;
644
- retVal.push(closeToken);
645
- }
646
- break;
647
- case 'list':
648
- {
649
- let tokenName = 'bullet_list';
650
- let tagName = 'ul';
651
- let start = '';
652
- const firstItem = node.children.find((item) => item.type === 'list_item');
653
- if (firstItem) {
654
- const taskListMarker = firstItem.children.find((item) => item.type.startsWith('task_list_marker'));
655
- const listMarker = firstItem.children.find((item) => item.type.startsWith('list_marker_dot'));
656
- if (taskListMarker) {
657
- tokenName = 'task_list';
658
- tagName = 'ul';
659
- }
660
- else if (listMarker) {
661
- tokenName = 'ordered_list';
662
- tagName = 'ol';
663
- start = listMarker.text.trim().replace('.', '');
664
- }
665
- }
666
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
667
- openToken.level = blockLevel;
668
- openToken.markup = tagName === 'ol' ? '.' : '*';
669
- openToken.attrSet('symbol', tagName === 'ol' ? '1' : '*');
670
- if (start) {
671
- openToken.attrSet('start', start);
672
- }
673
- retVal.push(openToken);
674
- blockLevel++;
675
- node.children?.forEach((child) => walkRecursive(child, ctx));
676
- blockLevel--;
677
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
678
- closeToken.level = blockLevel;
679
- retVal.push(closeToken);
680
- }
681
- break;
682
- case 'list_item':
683
- {
684
- const taskListMarker = node.children.find((item) => item.type.startsWith('task_list_marker_'));
685
- const listMarker = node.children.find((item) => item.type.startsWith('list_marker_'));
686
- if (!listMarker) {
687
- break;
688
- }
689
- let tokenName = taskListMarker ? 'task_item' : 'list_item';
690
- const tagName = 'li';
691
- const openToken = new Token(tokenName + '_open', tagName, NESTING_OPENING);
692
- openToken.level = blockLevel;
693
- openToken.markup = listMarker.text.trim();
694
- if (listMarker.type === 'list_marker_dot') {
695
- // openToken.info = listMarker.text.trim().replace('.', '');
696
- // openToken.markup = '.';
697
- openToken.info = '';
698
- openToken.markup = '';
699
- }
700
- if (taskListMarker) {
701
- if (taskListMarker.type === 'task_list_marker_checked') {
702
- // throw new Error('aaaa')
703
- }
704
- openToken.attrSet('checked', taskListMarker.type === 'task_list_marker_checked'
705
- ? 'checked'
706
- : '');
707
- }
708
- retVal.push(openToken);
709
- // node.children?.forEach((child) => walkRecursive(child, ctx));
710
- blockLevel++;
711
- walkRecursive(node.children.find((item) => item.type === 'paragraph'), ctx);
712
- const lists = node.children.filter((item) => item.type === 'list');
713
- for (const list of lists) {
714
- walkRecursive(list, ctx);
715
- }
716
- blockLevel--;
717
- const closeToken = new Token(tokenName + '_close', tagName, NESTING_CLOSING);
718
- closeToken.level = blockLevel;
719
- retVal.push(closeToken);
720
- }
721
- break;
722
- case 'html_block':
723
- {
724
- const token = new Token('html_block', '', NESTING_SELF_CLOSING);
725
- token.level = blockLevel;
726
- token.content = node.text ?? '';
727
- retVal.push(token);
728
- }
729
- break;
730
- case 'text':
731
- {
732
- const token = new Token('text', '', NESTING_SELF_CLOSING);
733
- token.level = blockLevel;
734
- token.content = node.text ?? '';
735
- retVal.push(token);
736
- }
737
- break;
738
- default:
739
- // Log unhandled node types for debugging
740
- console.warn(`Unhandled node type: ${node.type}, children: ${node.children.map((c) => c.type).join(', ')}`, {
741
- ...node,
742
- children: undefined,
743
- _children: undefined,
744
- tree: undefined,
745
- });
746
- throw new Error('aaa');
747
- }
748
- };
749
- walkRecursive(tree.rootNode);
750
- return retVal;
751
- }
752
- export async function sitterTokenizer(cdnUrl = '') {
753
- const jsonManifest = getLangTreeSitter('markdown', cdnUrl);
754
- const blockUrl = jsonManifest.files.find((url) => url.indexOf('_inline') === -1);
755
- const inlineUrl = jsonManifest.files.find((url) => url.indexOf('_inline') > -1);
756
- const markdownWasm = await fetchWasm(blockUrl);
757
- const inlineWasm = await fetchWasm(inlineUrl);
758
- const blockParser = (await createParser(markdownWasm));
759
- const inlineParser = (await createParser(inlineWasm));
760
- return {
761
- parse: (source) => {
762
- const tree = blockParser.parse(source);
763
- if (!tree) {
764
- throw new Error('Tree is null');
765
- }
766
- return treeToTokens(tree, inlineParser);
767
- },
768
- };
769
- }