@markuplint/rules 5.0.0-rc.4 → 5.0.0-rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (577) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/CLAUDE.md +31 -2
  3. package/lib/{wai-aria-deprecated-role → aria-prop-requires-role}/index.d.ts +0 -1
  4. package/lib/{wai-aria-no-global-prop → aria-prop-requires-role}/index.js +0 -1
  5. package/lib/attr-check.d.ts +0 -48
  6. package/lib/attr-check.js +0 -36
  7. package/lib/attr-eligibility.d.ts +41 -0
  8. package/lib/attr-eligibility.js +60 -0
  9. package/lib/attr-value-quotes/index.d.ts +0 -7
  10. package/lib/attr-value-quotes/index.js +0 -7
  11. package/lib/attr-value-quotes/meta.d.ts +0 -1
  12. package/lib/attr-value-quotes/meta.js +0 -1
  13. package/lib/case-sensitive-attr-name/index.d.ts +0 -8
  14. package/lib/case-sensitive-attr-name/index.js +0 -8
  15. package/lib/case-sensitive-attr-name/meta.d.ts +0 -1
  16. package/lib/case-sensitive-attr-name/meta.js +0 -1
  17. package/lib/case-sensitive-tag-name/index.d.ts +0 -8
  18. package/lib/case-sensitive-tag-name/index.js +0 -8
  19. package/lib/case-sensitive-tag-name/meta.d.ts +0 -1
  20. package/lib/case-sensitive-tag-name/meta.js +0 -1
  21. package/lib/class-naming/index.d.ts +0 -8
  22. package/lib/class-naming/index.js +0 -8
  23. package/lib/class-naming/meta.d.ts +1 -2
  24. package/lib/class-naming/meta.js +1 -2
  25. package/lib/consistent-table-row-length/index.d.ts +14 -0
  26. package/lib/consistent-table-row-length/index.js +69 -0
  27. package/lib/consistent-table-row-length/meta.d.ts +4 -0
  28. package/lib/consistent-table-row-length/meta.js +3 -0
  29. package/lib/create-message.d.ts +2 -25
  30. package/lib/create-message.js +2 -53
  31. package/lib/debug.d.ts +1 -9
  32. package/lib/debug.js +1 -5
  33. package/lib/element-supports-aria-prop/index.d.ts +12 -0
  34. package/lib/element-supports-aria-prop/index.js +38 -0
  35. package/lib/form-attr-references-form/index.d.ts +12 -0
  36. package/lib/form-attr-references-form/index.js +64 -0
  37. package/lib/{correct-aspect-ratio → form-attr-references-form}/meta.d.ts +1 -1
  38. package/lib/form-attr-references-form/meta.js +3 -0
  39. package/lib/head-element-order/meta.d.ts +1 -1
  40. package/lib/head-element-order/meta.js +1 -1
  41. package/lib/helpers.d.ts +8 -138
  42. package/lib/helpers.js +24 -165
  43. package/lib/index.d.ts +136 -78
  44. package/lib/index.js +169 -82
  45. package/lib/input-list-references-datalist/index.d.ts +13 -0
  46. package/lib/input-list-references-datalist/index.js +46 -0
  47. package/lib/input-list-references-datalist/meta.d.ts +4 -0
  48. package/lib/input-list-references-datalist/meta.js +3 -0
  49. package/lib/itemprop-requires-itemscope/index.d.ts +21 -0
  50. package/lib/itemprop-requires-itemscope/index.js +53 -0
  51. package/lib/itemprop-requires-itemscope/meta.d.ts +4 -0
  52. package/lib/itemprop-requires-itemscope/meta.js +3 -0
  53. package/lib/label-for-references-labelable/index.d.ts +12 -0
  54. package/lib/label-for-references-labelable/index.js +68 -0
  55. package/lib/label-for-references-labelable/meta.d.ts +4 -0
  56. package/lib/label-for-references-labelable/meta.js +3 -0
  57. package/lib/label-has-control/index.d.ts +5 -5
  58. package/lib/label-has-control/index.js +5 -18
  59. package/lib/label-has-control/meta.d.ts +0 -1
  60. package/lib/label-has-control/meta.js +0 -1
  61. package/lib/label-no-multiple-controls/index.d.ts +31 -0
  62. package/lib/label-no-multiple-controls/index.js +104 -0
  63. package/lib/label-no-multiple-controls/meta.d.ts +4 -0
  64. package/lib/label-no-multiple-controls/meta.js +3 -0
  65. package/lib/landmark-roles/roles.d.ts +32 -0
  66. package/lib/landmark-roles/roles.js +73 -0
  67. package/lib/link-types/index.d.ts +0 -5
  68. package/lib/link-types/index.js +5 -6
  69. package/lib/link-types/meta.d.ts +1 -2
  70. package/lib/link-types/meta.js +1 -2
  71. package/lib/map-id-name-match/index.d.ts +10 -0
  72. package/lib/map-id-name-match/index.js +39 -0
  73. package/lib/map-id-name-match/meta.d.ts +4 -0
  74. package/lib/map-id-name-match/meta.js +3 -0
  75. package/lib/meta-charset-position/index.d.ts +15 -0
  76. package/lib/meta-charset-position/index.js +31 -0
  77. package/lib/meta-charset-position/meta.d.ts +4 -0
  78. package/lib/meta-charset-position/meta.js +3 -0
  79. package/lib/meter-value-bounds/index.d.ts +10 -0
  80. package/lib/meter-value-bounds/index.js +123 -0
  81. package/lib/meter-value-bounds/meta.d.ts +4 -0
  82. package/lib/meter-value-bounds/meta.js +3 -0
  83. package/lib/{wai-aria-required-props → no-abstract-role}/index.d.ts +0 -1
  84. package/lib/{wai-aria-abstract-role → no-abstract-role}/index.js +0 -1
  85. package/lib/no-always-matching-source/index.d.ts +13 -0
  86. package/lib/no-always-matching-source/index.js +100 -0
  87. package/lib/no-always-matching-source/meta.d.ts +4 -0
  88. package/lib/no-always-matching-source/meta.js +3 -0
  89. package/lib/no-ambiguous-navigable-target-names/index.d.ts +0 -8
  90. package/lib/no-ambiguous-navigable-target-names/index.js +0 -8
  91. package/lib/no-ambiguous-navigable-target-names/meta.d.ts +1 -2
  92. package/lib/no-ambiguous-navigable-target-names/meta.js +1 -2
  93. package/lib/no-aria-hidden-on-hidden-until-found/index.d.ts +12 -0
  94. package/lib/no-aria-hidden-on-hidden-until-found/index.js +35 -0
  95. package/lib/no-aria-hidden-on-hidden-until-found/meta.d.ts +9 -0
  96. package/lib/no-aria-hidden-on-hidden-until-found/meta.js +8 -0
  97. package/lib/{wai-aria-required-owned-elements → no-aria-on-presentational-children}/index.d.ts +0 -1
  98. package/lib/{wai-aria-presentational-children → no-aria-on-presentational-children}/index.js +0 -1
  99. package/lib/no-aria-on-unsupported-element/index.d.ts +11 -0
  100. package/lib/no-aria-on-unsupported-element/index.js +35 -0
  101. package/lib/no-aria-on-unsupported-element/meta.d.ts +9 -0
  102. package/lib/no-aria-on-unsupported-element/meta.js +8 -0
  103. package/lib/no-boolean-attr-value/index.d.ts +0 -7
  104. package/lib/no-boolean-attr-value/index.js +0 -7
  105. package/lib/no-boolean-attr-value/meta.d.ts +0 -1
  106. package/lib/no-boolean-attr-value/meta.js +0 -1
  107. package/lib/no-broken-fragment-link/index.d.ts +15 -0
  108. package/lib/no-broken-fragment-link/index.js +93 -0
  109. package/lib/no-broken-fragment-link/meta.d.ts +4 -0
  110. package/lib/no-broken-fragment-link/meta.js +3 -0
  111. package/lib/no-consecutive-br/index.d.ts +0 -8
  112. package/lib/no-consecutive-br/index.js +0 -8
  113. package/lib/no-consecutive-br/meta.d.ts +0 -1
  114. package/lib/no-consecutive-br/meta.js +0 -1
  115. package/lib/no-content-after-body/index.d.ts +25 -0
  116. package/lib/no-content-after-body/index.js +51 -0
  117. package/lib/no-content-after-body/meta.d.ts +4 -0
  118. package/lib/no-content-after-body/meta.js +3 -0
  119. package/lib/no-contradictory-aria-prop/index.d.ts +10 -0
  120. package/lib/no-contradictory-aria-prop/index.js +34 -0
  121. package/lib/{wai-aria-abstract-role → no-default-aria-value}/index.d.ts +0 -1
  122. package/lib/{wai-aria-default-value → no-default-aria-value}/index.js +0 -1
  123. package/lib/no-default-value/index.d.ts +0 -7
  124. package/lib/no-default-value/index.js +0 -7
  125. package/lib/no-default-value/meta.d.ts +0 -1
  126. package/lib/no-default-value/meta.js +0 -1
  127. package/lib/no-deprecated-aria-prop/index.d.ts +3 -0
  128. package/lib/{wai-aria-deprecated-props → no-deprecated-aria-prop}/index.js +0 -1
  129. package/lib/no-deprecated-attr/index.d.ts +2 -0
  130. package/lib/{deprecated-attr → no-deprecated-attr}/index.js +5 -9
  131. package/lib/no-deprecated-attr/meta.d.ts +4 -0
  132. package/lib/no-deprecated-attr/meta.js +3 -0
  133. package/lib/no-deprecated-element/index.d.ts +2 -0
  134. package/lib/no-deprecated-element/index.js +27 -0
  135. package/lib/no-deprecated-element/meta.d.ts +4 -0
  136. package/lib/no-deprecated-element/meta.js +3 -0
  137. package/lib/no-deprecated-role/index.d.ts +3 -0
  138. package/lib/{wai-aria-deprecated-role → no-deprecated-role}/index.js +0 -1
  139. package/lib/no-disallowed-ancestor/index.d.ts +2 -0
  140. package/lib/no-disallowed-ancestor/index.js +25 -0
  141. package/lib/no-disallowed-ancestor/meta.d.ts +4 -0
  142. package/lib/no-disallowed-ancestor/meta.js +3 -0
  143. package/lib/no-disallowed-attr/index.d.ts +28 -0
  144. package/lib/no-disallowed-attr/index.js +77 -0
  145. package/lib/no-disallowed-attr/meta.d.ts +4 -0
  146. package/lib/no-disallowed-attr/meta.js +3 -0
  147. package/lib/no-duplicate-attr/index.d.ts +2 -0
  148. package/lib/{attr-duplication → no-duplicate-attr}/index.js +0 -7
  149. package/lib/no-duplicate-attr/meta.d.ts +6 -0
  150. package/lib/no-duplicate-attr/meta.js +10 -0
  151. package/lib/no-duplicate-autofocus/index.d.ts +0 -5
  152. package/lib/no-duplicate-autofocus/index.js +20 -6
  153. package/lib/no-duplicate-autofocus/meta.d.ts +1 -1
  154. package/lib/no-duplicate-autofocus/meta.js +1 -1
  155. package/lib/no-duplicate-dt/index.d.ts +0 -6
  156. package/lib/no-duplicate-dt/index.js +1 -6
  157. package/lib/no-duplicate-dt/meta.d.ts +1 -2
  158. package/lib/no-duplicate-dt/meta.js +1 -2
  159. package/lib/no-duplicate-h1/index.d.ts +18 -0
  160. package/lib/no-duplicate-h1/index.js +41 -0
  161. package/lib/no-duplicate-h1/meta.d.ts +4 -0
  162. package/lib/no-duplicate-h1/meta.js +3 -0
  163. package/lib/no-duplicate-id/index.d.ts +2 -0
  164. package/lib/{id-duplication → no-duplicate-id}/index.js +0 -7
  165. package/lib/no-duplicate-id/meta.d.ts +4 -0
  166. package/lib/no-duplicate-id/meta.js +3 -0
  167. package/lib/no-duplicate-sibling-attr/index.d.ts +2 -0
  168. package/lib/no-duplicate-sibling-attr/index.js +35 -0
  169. package/lib/no-duplicate-sibling-attr/meta.d.ts +4 -0
  170. package/lib/no-duplicate-sibling-attr/meta.js +3 -0
  171. package/lib/no-duplicate-visible-main/index.d.ts +0 -1
  172. package/lib/no-duplicate-visible-main/index.js +0 -1
  173. package/lib/no-duplicate-visible-main/meta.d.ts +1 -1
  174. package/lib/no-duplicate-visible-main/meta.js +1 -1
  175. package/lib/no-empty-palpable-content/index.d.ts +0 -8
  176. package/lib/no-empty-palpable-content/index.js +0 -8
  177. package/lib/no-empty-palpable-content/meta.d.ts +1 -2
  178. package/lib/no-empty-palpable-content/meta.js +1 -2
  179. package/lib/no-empty-table-track/index.d.ts +12 -0
  180. package/lib/no-empty-table-track/index.js +42 -0
  181. package/lib/no-empty-table-track/meta.d.ts +4 -0
  182. package/lib/no-empty-table-track/meta.js +3 -0
  183. package/lib/no-event-handler-attr/index.d.ts +7 -0
  184. package/lib/{no-use-event-handler-attr → no-event-handler-attr}/index.js +0 -11
  185. package/lib/no-event-handler-attr/meta.d.ts +4 -0
  186. package/lib/no-event-handler-attr/meta.js +3 -0
  187. package/lib/no-experimental-features/index.d.ts +9 -0
  188. package/lib/no-experimental-features/index.js +53 -0
  189. package/lib/no-experimental-features/meta.d.ts +4 -0
  190. package/lib/no-experimental-features/meta.js +3 -0
  191. package/lib/no-extra-selected-options/index.d.ts +10 -0
  192. package/lib/no-extra-selected-options/index.js +37 -0
  193. package/lib/no-extra-selected-options/meta.d.ts +4 -0
  194. package/lib/no-extra-selected-options/meta.js +3 -0
  195. package/lib/no-focusable-in-aria-hidden/index.d.ts +3 -0
  196. package/lib/{wai-aria-interaction-in-hidden → no-focusable-in-aria-hidden}/index.js +0 -1
  197. package/lib/no-focusable-in-aria-hidden/meta.d.ts +4 -0
  198. package/lib/no-focusable-in-aria-hidden/meta.js +3 -0
  199. package/lib/no-hardcoded-id/index.d.ts +2 -0
  200. package/lib/{no-hard-code-id → no-hardcoded-id}/index.js +0 -8
  201. package/lib/no-hardcoded-id/meta.d.ts +4 -0
  202. package/lib/no-hardcoded-id/meta.js +3 -0
  203. package/lib/no-ineffective-attr/index.d.ts +2 -0
  204. package/lib/{ineffective-attr → no-ineffective-attr}/index.js +0 -7
  205. package/lib/no-ineffective-attr/meta.d.ts +5 -0
  206. package/lib/no-ineffective-attr/meta.js +4 -0
  207. package/lib/no-input-file-value/index.d.ts +10 -0
  208. package/lib/no-input-file-value/index.js +41 -0
  209. package/lib/no-input-file-value/meta.d.ts +4 -0
  210. package/lib/no-input-file-value/meta.js +3 -0
  211. package/lib/no-invalid-aria-prop-value/index.d.ts +3 -0
  212. package/lib/{wai-aria-value → no-invalid-aria-prop-value}/index.js +0 -1
  213. package/lib/no-invalid-aria-prop-value/meta.d.ts +4 -0
  214. package/lib/no-invalid-aria-prop-value/meta.js +3 -0
  215. package/lib/no-invalid-attr-value/index.d.ts +27 -0
  216. package/lib/no-invalid-attr-value/index.js +83 -0
  217. package/lib/no-invalid-attr-value/meta.d.ts +4 -0
  218. package/lib/no-invalid-attr-value/meta.js +3 -0
  219. package/lib/no-malformed-character-reference/index.d.ts +2 -0
  220. package/lib/no-malformed-character-reference/index.js +38 -0
  221. package/lib/no-malformed-character-reference/meta.d.ts +5 -0
  222. package/lib/no-malformed-character-reference/meta.js +20 -0
  223. package/lib/{correct-aspect-ratio → no-mismatched-aspect-ratio}/index.js +13 -3
  224. package/lib/no-mismatched-aspect-ratio/meta.d.ts +4 -0
  225. package/lib/no-mismatched-aspect-ratio/meta.js +3 -0
  226. package/lib/{correct-aspect-ratio → no-mismatched-aspect-ratio}/resolve-image-size.js +8 -2
  227. package/lib/no-mixed-srcset-descriptors/index.d.ts +12 -0
  228. package/lib/no-mixed-srcset-descriptors/index.js +47 -0
  229. package/lib/no-mixed-srcset-descriptors/meta.d.ts +4 -0
  230. package/lib/no-mixed-srcset-descriptors/meta.js +3 -0
  231. package/lib/no-nested-top-level-landmark/index.d.ts +10 -0
  232. package/lib/no-nested-top-level-landmark/index.js +52 -0
  233. package/lib/no-nested-top-level-landmark/meta.d.ts +4 -0
  234. package/lib/no-nested-top-level-landmark/meta.js +3 -0
  235. package/lib/no-nonstandard-features/index.d.ts +9 -0
  236. package/lib/no-nonstandard-features/index.js +53 -0
  237. package/lib/no-nonstandard-features/meta.d.ts +4 -0
  238. package/lib/no-nonstandard-features/meta.js +3 -0
  239. package/lib/no-obsolete-attr/index.d.ts +2 -0
  240. package/lib/no-obsolete-attr/index.js +27 -0
  241. package/lib/no-obsolete-attr/meta.d.ts +4 -0
  242. package/lib/no-obsolete-attr/meta.js +3 -0
  243. package/lib/no-obsolete-doctype/index.d.ts +2 -0
  244. package/lib/{doctype → no-obsolete-doctype}/index.js +9 -16
  245. package/lib/no-obsolete-doctype/meta.d.ts +4 -0
  246. package/lib/no-obsolete-doctype/meta.js +3 -0
  247. package/lib/no-obsolete-element/index.d.ts +2 -0
  248. package/lib/{deprecated-element → no-obsolete-element}/index.js +6 -10
  249. package/lib/no-obsolete-element/meta.d.ts +4 -0
  250. package/lib/no-obsolete-element/meta.js +3 -0
  251. package/lib/no-orphaned-end-tag/index.d.ts +0 -7
  252. package/lib/no-orphaned-end-tag/index.js +0 -7
  253. package/lib/no-orphaned-end-tag/meta.d.ts +2 -2
  254. package/lib/no-orphaned-end-tag/meta.js +5 -2
  255. package/lib/no-prohibited-naming/index.d.ts +8 -0
  256. package/lib/no-prohibited-naming/index.js +36 -0
  257. package/lib/no-prohibited-naming/meta.d.ts +4 -0
  258. package/lib/no-prohibited-naming/meta.js +3 -0
  259. package/lib/{use-list → no-pseudo-list}/index.d.ts +1 -8
  260. package/lib/{use-list → no-pseudo-list}/index.js +0 -7
  261. package/lib/no-pseudo-list/meta.d.ts +4 -0
  262. package/lib/no-pseudo-list/meta.js +3 -0
  263. package/lib/{redundant-accessible-name → no-redundant-accessible-name}/index.d.ts +0 -4
  264. package/lib/{redundant-accessible-name → no-redundant-accessible-name}/index.js +0 -4
  265. package/lib/no-redundant-accessible-name/meta.d.ts +4 -0
  266. package/lib/no-redundant-accessible-name/meta.js +3 -0
  267. package/lib/no-redundant-aria-prop/index.d.ts +10 -0
  268. package/lib/{wai-aria-implicit-props → no-redundant-aria-prop}/index.js +9 -3
  269. package/lib/no-redundant-aria-prop/meta.d.ts +4 -0
  270. package/lib/no-redundant-aria-prop/meta.js +3 -0
  271. package/lib/no-redundant-role/index.d.ts +3 -0
  272. package/lib/{wai-aria-implicit-role → no-redundant-role}/index.js +0 -1
  273. package/lib/no-redundant-role/meta.d.ts +4 -0
  274. package/lib/no-redundant-role/meta.js +3 -0
  275. package/lib/no-refer-to-non-existent-id/index.d.ts +0 -9
  276. package/lib/no-refer-to-non-existent-id/index.js +1 -62
  277. package/lib/no-refer-to-non-existent-id/meta.d.ts +1 -2
  278. package/lib/no-refer-to-non-existent-id/meta.js +1 -2
  279. package/lib/no-restricted-attr/index.d.ts +27 -0
  280. package/lib/no-restricted-attr/index.js +96 -0
  281. package/lib/no-restricted-attr/meta.d.ts +4 -0
  282. package/lib/no-restricted-attr/meta.js +3 -0
  283. package/lib/no-restricted-element/index.d.ts +2 -0
  284. package/lib/{disallowed-element → no-restricted-element}/index.js +7 -8
  285. package/lib/no-restricted-element/meta.d.ts +4 -0
  286. package/lib/no-restricted-element/meta.js +3 -0
  287. package/lib/no-skipped-heading-level/index.d.ts +13 -0
  288. package/lib/{heading-levels → no-skipped-heading-level}/index.js +10 -5
  289. package/lib/no-skipped-heading-level/meta.d.ts +4 -0
  290. package/lib/no-skipped-heading-level/meta.js +3 -0
  291. package/lib/no-stray-head-or-body-tag/index.d.ts +28 -0
  292. package/lib/no-stray-head-or-body-tag/index.js +61 -0
  293. package/lib/no-stray-head-or-body-tag/meta.d.ts +4 -0
  294. package/lib/no-stray-head-or-body-tag/meta.js +3 -0
  295. package/lib/no-table-cell-overlap/index.d.ts +12 -0
  296. package/lib/no-table-cell-overlap/index.js +30 -0
  297. package/lib/no-table-cell-overlap/meta.d.ts +4 -0
  298. package/lib/no-table-cell-overlap/meta.js +3 -0
  299. package/lib/no-table-span-overflow/index.d.ts +12 -0
  300. package/lib/no-table-span-overflow/index.js +37 -0
  301. package/lib/no-table-span-overflow/meta.d.ts +4 -0
  302. package/lib/no-table-span-overflow/meta.js +3 -0
  303. package/lib/no-unclosed-element-at-eof/index.d.ts +2 -0
  304. package/lib/no-unclosed-element-at-eof/index.js +86 -0
  305. package/lib/no-unclosed-element-at-eof/meta.d.ts +4 -0
  306. package/lib/no-unclosed-element-at-eof/meta.js +3 -0
  307. package/lib/no-unescaped-char/index.d.ts +14 -0
  308. package/lib/{character-reference → no-unescaped-char}/index.js +31 -20
  309. package/lib/no-unescaped-char/meta.d.ts +4 -0
  310. package/lib/no-unescaped-char/meta.js +3 -0
  311. package/lib/{invalid-attr → no-unknown-attr}/index.d.ts +4 -19
  312. package/lib/no-unknown-attr/index.js +91 -0
  313. package/lib/no-unknown-attr/meta.d.ts +4 -0
  314. package/lib/no-unknown-attr/meta.js +3 -0
  315. package/lib/no-unknown-role/index.d.ts +3 -0
  316. package/lib/{wai-aria-non-existent-role → no-unknown-role}/index.js +0 -1
  317. package/lib/no-unknown-role/meta.d.ts +4 -0
  318. package/lib/no-unknown-role/meta.js +3 -0
  319. package/lib/no-unpaired-srcset-sizes/index.d.ts +12 -0
  320. package/lib/no-unpaired-srcset-sizes/index.js +77 -0
  321. package/lib/no-unpaired-srcset-sizes/meta.d.ts +4 -0
  322. package/lib/no-unpaired-srcset-sizes/meta.js +3 -0
  323. package/lib/{no-unsupported-features → no-unsupported-browser-features}/index.d.ts +1 -10
  324. package/lib/no-unsupported-browser-features/index.js +81 -0
  325. package/lib/no-unsupported-browser-features/meta.d.ts +4 -0
  326. package/lib/no-unsupported-browser-features/meta.js +3 -0
  327. package/lib/permitted-contents/index.d.ts +0 -18
  328. package/lib/permitted-contents/index.js +0 -78
  329. package/lib/permitted-contents/meta.d.ts +1 -2
  330. package/lib/permitted-contents/meta.js +1 -2
  331. package/lib/permitted-contents/represent-transparent-nodes.js +15 -6
  332. package/lib/permitted-roles/index.d.ts +3 -0
  333. package/lib/{wai-aria-permitted-roles → permitted-roles}/index.js +0 -1
  334. package/lib/permitted-roles/meta.d.ts +4 -0
  335. package/lib/permitted-roles/meta.js +3 -0
  336. package/lib/placeholder-label-option/index.d.ts +10 -4
  337. package/lib/placeholder-label-option/index.js +30 -17
  338. package/lib/placeholder-label-option/meta.d.ts +1 -2
  339. package/lib/placeholder-label-option/meta.js +1 -2
  340. package/lib/progress-value-bounds/index.d.ts +10 -0
  341. package/lib/progress-value-bounds/index.js +59 -0
  342. package/lib/progress-value-bounds/meta.d.ts +4 -0
  343. package/lib/progress-value-bounds/meta.js +3 -0
  344. package/lib/require-accessible-name/index.d.ts +0 -7
  345. package/lib/require-accessible-name/index.js +0 -7
  346. package/lib/require-accessible-name/meta.d.ts +0 -1
  347. package/lib/require-accessible-name/meta.js +0 -1
  348. package/lib/require-adjacent-popover/index.d.ts +2 -0
  349. package/lib/{neighbor-popovers → require-adjacent-popover}/index.js +1 -8
  350. package/lib/require-adjacent-popover/meta.d.ts +4 -0
  351. package/lib/require-adjacent-popover/meta.js +3 -0
  352. package/lib/require-ancestor/index.d.ts +2 -0
  353. package/lib/require-ancestor/index.js +29 -0
  354. package/lib/require-ancestor/meta.d.ts +4 -0
  355. package/lib/require-ancestor/meta.js +3 -0
  356. package/lib/require-aria-prop/index.d.ts +3 -0
  357. package/lib/{wai-aria-required-props → require-aria-prop}/index.js +0 -1
  358. package/lib/require-aria-prop/meta.d.ts +4 -0
  359. package/lib/require-aria-prop/meta.js +3 -0
  360. package/lib/{required-attr → require-attr}/index.d.ts +2 -9
  361. package/lib/{required-attr → require-attr}/index.js +0 -7
  362. package/lib/require-attr/meta.d.ts +4 -0
  363. package/lib/require-attr/meta.js +3 -0
  364. package/lib/require-datetime/index.d.ts +0 -8
  365. package/lib/require-datetime/index.js +0 -8
  366. package/lib/require-datetime/meta.d.ts +1 -2
  367. package/lib/require-datetime/meta.js +1 -2
  368. package/lib/require-dialog-autofocus/index.d.ts +0 -10
  369. package/lib/require-dialog-autofocus/index.js +0 -10
  370. package/lib/require-dialog-autofocus/meta.d.ts +0 -1
  371. package/lib/require-dialog-autofocus/meta.js +0 -1
  372. package/lib/require-doctype/index.d.ts +2 -0
  373. package/lib/require-doctype/index.js +19 -0
  374. package/lib/require-doctype/meta.d.ts +5 -0
  375. package/lib/require-doctype/meta.js +10 -0
  376. package/lib/{required-element → require-element}/index.d.ts +1 -9
  377. package/lib/{required-element → require-element}/index.js +0 -8
  378. package/lib/require-element/meta.d.ts +4 -0
  379. package/lib/require-element/meta.js +3 -0
  380. package/lib/require-end-tag/index.d.ts +2 -0
  381. package/lib/{end-tag → require-end-tag}/index.js +0 -7
  382. package/lib/require-end-tag/meta.d.ts +4 -0
  383. package/lib/require-end-tag/meta.js +3 -0
  384. package/lib/require-h1/index.d.ts +17 -0
  385. package/lib/{required-h1 → require-h1}/index.js +6 -14
  386. package/lib/require-h1/meta.d.ts +4 -0
  387. package/lib/require-h1/meta.js +3 -0
  388. package/lib/require-landmark-label/index.d.ts +11 -0
  389. package/lib/require-landmark-label/index.js +55 -0
  390. package/lib/require-landmark-label/meta.d.ts +4 -0
  391. package/lib/require-landmark-label/meta.js +3 -0
  392. package/lib/require-owned-elements/index.d.ts +3 -0
  393. package/lib/{wai-aria-required-owned-elements → require-owned-elements}/index.js +0 -2
  394. package/lib/require-owned-elements/meta.d.ts +4 -0
  395. package/lib/require-owned-elements/meta.js +3 -0
  396. package/lib/require-parent-role/index.d.ts +3 -0
  397. package/lib/{wai-aria-required-parent-role → require-parent-role}/index.js +0 -1
  398. package/lib/require-parent-role/meta.d.ts +4 -0
  399. package/lib/require-parent-role/meta.js +3 -0
  400. package/lib/role-supports-aria-prop/index.d.ts +8 -0
  401. package/lib/{wai-aria-disallowed-props → role-supports-aria-prop}/index.js +11 -10
  402. package/lib/role-supports-aria-prop/meta.d.ts +4 -0
  403. package/lib/role-supports-aria-prop/meta.js +3 -0
  404. package/lib/rule-aliases.d.ts +2 -0
  405. package/lib/rule-aliases.js +325 -0
  406. package/lib/sizes-auto-requires-lazy-loading/index.d.ts +14 -0
  407. package/lib/sizes-auto-requires-lazy-loading/index.js +68 -0
  408. package/lib/sizes-auto-requires-lazy-loading/meta.d.ts +4 -0
  409. package/lib/sizes-auto-requires-lazy-loading/meta.js +3 -0
  410. package/lib/srcset-sizes-constraint/parse-srcset.d.ts +6 -0
  411. package/lib/srcset-sizes-constraint/parse-srcset.js +6 -0
  412. package/lib/srcset-sizes-constraint/sibling-helpers.d.ts +21 -0
  413. package/lib/srcset-sizes-constraint/sibling-helpers.js +37 -0
  414. package/lib/tab-requires-tabpanel/index.d.ts +3 -0
  415. package/lib/tab-requires-tabpanel/index.js +21 -0
  416. package/lib/tab-requires-tabpanel/meta.d.ts +4 -0
  417. package/lib/tab-requires-tabpanel/meta.js +3 -0
  418. package/lib/table-row-column-alignment/grid.d.ts +108 -52
  419. package/lib/table-row-column-alignment/grid.js +276 -203
  420. package/lib/table-row-column-alignment/types.d.ts +6 -8
  421. package/lib/usemap-references-map/index.d.ts +14 -0
  422. package/lib/usemap-references-map/index.js +46 -0
  423. package/lib/usemap-references-map/meta.d.ts +4 -0
  424. package/lib/usemap-references-map/meta.js +3 -0
  425. package/lib/valid-importmap/index.d.ts +2 -0
  426. package/lib/valid-importmap/index.js +176 -0
  427. package/lib/valid-importmap/meta.d.ts +4 -0
  428. package/lib/valid-importmap/meta.js +3 -0
  429. package/lib/valid-speculation-rules/index.d.ts +2 -0
  430. package/lib/valid-speculation-rules/index.js +292 -0
  431. package/lib/valid-speculation-rules/meta.d.ts +4 -0
  432. package/lib/valid-speculation-rules/meta.js +3 -0
  433. package/lib/wai-aria/checkings/contradictory-aria-prop.d.ts +23 -0
  434. package/lib/wai-aria/checkings/{implicit-props.js → contradictory-aria-prop.js} +22 -14
  435. package/lib/wai-aria/checkings/element-supports-aria-prop.d.ts +20 -0
  436. package/lib/wai-aria/checkings/element-supports-aria-prop.js +83 -0
  437. package/lib/wai-aria/checkings/prohibited-naming.d.ts +35 -0
  438. package/lib/wai-aria/checkings/prohibited-naming.js +64 -0
  439. package/lib/wai-aria/checkings/redundant-aria-prop.d.ts +23 -0
  440. package/lib/wai-aria/checkings/redundant-aria-prop.js +53 -0
  441. package/lib/wai-aria/checkings/required-prop.d.ts +4 -0
  442. package/lib/wai-aria/checkings/required-prop.js +16 -3
  443. package/lib/wai-aria/checkings/role-supports-aria-prop.d.ts +20 -0
  444. package/lib/wai-aria/checkings/role-supports-aria-prop.js +30 -0
  445. package/lib/wai-aria/checkings/tab-requires-tabpanel.d.ts +19 -0
  446. package/lib/wai-aria/checkings/tab-requires-tabpanel.js +56 -0
  447. package/lib/wai-aria/default-options.js +1 -0
  448. package/lib/wai-aria/types.d.ts +2 -0
  449. package/package.json +10 -9
  450. package/schema.json +278 -59
  451. package/SKILL.md +0 -77
  452. package/lib/attr-duplication/index.d.ts +0 -9
  453. package/lib/attr-duplication/meta.d.ts +0 -6
  454. package/lib/attr-duplication/meta.js +0 -5
  455. package/lib/character-reference/index.d.ts +0 -12
  456. package/lib/character-reference/meta.d.ts +0 -5
  457. package/lib/character-reference/meta.js +0 -4
  458. package/lib/correct-aspect-ratio/meta.js +0 -3
  459. package/lib/deprecated-attr/index.d.ts +0 -8
  460. package/lib/deprecated-attr/meta.d.ts +0 -5
  461. package/lib/deprecated-attr/meta.js +0 -4
  462. package/lib/deprecated-element/index.d.ts +0 -8
  463. package/lib/deprecated-element/meta.d.ts +0 -5
  464. package/lib/deprecated-element/meta.js +0 -4
  465. package/lib/disallowed-element/index.d.ts +0 -9
  466. package/lib/disallowed-element/meta.d.ts +0 -5
  467. package/lib/disallowed-element/meta.js +0 -4
  468. package/lib/doctype/index.d.ts +0 -15
  469. package/lib/doctype/meta.d.ts +0 -5
  470. package/lib/doctype/meta.js +0 -4
  471. package/lib/end-tag/index.d.ts +0 -9
  472. package/lib/end-tag/meta.d.ts +0 -5
  473. package/lib/end-tag/meta.js +0 -4
  474. package/lib/heading-levels/index.d.ts +0 -8
  475. package/lib/heading-levels/meta.d.ts +0 -5
  476. package/lib/heading-levels/meta.js +0 -4
  477. package/lib/id-duplication/index.d.ts +0 -9
  478. package/lib/id-duplication/meta.d.ts +0 -5
  479. package/lib/id-duplication/meta.js +0 -4
  480. package/lib/ineffective-attr/index.d.ts +0 -9
  481. package/lib/ineffective-attr/meta.d.ts +0 -6
  482. package/lib/ineffective-attr/meta.js +0 -5
  483. package/lib/invalid-attr/index.js +0 -207
  484. package/lib/invalid-attr/meta.d.ts +0 -5
  485. package/lib/invalid-attr/meta.js +0 -4
  486. package/lib/landmark-roles/index.d.ts +0 -22
  487. package/lib/landmark-roles/index.js +0 -142
  488. package/lib/landmark-roles/meta.d.ts +0 -5
  489. package/lib/landmark-roles/meta.js +0 -4
  490. package/lib/neighbor-popovers/index.d.ts +0 -10
  491. package/lib/neighbor-popovers/meta.d.ts +0 -5
  492. package/lib/neighbor-popovers/meta.js +0 -4
  493. package/lib/no-hard-code-id/index.d.ts +0 -10
  494. package/lib/no-hard-code-id/meta.d.ts +0 -5
  495. package/lib/no-hard-code-id/meta.js +0 -4
  496. package/lib/no-unsupported-features/index.js +0 -139
  497. package/lib/no-unsupported-features/meta.d.ts +0 -5
  498. package/lib/no-unsupported-features/meta.js +0 -4
  499. package/lib/no-use-event-handler-attr/index.d.ts +0 -18
  500. package/lib/no-use-event-handler-attr/meta.d.ts +0 -5
  501. package/lib/no-use-event-handler-attr/meta.js +0 -4
  502. package/lib/redundant-accessible-name/meta.d.ts +0 -5
  503. package/lib/redundant-accessible-name/meta.js +0 -4
  504. package/lib/required-attr/meta.d.ts +0 -5
  505. package/lib/required-attr/meta.js +0 -4
  506. package/lib/required-element/meta.d.ts +0 -5
  507. package/lib/required-element/meta.js +0 -4
  508. package/lib/required-h1/index.d.ts +0 -18
  509. package/lib/required-h1/meta.d.ts +0 -5
  510. package/lib/required-h1/meta.js +0 -4
  511. package/lib/srcset-sizes-constraint/index.d.ts +0 -6
  512. package/lib/srcset-sizes-constraint/index.js +0 -108
  513. package/lib/srcset-sizes-constraint/meta.d.ts +0 -5
  514. package/lib/srcset-sizes-constraint/meta.js +0 -4
  515. package/lib/table-row-column-alignment/index.d.ts +0 -10
  516. package/lib/table-row-column-alignment/index.js +0 -97
  517. package/lib/table-row-column-alignment/meta.d.ts +0 -5
  518. package/lib/table-row-column-alignment/meta.js +0 -4
  519. package/lib/use-list/meta.d.ts +0 -5
  520. package/lib/use-list/meta.js +0 -4
  521. package/lib/wai-aria/checkings/disallowed-prop.d.ts +0 -23
  522. package/lib/wai-aria/checkings/disallowed-prop.js +0 -84
  523. package/lib/wai-aria/checkings/implicit-props.d.ts +0 -20
  524. package/lib/wai-aria/index.d.ts +0 -13
  525. package/lib/wai-aria/index.js +0 -115
  526. package/lib/wai-aria/meta.d.ts +0 -5
  527. package/lib/wai-aria/meta.js +0 -4
  528. package/lib/wai-aria-default-value/index.d.ts +0 -4
  529. package/lib/wai-aria-default-value/meta.d.ts +0 -5
  530. package/lib/wai-aria-default-value/meta.js +0 -4
  531. package/lib/wai-aria-deprecated-props/index.d.ts +0 -4
  532. package/lib/wai-aria-deprecated-props/meta.d.ts +0 -5
  533. package/lib/wai-aria-deprecated-props/meta.js +0 -4
  534. package/lib/wai-aria-disallowed-props/index.d.ts +0 -4
  535. package/lib/wai-aria-disallowed-props/meta.d.ts +0 -5
  536. package/lib/wai-aria-disallowed-props/meta.js +0 -4
  537. package/lib/wai-aria-implicit-props/index.d.ts +0 -4
  538. package/lib/wai-aria-implicit-props/meta.d.ts +0 -5
  539. package/lib/wai-aria-implicit-props/meta.js +0 -4
  540. package/lib/wai-aria-implicit-role/index.d.ts +0 -4
  541. package/lib/wai-aria-interaction-in-hidden/index.d.ts +0 -4
  542. package/lib/wai-aria-interaction-in-hidden/meta.d.ts +0 -5
  543. package/lib/wai-aria-interaction-in-hidden/meta.js +0 -4
  544. package/lib/wai-aria-no-global-prop/index.d.ts +0 -4
  545. package/lib/wai-aria-no-global-prop/meta.d.ts +0 -5
  546. package/lib/wai-aria-no-global-prop/meta.js +0 -4
  547. package/lib/wai-aria-non-existent-role/index.d.ts +0 -4
  548. package/lib/wai-aria-permitted-roles/index.d.ts +0 -4
  549. package/lib/wai-aria-presentational-children/index.d.ts +0 -4
  550. package/lib/wai-aria-presentational-children/meta.d.ts +0 -5
  551. package/lib/wai-aria-presentational-children/meta.js +0 -4
  552. package/lib/wai-aria-required-parent-role/index.d.ts +0 -4
  553. package/lib/wai-aria-value/index.d.ts +0 -4
  554. package/lib/wai-aria-value/meta.d.ts +0 -5
  555. package/lib/wai-aria-value/meta.js +0 -4
  556. /package/lib/{wai-aria-abstract-role → aria-prop-requires-role}/meta.d.ts +0 -0
  557. /package/lib/{wai-aria-abstract-role → aria-prop-requires-role}/meta.js +0 -0
  558. /package/lib/{wai-aria-deprecated-role → element-supports-aria-prop}/meta.d.ts +0 -0
  559. /package/lib/{wai-aria-deprecated-role → element-supports-aria-prop}/meta.js +0 -0
  560. /package/lib/{wai-aria-implicit-role → no-abstract-role}/meta.d.ts +0 -0
  561. /package/lib/{wai-aria-implicit-role → no-abstract-role}/meta.js +0 -0
  562. /package/lib/{wai-aria-non-existent-role → no-aria-on-presentational-children}/meta.d.ts +0 -0
  563. /package/lib/{wai-aria-non-existent-role → no-aria-on-presentational-children}/meta.js +0 -0
  564. /package/lib/{wai-aria-permitted-roles → no-contradictory-aria-prop}/meta.d.ts +0 -0
  565. /package/lib/{wai-aria-permitted-roles → no-contradictory-aria-prop}/meta.js +0 -0
  566. /package/lib/{wai-aria-required-owned-elements → no-default-aria-value}/meta.d.ts +0 -0
  567. /package/lib/{wai-aria-required-owned-elements → no-default-aria-value}/meta.js +0 -0
  568. /package/lib/{wai-aria-required-parent-role → no-deprecated-aria-prop}/meta.d.ts +0 -0
  569. /package/lib/{wai-aria-required-parent-role → no-deprecated-aria-prop}/meta.js +0 -0
  570. /package/lib/{wai-aria-required-props → no-deprecated-role}/meta.d.ts +0 -0
  571. /package/lib/{wai-aria-required-props → no-deprecated-role}/meta.js +0 -0
  572. /package/lib/{correct-aspect-ratio → no-mismatched-aspect-ratio}/index.d.ts +0 -0
  573. /package/lib/{correct-aspect-ratio → no-mismatched-aspect-ratio}/resolve-image-size.d.ts +0 -0
  574. /package/lib/{no-unsupported-features → no-unsupported-browser-features}/compat-data.d.ts +0 -0
  575. /package/lib/{no-unsupported-features → no-unsupported-browser-features}/compat-data.js +0 -0
  576. /package/lib/{no-unsupported-features → no-unsupported-browser-features}/resolve-browsers.d.ts +0 -0
  577. /package/lib/{no-unsupported-features → no-unsupported-browser-features}/resolve-browsers.js +0 -0
