@redocly/recheck 0.1.0 → 0.3.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 (595) hide show
  1. package/README.md +1023 -56
  2. package/dist/cli.js +40 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/markdoc-schema.d.ts +17 -0
  5. package/dist/commands/markdoc-schema.d.ts.map +1 -0
  6. package/dist/commands/markdoc-schema.js +127 -0
  7. package/dist/commands/markdoc-schema.js.map +1 -0
  8. package/dist/commands/run.d.ts +2 -1
  9. package/dist/commands/run.d.ts.map +1 -1
  10. package/dist/commands/run.js +87 -10
  11. package/dist/commands/run.js.map +1 -1
  12. package/dist/config/load.d.ts +11 -0
  13. package/dist/config/load.d.ts.map +1 -1
  14. package/dist/config/load.js +12 -2
  15. package/dist/config/load.js.map +1 -1
  16. package/dist/config/presets/google.d.ts +3 -0
  17. package/dist/config/presets/google.d.ts.map +1 -0
  18. package/dist/config/presets/google.js +1671 -0
  19. package/dist/config/presets/google.js.map +1 -0
  20. package/dist/config/presets/inclusive-language.d.ts +3 -0
  21. package/dist/config/presets/inclusive-language.d.ts.map +1 -0
  22. package/dist/config/presets/inclusive-language.js +321 -0
  23. package/dist/config/presets/inclusive-language.js.map +1 -0
  24. package/dist/config/presets/index.d.ts +67 -0
  25. package/dist/config/presets/index.d.ts.map +1 -0
  26. package/dist/config/presets/index.js +137 -0
  27. package/dist/config/presets/index.js.map +1 -0
  28. package/dist/config/presets/markdoc.d.ts +21 -0
  29. package/dist/config/presets/markdoc.d.ts.map +1 -0
  30. package/dist/config/presets/markdoc.js +101 -0
  31. package/dist/config/presets/markdoc.js.map +1 -0
  32. package/dist/config/presets/markdown-relaxed.d.ts +3 -0
  33. package/dist/config/presets/markdown-relaxed.d.ts.map +1 -0
  34. package/dist/config/presets/markdown-relaxed.js +98 -0
  35. package/dist/config/presets/markdown-relaxed.js.map +1 -0
  36. package/dist/config/presets/markdown.d.ts +43 -0
  37. package/dist/config/presets/markdown.d.ts.map +1 -0
  38. package/dist/config/presets/markdown.js +132 -0
  39. package/dist/config/presets/markdown.js.map +1 -0
  40. package/dist/config/presets/microsoft.d.ts +3 -0
  41. package/dist/config/presets/microsoft.d.ts.map +1 -0
  42. package/dist/config/presets/microsoft.js +2268 -0
  43. package/dist/config/presets/microsoft.js.map +1 -0
  44. package/dist/config/presets/minimal.d.ts +3 -0
  45. package/dist/config/presets/minimal.d.ts.map +1 -0
  46. package/dist/config/presets/minimal.js +21 -0
  47. package/dist/config/presets/minimal.js.map +1 -0
  48. package/dist/config/presets/plain-language.d.ts +3 -0
  49. package/dist/config/presets/plain-language.d.ts.map +1 -0
  50. package/dist/config/presets/plain-language.js +351 -0
  51. package/dist/config/presets/plain-language.js.map +1 -0
  52. package/dist/config/presets/prose.d.ts +52 -0
  53. package/dist/config/presets/prose.d.ts.map +1 -0
  54. package/dist/config/presets/prose.js +138 -0
  55. package/dist/config/presets/prose.js.map +1 -0
  56. package/dist/config/schema.d.ts +128 -22
  57. package/dist/config/schema.d.ts.map +1 -1
  58. package/dist/config/schema.js +105 -21
  59. package/dist/config/schema.js.map +1 -1
  60. package/dist/config/validate.d.ts +12 -2
  61. package/dist/config/validate.d.ts.map +1 -1
  62. package/dist/config/validate.js +1200 -44
  63. package/dist/config/validate.js.map +1 -1
  64. package/dist/core/auto-fix.d.ts +8 -13
  65. package/dist/core/auto-fix.d.ts.map +1 -1
  66. package/dist/core/auto-fix.js +94 -75
  67. package/dist/core/auto-fix.js.map +1 -1
  68. package/dist/core/case-preserve.d.ts +46 -0
  69. package/dist/core/case-preserve.d.ts.map +1 -0
  70. package/dist/core/case-preserve.js +57 -0
  71. package/dist/core/case-preserve.js.map +1 -0
  72. package/dist/core/directives.d.ts +9 -0
  73. package/dist/core/directives.d.ts.map +1 -0
  74. package/dist/core/directives.js +73 -0
  75. package/dist/core/directives.js.map +1 -0
  76. package/dist/core/files.d.ts +63 -0
  77. package/dist/core/files.d.ts.map +1 -1
  78. package/dist/core/files.js +185 -0
  79. package/dist/core/files.js.map +1 -1
  80. package/dist/core/inline-code.d.ts +87 -0
  81. package/dist/core/inline-code.d.ts.map +1 -0
  82. package/dist/core/inline-code.js +104 -0
  83. package/dist/core/inline-code.js.map +1 -0
  84. package/dist/core/line-endings.d.ts +32 -0
  85. package/dist/core/line-endings.d.ts.map +1 -0
  86. package/dist/core/line-endings.js +65 -0
  87. package/dist/core/line-endings.js.map +1 -0
  88. package/dist/core/markdoc-tags.d.ts +79 -0
  89. package/dist/core/markdoc-tags.d.ts.map +1 -0
  90. package/dist/core/markdoc-tags.js +131 -0
  91. package/dist/core/markdoc-tags.js.map +1 -0
  92. package/dist/core/rule-filters.d.ts +17 -0
  93. package/dist/core/rule-filters.d.ts.map +1 -1
  94. package/dist/core/rule-filters.js +64 -0
  95. package/dist/core/rule-filters.js.map +1 -1
  96. package/dist/core/runner.d.ts +92 -3
  97. package/dist/core/runner.d.ts.map +1 -1
  98. package/dist/core/runner.js +348 -110
  99. package/dist/core/runner.js.map +1 -1
  100. package/dist/core/timing.d.ts.map +1 -1
  101. package/dist/data/markdoc-realm-schema.d.ts +3 -0
  102. package/dist/data/markdoc-realm-schema.d.ts.map +1 -0
  103. package/dist/data/markdoc-realm-schema.js +760 -0
  104. package/dist/data/markdoc-realm-schema.js.map +1 -0
  105. package/dist/data/proper-nouns.d.ts +2 -0
  106. package/dist/data/proper-nouns.d.ts.map +1 -0
  107. package/dist/data/proper-nouns.js +47 -0
  108. package/dist/data/proper-nouns.js.map +1 -0
  109. package/dist/index.d.ts +90 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +152 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/metrics/formulas.d.ts +17 -0
  114. package/dist/metrics/formulas.d.ts.map +1 -0
  115. package/dist/metrics/formulas.js +70 -0
  116. package/dist/metrics/formulas.js.map +1 -0
  117. package/dist/metrics/index.d.ts +5 -0
  118. package/dist/metrics/index.d.ts.map +1 -0
  119. package/dist/metrics/index.js +3 -0
  120. package/dist/metrics/index.js.map +1 -0
  121. package/dist/metrics/statistics.d.ts +27 -0
  122. package/dist/metrics/statistics.d.ts.map +1 -0
  123. package/dist/metrics/statistics.js +56 -0
  124. package/dist/metrics/statistics.js.map +1 -0
  125. package/dist/parser/index.d.ts +18 -0
  126. package/dist/parser/index.d.ts.map +1 -0
  127. package/dist/parser/index.js +168 -0
  128. package/dist/parser/index.js.map +1 -0
  129. package/dist/parser/markdoc/extract-statics.d.ts +45 -0
  130. package/dist/parser/markdoc/extract-statics.d.ts.map +1 -0
  131. package/dist/parser/markdoc/extract-statics.js +139 -0
  132. package/dist/parser/markdoc/extract-statics.js.map +1 -0
  133. package/dist/parser/markdoc/pairing.d.ts +63 -0
  134. package/dist/parser/markdoc/pairing.d.ts.map +1 -0
  135. package/dist/parser/markdoc/pairing.js +94 -0
  136. package/dist/parser/markdoc/pairing.js.map +1 -0
  137. package/dist/parser/markdoc/schema.d.ts +85 -0
  138. package/dist/parser/markdoc/schema.d.ts.map +1 -0
  139. package/dist/parser/markdoc/schema.js +86 -0
  140. package/dist/parser/markdoc/schema.js.map +1 -0
  141. package/dist/parser/markdoc/span.d.ts +64 -0
  142. package/dist/parser/markdoc/span.d.ts.map +1 -0
  143. package/dist/parser/markdoc/span.js +729 -0
  144. package/dist/parser/markdoc/span.js.map +1 -0
  145. package/dist/parser/markdoc/structure.d.ts +28 -0
  146. package/dist/parser/markdoc/structure.d.ts.map +1 -0
  147. package/dist/parser/markdoc/structure.js +153 -0
  148. package/dist/parser/markdoc/structure.js.map +1 -0
  149. package/dist/parser/markdoc/syntax.d.ts +44 -0
  150. package/dist/parser/markdoc/syntax.d.ts.map +1 -0
  151. package/dist/parser/markdoc/syntax.js +317 -0
  152. package/dist/parser/markdoc/syntax.js.map +1 -0
  153. package/dist/parser/types.d.ts +18 -0
  154. package/dist/parser/types.d.ts.map +1 -0
  155. package/dist/parser/types.js.map +1 -0
  156. package/dist/reporter/fixes.d.ts.map +1 -1
  157. package/dist/reporter/fixes.js +22 -1
  158. package/dist/reporter/fixes.js.map +1 -1
  159. package/dist/reporter/statistics.d.ts +1 -8
  160. package/dist/reporter/statistics.d.ts.map +1 -1
  161. package/dist/reporter/statistics.js.map +1 -1
  162. package/dist/rules/registry.d.ts +15 -0
  163. package/dist/rules/registry.d.ts.map +1 -0
  164. package/dist/rules/registry.js +81 -0
  165. package/dist/rules/registry.js.map +1 -0
  166. package/dist/rules/scope/capitalization.d.ts +3 -0
  167. package/dist/rules/scope/capitalization.d.ts.map +1 -0
  168. package/dist/rules/scope/capitalization.js +163 -0
  169. package/dist/rules/scope/capitalization.js.map +1 -0
  170. package/dist/rules/scope/conditional.d.ts +3 -0
  171. package/dist/rules/scope/conditional.d.ts.map +1 -0
  172. package/dist/rules/scope/conditional.js +112 -0
  173. package/dist/rules/scope/conditional.js.map +1 -0
  174. package/dist/rules/scope/consistency.d.ts +3 -0
  175. package/dist/rules/scope/consistency.d.ts.map +1 -0
  176. package/dist/rules/scope/consistency.js +178 -0
  177. package/dist/rules/scope/consistency.js.map +1 -0
  178. package/dist/rules/scope/length.d.ts +3 -0
  179. package/dist/rules/scope/length.d.ts.map +1 -0
  180. package/dist/rules/scope/length.js +69 -0
  181. package/dist/rules/scope/length.js.map +1 -0
  182. package/dist/rules/scope/max-image-size.d.ts +3 -0
  183. package/dist/rules/scope/max-image-size.d.ts.map +1 -0
  184. package/dist/rules/scope/max-image-size.js +65 -0
  185. package/dist/rules/scope/max-image-size.js.map +1 -0
  186. package/dist/rules/scope/metric.d.ts +17 -0
  187. package/dist/rules/scope/metric.d.ts.map +1 -0
  188. package/dist/rules/scope/metric.js +216 -0
  189. package/dist/rules/scope/metric.js.map +1 -0
  190. package/dist/rules/scope/occurrence.d.ts +3 -0
  191. package/dist/rules/scope/occurrence.d.ts.map +1 -0
  192. package/dist/rules/scope/occurrence.js +48 -0
  193. package/dist/rules/scope/occurrence.js.map +1 -0
  194. package/dist/rules/scope/pattern.d.ts +3 -0
  195. package/dist/rules/scope/pattern.d.ts.map +1 -0
  196. package/dist/rules/scope/pattern.js +75 -0
  197. package/dist/rules/scope/pattern.js.map +1 -0
  198. package/dist/rules/scope/repetition.d.ts +3 -0
  199. package/dist/rules/scope/repetition.d.ts.map +1 -0
  200. package/dist/rules/scope/repetition.js +139 -0
  201. package/dist/rules/scope/repetition.js.map +1 -0
  202. package/dist/rules/scope/semantic-line-breaks.d.ts +3 -0
  203. package/dist/rules/scope/semantic-line-breaks.d.ts.map +1 -0
  204. package/dist/rules/scope/semantic-line-breaks.js +213 -0
  205. package/dist/rules/scope/semantic-line-breaks.js.map +1 -0
  206. package/dist/rules/scope/spelling.d.ts +27 -0
  207. package/dist/rules/scope/spelling.d.ts.map +1 -0
  208. package/dist/rules/scope/spelling.js +227 -0
  209. package/dist/rules/scope/spelling.js.map +1 -0
  210. package/dist/rules/scope/swap.d.ts +3 -0
  211. package/dist/rules/scope/swap.d.ts.map +1 -0
  212. package/dist/rules/scope/swap.js +149 -0
  213. package/dist/rules/scope/swap.js.map +1 -0
  214. package/dist/rules/scope/title-case.d.ts +46 -0
  215. package/dist/rules/scope/title-case.d.ts.map +1 -0
  216. package/dist/rules/scope/title-case.js +301 -0
  217. package/dist/rules/scope/title-case.js.map +1 -0
  218. package/dist/rules/token/blanks-around-fences.d.ts +3 -0
  219. package/dist/rules/token/blanks-around-fences.d.ts.map +1 -0
  220. package/dist/rules/token/blanks-around-fences.js +44 -0
  221. package/dist/rules/token/blanks-around-fences.js.map +1 -0
  222. package/dist/rules/token/blanks-around-headings.d.ts +3 -0
  223. package/dist/rules/token/blanks-around-headings.d.ts.map +1 -0
  224. package/dist/rules/token/blanks-around-headings.js +108 -0
  225. package/dist/rules/token/blanks-around-headings.js.map +1 -0
  226. package/dist/rules/token/blanks-around-lists.d.ts +3 -0
  227. package/dist/rules/token/blanks-around-lists.d.ts.map +1 -0
  228. package/dist/rules/token/blanks-around-lists.js +56 -0
  229. package/dist/rules/token/blanks-around-lists.js.map +1 -0
  230. package/dist/rules/token/blanks-around-tables.d.ts +3 -0
  231. package/dist/rules/token/blanks-around-tables.d.ts.map +1 -0
  232. package/dist/rules/token/blanks-around-tables.js +42 -0
  233. package/dist/rules/token/blanks-around-tables.js.map +1 -0
  234. package/dist/rules/token/code-block-style.d.ts +3 -0
  235. package/dist/rules/token/code-block-style.d.ts.map +1 -0
  236. package/dist/rules/token/code-block-style.js +30 -0
  237. package/dist/rules/token/code-block-style.js.map +1 -0
  238. package/dist/rules/token/code-fence-style.d.ts +3 -0
  239. package/dist/rules/token/code-fence-style.d.ts.map +1 -0
  240. package/dist/rules/token/code-fence-style.js +35 -0
  241. package/dist/rules/token/code-fence-style.js.map +1 -0
  242. package/dist/rules/token/commands-show-output.d.ts +3 -0
  243. package/dist/rules/token/commands-show-output.d.ts.map +1 -0
  244. package/dist/rules/token/commands-show-output.js +38 -0
  245. package/dist/rules/token/commands-show-output.js.map +1 -0
  246. package/dist/rules/token/descriptive-link-text.d.ts +3 -0
  247. package/dist/rules/token/descriptive-link-text.d.ts.map +1 -0
  248. package/dist/rules/token/descriptive-link-text.js +53 -0
  249. package/dist/rules/token/descriptive-link-text.js.map +1 -0
  250. package/dist/rules/token/emphasis-style.d.ts +3 -0
  251. package/dist/rules/token/emphasis-style.d.ts.map +1 -0
  252. package/dist/rules/token/emphasis-style.js +51 -0
  253. package/dist/rules/token/emphasis-style.js.map +1 -0
  254. package/dist/rules/token/fenced-code-language.d.ts +3 -0
  255. package/dist/rules/token/fenced-code-language.d.ts.map +1 -0
  256. package/dist/rules/token/fenced-code-language.js +35 -0
  257. package/dist/rules/token/fenced-code-language.js.map +1 -0
  258. package/dist/rules/token/first-line-h1.d.ts +3 -0
  259. package/dist/rules/token/first-line-h1.d.ts.map +1 -0
  260. package/dist/rules/token/first-line-h1.js +107 -0
  261. package/dist/rules/token/first-line-h1.js.map +1 -0
  262. package/dist/rules/token/heading-increment.d.ts +3 -0
  263. package/dist/rules/token/heading-increment.d.ts.map +1 -0
  264. package/dist/rules/token/heading-increment.js +27 -0
  265. package/dist/rules/token/heading-increment.js.map +1 -0
  266. package/dist/rules/token/heading-start-left.d.ts +3 -0
  267. package/dist/rules/token/heading-start-left.d.ts.map +1 -0
  268. package/dist/rules/token/heading-start-left.js +31 -0
  269. package/dist/rules/token/heading-start-left.js.map +1 -0
  270. package/dist/rules/token/heading-style.d.ts +3 -0
  271. package/dist/rules/token/heading-style.d.ts.map +1 -0
  272. package/dist/rules/token/heading-style.js +41 -0
  273. package/dist/rules/token/heading-style.js.map +1 -0
  274. package/dist/rules/token/helpers.d.ts +313 -0
  275. package/dist/rules/token/helpers.d.ts.map +1 -0
  276. package/dist/rules/token/helpers.js +746 -0
  277. package/dist/rules/token/helpers.js.map +1 -0
  278. package/dist/rules/token/hr-style.d.ts +3 -0
  279. package/dist/rules/token/hr-style.d.ts.map +1 -0
  280. package/dist/rules/token/hr-style.js +28 -0
  281. package/dist/rules/token/hr-style.js.map +1 -0
  282. package/dist/rules/token/index.d.ts +75 -0
  283. package/dist/rules/token/index.d.ts.map +1 -0
  284. package/dist/rules/token/index.js +226 -0
  285. package/dist/rules/token/index.js.map +1 -0
  286. package/dist/rules/token/line-length.d.ts +3 -0
  287. package/dist/rules/token/line-length.d.ts.map +1 -0
  288. package/dist/rules/token/line-length.js +120 -0
  289. package/dist/rules/token/line-length.js.map +1 -0
  290. package/dist/rules/token/link-fragments.d.ts +3 -0
  291. package/dist/rules/token/link-fragments.d.ts.map +1 -0
  292. package/dist/rules/token/link-fragments.js +145 -0
  293. package/dist/rules/token/link-fragments.js.map +1 -0
  294. package/dist/rules/token/link-image-reference-definitions.d.ts +3 -0
  295. package/dist/rules/token/link-image-reference-definitions.d.ts.map +1 -0
  296. package/dist/rules/token/link-image-reference-definitions.js +50 -0
  297. package/dist/rules/token/link-image-reference-definitions.js.map +1 -0
  298. package/dist/rules/token/link-image-style.d.ts +3 -0
  299. package/dist/rules/token/link-image-style.d.ts.map +1 -0
  300. package/dist/rules/token/link-image-style.js +131 -0
  301. package/dist/rules/token/link-image-style.js.map +1 -0
  302. package/dist/rules/token/list-indent.d.ts +3 -0
  303. package/dist/rules/token/list-indent.d.ts.map +1 -0
  304. package/dist/rules/token/list-indent.js +60 -0
  305. package/dist/rules/token/list-indent.js.map +1 -0
  306. package/dist/rules/token/list-length.d.ts +3 -0
  307. package/dist/rules/token/list-length.d.ts.map +1 -0
  308. package/dist/rules/token/list-length.js +55 -0
  309. package/dist/rules/token/list-length.js.map +1 -0
  310. package/dist/rules/token/list-marker-space.d.ts +3 -0
  311. package/dist/rules/token/list-marker-space.d.ts.map +1 -0
  312. package/dist/rules/token/list-marker-space.js +52 -0
  313. package/dist/rules/token/list-marker-space.js.map +1 -0
  314. package/dist/rules/token/markdoc-attributes.d.ts +3 -0
  315. package/dist/rules/token/markdoc-attributes.d.ts.map +1 -0
  316. package/dist/rules/token/markdoc-attributes.js +269 -0
  317. package/dist/rules/token/markdoc-attributes.js.map +1 -0
  318. package/dist/rules/token/markdoc-pairing.d.ts +3 -0
  319. package/dist/rules/token/markdoc-pairing.d.ts.map +1 -0
  320. package/dist/rules/token/markdoc-pairing.js +73 -0
  321. package/dist/rules/token/markdoc-pairing.js.map +1 -0
  322. package/dist/rules/token/markdoc-syntax.d.ts +3 -0
  323. package/dist/rules/token/markdoc-syntax.d.ts.map +1 -0
  324. package/dist/rules/token/markdoc-syntax.js +119 -0
  325. package/dist/rules/token/markdoc-syntax.js.map +1 -0
  326. package/dist/rules/token/markdoc-unknown-tag.d.ts +3 -0
  327. package/dist/rules/token/markdoc-unknown-tag.d.ts.map +1 -0
  328. package/dist/rules/token/markdoc-unknown-tag.js +64 -0
  329. package/dist/rules/token/markdoc-unknown-tag.js.map +1 -0
  330. package/dist/rules/token/messages.d.ts +4 -0
  331. package/dist/rules/token/messages.d.ts.map +1 -0
  332. package/dist/rules/token/messages.js +20 -0
  333. package/dist/rules/token/messages.js.map +1 -0
  334. package/dist/rules/token/no-alt-text.d.ts +3 -0
  335. package/dist/rules/token/no-alt-text.d.ts.map +1 -0
  336. package/dist/rules/token/no-alt-text.js +47 -0
  337. package/dist/rules/token/no-alt-text.js.map +1 -0
  338. package/dist/rules/token/no-bare-urls.d.ts +3 -0
  339. package/dist/rules/token/no-bare-urls.d.ts.map +1 -0
  340. package/dist/rules/token/no-bare-urls.js +88 -0
  341. package/dist/rules/token/no-bare-urls.js.map +1 -0
  342. package/dist/rules/token/no-blanks-blockquote.d.ts +3 -0
  343. package/dist/rules/token/no-blanks-blockquote.d.ts.map +1 -0
  344. package/dist/rules/token/no-blanks-blockquote.js +39 -0
  345. package/dist/rules/token/no-blanks-blockquote.js.map +1 -0
  346. package/dist/rules/token/no-duplicate-heading.d.ts +3 -0
  347. package/dist/rules/token/no-duplicate-heading.d.ts.map +1 -0
  348. package/dist/rules/token/no-duplicate-heading.js +101 -0
  349. package/dist/rules/token/no-duplicate-heading.js.map +1 -0
  350. package/dist/rules/token/no-duplicate-link-destinations.d.ts +3 -0
  351. package/dist/rules/token/no-duplicate-link-destinations.d.ts.map +1 -0
  352. package/dist/rules/token/no-duplicate-link-destinations.js +65 -0
  353. package/dist/rules/token/no-duplicate-link-destinations.js.map +1 -0
  354. package/dist/rules/token/no-emphasis-as-heading.d.ts +3 -0
  355. package/dist/rules/token/no-emphasis-as-heading.d.ts.map +1 -0
  356. package/dist/rules/token/no-emphasis-as-heading.js +44 -0
  357. package/dist/rules/token/no-emphasis-as-heading.js.map +1 -0
  358. package/dist/rules/token/no-empty-headings.d.ts +3 -0
  359. package/dist/rules/token/no-empty-headings.d.ts.map +1 -0
  360. package/dist/rules/token/no-empty-headings.js +28 -0
  361. package/dist/rules/token/no-empty-headings.js.map +1 -0
  362. package/dist/rules/token/no-empty-links.d.ts +3 -0
  363. package/dist/rules/token/no-empty-links.d.ts.map +1 -0
  364. package/dist/rules/token/no-empty-links.js +67 -0
  365. package/dist/rules/token/no-empty-links.js.map +1 -0
  366. package/dist/rules/token/no-hard-tabs.d.ts +3 -0
  367. package/dist/rules/token/no-hard-tabs.d.ts.map +1 -0
  368. package/dist/rules/token/no-hard-tabs.js +76 -0
  369. package/dist/rules/token/no-hard-tabs.js.map +1 -0
  370. package/dist/rules/token/no-inline-html.d.ts +3 -0
  371. package/dist/rules/token/no-inline-html.d.ts.map +1 -0
  372. package/dist/rules/token/no-inline-html.js +45 -0
  373. package/dist/rules/token/no-inline-html.js.map +1 -0
  374. package/dist/rules/token/no-missing-space-atx.d.ts +3 -0
  375. package/dist/rules/token/no-missing-space-atx.d.ts.map +1 -0
  376. package/dist/rules/token/no-missing-space-atx.js +36 -0
  377. package/dist/rules/token/no-missing-space-atx.js.map +1 -0
  378. package/dist/rules/token/no-missing-space-closed-atx.d.ts +3 -0
  379. package/dist/rules/token/no-missing-space-closed-atx.d.ts.map +1 -0
  380. package/dist/rules/token/no-missing-space-closed-atx.js +45 -0
  381. package/dist/rules/token/no-missing-space-closed-atx.js.map +1 -0
  382. package/dist/rules/token/no-multiple-blanks.d.ts +3 -0
  383. package/dist/rules/token/no-multiple-blanks.d.ts.map +1 -0
  384. package/dist/rules/token/no-multiple-blanks.js +35 -0
  385. package/dist/rules/token/no-multiple-blanks.js.map +1 -0
  386. package/dist/rules/token/no-multiple-space-atx.d.ts +13 -0
  387. package/dist/rules/token/no-multiple-space-atx.d.ts.map +1 -0
  388. package/dist/rules/token/no-multiple-space-atx.js +50 -0
  389. package/dist/rules/token/no-multiple-space-atx.js.map +1 -0
  390. package/dist/rules/token/no-multiple-space-blockquote.d.ts +3 -0
  391. package/dist/rules/token/no-multiple-space-blockquote.d.ts.map +1 -0
  392. package/dist/rules/token/no-multiple-space-blockquote.js +43 -0
  393. package/dist/rules/token/no-multiple-space-blockquote.js.map +1 -0
  394. package/dist/rules/token/no-multiple-space-closed-atx.d.ts +3 -0
  395. package/dist/rules/token/no-multiple-space-closed-atx.d.ts.map +1 -0
  396. package/dist/rules/token/no-multiple-space-closed-atx.js +19 -0
  397. package/dist/rules/token/no-multiple-space-closed-atx.js.map +1 -0
  398. package/dist/rules/token/no-reversed-links.d.ts +3 -0
  399. package/dist/rules/token/no-reversed-links.d.ts.map +1 -0
  400. package/dist/rules/token/no-reversed-links.js +52 -0
  401. package/dist/rules/token/no-reversed-links.js.map +1 -0
  402. package/dist/rules/token/no-space-in-code.d.ts +3 -0
  403. package/dist/rules/token/no-space-in-code.d.ts.map +1 -0
  404. package/dist/rules/token/no-space-in-code.js +75 -0
  405. package/dist/rules/token/no-space-in-code.js.map +1 -0
  406. package/dist/rules/token/no-space-in-emphasis.d.ts +3 -0
  407. package/dist/rules/token/no-space-in-emphasis.d.ts.map +1 -0
  408. package/dist/rules/token/no-space-in-emphasis.js +79 -0
  409. package/dist/rules/token/no-space-in-emphasis.js.map +1 -0
  410. package/dist/rules/token/no-space-in-links.d.ts +3 -0
  411. package/dist/rules/token/no-space-in-links.d.ts.map +1 -0
  412. package/dist/rules/token/no-space-in-links.js +48 -0
  413. package/dist/rules/token/no-space-in-links.js.map +1 -0
  414. package/dist/rules/token/no-trailing-punctuation.d.ts +3 -0
  415. package/dist/rules/token/no-trailing-punctuation.d.ts.map +1 -0
  416. package/dist/rules/token/no-trailing-punctuation.js +38 -0
  417. package/dist/rules/token/no-trailing-punctuation.js.map +1 -0
  418. package/dist/rules/token/no-trailing-spaces.d.ts +3 -0
  419. package/dist/rules/token/no-trailing-spaces.d.ts.map +1 -0
  420. package/dist/rules/token/no-trailing-spaces.js +89 -0
  421. package/dist/rules/token/no-trailing-spaces.js.map +1 -0
  422. package/dist/rules/token/ol-prefix.d.ts +3 -0
  423. package/dist/rules/token/ol-prefix.d.ts.map +1 -0
  424. package/dist/rules/token/ol-prefix.js +70 -0
  425. package/dist/rules/token/ol-prefix.js.map +1 -0
  426. package/dist/rules/token/proper-names.d.ts +3 -0
  427. package/dist/rules/token/proper-names.d.ts.map +1 -0
  428. package/dist/rules/token/proper-names.js +93 -0
  429. package/dist/rules/token/proper-names.js.map +1 -0
  430. package/dist/rules/token/reference-links-images.d.ts +3 -0
  431. package/dist/rules/token/reference-links-images.d.ts.map +1 -0
  432. package/dist/rules/token/reference-links-images.js +36 -0
  433. package/dist/rules/token/reference-links-images.js.map +1 -0
  434. package/dist/rules/token/required-headings.d.ts +3 -0
  435. package/dist/rules/token/required-headings.d.ts.map +1 -0
  436. package/dist/rules/token/required-headings.js +83 -0
  437. package/dist/rules/token/required-headings.js.map +1 -0
  438. package/dist/rules/token/single-h1.d.ts +3 -0
  439. package/dist/rules/token/single-h1.d.ts.map +1 -0
  440. package/dist/rules/token/single-h1.js +56 -0
  441. package/dist/rules/token/single-h1.js.map +1 -0
  442. package/dist/rules/token/single-trailing-newline.d.ts +3 -0
  443. package/dist/rules/token/single-trailing-newline.d.ts.map +1 -0
  444. package/dist/rules/token/single-trailing-newline.js +25 -0
  445. package/dist/rules/token/single-trailing-newline.js.map +1 -0
  446. package/dist/rules/token/strong-style.d.ts +3 -0
  447. package/dist/rules/token/strong-style.d.ts.map +1 -0
  448. package/dist/rules/token/strong-style.js +51 -0
  449. package/dist/rules/token/strong-style.js.map +1 -0
  450. package/dist/rules/token/table-column-count.d.ts +3 -0
  451. package/dist/rules/token/table-column-count.d.ts.map +1 -0
  452. package/dist/rules/token/table-column-count.js +44 -0
  453. package/dist/rules/token/table-column-count.js.map +1 -0
  454. package/dist/rules/token/table-column-style.d.ts +3 -0
  455. package/dist/rules/token/table-column-style.d.ts.map +1 -0
  456. package/dist/rules/token/table-column-style.js +179 -0
  457. package/dist/rules/token/table-column-style.js.map +1 -0
  458. package/dist/rules/token/table-pipe-style.d.ts +3 -0
  459. package/dist/rules/token/table-pipe-style.d.ts.map +1 -0
  460. package/dist/rules/token/table-pipe-style.js +54 -0
  461. package/dist/rules/token/table-pipe-style.js.map +1 -0
  462. package/dist/rules/token/ul-indent.d.ts +3 -0
  463. package/dist/rules/token/ul-indent.d.ts.map +1 -0
  464. package/dist/rules/token/ul-indent.js +72 -0
  465. package/dist/rules/token/ul-indent.js.map +1 -0
  466. package/dist/rules/token/ul-style.d.ts +3 -0
  467. package/dist/rules/token/ul-style.d.ts.map +1 -0
  468. package/dist/rules/token/ul-style.js +80 -0
  469. package/dist/rules/token/ul-style.js.map +1 -0
  470. package/dist/rules/types.d.ts +81 -0
  471. package/dist/rules/types.d.ts.map +1 -0
  472. package/dist/rules/types.js +2 -0
  473. package/dist/rules/types.js.map +1 -0
  474. package/dist/rules/utils.d.ts +29 -0
  475. package/dist/rules/utils.d.ts.map +1 -0
  476. package/dist/{assertions → rules}/utils.js +27 -0
  477. package/dist/rules/utils.js.map +1 -0
  478. package/dist/scopes/extractor.d.ts +7 -0
  479. package/dist/scopes/extractor.d.ts.map +1 -0
  480. package/dist/scopes/extractor.js +475 -0
  481. package/dist/scopes/extractor.js.map +1 -0
  482. package/dist/scopes/selector.d.ts +51 -0
  483. package/dist/scopes/selector.d.ts.map +1 -0
  484. package/dist/scopes/selector.js +121 -0
  485. package/dist/scopes/selector.js.map +1 -0
  486. package/dist/scopes/sentences.d.ts +15 -0
  487. package/dist/scopes/sentences.d.ts.map +1 -0
  488. package/dist/scopes/sentences.js +124 -0
  489. package/dist/scopes/sentences.js.map +1 -0
  490. package/dist/scopes/types.d.ts +44 -0
  491. package/dist/scopes/types.d.ts.map +1 -0
  492. package/dist/scopes/types.js +2 -0
  493. package/dist/scopes/types.js.map +1 -0
  494. package/dist/scopes/vocabulary.d.ts +16 -0
  495. package/dist/scopes/vocabulary.d.ts.map +1 -0
  496. package/dist/scopes/vocabulary.js +70 -0
  497. package/dist/scopes/vocabulary.js.map +1 -0
  498. package/dist/types/assertions.d.ts +95 -32
  499. package/dist/types/assertions.d.ts.map +1 -1
  500. package/dist/types/problems.d.ts +4 -5
  501. package/dist/types/problems.d.ts.map +1 -1
  502. package/dist/types/rules.d.ts +4 -6
  503. package/dist/types/rules.d.ts.map +1 -1
  504. package/examples/appendices/google.appendix.yaml +91 -0
  505. package/examples/appendices/inclusive-language.appendix.yaml +61 -0
  506. package/examples/appendices/microsoft.appendix.yaml +99 -0
  507. package/examples/appendices/plain-language.appendix.yaml +88 -0
  508. package/examples/google.yaml +1525 -0
  509. package/examples/inclusive-language.yaml +304 -0
  510. package/examples/microsoft.yaml +1542 -0
  511. package/examples/plain-language.yaml +325 -0
  512. package/package.json +49 -16
  513. package/presets/google/PROVENANCE.md +1022 -0
  514. package/presets/google/sources.json +192 -0
  515. package/presets/inclusive-language/PROVENANCE.md +174 -0
  516. package/presets/inclusive-language/sources.json +107 -0
  517. package/presets/microsoft/PROVENANCE.md +1555 -0
  518. package/presets/microsoft/sources.json +494 -0
  519. package/presets/plain-language/PROVENANCE.md +364 -0
  520. package/presets/plain-language/sources.json +108 -0
  521. package/dist/assertions/bullet-style.d.ts +0 -3
  522. package/dist/assertions/bullet-style.d.ts.map +0 -1
  523. package/dist/assertions/bullet-style.js +0 -60
  524. package/dist/assertions/bullet-style.js.map +0 -1
  525. package/dist/assertions/index.d.ts +0 -21
  526. package/dist/assertions/index.d.ts.map +0 -1
  527. package/dist/assertions/index.js +0 -30
  528. package/dist/assertions/index.js.map +0 -1
  529. package/dist/assertions/max-image-size.d.ts +0 -3
  530. package/dist/assertions/max-image-size.d.ts.map +0 -1
  531. package/dist/assertions/max-image-size.js +0 -73
  532. package/dist/assertions/max-image-size.js.map +0 -1
  533. package/dist/assertions/max-line-length.d.ts +0 -3
  534. package/dist/assertions/max-line-length.d.ts.map +0 -1
  535. package/dist/assertions/max-line-length.js +0 -68
  536. package/dist/assertions/max-line-length.js.map +0 -1
  537. package/dist/assertions/no-broken-fragment-links.d.ts +0 -3
  538. package/dist/assertions/no-broken-fragment-links.d.ts.map +0 -1
  539. package/dist/assertions/no-broken-fragment-links.js +0 -79
  540. package/dist/assertions/no-broken-fragment-links.js.map +0 -1
  541. package/dist/assertions/no-duplicate-headings.d.ts +0 -3
  542. package/dist/assertions/no-duplicate-headings.d.ts.map +0 -1
  543. package/dist/assertions/no-duplicate-headings.js +0 -66
  544. package/dist/assertions/no-duplicate-headings.js.map +0 -1
  545. package/dist/assertions/no-hard-tabs.d.ts +0 -3
  546. package/dist/assertions/no-hard-tabs.d.ts.map +0 -1
  547. package/dist/assertions/no-hard-tabs.js +0 -63
  548. package/dist/assertions/no-hard-tabs.js.map +0 -1
  549. package/dist/assertions/no-trailing-spaces.d.ts +0 -3
  550. package/dist/assertions/no-trailing-spaces.d.ts.map +0 -1
  551. package/dist/assertions/no-trailing-spaces.js +0 -72
  552. package/dist/assertions/no-trailing-spaces.js.map +0 -1
  553. package/dist/assertions/pattern.d.ts +0 -3
  554. package/dist/assertions/pattern.d.ts.map +0 -1
  555. package/dist/assertions/pattern.js +0 -39
  556. package/dist/assertions/pattern.js.map +0 -1
  557. package/dist/assertions/semantic-line-breaks.d.ts +0 -3
  558. package/dist/assertions/semantic-line-breaks.d.ts.map +0 -1
  559. package/dist/assertions/semantic-line-breaks.js +0 -152
  560. package/dist/assertions/semantic-line-breaks.js.map +0 -1
  561. package/dist/assertions/swap.d.ts +0 -3
  562. package/dist/assertions/swap.d.ts.map +0 -1
  563. package/dist/assertions/swap.js +0 -39
  564. package/dist/assertions/swap.js.map +0 -1
  565. package/dist/assertions/utils.d.ts +0 -8
  566. package/dist/assertions/utils.d.ts.map +0 -1
  567. package/dist/assertions/utils.js.map +0 -1
  568. package/dist/core/scope-parser.d.ts +0 -26
  569. package/dist/core/scope-parser.d.ts.map +0 -1
  570. package/dist/core/scope-parser.js +0 -110
  571. package/dist/core/scope-parser.js.map +0 -1
  572. package/dist/files.d.ts +0 -2
  573. package/dist/files.d.ts.map +0 -1
  574. package/dist/files.js +0 -39
  575. package/dist/files.js.map +0 -1
  576. package/dist/load-config.d.ts +0 -25
  577. package/dist/load-config.d.ts.map +0 -1
  578. package/dist/load-config.js +0 -104
  579. package/dist/load-config.js.map +0 -1
  580. package/dist/load.d.ts +0 -25
  581. package/dist/load.d.ts.map +0 -1
  582. package/dist/load.js +0 -112
  583. package/dist/load.js.map +0 -1
  584. package/dist/scope.d.ts +0 -26
  585. package/dist/scope.d.ts.map +0 -1
  586. package/dist/scope.js +0 -110
  587. package/dist/scope.js.map +0 -1
  588. package/dist/types.d.ts +0 -109
  589. package/dist/types.d.ts.map +0 -1
  590. package/dist/types.js.map +0 -1
  591. package/dist/validate.d.ts +0 -31
  592. package/dist/validate.d.ts.map +0 -1
  593. package/dist/validate.js +0 -154
  594. package/dist/validate.js.map +0 -1
  595. /package/dist/{types.js → parser/types.js} +0 -0
