@alexlit/lint-kit 214.0.1 → 214.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/package.json +4 -4
  3. package/packages/config-markdownlint/node_modules/ansi-regex/index.d.ts +33 -0
  4. package/packages/config-markdownlint/node_modules/ansi-regex/index.js +15 -0
  5. package/packages/config-markdownlint/node_modules/ansi-regex/license +9 -0
  6. package/packages/config-markdownlint/node_modules/ansi-regex/package.json +61 -0
  7. package/packages/config-markdownlint/node_modules/ansi-regex/readme.md +66 -0
  8. package/packages/config-markdownlint/node_modules/markdownlint/CHANGELOG.md +553 -0
  9. package/packages/config-markdownlint/node_modules/markdownlint/CONTRIBUTING.md +77 -0
  10. package/packages/config-markdownlint/node_modules/markdownlint/LICENSE +21 -0
  11. package/packages/config-markdownlint/node_modules/markdownlint/README.md +1112 -0
  12. package/packages/config-markdownlint/node_modules/markdownlint/doc/CustomRules.md +196 -0
  13. package/packages/config-markdownlint/node_modules/markdownlint/doc/Prettier.md +27 -0
  14. package/packages/config-markdownlint/node_modules/markdownlint/doc/ReleaseProcess.md +20 -0
  15. package/packages/config-markdownlint/node_modules/markdownlint/doc/Rules.md +2909 -0
  16. package/packages/config-markdownlint/node_modules/markdownlint/doc/md001.md +51 -0
  17. package/packages/config-markdownlint/node_modules/markdownlint/doc/md003.md +59 -0
  18. package/packages/config-markdownlint/node_modules/markdownlint/doc/md004.md +50 -0
  19. package/packages/config-markdownlint/node_modules/markdownlint/doc/md005.md +53 -0
  20. package/packages/config-markdownlint/node_modules/markdownlint/doc/md007.md +52 -0
  21. package/packages/config-markdownlint/node_modules/markdownlint/doc/md009.md +50 -0
  22. package/packages/config-markdownlint/node_modules/markdownlint/doc/md010.md +61 -0
  23. package/packages/config-markdownlint/node_modules/markdownlint/doc/md011.md +30 -0
  24. package/packages/config-markdownlint/node_modules/markdownlint/doc/md012.md +38 -0
  25. package/packages/config-markdownlint/node_modules/markdownlint/doc/md013.md +58 -0
  26. package/packages/config-markdownlint/node_modules/markdownlint/doc/md014.md +54 -0
  27. package/packages/config-markdownlint/node_modules/markdownlint/doc/md018.md +27 -0
  28. package/packages/config-markdownlint/node_modules/markdownlint/doc/md019.md +28 -0
  29. package/packages/config-markdownlint/node_modules/markdownlint/doc/md020.md +29 -0
  30. package/packages/config-markdownlint/node_modules/markdownlint/doc/md021.md +31 -0
  31. package/packages/config-markdownlint/node_modules/markdownlint/doc/md022.md +67 -0
  32. package/packages/config-markdownlint/node_modules/markdownlint/doc/md023.md +33 -0
  33. package/packages/config-markdownlint/node_modules/markdownlint/doc/md024.md +44 -0
  34. package/packages/config-markdownlint/node_modules/markdownlint/doc/md025.md +49 -0
  35. package/packages/config-markdownlint/node_modules/markdownlint/doc/md026.md +40 -0
  36. package/packages/config-markdownlint/node_modules/markdownlint/doc/md027.md +32 -0
  37. package/packages/config-markdownlint/node_modules/markdownlint/doc/md028.md +44 -0
  38. package/packages/config-markdownlint/node_modules/markdownlint/doc/md029.md +110 -0
  39. package/packages/config-markdownlint/node_modules/markdownlint/doc/md030.md +82 -0
  40. package/packages/config-markdownlint/node_modules/markdownlint/doc/md031.md +50 -0
  41. package/packages/config-markdownlint/node_modules/markdownlint/doc/md032.md +55 -0
  42. package/packages/config-markdownlint/node_modules/markdownlint/doc/md033.md +33 -0
  43. package/packages/config-markdownlint/node_modules/markdownlint/doc/md034.md +55 -0
  44. package/packages/config-markdownlint/node_modules/markdownlint/doc/md035.md +44 -0
  45. package/packages/config-markdownlint/node_modules/markdownlint/doc/md036.md +45 -0
  46. package/packages/config-markdownlint/node_modules/markdownlint/doc/md037.md +37 -0
  47. package/packages/config-markdownlint/node_modules/markdownlint/doc/md038.md +52 -0
  48. package/packages/config-markdownlint/node_modules/markdownlint/doc/md039.md +21 -0
  49. package/packages/config-markdownlint/node_modules/markdownlint/doc/md040.md +52 -0
  50. package/packages/config-markdownlint/node_modules/markdownlint/doc/md041.md +64 -0
  51. package/packages/config-markdownlint/node_modules/markdownlint/doc/md042.md +38 -0
  52. package/packages/config-markdownlint/node_modules/markdownlint/doc/md043.md +125 -0
  53. package/packages/config-markdownlint/node_modules/markdownlint/doc/md044.md +45 -0
  54. package/packages/config-markdownlint/node_modules/markdownlint/doc/md045.md +48 -0
  55. package/packages/config-markdownlint/node_modules/markdownlint/doc/md046.md +40 -0
  56. package/packages/config-markdownlint/node_modules/markdownlint/doc/md047.md +34 -0
  57. package/packages/config-markdownlint/node_modules/markdownlint/doc/md048.md +42 -0
  58. package/packages/config-markdownlint/node_modules/markdownlint/doc/md049.md +36 -0
  59. package/packages/config-markdownlint/node_modules/markdownlint/doc/md050.md +35 -0
  60. package/packages/config-markdownlint/node_modules/markdownlint/doc/md051.md +117 -0
  61. package/packages/config-markdownlint/node_modules/markdownlint/doc/md052.md +52 -0
  62. package/packages/config-markdownlint/node_modules/markdownlint/doc/md053.md +38 -0
  63. package/packages/config-markdownlint/node_modules/markdownlint/doc/md054.md +100 -0
  64. package/packages/config-markdownlint/node_modules/markdownlint/doc/md055.md +58 -0
  65. package/packages/config-markdownlint/node_modules/markdownlint/doc/md056.md +37 -0
  66. package/packages/config-markdownlint/node_modules/markdownlint/doc/md058.md +48 -0
  67. package/packages/config-markdownlint/node_modules/markdownlint/doc/md059.md +33 -0
  68. package/packages/config-markdownlint/node_modules/markdownlint/doc/md060.md +131 -0
  69. package/packages/config-markdownlint/node_modules/markdownlint/helpers/LICENSE +21 -0
  70. package/packages/config-markdownlint/node_modules/markdownlint/helpers/README.md +29 -0
  71. package/packages/config-markdownlint/node_modules/markdownlint/helpers/helpers.cjs +711 -0
  72. package/packages/config-markdownlint/node_modules/markdownlint/helpers/micromark-helpers.cjs +328 -0
  73. package/packages/config-markdownlint/node_modules/markdownlint/helpers/package.json +22 -0
  74. package/packages/config-markdownlint/node_modules/markdownlint/helpers/shared.cjs +16 -0
  75. package/packages/config-markdownlint/node_modules/markdownlint/lib/cache.mjs +81 -0
  76. package/packages/config-markdownlint/node_modules/markdownlint/lib/configuration-strict.d.ts +2429 -0
  77. package/packages/config-markdownlint/node_modules/markdownlint/lib/configuration.d.ts +8 -0
  78. package/packages/config-markdownlint/node_modules/markdownlint/lib/constants.mjs +14 -0
  79. package/packages/config-markdownlint/node_modules/markdownlint/lib/defer-require.cjs +19 -0
  80. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-async.d.mts +1 -0
  81. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-async.mjs +3 -0
  82. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-promise.d.mts +1 -0
  83. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-promise.mjs +3 -0
  84. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-sync.d.mts +1 -0
  85. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports-sync.mjs +3 -0
  86. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports.d.mts +58 -0
  87. package/packages/config-markdownlint/node_modules/markdownlint/lib/exports.mjs +33 -0
  88. package/packages/config-markdownlint/node_modules/markdownlint/lib/markdownit.cjs +178 -0
  89. package/packages/config-markdownlint/node_modules/markdownlint/lib/markdownlint.d.mts +757 -0
  90. package/packages/config-markdownlint/node_modules/markdownlint/lib/markdownlint.mjs +1588 -0
  91. package/packages/config-markdownlint/node_modules/markdownlint/lib/md001.mjs +32 -0
  92. package/packages/config-markdownlint/node_modules/markdownlint/lib/md003.mjs +47 -0
  93. package/packages/config-markdownlint/node_modules/markdownlint/lib/md004.mjs +73 -0
  94. package/packages/config-markdownlint/node_modules/markdownlint/lib/md005.mjs +69 -0
  95. package/packages/config-markdownlint/node_modules/markdownlint/lib/md007.mjs +84 -0
  96. package/packages/config-markdownlint/node_modules/markdownlint/lib/md009.mjs +95 -0
  97. package/packages/config-markdownlint/node_modules/markdownlint/lib/md010.mjs +78 -0
  98. package/packages/config-markdownlint/node_modules/markdownlint/lib/md011.mjs +59 -0
  99. package/packages/config-markdownlint/node_modules/markdownlint/lib/md012.mjs +40 -0
  100. package/packages/config-markdownlint/node_modules/markdownlint/lib/md013.mjs +95 -0
  101. package/packages/config-markdownlint/node_modules/markdownlint/lib/md014.mjs +47 -0
  102. package/packages/config-markdownlint/node_modules/markdownlint/lib/md018.mjs +43 -0
  103. package/packages/config-markdownlint/node_modules/markdownlint/lib/md019-md021.mjs +78 -0
  104. package/packages/config-markdownlint/node_modules/markdownlint/lib/md020.mjs +68 -0
  105. package/packages/config-markdownlint/node_modules/markdownlint/lib/md022.mjs +103 -0
  106. package/packages/config-markdownlint/node_modules/markdownlint/lib/md023.mjs +37 -0
  107. package/packages/config-markdownlint/node_modules/markdownlint/lib/md024.mjs +45 -0
  108. package/packages/config-markdownlint/node_modules/markdownlint/lib/md025.mjs +45 -0
  109. package/packages/config-markdownlint/node_modules/markdownlint/lib/md026.mjs +46 -0
  110. package/packages/config-markdownlint/node_modules/markdownlint/lib/md027.mjs +50 -0
  111. package/packages/config-markdownlint/node_modules/markdownlint/lib/md028.mjs +38 -0
  112. package/packages/config-markdownlint/node_modules/markdownlint/lib/md029.mjs +95 -0
  113. package/packages/config-markdownlint/node_modules/markdownlint/lib/md030.mjs +57 -0
  114. package/packages/config-markdownlint/node_modules/markdownlint/lib/md031.mjs +61 -0
  115. package/packages/config-markdownlint/node_modules/markdownlint/lib/md032.mjs +79 -0
  116. package/packages/config-markdownlint/node_modules/markdownlint/lib/md033.mjs +46 -0
  117. package/packages/config-markdownlint/node_modules/markdownlint/lib/md034.mjs +92 -0
  118. package/packages/config-markdownlint/node_modules/markdownlint/lib/md035.mjs +23 -0
  119. package/packages/config-markdownlint/node_modules/markdownlint/lib/md036.mjs +55 -0
  120. package/packages/config-markdownlint/node_modules/markdownlint/lib/md037.mjs +93 -0
  121. package/packages/config-markdownlint/node_modules/markdownlint/lib/md038.mjs +73 -0
  122. package/packages/config-markdownlint/node_modules/markdownlint/lib/md039.mjs +63 -0
  123. package/packages/config-markdownlint/node_modules/markdownlint/lib/md040.mjs +32 -0
  124. package/packages/config-markdownlint/node_modules/markdownlint/lib/md041.mjs +71 -0
  125. package/packages/config-markdownlint/node_modules/markdownlint/lib/md042.mjs +58 -0
  126. package/packages/config-markdownlint/node_modules/markdownlint/lib/md043.mjs +126 -0
  127. package/packages/config-markdownlint/node_modules/markdownlint/lib/md044.mjs +110 -0
  128. package/packages/config-markdownlint/node_modules/markdownlint/lib/md045.mjs +61 -0
  129. package/packages/config-markdownlint/node_modules/markdownlint/lib/md046.mjs +31 -0
  130. package/packages/config-markdownlint/node_modules/markdownlint/lib/md047.mjs +28 -0
  131. package/packages/config-markdownlint/node_modules/markdownlint/lib/md048.mjs +45 -0
  132. package/packages/config-markdownlint/node_modules/markdownlint/lib/md049-md050.mjs +115 -0
  133. package/packages/config-markdownlint/node_modules/markdownlint/lib/md051.mjs +173 -0
  134. package/packages/config-markdownlint/node_modules/markdownlint/lib/md052.mjs +40 -0
  135. package/packages/config-markdownlint/node_modules/markdownlint/lib/md053.mjs +60 -0
  136. package/packages/config-markdownlint/node_modules/markdownlint/lib/md054.mjs +122 -0
  137. package/packages/config-markdownlint/node_modules/markdownlint/lib/md055.mjs +82 -0
  138. package/packages/config-markdownlint/node_modules/markdownlint/lib/md056.mjs +50 -0
  139. package/packages/config-markdownlint/node_modules/markdownlint/lib/md058.mjs +57 -0
  140. package/packages/config-markdownlint/node_modules/markdownlint/lib/md059.mjs +71 -0
  141. package/packages/config-markdownlint/node_modules/markdownlint/lib/md060.mjs +229 -0
  142. package/packages/config-markdownlint/node_modules/markdownlint/lib/micromark-parse.mjs +338 -0
  143. package/packages/config-markdownlint/node_modules/markdownlint/lib/micromark-types.d.mts +11 -0
  144. package/packages/config-markdownlint/node_modules/markdownlint/lib/node-imports-browser.mjs +22 -0
  145. package/packages/config-markdownlint/node_modules/markdownlint/lib/node-imports-node.mjs +11 -0
  146. package/packages/config-markdownlint/node_modules/markdownlint/lib/parse-configuration.mjs +47 -0
  147. package/packages/config-markdownlint/node_modules/markdownlint/lib/resolve-module.cjs +53 -0
  148. package/packages/config-markdownlint/node_modules/markdownlint/lib/resolve-module.d.cts +39 -0
  149. package/packages/config-markdownlint/node_modules/markdownlint/lib/rules.mjs +122 -0
  150. package/packages/config-markdownlint/node_modules/markdownlint/lib/types.d.mts +13 -0
  151. package/packages/config-markdownlint/node_modules/markdownlint/package.json +119 -0
  152. package/packages/config-markdownlint/node_modules/markdownlint/schema/.markdownlint.jsonc +349 -0
  153. package/packages/config-markdownlint/node_modules/markdownlint/schema/.markdownlint.yaml +310 -0
  154. package/packages/config-markdownlint/node_modules/markdownlint/schema/ValidatingConfiguration.md +26 -0
  155. package/packages/config-markdownlint/node_modules/markdownlint/schema/markdownlint-config-schema-strict.json +5146 -0
  156. package/packages/config-markdownlint/node_modules/markdownlint/schema/markdownlint-config-schema.json +5151 -0
  157. package/packages/config-markdownlint/node_modules/markdownlint/style/all.json +5 -0
  158. package/packages/config-markdownlint/node_modules/markdownlint/style/cirosantilli.json +22 -0
  159. package/packages/config-markdownlint/node_modules/markdownlint/style/prettier.json +27 -0
  160. package/packages/config-markdownlint/node_modules/markdownlint/style/relaxed.json +12 -0
  161. package/packages/config-markdownlint/node_modules/micromark/dev/index.d.ts +82 -0
  162. package/packages/config-markdownlint/node_modules/micromark/dev/index.d.ts.map +1 -0
  163. package/packages/config-markdownlint/node_modules/micromark/dev/index.js +68 -0
  164. package/packages/config-markdownlint/node_modules/micromark/dev/lib/compile.d.ts +16 -0
  165. package/packages/config-markdownlint/node_modules/micromark/dev/lib/compile.d.ts.map +1 -0
  166. package/packages/config-markdownlint/node_modules/micromark/dev/lib/compile.js +1162 -0
  167. package/packages/config-markdownlint/node_modules/micromark/dev/lib/constructs.d.ts +73 -0
  168. package/packages/config-markdownlint/node_modules/micromark/dev/lib/constructs.d.ts.map +1 -0
  169. package/packages/config-markdownlint/node_modules/micromark/dev/lib/constructs.js +101 -0
  170. package/packages/config-markdownlint/node_modules/micromark/dev/lib/create-tokenizer.d.ts +46 -0
  171. package/packages/config-markdownlint/node_modules/micromark/dev/lib/create-tokenizer.d.ts.map +1 -0
  172. package/packages/config-markdownlint/node_modules/micromark/dev/lib/create-tokenizer.js +718 -0
  173. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/content.d.ts +4 -0
  174. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/content.d.ts.map +1 -0
  175. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/content.js +99 -0
  176. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/document.d.ts +10 -0
  177. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/document.d.ts.map +1 -0
  178. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/document.js +449 -0
  179. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/flow.d.ts +4 -0
  180. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/flow.d.ts.map +1 -0
  181. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/flow.js +86 -0
  182. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/text.d.ts +8 -0
  183. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/text.d.ts.map +1 -0
  184. package/packages/config-markdownlint/node_modules/micromark/dev/lib/initialize/text.js +248 -0
  185. package/packages/config-markdownlint/node_modules/micromark/dev/lib/parse.d.ts +10 -0
  186. package/packages/config-markdownlint/node_modules/micromark/dev/lib/parse.d.ts.map +1 -0
  187. package/packages/config-markdownlint/node_modules/micromark/dev/lib/parse.js +58 -0
  188. package/packages/config-markdownlint/node_modules/micromark/dev/lib/postprocess.d.ts +9 -0
  189. package/packages/config-markdownlint/node_modules/micromark/dev/lib/postprocess.d.ts.map +1 -0
  190. package/packages/config-markdownlint/node_modules/micromark/dev/lib/postprocess.js +19 -0
  191. package/packages/config-markdownlint/node_modules/micromark/dev/lib/preprocess.d.ts +13 -0
  192. package/packages/config-markdownlint/node_modules/micromark/dev/lib/preprocess.d.ts.map +1 -0
  193. package/packages/config-markdownlint/node_modules/micromark/dev/lib/preprocess.js +139 -0
  194. package/packages/config-markdownlint/node_modules/micromark/dev/stream.d.ts +35 -0
  195. package/packages/config-markdownlint/node_modules/micromark/dev/stream.d.ts.map +1 -0
  196. package/packages/config-markdownlint/node_modules/micromark/dev/stream.js +270 -0
  197. package/packages/config-markdownlint/node_modules/micromark/index.d.ts +82 -0
  198. package/packages/config-markdownlint/node_modules/micromark/index.d.ts.map +1 -0
  199. package/packages/config-markdownlint/node_modules/micromark/index.js +60 -0
  200. package/packages/config-markdownlint/node_modules/micromark/lib/compile.d.ts +16 -0
  201. package/packages/config-markdownlint/node_modules/micromark/lib/compile.d.ts.map +1 -0
  202. package/packages/config-markdownlint/node_modules/micromark/lib/compile.js +1068 -0
  203. package/packages/config-markdownlint/node_modules/micromark/lib/constructs.d.ts +73 -0
  204. package/packages/config-markdownlint/node_modules/micromark/lib/constructs.d.ts.map +1 -0
  205. package/packages/config-markdownlint/node_modules/micromark/lib/constructs.js +85 -0
  206. package/packages/config-markdownlint/node_modules/micromark/lib/create-tokenizer.d.ts +46 -0
  207. package/packages/config-markdownlint/node_modules/micromark/lib/create-tokenizer.d.ts.map +1 -0
  208. package/packages/config-markdownlint/node_modules/micromark/lib/create-tokenizer.js +613 -0
  209. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/content.d.ts +4 -0
  210. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/content.d.ts.map +1 -0
  211. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/content.js +79 -0
  212. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/document.d.ts +10 -0
  213. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/document.d.ts.map +1 -0
  214. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/document.js +370 -0
  215. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/flow.d.ts +4 -0
  216. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/flow.d.ts.map +1 -0
  217. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/flow.js +58 -0
  218. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/text.d.ts +8 -0
  219. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/text.d.ts.map +1 -0
  220. package/packages/config-markdownlint/node_modules/micromark/lib/initialize/text.js +216 -0
  221. package/packages/config-markdownlint/node_modules/micromark/lib/parse.d.ts +10 -0
  222. package/packages/config-markdownlint/node_modules/micromark/lib/parse.d.ts.map +1 -0
  223. package/packages/config-markdownlint/node_modules/micromark/lib/parse.js +56 -0
  224. package/packages/config-markdownlint/node_modules/micromark/lib/postprocess.d.ts +9 -0
  225. package/packages/config-markdownlint/node_modules/micromark/lib/postprocess.d.ts.map +1 -0
  226. package/packages/config-markdownlint/node_modules/micromark/lib/postprocess.js +18 -0
  227. package/packages/config-markdownlint/node_modules/micromark/lib/preprocess.d.ts +13 -0
  228. package/packages/config-markdownlint/node_modules/micromark/lib/preprocess.d.ts.map +1 -0
  229. package/packages/config-markdownlint/node_modules/micromark/lib/preprocess.js +112 -0
  230. package/packages/config-markdownlint/node_modules/micromark/license +22 -0
  231. package/packages/config-markdownlint/node_modules/micromark/package.json +87 -0
  232. package/packages/config-markdownlint/node_modules/micromark/readme.md +488 -0
  233. package/packages/config-markdownlint/node_modules/micromark/stream.d.ts +35 -0
  234. package/packages/config-markdownlint/node_modules/micromark/stream.d.ts.map +1 -0
  235. package/packages/config-markdownlint/node_modules/micromark/stream.js +256 -0
  236. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/index.d.ts +23 -0
  237. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/index.d.ts.map +1 -0
  238. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/index.js +22 -0
  239. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/attention.d.ts +4 -0
  240. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/attention.d.ts.map +1 -0
  241. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/attention.js +294 -0
  242. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/autolink.d.ts +4 -0
  243. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/autolink.d.ts.map +1 -0
  244. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/autolink.js +269 -0
  245. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/blank-line.d.ts +4 -0
  246. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/blank-line.d.ts.map +1 -0
  247. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/blank-line.js +62 -0
  248. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/block-quote.d.ts +4 -0
  249. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/block-quote.d.ts.map +1 -0
  250. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/block-quote.js +162 -0
  251. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-escape.d.ts +4 -0
  252. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-escape.d.ts.map +1 -0
  253. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-escape.js +69 -0
  254. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-reference.d.ts +4 -0
  255. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-reference.d.ts.map +1 -0
  256. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/character-reference.js +166 -0
  257. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-fenced.d.ts +4 -0
  258. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-fenced.d.ts.map +1 -0
  259. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-fenced.js +472 -0
  260. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-indented.d.ts +4 -0
  261. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-indented.d.ts.map +1 -0
  262. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-indented.js +178 -0
  263. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-text.d.ts +4 -0
  264. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-text.d.ts.map +1 -0
  265. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/code-text.js +257 -0
  266. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/content.d.ts +7 -0
  267. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/content.d.ts.map +1 -0
  268. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/content.js +185 -0
  269. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/definition.d.ts +4 -0
  270. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/definition.d.ts.map +1 -0
  271. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/definition.js +295 -0
  272. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.d.ts +4 -0
  273. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.d.ts.map +1 -0
  274. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js +65 -0
  275. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/heading-atx.d.ts +4 -0
  276. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/heading-atx.d.ts.map +1 -0
  277. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/heading-atx.js +229 -0
  278. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-flow.d.ts +4 -0
  279. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-flow.d.ts.map +1 -0
  280. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-flow.js +938 -0
  281. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-text.d.ts +4 -0
  282. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-text.d.ts.map +1 -0
  283. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/html-text.js +783 -0
  284. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-end.d.ts +4 -0
  285. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-end.d.ts.map +1 -0
  286. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-end.js +658 -0
  287. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-image.d.ts +4 -0
  288. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-image.d.ts.map +1 -0
  289. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-image.js +119 -0
  290. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-link.d.ts +4 -0
  291. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-link.d.ts.map +1 -0
  292. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/label-start-link.js +71 -0
  293. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/line-ending.d.ts +4 -0
  294. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/line-ending.d.ts.map +1 -0
  295. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/line-ending.js +34 -0
  296. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/list.d.ts +4 -0
  297. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/list.d.ts.map +1 -0
  298. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/list.js +306 -0
  299. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.d.ts +4 -0
  300. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.d.ts.map +1 -0
  301. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/partial-non-lazy-continuation.js +67 -0
  302. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/setext-underline.d.ts +4 -0
  303. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/setext-underline.d.ts.map +1 -0
  304. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/setext-underline.js +213 -0
  305. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/thematic-break.d.ts +4 -0
  306. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/thematic-break.d.ts.map +1 -0
  307. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/dev/lib/thematic-break.js +120 -0
  308. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/index.d.ts +23 -0
  309. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/index.d.ts.map +1 -0
  310. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/index.js +22 -0
  311. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/attention.d.ts +4 -0
  312. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/attention.d.ts.map +1 -0
  313. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/attention.js +231 -0
  314. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/autolink.d.ts +4 -0
  315. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/autolink.d.ts.map +1 -0
  316. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/autolink.js +233 -0
  317. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/blank-line.d.ts +4 -0
  318. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/blank-line.d.ts.map +1 -0
  319. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/blank-line.js +61 -0
  320. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/block-quote.d.ts +4 -0
  321. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/block-quote.d.ts.map +1 -0
  322. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/block-quote.js +143 -0
  323. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-escape.d.ts +4 -0
  324. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-escape.d.ts.map +1 -0
  325. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-escape.js +64 -0
  326. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-reference.d.ts +4 -0
  327. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-reference.d.ts.map +1 -0
  328. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/character-reference.js +149 -0
  329. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-fenced.d.ts +4 -0
  330. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-fenced.d.ts.map +1 -0
  331. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-fenced.js +422 -0
  332. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-indented.d.ts +4 -0
  333. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-indented.d.ts.map +1 -0
  334. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-indented.js +159 -0
  335. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-text.d.ts +4 -0
  336. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-text.d.ts.map +1 -0
  337. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/code-text.js +225 -0
  338. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/content.d.ts +7 -0
  339. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/content.d.ts.map +1 -0
  340. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/content.js +163 -0
  341. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/definition.d.ts +4 -0
  342. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/definition.d.ts.map +1 -0
  343. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/definition.js +254 -0
  344. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/hard-break-escape.d.ts +4 -0
  345. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/hard-break-escape.d.ts.map +1 -0
  346. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/hard-break-escape.js +60 -0
  347. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/heading-atx.d.ts +4 -0
  348. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/heading-atx.d.ts.map +1 -0
  349. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/heading-atx.js +191 -0
  350. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-flow.d.ts +4 -0
  351. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-flow.d.ts.map +1 -0
  352. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-flow.js +827 -0
  353. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-text.d.ts +4 -0
  354. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-text.d.ts.map +1 -0
  355. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/html-text.js +678 -0
  356. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-end.d.ts +4 -0
  357. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-end.d.ts.map +1 -0
  358. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-end.js +561 -0
  359. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-image.d.ts +4 -0
  360. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-image.d.ts.map +1 -0
  361. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-image.js +110 -0
  362. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-link.d.ts +4 -0
  363. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-link.d.ts.map +1 -0
  364. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/label-start-link.js +63 -0
  365. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/line-ending.d.ts +4 -0
  366. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/line-ending.d.ts.map +1 -0
  367. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/line-ending.js +33 -0
  368. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/list.d.ts +4 -0
  369. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/list.d.ts.map +1 -0
  370. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/list.js +213 -0
  371. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.d.ts +4 -0
  372. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.d.ts.map +1 -0
  373. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js +61 -0
  374. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/setext-underline.d.ts +4 -0
  375. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/setext-underline.d.ts.map +1 -0
  376. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/setext-underline.js +187 -0
  377. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/thematic-break.d.ts +4 -0
  378. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/thematic-break.d.ts.map +1 -0
  379. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/lib/thematic-break.js +102 -0
  380. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/license +22 -0
  381. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/package.json +62 -0
  382. package/packages/config-markdownlint/node_modules/micromark-core-commonmark/readme.md +171 -0
  383. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/index.d.ts +55 -0
  384. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/index.js +2 -0
  385. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.d.ts +51 -0
  386. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.d.ts.map +1 -0
  387. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.js +231 -0
  388. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/html.d.ts +11 -0
  389. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/html.d.ts.map +1 -0
  390. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/html.js +153 -0
  391. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/infer.d.ts +14 -0
  392. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/infer.d.ts.map +1 -0
  393. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/infer.js +64 -0
  394. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/syntax.d.ts +18 -0
  395. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/syntax.d.ts.map +1 -0
  396. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/dev/lib/syntax.js +964 -0
  397. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/index.d.ts +55 -0
  398. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/index.js +2 -0
  399. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/edit-map.d.ts +51 -0
  400. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/edit-map.d.ts.map +1 -0
  401. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/edit-map.js +222 -0
  402. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/html.d.ts +11 -0
  403. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/html.d.ts.map +1 -0
  404. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/html.js +135 -0
  405. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/infer.d.ts +14 -0
  406. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/infer.d.ts.map +1 -0
  407. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/infer.js +52 -0
  408. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/syntax.d.ts +18 -0
  409. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/syntax.d.ts.map +1 -0
  410. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/lib/syntax.js +846 -0
  411. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/license +22 -0
  412. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/package.json +86 -0
  413. package/packages/config-markdownlint/node_modules/micromark-extension-gfm-table/readme.md +515 -0
  414. package/packages/config-markdownlint/node_modules/micromark-util-types/index.d.ts +1315 -0
  415. package/packages/config-markdownlint/node_modules/micromark-util-types/index.js +2 -0
  416. package/packages/config-markdownlint/node_modules/micromark-util-types/license +22 -0
  417. package/packages/config-markdownlint/node_modules/micromark-util-types/package.json +37 -0
  418. package/packages/config-markdownlint/node_modules/micromark-util-types/readme.md +151 -0
  419. package/packages/config-markdownlint/node_modules/string-width/index.d.ts +39 -0
  420. package/packages/config-markdownlint/node_modules/string-width/index.js +203 -0
  421. package/packages/config-markdownlint/node_modules/string-width/license +9 -0
  422. package/packages/config-markdownlint/node_modules/string-width/package.json +65 -0
  423. package/packages/config-markdownlint/node_modules/string-width/readme.md +66 -0
  424. package/packages/config-markdownlint/node_modules/strip-ansi/index.d.ts +15 -0
  425. package/packages/config-markdownlint/node_modules/strip-ansi/index.js +19 -0
  426. package/packages/config-markdownlint/node_modules/strip-ansi/license +9 -0
  427. package/packages/config-markdownlint/node_modules/strip-ansi/package.json +59 -0
  428. package/packages/config-markdownlint/node_modules/strip-ansi/readme.md +37 -0
  429. package/packages/config-markdownlint/package.json +2 -2
