@dungle-scrubs/tallow 0.9.4 → 0.9.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 (195) hide show
  1. package/dist/cli.js +7 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config.d.ts +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/interactive-mode-patch.d.ts +24 -12
  6. package/dist/interactive-mode-patch.d.ts.map +1 -1
  7. package/dist/interactive-mode-patch.js +229 -146
  8. package/dist/interactive-mode-patch.js.map +1 -1
  9. package/dist/interactive-reset.d.ts +49 -0
  10. package/dist/interactive-reset.d.ts.map +1 -0
  11. package/dist/interactive-reset.js +40 -0
  12. package/dist/interactive-reset.js.map +1 -0
  13. package/dist/pi-tui-editor-patch.d.ts +10 -0
  14. package/dist/pi-tui-editor-patch.d.ts.map +1 -0
  15. package/dist/pi-tui-editor-patch.js +159 -0
  16. package/dist/pi-tui-editor-patch.js.map +1 -0
  17. package/dist/pi-tui-patch.d.ts +2 -0
  18. package/dist/pi-tui-patch.d.ts.map +1 -0
  19. package/dist/pi-tui-patch.js +563 -0
  20. package/dist/pi-tui-patch.js.map +1 -0
  21. package/dist/pi-tui-settings-list-patch.d.ts +11 -0
  22. package/dist/pi-tui-settings-list-patch.d.ts.map +1 -0
  23. package/dist/pi-tui-settings-list-patch.js +38 -0
  24. package/dist/pi-tui-settings-list-patch.js.map +1 -0
  25. package/dist/reset-diagnostics.d.ts +69 -0
  26. package/dist/reset-diagnostics.d.ts.map +1 -0
  27. package/dist/reset-diagnostics.js +41 -0
  28. package/dist/reset-diagnostics.js.map +1 -0
  29. package/dist/sdk.d.ts +5 -21
  30. package/dist/sdk.d.ts.map +1 -1
  31. package/dist/sdk.js +180 -149
  32. package/dist/sdk.js.map +1 -1
  33. package/dist/workspace-transition-interactive.d.ts +1 -0
  34. package/dist/workspace-transition-interactive.d.ts.map +1 -1
  35. package/dist/workspace-transition-interactive.js +7 -17
  36. package/dist/workspace-transition-interactive.js.map +1 -1
  37. package/extensions/__integration__/audit-findings.test.ts +4 -5
  38. package/extensions/_icons/index.ts +2 -4
  39. package/extensions/_shared/__tests__/image-metadata.test.ts +33 -0
  40. package/extensions/_shared/__tests__/terminal-links.test.ts +18 -0
  41. package/extensions/_shared/image-metadata.ts +99 -0
  42. package/extensions/_shared/inline-preview.ts +1 -1
  43. package/extensions/_shared/terminal-links.ts +22 -0
  44. package/extensions/ask-user-question-tool/index.ts +0 -3
  45. package/extensions/clear/__tests__/clear.test.ts +269 -2
  46. package/extensions/command-expansion/index.ts +1 -1
  47. package/extensions/context-files/index.ts +5 -1
  48. package/extensions/context-fork/__tests__/context-fork.test.ts +94 -1
  49. package/extensions/context-fork/extension.json +1 -1
  50. package/extensions/context-fork/index.ts +32 -0
  51. package/extensions/edit-tool-enhanced/index.ts +2 -1
  52. package/extensions/hooks/index.ts +33 -11
  53. package/extensions/loop/index.ts +14 -1
  54. package/extensions/lsp/index.ts +64 -13
  55. package/extensions/lsp/package.json +2 -2
  56. package/extensions/random-spinner/index.ts +7 -642
  57. package/extensions/read-tool-enhanced/index.ts +6 -8
  58. package/extensions/render-stabilizer/__tests__/render-stabilizer.test.ts +2 -3
  59. package/extensions/render-stabilizer/index.ts +6 -6
  60. package/extensions/slash-command-bridge/__tests__/slash-command-bridge.test.ts +26 -0
  61. package/extensions/slash-command-bridge/index.ts +14 -2
  62. package/extensions/subagent-tool/model-resolver.ts +274 -7
  63. package/extensions/tasks/commands/register-tasks-extension.ts +9 -9
  64. package/extensions/teams-tool/tools/register-extension.ts +1 -3
  65. package/extensions/web-search-tool/index.ts +2 -1
  66. package/extensions/write-tool-enhanced/index.ts +2 -1
  67. package/node_modules/@mariozechner/pi-tui/README.md +56 -34
  68. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.d.ts +18 -13
  69. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.d.ts.map +1 -1
  70. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.js +182 -113
  71. package/node_modules/@mariozechner/pi-tui/dist/autocomplete.js.map +1 -1
  72. package/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js +3 -3
  73. package/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js.map +1 -1
  74. package/node_modules/@mariozechner/pi-tui/dist/components/editor.d.ts +45 -36
  75. package/node_modules/@mariozechner/pi-tui/dist/components/editor.d.ts.map +1 -1
  76. package/node_modules/@mariozechner/pi-tui/dist/components/editor.js +489 -325
  77. package/node_modules/@mariozechner/pi-tui/dist/components/editor.js.map +1 -1
  78. package/node_modules/@mariozechner/pi-tui/dist/components/image.d.ts +1 -99
  79. package/node_modules/@mariozechner/pi-tui/dist/components/image.d.ts.map +1 -1
  80. package/node_modules/@mariozechner/pi-tui/dist/components/image.js +17 -192
  81. package/node_modules/@mariozechner/pi-tui/dist/components/image.js.map +1 -1
  82. package/node_modules/@mariozechner/pi-tui/dist/components/input.d.ts.map +1 -1
  83. package/node_modules/@mariozechner/pi-tui/dist/components/input.js +57 -60
  84. package/node_modules/@mariozechner/pi-tui/dist/components/input.js.map +1 -1
  85. package/node_modules/@mariozechner/pi-tui/dist/components/loader.d.ts +2 -69
  86. package/node_modules/@mariozechner/pi-tui/dist/components/loader.d.ts.map +1 -1
  87. package/node_modules/@mariozechner/pi-tui/dist/components/loader.js +5 -102
  88. package/node_modules/@mariozechner/pi-tui/dist/components/loader.js.map +1 -1
  89. package/node_modules/@mariozechner/pi-tui/dist/components/markdown.d.ts.map +1 -1
  90. package/node_modules/@mariozechner/pi-tui/dist/components/markdown.js +111 -53
  91. package/node_modules/@mariozechner/pi-tui/dist/components/markdown.js.map +1 -1
  92. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.d.ts +19 -1
  93. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.d.ts.map +1 -1
  94. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.js +78 -67
  95. package/node_modules/@mariozechner/pi-tui/dist/components/select-list.js.map +1 -1
  96. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.d.ts +1 -25
  97. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  98. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.js +13 -50
  99. package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.js.map +1 -1
  100. package/node_modules/@mariozechner/pi-tui/dist/index.d.ts +8 -10
  101. package/node_modules/@mariozechner/pi-tui/dist/index.d.ts.map +1 -1
  102. package/node_modules/@mariozechner/pi-tui/dist/index.js +6 -9
  103. package/node_modules/@mariozechner/pi-tui/dist/index.js.map +1 -1
  104. package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts +108 -238
  105. package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts.map +1 -1
  106. package/node_modules/@mariozechner/pi-tui/dist/keybindings.js +108 -365
  107. package/node_modules/@mariozechner/pi-tui/dist/keybindings.js.map +1 -1
  108. package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts +33 -48
  109. package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts.map +1 -1
  110. package/node_modules/@mariozechner/pi-tui/dist/keys.js +239 -155
  111. package/node_modules/@mariozechner/pi-tui/dist/keys.js.map +1 -1
  112. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.d.ts +14 -94
  113. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.d.ts.map +1 -1
  114. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.js +44 -186
  115. package/node_modules/@mariozechner/pi-tui/dist/terminal-image.js.map +1 -1
  116. package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts +13 -58
  117. package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts.map +1 -1
  118. package/node_modules/@mariozechner/pi-tui/dist/terminal.js +78 -111
  119. package/node_modules/@mariozechner/pi-tui/dist/terminal.js.map +1 -1
  120. package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts +24 -110
  121. package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts.map +1 -1
  122. package/node_modules/@mariozechner/pi-tui/dist/tui.js +188 -435
  123. package/node_modules/@mariozechner/pi-tui/dist/tui.js.map +1 -1
  124. package/node_modules/@mariozechner/pi-tui/dist/utils.d.ts +0 -18
  125. package/node_modules/@mariozechner/pi-tui/dist/utils.d.ts.map +1 -1
  126. package/node_modules/@mariozechner/pi-tui/dist/utils.js +251 -119
  127. package/node_modules/@mariozechner/pi-tui/dist/utils.js.map +1 -1
  128. package/node_modules/@mariozechner/pi-tui/package.json +6 -6
  129. package/node_modules/@mariozechner/pi-tui/src/__tests__/__snapshots__/render.test.ts.snap +3 -40
  130. package/node_modules/@mariozechner/pi-tui/src/__tests__/image-component.test.ts +71 -81
  131. package/node_modules/@mariozechner/pi-tui/src/__tests__/render.test.ts +0 -33
  132. package/node_modules/@mariozechner/pi-tui/src/__tests__/terminal-image.test.ts +93 -334
  133. package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-render-scheduling.test.ts +1 -1
  134. package/node_modules/@mariozechner/pi-tui/src/__tests__/utils.test.ts +11 -196
  135. package/node_modules/@mariozechner/pi-tui/src/autocomplete.ts +228 -142
  136. package/node_modules/@mariozechner/pi-tui/src/components/cancellable-loader.ts +3 -3
  137. package/node_modules/@mariozechner/pi-tui/src/components/editor.ts +624 -390
  138. package/node_modules/@mariozechner/pi-tui/src/components/image.ts +17 -227
  139. package/node_modules/@mariozechner/pi-tui/src/components/input.ts +71 -63
  140. package/node_modules/@mariozechner/pi-tui/src/components/loader.ts +5 -137
  141. package/node_modules/@mariozechner/pi-tui/src/components/markdown.ts +143 -52
  142. package/node_modules/@mariozechner/pi-tui/src/components/select-list.ts +136 -70
  143. package/node_modules/@mariozechner/pi-tui/src/components/settings-list.ts +12 -51
  144. package/node_modules/@mariozechner/pi-tui/src/index.ts +17 -36
  145. package/node_modules/@mariozechner/pi-tui/src/keybindings.ts +148 -421
  146. package/node_modules/@mariozechner/pi-tui/src/keys.ts +253 -181
  147. package/node_modules/@mariozechner/pi-tui/src/terminal-image.ts +51 -252
  148. package/node_modules/@mariozechner/pi-tui/src/terminal.ts +78 -133
  149. package/node_modules/@mariozechner/pi-tui/src/tui.ts +202 -478
  150. package/node_modules/@mariozechner/pi-tui/src/utils.ts +289 -125
  151. package/node_modules/@mariozechner/pi-tui/tsconfig.build.json +1 -0
  152. package/package.json +13 -13
  153. package/packages/tallow-tui/node_modules/@types/mime-types/README.md +8 -2
  154. package/packages/tallow-tui/node_modules/@types/mime-types/index.d.ts +6 -0
  155. package/packages/tallow-tui/node_modules/@types/mime-types/package.json +9 -3
  156. package/packages/tallow-tui/node_modules/get-east-asian-width/lookup-data.js +18 -0
  157. package/packages/tallow-tui/node_modules/get-east-asian-width/lookup.js +116 -384
  158. package/packages/tallow-tui/node_modules/get-east-asian-width/package.json +5 -4
  159. package/packages/tallow-tui/node_modules/get-east-asian-width/utilities.js +24 -0
  160. package/packages/tallow-tui/node_modules/marked/README.md +5 -4
  161. package/packages/tallow-tui/node_modules/marked/bin/main.js +10 -8
  162. package/packages/tallow-tui/node_modules/marked/bin/marked.js +2 -1
  163. package/packages/tallow-tui/node_modules/marked/lib/marked.d.ts +156 -125
  164. package/packages/tallow-tui/node_modules/marked/lib/marked.esm.js +67 -2179
  165. package/packages/tallow-tui/node_modules/marked/lib/marked.esm.js.map +3 -3
  166. package/packages/tallow-tui/node_modules/marked/lib/marked.umd.js +67 -2201
  167. package/packages/tallow-tui/node_modules/marked/lib/marked.umd.js.map +3 -3
  168. package/packages/tallow-tui/node_modules/marked/man/marked.1 +4 -2
  169. package/packages/tallow-tui/node_modules/marked/man/marked.1.md +2 -1
  170. package/packages/tallow-tui/node_modules/marked/package.json +26 -34
  171. package/skills/tallow-expert/SKILL.md +1 -3
  172. package/node_modules/@mariozechner/pi-tui/dist/border-styles.d.ts +0 -32
  173. package/node_modules/@mariozechner/pi-tui/dist/border-styles.d.ts.map +0 -1
  174. package/node_modules/@mariozechner/pi-tui/dist/border-styles.js +0 -46
  175. package/node_modules/@mariozechner/pi-tui/dist/border-styles.js.map +0 -1
  176. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.d.ts +0 -52
  177. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.d.ts.map +0 -1
  178. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.js +0 -89
  179. package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.js.map +0 -1
  180. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.d.ts +0 -14
  181. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.d.ts.map +0 -1
  182. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.js +0 -55
  183. package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.js.map +0 -1
  184. package/node_modules/@mariozechner/pi-tui/src/__tests__/editor-change-listener.test.ts +0 -121
  185. package/node_modules/@mariozechner/pi-tui/src/__tests__/editor-ghost-text.test.ts +0 -112
  186. package/node_modules/@mariozechner/pi-tui/src/__tests__/mouse-events.test.ts +0 -134
  187. package/node_modules/@mariozechner/pi-tui/src/__tests__/settings-list.test.ts +0 -81
  188. package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-diff-regression.test.ts +0 -555
  189. package/node_modules/@mariozechner/pi-tui/src/border-styles.ts +0 -60
  190. package/node_modules/@mariozechner/pi-tui/src/components/bordered-box.ts +0 -113
  191. package/node_modules/@mariozechner/pi-tui/src/test-utils/capability-env.ts +0 -56
  192. package/packages/tallow-tui/node_modules/marked/lib/marked.cjs +0 -2211
  193. package/packages/tallow-tui/node_modules/marked/lib/marked.cjs.map +0 -7
  194. package/packages/tallow-tui/node_modules/marked/lib/marked.d.cts +0 -728
  195. package/packages/tallow-tui/node_modules/marked/marked.min.js +0 -69