@@ -0,0 +1,121 @@
1
+ import { validateScopeSelector } from './vocabulary.js';
2
+ const ALIASES = { default: 'summary' };
3
+ /**
4
+ * Splits a selector entry into its `&`-joined clauses. This is THE selector
5
+ * tokenizer: compilation (compileSelector below) and config validation
6
+ * (scopes/vocabulary.ts validateScopeSelector, config/validate.ts) must all
7
+ * parse selector entries through here, so the two sides can never drift
8
+ * apart on what counts as a term.
9
+ */
10
+ export function tokenizeSelector(raw) {
11
+ return raw.split('&').map((part) => {
12
+ const clause = part.trim();
13
+ const negated = clause.startsWith('~');
14
+ const term = (negated ? clause.slice(1) : clause).trim();
15
+ return { clause, negated, term };
16
+ });
17
+ }
18
+ /**
19
+ * Order-preserving removal of duplicate messages within a single selector's
20
+ * problem list. A selector that repeats the same mistake per clause
21
+ * (`all & all`, `bogus & bogus`) produces the identical message once per
22
+ * clause — reporting it twice adds noise, not information. Applied inside
23
+ * the problem-producing helpers (wholeDocumentKeywordProblems here,
24
+ * validateScopeSelector in vocabulary.ts) so every consumer — config
25
+ * validation's error list and compileSelector's throw alike — gets the
26
+ * deduplicated form.
27
+ */
28
+ export function dedupeProblems(problems) {
29
+ return [...new Set(problems)];
30
+ }
31
+ /**
32
+ * Problems with `all`/`raw` used as selector TERMS inside a compound or
33
+ * negated expression. Both are whole-document keywords, not segment names —
34
+ * extractScopes never emits segments with those scopes — so:
35
+ * - as a conjunction term (`heading & all`) the keyword clause can never
36
+ * match a segment, and the whole rule silently reports nothing;
37
+ * - negated (`~all`, `~raw`) the clause matches EVERY segment, silently
38
+ * meaning "everything" when the set-theoretic reading of `~all` is
39
+ * "nothing".
40
+ * Bare `all`/`raw` as an entire single entry is NOT a problem — that's the
41
+ * valid whole-document form compileSelector normalizes to `null`. Config
42
+ * validation (config/validate.ts validateScope) surfaces these as
43
+ * validation errors; compileSelector throws on them so direct runRules
44
+ * callers that skip validation fail loudly instead of silently.
45
+ */
46
+ export function wholeDocumentKeywordProblems(entry) {
47
+ const clauses = tokenizeSelector(entry);
48
+ const problems = [];
49
+ for (const { negated, term } of clauses) {
50
+ if (term !== 'all' && term !== 'raw')
51
+ continue;
52
+ if (negated) {
53
+ problems.push(`negating "${term}" in scope selector "${entry}" is not meaningful — ` +
54
+ `"${term}" is a whole-document keyword, not a segment name, so "~${term}" would ` +
55
+ `silently match every segment; use named scopes (e.g. \`~code & ~heading\`) ` +
56
+ `or \`scope: ${term}\``);
57
+ }
58
+ else if (clauses.length > 1) {
59
+ problems.push(`scope "${term}" covers the whole document and cannot be combined with other scopes ` +
60
+ `in selector "${entry}" — use \`scope: ${term}\` alone`);
61
+ }
62
+ }
63
+ return dedupeProblems(problems);
64
+ }
65
+ function termMatches(term, segmentScope) {
66
+ const resolved = ALIASES[term] ?? term;
67
+ return segmentScope === resolved || segmentScope.startsWith(`${resolved}.`);
68
+ }
69
+ function compileTerm(raw) {
70
+ const clauses = tokenizeSelector(raw);
71
+ return (segment) => clauses.every(({ negated, term }) => {
72
+ const matched = termMatches(term, segment.scope);
73
+ return negated ? !matched : matched;
74
+ });
75
+ }
76
+ export function compileSelector(scope) {
77
+ if (scope === undefined)
78
+ return null;
79
+ const entries = Array.isArray(scope) ? scope : [scope];
80
+ if (entries.length === 0)
81
+ return null;
82
+ // Every term must pass the vocabulary/keyword checks before anything
83
+ // compiles — a term that fails them can only compile to a silently-wrong
84
+ // predicate:
85
+ // - unknown terms ('heading & ALL' case typo; '~~code' double negation,
86
+ // whose post-~-strip term is '~code', unknown) compile to an
87
+ // always-false conjunct (rule lints nothing) or an always-true negation
88
+ // (rule fires on everything);
89
+ // - 'all'/'raw' as compound or negated TERMS are never-matching for
90
+ // `heading & all`, always-matching for `~all` — see
91
+ // wholeDocumentKeywordProblems.
92
+ // Both checks are the very helpers config validation runs
93
+ // (config/validate.ts validateScope → validateScopeSelector +
94
+ // wholeDocumentKeywordProblems), so validation and compilation can never
95
+ // disagree on which terms exist; config-driven entry points reject these
96
+ // shapes at validation first, and the throw here is for direct runRules
97
+ // callers that skip validation — loud beats a rule that silently reports
98
+ // nothing (or fires on everything).
99
+ for (const entry of entries) {
100
+ const problems = [...validateScopeSelector(entry), ...wholeDocumentKeywordProblems(entry)];
101
+ if (problems.length > 0) {
102
+ throw new Error(`Invalid scope selector: ${problems.join('; ')}`);
103
+ }
104
+ }
105
+ // 'all'/'raw' are whole-document keywords, not segment names — extractScopes
106
+ // never emits segments with those scopes, so they bypass filtering entirely
107
+ // (null = "run against the whole file"). The single-element array form must
108
+ // mean exactly what the bare string means (scope: ['all'] ≡ scope: all);
109
+ // compiling these keywords into ordinary name predicates would silently
110
+ // match nothing. Arrays MIXING 'all'/'raw' with other entries are rejected
111
+ // at config validation (src/config/validate.ts validateScope) — they can't
112
+ // reach here through any config-driven entry point.
113
+ if (entries.length === 1) {
114
+ const term = entries[0].trim();
115
+ if (term === 'all' || term === 'raw')
116
+ return null;
117
+ }
118
+ const predicates = entries.map(compileTerm);
119
+ return (segment) => predicates.some((predicate) => predicate(segment));
120
+ }
121
+ //# sourceMappingURL=selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/scopes/selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface SentenceSpan {
2
+ text: string;
3
+ start: number;
4
+ end: number;
5
+ }
6
+ export declare const ABBREVIATIONS: Set<string>;
7
+ /**
8
+ * The word immediately before `index`, lowercased, with a trailing dot
9
+ * removed -- so a dotted abbreviation like `e.g.` yields `e.g`, which is the
10
+ * form ABBREVIATIONS stores. Exported for title-case.ts, which asks the same
11
+ * question at the same kind of boundary.
12
+ */
13
+ export declare function lastWordBefore(text: string, index: number): string;
14
+ export declare function splitSentences(text: string): SentenceSpan[];
15
+ //# sourceMappingURL=sentences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentences.d.ts","sourceRoot":"","sources":["../../src/scopes/sentences.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAKD,eAAO,MAAM,aAAa,aAwBxB,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlE;AA8BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CA2C3D"}
@@ -0,0 +1,124 @@
1
+ // Shared with title-case.ts's sentence-break test, so the casing styles and
2
+ // the sentence splitter agree on what ends a sentence. One list, not two:
3
+ // `Cost vs. value` is a single sentence to both.
4
+ export const ABBREVIATIONS = new Set([
5
+ 'e.g',
6
+ 'i.e',
7
+ 'etc',
8
+ 'vs',
9
+ 'cf',
10
+ 'ca',
11
+ 'al',
12
+ 'approx',
13
+ 'dr',
14
+ 'mr',
15
+ 'mrs',
16
+ 'ms',
17
+ 'prof',
18
+ 'st',
19
+ 'no',
20
+ 'fig',
21
+ 'sec',
22
+ 'min',
23
+ 'max',
24
+ 'dept',
25
+ 'est',
26
+ 'inc',
27
+ 'ltd',
28
+ ]);
29
+ /**
30
+ * The word immediately before `index`, lowercased, with a trailing dot
31
+ * removed -- so a dotted abbreviation like `e.g.` yields `e.g`, which is the
32
+ * form ABBREVIATIONS stores. Exported for title-case.ts, which asks the same
33
+ * question at the same kind of boundary.
34
+ */
35
+ export function lastWordBefore(text, index) {
36
+ const slice = text.slice(0, index);
37
+ const match = /([\w.]+)$/.exec(slice);
38
+ return (match ? match[1] : '').toLowerCase().replace(/\.$/, '');
39
+ }
40
+ // An ordinal enumerator like `1. Title` or `**1. Title**` is a label, not a
41
+ // sentence end. A digit-only token before the '.' sits in enumerator position
42
+ // when it is (i) at the start of the content being split (line start, after
43
+ // leading whitespace only), or (ii) right after an emphasis/strong opener
44
+ // (`*`, `**`, `_`, `__`) — including mid-line, e.g. `Intro: **2. Title**`.
45
+ // A plain mid-sentence digit-period ("The answer is 42. Next.") is NOT
46
+ // enumerator position and stays a boundary.
47
+ function isOrdinalEnumerator(text, dotIndex) {
48
+ let j = dotIndex - 1;
49
+ if (j < 0 || !/\d/.test(text[j]))
50
+ return false;
51
+ while (j >= 0 && /\d/.test(text[j]))
52
+ j--;
53
+ // The token core must be ONLY digits: a letter or '.' attached in front
54
+ // makes it "v1", "1.2", etc. — never an enumerator.
55
+ if (j >= 0 && /[A-Za-z.]/.test(text[j]))
56
+ return false;
57
+ const beforeDigits = j;
58
+ while (j >= 0 && (text[j] === '*' || text[j] === '_'))
59
+ j--;
60
+ if (j < beforeDigits) {
61
+ // Emphasis markers directly before the digits mark an enumerator, but
62
+ // only when they are a real opener: at content start or after a
63
+ // non-word character (an intraword `_` as in `x_1` is not an opener).
64
+ return j < 0 || !/[A-Za-z0-9]/.test(text[j]);
65
+ }
66
+ // Bare digits: enumerator position only at line start, allowing leading
67
+ // indentation.
68
+ while (j >= 0 && (text[j] === ' ' || text[j] === '\t'))
69
+ j--;
70
+ return j < 0 || text[j] === '\n' || text[j] === '\r';
71
+ }
72
+ export function splitSentences(text) {
73
+ const spans = [];
74
+ let start = 0;
75
+ let inCode = false;
76
+ for (let i = 0; i < text.length; i++) {
77
+ const char = text[i];
78
+ if (char === '`') {
79
+ inCode = !inCode;
80
+ continue;
81
+ }
82
+ if (inCode || !'.!?'.includes(char))
83
+ continue;
84
+ // Consume runs of terminators ("?!", "...").
85
+ while (i + 1 < text.length && '.!?'.includes(text[i + 1]))
86
+ i++;
87
+ const next = text[i + 1];
88
+ // Boundary requires whitespace then an uppercase letter, quote, or bracket.
89
+ if (next === undefined)
90
+ break; // end of text handled after loop
91
+ if (next !== ' ' && next !== '\n' && next !== '\t' && next !== '\r')
92
+ continue;
93
+ // '\r\n' is one line ending, so the CRLF pair counts as a single
94
+ // whitespace unit — otherwise a '.\r\nNext' boundary would test the
95
+ // '\n' for uppercase and never split (unlike its '.\nNext' LF twin).
96
+ const after = next === '\r' && text[i + 2] === '\n' ? text[i + 3] : text[i + 2];
97
+ if (after === undefined || !/[A-Z"'([`]/.test(after))
98
+ continue;
99
+ if (char === '.') {
100
+ const word = lastWordBefore(text, i);
101
+ if (ABBREVIATIONS.has(word))
102
+ continue;
103
+ if (/\d$/.test(text[i - 1] ?? '') && /\d/.test(after))
104
+ continue; // decimals
105
+ if (isOrdinalEnumerator(text, i))
106
+ continue;
107
+ }
108
+ const end = i + 1;
109
+ const raw = text.slice(start, end);
110
+ if (raw.trim())
111
+ spans.push({ text: raw.trim(), start: start + (raw.length - raw.trimStart().length), end });
112
+ start = end;
113
+ }
114
+ const tail = text.slice(start);
115
+ if (tail.trim()) {
116
+ spans.push({
117
+ text: tail.trim(),
118
+ start: start + (tail.length - tail.trimStart().length),
119
+ end: text.length,
120
+ });
121
+ }
122
+ return spans;
123
+ }
124
+ //# sourceMappingURL=sentences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentences.js","sourceRoot":"","sources":["../../src/scopes/sentences.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { Token } from '../parser/types.js';
2
+ /** Half-open `[start, end)` character offsets into a segment's `content`. */
3
+ export interface TextRange {
4
+ start: number;
5
+ end: number;
6
+ }
7
+ export interface ScopedSegment {
8
+ scope: string;
9
+ content: string;
10
+ startLine: number;
11
+ startColumn: number;
12
+ endLine: number;
13
+ endColumn: number;
14
+ tokens: Token[];
15
+ /**
16
+ * The verbatim source slice this segment covers, set only when `content` is
17
+ * not that slice — that is, when a prose scope had markdoc tag spans blanked
18
+ * out of it by `maskProse` in scopes/extractor.ts. Always the same length as
19
+ * `content`, so an offset means the same thing in both.
20
+ *
21
+ * `content` is the prose view: what a rule should scan, split into words, or
22
+ * measure. `sourceText ?? content` is the source view: what a rule should
23
+ * quote in `Problem.text`, `Problem.match`, or a message. Quoting the masked
24
+ * view instead shows the user a run of blanks where their tag is.
25
+ */
26
+ sourceText?: string;
27
+ /**
28
+ * The spans of `content` that masking blanked, when it did. Rules that
29
+ * reject a match rather than rewrite text need these: a user-supplied regex
30
+ * runs against `content`, and no mask character can stop an arbitrary
31
+ * pattern (a negated class like `[^,]+`, or `\s+` against a blank mask) from
32
+ * matching straight through a masked run and merging the text on either side
33
+ * of a tag into one bogus match. Such a match has to be discarded after the
34
+ * fact, by overlap — the same treatment inline code spans get, for the same
35
+ * reason. `nonProseRanges` in rules/utils.ts bundles both sets.
36
+ */
37
+ maskedRanges?: TextRange[];
38
+ metadata?: {
39
+ headingLevel?: number;
40
+ codeLanguage?: string;
41
+ listDepth?: number;
42
+ };
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scopes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scopes/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ export declare const BASE_SCOPES: readonly ['all', 'raw', 'default', 'summary', 'sentence', 'paragraph', 'heading', 'code', 'list-item', 'blockquote', 'table.header', 'table.cell', 'markdoc.tag', 'frontmatter', 'html', 'comment', 'alt', 'link'];
2
+ /**
3
+ * True when `term` (already stripped of any leading `~` negation and
4
+ * surrounding whitespace) is a recognized scope name — either an exact
5
+ * base-vocabulary match or a `heading.h1`-`heading.h6` level selector.
6
+ */
7
+ export declare function isKnownScopeTerm(term: string): boolean;
8
+ /**
9
+ * Validates a single scope string, which may be a bare scope name or a
10
+ * selector clause of `&`-joined (optionally `~`-negated) terms, e.g.
11
+ * `'~blockquote & ~heading'`. Returns a list of problems found (empty when
12
+ * valid) — each problem names the offending term/clause for a helpful error
13
+ * message.
14
+ */
15
+ export declare function validateScopeSelector(raw: string): string[];
16
+ //# sourceMappingURL=vocabulary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../src/scopes/vocabulary.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,YACtB,KAAK,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,EACX,SAAS,EACT,MAAM,EACN,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,MAAM,CACE,CAAC;AAIX;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB3D"}
@@ -0,0 +1,70 @@
1
+ import { dedupeProblems, tokenizeSelector } from './selector.js';
2
+ // Canonical list of scope names recognized by the extractor/selector. Schema
3
+ // validation (src/config/schema.ts) and semantic validation
4
+ // (src/config/validate.ts) both derive from this list so they can't drift
5
+ // from what extractScopes()/compileSelector() actually support.
6
+ //
7
+ // 'all' and 'raw' are special-cased selector keywords (they bypass
8
+ // filtering entirely — see compileSelector) rather than segment scopes, but
9
+ // they're valid values for the `scope` config field, so they're included
10
+ // here too. 'default' is a permanent alias for 'summary' (see
11
+ // scopes/selector.ts ALIASES).
12
+ export const BASE_SCOPES = [
13
+ 'all',
14
+ 'raw',
15
+ 'default',
16
+ 'summary',
17
+ 'sentence',
18
+ 'paragraph',
19
+ 'heading',
20
+ 'code',
21
+ 'list-item',
22
+ 'blockquote',
23
+ 'table.header',
24
+ 'table.cell',
25
+ 'markdoc.tag',
26
+ 'frontmatter',
27
+ 'html',
28
+ 'comment',
29
+ 'alt',
30
+ 'link',
31
+ ];
32
+ const HEADING_LEVEL_PATTERN = /^heading\.h[1-6]$/;
33
+ /**
34
+ * True when `term` (already stripped of any leading `~` negation and
35
+ * surrounding whitespace) is a recognized scope name — either an exact
36
+ * base-vocabulary match or a `heading.h1`-`heading.h6` level selector.
37
+ */
38
+ export function isKnownScopeTerm(term) {
39
+ return BASE_SCOPES.includes(term) || HEADING_LEVEL_PATTERN.test(term);
40
+ }
41
+ /**
42
+ * Validates a single scope string, which may be a bare scope name or a
43
+ * selector clause of `&`-joined (optionally `~`-negated) terms, e.g.
44
+ * `'~blockquote & ~heading'`. Returns a list of problems found (empty when
45
+ * valid) — each problem names the offending term/clause for a helpful error
46
+ * message.
47
+ */
48
+ export function validateScopeSelector(raw) {
49
+ const problems = [];
50
+ // Parses via the selector module's own tokenizer (the one compileSelector
51
+ // compiles with) so validation and compilation can never disagree about
52
+ // where a term starts or ends.
53
+ for (const { clause, term } of tokenizeSelector(raw)) {
54
+ if (clause === '') {
55
+ problems.push(`empty clause in scope selector "${raw}"`);
56
+ continue;
57
+ }
58
+ if (term === '') {
59
+ problems.push(`missing scope name after "~" in scope selector "${raw}"`);
60
+ continue;
61
+ }
62
+ if (!isKnownScopeTerm(term)) {
63
+ problems.push(`unknown scope "${term}" in scope selector "${raw}"`);
64
+ }
65
+ }
66
+ // Order-preserving: a selector repeating the same bad clause ('bogus &
67
+ // bogus') yields the identical message once per clause — report it once.
68
+ return dedupeProblems(problems);
69
+ }
70
+ //# sourceMappingURL=vocabulary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/scopes/vocabulary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjE,6EAA6E;AAC7E,4DAA4D;AAC5D,0EAA0E;AAC1E,gEAAgE;AAChE,EAAE;AACF,mEAAmE;AACnE,4EAA4E;AAC5E,yEAAyE;AACzE,8DAA8D;AAC9D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK;IACL,KAAK;IACL,SAAS;IACT,SAAS;IACT,UAAU;IACV,WAAW;IACX,SAAS;IACT,MAAM;IACN,WAAW;IACX,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,aAAa;IACb,aAAa;IACb,MAAM;IACN,SAAS;IACT,KAAK;IACL,MAAM;CACE,CAAC;AAEX,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAElD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAQ,WAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,wEAAwE;IACxE,+BAA+B;IAC/B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,mDAAmD,GAAG,GAAG,CAAC,CAAC;YACzE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,wBAAwB,GAAG,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,yEAAyE;IACzE,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}
@@ -1,30 +1,30 @@
1
+ import type { ReadabilityFormula } from '../metrics/index.js';
1
2
  export interface SwapAssertion {
2
3
  ignoreCase?: boolean;
3
4
  wordBoundary?: boolean;
4
5
  keysAreRegex?: boolean;
5
6
  pairs: Record<string, string>;
7
+ /**
8
+ * Whether inline code spans (`` `like this` ``) are scanned for matches.
9
+ * Default `false`: a match inside inline code is skipped (by range, not
10
+ * by masking the text -- see core/inline-code.ts), so a swap pair like
11
+ * `master -> primary` doesn't fire inside `` `git checkout master` ``.
12
+ * Set `true` to scan code spans too.
13
+ */
14
+ includeCode?: boolean;
6
15
  }
7
16
  export interface PatternAssertion {
8
17
  tokens: string[];
9
18
  ignoreCase?: boolean;
10
19
  nonword?: boolean;
11
- negate?: boolean;
12
- }
13
- export interface MaxLineLengthAssertion {
14
- maxLength: number;
15
- ignoreCodeBlocks?: boolean;
16
- ignoreTables?: boolean;
17
- ignoreFrontMatter?: boolean;
18
- ignoreHtmlTags?: boolean;
19
- ignoreMarkdownLinkUrls?: boolean;
20
- }
21
- export interface NoTrailingSpacesAssertion {
22
- skipCodeBlocks?: boolean;
23
- skipBlankLines?: boolean;
24
- }
25
- export interface BulletStyleAssertion {
26
- style: '-' | '*';
27
- normalizeNested?: boolean;
20
+ /**
21
+ * Whether inline code spans (`` `like this` ``) are scanned for matches.
22
+ * Default `false`: a match inside inline code is skipped (by range, not
23
+ * by masking the text -- see core/inline-code.ts), so a token like
24
+ * `master` doesn't fire inside `` `git checkout master` ``. Set `true`
25
+ * to scan code spans too.
26
+ */
27
+ includeCode?: boolean;
28
28
  }
29
29
  export interface SemanticLineBreaksAssertion {
30
30
  mode: 'sentence' | 'phrase';
@@ -32,25 +32,88 @@ export interface SemanticLineBreaksAssertion {
32
32
  ignoreCodeBlocks?: boolean;
33
33
  ignoreTables?: boolean;
34
34
  }
35
- export interface NoHardTabsAssertion {
36
- skipCodeBlocks?: boolean;
37
- /** Number of spaces to replace a hard tab with. Default: 2 */
38
- spacesPerTab?: number;
39
- }
40
- export interface NoDuplicateHeadingsAssertion {
41
- caseSensitive?: boolean;
42
- ignoreCommonHeadings?: boolean;
43
- respectSections?: boolean;
44
- }
45
- export interface NoBrokenFragmentLinksAssertion {
46
- /** Whether to check fragments in external files. Default: true */
47
- checkExternalFiles?: boolean;
48
- }
49
35
  export interface MaxImageSizeAssertion {
50
36
  /** Maximum image size in KB. Default: 100 */
51
37
  maxSizeKB?: number;
52
38
  /** File extensions to check. Default: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'] */
53
39
  extensions?: string[];
54
40
  }
55
- export type AssertionConfig = SwapAssertion | PatternAssertion | MaxLineLengthAssertion | NoTrailingSpacesAssertion | BulletStyleAssertion | SemanticLineBreaksAssertion | NoHardTabsAssertion | NoDuplicateHeadingsAssertion | NoBrokenFragmentLinksAssertion | MaxImageSizeAssertion;
41
+ export interface OccurrenceAssertion {
42
+ pattern: string;
43
+ min?: number;
44
+ max?: number;
45
+ ignoreCase?: boolean;
46
+ }
47
+ export interface RepetitionAssertion {
48
+ pattern?: string;
49
+ ignoreCase?: boolean;
50
+ }
51
+ export interface ConsistencyAssertion {
52
+ either: Record<string, string>;
53
+ ignoreCase?: boolean;
54
+ }
55
+ export interface ConditionalAssertion {
56
+ first: string;
57
+ second: string;
58
+ ignoreCase?: boolean;
59
+ }
60
+ export interface CapitalizationAssertion {
61
+ match: string;
62
+ exceptions?: string[];
63
+ style?: 'ap' | 'chicago';
64
+ builtinVocabulary?: boolean;
65
+ }
66
+ export interface MetricAssertion {
67
+ formula: ReadabilityFormula;
68
+ min?: number;
69
+ max?: number;
70
+ }
71
+ export interface SpellingAssertion {
72
+ /**
73
+ * Base path (WITHOUT the `.aff`/`.dic` extension) to a custom Hunspell
74
+ * dictionary pair, resolved relative to `process.cwd()` unless absolute.
75
+ * Omit to use the default English dictionary (`dictionary-en`).
76
+ */
77
+ dictionary?: string;
78
+ /** Extra known-good words, matched case-insensitively; never flagged. */
79
+ vocab?: string[];
80
+ /**
81
+ * Regex patterns; a token matching any of them is never flagged. An
82
+ * invalid pattern is silently ignored.
83
+ */
84
+ ignore?: string[];
85
+ /**
86
+ * Default `true`: whether `../data/proper-nouns.ts`'s
87
+ * `TECHNICAL_PROPER_NOUNS` is unioned into the accepted-word set alongside
88
+ * `vocab` -- see spelling.ts's `execute`. Multi-token entries are split on
89
+ * whitespace/dots and each part accepted individually (correct for a
90
+ * per-word spell check, unlike `capitalization`'s whole-phrase matching --
91
+ * see spelling.ts's doc comment for that asymmetry). Set `false` to
92
+ * restore strict pre-built-in behavior.
93
+ */
94
+ builtinVocabulary?: boolean;
95
+ }
96
+ export interface LengthAssertion {
97
+ unit: 'characters' | 'words' | 'sentences';
98
+ min?: number;
99
+ max?: number;
100
+ }
101
+ /**
102
+ * Escape-hatch options shape for the 53 markdownlint-parity token rules
103
+ * (`line-length`, `ul-style`, `no-duplicate-heading`, `heading-style`, and
104
+ * so on — see `rules/token/index.ts`'s `allTokenRules`). Each token rule
105
+ * declares its own option names and defaults on its `TokenRule.defaults`
106
+ * object (see e.g. `rules/token/line-length.ts`) rather than a dedicated
107
+ * named interface here — there are too many (and they change too often
108
+ * across rule ports) to keep in lockstep with hand-written interfaces
109
+ * without one inevitably drifting. This permissive index signature is what
110
+ * lets a typed `RecheckConfig` literal set e.g.
111
+ * `assertions: { 'line-length': { lineLength: 120 } }` without TS2353;
112
+ * runtime shape checking for token-rule options happens in each rule's own
113
+ * `check()`, not at the type level.
114
+ */
115
+ export interface TokenRuleOptions {
116
+ [option: string]: unknown;
117
+ }
118
+ export type AssertionConfig = SwapAssertion | PatternAssertion | SemanticLineBreaksAssertion | MaxImageSizeAssertion | OccurrenceAssertion | RepetitionAssertion | ConsistencyAssertion | ConditionalAssertion | CapitalizationAssertion | MetricAssertion | SpellingAssertion | LengthAssertion | TokenRuleOptions;
56
119
  //# sourceMappingURL=assertions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/types/assertions.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAGD,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,gBAAgB,GAChB,sBAAsB,GACtB,yBAAyB,GACzB,oBAAoB,GACpB,2BAA2B,GAC3B,mBAAmB,GACnB,4BAA4B,GAC5B,8BAA8B,GAC9B,qBAAqB,CAAC"}
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/types/assertions.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,10 @@ export interface Problem {
11
11
  }
12
12
  export interface Fix {
13
13
  file: string;
14
- line: number;
15
- column: number;
16
- oldText: string;
17
- newText: string;
18
14
  ruleName: string;
19
- description: string;
15
+ lineNumber: number;
16
+ editColumn?: number;
17
+ deleteCount?: number;
18
+ insertText?: string;
20
19
  }
21
20
  //# sourceMappingURL=problems.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"problems.d.ts","sourceRoot":"","sources":["../../src/types/problems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"problems.d.ts","sourceRoot":"","sources":["../../src/types/problems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}