@psnext/slingcli 2.5.20260615-2 → 2.5.20260617-2

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/node_modules/@aws-sdk/core/dist-cjs/index.js +45 -50
  2. package/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +2 -4
  3. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +21 -22
  4. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +51 -51
  5. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +21 -22
  6. package/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +19 -21
  7. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +107 -109
  8. package/node_modules/@aws-sdk/core/dist-cjs/submodules/util/index.js +2 -4
  9. package/node_modules/@aws-sdk/core/package.json +8 -8
  10. package/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +4 -6
  11. package/node_modules/@aws-sdk/credential-provider-env/package.json +6 -6
  12. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js +3 -7
  13. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js +12 -16
  14. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +16 -21
  15. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js +14 -18
  16. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js +1 -5
  17. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js +2 -5
  18. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js +2 -7
  19. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-cjs/index.js +11 -13
  20. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/package.json +7 -7
  21. package/node_modules/@aws-sdk/credential-provider-http/package.json +6 -6
  22. package/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +47 -41
  23. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js +8 -4
  24. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js +14 -10
  25. package/node_modules/@aws-sdk/credential-provider-ini/package.json +13 -13
  26. package/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js +31 -33
  27. package/node_modules/@aws-sdk/credential-provider-login/package.json +7 -7
  28. package/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +16 -18
  29. package/node_modules/@aws-sdk/credential-provider-node/package.json +11 -11
  30. package/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +11 -13
  31. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  32. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +22 -24
  33. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BGYXHf8s.js +3 -0
  34. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +26 -28
  35. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +7 -7
  36. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  37. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +10 -14
  38. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js +2 -6
  39. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +3 -27
  40. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
  41. package/node_modules/@aws-sdk/eventstream-handler-node/dist-cjs/index.js +7 -9
  42. package/node_modules/@aws-sdk/eventstream-handler-node/package.json +5 -5
  43. package/node_modules/@aws-sdk/middleware-eventstream/dist-cjs/index.js +3 -5
  44. package/node_modules/@aws-sdk/middleware-eventstream/package.json +5 -5
  45. package/node_modules/@aws-sdk/middleware-websocket/dist-cjs/index.js +16 -18
  46. package/node_modules/@aws-sdk/middleware-websocket/package.json +6 -6
  47. package/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js +0 -1
  48. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +82 -84
  49. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +158 -119
  50. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +80 -82
  51. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +80 -82
  52. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +99 -101
  53. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js +4 -1
  54. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/bdd.js +70 -35
  55. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js +1 -1
  56. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js +3 -0
  57. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts +1 -0
  58. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts +12 -0
  59. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts +1 -0
  60. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts +3 -0
  61. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-cjs/index.js +11 -13
  62. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/package.json +7 -7
  63. package/node_modules/@aws-sdk/nested-clients/package.json +9 -8
  64. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js +4 -6
  65. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +5 -5
  66. package/node_modules/@aws-sdk/types/dist-cjs/index.js +7 -8
  67. package/node_modules/@aws-sdk/types/package.json +4 -4
  68. package/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js +0 -2
  69. package/node_modules/@aws-sdk/util-locate-window/package.json +4 -4
  70. package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +2 -4
  71. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +4 -7
  72. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +2 -5
  73. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +7 -10
  74. package/node_modules/@aws-sdk/xml-builder/package.json +4 -4
  75. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  76. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +21 -57
  77. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +277 -175
  78. package/node_modules/@earendil-works/pi-ai/dist/models.js +4 -1
  79. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +52 -34
  80. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +11 -9
  81. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +7 -4
  82. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.js +4 -3
  83. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js +15 -5
  84. package/node_modules/@earendil-works/pi-ai/dist/providers/google.js +2 -1
  85. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +18 -17
  86. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +21 -8
  87. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
  88. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +8 -7
  89. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +1 -0
  90. package/node_modules/@earendil-works/pi-ai/dist/stream.js +1 -1
  91. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.js +17 -22
  92. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.js +2 -1
  93. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +3 -2
  94. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-env.js +44 -0
  95. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  96. package/node_modules/@earendil-works/pi-coding-agent/dist/bun/restore-sandbox-env.js +4 -0
  97. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +1 -1
  98. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +10 -7
  99. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +8 -1
  100. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js +2 -2
  101. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +10 -10
  102. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/vendor/marked.min.js +75 -3
  103. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +17 -1
  104. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +8 -4
  105. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js +1 -1
  106. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js +10 -0
  107. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js +19 -19
  108. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +2 -0
  109. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +6 -6
  110. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +4 -0
  111. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +17 -5
  112. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +4 -0
  113. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +0 -1
  114. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.js +0 -5
  115. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +6 -6
  116. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/child-process.js +23 -5
  117. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +17 -17
  118. package/node_modules/@earendil-works/pi-coding-agent/package.json +4 -4
  119. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +5 -1
  120. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  121. package/node_modules/@smithy/core/dist-cjs/index.js +13 -15
  122. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +29 -31
  123. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.browser.js +2 -4
  124. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +7 -9
  125. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.native.js +3 -5
  126. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +22 -23
  127. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.browser.js +10 -11
  128. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +38 -39
  129. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.native.js +10 -11
  130. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.browser.js +14 -17
  131. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +20 -23
  132. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.browser.js +9 -11
  133. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +11 -13
  134. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +59 -60
  135. package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.browser.js +23 -24
  136. package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.js +25 -26
  137. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +5 -7
  138. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +4 -6
  139. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +23 -25
  140. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +4 -6
  141. package/node_modules/@smithy/core/dist-cjs/submodules/transport/index.js +2 -4
  142. package/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +1 -1
  143. package/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/httpSigningMiddleware.js +1 -1
  144. package/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js +1 -1
  145. package/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/endpointMiddleware.js +1 -1
  146. package/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +1 -1
  147. package/node_modules/@smithy/core/package.json +7 -6
  148. package/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +23 -24
  149. package/node_modules/@smithy/credential-provider-imds/package.json +6 -6
  150. package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +6 -8
  151. package/node_modules/@smithy/fetch-http-handler/package.json +7 -7
  152. package/node_modules/@smithy/signature-v4/dist-cjs/index.js +27 -29
  153. package/node_modules/@smithy/signature-v4/package.json +6 -6
  154. package/node_modules/@smithy/types/dist-cjs/index.js +23 -18
  155. package/node_modules/@smithy/types/package.json +4 -4
  156. package/node_modules/marked/README.md +13 -4
  157. package/node_modules/marked/bin/main.js +16 -14
  158. package/node_modules/marked/bin/marked.js +2 -1
  159. package/node_modules/marked/lib/marked.d.ts +157 -125
  160. package/node_modules/marked/lib/marked.esm.js +67 -2179
  161. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  162. package/node_modules/marked/lib/marked.umd.js +67 -2201
  163. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  164. package/node_modules/marked/man/marked.1 +4 -2
  165. package/node_modules/marked/man/marked.1.md +2 -1
  166. package/node_modules/marked/package.json +27 -35
  167. package/node_modules/undici/docs/docs/api/Client.md +3 -0
  168. package/node_modules/undici/docs/docs/api/Cookies.md +27 -0
  169. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +1 -0
  170. package/node_modules/undici/lib/core/socks5-client.js +14 -4
  171. package/node_modules/undici/lib/core/socks5-utils.js +18 -4
  172. package/node_modules/undici/lib/dispatcher/agent.js +1 -1
  173. package/node_modules/undici/lib/dispatcher/balanced-pool.js +1 -1
  174. package/node_modules/undici/lib/dispatcher/client-h1.js +69 -1
  175. package/node_modules/undici/lib/dispatcher/client.js +3 -2
  176. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -0
  177. package/node_modules/undici/lib/dispatcher/pool.js +1 -1
  178. package/node_modules/undici/lib/dispatcher/proxy-agent.js +2 -1
  179. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +45 -34
  180. package/node_modules/undici/lib/util/cache.js +8 -2
  181. package/node_modules/undici/lib/web/cookies/parse.js +17 -25
  182. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +13 -31
  183. package/node_modules/undici/lib/web/websocket/receiver.js +80 -23
  184. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -1
  185. package/node_modules/undici/lib/web/websocket/websocket.js +8 -1
  186. package/node_modules/undici/package.json +1 -1
  187. package/node_modules/undici/types/client.d.ts +16 -0
  188. package/package.json +6 -6
  189. package/slingshot/index.js +253 -253
  190. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js +0 -8
  191. package/node_modules/marked/lib/marked.cjs +0 -2211
  192. package/node_modules/marked/lib/marked.cjs.map +0 -7
  193. package/node_modules/marked/lib/marked.d.cts +0 -728
  194. package/node_modules/marked/marked.min.js +0 -69
  195. /package/node_modules/marked/{LICENSE.md → LICENSE} +0 -0
