@empline/preflight 1.1.11 → 1.1.13

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 (709) hide show
  1. package/dist/checks/consolidated/auth-storage-state.d.ts +3 -0
  2. package/dist/checks/consolidated/auth-storage-state.d.ts.map +1 -0
  3. package/dist/checks/consolidated/auth-storage-state.js +146 -0
  4. package/dist/checks/consolidated/auth-storage-state.js.map +1 -0
  5. package/dist/checks/consolidated/business.d.ts +50 -0
  6. package/dist/checks/consolidated/business.d.ts.map +1 -0
  7. package/dist/checks/consolidated/business.js +252 -0
  8. package/dist/checks/consolidated/business.js.map +1 -0
  9. package/dist/checks/consolidated/caching-strategy.d.ts +104 -0
  10. package/dist/checks/consolidated/caching-strategy.d.ts.map +1 -0
  11. package/dist/checks/consolidated/caching-strategy.js +725 -0
  12. package/dist/checks/consolidated/caching-strategy.js.map +1 -0
  13. package/dist/checks/consolidated/code-quality.d.ts +83 -0
  14. package/dist/checks/consolidated/code-quality.d.ts.map +1 -0
  15. package/dist/checks/consolidated/code-quality.js +445 -0
  16. package/dist/checks/consolidated/code-quality.js.map +1 -0
  17. package/dist/checks/consolidated/console-statements.d.ts +32 -0
  18. package/dist/checks/consolidated/console-statements.d.ts.map +1 -0
  19. package/dist/checks/consolidated/console-statements.js +304 -0
  20. package/dist/checks/consolidated/console-statements.js.map +1 -0
  21. package/dist/checks/consolidated/css-advanced-validation.d.ts +24 -0
  22. package/dist/checks/consolidated/css-advanced-validation.d.ts.map +1 -0
  23. package/dist/checks/consolidated/css-advanced-validation.js +415 -0
  24. package/dist/checks/consolidated/css-advanced-validation.js.map +1 -0
  25. package/dist/checks/consolidated/css-organization.d.ts +14 -0
  26. package/dist/checks/consolidated/css-organization.d.ts.map +1 -0
  27. package/dist/checks/consolidated/css-organization.js +432 -0
  28. package/dist/checks/consolidated/css-organization.js.map +1 -0
  29. package/dist/checks/consolidated/css-runtime-validation.d.ts +22 -0
  30. package/dist/checks/consolidated/css-runtime-validation.d.ts.map +1 -0
  31. package/dist/checks/consolidated/css-runtime-validation.js +330 -0
  32. package/dist/checks/consolidated/css-runtime-validation.js.map +1 -0
  33. package/dist/checks/consolidated/css-variable-validation.d.ts +17 -0
  34. package/dist/checks/consolidated/css-variable-validation.d.ts.map +1 -0
  35. package/dist/checks/consolidated/css-variable-validation.js +412 -0
  36. package/dist/checks/consolidated/css-variable-validation.js.map +1 -0
  37. package/dist/checks/consolidated/dark-mode-consistency.d.ts +23 -0
  38. package/dist/checks/consolidated/dark-mode-consistency.d.ts.map +1 -0
  39. package/dist/checks/consolidated/dark-mode-consistency.js +291 -0
  40. package/dist/checks/consolidated/dark-mode-consistency.js.map +1 -0
  41. package/dist/checks/consolidated/database.d.ts +95 -0
  42. package/dist/checks/consolidated/database.d.ts.map +1 -0
  43. package/dist/checks/consolidated/database.js +427 -0
  44. package/dist/checks/consolidated/database.js.map +1 -0
  45. package/dist/checks/consolidated/e2e-checks.d.ts +52 -0
  46. package/dist/checks/consolidated/e2e-checks.d.ts.map +1 -0
  47. package/dist/checks/consolidated/e2e-checks.js +157 -0
  48. package/dist/checks/consolidated/e2e-checks.js.map +1 -0
  49. package/dist/checks/consolidated/e2e-regression-coverage.d.ts +14 -0
  50. package/dist/checks/consolidated/e2e-regression-coverage.d.ts.map +1 -0
  51. package/dist/checks/consolidated/e2e-regression-coverage.js +151 -0
  52. package/dist/checks/consolidated/e2e-regression-coverage.js.map +1 -0
  53. package/dist/checks/consolidated/e2e-validation.d.ts +137 -0
  54. package/dist/checks/consolidated/e2e-validation.d.ts.map +1 -0
  55. package/dist/checks/consolidated/e2e-validation.js +1001 -0
  56. package/dist/checks/consolidated/e2e-validation.js.map +1 -0
  57. package/dist/checks/consolidated/enterprise-baseline.d.ts +9 -0
  58. package/dist/checks/consolidated/enterprise-baseline.d.ts.map +1 -0
  59. package/dist/checks/consolidated/enterprise-baseline.js +277 -0
  60. package/dist/checks/consolidated/enterprise-baseline.js.map +1 -0
  61. package/dist/checks/consolidated/generate-pageload-config.d.ts +6 -0
  62. package/dist/checks/consolidated/generate-pageload-config.d.ts.map +1 -0
  63. package/dist/checks/consolidated/generate-pageload-config.js +161 -0
  64. package/dist/checks/consolidated/generate-pageload-config.js.map +1 -0
  65. package/dist/checks/consolidated/hardened-checks.d.ts +276 -0
  66. package/dist/checks/consolidated/hardened-checks.d.ts.map +1 -0
  67. package/dist/checks/consolidated/hardened-checks.js +3056 -0
  68. package/dist/checks/consolidated/hardened-checks.js.map +1 -0
  69. package/dist/checks/consolidated/homepage-ux.d.ts +12 -0
  70. package/dist/checks/consolidated/homepage-ux.d.ts.map +1 -0
  71. package/dist/checks/consolidated/homepage-ux.js +242 -0
  72. package/dist/checks/consolidated/homepage-ux.js.map +1 -0
  73. package/dist/checks/consolidated/images.d.ts +76 -0
  74. package/dist/checks/consolidated/images.d.ts.map +1 -0
  75. package/dist/checks/consolidated/images.js +311 -0
  76. package/dist/checks/consolidated/images.js.map +1 -0
  77. package/dist/checks/consolidated/import-cycles.d.ts +63 -0
  78. package/dist/checks/consolidated/import-cycles.d.ts.map +1 -0
  79. package/dist/checks/consolidated/import-cycles.js +291 -0
  80. package/dist/checks/consolidated/import-cycles.js.map +1 -0
  81. package/dist/checks/consolidated/imports.d.ts +112 -0
  82. package/dist/checks/consolidated/imports.d.ts.map +1 -0
  83. package/dist/checks/consolidated/imports.js +977 -0
  84. package/dist/checks/consolidated/imports.js.map +1 -0
  85. package/dist/checks/consolidated/inline-style-conflicts.d.ts +21 -0
  86. package/dist/checks/consolidated/inline-style-conflicts.d.ts.map +1 -0
  87. package/dist/checks/consolidated/inline-style-conflicts.js +300 -0
  88. package/dist/checks/consolidated/inline-style-conflicts.js.map +1 -0
  89. package/dist/checks/consolidated/lib-organization.d.ts +12 -0
  90. package/dist/checks/consolidated/lib-organization.d.ts.map +1 -0
  91. package/dist/checks/consolidated/lib-organization.js +419 -0
  92. package/dist/checks/consolidated/lib-organization.js.map +1 -0
  93. package/dist/checks/consolidated/n-plus-one.d.ts +63 -0
  94. package/dist/checks/consolidated/n-plus-one.d.ts.map +1 -0
  95. package/dist/checks/consolidated/n-plus-one.js +331 -0
  96. package/dist/checks/consolidated/n-plus-one.js.map +1 -0
  97. package/dist/checks/consolidated/nextjs.d.ts +51 -0
  98. package/dist/checks/consolidated/nextjs.d.ts.map +1 -0
  99. package/dist/checks/consolidated/nextjs.js +205 -0
  100. package/dist/checks/consolidated/nextjs.js.map +1 -0
  101. package/dist/checks/consolidated/organization.d.ts +54 -0
  102. package/dist/checks/consolidated/organization.d.ts.map +1 -0
  103. package/dist/checks/consolidated/organization.js +158 -0
  104. package/dist/checks/consolidated/organization.js.map +1 -0
  105. package/dist/checks/consolidated/pageload.d.ts +12 -0
  106. package/dist/checks/consolidated/pageload.d.ts.map +1 -0
  107. package/dist/checks/consolidated/pageload.js +138 -0
  108. package/dist/checks/consolidated/pageload.js.map +1 -0
  109. package/dist/checks/consolidated/performance.d.ts +112 -0
  110. package/dist/checks/consolidated/performance.d.ts.map +1 -0
  111. package/dist/checks/consolidated/performance.js +1546 -0
  112. package/dist/checks/consolidated/performance.js.map +1 -0
  113. package/dist/checks/consolidated/quality.d.ts +52 -0
  114. package/dist/checks/consolidated/quality.d.ts.map +1 -0
  115. package/dist/checks/consolidated/quality.js +253 -0
  116. package/dist/checks/consolidated/quality.js.map +1 -0
  117. package/dist/checks/consolidated/react.d.ts +48 -0
  118. package/dist/checks/consolidated/react.d.ts.map +1 -0
  119. package/dist/checks/consolidated/react.js +203 -0
  120. package/dist/checks/consolidated/react.js.map +1 -0
  121. package/dist/checks/consolidated/regression-hygiene.d.ts +17 -0
  122. package/dist/checks/consolidated/regression-hygiene.d.ts.map +1 -0
  123. package/dist/checks/consolidated/regression-hygiene.js +242 -0
  124. package/dist/checks/consolidated/regression-hygiene.js.map +1 -0
  125. package/dist/checks/consolidated/regression.d.ts +20 -0
  126. package/dist/checks/consolidated/regression.d.ts.map +1 -0
  127. package/dist/checks/consolidated/regression.js +121 -0
  128. package/dist/checks/consolidated/regression.js.map +1 -0
  129. package/dist/checks/consolidated/runtime.d.ts +53 -0
  130. package/dist/checks/consolidated/runtime.d.ts.map +1 -0
  131. package/dist/checks/consolidated/runtime.js +160 -0
  132. package/dist/checks/consolidated/runtime.js.map +1 -0
  133. package/dist/checks/consolidated/script-performance.d.ts +17 -0
  134. package/dist/checks/consolidated/script-performance.d.ts.map +1 -0
  135. package/dist/checks/consolidated/script-performance.js +137 -0
  136. package/dist/checks/consolidated/script-performance.js.map +1 -0
  137. package/dist/checks/consolidated/security.d.ts +78 -0
  138. package/dist/checks/consolidated/security.d.ts.map +1 -0
  139. package/dist/checks/consolidated/security.js +404 -0
  140. package/dist/checks/consolidated/security.js.map +1 -0
  141. package/dist/checks/consolidated/seo.d.ts +31 -0
  142. package/dist/checks/consolidated/seo.d.ts.map +1 -0
  143. package/dist/checks/consolidated/seo.js +1438 -0
  144. package/dist/checks/consolidated/seo.js.map +1 -0
  145. package/dist/checks/consolidated/sx-prop-deprecation.d.ts +22 -0
  146. package/dist/checks/consolidated/sx-prop-deprecation.d.ts.map +1 -0
  147. package/dist/checks/consolidated/sx-prop-deprecation.js +280 -0
  148. package/dist/checks/consolidated/sx-prop-deprecation.js.map +1 -0
  149. package/dist/checks/consolidated/tailwind-class-validation.d.ts +25 -0
  150. package/dist/checks/consolidated/tailwind-class-validation.d.ts.map +1 -0
  151. package/dist/checks/consolidated/tailwind-class-validation.js +533 -0
  152. package/dist/checks/consolidated/tailwind-class-validation.js.map +1 -0
  153. package/dist/checks/consolidated/testing.d.ts +54 -0
  154. package/dist/checks/consolidated/testing.d.ts.map +1 -0
  155. package/dist/checks/consolidated/testing.js +163 -0
  156. package/dist/checks/consolidated/testing.js.map +1 -0
  157. package/dist/checks/consolidated/typescript.d.ts +3 -0
  158. package/dist/checks/consolidated/typescript.d.ts.map +1 -0
  159. package/dist/checks/consolidated/typescript.js +31 -0
  160. package/dist/checks/consolidated/typescript.js.map +1 -0
  161. package/dist/checks/consolidated/ui-accessibility-advanced.d.ts +104 -0
  162. package/dist/checks/consolidated/ui-accessibility-advanced.d.ts.map +1 -0
  163. package/dist/checks/consolidated/ui-accessibility-advanced.js +689 -0
  164. package/dist/checks/consolidated/ui-accessibility-advanced.js.map +1 -0
  165. package/dist/checks/consolidated/ui-accessibility.d.ts +121 -0
  166. package/dist/checks/consolidated/ui-accessibility.d.ts.map +1 -0
  167. package/dist/checks/consolidated/ui-accessibility.js +776 -0
  168. package/dist/checks/consolidated/ui-accessibility.js.map +1 -0
  169. package/dist/checks/consolidated/ui-advanced-spacing.d.ts +142 -0
  170. package/dist/checks/consolidated/ui-advanced-spacing.d.ts.map +1 -0
  171. package/dist/checks/consolidated/ui-advanced-spacing.js +1220 -0
  172. package/dist/checks/consolidated/ui-advanced-spacing.js.map +1 -0
  173. package/dist/checks/consolidated/ui-animation-duration.d.ts +108 -0
  174. package/dist/checks/consolidated/ui-animation-duration.d.ts.map +1 -0
  175. package/dist/checks/consolidated/ui-animation-duration.js +531 -0
  176. package/dist/checks/consolidated/ui-animation-duration.js.map +1 -0
  177. package/dist/checks/consolidated/ui-border-radius.d.ts +90 -0
  178. package/dist/checks/consolidated/ui-border-radius.d.ts.map +1 -0
  179. package/dist/checks/consolidated/ui-border-radius.js +519 -0
  180. package/dist/checks/consolidated/ui-border-radius.js.map +1 -0
  181. package/dist/checks/consolidated/ui-buttons.d.ts +32 -0
  182. package/dist/checks/consolidated/ui-buttons.d.ts.map +1 -0
  183. package/dist/checks/consolidated/ui-buttons.js +481 -0
  184. package/dist/checks/consolidated/ui-buttons.js.map +1 -0
  185. package/dist/checks/consolidated/ui-cards.d.ts +29 -0
  186. package/dist/checks/consolidated/ui-cards.d.ts.map +1 -0
  187. package/dist/checks/consolidated/ui-cards.js +504 -0
  188. package/dist/checks/consolidated/ui-cards.js.map +1 -0
  189. package/dist/checks/consolidated/ui-checks.d.ts +48 -0
  190. package/dist/checks/consolidated/ui-checks.d.ts.map +1 -0
  191. package/dist/checks/consolidated/ui-checks.js +264 -0
  192. package/dist/checks/consolidated/ui-checks.js.map +1 -0
  193. package/dist/checks/consolidated/ui-cleanup.d.ts +81 -0
  194. package/dist/checks/consolidated/ui-cleanup.d.ts.map +1 -0
  195. package/dist/checks/consolidated/ui-cleanup.js +650 -0
  196. package/dist/checks/consolidated/ui-cleanup.js.map +1 -0
  197. package/dist/checks/consolidated/ui-components.d.ts +255 -0
  198. package/dist/checks/consolidated/ui-components.d.ts.map +1 -0
  199. package/dist/checks/consolidated/ui-components.js +2008 -0
  200. package/dist/checks/consolidated/ui-components.js.map +1 -0
  201. package/dist/checks/consolidated/ui-consistency-advanced.d.ts +130 -0
  202. package/dist/checks/consolidated/ui-consistency-advanced.d.ts.map +1 -0
  203. package/dist/checks/consolidated/ui-consistency-advanced.js +982 -0
  204. package/dist/checks/consolidated/ui-consistency-advanced.js.map +1 -0
  205. package/dist/checks/consolidated/ui-consistency-comprehensive.d.ts +30 -0
  206. package/dist/checks/consolidated/ui-consistency-comprehensive.d.ts.map +1 -0
  207. package/dist/checks/consolidated/ui-consistency-comprehensive.js +1018 -0
  208. package/dist/checks/consolidated/ui-consistency-comprehensive.js.map +1 -0
  209. package/dist/checks/consolidated/ui-consistency-extended.d.ts +26 -0
  210. package/dist/checks/consolidated/ui-consistency-extended.d.ts.map +1 -0
  211. package/dist/checks/consolidated/ui-consistency-extended.js +606 -0
  212. package/dist/checks/consolidated/ui-consistency-extended.js.map +1 -0
  213. package/dist/checks/consolidated/ui-data-display.d.ts +103 -0
  214. package/dist/checks/consolidated/ui-data-display.d.ts.map +1 -0
  215. package/dist/checks/consolidated/ui-data-display.js +740 -0
  216. package/dist/checks/consolidated/ui-data-display.js.map +1 -0
  217. package/dist/checks/consolidated/ui-deprecated.d.ts +22 -0
  218. package/dist/checks/consolidated/ui-deprecated.d.ts.map +1 -0
  219. package/dist/checks/consolidated/ui-deprecated.js +336 -0
  220. package/dist/checks/consolidated/ui-deprecated.js.map +1 -0
  221. package/dist/checks/consolidated/ui-empty-null-states.d.ts +90 -0
  222. package/dist/checks/consolidated/ui-empty-null-states.d.ts.map +1 -0
  223. package/dist/checks/consolidated/ui-empty-null-states.js +511 -0
  224. package/dist/checks/consolidated/ui-empty-null-states.js.map +1 -0
  225. package/dist/checks/consolidated/ui-error-states.d.ts +99 -0
  226. package/dist/checks/consolidated/ui-error-states.d.ts.map +1 -0
  227. package/dist/checks/consolidated/ui-error-states.js +694 -0
  228. package/dist/checks/consolidated/ui-error-states.js.map +1 -0
  229. package/dist/checks/consolidated/ui-feedback-confirmations.d.ts +90 -0
  230. package/dist/checks/consolidated/ui-feedback-confirmations.d.ts.map +1 -0
  231. package/dist/checks/consolidated/ui-feedback-confirmations.js +596 -0
  232. package/dist/checks/consolidated/ui-feedback-confirmations.js.map +1 -0
  233. package/dist/checks/consolidated/ui-forms.d.ts +32 -0
  234. package/dist/checks/consolidated/ui-forms.d.ts.map +1 -0
  235. package/dist/checks/consolidated/ui-forms.js +568 -0
  236. package/dist/checks/consolidated/ui-forms.js.map +1 -0
  237. package/dist/checks/consolidated/ui-gradient-shadow.d.ts +90 -0
  238. package/dist/checks/consolidated/ui-gradient-shadow.d.ts.map +1 -0
  239. package/dist/checks/consolidated/ui-gradient-shadow.js +568 -0
  240. package/dist/checks/consolidated/ui-gradient-shadow.js.map +1 -0
  241. package/dist/checks/consolidated/ui-grid-responsive.d.ts +27 -0
  242. package/dist/checks/consolidated/ui-grid-responsive.d.ts.map +1 -0
  243. package/dist/checks/consolidated/ui-grid-responsive.js +441 -0
  244. package/dist/checks/consolidated/ui-grid-responsive.js.map +1 -0
  245. package/dist/checks/consolidated/ui-icon-size-tokens.d.ts +104 -0
  246. package/dist/checks/consolidated/ui-icon-size-tokens.d.ts.map +1 -0
  247. package/dist/checks/consolidated/ui-icon-size-tokens.js +514 -0
  248. package/dist/checks/consolidated/ui-icon-size-tokens.js.map +1 -0
  249. package/dist/checks/consolidated/ui-iconography.d.ts +90 -0
  250. package/dist/checks/consolidated/ui-iconography.d.ts.map +1 -0
  251. package/dist/checks/consolidated/ui-iconography.js +565 -0
  252. package/dist/checks/consolidated/ui-iconography.js.map +1 -0
  253. package/dist/checks/consolidated/ui-interactive-states.d.ts +240 -0
  254. package/dist/checks/consolidated/ui-interactive-states.d.ts.map +1 -0
  255. package/dist/checks/consolidated/ui-interactive-states.js +2474 -0
  256. package/dist/checks/consolidated/ui-interactive-states.js.map +1 -0
  257. package/dist/checks/consolidated/ui-layout.d.ts +256 -0
  258. package/dist/checks/consolidated/ui-layout.d.ts.map +1 -0
  259. package/dist/checks/consolidated/ui-layout.js +1371 -0
  260. package/dist/checks/consolidated/ui-layout.js.map +1 -0
  261. package/dist/checks/consolidated/ui-loading-skeletons.d.ts +11 -0
  262. package/dist/checks/consolidated/ui-loading-skeletons.d.ts.map +1 -0
  263. package/dist/checks/consolidated/ui-loading-skeletons.js +145 -0
  264. package/dist/checks/consolidated/ui-loading-skeletons.js.map +1 -0
  265. package/dist/checks/consolidated/ui-loading-state-skeletons.d.ts +9 -0
  266. package/dist/checks/consolidated/ui-loading-state-skeletons.d.ts.map +1 -0
  267. package/dist/checks/consolidated/ui-loading-state-skeletons.js +125 -0
  268. package/dist/checks/consolidated/ui-loading-state-skeletons.js.map +1 -0
  269. package/dist/checks/consolidated/ui-media.d.ts +74 -0
  270. package/dist/checks/consolidated/ui-media.d.ts.map +1 -0
  271. package/dist/checks/consolidated/ui-media.js +408 -0
  272. package/dist/checks/consolidated/ui-media.js.map +1 -0
  273. package/dist/checks/consolidated/ui-micro-interactions.d.ts +107 -0
  274. package/dist/checks/consolidated/ui-micro-interactions.d.ts.map +1 -0
  275. package/dist/checks/consolidated/ui-micro-interactions.js +825 -0
  276. package/dist/checks/consolidated/ui-micro-interactions.js.map +1 -0
  277. package/dist/checks/consolidated/ui-microcopy-consistency.d.ts +114 -0
  278. package/dist/checks/consolidated/ui-microcopy-consistency.d.ts.map +1 -0
  279. package/dist/checks/consolidated/ui-microcopy-consistency.js +566 -0
  280. package/dist/checks/consolidated/ui-microcopy-consistency.js.map +1 -0
  281. package/dist/checks/consolidated/ui-mobile-ux.d.ts +251 -0
  282. package/dist/checks/consolidated/ui-mobile-ux.d.ts.map +1 -0
  283. package/dist/checks/consolidated/ui-mobile-ux.js +2212 -0
  284. package/dist/checks/consolidated/ui-mobile-ux.js.map +1 -0
  285. package/dist/checks/consolidated/ui-motion-accessibility.d.ts +93 -0
  286. package/dist/checks/consolidated/ui-motion-accessibility.d.ts.map +1 -0
  287. package/dist/checks/consolidated/ui-motion-accessibility.js +450 -0
  288. package/dist/checks/consolidated/ui-motion-accessibility.js.map +1 -0
  289. package/dist/checks/consolidated/ui-navigation.d.ts +85 -0
  290. package/dist/checks/consolidated/ui-navigation.d.ts.map +1 -0
  291. package/dist/checks/consolidated/ui-navigation.js +673 -0
  292. package/dist/checks/consolidated/ui-navigation.js.map +1 -0
  293. package/dist/checks/consolidated/ui-patterns.d.ts +174 -0
  294. package/dist/checks/consolidated/ui-patterns.d.ts.map +1 -0
  295. package/dist/checks/consolidated/ui-patterns.js +1532 -0
  296. package/dist/checks/consolidated/ui-patterns.js.map +1 -0
  297. package/dist/checks/consolidated/ui-responsive.d.ts +89 -0
  298. package/dist/checks/consolidated/ui-responsive.d.ts.map +1 -0
  299. package/dist/checks/consolidated/ui-responsive.js +588 -0
  300. package/dist/checks/consolidated/ui-responsive.js.map +1 -0
  301. package/dist/checks/consolidated/ui-spacing-standards.d.ts +43 -0
  302. package/dist/checks/consolidated/ui-spacing-standards.d.ts.map +1 -0
  303. package/dist/checks/consolidated/ui-spacing-standards.js +874 -0
  304. package/dist/checks/consolidated/ui-spacing-standards.js.map +1 -0
  305. package/dist/checks/consolidated/ui-spacing.d.ts +751 -0
  306. package/dist/checks/consolidated/ui-spacing.d.ts.map +1 -0
  307. package/dist/checks/consolidated/ui-spacing.js +4996 -0
  308. package/dist/checks/consolidated/ui-spacing.js.map +1 -0
  309. package/dist/checks/consolidated/ui-standards-auto-fixer.d.ts +70 -0
  310. package/dist/checks/consolidated/ui-standards-auto-fixer.d.ts.map +1 -0
  311. package/dist/checks/consolidated/ui-standards-auto-fixer.js +429 -0
  312. package/dist/checks/consolidated/ui-standards-auto-fixer.js.map +1 -0
  313. package/dist/checks/consolidated/ui-standards-enforcement.d.ts +100 -0
  314. package/dist/checks/consolidated/ui-standards-enforcement.d.ts.map +1 -0
  315. package/dist/checks/consolidated/ui-standards-enforcement.js +935 -0
  316. package/dist/checks/consolidated/ui-standards-enforcement.js.map +1 -0
  317. package/dist/checks/consolidated/ui-state-consistency.d.ts +90 -0
  318. package/dist/checks/consolidated/ui-state-consistency.d.ts.map +1 -0
  319. package/dist/checks/consolidated/ui-state-consistency.js +659 -0
  320. package/dist/checks/consolidated/ui-state-consistency.js.map +1 -0
  321. package/dist/checks/consolidated/ui-style-validation.d.ts +74 -0
  322. package/dist/checks/consolidated/ui-style-validation.d.ts.map +1 -0
  323. package/dist/checks/consolidated/ui-style-validation.js +403 -0
  324. package/dist/checks/consolidated/ui-style-validation.js.map +1 -0
  325. package/dist/checks/consolidated/ui-tokens.d.ts +110 -0
  326. package/dist/checks/consolidated/ui-tokens.d.ts.map +1 -0
  327. package/dist/checks/consolidated/ui-tokens.js +990 -0
  328. package/dist/checks/consolidated/ui-tokens.js.map +1 -0
  329. package/dist/checks/consolidated/ui-typography.d.ts +77 -0
  330. package/dist/checks/consolidated/ui-typography.d.ts.map +1 -0
  331. package/dist/checks/consolidated/ui-typography.js +416 -0
  332. package/dist/checks/consolidated/ui-typography.js.map +1 -0
  333. package/dist/checks/consolidated/ui-visual-hierarchy.d.ts +90 -0
  334. package/dist/checks/consolidated/ui-visual-hierarchy.d.ts.map +1 -0
  335. package/dist/checks/consolidated/ui-visual-hierarchy.js +562 -0
  336. package/dist/checks/consolidated/ui-visual-hierarchy.js.map +1 -0
  337. package/dist/checks/consolidated/woocommerce.d.ts +50 -0
  338. package/dist/checks/consolidated/woocommerce.d.ts.map +1 -0
  339. package/dist/checks/consolidated/woocommerce.js +198 -0
  340. package/dist/checks/consolidated/woocommerce.js.map +1 -0
  341. package/dist/checks/core/api-route-protection.d.ts +2 -0
  342. package/dist/checks/core/api-route-protection.d.ts.map +1 -0
  343. package/dist/checks/core/api-route-protection.js +101 -0
  344. package/dist/checks/core/api-route-protection.js.map +1 -0
  345. package/dist/checks/core/critical.d.ts +8 -0
  346. package/dist/checks/core/critical.d.ts.map +1 -0
  347. package/dist/checks/core/critical.js +200 -0
  348. package/dist/checks/core/critical.js.map +1 -0
  349. package/dist/checks/core/database.d.ts +8 -0
  350. package/dist/checks/core/database.d.ts.map +1 -0
  351. package/dist/checks/core/database.js +699 -0
  352. package/dist/checks/core/database.js.map +1 -0
  353. package/dist/checks/core/development.d.ts +8 -0
  354. package/dist/checks/core/development.d.ts.map +1 -0
  355. package/dist/checks/core/development.js +417 -0
  356. package/dist/checks/core/development.js.map +1 -0
  357. package/dist/checks/core/hydration-mismatch-check.d.ts +38 -0
  358. package/dist/checks/core/hydration-mismatch-check.d.ts.map +1 -0
  359. package/dist/checks/core/hydration-mismatch-check.js +411 -0
  360. package/dist/checks/core/hydration-mismatch-check.js.map +1 -0
  361. package/dist/checks/core/performance.d.ts +8 -0
  362. package/dist/checks/core/performance.d.ts.map +1 -0
  363. package/dist/checks/core/performance.js +474 -0
  364. package/dist/checks/core/performance.js.map +1 -0
  365. package/dist/checks/core/security.d.ts +8 -0
  366. package/dist/checks/core/security.d.ts.map +1 -0
  367. package/dist/checks/core/security.js +275 -0
  368. package/dist/checks/core/security.js.map +1 -0
  369. package/dist/checks/core/standardized-error-handling.d.ts +43 -0
  370. package/dist/checks/core/standardized-error-handling.d.ts.map +1 -0
  371. package/dist/checks/core/standardized-error-handling.js +384 -0
  372. package/dist/checks/core/standardized-error-handling.js.map +1 -0
  373. package/dist/checks/core/supercatch.d.ts +8 -0
  374. package/dist/checks/core/supercatch.d.ts.map +1 -0
  375. package/dist/checks/core/supercatch.js +750 -0
  376. package/dist/checks/core/supercatch.js.map +1 -0
  377. package/dist/checks/core/suppression-check.d.ts +2 -0
  378. package/dist/checks/core/suppression-check.d.ts.map +1 -0
  379. package/dist/checks/core/suppression-check.js +129 -0
  380. package/dist/checks/core/suppression-check.js.map +1 -0
  381. package/dist/checks/core/ui-quality.d.ts +8 -0
  382. package/dist/checks/core/ui-quality.d.ts.map +1 -0
  383. package/dist/checks/core/ui-quality.js +1736 -0
  384. package/dist/checks/core/ui-quality.js.map +1 -0
  385. package/dist/checks/core/unused-assets-check.d.ts +2 -0
  386. package/dist/checks/core/unused-assets-check.d.ts.map +1 -0
  387. package/dist/checks/core/unused-assets-check.js +112 -0
  388. package/dist/checks/core/unused-assets-check.js.map +1 -0
  389. package/dist/checks/core/use-status-ssr-safety.d.ts +34 -0
  390. package/dist/checks/core/use-status-ssr-safety.d.ts.map +1 -0
  391. package/dist/checks/core/use-status-ssr-safety.js +283 -0
  392. package/dist/checks/core/use-status-ssr-safety.js.map +1 -0
  393. package/dist/checks/email/email-flow-validation.d.ts +23 -0
  394. package/dist/checks/email/email-flow-validation.d.ts.map +1 -0
  395. package/dist/checks/email/email-flow-validation.js +468 -0
  396. package/dist/checks/email/email-flow-validation.js.map +1 -0
  397. package/dist/checks/email/email-template-db-verification.d.ts +20 -0
  398. package/dist/checks/email/email-template-db-verification.d.ts.map +1 -0
  399. package/dist/checks/email/email-template-db-verification.js +46 -0
  400. package/dist/checks/email/email-template-db-verification.js.map +1 -0
  401. package/dist/checks/email/email-template-validation.d.ts +24 -0
  402. package/dist/checks/email/email-template-validation.d.ts.map +1 -0
  403. package/dist/checks/email/email-template-validation.js +688 -0
  404. package/dist/checks/email/email-template-validation.js.map +1 -0
  405. package/dist/checks/jsx/comment-placement.d.ts +45 -0
  406. package/dist/checks/jsx/comment-placement.d.ts.map +1 -0
  407. package/dist/checks/jsx/comment-placement.js +316 -0
  408. package/dist/checks/jsx/comment-placement.js.map +1 -0
  409. package/dist/checks/specialized/admin-layout-check.d.ts +19 -0
  410. package/dist/checks/specialized/admin-layout-check.d.ts.map +1 -0
  411. package/dist/checks/specialized/admin-layout-check.js +166 -0
  412. package/dist/checks/specialized/admin-layout-check.js.map +1 -0
  413. package/dist/checks/specialized/client-server-separation.d.ts +14 -0
  414. package/dist/checks/specialized/client-server-separation.d.ts.map +1 -0
  415. package/dist/checks/specialized/client-server-separation.js +197 -0
  416. package/dist/checks/specialized/client-server-separation.js.map +1 -0
  417. package/dist/checks/specialized/cost-optimization.d.ts +18 -0
  418. package/dist/checks/specialized/cost-optimization.d.ts.map +1 -0
  419. package/dist/checks/specialized/cost-optimization.js +78 -0
  420. package/dist/checks/specialized/cost-optimization.js.map +1 -0
  421. package/dist/checks/specialized/database-migration-sync.d.ts +21 -0
  422. package/dist/checks/specialized/database-migration-sync.d.ts.map +1 -0
  423. package/dist/checks/specialized/database-migration-sync.js +150 -0
  424. package/dist/checks/specialized/database-migration-sync.js.map +1 -0
  425. package/dist/checks/specialized/database-model-validation.d.ts +15 -0
  426. package/dist/checks/specialized/database-model-validation.d.ts.map +1 -0
  427. package/dist/checks/specialized/database-model-validation.js +35 -0
  428. package/dist/checks/specialized/database-model-validation.js.map +1 -0
  429. package/dist/checks/specialized/database-schema-migrations-diff.d.ts +27 -0
  430. package/dist/checks/specialized/database-schema-migrations-diff.d.ts.map +1 -0
  431. package/dist/checks/specialized/database-schema-migrations-diff.js +177 -0
  432. package/dist/checks/specialized/database-schema-migrations-diff.js.map +1 -0
  433. package/dist/checks/specialized/database-schema-sync.d.ts +23 -0
  434. package/dist/checks/specialized/database-schema-sync.d.ts.map +1 -0
  435. package/dist/checks/specialized/database-schema-sync.js +77 -0
  436. package/dist/checks/specialized/database-schema-sync.js.map +1 -0
  437. package/dist/checks/specialized/decimal-serialization.d.ts +24 -0
  438. package/dist/checks/specialized/decimal-serialization.d.ts.map +1 -0
  439. package/dist/checks/specialized/decimal-serialization.js +400 -0
  440. package/dist/checks/specialized/decimal-serialization.js.map +1 -0
  441. package/dist/checks/specialized/detect-router-issues.d.ts +14 -0
  442. package/dist/checks/specialized/detect-router-issues.d.ts.map +1 -0
  443. package/dist/checks/specialized/detect-router-issues.js +96 -0
  444. package/dist/checks/specialized/detect-router-issues.js.map +1 -0
  445. package/dist/checks/specialized/enum-validation.d.ts +15 -0
  446. package/dist/checks/specialized/enum-validation.d.ts.map +1 -0
  447. package/dist/checks/specialized/enum-validation.js +35 -0
  448. package/dist/checks/specialized/enum-validation.js.map +1 -0
  449. package/dist/checks/specialized/hash-collision.d.ts +18 -0
  450. package/dist/checks/specialized/hash-collision.d.ts.map +1 -0
  451. package/dist/checks/specialized/hash-collision.js +78 -0
  452. package/dist/checks/specialized/hash-collision.js.map +1 -0
  453. package/dist/checks/specialized/id-generation-enforcement.d.ts +16 -0
  454. package/dist/checks/specialized/id-generation-enforcement.d.ts.map +1 -0
  455. package/dist/checks/specialized/id-generation-enforcement.js +307 -0
  456. package/dist/checks/specialized/id-generation-enforcement.js.map +1 -0
  457. package/dist/checks/specialized/image-data-integrity.d.ts +15 -0
  458. package/dist/checks/specialized/image-data-integrity.d.ts.map +1 -0
  459. package/dist/checks/specialized/image-data-integrity.js +79 -0
  460. package/dist/checks/specialized/image-data-integrity.js.map +1 -0
  461. package/dist/checks/specialized/image-health.d.ts +14 -0
  462. package/dist/checks/specialized/image-health.d.ts.map +1 -0
  463. package/dist/checks/specialized/image-health.js +122 -0
  464. package/dist/checks/specialized/image-health.js.map +1 -0
  465. package/dist/checks/specialized/image-metadata-validation.d.ts +14 -0
  466. package/dist/checks/specialized/image-metadata-validation.d.ts.map +1 -0
  467. package/dist/checks/specialized/image-metadata-validation.js +95 -0
  468. package/dist/checks/specialized/image-metadata-validation.js.map +1 -0
  469. package/dist/checks/specialized/image-optimization.d.ts +16 -0
  470. package/dist/checks/specialized/image-optimization.d.ts.map +1 -0
  471. package/dist/checks/specialized/image-optimization.js +86 -0
  472. package/dist/checks/specialized/image-optimization.js.map +1 -0
  473. package/dist/checks/specialized/invalid-module-imports.d.ts +24 -0
  474. package/dist/checks/specialized/invalid-module-imports.d.ts.map +1 -0
  475. package/dist/checks/specialized/invalid-module-imports.js +209 -0
  476. package/dist/checks/specialized/invalid-module-imports.js.map +1 -0
  477. package/dist/checks/specialized/lint-validation.d.ts +26 -0
  478. package/dist/checks/specialized/lint-validation.d.ts.map +1 -0
  479. package/dist/checks/specialized/lint-validation.js +193 -0
  480. package/dist/checks/specialized/lint-validation.js.map +1 -0
  481. package/dist/checks/specialized/listing-workflow.d.ts +19 -0
  482. package/dist/checks/specialized/listing-workflow.d.ts.map +1 -0
  483. package/dist/checks/specialized/listing-workflow.js +89 -0
  484. package/dist/checks/specialized/listing-workflow.js.map +1 -0
  485. package/dist/checks/specialized/mui-imports-validation.d.ts +18 -0
  486. package/dist/checks/specialized/mui-imports-validation.d.ts.map +1 -0
  487. package/dist/checks/specialized/mui-imports-validation.js +134 -0
  488. package/dist/checks/specialized/mui-imports-validation.js.map +1 -0
  489. package/dist/checks/specialized/nextauth-v5-compliance.d.ts +16 -0
  490. package/dist/checks/specialized/nextauth-v5-compliance.d.ts.map +1 -0
  491. package/dist/checks/specialized/nextauth-v5-compliance.js +164 -0
  492. package/dist/checks/specialized/nextauth-v5-compliance.js.map +1 -0
  493. package/dist/checks/specialized/nextjs-params-check.d.ts +14 -0
  494. package/dist/checks/specialized/nextjs-params-check.d.ts.map +1 -0
  495. package/dist/checks/specialized/nextjs-params-check.js +140 -0
  496. package/dist/checks/specialized/nextjs-params-check.js.map +1 -0
  497. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.d.ts +16 -0
  498. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.d.ts.map +1 -0
  499. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.js +36 -0
  500. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.js.map +1 -0
  501. package/dist/checks/specialized/no-wata-cardgraded-validation.d.ts +22 -0
  502. package/dist/checks/specialized/no-wata-cardgraded-validation.d.ts.map +1 -0
  503. package/dist/checks/specialized/no-wata-cardgraded-validation.js +97 -0
  504. package/dist/checks/specialized/no-wata-cardgraded-validation.js.map +1 -0
  505. package/dist/checks/specialized/parameter-consistency-check.d.ts +20 -0
  506. package/dist/checks/specialized/parameter-consistency-check.d.ts.map +1 -0
  507. package/dist/checks/specialized/parameter-consistency-check.js +115 -0
  508. package/dist/checks/specialized/parameter-consistency-check.js.map +1 -0
  509. package/dist/checks/specialized/prisma-field-names-validation.d.ts +15 -0
  510. package/dist/checks/specialized/prisma-field-names-validation.d.ts.map +1 -0
  511. package/dist/checks/specialized/prisma-field-names-validation.js +35 -0
  512. package/dist/checks/specialized/prisma-field-names-validation.js.map +1 -0
  513. package/dist/checks/specialized/prisma-null-syntax.d.ts +34 -0
  514. package/dist/checks/specialized/prisma-null-syntax.d.ts.map +1 -0
  515. package/dist/checks/specialized/prisma-null-syntax.js +330 -0
  516. package/dist/checks/specialized/prisma-null-syntax.js.map +1 -0
  517. package/dist/checks/specialized/prisma-query-validation.d.ts +15 -0
  518. package/dist/checks/specialized/prisma-query-validation.d.ts.map +1 -0
  519. package/dist/checks/specialized/prisma-query-validation.js +35 -0
  520. package/dist/checks/specialized/prisma-query-validation.js.map +1 -0
  521. package/dist/checks/specialized/product-type-validation.d.ts +17 -0
  522. package/dist/checks/specialized/product-type-validation.d.ts.map +1 -0
  523. package/dist/checks/specialized/product-type-validation.js +129 -0
  524. package/dist/checks/specialized/product-type-validation.js.map +1 -0
  525. package/dist/checks/specialized/responsive-image-validation.d.ts +14 -0
  526. package/dist/checks/specialized/responsive-image-validation.d.ts.map +1 -0
  527. package/dist/checks/specialized/responsive-image-validation.js +101 -0
  528. package/dist/checks/specialized/responsive-image-validation.js.map +1 -0
  529. package/dist/checks/specialized/root-cleanliness.d.ts +21 -0
  530. package/dist/checks/specialized/root-cleanliness.d.ts.map +1 -0
  531. package/dist/checks/specialized/root-cleanliness.js +251 -0
  532. package/dist/checks/specialized/root-cleanliness.js.map +1 -0
  533. package/dist/checks/specialized/rotation-detection-validation.d.ts +16 -0
  534. package/dist/checks/specialized/rotation-detection-validation.d.ts.map +1 -0
  535. package/dist/checks/specialized/rotation-detection-validation.js +113 -0
  536. package/dist/checks/specialized/rotation-detection-validation.js.map +1 -0
  537. package/dist/checks/specialized/script-organization.d.ts +17 -0
  538. package/dist/checks/specialized/script-organization.d.ts.map +1 -0
  539. package/dist/checks/specialized/script-organization.js +487 -0
  540. package/dist/checks/specialized/script-organization.js.map +1 -0
  541. package/dist/checks/specialized/shared-components-migration.d.ts +137 -0
  542. package/dist/checks/specialized/shared-components-migration.d.ts.map +1 -0
  543. package/dist/checks/specialized/shared-components-migration.js +1288 -0
  544. package/dist/checks/specialized/shared-components-migration.js.map +1 -0
  545. package/dist/checks/specialized/store-specialties-normalization.d.ts +10 -0
  546. package/dist/checks/specialized/store-specialties-normalization.d.ts.map +1 -0
  547. package/dist/checks/specialized/store-specialties-normalization.js +126 -0
  548. package/dist/checks/specialized/store-specialties-normalization.js.map +1 -0
  549. package/dist/checks/specialized/two-stage-trim-validation.d.ts +16 -0
  550. package/dist/checks/specialized/two-stage-trim-validation.d.ts.map +1 -0
  551. package/dist/checks/specialized/two-stage-trim-validation.js +115 -0
  552. package/dist/checks/specialized/two-stage-trim-validation.js.map +1 -0
  553. package/dist/checks/specialized/underscore-variable-audit.d.ts +26 -0
  554. package/dist/checks/specialized/underscore-variable-audit.d.ts.map +1 -0
  555. package/dist/checks/specialized/underscore-variable-audit.js +219 -0
  556. package/dist/checks/specialized/underscore-variable-audit.js.map +1 -0
  557. package/dist/checks/specialized/unified-badge-consistency.d.ts +16 -0
  558. package/dist/checks/specialized/unified-badge-consistency.d.ts.map +1 -0
  559. package/dist/checks/specialized/unified-badge-consistency.js +284 -0
  560. package/dist/checks/specialized/unified-badge-consistency.js.map +1 -0
  561. package/dist/checks/specialized/validate-integration-enums.d.ts +15 -0
  562. package/dist/checks/specialized/validate-integration-enums.d.ts.map +1 -0
  563. package/dist/checks/specialized/validate-integration-enums.js +131 -0
  564. package/dist/checks/specialized/validate-integration-enums.js.map +1 -0
  565. package/dist/checks/testing/action-regression.d.ts +23 -0
  566. package/dist/checks/testing/action-regression.d.ts.map +1 -0
  567. package/dist/checks/testing/action-regression.js +192 -0
  568. package/dist/checks/testing/action-regression.js.map +1 -0
  569. package/dist/checks/testing/critical-api-coverage.d.ts +21 -0
  570. package/dist/checks/testing/critical-api-coverage.d.ts.map +1 -0
  571. package/dist/checks/testing/critical-api-coverage.js +158 -0
  572. package/dist/checks/testing/critical-api-coverage.js.map +1 -0
  573. package/dist/checks/testing/data-entry-regression-required.d.ts +24 -0
  574. package/dist/checks/testing/data-entry-regression-required.d.ts.map +1 -0
  575. package/dist/checks/testing/data-entry-regression-required.js +378 -0
  576. package/dist/checks/testing/data-entry-regression-required.js.map +1 -0
  577. package/dist/checks/testing/e2e-best-practices.d.ts +24 -0
  578. package/dist/checks/testing/e2e-best-practices.d.ts.map +1 -0
  579. package/dist/checks/testing/e2e-best-practices.js +791 -0
  580. package/dist/checks/testing/e2e-best-practices.js.map +1 -0
  581. package/dist/checks/testing/e2e-flake-patterns.d.ts +26 -0
  582. package/dist/checks/testing/e2e-flake-patterns.d.ts.map +1 -0
  583. package/dist/checks/testing/e2e-flake-patterns.js +305 -0
  584. package/dist/checks/testing/e2e-flake-patterns.js.map +1 -0
  585. package/dist/checks/testing/e2e-redundant-visibility-checks.d.ts +25 -0
  586. package/dist/checks/testing/e2e-redundant-visibility-checks.d.ts.map +1 -0
  587. package/dist/checks/testing/e2e-redundant-visibility-checks.js +613 -0
  588. package/dist/checks/testing/e2e-redundant-visibility-checks.js.map +1 -0
  589. package/dist/checks/testing/e2e-slow-tests.d.ts +9 -0
  590. package/dist/checks/testing/e2e-slow-tests.d.ts.map +1 -0
  591. package/dist/checks/testing/e2e-slow-tests.js +142 -0
  592. package/dist/checks/testing/e2e-slow-tests.js.map +1 -0
  593. package/dist/checks/testing/e2e-timeouts.d.ts +9 -0
  594. package/dist/checks/testing/e2e-timeouts.d.ts.map +1 -0
  595. package/dist/checks/testing/e2e-timeouts.js +82 -0
  596. package/dist/checks/testing/e2e-timeouts.js.map +1 -0
  597. package/dist/checks/testing/integration-e2e-depth.d.ts +20 -0
  598. package/dist/checks/testing/integration-e2e-depth.d.ts.map +1 -0
  599. package/dist/checks/testing/integration-e2e-depth.js +575 -0
  600. package/dist/checks/testing/integration-e2e-depth.js.map +1 -0
  601. package/dist/checks/testing/playwright-feature-coverage-gaps.d.ts +31 -0
  602. package/dist/checks/testing/playwright-feature-coverage-gaps.d.ts.map +1 -0
  603. package/dist/checks/testing/playwright-feature-coverage-gaps.js +1582 -0
  604. package/dist/checks/testing/playwright-feature-coverage-gaps.js.map +1 -0
  605. package/dist/checks/testing/playwright-mock-inventory.d.ts +24 -0
  606. package/dist/checks/testing/playwright-mock-inventory.d.ts.map +1 -0
  607. package/dist/checks/testing/playwright-mock-inventory.js +380 -0
  608. package/dist/checks/testing/playwright-mock-inventory.js.map +1 -0
  609. package/dist/checks/testing/test-coverage-threshold.d.ts +25 -0
  610. package/dist/checks/testing/test-coverage-threshold.d.ts.map +1 -0
  611. package/dist/checks/testing/test-coverage-threshold.js +166 -0
  612. package/dist/checks/testing/test-coverage-threshold.js.map +1 -0
  613. package/dist/checks/testing/test-flakiness-score.d.ts +27 -0
  614. package/dist/checks/testing/test-flakiness-score.d.ts.map +1 -0
  615. package/dist/checks/testing/test-flakiness-score.js +358 -0
  616. package/dist/checks/testing/test-flakiness-score.js.map +1 -0
  617. package/dist/checks/testing/test-patterns.d.ts +16 -0
  618. package/dist/checks/testing/test-patterns.d.ts.map +1 -0
  619. package/dist/checks/testing/test-patterns.js +156 -0
  620. package/dist/checks/testing/test-patterns.js.map +1 -0
  621. package/dist/checks/workflows/a-plus-rating-validation.d.ts +42 -0
  622. package/dist/checks/workflows/a-plus-rating-validation.d.ts.map +1 -0
  623. package/dist/checks/workflows/a-plus-rating-validation.js +527 -0
  624. package/dist/checks/workflows/a-plus-rating-validation.js.map +1 -0
  625. package/dist/checks/workflows/affected.d.ts +14 -0
  626. package/dist/checks/workflows/affected.d.ts.map +1 -0
  627. package/dist/checks/workflows/affected.js +126 -0
  628. package/dist/checks/workflows/affected.js.map +1 -0
  629. package/dist/checks/workflows/ai.d.ts +6 -0
  630. package/dist/checks/workflows/ai.d.ts.map +1 -0
  631. package/dist/checks/workflows/ai.js +42 -0
  632. package/dist/checks/workflows/ai.js.map +1 -0
  633. package/dist/checks/workflows/all.d.ts +31 -0
  634. package/dist/checks/workflows/all.d.ts.map +1 -0
  635. package/dist/checks/workflows/all.js +2688 -0
  636. package/dist/checks/workflows/all.js.map +1 -0
  637. package/dist/checks/workflows/commit.d.ts +19 -0
  638. package/dist/checks/workflows/commit.d.ts.map +1 -0
  639. package/dist/checks/workflows/commit.js +207 -0
  640. package/dist/checks/workflows/commit.js.map +1 -0
  641. package/dist/checks/workflows/critical.d.ts +9 -0
  642. package/dist/checks/workflows/critical.d.ts.map +1 -0
  643. package/dist/checks/workflows/critical.js +213 -0
  644. package/dist/checks/workflows/critical.js.map +1 -0
  645. package/dist/checks/workflows/database-id-validation.d.ts +9 -0
  646. package/dist/checks/workflows/database-id-validation.d.ts.map +1 -0
  647. package/dist/checks/workflows/database-id-validation.js +13 -0
  648. package/dist/checks/workflows/database-id-validation.js.map +1 -0
  649. package/dist/checks/workflows/deploy.d.ts +20 -0
  650. package/dist/checks/workflows/deploy.d.ts.map +1 -0
  651. package/dist/checks/workflows/deploy.js +107 -0
  652. package/dist/checks/workflows/deploy.js.map +1 -0
  653. package/dist/checks/workflows/deployment-readiness.d.ts +12 -0
  654. package/dist/checks/workflows/deployment-readiness.d.ts.map +1 -0
  655. package/dist/checks/workflows/deployment-readiness.js +403 -0
  656. package/dist/checks/workflows/deployment-readiness.js.map +1 -0
  657. package/dist/checks/workflows/dev.d.ts +19 -0
  658. package/dist/checks/workflows/dev.d.ts.map +1 -0
  659. package/dist/checks/workflows/dev.js +88 -0
  660. package/dist/checks/workflows/dev.js.map +1 -0
  661. package/dist/checks/workflows/development.d.ts +9 -0
  662. package/dist/checks/workflows/development.d.ts.map +1 -0
  663. package/dist/checks/workflows/development.js +65 -0
  664. package/dist/checks/workflows/development.js.map +1 -0
  665. package/dist/checks/workflows/enterprise.d.ts +10 -0
  666. package/dist/checks/workflows/enterprise.d.ts.map +1 -0
  667. package/dist/checks/workflows/enterprise.js +359 -0
  668. package/dist/checks/workflows/enterprise.js.map +1 -0
  669. package/dist/checks/workflows/images.d.ts +6 -0
  670. package/dist/checks/workflows/images.d.ts.map +1 -0
  671. package/dist/checks/workflows/images.js +58 -0
  672. package/dist/checks/workflows/images.js.map +1 -0
  673. package/dist/checks/workflows/naming.d.ts +19 -0
  674. package/dist/checks/workflows/naming.d.ts.map +1 -0
  675. package/dist/checks/workflows/naming.js +42 -0
  676. package/dist/checks/workflows/naming.js.map +1 -0
  677. package/dist/checks/workflows/performance.d.ts +8 -0
  678. package/dist/checks/workflows/performance.d.ts.map +1 -0
  679. package/dist/checks/workflows/performance.js +77 -0
  680. package/dist/checks/workflows/performance.js.map +1 -0
  681. package/dist/checks/workflows/pre-deploy.d.ts +6 -0
  682. package/dist/checks/workflows/pre-deploy.d.ts.map +1 -0
  683. package/dist/checks/workflows/pre-deploy.js +41 -0
  684. package/dist/checks/workflows/pre-deploy.js.map +1 -0
  685. package/dist/checks/workflows/security.d.ts +8 -0
  686. package/dist/checks/workflows/security.d.ts.map +1 -0
  687. package/dist/checks/workflows/security.js +71 -0
  688. package/dist/checks/workflows/security.js.map +1 -0
  689. package/dist/checks/workflows/supercatch.d.ts +8 -0
  690. package/dist/checks/workflows/supercatch.d.ts.map +1 -0
  691. package/dist/checks/workflows/supercatch.js +127 -0
  692. package/dist/checks/workflows/supercatch.js.map +1 -0
  693. package/dist/checks/workflows/ui-quality.d.ts +9 -0
  694. package/dist/checks/workflows/ui-quality.d.ts.map +1 -0
  695. package/dist/checks/workflows/ui-quality.js +264 -0
  696. package/dist/checks/workflows/ui-quality.js.map +1 -0
  697. package/dist/checks/workflows/ui-uniformity.d.ts +18 -0
  698. package/dist/checks/workflows/ui-uniformity.d.ts.map +1 -0
  699. package/dist/checks/workflows/ui-uniformity.js +265 -0
  700. package/dist/checks/workflows/ui-uniformity.js.map +1 -0
  701. package/dist/checks/workflows/vercel.d.ts +16 -0
  702. package/dist/checks/workflows/vercel.d.ts.map +1 -0
  703. package/dist/checks/workflows/vercel.js +173 -0
  704. package/dist/checks/workflows/vercel.js.map +1 -0
  705. package/dist/utils/validation-helpers.d.ts +43 -0
  706. package/dist/utils/validation-helpers.d.ts.map +1 -0
  707. package/dist/utils/validation-helpers.js +370 -0
  708. package/dist/utils/validation-helpers.js.map +1 -0
  709. package/package.json +1 -1