@@ -1,82 +1,138 @@
1
1
  import type { CellType } from './types.js';
2
2
  import type { Element } from '@markuplint/ml-core';
3
+ /** A `<th>` / `<td>` anchored to a slot, together with the slots it covers. */
4
+ export type Anchor = {
5
+ /** The cell element. */
6
+ readonly cell: Element<boolean>;
7
+ /** The slot column the cell is anchored to (spec: xcurrent when the cell was placed). */
8
+ readonly x: number;
9
+ /** The slot row the cell is anchored to, counted within the owning row group (spec: ycurrent). */
10
+ readonly y: number;
11
+ /** The clamped `colspan`. */
12
+ readonly colspan: number;
13
+ /** The clamped `rowspan`, or the distance to the end of the row group for a downward-growing cell. */
14
+ readonly rowspan: number;
15
+ /** Whether `rowspan="0"` made the cell grow downward to the end of its row group (spec Step 10). */
16
+ readonly growsDownward: boolean;
17
+ };
18
+ /** A contiguous slot column range together with the element that established it. */
19
+ export type ColumnRange = {
20
+ /**
21
+ * The element the range is attributed to: a `<col>` / `<colgroup>` for column markup,
22
+ * or the `<th>` / `<td>` whose `colspan` stretched the table to cover the range.
23
+ */
24
+ readonly source: Element<boolean>;
25
+ /** The leftmost column that is part of the range. */
26
+ readonly left: number;
27
+ /** The first column to the right that is not part of the range. */
28
+ readonly right: number;
29
+ };
30
+ /** One row of slots, paired with the `<tr>` that established it. */
31
+ export type Row = {
32
+ /** The `<tr>` element. */
33
+ readonly element: Element<boolean>;
34
+ /**
35
+ * The slots the row occupies. Its length is the row's width, which mirrors
36
+ * nu-validator's insertion point at the end of the row: the cells anchored in
37
+ * the row plus the run of slots that spans from earlier rows continue into.
38
+ */
39
+ readonly slots: readonly CellType[];
40
+ /** How many cells are anchored in this row (spec Step 20 counts rows by this). */
41
+ readonly anchorCount: number;
42
+ };
43
+ /** One row group — `<thead>`, `<tbody>`, `<tfoot>`, or the implicit group parse5 inserts. */
44
+ export type RowGroup = {
45
+ /** The tag name of the element that established the group, lowercased. */
46
+ readonly tagName: string;
47
+ /** The rows of the group, in document order. */
48
+ readonly rows: readonly Row[];
49
+ /** Every cell anchored within the group, in document order. */
50
+ readonly anchors: readonly Anchor[];
51
+ /**
52
+ * Anchors whose `rowspan` reaches past the last row of the group. HTML LS
53
+ * §4.9.12 forbids this ("A cell cannot cover slots that are from two or more
54
+ * row groups."), and the *ending a row group* algorithm clips the cell instead.
55
+ */
56
+ readonly overflows: readonly Anchor[];
57
+ /** Whether any slot of the group is covered twice (spec Step 14). */
58
+ readonly hasOverlap: boolean;
59
+ };
3
60
  /**
4
- * Represents a table as a grid model, splitting it into thead, tbody, and tfoot sections.
61
+ * Models a `<table>` as the slot grid of HTML LS
62
+ * [§4.9.12.1 *Forming a table*](https://html.spec.whatwg.org/multipage/tables.html#forming-a-table).
63
+ *
64
+ * Shared by `no-table-cell-overlap`, `no-table-span-overflow`, `no-empty-table-track`, and
65
+ * `consistent-table-row-length` — the four rules split out of the former
66
+ * `table-row-column-alignment` rule, one per table model error / diagnostic this class models.
67
+ *
68
+ * The algorithm is followed rather than approximated because every table model error those rules
69
+ * report is defined in terms of it: Step 6 decides which slot a cell is anchored to (a `colspan`
70
+ * after a `rowspan` continuation does *not* start at the cell's ordinal position), Steps 7 and 11
71
+ * decide how wide the table becomes, Step 14 defines cell overlap, and Step 20 defines rows and
72
+ * columns that no cell is anchored to.
5
73
  *
6
- * Each section is modeled as a 2D array of `CellType` values that account for
7
- * `colspan` and `rowspan` attributes. Used by the `table-row-column-alignment`
8
- * rule to detect misaligned rows and overlapping cells.
74
+ * Two things the spec has no name for are tracked alongside:
75
+ *
76
+ * - **Row width** ({@link Row.slots} length). Rows narrower or wider than the rest of the
77
+ * table are not a table model error — nu-validator reports them as warnings unless column
78
+ * markup fixes the width — but they are `consistent-table-row-length`'s diagnostic and predate
79
+ * the spec-level checks.
80
+ * - **Row group boundaries**. The spec's *ending a row group* algorithm clips a cell to its
81
+ * row group, so slots are covered per group; {@link RowGroup.overflows} keeps the cells that
82
+ * were clipped so `no-table-span-overflow` can report them.
9
83
  */