@@ -1,6 +1,7 @@
1
1
  /**
2
- * marked v15.0.12 - a markdown parser
3
- * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)
2
+ * marked v18.0.0 - a markdown parser
3
+ * Copyright (c) 2018-2026, MarkedJS. (MIT License)
4
+ * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)
4
5
  * https://github.com/markedjs/marked
5
6
  */
6
7
 
@@ -9,2181 +10,68 @@
9
10
  * The code in this file is generated from files in ./src/
10
11
  */
11
12
 
12
-
13
- // src/defaults.ts
14
- function _getDefaults() {
15
- return {
16
- async: false,
17
- breaks: false,
18
- extensions: null,
19
- gfm: true,
20
- hooks: null,
21
- pedantic: false,
22
- renderer: null,
23
- silent: false,
24
- tokenizer: null,
25
- walkTokens: null
26
- };
27
- }
28
- var _defaults = _getDefaults();
29
- function changeDefaults(newDefaults) {
30
- _defaults = newDefaults;
31
- }
32
-
33
- // src/rules.ts
34
- var noopTest = { exec: () => null };
35
- function edit(regex, opt = "") {
36
- let source = typeof regex === "string" ? regex : regex.source;
37
- const obj = {
38
- replace: (name, val) => {
39
- let valSource = typeof val === "string" ? val : val.source;
40
- valSource = valSource.replace(other.caret, "$1");
41
- source = source.replace(name, valSource);
42
- return obj;
43
- },
44
- getRegex: () => {
45
- return new RegExp(source, opt);
46
- }
47
- };
48
- return obj;
49
- }
50
- var other = {
51
- codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm,
52
- outputLinkReplace: /\\([\[\]])/g,
53
- indentCodeCompensation: /^(\s+)(?:```)/,
54
- beginningSpace: /^\s+/,
55
- endingHash: /#$/,
56
- startingSpaceChar: /^ /,
57
- endingSpaceChar: / $/,
58
- nonSpaceChar: /[^ ]/,
59
- newLineCharGlobal: /\n/g,
60
- tabCharGlobal: /\t/g,
61
- multipleSpaceGlobal: /\s+/g,
62
- blankLine: /^[ \t]*$/,
63
- doubleBlankLine: /\n[ \t]*\n[ \t]*$/,
64
- blockquoteStart: /^ {0,3}>/,
65
- blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g,
66
- blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm,
67
- listReplaceTabs: /^\t+/,
68
- listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,
69
- listIsTask: /^\[[ xX]\] /,
70
- listReplaceTask: /^\[[ xX]\] +/,
71
- anyLine: /\n.*\n/,
72
- hrefBrackets: /^<(.*)>$/,
73
- tableDelimiter: /[:|]/,
74
- tableAlignChars: /^\||\| *$/g,
75
- tableRowBlankLine: /\n[ \t]*$/,
76
- tableAlignRight: /^ *-+: *$/,
77
- tableAlignCenter: /^ *:-+: *$/,
78
- tableAlignLeft: /^ *:-+ *$/,
79
- startATag: /^<a /i,
80
- endATag: /^<\/a>/i,
81
- startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i,
82
- endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i,
83
- startAngleBracket: /^</,
84
- endAngleBracket: />$/,
85
- pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/,
86
- unicodeAlphaNumeric: /[\p{L}\p{N}]/u,
87
- escapeTest: /[&<>"']/,
88
- escapeReplace: /[&<>"']/g,
89
- escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,
90
- escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,
91
- unescapeTest: /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,
92
- caret: /(^|[^\[])\^/g,
93
- percentDecode: /%25/g,
94
- findPipe: /\|/g,
95
- splitPipe: / \|/,
96
- slashPipe: /\\\|/g,
97
- carriageReturn: /\r\n|\r/g,
98
- spaceLine: /^ +$/gm,
99
- notSpaceStart: /^\S*/,
100
- endingNewline: /\n$/,
101
- listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[ ][^\\n]*)?(?:\\n|$))`),
102
- nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),
103
- hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),
104
- fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`),
105
- headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),
106
- htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, "i")
107
- };
108
- var newline = /^(?:[ \t]*(?:\n|$))+/;
109
- var blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/;
110
- var fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
111
- var hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
112
- var heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
113
- var bullet = /(?:[*+-]|\d{1,9}[.)])/;
114
- var lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
115
- var lheading = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
116
- var lheadingGfm = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
117
- var _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/;
118
- var blockText = /^[^\n]+/;
119
- var _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/;
120
- var def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", _blockLabel).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
121
- var list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, bullet).getRegex();
122
- var _tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
123
- var _comment = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
124
- var html = edit(
125
- "^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))",
126
- "i"
127
- ).replace("comment", _comment).replace("tag", _tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
128
- var paragraph = edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex();
129
- var blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", paragraph).getRegex();
130
- var blockNormal = {
131
- blockquote,
132
- code: blockCode,
133
- def,
134
- fences,
135
- heading,
136
- hr,
137
- html,
138
- lheading,
139
- list,
140
- newline,
141
- paragraph,
142
- table: noopTest,
143
- text: blockText
144
- };
145
- var gfmTable = edit(
146
- "^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"
147
- ).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex();
148
- var blockGfm = {
149
- ...blockNormal,
150
- lheading: lheadingGfm,
151
- table: gfmTable,
152
- paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", gfmTable).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex()
153
- };
154
- var blockPedantic = {
155
- ...blockNormal,
156
- html: edit(
157
- `^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`
158
- ).replace("comment", _comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
159
- def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
160
- heading: /^(#{1,6})(.*)(?:\n+|$)/,
161
- fences: noopTest,
162
- // fences not supported
163
- lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
164
- paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", lheading).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex()
165
- };
166
- var escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
167
- var inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
168
- var br = /^( {2,}|\\)\n(?!\s*$)/;
169
- var inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
170
- var _punctuation = /[\p{P}\p{S}]/u;
171
- var _punctuationOrSpace = /[\s\p{P}\p{S}]/u;
172
- var _notPunctuationOrSpace = /[^\s\p{P}\p{S}]/u;
173
- var punctuation = edit(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, _punctuationOrSpace).getRegex();
174
- var _punctuationGfmStrongEm = /(?!~)[\p{P}\p{S}]/u;
175
- var _punctuationOrSpaceGfmStrongEm = /(?!~)[\s\p{P}\p{S}]/u;
176
- var _notPunctuationOrSpaceGfmStrongEm = /(?:[^\s\p{P}\p{S}]|~)/u;
177
- var blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g;
178
- var emStrongLDelimCore = /^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/;
179
- var emStrongLDelim = edit(emStrongLDelimCore, "u").replace(/punct/g, _punctuation).getRegex();
180
- var emStrongLDelimGfm = edit(emStrongLDelimCore, "u").replace(/punct/g, _punctuationGfmStrongEm).getRegex();
181
- var emStrongRDelimAstCore = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)";
182
- var emStrongRDelimAst = edit(emStrongRDelimAstCore, "gu").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();
183
- var emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, "gu").replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm).replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm).replace(/punct/g, _punctuationGfmStrongEm).getRegex();
184
- var emStrongRDelimUnd = edit(
185
- "^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)",
186
- "gu"
187
- ).replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();
188
- var anyPunctuation = edit(/\\(punct)/, "gu").replace(/punct/g, _punctuation).getRegex();
189
- var autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();
190
- var _inlineComment = edit(_comment).replace("(?:-->|$)", "-->").getRegex();
191
- var tag = edit(
192
- "^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>"
193
- ).replace("comment", _inlineComment).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
194
- var _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
195
- var link = edit(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label", _inlineLabel).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex();
196
- var reflink = edit(/^!?\[(label)\]\[(ref)\]/).replace("label", _inlineLabel).replace("ref", _blockLabel).getRegex();
197
- var nolink = edit(/^!?\[(ref)\](?:\[\])?/).replace("ref", _blockLabel).getRegex();
198
- var reflinkSearch = edit("reflink|nolink(?!\\()", "g").replace("reflink", reflink).replace("nolink", nolink).getRegex();
199
- var inlineNormal = {
200
- _backpedal: noopTest,
201
- // only used for GFM url
202
- anyPunctuation,
203
- autolink,
204
- blockSkip,
205
- br,
206
- code: inlineCode,
207
- del: noopTest,
208
- emStrongLDelim,
209
- emStrongRDelimAst,
210
- emStrongRDelimUnd,
211
- escape,
212
- link,
213
- nolink,
214
- punctuation,
215
- reflink,
216
- reflinkSearch,
217
- tag,
218
- text: inlineText,
219
- url: noopTest
220
- };
221
- var inlinePedantic = {
222
- ...inlineNormal,
223
- link: edit(/^!?\[(label)\]\((.*?)\)/).replace("label", _inlineLabel).getRegex(),
224
- reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", _inlineLabel).getRegex()
225
- };
226
- var inlineGfm = {
227
- ...inlineNormal,
228
- emStrongRDelimAst: emStrongRDelimAstGfm,
229
- emStrongLDelim: emStrongLDelimGfm,
230
- url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),
231
- _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
232
- del: /^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,
233
- text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
234
- };
235
- var inlineBreaks = {
236
- ...inlineGfm,
237
- br: edit(br).replace("{2,}", "*").getRegex(),
238
- text: edit(inlineGfm.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex()
239
- };
240
- var block = {
241
- normal: blockNormal,
242
- gfm: blockGfm,
243
- pedantic: blockPedantic
244
- };
245
- var inline = {
246
- normal: inlineNormal,
247
- gfm: inlineGfm,
248
- breaks: inlineBreaks,
249
- pedantic: inlinePedantic
250
- };
251
-
252
- // src/helpers.ts
253
- var escapeReplacements = {
254
- "&": "&amp;",
255
- "<": "&lt;",
256
- ">": "&gt;",
257
- '"': "&quot;",
258
- "'": "&#39;"
259
- };
260
- var getEscapeReplacement = (ch) => escapeReplacements[ch];
261
- function escape2(html2, encode) {
262
- if (encode) {
263
- if (other.escapeTest.test(html2)) {
264
- return html2.replace(other.escapeReplace, getEscapeReplacement);
265
- }
266
- } else {
267
- if (other.escapeTestNoEncode.test(html2)) {
268
- return html2.replace(other.escapeReplaceNoEncode, getEscapeReplacement);
269
- }
270
- }
271
- return html2;
272
- }
273
- function cleanUrl(href) {
274
- try {
275
- href = encodeURI(href).replace(other.percentDecode, "%");
276
- } catch {
277
- return null;
278
- }
279
- return href;
280
- }
281
- function splitCells(tableRow, count) {
282
- const row = tableRow.replace(other.findPipe, (match, offset, str) => {
283
- let escaped = false;
284
- let curr = offset;
285
- while (--curr >= 0 && str[curr] === "\\") escaped = !escaped;
286
- if (escaped) {
287
- return "|";
288
- } else {
289
- return " |";
290
- }
291
- }), cells = row.split(other.splitPipe);
292
- let i = 0;
293
- if (!cells[0].trim()) {
294
- cells.shift();
295
- }
296
- if (cells.length > 0 && !cells.at(-1)?.trim()) {
297
- cells.pop();
298
- }
299
- if (count) {
300
- if (cells.length > count) {
301
- cells.splice(count);
302
- } else {
303
- while (cells.length < count) cells.push("");
304
- }
305
- }
306
- for (; i < cells.length; i++) {
307
- cells[i] = cells[i].trim().replace(other.slashPipe, "|");
308
- }
309
- return cells;
310
- }
311
- function rtrim(str, c, invert) {
312
- const l = str.length;
313
- if (l === 0) {
314
- return "";
315
- }
316
- let suffLen = 0;
317
- while (suffLen < l) {
318
- const currChar = str.charAt(l - suffLen - 1);
319
- if (currChar === c && !invert) {
320
- suffLen++;
321
- } else if (currChar !== c && invert) {
322
- suffLen++;
323
- } else {
324
- break;
325
- }
326
- }
327
- return str.slice(0, l - suffLen);
328
- }
329
- function findClosingBracket(str, b) {
330
- if (str.indexOf(b[1]) === -1) {
331
- return -1;
332
- }
333
- let level = 0;
334
- for (let i = 0; i < str.length; i++) {
335
- if (str[i] === "\\") {
336
- i++;
337
- } else if (str[i] === b[0]) {
338
- level++;
339
- } else if (str[i] === b[1]) {
340
- level--;
341
- if (level < 0) {
342
- return i;
343
- }
344
- }
345
- }
346
- if (level > 0) {
347
- return -2;
348
- }
349
- return -1;
350
- }
351
-
352
- // src/Tokenizer.ts
353
- function outputLink(cap, link2, raw, lexer2, rules) {
354
- const href = link2.href;
355
- const title = link2.title || null;
356
- const text = cap[1].replace(rules.other.outputLinkReplace, "$1");
357
- lexer2.state.inLink = true;
358
- const token = {
359
- type: cap[0].charAt(0) === "!" ? "image" : "link",
360
- raw,
361
- href,
362
- title,
363
- text,
364
- tokens: lexer2.inlineTokens(text)
365
- };
366
- lexer2.state.inLink = false;
367
- return token;
368
- }
369
- function indentCodeCompensation(raw, text, rules) {
370
- const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);
371
- if (matchIndentToCode === null) {
372
- return text;
373
- }
374
- const indentToCode = matchIndentToCode[1];
375
- return text.split("\n").map((node) => {
376
- const matchIndentInNode = node.match(rules.other.beginningSpace);
377
- if (matchIndentInNode === null) {
378
- return node;
379
- }
380
- const [indentInNode] = matchIndentInNode;
381
- if (indentInNode.length >= indentToCode.length) {
382
- return node.slice(indentToCode.length);
383
- }
384
- return node;
385
- }).join("\n");
386
- }
387
- var _Tokenizer = class {
388
- options;
389
- rules;
390
- // set by the lexer
391
- lexer;
392
- // set by the lexer
393
- constructor(options2) {
394
- this.options = options2 || _defaults;
395
- }
396
- space(src) {
397
- const cap = this.rules.block.newline.exec(src);
398
- if (cap && cap[0].length > 0) {
399
- return {
400
- type: "space",
401
- raw: cap[0]
402
- };
403
- }
404
- }
405
- code(src) {
406
- const cap = this.rules.block.code.exec(src);
407
- if (cap) {
408
- const text = cap[0].replace(this.rules.other.codeRemoveIndent, "");
409
- return {
410
- type: "code",
411
- raw: cap[0],
412
- codeBlockStyle: "indented",
413
- text: !this.options.pedantic ? rtrim(text, "\n") : text
414
- };
415
- }
416
- }
417
- fences(src) {
418
- const cap = this.rules.block.fences.exec(src);
419
- if (cap) {
420
- const raw = cap[0];
421
- const text = indentCodeCompensation(raw, cap[3] || "", this.rules);
422
- return {
423
- type: "code",
424
- raw,
425
- lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : cap[2],
426
- text
427
- };
428
- }
429
- }
430
- heading(src) {
431
- const cap = this.rules.block.heading.exec(src);
432
- if (cap) {
433
- let text = cap[2].trim();
434
- if (this.rules.other.endingHash.test(text)) {
435
- const trimmed = rtrim(text, "#");
436
- if (this.options.pedantic) {
437
- text = trimmed.trim();
438
- } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {
439
- text = trimmed.trim();
440
- }
441
- }
442
- return {
443
- type: "heading",
444
- raw: cap[0],
445
- depth: cap[1].length,
446
- text,
447
- tokens: this.lexer.inline(text)
448
- };
449
- }
450
- }
451
- hr(src) {
452
- const cap = this.rules.block.hr.exec(src);
453
- if (cap) {
454
- return {
455
- type: "hr",
456
- raw: rtrim(cap[0], "\n")
457
- };
458
- }
459
- }
460
- blockquote(src) {
461
- const cap = this.rules.block.blockquote.exec(src);
462
- if (cap) {
463
- let lines = rtrim(cap[0], "\n").split("\n");
464
- let raw = "";
465
- let text = "";
466
- const tokens = [];
467
- while (lines.length > 0) {
468
- let inBlockquote = false;
469
- const currentLines = [];
470
- let i;
471
- for (i = 0; i < lines.length; i++) {
472
- if (this.rules.other.blockquoteStart.test(lines[i])) {
473
- currentLines.push(lines[i]);
474
- inBlockquote = true;
475
- } else if (!inBlockquote) {
476
- currentLines.push(lines[i]);
477
- } else {
478
- break;
479
- }
480
- }
481
- lines = lines.slice(i);
482
- const currentRaw = currentLines.join("\n");
483
- const currentText = currentRaw.replace(this.rules.other.blockquoteSetextReplace, "\n $1").replace(this.rules.other.blockquoteSetextReplace2, "");
484
- raw = raw ? `${raw}
485
- ${currentRaw}` : currentRaw;
486
- text = text ? `${text}
487
- ${currentText}` : currentText;
488
- const top = this.lexer.state.top;
489
- this.lexer.state.top = true;
490
- this.lexer.blockTokens(currentText, tokens, true);
491
- this.lexer.state.top = top;
492
- if (lines.length === 0) {
493
- break;
494
- }
495
- const lastToken = tokens.at(-1);
496
- if (lastToken?.type === "code") {
497
- break;
498
- } else if (lastToken?.type === "blockquote") {
499
- const oldToken = lastToken;
500
- const newText = oldToken.raw + "\n" + lines.join("\n");
501
- const newToken = this.blockquote(newText);
502
- tokens[tokens.length - 1] = newToken;
503
- raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;
504
- text = text.substring(0, text.length - oldToken.text.length) + newToken.text;
505
- break;
506
- } else if (lastToken?.type === "list") {
507
- const oldToken = lastToken;
508
- const newText = oldToken.raw + "\n" + lines.join("\n");
509
- const newToken = this.list(newText);
510
- tokens[tokens.length - 1] = newToken;
511
- raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;
512
- text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;
513
- lines = newText.substring(tokens.at(-1).raw.length).split("\n");
514
- continue;
515
- }
516
- }
517
- return {
518
- type: "blockquote",
519
- raw,
520
- tokens,
521
- text
522
- };
523
- }
524
- }
525
- list(src) {
526
- let cap = this.rules.block.list.exec(src);
527
- if (cap) {
528
- let bull = cap[1].trim();
529
- const isordered = bull.length > 1;
530
- const list2 = {
531
- type: "list",
532
- raw: "",
533
- ordered: isordered,
534
- start: isordered ? +bull.slice(0, -1) : "",
535
- loose: false,
536
- items: []
537
- };
538
- bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
539
- if (this.options.pedantic) {
540
- bull = isordered ? bull : "[*+-]";
541
- }
542
- const itemRegex = this.rules.other.listItemRegex(bull);
543
- let endsWithBlankLine = false;
544
- while (src) {
545
- let endEarly = false;
546
- let raw = "";
547
- let itemContents = "";
548
- if (!(cap = itemRegex.exec(src))) {
549
- break;
550
- }
551
- if (this.rules.block.hr.test(src)) {
552
- break;
553
- }
554
- raw = cap[0];
555
- src = src.substring(raw.length);
556
- let line = cap[2].split("\n", 1)[0].replace(this.rules.other.listReplaceTabs, (t) => " ".repeat(3 * t.length));
557
- let nextLine = src.split("\n", 1)[0];
558
- let blankLine = !line.trim();
559
- let indent = 0;
560
- if (this.options.pedantic) {
561
- indent = 2;
562
- itemContents = line.trimStart();
563
- } else if (blankLine) {
564
- indent = cap[1].length + 1;
565
- } else {
566
- indent = cap[2].search(this.rules.other.nonSpaceChar);
567
- indent = indent > 4 ? 1 : indent;
568
- itemContents = line.slice(indent);
569
- indent += cap[1].length;
570
- }
571
- if (blankLine && this.rules.other.blankLine.test(nextLine)) {
572
- raw += nextLine + "\n";
573
- src = src.substring(nextLine.length + 1);
574
- endEarly = true;
575
- }
576
- if (!endEarly) {
577
- const nextBulletRegex = this.rules.other.nextBulletRegex(indent);
578
- const hrRegex = this.rules.other.hrRegex(indent);
579
- const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);
580
- const headingBeginRegex = this.rules.other.headingBeginRegex(indent);
581
- const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);
582
- while (src) {
583
- const rawLine = src.split("\n", 1)[0];
584
- let nextLineWithoutTabs;
585
- nextLine = rawLine;
586
- if (this.options.pedantic) {
587
- nextLine = nextLine.replace(this.rules.other.listReplaceNesting, " ");
588
- nextLineWithoutTabs = nextLine;
589
- } else {
590
- nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, " ");
591
- }
592
- if (fencesBeginRegex.test(nextLine)) {
593
- break;
594
- }
595
- if (headingBeginRegex.test(nextLine)) {
596
- break;
597
- }
598
- if (htmlBeginRegex.test(nextLine)) {
599
- break;
600
- }
601
- if (nextBulletRegex.test(nextLine)) {
602
- break;
603
- }
604
- if (hrRegex.test(nextLine)) {
605
- break;
606
- }
607
- if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {
608
- itemContents += "\n" + nextLineWithoutTabs.slice(indent);
609
- } else {
610
- if (blankLine) {
611
- break;
612
- }
613
- if (line.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4) {
614
- break;
615
- }
616
- if (fencesBeginRegex.test(line)) {
617
- break;
618
- }
619
- if (headingBeginRegex.test(line)) {
620
- break;
621
- }
622
- if (hrRegex.test(line)) {
623
- break;
624
- }
625
- itemContents += "\n" + nextLine;
626
- }
627
- if (!blankLine && !nextLine.trim()) {
628
- blankLine = true;
629
- }
630
- raw += rawLine + "\n";
631
- src = src.substring(rawLine.length + 1);
632
- line = nextLineWithoutTabs.slice(indent);
633
- }
634
- }
635
- if (!list2.loose) {
636
- if (endsWithBlankLine) {
637
- list2.loose = true;
638
- } else if (this.rules.other.doubleBlankLine.test(raw)) {
639
- endsWithBlankLine = true;
640
- }
641
- }
642
- let istask = null;
643
- let ischecked;
644
- if (this.options.gfm) {
645
- istask = this.rules.other.listIsTask.exec(itemContents);
646
- if (istask) {
647
- ischecked = istask[0] !== "[ ] ";
648
- itemContents = itemContents.replace(this.rules.other.listReplaceTask, "");
649
- }
650
- }
651
- list2.items.push({
652
- type: "list_item",
653
- raw,
654
- task: !!istask,
655
- checked: ischecked,
656
- loose: false,
657
- text: itemContents,
658
- tokens: []
659
- });
660
- list2.raw += raw;
661
- }
662
- const lastItem = list2.items.at(-1);
663
- if (lastItem) {
664
- lastItem.raw = lastItem.raw.trimEnd();
665
- lastItem.text = lastItem.text.trimEnd();
666
- } else {
667
- return;
668
- }
669
- list2.raw = list2.raw.trimEnd();
670
- for (let i = 0; i < list2.items.length; i++) {
671
- this.lexer.state.top = false;
672
- list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []);
673
- if (!list2.loose) {
674
- const spacers = list2.items[i].tokens.filter((t) => t.type === "space");
675
- const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => this.rules.other.anyLine.test(t.raw));
676
- list2.loose = hasMultipleLineBreaks;
677
- }
678
- }
679
- if (list2.loose) {
680
- for (let i = 0; i < list2.items.length; i++) {
681
- list2.items[i].loose = true;
682
- }
683
- }
684
- return list2;
685
- }
686
- }
687
- html(src) {
688
- const cap = this.rules.block.html.exec(src);
689
- if (cap) {
690
- const token = {
691
- type: "html",
692
- block: true,
693
- raw: cap[0],
694
- pre: cap[1] === "pre" || cap[1] === "script" || cap[1] === "style",
695
- text: cap[0]
696
- };
697
- return token;
698
- }
699
- }
700
- def(src) {
701
- const cap = this.rules.block.def.exec(src);
702
- if (cap) {
703
- const tag2 = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " ");
704
- const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "";
705
- const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : cap[3];
706
- return {
707
- type: "def",
708
- tag: tag2,
709
- raw: cap[0],
710
- href,
711
- title
712
- };
713
- }
714
- }
715
- table(src) {
716
- const cap = this.rules.block.table.exec(src);
717
- if (!cap) {
718
- return;
719
- }
720
- if (!this.rules.other.tableDelimiter.test(cap[2])) {
721
- return;
722
- }
723
- const headers = splitCells(cap[1]);
724
- const aligns = cap[2].replace(this.rules.other.tableAlignChars, "").split("|");
725
- const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, "").split("\n") : [];
726
- const item = {
727
- type: "table",
728
- raw: cap[0],
729
- header: [],
730
- align: [],
731
- rows: []
732
- };
733
- if (headers.length !== aligns.length) {
734
- return;
735
- }
736
- for (const align of aligns) {
737
- if (this.rules.other.tableAlignRight.test(align)) {
738
- item.align.push("right");
739
- } else if (this.rules.other.tableAlignCenter.test(align)) {
740
- item.align.push("center");
741
- } else if (this.rules.other.tableAlignLeft.test(align)) {
742
- item.align.push("left");
743
- } else {
744
- item.align.push(null);
745
- }
746
- }
747
- for (let i = 0; i < headers.length; i++) {
748
- item.header.push({
749
- text: headers[i],
750
- tokens: this.lexer.inline(headers[i]),
751
- header: true,
752
- align: item.align[i]
753
- });
754
- }
755
- for (const row of rows) {
756
- item.rows.push(splitCells(row, item.header.length).map((cell, i) => {
757
- return {
758
- text: cell,
759
- tokens: this.lexer.inline(cell),
760
- header: false,
761
- align: item.align[i]
762
- };
763
- }));
764
- }
765
- return item;
766
- }
767
- lheading(src) {
768
- const cap = this.rules.block.lheading.exec(src);
769
- if (cap) {
770
- return {
771
- type: "heading",
772
- raw: cap[0],
773
- depth: cap[2].charAt(0) === "=" ? 1 : 2,
774
- text: cap[1],
775
- tokens: this.lexer.inline(cap[1])
776
- };
777
- }
778
- }
779
- paragraph(src) {
780
- const cap = this.rules.block.paragraph.exec(src);
781
- if (cap) {
782
- const text = cap[1].charAt(cap[1].length - 1) === "\n" ? cap[1].slice(0, -1) : cap[1];
783
- return {
784
- type: "paragraph",
785
- raw: cap[0],
786
- text,
787
- tokens: this.lexer.inline(text)
788
- };
789
- }
790
- }
791
- text(src) {
792
- const cap = this.rules.block.text.exec(src);
793
- if (cap) {
794
- return {
795
- type: "text",
796
- raw: cap[0],
797
- text: cap[0],
798
- tokens: this.lexer.inline(cap[0])
799
- };
800
- }
801
- }
802
- escape(src) {
803
- const cap = this.rules.inline.escape.exec(src);
804
- if (cap) {
805
- return {
806
- type: "escape",
807
- raw: cap[0],
808
- text: cap[1]
809
- };
810
- }
811
- }
812
- tag(src) {
813
- const cap = this.rules.inline.tag.exec(src);
814
- if (cap) {
815
- if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {
816
- this.lexer.state.inLink = true;
817
- } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {
818
- this.lexer.state.inLink = false;
819
- }
820
- if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {
821
- this.lexer.state.inRawBlock = true;
822
- } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {
823
- this.lexer.state.inRawBlock = false;
824
- }
825
- return {
826
- type: "html",
827
- raw: cap[0],
828
- inLink: this.lexer.state.inLink,
829
- inRawBlock: this.lexer.state.inRawBlock,
830
- block: false,
831
- text: cap[0]
832
- };
833
- }
834
- }
835
- link(src) {
836
- const cap = this.rules.inline.link.exec(src);
837
- if (cap) {
838
- const trimmedUrl = cap[2].trim();
839
- if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {
840
- if (!this.rules.other.endAngleBracket.test(trimmedUrl)) {
841
- return;
842
- }
843
- const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), "\\");
844
- if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
845
- return;
846
- }
847
- } else {
848
- const lastParenIndex = findClosingBracket(cap[2], "()");
849
- if (lastParenIndex === -2) {
850
- return;
851
- }
852
- if (lastParenIndex > -1) {
853
- const start = cap[0].indexOf("!") === 0 ? 5 : 4;
854
- const linkLen = start + cap[1].length + lastParenIndex;
855
- cap[2] = cap[2].substring(0, lastParenIndex);
856
- cap[0] = cap[0].substring(0, linkLen).trim();
857
- cap[3] = "";
858
- }
859
- }
860
- let href = cap[2];
861
- let title = "";
862
- if (this.options.pedantic) {
863
- const link2 = this.rules.other.pedanticHrefTitle.exec(href);
864
- if (link2) {
865
- href = link2[1];
866
- title = link2[3];
867
- }
868
- } else {
869
- title = cap[3] ? cap[3].slice(1, -1) : "";
870
- }
871
- href = href.trim();
872
- if (this.rules.other.startAngleBracket.test(href)) {
873
- if (this.options.pedantic && !this.rules.other.endAngleBracket.test(trimmedUrl)) {
874
- href = href.slice(1);
875
- } else {
876
- href = href.slice(1, -1);
877
- }
878
- }
879
- return outputLink(cap, {
880
- href: href ? href.replace(this.rules.inline.anyPunctuation, "$1") : href,
881
- title: title ? title.replace(this.rules.inline.anyPunctuation, "$1") : title
882
- }, cap[0], this.lexer, this.rules);
883
- }
884
- }
885
- reflink(src, links) {
886
- let cap;
887
- if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
888
- const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, " ");
889
- const link2 = links[linkString.toLowerCase()];
890
- if (!link2) {
891
- const text = cap[0].charAt(0);
892
- return {
893
- type: "text",
894
- raw: text,
895
- text
896
- };
897
- }
898
- return outputLink(cap, link2, cap[0], this.lexer, this.rules);
899
- }
900
- }
901
- emStrong(src, maskedSrc, prevChar = "") {
902
- let match = this.rules.inline.emStrongLDelim.exec(src);
903
- if (!match) return;
904
- if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;
905
- const nextChar = match[1] || match[2] || "";
906
- if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {
907
- const lLength = [...match[0]].length - 1;
908
- let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;
909
- const endReg = match[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
910
- endReg.lastIndex = 0;
911
- maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
912
- while ((match = endReg.exec(maskedSrc)) != null) {
913
- rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
914
- if (!rDelim) continue;
915
- rLength = [...rDelim].length;
916
- if (match[3] || match[4]) {
917
- delimTotal += rLength;
918
- continue;
919
- } else if (match[5] || match[6]) {
920
- if (lLength % 3 && !((lLength + rLength) % 3)) {
921
- midDelimTotal += rLength;
922
- continue;
923
- }
924
- }
925
- delimTotal -= rLength;
926
- if (delimTotal > 0) continue;
927
- rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
928
- const lastCharLength = [...match[0]][0].length;
929
- const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);
930
- if (Math.min(lLength, rLength) % 2) {
931
- const text2 = raw.slice(1, -1);
932
- return {
933
- type: "em",
934
- raw,
935
- text: text2,
936
- tokens: this.lexer.inlineTokens(text2)
937
- };
938
- }
939
- const text = raw.slice(2, -2);
940
- return {
941
- type: "strong",
942
- raw,
943
- text,
944
- tokens: this.lexer.inlineTokens(text)
945
- };
946
- }
947
- }
948
- }
949
- codespan(src) {
950
- const cap = this.rules.inline.code.exec(src);
951
- if (cap) {
952
- let text = cap[2].replace(this.rules.other.newLineCharGlobal, " ");
953
- const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);
954
- const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);
955
- if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
956
- text = text.substring(1, text.length - 1);
957
- }
958
- return {
959
- type: "codespan",
960
- raw: cap[0],
961
- text
962
- };
963
- }
964
- }
965
- br(src) {
966
- const cap = this.rules.inline.br.exec(src);
967
- if (cap) {
968
- return {
969
- type: "br",
970
- raw: cap[0]
971
- };
972
- }
973
- }
974
- del(src) {
975
- const cap = this.rules.inline.del.exec(src);
976
- if (cap) {
977
- return {
978
- type: "del",
979
- raw: cap[0],
980
- text: cap[2],
981
- tokens: this.lexer.inlineTokens(cap[2])
982
- };
983
- }
984
- }
985
- autolink(src) {
986
- const cap = this.rules.inline.autolink.exec(src);
987
- if (cap) {
988
- let text, href;
989
- if (cap[2] === "@") {
990
- text = cap[1];
991
- href = "mailto:" + text;
992
- } else {
993
- text = cap[1];
994
- href = text;
995
- }
996
- return {
997
- type: "link",
998
- raw: cap[0],
999
- text,
1000
- href,
1001
- tokens: [
1002
- {
1003
- type: "text",
1004
- raw: text,
1005
- text
1006
- }
1007
- ]
1008
- };
1009
- }
1010
- }
1011
- url(src) {
1012
- let cap;
1013
- if (cap = this.rules.inline.url.exec(src)) {
1014
- let text, href;
1015
- if (cap[2] === "@") {
1016
- text = cap[0];
1017
- href = "mailto:" + text;
1018
- } else {
1019
- let prevCapZero;
1020
- do {
1021
- prevCapZero = cap[0];
1022
- cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? "";
1023
- } while (prevCapZero !== cap[0]);
1024
- text = cap[0];
1025
- if (cap[1] === "www.") {
1026
- href = "http://" + cap[0];
1027
- } else {
1028
- href = cap[0];
1029
- }
1030
- }
1031
- return {
1032
- type: "link",
1033
- raw: cap[0],
1034
- text,
1035
- href,
1036
- tokens: [
1037
- {
1038
- type: "text",
1039
- raw: text,
1040
- text
1041
- }
1042
- ]
1043
- };
1044
- }
1045
- }
1046
- inlineText(src) {
1047
- const cap = this.rules.inline.text.exec(src);
1048
- if (cap) {
1049
- const escaped = this.lexer.state.inRawBlock;
1050
- return {
1051
- type: "text",
1052
- raw: cap[0],
1053
- text: cap[0],
1054
- escaped
1055
- };
1056
- }
1057
- }
1058
- };
1059
-
1060
- // src/Lexer.ts
1061
- var _Lexer = class __Lexer {
1062
- tokens;
1063
- options;
1064
- state;
1065
- tokenizer;
1066
- inlineQueue;
1067
- constructor(options2) {
1068
- this.tokens = [];
1069
- this.tokens.links = /* @__PURE__ */ Object.create(null);
1070
- this.options = options2 || _defaults;
1071
- this.options.tokenizer = this.options.tokenizer || new _Tokenizer();
1072
- this.tokenizer = this.options.tokenizer;
1073
- this.tokenizer.options = this.options;
1074
- this.tokenizer.lexer = this;
1075
- this.inlineQueue = [];
1076
- this.state = {
1077
- inLink: false,
1078
- inRawBlock: false,
1079
- top: true
1080
- };
1081
- const rules = {
1082
- other,
1083
- block: block.normal,
1084
- inline: inline.normal
1085
- };
1086
- if (this.options.pedantic) {
1087
- rules.block = block.pedantic;
1088
- rules.inline = inline.pedantic;
1089
- } else if (this.options.gfm) {
1090
- rules.block = block.gfm;
1091
- if (this.options.breaks) {
1092
- rules.inline = inline.breaks;
1093
- } else {
1094
- rules.inline = inline.gfm;
1095
- }
1096
- }
1097
- this.tokenizer.rules = rules;
1098
- }
1099
- /**
1100
- * Expose Rules
1101
- */
1102
- static get rules() {
1103
- return {
1104
- block,
1105
- inline
1106
- };
1107
- }
1108
- /**
1109
- * Static Lex Method
1110
- */
1111
- static lex(src, options2) {
1112
- const lexer2 = new __Lexer(options2);
1113
- return lexer2.lex(src);
1114
- }
1115
- /**
1116
- * Static Lex Inline Method
1117
- */
1118
- static lexInline(src, options2) {
1119
- const lexer2 = new __Lexer(options2);
1120
- return lexer2.inlineTokens(src);
1121
- }
1122
- /**
1123
- * Preprocessing
1124
- */
1125
- lex(src) {
1126
- src = src.replace(other.carriageReturn, "\n");
1127
- this.blockTokens(src, this.tokens);
1128
- for (let i = 0; i < this.inlineQueue.length; i++) {
1129
- const next = this.inlineQueue[i];
1130
- this.inlineTokens(next.src, next.tokens);
1131
- }
1132
- this.inlineQueue = [];
1133
- return this.tokens;
1134
- }
1135
- blockTokens(src, tokens = [], lastParagraphClipped = false) {
1136
- if (this.options.pedantic) {
1137
- src = src.replace(other.tabCharGlobal, " ").replace(other.spaceLine, "");
1138
- }
1139
- while (src) {
1140
- let token;
1141
- if (this.options.extensions?.block?.some((extTokenizer) => {
1142
- if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
1143
- src = src.substring(token.raw.length);
1144
- tokens.push(token);
1145
- return true;
1146
- }
1147
- return false;
1148
- })) {
1149
- continue;
1150
- }
1151
- if (token = this.tokenizer.space(src)) {
1152
- src = src.substring(token.raw.length);
1153
- const lastToken = tokens.at(-1);
1154
- if (token.raw.length === 1 && lastToken !== void 0) {
1155
- lastToken.raw += "\n";
1156
- } else {
1157
- tokens.push(token);
1158
- }
1159
- continue;
1160
- }
1161
- if (token = this.tokenizer.code(src)) {
1162
- src = src.substring(token.raw.length);
1163
- const lastToken = tokens.at(-1);
1164
- if (lastToken?.type === "paragraph" || lastToken?.type === "text") {
1165
- lastToken.raw += "\n" + token.raw;
1166
- lastToken.text += "\n" + token.text;
1167
- this.inlineQueue.at(-1).src = lastToken.text;
1168
- } else {
1169
- tokens.push(token);
1170
- }
1171
- continue;
1172
- }
1173
- if (token = this.tokenizer.fences(src)) {
1174
- src = src.substring(token.raw.length);
1175
- tokens.push(token);
1176
- continue;
1177
- }
1178
- if (token = this.tokenizer.heading(src)) {
1179
- src = src.substring(token.raw.length);
1180
- tokens.push(token);
1181
- continue;
1182
- }
1183
- if (token = this.tokenizer.hr(src)) {
1184
- src = src.substring(token.raw.length);
1185
- tokens.push(token);
1186
- continue;
1187
- }
1188
- if (token = this.tokenizer.blockquote(src)) {
1189
- src = src.substring(token.raw.length);
1190
- tokens.push(token);
1191
- continue;
1192
- }
1193
- if (token = this.tokenizer.list(src)) {
1194
- src = src.substring(token.raw.length);
1195
- tokens.push(token);
1196
- continue;
1197
- }
1198
- if (token = this.tokenizer.html(src)) {
1199
- src = src.substring(token.raw.length);
1200
- tokens.push(token);
1201
- continue;
1202
- }
1203
- if (token = this.tokenizer.def(src)) {
1204
- src = src.substring(token.raw.length);
1205
- const lastToken = tokens.at(-1);
1206
- if (lastToken?.type === "paragraph" || lastToken?.type === "text") {
1207
- lastToken.raw += "\n" + token.raw;
1208
- lastToken.text += "\n" + token.raw;
1209
- this.inlineQueue.at(-1).src = lastToken.text;
1210
- } else if (!this.tokens.links[token.tag]) {
1211
- this.tokens.links[token.tag] = {
1212
- href: token.href,
1213
- title: token.title
1214
- };
1215
- }
1216
- continue;
1217
- }
1218
- if (token = this.tokenizer.table(src)) {
1219
- src = src.substring(token.raw.length);
1220
- tokens.push(token);
1221
- continue;
1222
- }
1223
- if (token = this.tokenizer.lheading(src)) {
1224
- src = src.substring(token.raw.length);
1225
- tokens.push(token);
1226
- continue;
1227
- }
1228
- let cutSrc = src;
1229
- if (this.options.extensions?.startBlock) {
1230
- let startIndex = Infinity;
1231
- const tempSrc = src.slice(1);
1232
- let tempStart;
1233
- this.options.extensions.startBlock.forEach((getStartIndex) => {
1234
- tempStart = getStartIndex.call({ lexer: this }, tempSrc);
1235
- if (typeof tempStart === "number" && tempStart >= 0) {
1236
- startIndex = Math.min(startIndex, tempStart);
1237
- }
1238
- });
1239
- if (startIndex < Infinity && startIndex >= 0) {
1240
- cutSrc = src.substring(0, startIndex + 1);
1241
- }
1242
- }
1243
- if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
1244
- const lastToken = tokens.at(-1);
1245
- if (lastParagraphClipped && lastToken?.type === "paragraph") {
1246
- lastToken.raw += "\n" + token.raw;
1247
- lastToken.text += "\n" + token.text;
1248
- this.inlineQueue.pop();
1249
- this.inlineQueue.at(-1).src = lastToken.text;
1250
- } else {
1251
- tokens.push(token);
1252
- }
1253
- lastParagraphClipped = cutSrc.length !== src.length;
1254
- src = src.substring(token.raw.length);
1255
- continue;
1256
- }
1257
- if (token = this.tokenizer.text(src)) {
1258
- src = src.substring(token.raw.length);
1259
- const lastToken = tokens.at(-1);
1260
- if (lastToken?.type === "text") {
1261
- lastToken.raw += "\n" + token.raw;
1262
- lastToken.text += "\n" + token.text;
1263
- this.inlineQueue.pop();
1264
- this.inlineQueue.at(-1).src = lastToken.text;
1265
- } else {
1266
- tokens.push(token);
1267
- }
1268
- continue;
1269
- }
1270
- if (src) {
1271
- const errMsg = "Infinite loop on byte: " + src.charCodeAt(0);
1272
- if (this.options.silent) {
1273
- console.error(errMsg);
1274
- break;
1275
- } else {
1276
- throw new Error(errMsg);
1277
- }
1278
- }
1279
- }
1280
- this.state.top = true;
1281
- return tokens;
1282
- }
1283
- inline(src, tokens = []) {
1284
- this.inlineQueue.push({ src, tokens });
1285
- return tokens;
1286
- }
1287
- /**
1288
- * Lexing/Compiling
1289
- */
1290
- inlineTokens(src, tokens = []) {
1291
- let maskedSrc = src;
1292
- let match = null;
1293
- if (this.tokens.links) {
1294
- const links = Object.keys(this.tokens.links);
1295
- if (links.length > 0) {
1296
- while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
1297
- if (links.includes(match[0].slice(match[0].lastIndexOf("[") + 1, -1))) {
1298
- maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
1299
- }
1300
- }
1301
- }
1302
- }
1303
- while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {
1304
- maskedSrc = maskedSrc.slice(0, match.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
1305
- }
1306
- while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
1307
- maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
1308
- }
1309
- let keepPrevChar = false;
1310
- let prevChar = "";
1311
- while (src) {
1312
- if (!keepPrevChar) {
1313
- prevChar = "";
1314
- }
1315
- keepPrevChar = false;
1316
- let token;
1317
- if (this.options.extensions?.inline?.some((extTokenizer) => {
1318
- if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
1319
- src = src.substring(token.raw.length);
1320
- tokens.push(token);
1321
- return true;
1322
- }
1323
- return false;
1324
- })) {
1325
- continue;
1326
- }
1327
- if (token = this.tokenizer.escape(src)) {
1328
- src = src.substring(token.raw.length);
1329
- tokens.push(token);
1330
- continue;
1331
- }
1332
- if (token = this.tokenizer.tag(src)) {
1333
- src = src.substring(token.raw.length);
1334
- tokens.push(token);
1335
- continue;
1336
- }
1337
- if (token = this.tokenizer.link(src)) {
1338
- src = src.substring(token.raw.length);
1339
- tokens.push(token);
1340
- continue;
1341
- }
1342
- if (token = this.tokenizer.reflink(src, this.tokens.links)) {
1343
- src = src.substring(token.raw.length);
1344
- const lastToken = tokens.at(-1);
1345
- if (token.type === "text" && lastToken?.type === "text") {
1346
- lastToken.raw += token.raw;
1347
- lastToken.text += token.text;
1348
- } else {
1349
- tokens.push(token);
1350
- }
1351
- continue;
1352
- }
1353
- if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
1354
- src = src.substring(token.raw.length);
1355
- tokens.push(token);
1356
- continue;
1357
- }
1358
- if (token = this.tokenizer.codespan(src)) {
1359
- src = src.substring(token.raw.length);
1360
- tokens.push(token);
1361
- continue;
1362
- }
1363
- if (token = this.tokenizer.br(src)) {
1364
- src = src.substring(token.raw.length);
1365
- tokens.push(token);
1366
- continue;
1367
- }
1368
- if (token = this.tokenizer.del(src)) {
1369
- src = src.substring(token.raw.length);
1370
- tokens.push(token);
1371
- continue;
1372
- }
1373
- if (token = this.tokenizer.autolink(src)) {
1374
- src = src.substring(token.raw.length);
1375
- tokens.push(token);
1376
- continue;
1377
- }
1378
- if (!this.state.inLink && (token = this.tokenizer.url(src))) {
1379
- src = src.substring(token.raw.length);
1380
- tokens.push(token);
1381
- continue;
1382
- }
1383
- let cutSrc = src;
1384
- if (this.options.extensions?.startInline) {
1385
- let startIndex = Infinity;
1386
- const tempSrc = src.slice(1);
1387
- let tempStart;
1388
- this.options.extensions.startInline.forEach((getStartIndex) => {
1389
- tempStart = getStartIndex.call({ lexer: this }, tempSrc);
1390
- if (typeof tempStart === "number" && tempStart >= 0) {
1391
- startIndex = Math.min(startIndex, tempStart);
1392
- }
1393
- });
1394
- if (startIndex < Infinity && startIndex >= 0) {
1395
- cutSrc = src.substring(0, startIndex + 1);
1396
- }
1397
- }
1398
- if (token = this.tokenizer.inlineText(cutSrc)) {
1399
- src = src.substring(token.raw.length);
1400
- if (token.raw.slice(-1) !== "_") {
1401
- prevChar = token.raw.slice(-1);
1402
- }
1403
- keepPrevChar = true;
1404
- const lastToken = tokens.at(-1);
1405
- if (lastToken?.type === "text") {
1406
- lastToken.raw += token.raw;
1407
- lastToken.text += token.text;
1408
- } else {
1409
- tokens.push(token);
1410
- }
1411
- continue;
1412
- }
1413
- if (src) {
1414
- const errMsg = "Infinite loop on byte: " + src.charCodeAt(0);
1415
- if (this.options.silent) {
1416
- console.error(errMsg);
1417
- break;
1418
- } else {
1419
- throw new Error(errMsg);
1420
- }
1421
- }
1422
- }
1423
- return tokens;
1424
- }
1425
- };
1426
-
1427
- // src/Renderer.ts
1428
- var _Renderer = class {
1429
- options;
1430
- parser;
1431
- // set by the parser
1432
- constructor(options2) {
1433
- this.options = options2 || _defaults;
1434
- }
1435
- space(token) {
1436
- return "";
1437
- }
1438
- code({ text, lang, escaped }) {
1439
- const langString = (lang || "").match(other.notSpaceStart)?.[0];
1440
- const code = text.replace(other.endingNewline, "") + "\n";
1441
- if (!langString) {
1442
- return "<pre><code>" + (escaped ? code : escape2(code, true)) + "</code></pre>\n";
1443
- }
1444
- return '<pre><code class="language-' + escape2(langString) + '">' + (escaped ? code : escape2(code, true)) + "</code></pre>\n";
1445
- }
1446
- blockquote({ tokens }) {
1447
- const body = this.parser.parse(tokens);
1448
- return `<blockquote>
1449
- ${body}</blockquote>
1450
- `;
1451
- }
1452
- html({ text }) {
1453
- return text;
1454
- }
1455
- heading({ tokens, depth }) {
1456
- return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>
1457
- `;
1458
- }
1459
- hr(token) {
1460
- return "<hr>\n";
1461
- }
1462
- list(token) {
1463
- const ordered = token.ordered;
1464
- const start = token.start;
1465
- let body = "";
1466
- for (let j = 0; j < token.items.length; j++) {
1467
- const item = token.items[j];
1468
- body += this.listitem(item);
1469
- }
1470
- const type = ordered ? "ol" : "ul";
1471
- const startAttr = ordered && start !== 1 ? ' start="' + start + '"' : "";
1472
- return "<" + type + startAttr + ">\n" + body + "</" + type + ">\n";
1473
- }
1474
- listitem(item) {
1475
- let itemBody = "";
1476
- if (item.task) {
1477
- const checkbox = this.checkbox({ checked: !!item.checked });
1478
- if (item.loose) {
1479
- if (item.tokens[0]?.type === "paragraph") {
1480
- item.tokens[0].text = checkbox + " " + item.tokens[0].text;
1481
- if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") {
1482
- item.tokens[0].tokens[0].text = checkbox + " " + escape2(item.tokens[0].tokens[0].text);
1483
- item.tokens[0].tokens[0].escaped = true;
1484
- }
1485
- } else {
1486
- item.tokens.unshift({
1487
- type: "text",
1488
- raw: checkbox + " ",
1489
- text: checkbox + " ",
1490
- escaped: true
1491
- });
1492
- }
1493
- } else {
1494
- itemBody += checkbox + " ";
1495
- }
1496
- }
1497
- itemBody += this.parser.parse(item.tokens, !!item.loose);
1498
- return `<li>${itemBody}</li>
1499
- `;
1500
- }
1501
- checkbox({ checked }) {
1502
- return "<input " + (checked ? 'checked="" ' : "") + 'disabled="" type="checkbox">';
1503
- }
1504
- paragraph({ tokens }) {
1505
- return `<p>${this.parser.parseInline(tokens)}</p>
1506
- `;
1507
- }
1508
- table(token) {
1509
- let header = "";
1510
- let cell = "";
1511
- for (let j = 0; j < token.header.length; j++) {
1512
- cell += this.tablecell(token.header[j]);
1513
- }
1514
- header += this.tablerow({ text: cell });
1515
- let body = "";
1516
- for (let j = 0; j < token.rows.length; j++) {
1517
- const row = token.rows[j];
1518
- cell = "";
1519
- for (let k = 0; k < row.length; k++) {
1520
- cell += this.tablecell(row[k]);
1521
- }
1522
- body += this.tablerow({ text: cell });
1523
- }
1524
- if (body) body = `<tbody>${body}</tbody>`;
1525
- return "<table>\n<thead>\n" + header + "</thead>\n" + body + "</table>\n";
1526
- }
1527
- tablerow({ text }) {
1528
- return `<tr>
1529
- ${text}</tr>
1530
- `;
1531
- }
1532
- tablecell(token) {
1533
- const content = this.parser.parseInline(token.tokens);
1534
- const type = token.header ? "th" : "td";
1535
- const tag2 = token.align ? `<${type} align="${token.align}">` : `<${type}>`;
1536
- return tag2 + content + `</${type}>
1537
- `;
1538
- }
1539
- /**
1540
- * span level renderer
1541
- */
1542
- strong({ tokens }) {
1543
- return `<strong>${this.parser.parseInline(tokens)}</strong>`;
1544
- }
1545
- em({ tokens }) {
1546
- return `<em>${this.parser.parseInline(tokens)}</em>`;
1547
- }
1548
- codespan({ text }) {
1549
- return `<code>${escape2(text, true)}</code>`;
1550
- }
1551
- br(token) {
1552
- return "<br>";
1553
- }
1554
- del({ tokens }) {
1555
- return `<del>${this.parser.parseInline(tokens)}</del>`;
1556
- }
1557
- link({ href, title, tokens }) {
1558
- const text = this.parser.parseInline(tokens);
1559
- const cleanHref = cleanUrl(href);
1560
- if (cleanHref === null) {
1561
- return text;
1562
- }
1563
- href = cleanHref;
1564
- let out = '<a href="' + href + '"';
1565
- if (title) {
1566
- out += ' title="' + escape2(title) + '"';
1567
- }
1568
- out += ">" + text + "</a>";
1569
- return out;
1570
- }
1571
- image({ href, title, text, tokens }) {
1572
- if (tokens) {
1573
- text = this.parser.parseInline(tokens, this.parser.textRenderer);
1574
- }
1575
- const cleanHref = cleanUrl(href);
1576
- if (cleanHref === null) {
1577
- return escape2(text);
1578
- }
1579
- href = cleanHref;
1580
- let out = `<img src="${href}" alt="${text}"`;
1581
- if (title) {
1582
- out += ` title="${escape2(title)}"`;
1583
- }
1584
- out += ">";
1585
- return out;
1586
- }
1587
- text(token) {
1588
- return "tokens" in token && token.tokens ? this.parser.parseInline(token.tokens) : "escaped" in token && token.escaped ? token.text : escape2(token.text);
1589
- }
1590
- };
1591
-
1592
- // src/TextRenderer.ts
1593
- var _TextRenderer = class {
1594
- // no need for block level renderers
1595
- strong({ text }) {
1596
- return text;
1597
- }
1598
- em({ text }) {
1599
- return text;
1600
- }
1601
- codespan({ text }) {
1602
- return text;
1603
- }
1604
- del({ text }) {
1605
- return text;
1606
- }
1607
- html({ text }) {
1608
- return text;
1609
- }
1610
- text({ text }) {
1611
- return text;
1612
- }
1613
- link({ text }) {
1614
- return "" + text;
1615
- }
1616
- image({ text }) {
1617
- return "" + text;
1618
- }
1619
- br() {
1620
- return "";
1621
- }
1622
- };
1623
-
1624
- // src/Parser.ts
1625
- var _Parser = class __Parser {
1626
- options;
1627
- renderer;
1628
- textRenderer;
1629
- constructor(options2) {
1630
- this.options = options2 || _defaults;
1631
- this.options.renderer = this.options.renderer || new _Renderer();
1632
- this.renderer = this.options.renderer;
1633
- this.renderer.options = this.options;
1634
- this.renderer.parser = this;
1635
- this.textRenderer = new _TextRenderer();
1636
- }
1637
- /**
1638
- * Static Parse Method
1639
- */
1640
- static parse(tokens, options2) {
1641
- const parser2 = new __Parser(options2);
1642
- return parser2.parse(tokens);
1643
- }
1644
- /**
1645
- * Static Parse Inline Method
1646
- */
1647
- static parseInline(tokens, options2) {
1648
- const parser2 = new __Parser(options2);
1649
- return parser2.parseInline(tokens);
1650
- }
1651
- /**
1652
- * Parse Loop
1653
- */
1654
- parse(tokens, top = true) {
1655
- let out = "";
1656
- for (let i = 0; i < tokens.length; i++) {
1657
- const anyToken = tokens[i];
1658
- if (this.options.extensions?.renderers?.[anyToken.type]) {
1659
- const genericToken = anyToken;
1660
- const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);
1661
- if (ret !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(genericToken.type)) {
1662
- out += ret || "";
1663
- continue;
1664
- }
1665
- }
1666
- const token = anyToken;
1667
- switch (token.type) {
1668
- case "space": {
1669
- out += this.renderer.space(token);
1670
- continue;
1671
- }
1672
- case "hr": {
1673
- out += this.renderer.hr(token);
1674
- continue;
1675
- }
1676
- case "heading": {
1677
- out += this.renderer.heading(token);
1678
- continue;
1679
- }
1680
- case "code": {
1681
- out += this.renderer.code(token);
1682
- continue;
1683
- }
1684
- case "table": {
1685
- out += this.renderer.table(token);
1686
- continue;
1687
- }
1688
- case "blockquote": {
1689
- out += this.renderer.blockquote(token);
1690
- continue;
1691
- }
1692
- case "list": {
1693
- out += this.renderer.list(token);
1694
- continue;
1695
- }
1696
- case "html": {
1697
- out += this.renderer.html(token);
1698
- continue;
1699
- }
1700
- case "paragraph": {
1701
- out += this.renderer.paragraph(token);
1702
- continue;
1703
- }
1704
- case "text": {
1705
- let textToken = token;
1706
- let body = this.renderer.text(textToken);
1707
- while (i + 1 < tokens.length && tokens[i + 1].type === "text") {
1708
- textToken = tokens[++i];
1709
- body += "\n" + this.renderer.text(textToken);
1710
- }
1711
- if (top) {
1712
- out += this.renderer.paragraph({
1713
- type: "paragraph",
1714
- raw: body,
1715
- text: body,
1716
- tokens: [{ type: "text", raw: body, text: body, escaped: true }]
1717
- });
1718
- } else {
1719
- out += body;
1720
- }
1721
- continue;
1722
- }
1723
- default: {
1724
- const errMsg = 'Token with "' + token.type + '" type was not found.';
1725
- if (this.options.silent) {
1726
- console.error(errMsg);
1727
- return "";
1728
- } else {
1729
- throw new Error(errMsg);
1730
- }
1731
- }
1732
- }
1733
- }
1734
- return out;
1735
- }
1736
- /**
1737
- * Parse Inline Tokens
1738
- */
1739
- parseInline(tokens, renderer = this.renderer) {
1740
- let out = "";
1741
- for (let i = 0; i < tokens.length; i++) {
1742
- const anyToken = tokens[i];
1743
- if (this.options.extensions?.renderers?.[anyToken.type]) {
1744
- const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);
1745
- if (ret !== false || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(anyToken.type)) {
1746
- out += ret || "";
1747
- continue;
1748
- }
1749
- }
1750
- const token = anyToken;
1751
- switch (token.type) {
1752
- case "escape": {
1753
- out += renderer.text(token);
1754
- break;
1755
- }
1756
- case "html": {
1757
- out += renderer.html(token);
1758
- break;
1759
- }
1760
- case "link": {
1761
- out += renderer.link(token);
1762
- break;
1763
- }
1764
- case "image": {
1765
- out += renderer.image(token);
1766
- break;
1767
- }
1768
- case "strong": {
1769
- out += renderer.strong(token);
1770
- break;
1771
- }
1772
- case "em": {
1773
- out += renderer.em(token);
1774
- break;
1775
- }
1776
- case "codespan": {
1777
- out += renderer.codespan(token);
1778
- break;
1779
- }
1780
- case "br": {
1781
- out += renderer.br(token);
1782
- break;
1783
- }
1784
- case "del": {
1785
- out += renderer.del(token);
1786
- break;
1787
- }
1788
- case "text": {
1789
- out += renderer.text(token);
1790
- break;
1791
- }
1792
- default: {
1793
- const errMsg = 'Token with "' + token.type + '" type was not found.';
1794
- if (this.options.silent) {
1795
- console.error(errMsg);
1796
- return "";
1797
- } else {
1798
- throw new Error(errMsg);
1799
- }
1800
- }
1801
- }
1802
- }
1803
- return out;
1804
- }
1805
- };
1806
-
1807
- // src/Hooks.ts
1808
- var _Hooks = class {
1809
- options;
1810
- block;
1811
- constructor(options2) {
1812
- this.options = options2 || _defaults;
1813
- }
1814
- static passThroughHooks = /* @__PURE__ */ new Set([
1815
- "preprocess",
1816
- "postprocess",
1817
- "processAllTokens"
1818
- ]);
1819
- /**
1820
- * Process markdown before marked
1821
- */
1822
- preprocess(markdown) {
1823
- return markdown;
1824
- }
1825
- /**
1826
- * Process HTML after marked is finished
1827
- */
1828
- postprocess(html2) {
1829
- return html2;
1830
- }
1831
- /**
1832
- * Process all tokens before walk tokens
1833
- */
1834
- processAllTokens(tokens) {
1835
- return tokens;
1836
- }
1837
- /**
1838
- * Provide function to tokenize markdown
1839
- */
1840
- provideLexer() {
1841
- return this.block ? _Lexer.lex : _Lexer.lexInline;
1842
- }
1843
- /**
1844
- * Provide function to parse tokens
1845
- */
1846
- provideParser() {
1847
- return this.block ? _Parser.parse : _Parser.parseInline;
1848
- }
1849
- };
1850
-
1851
- // src/Instance.ts
1852
- var Marked = class {
1853
- defaults = _getDefaults();
1854
- options = this.setOptions;
1855
- parse = this.parseMarkdown(true);
1856
- parseInline = this.parseMarkdown(false);
1857
- Parser = _Parser;
1858
- Renderer = _Renderer;
1859
- TextRenderer = _TextRenderer;
1860
- Lexer = _Lexer;
1861
- Tokenizer = _Tokenizer;
1862
- Hooks = _Hooks;
1863
- constructor(...args) {
1864
- this.use(...args);
1865
- }
1866
- /**
1867
- * Run callback for every token
1868
- */
1869
- walkTokens(tokens, callback) {
1870
- let values = [];
1871
- for (const token of tokens) {
1872
- values = values.concat(callback.call(this, token));
1873
- switch (token.type) {
1874
- case "table": {
1875
- const tableToken = token;
1876
- for (const cell of tableToken.header) {
1877
- values = values.concat(this.walkTokens(cell.tokens, callback));
1878
- }
1879
- for (const row of tableToken.rows) {
1880
- for (const cell of row) {
1881
- values = values.concat(this.walkTokens(cell.tokens, callback));
1882
- }
1883
- }
1884
- break;
1885
- }
1886
- case "list": {
1887
- const listToken = token;
1888
- values = values.concat(this.walkTokens(listToken.items, callback));
1889
- break;
1890
- }
1891
- default: {
1892
- const genericToken = token;
1893
- if (this.defaults.extensions?.childTokens?.[genericToken.type]) {
1894
- this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {
1895
- const tokens2 = genericToken[childTokens].flat(Infinity);
1896
- values = values.concat(this.walkTokens(tokens2, callback));
1897
- });
1898
- } else if (genericToken.tokens) {
1899
- values = values.concat(this.walkTokens(genericToken.tokens, callback));
1900
- }
1901
- }
1902
- }
1903
- }
1904
- return values;
1905
- }
1906
- use(...args) {
1907
- const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };
1908
- args.forEach((pack) => {
1909
- const opts = { ...pack };
1910
- opts.async = this.defaults.async || opts.async || false;
1911
- if (pack.extensions) {
1912
- pack.extensions.forEach((ext) => {
1913
- if (!ext.name) {
1914
- throw new Error("extension name required");
1915
- }
1916
- if ("renderer" in ext) {
1917
- const prevRenderer = extensions.renderers[ext.name];
1918
- if (prevRenderer) {
1919
- extensions.renderers[ext.name] = function(...args2) {
1920
- let ret = ext.renderer.apply(this, args2);
1921
- if (ret === false) {
1922
- ret = prevRenderer.apply(this, args2);
1923
- }
1924
- return ret;
1925
- };
1926
- } else {
1927
- extensions.renderers[ext.name] = ext.renderer;
1928
- }
1929
- }
1930
- if ("tokenizer" in ext) {
1931
- if (!ext.level || ext.level !== "block" && ext.level !== "inline") {
1932
- throw new Error("extension level must be 'block' or 'inline'");
1933
- }
1934
- const extLevel = extensions[ext.level];
1935
- if (extLevel) {
1936
- extLevel.unshift(ext.tokenizer);
1937
- } else {
1938
- extensions[ext.level] = [ext.tokenizer];
1939
- }
1940
- if (ext.start) {
1941
- if (ext.level === "block") {
1942
- if (extensions.startBlock) {
1943
- extensions.startBlock.push(ext.start);
1944
- } else {
1945
- extensions.startBlock = [ext.start];
1946
- }
1947
- } else if (ext.level === "inline") {
1948
- if (extensions.startInline) {
1949
- extensions.startInline.push(ext.start);
1950
- } else {
1951
- extensions.startInline = [ext.start];
1952
- }
1953
- }
1954
- }
1955
- }
1956
- if ("childTokens" in ext && ext.childTokens) {
1957
- extensions.childTokens[ext.name] = ext.childTokens;
1958
- }
1959
- });
1960
- opts.extensions = extensions;
1961
- }
1962
- if (pack.renderer) {
1963
- const renderer = this.defaults.renderer || new _Renderer(this.defaults);
1964
- for (const prop in pack.renderer) {
1965
- if (!(prop in renderer)) {
1966
- throw new Error(`renderer '${prop}' does not exist`);
1967
- }
1968
- if (["options", "parser"].includes(prop)) {
1969
- continue;
1970
- }
1971
- const rendererProp = prop;
1972
- const rendererFunc = pack.renderer[rendererProp];
1973
- const prevRenderer = renderer[rendererProp];
1974
- renderer[rendererProp] = (...args2) => {
1975
- let ret = rendererFunc.apply(renderer, args2);
1976
- if (ret === false) {
1977
- ret = prevRenderer.apply(renderer, args2);
1978
- }
1979
- return ret || "";
1980
- };
1981
- }
1982
- opts.renderer = renderer;
1983
- }
1984
- if (pack.tokenizer) {
1985
- const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);
1986
- for (const prop in pack.tokenizer) {
1987
- if (!(prop in tokenizer)) {
1988
- throw new Error(`tokenizer '${prop}' does not exist`);
1989
- }
1990
- if (["options", "rules", "lexer"].includes(prop)) {
1991
- continue;
1992
- }
1993
- const tokenizerProp = prop;
1994
- const tokenizerFunc = pack.tokenizer[tokenizerProp];
1995
- const prevTokenizer = tokenizer[tokenizerProp];
1996
- tokenizer[tokenizerProp] = (...args2) => {
1997
- let ret = tokenizerFunc.apply(tokenizer, args2);
1998
- if (ret === false) {
1999
- ret = prevTokenizer.apply(tokenizer, args2);
2000
- }
2001
- return ret;
2002
- };
2003
- }
2004
- opts.tokenizer = tokenizer;
2005
- }
2006
- if (pack.hooks) {
2007
- const hooks = this.defaults.hooks || new _Hooks();
2008
- for (const prop in pack.hooks) {
2009
- if (!(prop in hooks)) {
2010
- throw new Error(`hook '${prop}' does not exist`);
2011
- }
2012
- if (["options", "block"].includes(prop)) {
2013
- continue;
2014
- }
2015
- const hooksProp = prop;
2016
- const hooksFunc = pack.hooks[hooksProp];
2017
- const prevHook = hooks[hooksProp];
2018
- if (_Hooks.passThroughHooks.has(prop)) {
2019
- hooks[hooksProp] = (arg) => {
2020
- if (this.defaults.async) {
2021
- return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {
2022
- return prevHook.call(hooks, ret2);
2023
- });
2024
- }
2025
- const ret = hooksFunc.call(hooks, arg);
2026
- return prevHook.call(hooks, ret);
2027
- };
2028
- } else {
2029
- hooks[hooksProp] = (...args2) => {
2030
- let ret = hooksFunc.apply(hooks, args2);
2031
- if (ret === false) {
2032
- ret = prevHook.apply(hooks, args2);
2033
- }
2034
- return ret;
2035
- };
2036
- }
2037
- }
2038
- opts.hooks = hooks;
2039
- }
2040
- if (pack.walkTokens) {
2041
- const walkTokens2 = this.defaults.walkTokens;
2042
- const packWalktokens = pack.walkTokens;
2043
- opts.walkTokens = function(token) {
2044
- let values = [];
2045
- values.push(packWalktokens.call(this, token));
2046
- if (walkTokens2) {
2047
- values = values.concat(walkTokens2.call(this, token));
2048
- }
2049
- return values;
2050
- };
2051
- }
2052
- this.defaults = { ...this.defaults, ...opts };
2053
- });
2054
- return this;
2055
- }
2056
- setOptions(opt) {
2057
- this.defaults = { ...this.defaults, ...opt };
2058
- return this;
2059
- }
2060
- lexer(src, options2) {
2061
- return _Lexer.lex(src, options2 ?? this.defaults);
2062
- }
2063
- parser(tokens, options2) {
2064
- return _Parser.parse(tokens, options2 ?? this.defaults);
2065
- }
2066
- parseMarkdown(blockType) {
2067
- const parse2 = (src, options2) => {
2068
- const origOpt = { ...options2 };
2069
- const opt = { ...this.defaults, ...origOpt };
2070
- const throwError = this.onError(!!opt.silent, !!opt.async);
2071
- if (this.defaults.async === true && origOpt.async === false) {
2072
- return throwError(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));
2073
- }
2074
- if (typeof src === "undefined" || src === null) {
2075
- return throwError(new Error("marked(): input parameter is undefined or null"));
2076
- }
2077
- if (typeof src !== "string") {
2078
- return throwError(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected"));
2079
- }
2080
- if (opt.hooks) {
2081
- opt.hooks.options = opt;
2082
- opt.hooks.block = blockType;
2083
- }
2084
- const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline;
2085
- const parser2 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline;
2086
- if (opt.async) {
2087
- return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError);
2088
- }
2089
- try {
2090
- if (opt.hooks) {
2091
- src = opt.hooks.preprocess(src);
2092
- }
2093
- let tokens = lexer2(src, opt);
2094
- if (opt.hooks) {
2095
- tokens = opt.hooks.processAllTokens(tokens);
2096
- }
2097
- if (opt.walkTokens) {
2098
- this.walkTokens(tokens, opt.walkTokens);
2099
- }
2100
- let html2 = parser2(tokens, opt);
2101
- if (opt.hooks) {
2102
- html2 = opt.hooks.postprocess(html2);
2103
- }
2104
- return html2;
2105
- } catch (e) {
2106
- return throwError(e);
2107
- }
2108
- };
2109
- return parse2;
2110
- }
2111
- onError(silent, async) {
2112
- return (e) => {
2113
- e.message += "\nPlease report this to https://github.com/markedjs/marked.";
2114
- if (silent) {
2115
- const msg = "<p>An error occurred:</p><pre>" + escape2(e.message + "", true) + "</pre>";
2116
- if (async) {
2117
- return Promise.resolve(msg);
2118
- }
2119
- return msg;
2120
- }
2121
- if (async) {
2122
- return Promise.reject(e);
2123
- }
2124
- throw e;
2125
- };
2126
- }
2127
- };
2128
-
2129
- // src/marked.ts
2130
- var markedInstance = new Marked();
2131
- function marked(src, opt) {
2132
- return markedInstance.parse(src, opt);
2133
- }
2134
- marked.options = marked.setOptions = function(options2) {
2135
- markedInstance.setOptions(options2);
2136
- marked.defaults = markedInstance.defaults;
2137
- changeDefaults(marked.defaults);
2138
- return marked;
2139
- };
2140
- marked.getDefaults = _getDefaults;
2141
- marked.defaults = _defaults;
2142
- marked.use = function(...args) {
2143
- markedInstance.use(...args);
2144
- marked.defaults = markedInstance.defaults;
2145
- changeDefaults(marked.defaults);
2146
- return marked;
2147
- };
2148
- marked.walkTokens = function(tokens, callback) {
2149
- return markedInstance.walkTokens(tokens, callback);
2150
- };
2151
- marked.parseInline = markedInstance.parseInline;
2152
- marked.Parser = _Parser;
2153
- marked.parser = _Parser.parse;
2154
- marked.Renderer = _Renderer;
2155
- marked.TextRenderer = _TextRenderer;
2156
- marked.Lexer = _Lexer;
2157
- marked.lexer = _Lexer.lex;
2158
- marked.Tokenizer = _Tokenizer;
2159
- marked.Hooks = _Hooks;
2160
- marked.parse = marked;
2161
- var options = marked.options;
2162
- var setOptions = marked.setOptions;
2163
- var use = marked.use;
2164
- var walkTokens = marked.walkTokens;
2165
- var parseInline = marked.parseInline;
2166
- var parse = marked;
2167
- var parser = _Parser.parse;
2168
- var lexer = _Lexer.lex;
2169
- export {
2170
- _Hooks as Hooks,
2171
- _Lexer as Lexer,
2172
- Marked,
2173
- _Parser as Parser,
2174
- _Renderer as Renderer,
2175
- _TextRenderer as TextRenderer,
2176
- _Tokenizer as Tokenizer,
2177
- _defaults as defaults,
2178
- _getDefaults as getDefaults,
2179
- lexer,
2180
- marked,
2181
- options,
2182
- parse,
2183
- parseInline,
2184
- parser,
2185
- setOptions,
2186
- use,
2187
- walkTokens
2188
- };
13
+ function z(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=z();function G(u){T=u}var _={exec:()=>null};function k(u,e=""){let t=typeof u=="string"?u:u.source,n={replace:(r,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(m.caret,"$1"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var Re=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}>`)},Te=/^(?:[ \t]*(?:\n|$))+/,Oe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,we=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,C=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ye=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Q=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ie=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,oe=k(ie).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Pe=k(ie).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),j=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Se=/^[^\n]+/,F=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,$e=k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",F).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Le=k(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Q).getRegex(),v="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",U=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,_e=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",U).replace("tag",v).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ae=k(j).replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex(),Me=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ae).getRegex(),K={blockquote:Me,code:Oe,def:$e,fences:we,heading:ye,hr:C,html:_e,lheading:oe,list:Le,newline:Te,paragraph:ae,table:_,text:Se},re=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex(),ze={...K,lheading:Pe,table:re,paragraph:k(j).replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",re).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",v).getRegex()},Ee={...K,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",U).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:_,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(j).replace("hr",C).replace("heading",` *#{1,6} *[^
14
+ ]`).replace("lheading",oe).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ie=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ae=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,le=/^( {2,}|\\)\n(?!\s*$)/,Ce=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,E=/[\p{P}\p{S}]/u,H=/[\s\p{P}\p{S}]/u,W=/[^\s\p{P}\p{S}]/u,Be=k(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,H).getRegex(),ue=/(?!~)[\p{P}\p{S}]/u,De=/(?!~)[\s\p{P}\p{S}]/u,qe=/(?:[^\s\p{P}\p{S}]|~)/u,ve=k(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Re?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),pe=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,He=k(pe,"u").replace(/punct/g,E).getRegex(),Ze=k(pe,"u").replace(/punct/g,ue).getRegex(),ce="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ge=k(ce,"gu").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,E).getRegex(),Ne=k(ce,"gu").replace(/notPunctSpace/g,qe).replace(/punctSpace/g,De).replace(/punct/g,ue).getRegex(),Qe=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,E).getRegex(),je=k(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,E).getRegex(),Fe="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Ue=k(Fe,"gu").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,E).getRegex(),Ke=k(/\\(punct)/,"gu").replace(/punct/g,E).getRegex(),We=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Xe=k(U).replace("(?:-->|$)","-->").getRegex(),Je=k("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Xe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),q=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Ve=k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",q).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),he=k(/^!?\[(label)\]\[(ref)\]/).replace("label",q).replace("ref",F).getRegex(),ke=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",F).getRegex(),Ye=k("reflink|nolink(?!\\()","g").replace("reflink",he).replace("nolink",ke).getRegex(),se=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:_,anyPunctuation:Ke,autolink:We,blockSkip:ve,br:le,code:Ae,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:He,emStrongRDelimAst:Ge,emStrongRDelimUnd:Qe,escape:Ie,link:Ve,nolink:ke,punctuation:Be,reflink:he,reflinkSearch:Ye,tag:Je,text:Ce,url:_},et={...X,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",q).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",q).getRegex()},N={...X,emStrongRDelimAst:Ne,emStrongLDelim:Ze,delLDelim:je,delRDelim:Ue,url:k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",se).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",se).getRegex()},tt={...N,br:k(le).replace("{2,}","*").getRegex(),text:k(N.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},B={normal:K,gfm:ze,pedantic:Ee},I={normal:X,gfm:N,breaks:tt,pedantic:et};var nt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},de=u=>nt[u];function O(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,de)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,de);return u}function J(u){try{u=encodeURI(u).replace(m.percentDecode,"%")}catch{return null}return u}function V(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]==="\\";)o=!o;return o?"|":" |"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,"|");return n}function $(u,e,t){let n=u.length;if(n===0)return"";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function Y(u){let e=u.split(`
15
+ `),t=e.length-1;for(;t>=0&&!e[t].trim();)t--;return e.length-t<=2?u:e.slice(0,t+1).join(`
16
+ `)}function ge(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]==="\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function fe(u,e=0){let t=e,n="";for(let r of u)if(r===" "){let i=4-t%4;n+=" ".repeat(i),t+=i}else n+=r,t++;return n}function me(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,"$1");n.state.inLink=!0;let o={type:u[0].charAt(0)==="!"?"image":"link",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function rt(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`
17
+ `).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`
18
+ `)}var w=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:Y(t[0]),r=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:r}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=rt(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=$(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:"heading",raw:$(t[0],`
19
+ `),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:$(t[0],`
20
+ `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=$(t[0],`
21
+ `).split(`
22
+ `),r="",i="",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`
23
+ `),c=p.replace(this.rules.other.blockquoteSetextReplace,`
24
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
25
+ ${p}`:p,i=i?`${i}
26
+ ${c}`:c;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=d,n.length===0)break;let h=s.at(-1);if(h?.type==="code")break;if(h?.type==="blockquote"){let R=h,f=R.raw+`
27
+ `+n.join(`
28
+ `),S=this.blockquote(f);s[s.length-1]=S,r=r.substring(0,r.length-R.raw.length)+S.raw,i=i.substring(0,i.length-R.text.length)+S.text;break}else if(h?.type==="list"){let R=h,f=R.raw+`
29
+ `+n.join(`
30
+ `),S=this.list(f);s[s.length-1]=S,r=r.substring(0,r.length-h.raw.length)+S.raw,i=i.substring(0,i.length-R.raw.length)+S.raw,n=f.substring(s.at(-1).raw.length).split(`
31
+ `);continue}}return{type:"blockquote",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p="",c="";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=fe(t[2].split(`
32
+ `,1)[0],t[1].length),h=e.split(`
33
+ `,1)[0],R=!d.trim(),f=0;if(this.options.pedantic?(f=2,c=d.trimStart()):R?f=t[1].length+1:(f=d.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=d.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`
34
+ `,e=e.substring(h.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(f),ee=this.rules.other.hrRegex(f),te=this.rules.other.fencesBeginRegex(f),ne=this.rules.other.headingBeginRegex(f),xe=this.rules.other.htmlBeginRegex(f),be=this.rules.other.blockquoteBeginRegex(f);for(;e;){let Z=e.split(`
35
+ `,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),A=h):A=h.replace(this.rules.other.tabCharGlobal," "),te.test(h)||ne.test(h)||xe.test(h)||be.test(h)||S.test(h)||ee.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`
36
+ `+A.slice(f);else{if(R||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||te.test(d)||ne.test(d)||ee.test(d))break;c+=`
37
+ `+h}R=!h.trim(),p+=Z+`
38
+ `,e=e.substring(Z.length+1),d=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:"list_item",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,""),l.tokens[0]?.type==="text"||l.tokens[0]?.type==="paragraph"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,"");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};l.checked=c.checked,i.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:"paragraph",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(d=>d.type==="space"),c=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type==="text"&&(p.type="paragraph")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=Y(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:$(t[0],`
39
+ `),href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
40
+ `):[],s={type:"table",raw:$(t[0],`
41
+ `),header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push("right"):this.rules.other.tableAlignCenter.test(a)?s.align.push("center"):this.rules.other.tableAlignLeft.test(a)?s.align.push("left"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(V(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:$(t[0],`
42
+ `),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
43
+ `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=$(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=ge(t[2],"()");if(s===-2)return;if(s>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let r=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),me(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return me(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[3]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let d=[...r[0]][0].length,h=e.slice(0,s+r.index+d+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:"em",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:"strong",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(!r)return;if(!(r[1]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=this.rules.inline.delRDelim;for(p.lastIndex=0,t=t.slice(-1*e.length+s);(r=p.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a||(o=[...a].length,o!==s))continue;if(r[3]||r[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let c=[...r[0]][0].length,d=e.slice(0,s+r.index+c+o),h=d.slice(s,-s);return{type:"del",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new w,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:B.normal,inline:I.normal};this.options.pedantic?(t.block=B.pedantic,t.inline=I.pedantic):this.options.gfm&&(t.block=B.gfm,this.options.breaks?t.inline=I.breaks:t.inline=I.gfm),this.tokenizer.rules=t}static get rules(){return{block:B,inline:I}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`
44
+ `),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(m.tabCharGlobal," ").replace(m.spaceLine,""));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`
45
+ `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
46
+ `)?"":`
47
+ `)+r.raw,s.text+=`
48
+ `+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
49
+ `)?"":`
50
+ `)+r.raw,s.text+=`
51
+ `+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o=="number"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(`
52
+ `)?"":`
53
+ `)+r.raw,s.text+=`
54
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
55
+ `)?"":`
56
+ `)+r.raw,s.text+=`
57
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)o.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+"["+"a".repeat(r[0].length-i-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a="";for(;e;){s||(a=""),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type==="text"&&p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),d;this.options.extensions.startInline.forEach(h=>{d=h.call({lexer:this},c),typeof d=="number"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var y=class{options;parser;constructor(e){this.options=e||T}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,"")+`
58
+ `;return r?'<pre><code class="language-'+O(r)+'">'+(n?i:O(i,!0))+`</code></pre>
59
+ `:"<pre><code>"+(n?i:O(i,!0))+`</code></pre>
60
+ `}blockquote({tokens:e}){return`<blockquote>
61
+ ${this.parser.parse(e)}</blockquote>
62
+ `}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
63
+ `}hr(e){return`<hr>
64
+ `}list(e){let t=e.ordered,n=e.start,r="";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?"ol":"ul",s=t&&n!==1?' start="'+n+'"':"";return"<"+i+s+`>
65
+ `+r+"</"+i+`>
66
+ `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
67
+ `}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
68
+ `}table(e){let t="",n="";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r="";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n="";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>
69
+ <thead>
70
+ `+t+`</thead>
71
+ `+r+`</table>
72
+ `}tablerow({text:e}){return`<tr>
73
+ ${e}</tr>
74
+ `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
75
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${O(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href="'+e+'"';return t&&(s+=' title="'+O(t)+'"'),s+=">"+r+"</a>",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return O(n);e=i;let s=`<img src="${e}" alt="${O(n)}"`;return t&&(s+=` title="${O(t)}"`),s+=">",s}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:O(e.text)}};var L=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new y,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new L}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){this.renderer.parser=this;let t="";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(s.type)){t+=a||"";continue}}let i=r;switch(i.type){case"space":{t+=this.renderer.space(i);break}case"hr":{t+=this.renderer.hr(i);break}case"heading":{t+=this.renderer.heading(i);break}case"code":{t+=this.renderer.code(i);break}case"table":{t+=this.renderer.table(i);break}case"blockquote":{t+=this.renderer.blockquote(i);break}case"list":{t+=this.renderer.list(i);break}case"checkbox":{t+=this.renderer.checkbox(i);break}case"html":{t+=this.renderer.html(i);break}case"def":{t+=this.renderer.def(i);break}case"paragraph":{t+=this.renderer.paragraph(i);break}case"text":{t+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n="";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){n+=a||"";continue}}let s=i;switch(s.type){case"escape":{n+=t.text(s);break}case"html":{n+=t.html(s);break}case"link":{n+=t.link(s);break}case"image":{n+=t.image(s);break}case"checkbox":{n+=t.checkbox(s);break}case"strong":{n+=t.strong(s);break}case"em":{n+=t.em(s);break}case"codespan":{n+=t.codespan(s);break}case"br":{n+=t.br(s);break}case"del":{n+=t.del(s);break}case"text":{n+=t.text(s);break}default:{let a='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return n}};var P=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?x.lex:x.lexInline}provideParser(e=this.block){return e?b.parse:b.parseInline}};var D=class{defaults=z();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=y;TextRenderer=L;Lexer=x;Tokenizer=w;Hooks=P;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case"list":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new y(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||""}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new w(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new P;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];P.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(s))return(async()=>{let d=await o.call(i,p);return l.call(i,d)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let d=await o.apply(i,p);return d===!1&&(d=await l.apply(i,p)),d})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer(e):e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser(e):e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer(e):e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser(e):e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`
76
+ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+O(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var M=new D;function g(u,e){return M.parse(u,e)}g.options=g.setOptions=function(u){return M.setOptions(u),g.defaults=M.defaults,G(g.defaults),g};g.getDefaults=z;g.defaults=T;g.use=function(...u){return M.use(...u),g.defaults=M.defaults,G(g.defaults),g};g.walkTokens=function(u,e){return M.walkTokens(u,e)};g.parseInline=M.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=L;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var jt=g.options,Ft=g.setOptions,Ut=g.use,Kt=g.walkTokens,Wt=g.parseInline,Xt=g,Jt=b.parse,Vt=x.lex;export{P as Hooks,x as Lexer,D as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,z as getDefaults,Vt as lexer,g as marked,jt as options,Xt as parse,Wt as parseInline,Jt as parser,Ft as setOptions,Ut as use,Kt as walkTokens};
2189
77
  //# sourceMappingURL=marked.esm.js.map