@@ -0,0 +1,1162 @@
1
+ /**
2
+ * While micromark is a lexer/tokenizer, the common case of going from markdown
3
+ * to html is currently built in as this module, even though the parts can be
4
+ * used separately to build ASTs, CSTs, or many other output formats.
5
+ *
6
+ * Having an HTML compiler built in is useful because it allows us to check for
7
+ * compliancy to CommonMark, the de facto norm of markdown, specified in roughly
8
+ * 600 input/output cases.
9
+ *
10
+ * This module has an interface that accepts lists of events instead of the
11
+ * whole at once, however, because markdown can’t be truly streaming, we buffer
12
+ * events before processing and outputting the final result.
13
+ */
14
+
15
+ /**
16
+ * @import {
17
+ * CompileContext,
18
+ * CompileData,
19
+ * CompileOptions,
20
+ * Compile,
21
+ * Definition,
22
+ * Event,
23
+ * Handle,
24
+ * HtmlExtension,
25
+ * LineEnding,
26
+ * NormalizedHtmlExtension,
27
+ * Token
28
+ * } from 'micromark-util-types'
29
+ */
30
+
31
+ /**
32
+ * @typedef Media
33
+ * @property {boolean | undefined} [image]
34
+ * @property {string | undefined} [labelId]
35
+ * @property {string | undefined} [label]
36
+ * @property {string | undefined} [referenceId]
37
+ * @property {string | undefined} [destination]
38
+ * @property {string | undefined} [title]
39
+ */
40
+
41
+ import {decodeNamedCharacterReference} from 'decode-named-character-reference'
42
+ import {ok as assert} from 'devlop'
43
+ import {push} from 'micromark-util-chunked'
44
+ import {combineHtmlExtensions} from 'micromark-util-combine-extensions'
45
+ import {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'
46
+ import {encode as _encode} from 'micromark-util-encode'
47
+ import {normalizeIdentifier} from 'micromark-util-normalize-identifier'
48
+ import {sanitizeUri} from 'micromark-util-sanitize-uri'
49
+ import {codes, constants, types} from 'micromark-util-symbol'
50
+
51
+ const hasOwnProperty = {}.hasOwnProperty
52
+
53
+ /**
54
+ * These two are allowlists of safe protocols for full URLs in respectively the
55
+ * `href` (on `<a>`) and `src` (on `<img>`) attributes.
56
+ * They are based on what is allowed on GitHub,
57
+ * <https://github.com/syntax-tree/hast-util-sanitize/blob/9275b21/lib/github.json#L31>
58
+ */
59
+ const protocolHref = /^(https?|ircs?|mailto|xmpp)$/i
60
+ const protocolSource = /^https?$/i
61
+
62
+ /**
63
+ * @param {CompileOptions | null | undefined} [options]
64
+ * @returns {Compile}
65
+ */
66
+ export function compile(options) {
67
+ const settings = options || {}
68
+
69
+ /**
70
+ * Tags is needed because according to markdown, links and emphasis and
71
+ * whatnot can exist in images, however, as HTML doesn’t allow content in
72
+ * images, the tags are ignored in the `alt` attribute, but the content
73
+ * remains.
74
+ *
75
+ * @type {boolean | undefined}
76
+ */
77
+ let tags = true
78
+
79
+ /**
80
+ * An object to track identifiers to media (URLs and titles) defined with
81
+ * definitions.
82
+ *
83
+ * @type {Record<string, Definition>}
84
+ */
85
+ const definitions = {}
86
+
87
+ /**
88
+ * A lot of the handlers need to capture some of the output data, modify it
89
+ * somehow, and then deal with it.
90
+ * We do that by tracking a stack of buffers, that can be opened (with
91
+ * `buffer`) and closed (with `resume`) to access them.
92
+ *
93
+ * @type {Array<Array<string>>}
94
+ */
95
+ const buffers = [[]]
96
+
97
+ /**
98
+ * As we can have links in images and the other way around, where the deepest
99
+ * ones are closed first, we need to track which one we’re in.
100
+ *
101
+ * @type {Array<Media>}
102
+ */
103
+ const mediaStack = []
104
+
105
+ /**
106
+ * Same as `mediaStack` for tightness, which is specific to lists.
107
+ * We need to track if we’re currently in a tight or loose container.
108
+ *
109
+ * @type {Array<boolean>}
110
+ */
111
+ const tightStack = []
112
+
113
+ /** @type {HtmlExtension} */
114
+ const defaultHandlers = {
115
+ enter: {
116
+ blockQuote: onenterblockquote,
117
+ codeFenced: onentercodefenced,
118
+ codeFencedFenceInfo: buffer,
119
+ codeFencedFenceMeta: buffer,
120
+ codeIndented: onentercodeindented,
121
+ codeText: onentercodetext,
122
+ content: onentercontent,
123
+ definition: onenterdefinition,
124
+ definitionDestinationString: onenterdefinitiondestinationstring,
125
+ definitionLabelString: buffer,
126
+ definitionTitleString: buffer,
127
+ emphasis: onenteremphasis,
128
+ htmlFlow: onenterhtmlflow,
129
+ htmlText: onenterhtml,
130
+ image: onenterimage,
131
+ label: buffer,
132
+ link: onenterlink,
133
+ listItemMarker: onenterlistitemmarker,
134
+ listItemValue: onenterlistitemvalue,
135
+ listOrdered: onenterlistordered,
136
+ listUnordered: onenterlistunordered,
137
+ paragraph: onenterparagraph,
138
+ reference: buffer,
139
+ resource: onenterresource,
140
+ resourceDestinationString: onenterresourcedestinationstring,
141
+ resourceTitleString: buffer,
142
+ setextHeading: onentersetextheading,
143
+ strong: onenterstrong
144
+ },
145
+ exit: {
146
+ atxHeading: onexitatxheading,
147
+ atxHeadingSequence: onexitatxheadingsequence,
148
+ autolinkEmail: onexitautolinkemail,
149
+ autolinkProtocol: onexitautolinkprotocol,
150
+ blockQuote: onexitblockquote,
151
+ characterEscapeValue: onexitdata,
152
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
153
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
154
+ characterReferenceValue: onexitcharacterreferencevalue,
155
+ codeFenced: onexitflowcode,
156
+ codeFencedFence: onexitcodefencedfence,
157
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
158
+ codeFencedFenceMeta: onresumedrop,
159
+ codeFlowValue: onexitcodeflowvalue,
160
+ codeIndented: onexitflowcode,
161
+ codeText: onexitcodetext,
162
+ codeTextData: onexitdata,
163
+ data: onexitdata,
164
+ definition: onexitdefinition,
165
+ definitionDestinationString: onexitdefinitiondestinationstring,
166
+ definitionLabelString: onexitdefinitionlabelstring,
167
+ definitionTitleString: onexitdefinitiontitlestring,
168
+ emphasis: onexitemphasis,
169
+ hardBreakEscape: onexithardbreak,
170
+ hardBreakTrailing: onexithardbreak,
171
+ htmlFlow: onexithtml,
172
+ htmlFlowData: onexitdata,
173
+ htmlText: onexithtml,
174
+ htmlTextData: onexitdata,
175
+ image: onexitmedia,
176
+ label: onexitlabel,
177
+ labelText: onexitlabeltext,
178
+ lineEnding: onexitlineending,
179
+ link: onexitmedia,
180
+ listOrdered: onexitlistordered,
181
+ listUnordered: onexitlistunordered,
182
+ paragraph: onexitparagraph,
183
+ reference: onresumedrop,
184
+ referenceString: onexitreferencestring,
185
+ resource: onresumedrop,
186
+ resourceDestinationString: onexitresourcedestinationstring,
187
+ resourceTitleString: onexitresourcetitlestring,
188
+ setextHeading: onexitsetextheading,
189
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
190
+ setextHeadingText: onexitsetextheadingtext,
191
+ strong: onexitstrong,
192
+ thematicBreak: onexitthematicbreak
193
+ }
194
+ }
195
+
196
+ /**
197
+ * Combine the HTML extensions with the default handlers.
198
+ * An HTML extension is an object whose fields are either `enter` or `exit`
199
+ * (reflecting whether a token is entered or exited).
200
+ * The values at such objects are names of tokens mapping to handlers.
201
+ * Handlers are called, respectively when a token is opener or closed, with
202
+ * that token, and a context as `this`.
203
+ */
204
+ const handlers = /** @type {NormalizedHtmlExtension} */ (
205
+ combineHtmlExtensions([defaultHandlers, ...(settings.htmlExtensions || [])])
206
+ )
207
+
208
+ /**
209
+ * Handlers do often need to keep track of some state.
210
+ * That state is provided here as a key-value store (an object).
211
+ *
212
+ * @type {CompileData}
213
+ */
214
+ const data = {
215
+ definitions,
216
+ tightStack
217
+ }
218
+
219
+ /**
220
+ * The context for handlers references a couple of useful functions.
221
+ * In handlers from extensions, those can be accessed at `this`.
222
+ * For the handlers here, they can be accessed directly.
223
+ *
224
+ * @type {Omit<CompileContext, 'sliceSerialize'>}
225
+ */
226
+ const context = {
227
+ buffer,
228
+ encode,
229
+ getData,
230
+ lineEndingIfNeeded,
231
+ options: settings,
232
+ raw,
233
+ resume,
234
+ setData,
235
+ tag
236
+ }
237
+
238
+ /**
239
+ * Generally, micromark copies line endings (`'\r'`, `'\n'`, `'\r\n'`) in the
240
+ * markdown document over to the compiled HTML.
241
+ * In some cases, such as `> a`, CommonMark requires that extra line endings
242
+ * are added: `<blockquote>\n<p>a</p>\n</blockquote>`.
243
+ * This variable hold the default line ending when given (or `undefined`),
244
+ * and in the latter case will be updated to the first found line ending if
245
+ * there is one.
246
+ */
247
+ let lineEndingStyle = settings.defaultLineEnding
248
+
249
+ // Return the function that handles a slice of events.
250
+ return compile
251
+
252
+ /**
253
+ * Deal w/ a slice of events.
254
+ * Return either the empty string if there’s nothing of note to return, or the
255
+ * result when done.
256
+ *
257
+ * @param {ReadonlyArray<Event>} events
258
+ * @returns {string}
259
+ */
260
+ function compile(events) {
261
+ let index = -1
262
+ let start = 0
263
+ /** @type {Array<number>} */
264
+ const listStack = []
265
+ // As definitions can come after references, we need to figure out the media
266
+ // (urls and titles) defined by them before handling the references.
267
+ // So, we do sort of what HTML does: put metadata at the start (in head), and
268
+ // then put content after (`body`).
269
+ /** @type {Array<Event>} */
270
+ let head = []
271
+ /** @type {Array<Event>} */
272
+ let body = []
273
+
274
+ while (++index < events.length) {
275
+ // Figure out the line ending style used in the document.
276
+ if (
277
+ !lineEndingStyle &&
278
+ (events[index][1].type === types.lineEnding ||
279
+ events[index][1].type === types.lineEndingBlank)
280
+ ) {
281
+ lineEndingStyle = /** @type {LineEnding} */ (
282
+ events[index][2].sliceSerialize(events[index][1])
283
+ )
284
+ }
285
+
286
+ // Preprocess lists to infer whether the list is loose or not.
287
+ if (
288
+ events[index][1].type === types.listOrdered ||
289
+ events[index][1].type === types.listUnordered
290
+ ) {
291
+ if (events[index][0] === 'enter') {
292
+ listStack.push(index)
293
+ } else {
294
+ prepareList(events.slice(listStack.pop(), index))
295
+ }
296
+ }
297
+
298
+ // Move definitions to the front.
299
+ if (events[index][1].type === types.definition) {
300
+ if (events[index][0] === 'enter') {
301
+ body = push(body, events.slice(start, index))
302
+ start = index
303
+ } else {
304
+ head = push(head, events.slice(start, index + 1))
305
+ start = index + 1
306
+ }
307
+ }
308
+ }
309
+
310
+ head = push(head, body)
311
+ head = push(head, events.slice(start))
312
+ index = -1
313
+ const result = head
314
+
315
+ // Handle the start of the document, if defined.
316
+ if (handlers.enter.null) {
317
+ handlers.enter.null.call(context)
318
+ }
319
+
320
+ // Handle all events.
321
+ while (++index < events.length) {
322
+ const handles = handlers[result[index][0]]
323
+ const kind = result[index][1].type
324
+ const handle = handles[kind]
325
+
326
+ if (hasOwnProperty.call(handles, kind) && handle) {
327
+ handle.call(
328
+ {sliceSerialize: result[index][2].sliceSerialize, ...context},
329
+ result[index][1]
330
+ )
331
+ }
332
+ }
333
+
334
+ // Handle the end of the document, if defined.
335
+ if (handlers.exit.null) {
336
+ handlers.exit.null.call(context)
337
+ }
338
+
339
+ return buffers[0].join('')
340
+ }
341
+
342
+ /**
343
+ * Figure out whether lists are loose or not.
344
+ *
345
+ * @param {ReadonlyArray<Event>} slice
346
+ * @returns {undefined}
347
+ */
348
+ function prepareList(slice) {
349
+ const length = slice.length
350
+ let index = 0 // Skip open.
351
+ let containerBalance = 0
352
+ let loose = false
353
+ /** @type {boolean | undefined} */
354
+ let atMarker
355
+
356
+ while (++index < length) {
357
+ const event = slice[index]
358
+
359
+ if (event[1]._container) {
360
+ atMarker = undefined
361
+
362
+ if (event[0] === 'enter') {
363
+ containerBalance++
364
+ } else {
365
+ containerBalance--
366
+ }
367
+ } else {
368
+ switch (event[1].type) {
369
+ case types.listItemPrefix: {
370
+ if (event[0] === 'exit') {
371
+ atMarker = true
372
+ }
373
+
374
+ break
375
+ }
376
+
377
+ case types.linePrefix: {
378
+ // Ignore
379
+
380
+ break
381
+ }
382
+
383
+ case types.lineEndingBlank: {
384
+ if (event[0] === 'enter' && !containerBalance) {
385
+ if (atMarker) {
386
+ atMarker = undefined
387
+ } else {
388
+ loose = true
389
+ }
390
+ }
391
+
392
+ break
393
+ }
394
+
395
+ default: {
396
+ atMarker = undefined
397
+ }
398
+ }
399
+ }
400
+ }
401
+
402
+ slice[0][1]._loose = loose
403
+ }
404
+
405
+ /**
406
+ * @type {CompileContext['setData']}
407
+ */
408
+ function setData(key, value) {
409
+ // @ts-expect-error: assume `value` is omitted (`undefined` is passed) only
410
+ // if allowed.
411
+ data[key] = value
412
+ }
413
+
414
+ /**
415
+ * @type {CompileContext['getData']}
416
+ */
417
+ function getData(key) {
418
+ return data[key]
419
+ }
420
+
421
+ /** @type {CompileContext['buffer']} */
422
+ function buffer() {
423
+ buffers.push([])
424
+ }
425
+
426
+ /** @type {CompileContext['resume']} */
427
+ function resume() {
428
+ const buf = buffers.pop()
429
+ assert(buf !== undefined, 'Cannot resume w/o buffer')
430
+ return buf.join('')
431
+ }
432
+
433
+ /** @type {CompileContext['tag']} */
434
+ function tag(value) {
435
+ if (!tags) {
436
+ return
437
+ }
438
+
439
+ setData('lastWasTag', true)
440
+ buffers[buffers.length - 1].push(value)
441
+ }
442
+
443
+ /** @type {CompileContext['raw']} */
444
+ function raw(value) {
445
+ setData('lastWasTag')
446
+ buffers[buffers.length - 1].push(value)
447
+ }
448
+
449
+ /**
450
+ * Output an extra line ending.
451
+ *
452
+ * @returns {undefined}
453
+ */
454
+ function lineEnding() {
455
+ raw(lineEndingStyle || '\n')
456
+ }
457
+
458
+ /** @type {CompileContext['lineEndingIfNeeded']} */
459
+ function lineEndingIfNeeded() {
460
+ const buffer = buffers[buffers.length - 1]
461
+ const slice = buffer[buffer.length - 1]
462
+ const previous = slice ? slice.charCodeAt(slice.length - 1) : codes.eof
463
+
464
+ if (
465
+ previous === codes.lf ||
466
+ previous === codes.cr ||
467
+ previous === codes.eof
468
+ ) {
469
+ return
470
+ }
471
+
472
+ lineEnding()
473
+ }
474
+
475
+ /** @type {CompileContext['encode']} */
476
+ function encode(value) {
477
+ return getData('ignoreEncode') ? value : _encode(value)
478
+ }
479
+
480
+ //
481
+ // Handlers.
482
+ //
483
+
484
+ /**
485
+ * @returns {undefined}
486
+ */
487
+ function onresumedrop() {
488
+ resume()
489
+ }
490
+
491
+ /**
492
+ * @this {CompileContext}
493
+ * @type {Handle}
494
+ */
495
+ function onenterlistordered(token) {
496
+ tightStack.push(!token._loose)
497
+ lineEndingIfNeeded()
498
+ tag('<ol')
499
+ setData('expectFirstItem', true)
500
+ }
501
+
502
+ /**
503
+ * @this {CompileContext}
504
+ * @type {Handle}
505
+ */
506
+ function onenterlistunordered(token) {
507
+ tightStack.push(!token._loose)
508
+ lineEndingIfNeeded()
509
+ tag('<ul')
510
+ setData('expectFirstItem', true)
511
+ }
512
+
513
+ /**
514
+ * @this {CompileContext}
515
+ * @type {Handle}
516
+ */
517
+ function onenterlistitemvalue(token) {
518
+ if (getData('expectFirstItem')) {
519
+ const value = Number.parseInt(
520
+ this.sliceSerialize(token),
521
+ constants.numericBaseDecimal
522
+ )
523
+
524
+ if (value !== 1) {
525
+ tag(' start="' + encode(String(value)) + '"')
526
+ }
527
+ }
528
+ }
529
+
530
+ /**
531
+ * @returns {undefined}
532
+ */
533
+ function onenterlistitemmarker() {
534
+ if (getData('expectFirstItem')) {
535
+ tag('>')
536
+ } else {
537
+ onexitlistitem()
538
+ }
539
+
540
+ lineEndingIfNeeded()
541
+ tag('<li>')
542
+ setData('expectFirstItem')
543
+ // “Hack” to prevent a line ending from showing up if the item is empty.
544
+ setData('lastWasTag')
545
+ }
546
+
547
+ /**
548
+ * @returns {undefined}
549
+ */
550
+ function onexitlistordered() {
551
+ onexitlistitem()
552
+ tightStack.pop()
553
+ lineEnding()
554
+ tag('</ol>')
555
+ }
556
+
557
+ /**
558
+ * @returns {undefined}
559
+ */
560
+ function onexitlistunordered() {
561
+ onexitlistitem()
562
+ tightStack.pop()
563
+ lineEnding()
564
+ tag('</ul>')
565
+ }
566
+
567
+ /**
568
+ * @returns {undefined}
569
+ */
570
+ function onexitlistitem() {
571
+ if (getData('lastWasTag') && !getData('slurpAllLineEndings')) {
572
+ lineEndingIfNeeded()
573
+ }
574
+
575
+ tag('</li>')
576
+ setData('slurpAllLineEndings')
577
+ }
578
+
579
+ /**
580
+ * @this {CompileContext}
581
+ * @type {Handle}
582
+ */
583
+ function onenterblockquote() {
584
+ tightStack.push(false)
585
+ lineEndingIfNeeded()
586
+ tag('<blockquote>')
587
+ }
588
+
589
+ /**
590
+ * @this {CompileContext}
591
+ * @type {Handle}
592
+ */
593
+ function onexitblockquote() {
594
+ tightStack.pop()
595
+ lineEndingIfNeeded()
596
+ tag('</blockquote>')
597
+ setData('slurpAllLineEndings')
598
+ }
599
+
600
+ /**
601
+ * @this {CompileContext}
602
+ * @type {Handle}
603
+ */
604
+ function onenterparagraph() {
605
+ if (!tightStack[tightStack.length - 1]) {
606
+ lineEndingIfNeeded()
607
+ tag('<p>')
608
+ }
609
+
610
+ setData('slurpAllLineEndings')
611
+ }
612
+
613
+ /**
614
+ * @this {CompileContext}
615
+ * @type {Handle}
616
+ */
617
+ function onexitparagraph() {
618
+ if (tightStack[tightStack.length - 1]) {
619
+ setData('slurpAllLineEndings', true)
620
+ } else {
621
+ tag('</p>')
622
+ }
623
+ }
624
+
625
+ /**
626
+ * @this {CompileContext}
627
+ * @type {Handle}
628
+ */
629
+ function onentercodefenced() {
630
+ lineEndingIfNeeded()
631
+ tag('<pre><code')
632
+ setData('fencesCount', 0)
633
+ }
634
+
635
+ /**
636
+ * @this {CompileContext}
637
+ * @type {Handle}
638
+ */
639
+ function onexitcodefencedfenceinfo() {
640
+ const value = resume()
641
+ tag(' class="language-' + value + '"')
642
+ }
643
+
644
+ /**
645
+ * @this {CompileContext}
646
+ * @type {Handle}
647
+ */
648
+ function onexitcodefencedfence() {
649
+ const count = getData('fencesCount') || 0
650
+
651
+ if (!count) {
652
+ tag('>')
653
+ setData('slurpOneLineEnding', true)
654
+ }
655
+
656
+ setData('fencesCount', count + 1)
657
+ }
658
+
659
+ /**
660
+ * @this {CompileContext}
661
+ * @type {Handle}
662
+ */
663
+ function onentercodeindented() {
664
+ lineEndingIfNeeded()
665
+ tag('<pre><code>')
666
+ }
667
+
668
+ /**
669
+ * @this {CompileContext}
670
+ * @type {Handle}
671
+ */
672
+ function onexitflowcode() {
673
+ const count = getData('fencesCount')
674
+
675
+ // One special case is if we are inside a container, and the fenced code was
676
+ // not closed (meaning it runs to the end).
677
+ // In that case, the following line ending, is considered *outside* the
678
+ // fenced code and block quote by micromark, but CM wants to treat that
679
+ // ending as part of the code.
680
+ if (
681
+ count !== undefined &&
682
+ count < 2 &&
683
+ data.tightStack.length > 0 &&
684
+ !getData('lastWasTag')
685
+ ) {
686
+ lineEnding()
687
+ }
688
+
689
+ // But in most cases, it’s simpler: when we’ve seen some data, emit an extra
690
+ // line ending when needed.
691
+ if (getData('flowCodeSeenData')) {
692
+ lineEndingIfNeeded()
693
+ }
694
+
695
+ tag('</code></pre>')
696
+ if (count !== undefined && count < 2) {
697
+ lineEndingIfNeeded()
698
+ }
699
+
700
+ setData('flowCodeSeenData')
701
+ setData('fencesCount')
702
+ setData('slurpOneLineEnding')
703
+ }
704
+
705
+ /**
706
+ * @this {CompileContext}
707
+ * @type {Handle}
708
+ */
709
+ function onenterimage() {
710
+ mediaStack.push({image: true})
711
+ tags = undefined // Disallow tags.
712
+ }
713
+
714
+ /**
715
+ * @this {CompileContext}
716
+ * @type {Handle}
717
+ */
718
+ function onenterlink() {
719
+ mediaStack.push({})
720
+ }
721
+
722
+ /**
723
+ * @this {CompileContext}
724
+ * @type {Handle}
725
+ */
726
+ function onexitlabeltext(token) {
727
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
728
+ }
729
+
730
+ /**
731
+ * @this {CompileContext}
732
+ * @type {Handle}
733
+ */
734
+ function onexitlabel() {
735
+ mediaStack[mediaStack.length - 1].label = resume()
736
+ }
737
+
738
+ /**
739
+ * @this {CompileContext}
740
+ * @type {Handle}
741
+ */
742
+ function onexitreferencestring(token) {
743
+ mediaStack[mediaStack.length - 1].referenceId = this.sliceSerialize(token)
744
+ }
745
+
746
+ /**
747
+ * @this {CompileContext}
748
+ * @type {Handle}
749
+ */
750
+ function onenterresource() {
751
+ buffer() // We can have line endings in the resource, ignore them.
752
+ mediaStack[mediaStack.length - 1].destination = ''
753
+ }
754
+
755
+ /**
756
+ * @this {CompileContext}
757
+ * @type {Handle}
758
+ */
759
+ function onenterresourcedestinationstring() {
760
+ buffer()
761
+ // Ignore encoding the result, as we’ll first percent encode the url and
762
+ // encode manually after.
763
+ setData('ignoreEncode', true)
764
+ }
765
+
766
+ /**
767
+ * @this {CompileContext}
768
+ * @type {Handle}
769
+ */
770
+ function onexitresourcedestinationstring() {
771
+ mediaStack[mediaStack.length - 1].destination = resume()
772
+ setData('ignoreEncode')
773
+ }
774
+
775
+ /**
776
+ * @this {CompileContext}
777
+ * @type {Handle}
778
+ */
779
+ function onexitresourcetitlestring() {
780
+ mediaStack[mediaStack.length - 1].title = resume()
781
+ }
782
+
783
+ /**
784
+ * @this {CompileContext}
785
+ * @type {Handle}
786
+ */
787
+ function onexitmedia() {
788
+ let index = mediaStack.length - 1 // Skip current.
789
+ const media = mediaStack[index]
790
+ const id = media.referenceId || media.labelId
791
+ assert(id !== undefined, 'media should have `referenceId` or `labelId`')
792
+ assert(media.label !== undefined, 'media should have `label`')
793
+ const context =
794
+ media.destination === undefined
795
+ ? definitions[normalizeIdentifier(id)]
796
+ : media
797
+
798
+ tags = true
799
+
800
+ while (index--) {
801
+ if (mediaStack[index].image) {
802
+ tags = undefined
803
+ break
804
+ }
805
+ }
806
+
807
+ if (media.image) {
808
+ tag(
809
+ '<img src="' +
810
+ sanitizeUri(
811
+ context.destination,
812
+ settings.allowDangerousProtocol ? undefined : protocolSource
813
+ ) +
814
+ '" alt="'
815
+ )
816
+ raw(media.label)
817
+ tag('"')
818
+ } else {
819
+ tag(
820
+ '<a href="' +
821
+ sanitizeUri(
822
+ context.destination,
823
+ settings.allowDangerousProtocol ? undefined : protocolHref
824
+ ) +
825
+ '"'
826
+ )
827
+ }
828
+
829
+ tag(context.title ? ' title="' + context.title + '"' : '')
830
+
831
+ if (media.image) {
832
+ tag(' />')
833
+ } else {
834
+ tag('>')
835
+ raw(media.label)
836
+ tag('</a>')
837
+ }
838
+
839
+ mediaStack.pop()
840
+ }
841
+
842
+ /**
843
+ * @this {CompileContext}
844
+ * @type {Handle}
845
+ */
846
+ function onenterdefinition() {
847
+ buffer()
848
+ mediaStack.push({})
849
+ }
850
+
851
+ /**
852
+ * @this {CompileContext}
853
+ * @type {Handle}
854
+ */
855
+ function onexitdefinitionlabelstring(token) {
856
+ // Discard label, use the source content instead.
857
+ resume()
858
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
859
+ }
860
+
861
+ /**
862
+ * @this {CompileContext}
863
+ * @type {Handle}
864
+ */
865
+ function onenterdefinitiondestinationstring() {
866
+ buffer()
867
+ setData('ignoreEncode', true)
868
+ }
869
+
870
+ /**
871
+ * @this {CompileContext}
872
+ * @type {Handle}
873
+ */
874
+ function onexitdefinitiondestinationstring() {
875
+ mediaStack[mediaStack.length - 1].destination = resume()
876
+ setData('ignoreEncode')
877
+ }
878
+
879
+ /**
880
+ * @this {CompileContext}
881
+ * @type {Handle}
882
+ */
883
+ function onexitdefinitiontitlestring() {
884
+ mediaStack[mediaStack.length - 1].title = resume()
885
+ }
886
+
887
+ /**
888
+ * @this {CompileContext}
889
+ * @type {Handle}
890
+ */
891
+ function onexitdefinition() {
892
+ const media = mediaStack[mediaStack.length - 1]
893
+ assert(media.labelId !== undefined, 'media should have `labelId`')
894
+ const id = normalizeIdentifier(media.labelId)
895
+
896
+ resume()
897
+
898
+ if (!hasOwnProperty.call(definitions, id)) {
899
+ definitions[id] = mediaStack[mediaStack.length - 1]
900
+ }
901
+
902
+ mediaStack.pop()
903
+ }
904
+
905
+ /**
906
+ * @this {CompileContext}
907
+ * @type {Handle}
908
+ */
909
+ function onentercontent() {
910
+ setData('slurpAllLineEndings', true)
911
+ }
912
+
913
+ /**
914
+ * @this {CompileContext}
915
+ * @type {Handle}
916
+ */
917
+ function onexitatxheadingsequence(token) {
918
+ // Exit for further sequences.
919
+ if (getData('headingRank')) {
920
+ return
921
+ }
922
+
923
+ setData('headingRank', this.sliceSerialize(token).length)
924
+ lineEndingIfNeeded()
925
+ tag('<h' + getData('headingRank') + '>')
926
+ }
927
+
928
+ /**
929
+ * @this {CompileContext}
930
+ * @type {Handle}
931
+ */
932
+ function onentersetextheading() {
933
+ buffer()
934
+ setData('slurpAllLineEndings')
935
+ }
936
+
937
+ /**
938
+ * @this {CompileContext}
939
+ * @type {Handle}
940
+ */
941
+ function onexitsetextheadingtext() {
942
+ setData('slurpAllLineEndings', true)
943
+ }
944
+
945
+ /**
946
+ * @this {CompileContext}
947
+ * @type {Handle}
948
+ */
949
+ function onexitatxheading() {
950
+ tag('</h' + getData('headingRank') + '>')
951
+ setData('headingRank')
952
+ }
953
+
954
+ /**
955
+ * @this {CompileContext}
956
+ * @type {Handle}
957
+ */
958
+ function onexitsetextheadinglinesequence(token) {
959
+ setData(
960
+ 'headingRank',
961
+ this.sliceSerialize(token).charCodeAt(0) === codes.equalsTo ? 1 : 2
962
+ )
963
+ }
964
+
965
+ /**
966
+ * @this {CompileContext}
967
+ * @type {Handle}
968
+ */
969
+ function onexitsetextheading() {
970
+ const value = resume()
971
+ lineEndingIfNeeded()
972
+ tag('<h' + getData('headingRank') + '>')
973
+ raw(value)
974
+ tag('</h' + getData('headingRank') + '>')
975
+ setData('slurpAllLineEndings')
976
+ setData('headingRank')
977
+ }
978
+
979
+ /**
980
+ * @this {CompileContext}
981
+ * @type {Handle}
982
+ */
983
+ function onexitdata(token) {
984
+ raw(encode(this.sliceSerialize(token)))
985
+ }
986
+
987
+ /**
988
+ * @this {CompileContext}
989
+ * @type {Handle}
990
+ */
991
+ function onexitlineending(token) {
992
+ if (getData('slurpAllLineEndings')) {
993
+ return
994
+ }
995
+
996
+ if (getData('slurpOneLineEnding')) {
997
+ setData('slurpOneLineEnding')
998
+ return
999
+ }
1000
+
1001
+ if (getData('inCodeText')) {
1002
+ raw(' ')
1003
+ return
1004
+ }
1005
+
1006
+ raw(encode(this.sliceSerialize(token)))
1007
+ }
1008
+
1009
+ /**
1010
+ * @this {CompileContext}
1011
+ * @type {Handle}
1012
+ */
1013
+ function onexitcodeflowvalue(token) {
1014
+ raw(encode(this.sliceSerialize(token)))
1015
+ setData('flowCodeSeenData', true)
1016
+ }
1017
+
1018
+ /**
1019
+ * @this {CompileContext}
1020
+ * @type {Handle}
1021
+ */
1022
+ function onexithardbreak() {
1023
+ tag('<br />')
1024
+ }
1025
+
1026
+ /**
1027
+ * @returns {undefined}
1028
+ */
1029
+ function onenterhtmlflow() {
1030
+ lineEndingIfNeeded()
1031
+ onenterhtml()
1032
+ }
1033
+
1034
+ /**
1035
+ * @returns {undefined}
1036
+ */
1037
+ function onexithtml() {
1038
+ setData('ignoreEncode')
1039
+ }
1040
+
1041
+ /**
1042
+ * @returns {undefined}
1043
+ */
1044
+ function onenterhtml() {
1045
+ if (settings.allowDangerousHtml) {
1046
+ setData('ignoreEncode', true)
1047
+ }
1048
+ }
1049
+
1050
+ /**
1051
+ * @returns {undefined}
1052
+ */
1053
+ function onenteremphasis() {
1054
+ tag('<em>')
1055
+ }
1056
+
1057
+ /**
1058
+ * @returns {undefined}
1059
+ */
1060
+ function onenterstrong() {
1061
+ tag('<strong>')
1062
+ }
1063
+
1064
+ /**
1065
+ * @returns {undefined}
1066
+ */
1067
+ function onentercodetext() {
1068
+ setData('inCodeText', true)
1069
+ tag('<code>')
1070
+ }
1071
+
1072
+ /**
1073
+ * @returns {undefined}
1074
+ */
1075
+ function onexitcodetext() {
1076
+ setData('inCodeText')
1077
+ tag('</code>')
1078
+ }
1079
+
1080
+ /**
1081
+ * @returns {undefined}
1082
+ */
1083
+ function onexitemphasis() {
1084
+ tag('</em>')
1085
+ }
1086
+
1087
+ /**
1088
+ * @returns {undefined}
1089
+ */
1090
+ function onexitstrong() {
1091
+ tag('</strong>')
1092
+ }
1093
+
1094
+ /**
1095
+ * @returns {undefined}
1096
+ */
1097
+ function onexitthematicbreak() {
1098
+ lineEndingIfNeeded()
1099
+ tag('<hr />')
1100
+ }
1101
+
1102
+ /**
1103
+ * @this {CompileContext}
1104
+ * @param {Token} token
1105
+ * @returns {undefined}
1106
+ */
1107
+ function onexitcharacterreferencemarker(token) {
1108
+ setData('characterReferenceType', token.type)
1109
+ }
1110
+
1111
+ /**
1112
+ * @this {CompileContext}
1113
+ * @type {Handle}
1114
+ */
1115
+ function onexitcharacterreferencevalue(token) {
1116
+ const value = this.sliceSerialize(token)
1117
+ const decoded = getData('characterReferenceType')
1118
+ ? decodeNumericCharacterReference(
1119
+ value,
1120
+ getData('characterReferenceType') ===
1121
+ types.characterReferenceMarkerNumeric
1122
+ ? constants.numericBaseDecimal
1123
+ : constants.numericBaseHexadecimal
1124
+ )
1125
+ : decodeNamedCharacterReference(value)
1126
+
1127
+ // `decodeNamedCharacterReference` can return `false` for invalid named
1128
+ // character references,
1129
+ // but everything we’ve tokenized is valid.
1130
+ raw(encode(/** @type {string} */ (decoded)))
1131
+ setData('characterReferenceType')
1132
+ }
1133
+
1134
+ /**
1135
+ * @this {CompileContext}
1136
+ * @type {Handle}
1137
+ */
1138
+ function onexitautolinkprotocol(token) {
1139
+ const uri = this.sliceSerialize(token)
1140
+ tag(
1141
+ '<a href="' +
1142
+ sanitizeUri(
1143
+ uri,
1144
+ settings.allowDangerousProtocol ? undefined : protocolHref
1145
+ ) +
1146
+ '">'
1147
+ )
1148
+ raw(encode(uri))
1149
+ tag('</a>')
1150
+ }
1151
+
1152
+ /**
1153
+ * @this {CompileContext}
1154
+ * @type {Handle}
1155
+ */
1156
+ function onexitautolinkemail(token) {
1157
+ const uri = this.sliceSerialize(token)
1158
+ tag('<a href="' + sanitizeUri('mailto:' + uri) + '">')
1159
+ raw(encode(uri))
1160
+ tag('</a>')
1161
+ }
1162
+ }