10
84
  export declare class Grid {
11
85
  #private;
12
- /** The grid model for the `<tbody>` section. */
13
- readonly tbodyGrid: ReadonlyArray<ReadonlyArray<CellType>>;
14
- /** The grid model for the `<tfoot>` section. */
15
- readonly tfootGrid: ReadonlyArray<ReadonlyArray<CellType>>;
16
- /** The grid model for the `<thead>` section. */
17
- readonly theadGrid: ReadonlyArray<ReadonlyArray<CellType>>;
86
+ /** Column ranges established by `<col>` / `<colgroup>`, in document order. */
87
+ readonly columnMarkup: readonly ColumnRange[];
88
+ /** The row groups of the table, in document order. */
89
+ readonly rowGroups: readonly RowGroup[];
90
+ /** The number of slot columns in the table (spec: xwidth). */
91
+ readonly xwidth: number;
18
92
  /**
19
93
  * Constructs a grid model from a `<table>` element.
20
94
  *
21
95
  * @param table - The table element to model.
22
96
  */
23
97
  constructor(table: Element<boolean>);
98
+ /** @returns Every cell anchored in the table, in document order. */
99
+ getAnchors(): Anchor[];
24
100
  /**
25
- * Returns all `<tr>` elements across all table sections in document order.
101
+ * Determines the expected (base) column count that rows are compared against.
26
102
  *
27
- * @returns Combined array of row elements from thead, tbody, and tfoot.
28
- */
29
- getAllRowElements(): Element<boolean, undefined>[];
30
- /**
31
- * Returns all grid rows that contain at least one actual cell element.
32
- *
33
- * @returns Combined array of grid rows from thead, tbody, and tfoot, filtered to rows with real cells.
34
- */
35
- getAllRows(): (readonly CellType[])[];
36
- /**
37
- * Determines the expected (base) column count for the table.
38
- *
39
- * Prefers the thead section if available, then tfoot, then tbody.
103
+ * Rows decide it, preferring `<thead>` then `<tfoot>` since a heading or footing
104
+ * row is the more deliberate declaration. Column markup is deliberately *not*
105
+ * consulted: HTML LS §4.9.12.1 Step 7 grows xwidth to fit a row that is wider
106
+ * than the `<col>` markup, so such a row is not an error (tracked as a
107
+ * nu-validator over-detection in `tests/external/snapshots/excluded-ids.json`).
108
+ * A row narrower than the column markup is caught by the Step 20 column scan
109
+ * instead, which reports the `<col>` that no cell ever starts in.
40
110
  *
41
111
  * @returns The base number of columns that rows should have.
42
112
  */
43
113
  getBaseColLength(): number;
44
114
  /**
45
- * Returns the grid and row elements for each table section (thead, tbody, tfoot).
115
+ * Collects the columns that no cell is anchored to (spec Step 20), merging
116
+ * neighbouring columns that the same element established into one range so a
117
+ * `colspan` overshooting by four columns is reported once, not four times.
46
118
  *
47
- * @returns An array of objects, each containing the section grid and its row elements.
119
+ * @returns The offending ranges, in column order.
48
120
  */
49
- getSections(): {
50
- section: readonly (readonly CellType[])[];
51
- elements: readonly Element<boolean, undefined>[];
52
- }[];
121
+ getColumnsWithoutAnchor(): ColumnRange[];
122
+ /** @returns Every row of the table, in document order. */
123
+ getRows(): Row[];
53
124
  /**
54
- * Checks whether any cell in the table grid has been marked as overlapping.
125
+ * Checks whether any slot of the table is covered by more than one cell.
55
126
  *
56
- * @returns `true` if any cell has the overlap marker `'x'`.
127
+ * @returns `true` if the table has a Step 14 cell overlap.
57
128
  */
58
129
  hasOverlapped(): boolean;
59
- /** Logs the grid data for all three table sections to the console (for debugging). */
60
- log(): void;
61
130
  }