@@ -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.5 - 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 M(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=M();function N(l){T=l}var _={exec:()=>null};function E(l){let e=[];return t=>{let n=Math.max(0,Math.min(3,t-1)),s=e[n];return s||(s=l(n),e[n]=s),s}}function d(l,e=""){let t=typeof l=="string"?l:l.source,n={replace:(s,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(m.caret,"$1"),t=t.replace(s,i),n},getRegex:()=>new RegExp(t,e)};return n}var Te=((l="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+l)}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:l=>new RegExp(`^( {0,3}${l})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:E(l=>new RegExp(`^ {0,${l}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:E(l=>new RegExp(`^ {0,${l}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:E(l=>new RegExp(`^ {0,${l}}(?:\`\`\`|~~~)`)),headingBeginRegex:E(l=>new RegExp(`^ {0,${l}}#`)),htmlBeginRegex:E(l=>new RegExp(`^ {0,${l}}<(?:[a-z].*>|!--)`,"i")),blockquoteBeginRegex:E(l=>new RegExp(`^ {0,${l}}>`))},Oe=/^(?:[ \t]*(?:\n|$))+/,we=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,ye=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,B=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Pe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,j=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,oe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ae=d(oe).replace(/bull/g,j).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(),Se=d(oe).replace(/bull/g,j).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(),F=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,$e=/^[^\n]+/,U=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Le=d(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",U).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_e=d(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,j).getRegex(),H="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",K=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,ze=d("^ {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",K).replace("tag",H).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),le=d(F).replace("hr",B).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]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",H).getRegex(),Me=d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",le).getRegex(),W={blockquote:Me,code:we,def:Le,fences:ye,heading:Pe,hr:B,html:ze,lheading:ae,list:_e,newline:Oe,paragraph:le,table:_,text:$e},se=d("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",B).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",H).getRegex(),Ee={...W,lheading:Se,table:se,paragraph:d(F).replace("hr",B).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",se).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",H).getRegex()},Ie={...W,html:d(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",K).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:d(F).replace("hr",B).replace("heading",` *#{1,6} *[^
14
+ ]`).replace("lheading",ae).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ae=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ce=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ue=/^( {2,}|\\)\n(?!\s*$)/,Be=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,I=/[\p{P}\p{S}]/u,Z=/[\s\p{P}\p{S}]/u,X=/[^\s\p{P}\p{S}]/u,De=d(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Z).getRegex(),pe=/(?!~)[\p{P}\p{S}]/u,qe=/(?!~)[\s\p{P}\p{S}]/u,ve=/(?:[^\s\p{P}\p{S}]|~)/u,He=d(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Te?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),ce=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ze=d(ce,"u").replace(/punct/g,I).getRegex(),Ge=d(ce,"u").replace(/punct/g,pe).getRegex(),he="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ne=d(he,"gu").replace(/notPunctSpace/g,X).replace(/punctSpace/g,Z).replace(/punct/g,I).getRegex(),Qe=d(he,"gu").replace(/notPunctSpace/g,ve).replace(/punctSpace/g,qe).replace(/punct/g,pe).getRegex(),je=d("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,X).replace(/punctSpace/g,Z).replace(/punct/g,I).getRegex(),Fe=d(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,I).getRegex(),Ue="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Ke=d(Ue,"gu").replace(/notPunctSpace/g,X).replace(/punctSpace/g,Z).replace(/punct/g,I).getRegex(),We=d(/\\(punct)/,"gu").replace(/punct/g,I).getRegex(),Xe=d(/^<(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(),Je=d(K).replace("(?:-->|$)","-->").getRegex(),Ve=d("^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",Je).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),v=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Ye=d(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",v).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ke=d(/^!?\[(label)\]\[(ref)\]/).replace("label",v).replace("ref",U).getRegex(),de=d(/^!?\[(ref)\](?:\[\])?/).replace("ref",U).getRegex(),et=d("reflink|nolink(?!\\()","g").replace("reflink",ke).replace("nolink",de).getRegex(),ie=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,J={_backpedal:_,anyPunctuation:We,autolink:Xe,blockSkip:He,br:ue,code:Ce,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:Ze,emStrongRDelimAst:Ne,emStrongRDelimUnd:je,escape:Ae,link:Ye,nolink:de,punctuation:De,reflink:ke,reflinkSearch:et,tag:Ve,text:Be,url:_},tt={...J,link:d(/^!?\[(label)\]\((.*?)\)/).replace("label",v).getRegex(),reflink:d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",v).getRegex()},Q={...J,emStrongRDelimAst:Qe,emStrongLDelim:Ge,delLDelim:Fe,delRDelim:Ke,url:d(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ie).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:d(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ie).getRegex()},nt={...Q,br:d(ue).replace("{2,}","*").getRegex(),text:d(Q.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},D={normal:W,gfm:Ee,pedantic:Ie},A={normal:J,gfm:Q,breaks:nt,pedantic:tt};var rt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ge=l=>rt[l];function O(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ge)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ge);return l}function V(l){try{l=encodeURI(l).replace(m.percentDecode,"%")}catch{return null}return l}function Y(l,e){let t=l.replace(m.findPipe,(r,i,o)=>{let u=!1,a=i;for(;--a>=0&&o[a]==="\\";)u=!u;return u?"|":" |"}),n=t.split(m.splitPipe),s=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(;s<n.length;s++)n[s]=n[s].trim().replace(m.slashPipe,"|");return n}function $(l,e,t){let n=l.length;if(n===0)return"";let s=0;for(;s<n;){let r=l.charAt(n-s-1);if(r===e&&!t)s++;else if(r!==e&&t)s++;else break}return l.slice(0,n-s)}function ee(l){let e=l.split(`
15
+ `),t=e.length-1;for(;t>=0&&m.blankLine.test(e[t]);)t--;return e.length-t<=2?l:e.slice(0,t+1).join(`
16
+ `)}function fe(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]==="\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function me(l,e=0){let t=e,n="";for(let s of l)if(s===" "){let r=4-t%4;n+=" ".repeat(r),t+=r}else n+=s,t++;return n}function xe(l,e,t,n,s){let r=e.href,i=e.title||null,o=l[1].replace(s.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:l[0].charAt(0)==="!"?"image":"link",raw:t,href:r,title:i,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,u}function st(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let s=n[1];return e.split(`
17
+ `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[o]=i;return o.length>=s.length?r.slice(s.length):r}).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]:ee(t[0]),s=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:s}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=st(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:s}}}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 s=$(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.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
+ `),s="",r="",i=[];for(;n.length>0;){let o=!1,u=[],a;for(a=0;a<n.length;a++)if(this.rules.other.blockquoteStart.test(n[a]))u.push(n[a]),o=!0;else if(!o)u.push(n[a]);else break;n=n.slice(a);let c=u.join(`
23
+ `),p=c.replace(this.rules.other.blockquoteSetextReplace,`
24
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s}
25
+ ${c}`:c,r=r?`${r}
26
+ ${p}`:p;let k=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,i,!0),this.lexer.state.top=k,n.length===0)break;let h=i.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);i[i.length-1]=S,s=s.substring(0,s.length-R.raw.length)+S.raw,r=r.substring(0,r.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);i[i.length-1]=S,s=s.substring(0,s.length-h.raw.length)+S.raw,r=r.substring(0,r.length-R.raw.length)+S.raw,n=f.substring(i.at(-1).raw.length).split(`
31
+ `);continue}}return{type:"blockquote",raw:s,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");let i=this.rules.other.listItemRegex(n),o=!1;for(;e;){let a=!1,c="",p="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;c=t[0],e=e.substring(c.length);let k=me(t[2].split(`
32
+ `,1)[0],t[1].length),h=e.split(`
33
+ `,1)[0],R=!k.trim(),f=0;if(this.options.pedantic?(f=2,p=k.trimStart()):R?f=t[1].length+1:(f=k.search(this.rules.other.nonSpaceChar),f=f>4?1:f,p=k.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(c+=h+`
34
+ `,e=e.substring(h.length+1),a=!0),!a){let S=this.rules.other.nextBulletRegex(f),te=this.rules.other.hrRegex(f),ne=this.rules.other.fencesBeginRegex(f),re=this.rules.other.headingBeginRegex(f),be=this.rules.other.htmlBeginRegex(f),Re=this.rules.other.blockquoteBeginRegex(f);for(;e;){let G=e.split(`
35
+ `,1)[0],C;if(h=G,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),C=h):C=h.replace(this.rules.other.tabCharGlobal," "),ne.test(h)||re.test(h)||be.test(h)||Re.test(h)||S.test(h)||te.test(h))break;if(C.search(this.rules.other.nonSpaceChar)>=f||!h.trim())p+=`
36
+ `+C.slice(f);else{if(R||k.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||ne.test(k)||re.test(k)||te.test(k))break;p+=`
37
+ `+h}R=!h.trim(),c+=G+`
38
+ `,e=e.substring(G.length+1),k=C.slice(f)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(o=!0)),r.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(p),loose:!1,text:p,tokens:[]}),r.raw+=c}let u=r.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let a of r.items){this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]);let c=a.tokens[0];if(a.task&&(c?.type==="text"||c?.type==="paragraph")){a.text=a.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let k=this.lexer.inlineQueue.length-1;k>=0;k--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[k].src)){this.lexer.inlineQueue[k].src=this.lexer.inlineQueue[k].src.replace(this.rules.other.listReplaceTask,"");break}let p=this.rules.other.listTaskCheckbox.exec(a.raw);if(p){let k={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};a.checked=k.checked,r.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=k.raw+a.tokens[0].raw,a.tokens[0].text=k.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(k)):a.tokens.unshift({type:"paragraph",raw:k.raw,text:k.raw,tokens:[k]}):a.tokens.unshift(k)}}else a.task&&(a.task=!1);if(!r.loose){let p=a.tokens.filter(h=>h.type==="space"),k=p.length>0&&p.some(h=>this.rules.other.anyLine.test(h.raw));r.loose=k}}if(r.loose)for(let a of r.items){a.loose=!0;for(let c of a.tokens)c.type==="text"&&(c.type="paragraph")}return r}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=ee(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," "),s=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=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:s,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Y(t[1]),s=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
40
+ `):[],i={type:"table",raw:$(t[0],`
41
+ `),header:[],align:[],rows:[]};if(n.length===s.length){for(let o of s)this.rules.other.tableAlignRight.test(o)?i.align.push("right"):this.rules.other.tableAlignCenter.test(o)?i.align.push("center"):this.rules.other.tableAlignLeft.test(o)?i.align.push("left"):i.align.push(null);for(let o=0;o<n.length;o++)i.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:i.align[o]});for(let o of r)i.rows.push(Y(o,i.header.length).map((u,a)=>({text:u,tokens:this.lexer.inline(u),header:!1,align:i.align[a]})));return i}}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 i=$(n.slice(0,-1),"\\");if((n.length-i.length)%2===0)return}else{let i=fe(t[2],"()");if(i===-2)return;if(i>-1){let u=(t[0].indexOf("!")===0?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,u).trim(),t[3]=""}}let s=t[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(s);i&&(s=i[1],r=i[3])}else r=t[3]?t[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),xe(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.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 s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[s.toLowerCase()];if(!r){let i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return xe(n,r,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(s[1]||s[3]||"")||!n||this.rules.inline.punctuation.exec(n)){let i=[...s[0]].length-1,o,u,a=i,c=0,p=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,t=t.slice(-1*e.length+i);(s=p.exec(t))!==null;){if(o=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!o)continue;if(u=[...o].length,s[3]||s[4]){a+=u;continue}else if((s[5]||s[6])&&i%3&&!((i+u)%3)){c+=u;continue}if(a-=u,a>0)continue;u=Math.min(u,u+a+c);let k=[...s[0]][0].length,h=e.slice(0,i+s.index+k+u);if(Math.min(i,u)%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," "),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(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 s=this.rules.inline.delLDelim.exec(e);if(!s)return;if(!(s[1]||"")||!n||this.rules.inline.punctuation.exec(n)){let i=[...s[0]].length-1,o,u,a=i,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+i);(s=c.exec(t))!==null;){if(o=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!o||(u=[...o].length,u!==i))continue;if(s[3]||s[4]){a+=u;continue}if(a-=u,a>0)continue;u=Math.min(u,u+a);let p=[...s[0]][0].length,k=e.slice(0,i+s.index+p+u),h=k.slice(i,-i);return{type:"del",raw:k,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]==="@"?(n=t[1],s="mailto:"+n):(n=t[1],s=n),{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,s;if(t[2]==="@")n=t[0],s="mailto:"+n;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(r!==t[0]);n=t[0],t[1]==="www."?s="http://"+t[0]:s=t[0]}return{type:"link",raw:t[0],text:n,href:s,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 l{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:D.normal,inline:A.normal};this.options.pedantic?(t.block=D.pedantic,t.inline=A.pedantic):this.options.gfm&&(t.block=D.gfm,this.options.breaks?t.inline=A.breaks:t.inline=A.gfm),this.tokenizer.rules=t}static get rules(){return{block:D,inline:A}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(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){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(m.tabCharGlobal," ").replace(m.spaceLine,""));let s=1/0;for(;e;){if(e.length<s)s=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let r;if(this.options.extensions?.block?.some(o=>(r=o.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 o=t.at(-1);r.raw.length===1&&o!==void 0?o.raw+=`
45
+ `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let o=t.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=(o.raw.endsWith(`
46
+ `)?"":`
47
+ `)+r.raw,o.text+=`
48
+ `+r.text,this.inlineQueue.at(-1).src=o.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 o=t.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=(o.raw.endsWith(`
49
+ `)?"":`
50
+ `)+r.raw,o.text+=`
51
+ `+r.raw,this.inlineQueue.at(-1).src=o.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 o=1/0,u=e.slice(1),a;this.options.extensions.startBlock.forEach(c=>{a=c.call({lexer:this},u),typeof a=="number"&&a>=0&&(o=Math.min(o,a))}),o<1/0&&o>=0&&(i=e.substring(0,o+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let o=t.at(-1);n&&o?.type==="paragraph"?(o.raw+=(o.raw.endsWith(`
52
+ `)?"":`
53
+ `)+r.raw,o.text+=`
54
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.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 o=t.at(-1);o?.type==="text"?(o.raw+=(o.raw.endsWith(`
55
+ `)?"":`
56
+ `)+r.raw,o.text+=`
57
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}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,s=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)a.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,s.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)r=s[2]?s[2].length:0,n=n.slice(0,s.index+r)+"["+"a".repeat(s[0].length-r-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,o="",u=1/0;for(;e;){if(e.length<u)u=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(o=""),i=!1;let a;if(this.options.extensions?.inline?.some(p=>(a=p.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let p=t.at(-1);a.type==="text"&&p?.type==="text"?(p.raw+=a.raw,p.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,n,o)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,n,o)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let c=e;if(this.options.extensions?.startInline){let p=1/0,k=e.slice(1),h;this.options.extensions.startInline.forEach(R=>{h=R.call({lexer:this},k),typeof h=="number"&&h>=0&&(p=Math.min(p,h))}),p<1/0&&p>=0&&(c=e.substring(0,p+1))}if(a=this.tokenizer.inlineText(c)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(o=a.raw.slice(-1)),i=!0;let p=t.at(-1);p?.type==="text"?(p.raw+=a.raw,p.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}};var y=class{options;parser;constructor(e){this.options=e||T}space(e){return""}code({text:e,lang:t,escaped:n}){let s=(t||"").match(m.notSpaceStart)?.[0],r=e.replace(m.endingNewline,"")+`
58
+ `;return s?'<pre><code class="language-'+O(s)+'">'+(n?r:O(r,!0))+`</code></pre>
59
+ `:"<pre><code>"+(n?r:O(r,!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,s="";for(let o=0;o<e.items.length;o++){let u=e.items[o];s+=this.listitem(u)}let r=t?"ol":"ul",i=t&&n!==1?' start="'+n+'"':"";return"<"+r+i+`>
65
+ `+s+"</"+r+`>
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 r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let s="";for(let r=0;r<e.rows.length;r++){let i=e.rows[r];n="";for(let o=0;o<i.length;o++)n+=this.tablecell(i[o]);s+=this.tablerow({text:n})}return s&&(s=`<tbody>${s}</tbody>`),`<table>
69
+ <thead>
70
+ `+t+`</thead>
71
+ `+s+`</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 s=this.parser.parseInline(n),r=V(e);if(r===null)return s;e=r;let i='<a href="'+e+'"';return t&&(i+=' title="'+O(t)+'"'),i+=">"+s+"</a>",i}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=V(e);if(r===null)return O(n);e=r;let i=`<img src="${e}" alt="${O(n)}"`;return t&&(i+=` title="${O(t)}"`),i+=">",i}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 l{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 l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e){this.renderer.parser=this;let t="";for(let n=0;n<e.length;n++){let s=e[n];if(this.options.extensions?.renderers?.[s.type]){let i=s,o=this.options.extensions.renderers[i.type].call({parser:this},i);if(o!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(i.type)){t+=o||"";continue}}let r=s;switch(r.type){case"space":{t+=this.renderer.space(r);break}case"hr":{t+=this.renderer.hr(r);break}case"heading":{t+=this.renderer.heading(r);break}case"code":{t+=this.renderer.code(r);break}case"table":{t+=this.renderer.table(r);break}case"blockquote":{t+=this.renderer.blockquote(r);break}case"list":{t+=this.renderer.list(r);break}case"checkbox":{t+=this.renderer.checkbox(r);break}case"html":{t+=this.renderer.html(r);break}case"def":{t+=this.renderer.def(r);break}case"paragraph":{t+=this.renderer.paragraph(r);break}case"text":{t+=this.renderer.text(r);break}default:{let i='Token with "'+r.type+'" type was not found.';if(this.options.silent)return console.error(i),"";throw new Error(i)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n="";for(let s=0;s<e.length;s++){let r=e[s];if(this.options.extensions?.renderers?.[r.type]){let o=this.options.extensions.renderers[r.type].call({parser:this},r);if(o!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){n+=o||"";continue}}let i=r;switch(i.type){case"escape":{n+=t.text(i);break}case"html":{n+=t.html(i);break}case"link":{n+=t.link(i);break}case"image":{n+=t.image(i);break}case"checkbox":{n+=t.checkbox(i);break}case"strong":{n+=t.strong(i);break}case"em":{n+=t.em(i);break}case"codespan":{n+=t.codespan(i);break}case"br":{n+=t.br(i);break}case"del":{n+=t.del(i);break}case"text":{n+=t.text(i);break}default:{let o='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}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 q=class{defaults=M();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 s of e)switch(n=n.concat(t.call(this,s)),s.type){case"table":{let r=s;for(let i of r.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of r.rows)for(let o of i)n=n.concat(this.walkTokens(o.tokens,t));break}case"list":{let r=s;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=s;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(i=>{let o=r[i].flat(1/0);n=n.concat(this.walkTokens(o,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let i=t.renderers[r.name];i?t.renderers[r.name]=function(...o){let u=r.renderer.apply(this,o);return u===!1&&(u=i.apply(this,o)),u}:t.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=t[r.level];i?i.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level==="block"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level==="inline"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),s.extensions=t),n.renderer){let r=this.defaults.renderer||new y(this.defaults);for(let i in n.renderer){if(!(i in r))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let o=i,u=n.renderer[o],a=r[o];r[o]=(...c)=>{let p=u.apply(r,c);return p===!1&&(p=a.apply(r,c)),p||""}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new w(this.defaults);for(let i in n.tokenizer){if(!(i in r))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let o=i,u=n.tokenizer[o],a=r[o];r[o]=(...c)=>{let p=u.apply(r,c);return p===!1&&(p=a.apply(r,c)),p}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new P;for(let i in n.hooks){if(!(i in r))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let o=i,u=n.hooks[o],a=r[o];P.passThroughHooks.has(i)?r[o]=c=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(i))return(async()=>{let k=await u.call(r,c);return a.call(r,k)})();let p=u.call(r,c);return a.call(r,p)}:r[o]=(...c)=>{if(this.defaults.async)return(async()=>{let k=await u.apply(r,c);return k===!1&&(k=await a.apply(r,c)),k})();let p=u.apply(r,c);return p===!1&&(p=a.apply(r,c)),p}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,i=n.walkTokens;s.walkTokens=function(o){let u=[];return u.push(i.call(this,o)),r&&(u=u.concat(r.call(this,o))),u}}this.defaults={...this.defaults,...s}}),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,s)=>{let r={...s},i={...this.defaults,...r},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return o(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 o(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let u=i.hooks?await i.hooks.preprocess(n):n,c=await(i.hooks?await i.hooks.provideLexer(e):e?x.lex:x.lexInline)(u,i),p=i.hooks?await i.hooks.processAllTokens(c):c;i.walkTokens&&await Promise.all(this.walkTokens(p,i.walkTokens));let h=await(i.hooks?await i.hooks.provideParser(e):e?b.parse:b.parseInline)(p,i);return i.hooks?await i.hooks.postprocess(h):h})().catch(o);try{i.hooks&&(n=i.hooks.preprocess(n));let a=(i.hooks?i.hooks.provideLexer(e):e?x.lex:x.lexInline)(n,i);i.hooks&&(a=i.hooks.processAllTokens(a)),i.walkTokens&&this.walkTokens(a,i.walkTokens);let p=(i.hooks?i.hooks.provideParser(e):e?b.parse:b.parseInline)(a,i);return i.hooks&&(p=i.hooks.postprocess(p)),p}catch(u){return o(u)}}}onError(e,t){return n=>{if(n.message+=`
76
+ Please report this to https://github.com/markedjs/marked.`,e){let s="<p>An error occurred:</p><pre>"+O(n.message+"",!0)+"</pre>";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}};var z=new q;function g(l,e){return z.parse(l,e)}g.options=g.setOptions=function(l){return z.setOptions(l),g.defaults=z.defaults,N(g.defaults),g};g.getDefaults=M;g.defaults=T;g.use=function(...l){return z.use(...l),g.defaults=z.defaults,N(g.defaults),g};g.walkTokens=function(l,e){return z.walkTokens(l,e)};g.parseInline=z.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 Ft=g.options,Ut=g.setOptions,Kt=g.use,Wt=g.walkTokens,Xt=g.parseInline,Jt=g,Vt=b.parse,Yt=x.lex;export{P as Hooks,x as Lexer,q as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,M as getDefaults,Yt as lexer,g as marked,Ft as options,Jt as parse,Xt as parseInline,Vt as parser,Ut as setOptions,Kt as use,Wt as walkTokens};
2189
77
  //# sourceMappingURL=marked.esm.js.map