@@ -0,0 +1,694 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * UI Error States Preflight (NON-BLOCKING)
5
+ *
6
+ * Validates error UI patterns for consistency and user-friendliness.
7
+ *
8
+ * Checks:
9
+ * 1. Form Error Positioning - Error messages near inputs
10
+ * 2. Error Icon Alignment - Icon + text consistency
11
+ * 3. Error Boundary Fallbacks - Proper fallback UI
12
+ * 4. API Error Messages - User-friendly error text
13
+ * 5. Inline vs Toast Errors - Appropriate pattern usage
14
+ * 6. Error Color Consistency - Red/destructive color usage
15
+ * 7. Recoverable Errors - Retry options present
16
+ * 8. Error State Accessibility - ARIA and role usage
17
+ *
18
+ * Usage:
19
+ * pnpm preflight:ui-error-states # All checks
20
+ * pnpm preflight:ui-error-states form # Form errors only
21
+ */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || (function () {
39
+ var ownKeys = function(o) {
40
+ ownKeys = Object.getOwnPropertyNames || function (o) {
41
+ var ar = [];
42
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
43
+ return ar;
44
+ };
45
+ return ownKeys(o);
46
+ };
47
+ return function (mod) {
48
+ if (mod && mod.__esModule) return mod;
49
+ var result = {};
50
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
51
+ __setModuleDefault(result, mod);
52
+ return result;
53
+ };
54
+ })();
55
+ Object.defineProperty(exports, "__esModule", { value: true });
56
+ exports.UIErrorStatesModule = void 0;
57
+ const fs = __importStar(require("fs"));
58
+ const path = __importStar(require("path"));
59
+ const console_chars_1 = require("../../utils/console-chars");
60
+ const file_cache_1 = require("../../shared/file-cache");
61
+ class UIErrorStatesModule {
62
+ verbose;
63
+ constructor(options = {}) {
64
+ this.verbose = options.verbose || false;
65
+ }
66
+ async getTsxFiles() {
67
+ return file_cache_1.fileCache.getAppAndComponentsTSX();
68
+ }
69
+ /**
70
+ * 1. Form Error Positioning
71
+ * Check that error messages appear near their inputs
72
+ */
73
+ async checkFormErrorPositioning() {
74
+ const startTime = Date.now();
75
+ const issues = [];
76
+ const files = await this.getTsxFiles();
77
+ for (const file of files) {
78
+ const content = fs.readFileSync(file, "utf8");
79
+ const lines = content.split("\n");
80
+ for (let i = 0; i < lines.length; i++) {
81
+ const line = lines[i];
82
+ // Check for form error messages
83
+ if (/errors?\.\w+|fieldState\.error|formState\.errors/i.test(line)) {
84
+ const contextBlock = lines.slice(i, Math.min(i + 10, lines.length)).join("\n");
85
+ // Check if error is displayed near the field
86
+ const hasInlineError = /FormMessage|ErrorMessage|FieldError|helperText|error.*text/i.test(contextBlock);
87
+ const hasToastError = /toast\(|showToast|notification/i.test(contextBlock);
88
+ if (hasToastError && !hasInlineError) {
89
+ issues.push({
90
+ file,
91
+ line: i + 1,
92
+ type: "form-error-in-toast",
93
+ severity: "info",
94
+ message: "Form validation error shown in toast instead of inline",
95
+ suggestion: "Display form errors inline near the field for better UX",
96
+ snippet: line.trim().substring(0, 80),
97
+ });
98
+ }
99
+ }
100
+ // Check for error message components
101
+ if (/<(?:FormMessage|ErrorMessage|FieldError)\b/i.test(line)) {
102
+ const contextBlock = lines.slice(Math.max(0, i - 10), i + 1).join("\n");
103
+ // Check if it's after the input
104
+ const hasInputBefore = /<(?:Input|TextField|Select|Textarea)\b/i.test(contextBlock);
105
+ if (!hasInputBefore) {
106
+ issues.push({
107
+ file,
108
+ line: i + 1,
109
+ type: "error-message-orphaned",
110
+ severity: "info",
111
+ message: "Error message component without nearby input field",
112
+ suggestion: "Place error message directly after its associated input",
113
+ snippet: line.trim().substring(0, 80),
114
+ });
115
+ }
116
+ }
117
+ }
118
+ }
119
+ return {
120
+ name: "Form Error Positioning",
121
+ passed: true,
122
+ blocking: false,
123
+ issues,
124
+ duration: Date.now() - startTime,
125
+ };
126
+ }
127
+ /**
128
+ * 2. Error Icon Alignment
129
+ * Check for consistent error icon + text alignment
130
+ */
131
+ async checkErrorIconAlignment() {
132
+ const startTime = Date.now();
133
+ const issues = [];
134
+ const files = await this.getTsxFiles();
135
+ const errorIconPatterns = new Map();
136
+ for (const file of files) {
137
+ const content = fs.readFileSync(file, "utf8");
138
+ const lines = content.split("\n");
139
+ for (let i = 0; i < lines.length; i++) {
140
+ const line = lines[i];
141
+ // Check for error messages with icons
142
+ if (/error|Error|alert|Alert/i.test(line) && /Icon|icon|<svg/i.test(line)) {
143
+ const contextBlock = lines.slice(i, Math.min(i + 5, lines.length)).join("\n");
144
+ // Track icon patterns
145
+ if (/AlertCircle|ExclamationCircle|XCircle|ErrorIcon/i.test(contextBlock)) {
146
+ const iconMatch = contextBlock.match(/(?:AlertCircle|ExclamationCircle|XCircle|ErrorIcon)/i);
147
+ if (iconMatch) {
148
+ errorIconPatterns.set(iconMatch[0], (errorIconPatterns.get(iconMatch[0]) || 0) + 1);
149
+ }
150
+ }
151
+ // Check for flex alignment
152
+ const hasFlexAlign = /flex.*items-center|items-center.*flex|inline-flex/i.test(contextBlock);
153
+ const hasGap = /gap-|space-x-/.test(contextBlock);
154
+ if (!hasFlexAlign && /Icon.*text|text.*Icon/i.test(contextBlock)) {
155
+ issues.push({
156
+ file,
157
+ line: i + 1,
158
+ type: "error-icon-no-flex",
159
+ severity: "info",
160
+ message: "Error icon + text without flex alignment",
161
+ suggestion: "Use flex items-center gap-2 for proper icon-text alignment",
162
+ snippet: line.trim().substring(0, 80),
163
+ });
164
+ }
165
+ }
166
+ }
167
+ }
168
+ // Check for inconsistent error icons
169
+ if (errorIconPatterns.size > 2) {
170
+ const sorted = [...errorIconPatterns.entries()].sort((a, b) => b[1] - a[1]);
171
+ issues.push({
172
+ file: "codebase-wide",
173
+ line: 0,
174
+ type: "inconsistent-error-icons",
175
+ severity: "info",
176
+ message: `Multiple error icons: ${sorted.map(([i, c]) => `${i}(${c})`).join(", ")}`,
177
+ suggestion: "Standardize on one error icon (recommended: AlertCircle or ExclamationCircle)",
178
+ });
179
+ }
180
+ return {
181
+ name: "Error Icon Alignment",
182
+ passed: true,
183
+ blocking: false,
184
+ issues,
185
+ duration: Date.now() - startTime,
186
+ };
187
+ }
188
+ /**
189
+ * 3. Error Boundary Fallbacks
190
+ * Check for proper error boundary fallback UI
191
+ */
192
+ async checkErrorBoundaryFallbacks() {
193
+ const startTime = Date.now();
194
+ const issues = [];
195
+ const files = await this.getTsxFiles();
196
+ let hasErrorBoundary = false;
197
+ let errorBoundaryCount = 0;
198
+ for (const file of files) {
199
+ const content = fs.readFileSync(file, "utf8");
200
+ const lines = content.split("\n");
201
+ for (let i = 0; i < lines.length; i++) {
202
+ const line = lines[i];
203
+ // Check for error boundary components
204
+ if (/<ErrorBoundary\b/i.test(line)) {
205
+ hasErrorBoundary = true;
206
+ errorBoundaryCount++;
207
+ const contextBlock = lines.slice(i, Math.min(i + 20, lines.length)).join("\n");
208
+ // Check for fallback UI
209
+ const hasFallback = /fallback=|FallbackComponent|fallbackRender/i.test(contextBlock);
210
+ const hasReset = /reset|retry|reload|refetch/i.test(contextBlock);
211
+ const hasErrorDetails = /error\.message|error\.stack/i.test(contextBlock);
212
+ if (!hasFallback) {
213
+ issues.push({
214
+ file,
215
+ line: i + 1,
216
+ type: "error-boundary-no-fallback",
217
+ severity: "warning",
218
+ message: "ErrorBoundary without fallback UI",
219
+ suggestion: "Add fallback prop with user-friendly error UI",
220
+ snippet: line.trim().substring(0, 80),
221
+ });
222
+ }
223
+ if (hasFallback && !hasReset) {
224
+ issues.push({
225
+ file,
226
+ line: i + 1,
227
+ type: "error-boundary-no-reset",
228
+ severity: "info",
229
+ message: "ErrorBoundary fallback without retry option",
230
+ suggestion: "Add 'Try Again' button to reset error boundary",
231
+ snippet: line.trim().substring(0, 80),
232
+ });
233
+ }
234
+ }
235
+ // Check for componentDidCatch (class components)
236
+ if (/componentDidCatch|getDerivedStateFromError/.test(line)) {
237
+ hasErrorBoundary = true;
238
+ const contextBlock = lines.slice(i, Math.min(i + 30, lines.length)).join("\n");
239
+ const hasFallbackUI = /render.*error|Something went wrong|error.*occurred/i.test(contextBlock);
240
+ if (!hasFallbackUI) {
241
+ issues.push({
242
+ file,
243
+ line: i + 1,
244
+ type: "class-error-boundary-no-ui",
245
+ severity: "warning",
246
+ message: "Error boundary without fallback render",
247
+ suggestion: "Add fallback UI in render method when hasError is true",
248
+ snippet: line.trim().substring(0, 80),
249
+ });
250
+ }
251
+ }
252
+ }
253
+ }
254
+ // Global check for error boundary presence
255
+ if (!hasErrorBoundary) {
256
+ issues.push({
257
+ file: "codebase-wide",
258
+ line: 0,
259
+ type: "no-error-boundaries",
260
+ severity: "info",
261
+ message: "No ErrorBoundary components found",
262
+ suggestion: "Add ErrorBoundary at route level to gracefully handle render errors",
263
+ });
264
+ }
265
+ return {
266
+ name: "Error Boundary Fallbacks",
267
+ passed: issues.filter((i) => i.severity === "error").length === 0,
268
+ blocking: false,
269
+ issues,
270
+ duration: Date.now() - startTime,
271
+ };
272
+ }
273
+ /**
274
+ * 4. API Error Messages
275
+ * Check for user-friendly API error handling
276
+ */
277
+ async checkAPIErrorMessages() {
278
+ const startTime = Date.now();
279
+ const issues = [];
280
+ const files = await this.getTsxFiles();
281
+ for (const file of files) {
282
+ const content = fs.readFileSync(file, "utf8");
283
+ const lines = content.split("\n");
284
+ for (let i = 0; i < lines.length; i++) {
285
+ const line = lines[i];
286
+ // Check for raw error.message display
287
+ if (/error\.message|err\.message|e\.message/.test(line)) {
288
+ const contextBlock = lines.slice(i, Math.min(i + 5, lines.length)).join("\n");
289
+ // Check if it's directly displayed to user
290
+ const isDisplayed = /\{.*error\.message.*\}|toast.*error\.message|alert.*error\.message/i.test(contextBlock);
291
+ const hasMapping = /errorMessages|getErrorMessage|mapError|friendlyError/i.test(contextBlock);
292
+ if (isDisplayed && !hasMapping) {
293
+ issues.push({
294
+ file,
295
+ line: i + 1,
296
+ type: "raw-error-message",
297
+ severity: "warning",
298
+ message: "Raw error.message displayed to user - may expose internal details",
299
+ suggestion: "Map API errors to user-friendly messages",
300
+ snippet: line.trim().substring(0, 80),
301
+ });
302
+ }
303
+ }
304
+ // Check for generic error messages
305
+ if (/['"](?:Error|Something went wrong|An error occurred)['"]/.test(line)) {
306
+ const contextBlock = lines.slice(i, Math.min(i + 10, lines.length)).join("\n");
307
+ // Check if there's more specific handling available
308
+ const hasSpecificHandling = /status.*===|error\.code|error\.type|instanceof/i.test(contextBlock);
309
+ if (!hasSpecificHandling) {
310
+ issues.push({
311
+ file,
312
+ line: i + 1,
313
+ type: "generic-error-message",
314
+ severity: "info",
315
+ message: "Generic error message - consider more specific feedback",
316
+ suggestion: "Provide actionable error messages (what happened, what user can do)",
317
+ snippet: line.trim().substring(0, 80),
318
+ });
319
+ }
320
+ }
321
+ // Check for network errors without offline handling
322
+ if (/catch\s*\(|\.catch\(|onError/.test(line)) {
323
+ const contextBlock = lines.slice(i, Math.min(i + 15, lines.length)).join("\n");
324
+ const hasNetworkCheck = /network|offline|internet|connection|ECONNREFUSED/i.test(contextBlock);
325
+ const isNetworkCall = /fetch|axios|api\.|useMutation|useQuery/i.test(content.substring(Math.max(0, content.indexOf(line) - 200), content.indexOf(line)));
326
+ if (isNetworkCall && !hasNetworkCheck) {
327
+ // Only flag if it looks like error handling
328
+ if (/toast|alert|setError|showError/i.test(contextBlock)) {
329
+ issues.push({
330
+ file,
331
+ line: i + 1,
332
+ type: "api-error-no-network-check",
333
+ severity: "info",
334
+ message: "API error handler may not distinguish network errors",
335
+ suggestion: "Check for network/offline errors and show appropriate message",
336
+ snippet: line.trim().substring(0, 80),
337
+ });
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ return {
344
+ name: "API Error Messages",
345
+ passed: issues.filter((i) => i.severity === "error").length === 0,
346
+ blocking: false,
347
+ issues,
348
+ duration: Date.now() - startTime,
349
+ };
350
+ }
351
+ /**
352
+ * 5. Inline vs Toast Errors
353
+ * Check for appropriate error display pattern usage
354
+ */
355
+ async checkInlineVsToastErrors() {
356
+ const startTime = Date.now();
357
+ const issues = [];
358
+ const files = await this.getTsxFiles();
359
+ let inlineErrorCount = 0;
360
+ let toastErrorCount = 0;
361
+ for (const file of files) {
362
+ const content = fs.readFileSync(file, "utf8");
363
+ const lines = content.split("\n");
364
+ for (let i = 0; i < lines.length; i++) {
365
+ const line = lines[i];
366
+ // Track inline errors
367
+ if (/<(?:FormMessage|ErrorMessage|FieldError|Alert.*error|FormError)\b/i.test(line)) {
368
+ inlineErrorCount++;
369
+ }
370
+ // Track toast errors
371
+ if (/toast\(.*error|toast\.error|showError.*toast|errorToast/i.test(line)) {
372
+ toastErrorCount++;
373
+ const contextBlock = lines.slice(Math.max(0, i - 10), Math.min(i + 5, lines.length)).join("\n");
374
+ // Check if toast is used for form validation (anti-pattern)
375
+ const isFormValidation = /formState|errors\.\w+|validate|validation|required/i.test(contextBlock);
376
+ if (isFormValidation) {
377
+ issues.push({
378
+ file,
379
+ line: i + 1,
380
+ type: "form-validation-in-toast",
381
+ severity: "warning",
382
+ message: "Form validation errors shown in toast",
383
+ suggestion: "Use inline field errors for form validation, toasts for server errors",
384
+ snippet: line.trim().substring(0, 80),
385
+ });
386
+ }
387
+ }
388
+ // Check for Alert components with error variant
389
+ if (/<Alert[^>]*variant=["'](?:destructive|error)/.test(line)) {
390
+ const contextBlock = lines.slice(i, Math.min(i + 10, lines.length)).join("\n");
391
+ // Check if alert has close button for dismissible errors
392
+ const hasDismiss = /onClose|dismiss|close|X|×/i.test(contextBlock);
393
+ const isTemporary = /setTimeout|autoHide|duration/i.test(contextBlock);
394
+ if (!hasDismiss && !isTemporary) {
395
+ issues.push({
396
+ file,
397
+ line: i + 1,
398
+ type: "error-alert-not-dismissible",
399
+ severity: "info",
400
+ message: "Error alert without close/dismiss option",
401
+ suggestion: "Add close button or auto-dismiss for non-blocking errors",
402
+ snippet: line.trim().substring(0, 80),
403
+ });
404
+ }
405
+ }
406
+ }
407
+ }
408
+ return {
409
+ name: "Inline vs Toast Errors",
410
+ passed: issues.filter((i) => i.severity === "error").length === 0,
411
+ blocking: false,
412
+ issues,
413
+ duration: Date.now() - startTime,
414
+ };
415
+ }
416
+ /**
417
+ * 6. Error Color Consistency
418
+ * Check for consistent error/destructive color usage
419
+ */
420
+ async checkErrorColorConsistency() {
421
+ const startTime = Date.now();
422
+ const issues = [];
423
+ const files = await this.getTsxFiles();
424
+ const errorColorPatterns = new Map();
425
+ for (const file of files) {
426
+ const content = fs.readFileSync(file, "utf8");
427
+ const lines = content.split("\n");
428
+ for (let i = 0; i < lines.length; i++) {
429
+ const line = lines[i];
430
+ // Check for error-related color classes
431
+ if (/error|Error/.test(line) || /\.error|isError|hasError/i.test(line)) {
432
+ // Track color patterns
433
+ if (/text-red-\d+/.test(line)) {
434
+ const match = line.match(/text-red-(\d+)/);
435
+ if (match) {
436
+ errorColorPatterns.set(`text-red-${match[1]}`, (errorColorPatterns.get(`text-red-${match[1]}`) || 0) + 1);
437
+ }
438
+ }
439
+ if (/text-destructive/.test(line)) {
440
+ errorColorPatterns.set("text-destructive", (errorColorPatterns.get("text-destructive") || 0) + 1);
441
+ }
442
+ if (/bg-red-\d+/.test(line)) {
443
+ const match = line.match(/bg-red-(\d+)/);
444
+ if (match) {
445
+ errorColorPatterns.set(`bg-red-${match[1]}`, (errorColorPatterns.get(`bg-red-${match[1]}`) || 0) + 1);
446
+ }
447
+ }
448
+ if (/border-red-\d+/.test(line)) {
449
+ const match = line.match(/border-red-(\d+)/);
450
+ if (match) {
451
+ errorColorPatterns.set(`border-red-${match[1]}`, (errorColorPatterns.get(`border-red-${match[1]}`) || 0) + 1);
452
+ }
453
+ }
454
+ }
455
+ // Check for hardcoded error colors
456
+ if (/style=.*#(?:f|e).*error|style=.*rgb.*255.*0.*0.*error/i.test(line)) {
457
+ issues.push({
458
+ file,
459
+ line: i + 1,
460
+ type: "hardcoded-error-color",
461
+ severity: "info",
462
+ message: "Hardcoded error color - use design tokens",
463
+ suggestion: "Use text-destructive or text-red-500 from design system",
464
+ snippet: line.trim().substring(0, 80),
465
+ });
466
+ }
467
+ }
468
+ }
469
+ // Check for inconsistent error colors
470
+ const redTextColors = [...errorColorPatterns.entries()].filter(([k]) => k.startsWith("text-red"));
471
+ if (redTextColors.length > 2) {
472
+ const sorted = redTextColors.sort((a, b) => b[1] - a[1]);
473
+ issues.push({
474
+ file: "codebase-wide",
475
+ line: 0,
476
+ type: "inconsistent-error-text-colors",
477
+ severity: "warning",
478
+ message: `Multiple error text colors: ${sorted.map(([c, n]) => `${c}(${n})`).join(", ")}`,
479
+ suggestion: "Standardize on one error text color (recommended: text-destructive or text-red-500)",
480
+ });
481
+ }
482
+ return {
483
+ name: "Error Color Consistency",
484
+ passed: issues.filter((i) => i.severity === "error").length === 0,
485
+ blocking: false,
486
+ issues,
487
+ duration: Date.now() - startTime,
488
+ };
489
+ }
490
+ /**
491
+ * 7. Recoverable Errors
492
+ * Check for retry/recovery options in error states
493
+ */
494
+ async checkRecoverableErrors() {
495
+ const startTime = Date.now();
496
+ const issues = [];
497
+ const files = await this.getTsxFiles();
498
+ for (const file of files) {
499
+ const content = fs.readFileSync(file, "utf8");
500
+ const lines = content.split("\n");
501
+ for (let i = 0; i < lines.length; i++) {
502
+ const line = lines[i];
503
+ // Check for error states in queries
504
+ if (/isError|error\s*&&|\.error\s*\?/i.test(line)) {
505
+ const contextBlock = lines.slice(i, Math.min(i + 20, lines.length)).join("\n");
506
+ const hasRetry = /retry|refetch|reload|try.*again|refresh/i.test(contextBlock);
507
+ const hasContactSupport = /contact|support|help/i.test(contextBlock);
508
+ const hasErrorCode = /error.*code|code.*error|reference/i.test(contextBlock);
509
+ // Check if it's a network/API error
510
+ const isNetworkError = /useQuery|useMutation|fetch|api/i.test(content.substring(Math.max(0, content.indexOf(line) - 200), content.indexOf(line)));
511
+ if (isNetworkError && !hasRetry) {
512
+ issues.push({
513
+ file,
514
+ line: i + 1,
515
+ type: "api-error-no-retry",
516
+ severity: "info",
517
+ message: "API error state without retry option",
518
+ suggestion: "Add 'Try Again' button that calls refetch() for recoverable errors",
519
+ snippet: line.trim().substring(0, 80),
520
+ });
521
+ }
522
+ }
523
+ // Check for mutation error handling
524
+ if (/onError.*mutation|mutation.*onError/i.test(line)) {
525
+ const contextBlock = lines.slice(i, Math.min(i + 15, lines.length)).join("\n");
526
+ const hasRetryLogic = /retry|mutate\(|reset/i.test(contextBlock);
527
+ if (!hasRetryLogic) {
528
+ issues.push({
529
+ file,
530
+ line: i + 1,
531
+ type: "mutation-error-no-retry",
532
+ severity: "info",
533
+ message: "Mutation error handler without retry option",
534
+ suggestion: "Allow user to retry failed mutations",
535
+ snippet: line.trim().substring(0, 80),
536
+ });
537
+ }
538
+ }
539
+ }
540
+ }
541
+ return {
542
+ name: "Recoverable Errors",
543
+ passed: true,
544
+ blocking: false,
545
+ issues,
546
+ duration: Date.now() - startTime,
547
+ };
548
+ }
549
+ /**
550
+ * 8. Error State Accessibility
551
+ * Check for ARIA and role usage in error states
552
+ */
553
+ async checkErrorAccessibility() {
554
+ const startTime = Date.now();
555
+ const issues = [];
556
+ const files = await this.getTsxFiles();
557
+ for (const file of files) {
558
+ const content = fs.readFileSync(file, "utf8");
559
+ const lines = content.split("\n");
560
+ for (let i = 0; i < lines.length; i++) {
561
+ const line = lines[i];
562
+ // Check for error messages without aria
563
+ if (/<(?:span|div|p)[^>]*(?:error|Error)/.test(line)) {
564
+ const contextBlock = lines.slice(i, Math.min(i + 3, lines.length)).join("\n");
565
+ const hasAriaLive = /aria-live|role=["']alert/.test(contextBlock);
566
+ const hasAriaDescribedBy = /aria-describedby|aria-errormessage/.test(contextBlock);
567
+ const isIdReferenced = /id=["'][^"']+["']/.test(contextBlock);
568
+ // Check if it's a visible error message
569
+ const isVisibleError = /text-red|text-destructive|error.*message/i.test(contextBlock);
570
+ if (isVisibleError && !hasAriaLive) {
571
+ issues.push({
572
+ file,
573
+ line: i + 1,
574
+ type: "error-no-aria-live",
575
+ severity: "info",
576
+ message: "Error message without aria-live or role='alert'",
577
+ suggestion: "Add role='alert' or aria-live='polite' for screen reader announcement",
578
+ snippet: line.trim().substring(0, 80),
579
+ });
580
+ }
581
+ }
582
+ // Check for form inputs with errors
583
+ if (/<(?:Input|input|TextField)[^>]*error/i.test(line)) {
584
+ const contextBlock = lines.slice(i, Math.min(i + 5, lines.length)).join("\n");
585
+ const hasAriaInvalid = /aria-invalid/.test(contextBlock);
586
+ const hasAriaDescribedBy = /aria-describedby|aria-errormessage/.test(contextBlock);
587
+ if (!hasAriaInvalid) {
588
+ issues.push({
589
+ file,
590
+ line: i + 1,
591
+ type: "input-error-no-aria-invalid",
592
+ severity: "info",
593
+ message: "Input with error state missing aria-invalid='true'",
594
+ suggestion: "Add aria-invalid={hasError} to input for accessibility",
595
+ snippet: line.trim().substring(0, 80),
596
+ });
597
+ }
598
+ if (!hasAriaDescribedBy) {
599
+ issues.push({
600
+ file,
601
+ line: i + 1,
602
+ type: "input-error-no-describedby",
603
+ severity: "info",
604
+ message: "Input error without aria-describedby linking to error message",
605
+ suggestion: "Link input to error message with aria-describedby={errorId}",
606
+ snippet: line.trim().substring(0, 80),
607
+ });
608
+ }
609
+ }
610
+ }
611
+ }
612
+ return {
613
+ name: "Error State Accessibility",
614
+ passed: true,
615
+ blocking: false,
616
+ issues,
617
+ duration: Date.now() - startTime,
618
+ };
619
+ }
620
+ async runAll(filter) {
621
+ const startTime = Date.now();
622
+ const checks = [];
623
+ const checkMap = {
624
+ form: () => this.checkFormErrorPositioning(),
625
+ icon: () => this.checkErrorIconAlignment(),
626
+ boundary: () => this.checkErrorBoundaryFallbacks(),
627
+ api: () => this.checkAPIErrorMessages(),
628
+ inline: () => this.checkInlineVsToastErrors(),
629
+ color: () => this.checkErrorColorConsistency(),
630
+ recovery: () => this.checkRecoverableErrors(),
631
+ a11y: () => this.checkErrorAccessibility(),
632
+ };
633
+ if (filter && checkMap[filter]) {
634
+ checks.push(await checkMap[filter]());
635
+ }
636
+ else {
637
+ for (const check of Object.values(checkMap)) {
638
+ checks.push(await check());
639
+ }
640
+ }
641
+ const errors = checks.reduce((sum, c) => sum + c.issues.filter((i) => i.severity === "error").length, 0);
642
+ const warnings = checks.reduce((sum, c) => sum + c.issues.filter((i) => i.severity === "warning").length, 0);
643
+ return {
644
+ module: "UI Error States",
645
+ passed: errors === 0,
646
+ totalDuration: Date.now() - startTime,
647
+ checks,
648
+ summary: {
649
+ total: checks.length,
650
+ passed: checks.filter((c) => c.passed).length,
651
+ failed: checks.filter((c) => !c.passed).length,
652
+ errors,
653
+ warnings,
654
+ },
655
+ };
656
+ }
657
+ }
658
+ exports.UIErrorStatesModule = UIErrorStatesModule;
659
+ async function main() {
660
+ const args = process.argv.slice(2);
661
+ const filter = args.find((a) => !a.startsWith("-"));
662
+ const verbose = args.includes("--verbose") || args.includes("-v");
663
+ const module = new UIErrorStatesModule({ verbose });
664
+ const result = await module.runAll(filter);
665
+ console.log((0, console_chars_1.createDivider)(80, "heavy"));
666
+ console.log(`${console_chars_1.emoji.error} UI ERROR STATES CHECK`);
667
+ console.log((0, console_chars_1.createDivider)(80, "heavy"));
668
+ console.log();
669
+ for (const check of result.checks) {
670
+ const icon = check.passed ? console_chars_1.emoji.success : check.issues.some((i) => i.severity === "error") ? console_chars_1.emoji.error : console_chars_1.emoji.warning;
671
+ console.log(`${icon} ${check.name} (${check.duration}ms)`);
672
+ if (check.issues.length > 0 && (verbose || check.issues.some((i) => i.severity !== "info"))) {
673
+ for (const issue of check.issues.slice(0, verbose ? 100 : 5)) {
674
+ const sevIcon = issue.severity === "error" ? console_chars_1.emoji.error : issue.severity === "warning" ? console_chars_1.emoji.warning : console_chars_1.emoji.info;
675
+ const relPath = path.relative(process.cwd(), issue.file).replace(/\\/g, "/");
676
+ console.log(` ${sevIcon} ${relPath}:${issue.line}`);
677
+ console.log(` ${issue.message}`);
678
+ console.log(` ${console_chars_1.emoji.hint} ${issue.suggestion}`);
679
+ }
680
+ if (!verbose && check.issues.length > 5) {
681
+ console.log(` ... and ${check.issues.length - 5} more issues`);
682
+ }
683
+ }
684
+ console.log();
685
+ }
686
+ console.log((0, console_chars_1.createDivider)(80, "light"));
687
+ console.log(`Total: ${result.summary.total} checks | ${console_chars_1.emoji.error} ${result.summary.errors} errors | ${console_chars_1.emoji.warning} ${result.summary.warnings} warnings`);
688
+ console.log(`Duration: ${(result.totalDuration / 1000).toFixed(2)}s`);
689
+ console.log((0, console_chars_1.createDivider)(80, "heavy"));
690
+ process.exit(result.summary.errors > 0 ? 1 : 0);
691
+ }
692
+ if (require.main === module)
693
+ main();
694
+ //# sourceMappingURL=ui-error-states.js.map