62
131
  /**
63
- * Detects a rowspan that extends beyond the available rows in a table section.
64
- *
65
- * When a grid row exists without a corresponding row element, it indicates
66
- * a rowspan overflow. Returns the offending `rowspan` attribute node if found.
67
- *
68
- * @param rows - The grid rows for a single table section.
69
- * @param rowElements - The `<tr>` elements for the section.
70
- * @returns An object containing the overflowing `rowSpan` attribute, or `null`.
71
- */
72
- export declare function getOverflowRowSpan(rows: ReadonlyArray<ReadonlyArray<CellType>>, rowElements: ReadonlyArray<Element<boolean>>): {
73
- rowSpan: import("@markuplint/ml-core").Attr<boolean, undefined>;
74
- } | null;
75
- /**
76
- * Maps each cell in a grid row to its source cell index (for cells that correspond
77
- * to actual `<td>`/`<th>` elements), or `null` for spanned cells.
132
+ * Maps each slot of a row to the index of the `<th>` / `<td>` anchored to it
133
+ * (counted among the row's own cells), or `null` for a slot the row does not anchor a cell to.
78
134
  *
79
- * @param row - A single row of cell types from the grid model.
80
- * @returns An array of cell indices or `null` values, one per grid column.
135
+ * @param slots - The slots of a single row.
136
+ * @returns An array of cell indices or `null` values, one per slot.
81
137
  */
82
- export declare function getIndexes(row: readonly CellType[]): (number | null)[];
138
+ export declare function getIndexes(slots: readonly CellType[]): (number | null)[];