@empline/preflight 1.0.20

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 (1297) hide show
  1. package/README.md +540 -0
  2. package/dist/bin/approve.d.ts +24 -0
  3. package/dist/bin/approve.d.ts.map +1 -0
  4. package/dist/bin/approve.js +249 -0
  5. package/dist/bin/approve.js.map +1 -0
  6. package/dist/bin/audit.d.ts +64 -0
  7. package/dist/bin/audit.d.ts.map +1 -0
  8. package/dist/bin/audit.js +464 -0
  9. package/dist/bin/audit.js.map +1 -0
  10. package/dist/bin/install-hooks.d.ts +20 -0
  11. package/dist/bin/install-hooks.d.ts.map +1 -0
  12. package/dist/bin/install-hooks.js +204 -0
  13. package/dist/bin/install-hooks.js.map +1 -0
  14. package/dist/bin/preflight.d.ts +21 -0
  15. package/dist/bin/preflight.d.ts.map +1 -0
  16. package/dist/bin/preflight.js +218 -0
  17. package/dist/bin/preflight.js.map +1 -0
  18. package/dist/bin/preinstall.d.ts +15 -0
  19. package/dist/bin/preinstall.d.ts.map +1 -0
  20. package/dist/bin/preinstall.js +229 -0
  21. package/dist/bin/preinstall.js.map +1 -0
  22. package/dist/bin/review-drift.d.ts +17 -0
  23. package/dist/bin/review-drift.d.ts.map +1 -0
  24. package/dist/bin/review-drift.js +292 -0
  25. package/dist/bin/review-drift.js.map +1 -0
  26. package/dist/bin/review.d.ts +22 -0
  27. package/dist/bin/review.d.ts.map +1 -0
  28. package/dist/bin/review.js +179 -0
  29. package/dist/bin/review.js.map +1 -0
  30. package/dist/bin/submit-drift.d.ts +36 -0
  31. package/dist/bin/submit-drift.d.ts.map +1 -0
  32. package/dist/bin/submit-drift.js +534 -0
  33. package/dist/bin/submit-drift.js.map +1 -0
  34. package/dist/bin/submit.d.ts +23 -0
  35. package/dist/bin/submit.d.ts.map +1 -0
  36. package/dist/bin/submit.js +263 -0
  37. package/dist/bin/submit.js.map +1 -0
  38. package/dist/bin/watch.d.ts +27 -0
  39. package/dist/bin/watch.d.ts.map +1 -0
  40. package/dist/bin/watch.js +327 -0
  41. package/dist/bin/watch.js.map +1 -0
  42. package/dist/checks/ai/card-size-detection-validation.d.ts +22 -0
  43. package/dist/checks/ai/card-size-detection-validation.d.ts.map +1 -0
  44. package/dist/checks/ai/card-size-detection-validation.js +452 -0
  45. package/dist/checks/ai/card-size-detection-validation.js.map +1 -0
  46. package/dist/checks/ai/code-quality-ai.d.ts +17 -0
  47. package/dist/checks/ai/code-quality-ai.d.ts.map +1 -0
  48. package/dist/checks/ai/code-quality-ai.js +399 -0
  49. package/dist/checks/ai/code-quality-ai.js.map +1 -0
  50. package/dist/checks/ai/recognition-pipeline-validation.d.ts +27 -0
  51. package/dist/checks/ai/recognition-pipeline-validation.d.ts.map +1 -0
  52. package/dist/checks/ai/recognition-pipeline-validation.js +808 -0
  53. package/dist/checks/ai/recognition-pipeline-validation.js.map +1 -0
  54. package/dist/checks/ai/series-subset-hierarchy.d.ts +21 -0
  55. package/dist/checks/ai/series-subset-hierarchy.d.ts.map +1 -0
  56. package/dist/checks/ai/series-subset-hierarchy.js +373 -0
  57. package/dist/checks/ai/series-subset-hierarchy.js.map +1 -0
  58. package/dist/checks/api/api-completeness-check.d.ts +26 -0
  59. package/dist/checks/api/api-completeness-check.d.ts.map +1 -0
  60. package/dist/checks/api/api-completeness-check.js +311 -0
  61. package/dist/checks/api/api-completeness-check.js.map +1 -0
  62. package/dist/checks/api/api-contract-validation.d.ts +24 -0
  63. package/dist/checks/api/api-contract-validation.d.ts.map +1 -0
  64. package/dist/checks/api/api-contract-validation.js +219 -0
  65. package/dist/checks/api/api-contract-validation.js.map +1 -0
  66. package/dist/checks/api/pagination-validation.d.ts +21 -0
  67. package/dist/checks/api/pagination-validation.d.ts.map +1 -0
  68. package/dist/checks/api/pagination-validation.js +270 -0
  69. package/dist/checks/api/pagination-validation.js.map +1 -0
  70. package/dist/checks/api/response-consistency.d.ts +21 -0
  71. package/dist/checks/api/response-consistency.d.ts.map +1 -0
  72. package/dist/checks/api/response-consistency.js +238 -0
  73. package/dist/checks/api/response-consistency.js.map +1 -0
  74. package/dist/checks/api/response-schema-validation.d.ts +25 -0
  75. package/dist/checks/api/response-schema-validation.d.ts.map +1 -0
  76. package/dist/checks/api/response-schema-validation.js +288 -0
  77. package/dist/checks/api/response-schema-validation.js.map +1 -0
  78. package/dist/checks/api/response-time-budget.d.ts +17 -0
  79. package/dist/checks/api/response-time-budget.d.ts.map +1 -0
  80. package/dist/checks/api/response-time-budget.js +294 -0
  81. package/dist/checks/api/response-time-budget.js.map +1 -0
  82. package/dist/checks/api/variant-switching-integrity.d.ts +22 -0
  83. package/dist/checks/api/variant-switching-integrity.d.ts.map +1 -0
  84. package/dist/checks/api/variant-switching-integrity.js +306 -0
  85. package/dist/checks/api/variant-switching-integrity.js.map +1 -0
  86. package/dist/checks/architecture/admin-page-consistency.d.ts +27 -0
  87. package/dist/checks/architecture/admin-page-consistency.d.ts.map +1 -0
  88. package/dist/checks/architecture/admin-page-consistency.js +294 -0
  89. package/dist/checks/architecture/admin-page-consistency.js.map +1 -0
  90. package/dist/checks/architecture/backend-ui-coverage.d.ts +25 -0
  91. package/dist/checks/architecture/backend-ui-coverage.d.ts.map +1 -0
  92. package/dist/checks/architecture/backend-ui-coverage.js +562 -0
  93. package/dist/checks/architecture/backend-ui-coverage.js.map +1 -0
  94. package/dist/checks/architecture/component-architecture.d.ts +26 -0
  95. package/dist/checks/architecture/component-architecture.d.ts.map +1 -0
  96. package/dist/checks/architecture/component-architecture.js +513 -0
  97. package/dist/checks/architecture/component-architecture.js.map +1 -0
  98. package/dist/checks/architecture/component-consolidation-opportunities.d.ts +28 -0
  99. package/dist/checks/architecture/component-consolidation-opportunities.d.ts.map +1 -0
  100. package/dist/checks/architecture/component-consolidation-opportunities.js +338 -0
  101. package/dist/checks/architecture/component-consolidation-opportunities.js.map +1 -0
  102. package/dist/checks/architecture/orphaned-pages-detection.d.ts +34 -0
  103. package/dist/checks/architecture/orphaned-pages-detection.d.ts.map +1 -0
  104. package/dist/checks/architecture/orphaned-pages-detection.js +464 -0
  105. package/dist/checks/architecture/orphaned-pages-detection.js.map +1 -0
  106. package/dist/checks/architecture/primitive-component-enforcement.d.ts +25 -0
  107. package/dist/checks/architecture/primitive-component-enforcement.d.ts.map +1 -0
  108. package/dist/checks/architecture/primitive-component-enforcement.js +305 -0
  109. package/dist/checks/architecture/primitive-component-enforcement.js.map +1 -0
  110. package/dist/checks/architecture/shared-component-enforcement.d.ts +34 -0
  111. package/dist/checks/architecture/shared-component-enforcement.d.ts.map +1 -0
  112. package/dist/checks/architecture/shared-component-enforcement.js +725 -0
  113. package/dist/checks/architecture/shared-component-enforcement.js.map +1 -0
  114. package/dist/checks/async-cleanup-validation.d.ts +20 -0
  115. package/dist/checks/async-cleanup-validation.d.ts.map +1 -0
  116. package/dist/checks/async-cleanup-validation.js +179 -0
  117. package/dist/checks/async-cleanup-validation.js.map +1 -0
  118. package/dist/checks/auth/auth-page-consistency.d.ts +25 -0
  119. package/dist/checks/auth/auth-page-consistency.d.ts.map +1 -0
  120. package/dist/checks/auth/auth-page-consistency.js +581 -0
  121. package/dist/checks/auth/auth-page-consistency.js.map +1 -0
  122. package/dist/checks/auth/authenticated-redirect.d.ts +55 -0
  123. package/dist/checks/auth/authenticated-redirect.d.ts.map +1 -0
  124. package/dist/checks/auth/authenticated-redirect.js +389 -0
  125. package/dist/checks/auth/authenticated-redirect.js.map +1 -0
  126. package/dist/checks/auth/role-validation.d.ts +31 -0
  127. package/dist/checks/auth/role-validation.d.ts.map +1 -0
  128. package/dist/checks/auth/role-validation.js +252 -0
  129. package/dist/checks/auth/role-validation.js.map +1 -0
  130. package/dist/checks/auth/session-integrity-validation.d.ts +58 -0
  131. package/dist/checks/auth/session-integrity-validation.d.ts.map +1 -0
  132. package/dist/checks/auth/session-integrity-validation.js +402 -0
  133. package/dist/checks/auth/session-integrity-validation.js.map +1 -0
  134. package/dist/checks/auth/session-security.d.ts +67 -0
  135. package/dist/checks/auth/session-security.d.ts.map +1 -0
  136. package/dist/checks/auth/session-security.js +399 -0
  137. package/dist/checks/auth/session-security.js.map +1 -0
  138. package/dist/checks/auth/session-update-safety.d.ts +96 -0
  139. package/dist/checks/auth/session-update-safety.d.ts.map +1 -0
  140. package/dist/checks/auth/session-update-safety.js +697 -0
  141. package/dist/checks/auth/session-update-safety.js.map +1 -0
  142. package/dist/checks/auth/store-access-delegation.d.ts +33 -0
  143. package/dist/checks/auth/store-access-delegation.d.ts.map +1 -0
  144. package/dist/checks/auth/store-access-delegation.js +344 -0
  145. package/dist/checks/auth/store-access-delegation.js.map +1 -0
  146. package/dist/checks/business/business-invariants.d.ts +20 -0
  147. package/dist/checks/business/business-invariants.d.ts.map +1 -0
  148. package/dist/checks/business/business-invariants.js +174 -0
  149. package/dist/checks/business/business-invariants.js.map +1 -0
  150. package/dist/checks/business/currency-precision.d.ts +21 -0
  151. package/dist/checks/business/currency-precision.d.ts.map +1 -0
  152. package/dist/checks/business/currency-precision.js +433 -0
  153. package/dist/checks/business/currency-precision.js.map +1 -0
  154. package/dist/checks/business/idempotency-key-validation.d.ts +27 -0
  155. package/dist/checks/business/idempotency-key-validation.d.ts.map +1 -0
  156. package/dist/checks/business/idempotency-key-validation.js +275 -0
  157. package/dist/checks/business/idempotency-key-validation.js.map +1 -0
  158. package/dist/checks/business/image-metadata-injection.d.ts +19 -0
  159. package/dist/checks/business/image-metadata-injection.d.ts.map +1 -0
  160. package/dist/checks/business/image-metadata-injection.js +367 -0
  161. package/dist/checks/business/image-metadata-injection.js.map +1 -0
  162. package/dist/checks/business/image-upload-optimization.d.ts +20 -0
  163. package/dist/checks/business/image-upload-optimization.d.ts.map +1 -0
  164. package/dist/checks/business/image-upload-optimization.js +271 -0
  165. package/dist/checks/business/image-upload-optimization.js.map +1 -0
  166. package/dist/checks/business/inventory-atomicity-validation.d.ts +19 -0
  167. package/dist/checks/business/inventory-atomicity-validation.d.ts.map +1 -0
  168. package/dist/checks/business/inventory-atomicity-validation.js +257 -0
  169. package/dist/checks/business/inventory-atomicity-validation.js.map +1 -0
  170. package/dist/checks/business/order-state-machine-validation.d.ts +19 -0
  171. package/dist/checks/business/order-state-machine-validation.d.ts.map +1 -0
  172. package/dist/checks/business/order-state-machine-validation.js +289 -0
  173. package/dist/checks/business/order-state-machine-validation.js.map +1 -0
  174. package/dist/checks/business/price-calculation-validation.d.ts +20 -0
  175. package/dist/checks/business/price-calculation-validation.d.ts.map +1 -0
  176. package/dist/checks/business/price-calculation-validation.js +247 -0
  177. package/dist/checks/business/price-calculation-validation.js.map +1 -0
  178. package/dist/checks/business/price-display-validation.d.ts +22 -0
  179. package/dist/checks/business/price-display-validation.d.ts.map +1 -0
  180. package/dist/checks/business/price-display-validation.js +152 -0
  181. package/dist/checks/business/price-display-validation.js.map +1 -0
  182. package/dist/checks/business/resilient-recognition-validation.d.ts +26 -0
  183. package/dist/checks/business/resilient-recognition-validation.d.ts.map +1 -0
  184. package/dist/checks/business/resilient-recognition-validation.js +230 -0
  185. package/dist/checks/business/resilient-recognition-validation.js.map +1 -0
  186. package/dist/checks/business/store-approval-listing-filter.d.ts +19 -0
  187. package/dist/checks/business/store-approval-listing-filter.d.ts.map +1 -0
  188. package/dist/checks/business/store-approval-listing-filter.js +176 -0
  189. package/dist/checks/business/store-approval-listing-filter.js.map +1 -0
  190. package/dist/checks/business/timezone-handling.d.ts +28 -0
  191. package/dist/checks/business/timezone-handling.d.ts.map +1 -0
  192. package/dist/checks/business/timezone-handling.js +294 -0
  193. package/dist/checks/business/timezone-handling.js.map +1 -0
  194. package/dist/checks/code-hygiene/any-type-detection.d.ts +30 -0
  195. package/dist/checks/code-hygiene/any-type-detection.d.ts.map +1 -0
  196. package/dist/checks/code-hygiene/any-type-detection.js +210 -0
  197. package/dist/checks/code-hygiene/any-type-detection.js.map +1 -0
  198. package/dist/checks/code-hygiene/api-error-handling.d.ts +29 -0
  199. package/dist/checks/code-hygiene/api-error-handling.d.ts.map +1 -0
  200. package/dist/checks/code-hygiene/api-error-handling.js +285 -0
  201. package/dist/checks/code-hygiene/api-error-handling.js.map +1 -0
  202. package/dist/checks/code-hygiene/broken-template-literals.d.ts +24 -0
  203. package/dist/checks/code-hygiene/broken-template-literals.d.ts.map +1 -0
  204. package/dist/checks/code-hygiene/broken-template-literals.js +209 -0
  205. package/dist/checks/code-hygiene/broken-template-literals.js.map +1 -0
  206. package/dist/checks/code-hygiene/comment-hygiene.d.ts +26 -0
  207. package/dist/checks/code-hygiene/comment-hygiene.d.ts.map +1 -0
  208. package/dist/checks/code-hygiene/comment-hygiene.js +421 -0
  209. package/dist/checks/code-hygiene/comment-hygiene.js.map +1 -0
  210. package/dist/checks/code-hygiene/console-chars-sync.d.ts +26 -0
  211. package/dist/checks/code-hygiene/console-chars-sync.d.ts.map +1 -0
  212. package/dist/checks/code-hygiene/console-chars-sync.js +417 -0
  213. package/dist/checks/code-hygiene/console-chars-sync.js.map +1 -0
  214. package/dist/checks/code-hygiene/console-log-detection.d.ts +27 -0
  215. package/dist/checks/code-hygiene/console-log-detection.d.ts.map +1 -0
  216. package/dist/checks/code-hygiene/console-log-detection.js +204 -0
  217. package/dist/checks/code-hygiene/console-log-detection.js.map +1 -0
  218. package/dist/checks/code-hygiene/dead-code-detection.d.ts +28 -0
  219. package/dist/checks/code-hygiene/dead-code-detection.d.ts.map +1 -0
  220. package/dist/checks/code-hygiene/dead-code-detection.js +217 -0
  221. package/dist/checks/code-hygiene/dead-code-detection.js.map +1 -0
  222. package/dist/checks/code-hygiene/decorative-separators.d.ts +32 -0
  223. package/dist/checks/code-hygiene/decorative-separators.d.ts.map +1 -0
  224. package/dist/checks/code-hygiene/decorative-separators.js +251 -0
  225. package/dist/checks/code-hygiene/decorative-separators.js.map +1 -0
  226. package/dist/checks/code-hygiene/empty-catch-detection.d.ts +25 -0
  227. package/dist/checks/code-hygiene/empty-catch-detection.d.ts.map +1 -0
  228. package/dist/checks/code-hygiene/empty-catch-detection.js +184 -0
  229. package/dist/checks/code-hygiene/empty-catch-detection.js.map +1 -0
  230. package/dist/checks/code-hygiene/fix-hardcoded-emoji.d.ts +18 -0
  231. package/dist/checks/code-hygiene/fix-hardcoded-emoji.d.ts.map +1 -0
  232. package/dist/checks/code-hygiene/fix-hardcoded-emoji.js +332 -0
  233. package/dist/checks/code-hygiene/fix-hardcoded-emoji.js.map +1 -0
  234. package/dist/checks/code-hygiene/log-level-misuse.d.ts +25 -0
  235. package/dist/checks/code-hygiene/log-level-misuse.d.ts.map +1 -0
  236. package/dist/checks/code-hygiene/log-level-misuse.js +383 -0
  237. package/dist/checks/code-hygiene/log-level-misuse.js.map +1 -0
  238. package/dist/checks/code-hygiene/missing-logger-import.d.ts +16 -0
  239. package/dist/checks/code-hygiene/missing-logger-import.d.ts.map +1 -0
  240. package/dist/checks/code-hygiene/missing-logger-import.js +154 -0
  241. package/dist/checks/code-hygiene/missing-logger-import.js.map +1 -0
  242. package/dist/checks/code-hygiene/root-file-hygiene.d.ts +31 -0
  243. package/dist/checks/code-hygiene/root-file-hygiene.d.ts.map +1 -0
  244. package/dist/checks/code-hygiene/root-file-hygiene.js +285 -0
  245. package/dist/checks/code-hygiene/root-file-hygiene.js.map +1 -0
  246. package/dist/checks/code-hygiene/todo-tracking.d.ts +25 -0
  247. package/dist/checks/code-hygiene/todo-tracking.d.ts.map +1 -0
  248. package/dist/checks/code-hygiene/todo-tracking.js +205 -0
  249. package/dist/checks/code-hygiene/todo-tracking.js.map +1 -0
  250. package/dist/checks/code-hygiene/unicode-console-compatibility.d.ts +21 -0
  251. package/dist/checks/code-hygiene/unicode-console-compatibility.d.ts.map +1 -0
  252. package/dist/checks/code-hygiene/unicode-console-compatibility.js +229 -0
  253. package/dist/checks/code-hygiene/unicode-console-compatibility.js.map +1 -0
  254. package/dist/checks/code-quality/duplicate-logic-detection.d.ts +39 -0
  255. package/dist/checks/code-quality/duplicate-logic-detection.d.ts.map +1 -0
  256. package/dist/checks/code-quality/duplicate-logic-detection.js +270 -0
  257. package/dist/checks/code-quality/duplicate-logic-detection.js.map +1 -0
  258. package/dist/checks/code-quality/feature-flag-hygiene.d.ts +26 -0
  259. package/dist/checks/code-quality/feature-flag-hygiene.d.ts.map +1 -0
  260. package/dist/checks/code-quality/feature-flag-hygiene.js +353 -0
  261. package/dist/checks/code-quality/feature-flag-hygiene.js.map +1 -0
  262. package/dist/checks/code-quality/grading-config-usage.d.ts +29 -0
  263. package/dist/checks/code-quality/grading-config-usage.d.ts.map +1 -0
  264. package/dist/checks/code-quality/grading-config-usage.js +210 -0
  265. package/dist/checks/code-quality/grading-config-usage.js.map +1 -0
  266. package/dist/checks/code-quality/legacy-data-pattern-detection.d.ts +36 -0
  267. package/dist/checks/code-quality/legacy-data-pattern-detection.d.ts.map +1 -0
  268. package/dist/checks/code-quality/legacy-data-pattern-detection.js +450 -0
  269. package/dist/checks/code-quality/legacy-data-pattern-detection.js.map +1 -0
  270. package/dist/checks/code-quality/magic-number-detection.d.ts +30 -0
  271. package/dist/checks/code-quality/magic-number-detection.d.ts.map +1 -0
  272. package/dist/checks/code-quality/magic-number-detection.js +405 -0
  273. package/dist/checks/code-quality/magic-number-detection.js.map +1 -0
  274. package/dist/checks/code-quality/mock-function-detection.d.ts +32 -0
  275. package/dist/checks/code-quality/mock-function-detection.d.ts.map +1 -0
  276. package/dist/checks/code-quality/mock-function-detection.js +244 -0
  277. package/dist/checks/code-quality/mock-function-detection.js.map +1 -0
  278. package/dist/checks/code-quality/no-console-production.d.ts +26 -0
  279. package/dist/checks/code-quality/no-console-production.d.ts.map +1 -0
  280. package/dist/checks/code-quality/no-console-production.js +272 -0
  281. package/dist/checks/code-quality/no-console-production.js.map +1 -0
  282. package/dist/checks/code-quality/shared-utility-gaps.d.ts +27 -0
  283. package/dist/checks/code-quality/shared-utility-gaps.d.ts.map +1 -0
  284. package/dist/checks/code-quality/shared-utility-gaps.js +413 -0
  285. package/dist/checks/code-quality/shared-utility-gaps.js.map +1 -0
  286. package/dist/checks/code-quality/stub-script-detection.d.ts +32 -0
  287. package/dist/checks/code-quality/stub-script-detection.d.ts.map +1 -0
  288. package/dist/checks/code-quality/stub-script-detection.js +211 -0
  289. package/dist/checks/code-quality/stub-script-detection.js.map +1 -0
  290. package/dist/checks/code-quality/typescript-type-safety.d.ts +31 -0
  291. package/dist/checks/code-quality/typescript-type-safety.d.ts.map +1 -0
  292. package/dist/checks/code-quality/typescript-type-safety.js +228 -0
  293. package/dist/checks/code-quality/typescript-type-safety.js.map +1 -0
  294. package/dist/checks/component-imports.d.ts +15 -0
  295. package/dist/checks/component-imports.d.ts.map +1 -0
  296. package/dist/checks/component-imports.js +227 -0
  297. package/dist/checks/component-imports.js.map +1 -0
  298. package/dist/checks/config/env-completeness.d.ts +20 -0
  299. package/dist/checks/config/env-completeness.d.ts.map +1 -0
  300. package/dist/checks/config/env-completeness.js +193 -0
  301. package/dist/checks/config/env-completeness.js.map +1 -0
  302. package/dist/checks/coverage-gap-analysis.d.ts +21 -0
  303. package/dist/checks/coverage-gap-analysis.d.ts.map +1 -0
  304. package/dist/checks/coverage-gap-analysis.js +779 -0
  305. package/dist/checks/coverage-gap-analysis.js.map +1 -0
  306. package/dist/checks/css/dead-css-detection.d.ts +14 -0
  307. package/dist/checks/css/dead-css-detection.d.ts.map +1 -0
  308. package/dist/checks/css/dead-css-detection.js +222 -0
  309. package/dist/checks/css/dead-css-detection.js.map +1 -0
  310. package/dist/checks/css/sticky-header-validation.d.ts +19 -0
  311. package/dist/checks/css/sticky-header-validation.d.ts.map +1 -0
  312. package/dist/checks/css/sticky-header-validation.js +256 -0
  313. package/dist/checks/css/sticky-header-validation.js.map +1 -0
  314. package/dist/checks/data-integrity/cart-data-integrity.d.ts +19 -0
  315. package/dist/checks/data-integrity/cart-data-integrity.d.ts.map +1 -0
  316. package/dist/checks/data-integrity/cart-data-integrity.js +235 -0
  317. package/dist/checks/data-integrity/cart-data-integrity.js.map +1 -0
  318. package/dist/checks/data-integrity/enum-special-chars-validation.d.ts +26 -0
  319. package/dist/checks/data-integrity/enum-special-chars-validation.d.ts.map +1 -0
  320. package/dist/checks/data-integrity/enum-special-chars-validation.js +94 -0
  321. package/dist/checks/data-integrity/enum-special-chars-validation.js.map +1 -0
  322. package/dist/checks/data-integrity/notification-template-alignment.d.ts +21 -0
  323. package/dist/checks/data-integrity/notification-template-alignment.d.ts.map +1 -0
  324. package/dist/checks/data-integrity/notification-template-alignment.js +372 -0
  325. package/dist/checks/data-integrity/notification-template-alignment.js.map +1 -0
  326. package/dist/checks/data-integrity/product-data-flow-validation.d.ts +21 -0
  327. package/dist/checks/data-integrity/product-data-flow-validation.d.ts.map +1 -0
  328. package/dist/checks/data-integrity/product-data-flow-validation.js +569 -0
  329. package/dist/checks/data-integrity/product-data-flow-validation.js.map +1 -0
  330. package/dist/checks/data-integrity/store-data-integrity.d.ts +18 -0
  331. package/dist/checks/data-integrity/store-data-integrity.d.ts.map +1 -0
  332. package/dist/checks/data-integrity/store-data-integrity.js +398 -0
  333. package/dist/checks/data-integrity/store-data-integrity.js.map +1 -0
  334. package/dist/checks/data-integrity/unwired-functionality.d.ts +22 -0
  335. package/dist/checks/data-integrity/unwired-functionality.d.ts.map +1 -0
  336. package/dist/checks/data-integrity/unwired-functionality.js +550 -0
  337. package/dist/checks/data-integrity/unwired-functionality.js.map +1 -0
  338. package/dist/checks/database/block-db-push.d.ts +29 -0
  339. package/dist/checks/database/block-db-push.d.ts.map +1 -0
  340. package/dist/checks/database/block-db-push.js +138 -0
  341. package/dist/checks/database/block-db-push.js.map +1 -0
  342. package/dist/checks/database/grade-integrity.d.ts +13 -0
  343. package/dist/checks/database/grade-integrity.d.ts.map +1 -0
  344. package/dist/checks/database/grade-integrity.js +131 -0
  345. package/dist/checks/database/grade-integrity.js.map +1 -0
  346. package/dist/checks/database/migration-integrity.d.ts +26 -0
  347. package/dist/checks/database/migration-integrity.d.ts.map +1 -0
  348. package/dist/checks/database/migration-integrity.js +239 -0
  349. package/dist/checks/database/migration-integrity.js.map +1 -0
  350. package/dist/checks/database/migration-reversibility.d.ts +25 -0
  351. package/dist/checks/database/migration-reversibility.d.ts.map +1 -0
  352. package/dist/checks/database/migration-reversibility.js +277 -0
  353. package/dist/checks/database/migration-reversibility.js.map +1 -0
  354. package/dist/checks/database/migration-safety.d.ts +27 -0
  355. package/dist/checks/database/migration-safety.d.ts.map +1 -0
  356. package/dist/checks/database/migration-safety.js +243 -0
  357. package/dist/checks/database/migration-safety.js.map +1 -0
  358. package/dist/checks/database/prisma-client-db-sync.d.ts +24 -0
  359. package/dist/checks/database/prisma-client-db-sync.d.ts.map +1 -0
  360. package/dist/checks/database/prisma-client-db-sync.js +226 -0
  361. package/dist/checks/database/prisma-client-db-sync.js.map +1 -0
  362. package/dist/checks/database/prisma-drift-prevention.d.ts +29 -0
  363. package/dist/checks/database/prisma-drift-prevention.d.ts.map +1 -0
  364. package/dist/checks/database/prisma-drift-prevention.js +614 -0
  365. package/dist/checks/database/prisma-drift-prevention.js.map +1 -0
  366. package/dist/checks/database/prisma-overfetch-detection.d.ts +26 -0
  367. package/dist/checks/database/prisma-overfetch-detection.d.ts.map +1 -0
  368. package/dist/checks/database/prisma-overfetch-detection.js +666 -0
  369. package/dist/checks/database/prisma-overfetch-detection.js.map +1 -0
  370. package/dist/checks/database/prisma-precommit-guard.d.ts +25 -0
  371. package/dist/checks/database/prisma-precommit-guard.d.ts.map +1 -0
  372. package/dist/checks/database/prisma-precommit-guard.js +188 -0
  373. package/dist/checks/database/prisma-precommit-guard.js.map +1 -0
  374. package/dist/checks/database/prisma-schema-syntax.d.ts +17 -0
  375. package/dist/checks/database/prisma-schema-syntax.d.ts.map +1 -0
  376. package/dist/checks/database/prisma-schema-syntax.js +50 -0
  377. package/dist/checks/database/prisma-schema-syntax.js.map +1 -0
  378. package/dist/checks/database/prod-db-guardrail.d.ts +20 -0
  379. package/dist/checks/database/prod-db-guardrail.d.ts.map +1 -0
  380. package/dist/checks/database/prod-db-guardrail.js +184 -0
  381. package/dist/checks/database/prod-db-guardrail.js.map +1 -0
  382. package/dist/checks/database/schema-best-practices.d.ts +24 -0
  383. package/dist/checks/database/schema-best-practices.d.ts.map +1 -0
  384. package/dist/checks/database/schema-best-practices.js +393 -0
  385. package/dist/checks/database/schema-best-practices.js.map +1 -0
  386. package/dist/checks/database/schema-migration-column-sync.d.ts +33 -0
  387. package/dist/checks/database/schema-migration-column-sync.d.ts.map +1 -0
  388. package/dist/checks/database/schema-migration-column-sync.js +561 -0
  389. package/dist/checks/database/schema-migration-column-sync.js.map +1 -0
  390. package/dist/checks/database/seed-coverage-validation.d.ts +29 -0
  391. package/dist/checks/database/seed-coverage-validation.d.ts.map +1 -0
  392. package/dist/checks/database/seed-coverage-validation.js +595 -0
  393. package/dist/checks/database/seed-coverage-validation.js.map +1 -0
  394. package/dist/checks/database/soft-delete-consistency.d.ts +24 -0
  395. package/dist/checks/database/soft-delete-consistency.d.ts.map +1 -0
  396. package/dist/checks/database/soft-delete-consistency.js +273 -0
  397. package/dist/checks/database/soft-delete-consistency.js.map +1 -0
  398. package/dist/checks/database/tcg-seed-validation.d.ts +29 -0
  399. package/dist/checks/database/tcg-seed-validation.d.ts.map +1 -0
  400. package/dist/checks/database/tcg-seed-validation.js +281 -0
  401. package/dist/checks/database/tcg-seed-validation.js.map +1 -0
  402. package/dist/checks/database/transaction-integrity.d.ts +25 -0
  403. package/dist/checks/database/transaction-integrity.d.ts.map +1 -0
  404. package/dist/checks/database/transaction-integrity.js +275 -0
  405. package/dist/checks/database/transaction-integrity.js.map +1 -0
  406. package/dist/checks/database/unused-schema-detection.d.ts +28 -0
  407. package/dist/checks/database/unused-schema-detection.d.ts.map +1 -0
  408. package/dist/checks/database/unused-schema-detection.js +624 -0
  409. package/dist/checks/database/unused-schema-detection.js.map +1 -0
  410. package/dist/checks/dependencies/deprecated-packages.d.ts +17 -0
  411. package/dist/checks/dependencies/deprecated-packages.d.ts.map +1 -0
  412. package/dist/checks/dependencies/deprecated-packages.js +220 -0
  413. package/dist/checks/dependencies/deprecated-packages.js.map +1 -0
  414. package/dist/checks/dependencies/weekly-stable-updates.d.ts +27 -0
  415. package/dist/checks/dependencies/weekly-stable-updates.d.ts.map +1 -0
  416. package/dist/checks/dependencies/weekly-stable-updates.js +490 -0
  417. package/dist/checks/dependencies/weekly-stable-updates.js.map +1 -0
  418. package/dist/checks/deployment/esm-import-extensions.d.ts +23 -0
  419. package/dist/checks/deployment/esm-import-extensions.d.ts.map +1 -0
  420. package/dist/checks/deployment/esm-import-extensions.js +183 -0
  421. package/dist/checks/deployment/esm-import-extensions.js.map +1 -0
  422. package/dist/checks/deployment/pre-production-checklist-quick.d.ts +15 -0
  423. package/dist/checks/deployment/pre-production-checklist-quick.d.ts.map +1 -0
  424. package/dist/checks/deployment/pre-production-checklist-quick.js +140 -0
  425. package/dist/checks/deployment/pre-production-checklist-quick.js.map +1 -0
  426. package/dist/checks/deployment/pre-production-checklist.d.ts +18 -0
  427. package/dist/checks/deployment/pre-production-checklist.d.ts.map +1 -0
  428. package/dist/checks/deployment/pre-production-checklist.js +219 -0
  429. package/dist/checks/deployment/pre-production-checklist.js.map +1 -0
  430. package/dist/checks/deployment/production-config.d.ts +36 -0
  431. package/dist/checks/deployment/production-config.d.ts.map +1 -0
  432. package/dist/checks/deployment/production-config.js +424 -0
  433. package/dist/checks/deployment/production-config.js.map +1 -0
  434. package/dist/checks/deployment/production-env-validation.d.ts +18 -0
  435. package/dist/checks/deployment/production-env-validation.d.ts.map +1 -0
  436. package/dist/checks/deployment/production-env-validation.js +162 -0
  437. package/dist/checks/deployment/production-env-validation.js.map +1 -0
  438. package/dist/checks/deployment/rollback-compatibility.d.ts +27 -0
  439. package/dist/checks/deployment/rollback-compatibility.d.ts.map +1 -0
  440. package/dist/checks/deployment/rollback-compatibility.js +327 -0
  441. package/dist/checks/deployment/rollback-compatibility.js.map +1 -0
  442. package/dist/checks/deprecated-api-usage.d.ts +86 -0
  443. package/dist/checks/deprecated-api-usage.d.ts.map +1 -0
  444. package/dist/checks/deprecated-api-usage.js +382 -0
  445. package/dist/checks/deprecated-api-usage.js.map +1 -0
  446. package/dist/checks/drift-prevention/api-contract-consistency.d.ts +18 -0
  447. package/dist/checks/drift-prevention/api-contract-consistency.d.ts.map +1 -0
  448. package/dist/checks/drift-prevention/api-contract-consistency.js +279 -0
  449. package/dist/checks/drift-prevention/api-contract-consistency.js.map +1 -0
  450. package/dist/checks/drift-prevention/breaking-change-detection.d.ts +28 -0
  451. package/dist/checks/drift-prevention/breaking-change-detection.d.ts.map +1 -0
  452. package/dist/checks/drift-prevention/breaking-change-detection.js +364 -0
  453. package/dist/checks/drift-prevention/breaking-change-detection.js.map +1 -0
  454. package/dist/checks/drift-prevention/component-prop-consistency.d.ts +18 -0
  455. package/dist/checks/drift-prevention/component-prop-consistency.d.ts.map +1 -0
  456. package/dist/checks/drift-prevention/component-prop-consistency.js +289 -0
  457. package/dist/checks/drift-prevention/component-prop-consistency.js.map +1 -0
  458. package/dist/checks/drift-prevention/database-query-patterns.d.ts +19 -0
  459. package/dist/checks/drift-prevention/database-query-patterns.d.ts.map +1 -0
  460. package/dist/checks/drift-prevention/database-query-patterns.js +340 -0
  461. package/dist/checks/drift-prevention/database-query-patterns.js.map +1 -0
  462. package/dist/checks/drift-prevention/design-system-consistency.d.ts +18 -0
  463. package/dist/checks/drift-prevention/design-system-consistency.d.ts.map +1 -0
  464. package/dist/checks/drift-prevention/design-system-consistency.js +419 -0
  465. package/dist/checks/drift-prevention/design-system-consistency.js.map +1 -0
  466. package/dist/checks/drift-prevention/empty-state-consistency.d.ts +17 -0
  467. package/dist/checks/drift-prevention/empty-state-consistency.d.ts.map +1 -0
  468. package/dist/checks/drift-prevention/empty-state-consistency.js +257 -0
  469. package/dist/checks/drift-prevention/empty-state-consistency.js.map +1 -0
  470. package/dist/checks/drift-prevention/performance-regression-detection.d.ts +18 -0
  471. package/dist/checks/drift-prevention/performance-regression-detection.d.ts.map +1 -0
  472. package/dist/checks/drift-prevention/performance-regression-detection.js +444 -0
  473. package/dist/checks/drift-prevention/performance-regression-detection.js.map +1 -0
  474. package/dist/checks/drift-prevention/size-convention-consistency.d.ts +40 -0
  475. package/dist/checks/drift-prevention/size-convention-consistency.d.ts.map +1 -0
  476. package/dist/checks/drift-prevention/size-convention-consistency.js +219 -0
  477. package/dist/checks/drift-prevention/size-convention-consistency.js.map +1 -0
  478. package/dist/checks/drift-prevention/state-management-patterns.d.ts +18 -0
  479. package/dist/checks/drift-prevention/state-management-patterns.d.ts.map +1 -0
  480. package/dist/checks/drift-prevention/state-management-patterns.js +240 -0
  481. package/dist/checks/drift-prevention/state-management-patterns.js.map +1 -0
  482. package/dist/checks/e2e/e2e-action-outcome-validator.d.ts +21 -0
  483. package/dist/checks/e2e/e2e-action-outcome-validator.d.ts.map +1 -0
  484. package/dist/checks/e2e/e2e-action-outcome-validator.js +292 -0
  485. package/dist/checks/e2e/e2e-action-outcome-validator.js.map +1 -0
  486. package/dist/checks/e2e/e2e-interaction-coverage-scan.d.ts +21 -0
  487. package/dist/checks/e2e/e2e-interaction-coverage-scan.d.ts.map +1 -0
  488. package/dist/checks/e2e/e2e-interaction-coverage-scan.js +1688 -0
  489. package/dist/checks/e2e/e2e-interaction-coverage-scan.js.map +1 -0
  490. package/dist/checks/e2e/e2e-interaction-regression.d.ts +19 -0
  491. package/dist/checks/e2e/e2e-interaction-regression.d.ts.map +1 -0
  492. package/dist/checks/e2e/e2e-interaction-regression.js +1039 -0
  493. package/dist/checks/e2e/e2e-interaction-regression.js.map +1 -0
  494. package/dist/checks/e2e/e2e-outcome-validation.d.ts +33 -0
  495. package/dist/checks/e2e/e2e-outcome-validation.d.ts.map +1 -0
  496. package/dist/checks/e2e/e2e-outcome-validation.js +610 -0
  497. package/dist/checks/e2e/e2e-outcome-validation.js.map +1 -0
  498. package/dist/checks/e2e/e2e-performance-baseline.d.ts +14 -0
  499. package/dist/checks/e2e/e2e-performance-baseline.d.ts.map +1 -0
  500. package/dist/checks/e2e/e2e-performance-baseline.js +289 -0
  501. package/dist/checks/e2e/e2e-performance-baseline.js.map +1 -0
  502. package/dist/checks/e2e/e2e-performance-patterns.d.ts +19 -0
  503. package/dist/checks/e2e/e2e-performance-patterns.d.ts.map +1 -0
  504. package/dist/checks/e2e/e2e-performance-patterns.js +464 -0
  505. package/dist/checks/e2e/e2e-performance-patterns.js.map +1 -0
  506. package/dist/checks/e2e/e2e-performance-regression.d.ts +18 -0
  507. package/dist/checks/e2e/e2e-performance-regression.d.ts.map +1 -0
  508. package/dist/checks/e2e/e2e-performance-regression.js +230 -0
  509. package/dist/checks/e2e/e2e-performance-regression.js.map +1 -0
  510. package/dist/checks/e2e/e2e-resource-monitoring.d.ts +17 -0
  511. package/dist/checks/e2e/e2e-resource-monitoring.d.ts.map +1 -0
  512. package/dist/checks/e2e/e2e-resource-monitoring.js +368 -0
  513. package/dist/checks/e2e/e2e-resource-monitoring.js.map +1 -0
  514. package/dist/checks/e2e/e2e-test-redundancy-scan.d.ts +27 -0
  515. package/dist/checks/e2e/e2e-test-redundancy-scan.d.ts.map +1 -0
  516. package/dist/checks/e2e/e2e-test-redundancy-scan.js +477 -0
  517. package/dist/checks/e2e/e2e-test-redundancy-scan.js.map +1 -0
  518. package/dist/checks/e2e/playwright-config-validator.d.ts +25 -0
  519. package/dist/checks/e2e/playwright-config-validator.d.ts.map +1 -0
  520. package/dist/checks/e2e/playwright-config-validator.js +558 -0
  521. package/dist/checks/e2e/playwright-config-validator.js.map +1 -0
  522. package/dist/checks/environment/env-duplicates.d.ts +16 -0
  523. package/dist/checks/environment/env-duplicates.d.ts.map +1 -0
  524. package/dist/checks/environment/env-duplicates.js +166 -0
  525. package/dist/checks/environment/env-duplicates.js.map +1 -0
  526. package/dist/checks/event-listener-cleanup.d.ts +18 -0
  527. package/dist/checks/event-listener-cleanup.d.ts.map +1 -0
  528. package/dist/checks/event-listener-cleanup.js +187 -0
  529. package/dist/checks/event-listener-cleanup.js.map +1 -0
  530. package/dist/checks/file-naming-conventions.d.ts +21 -0
  531. package/dist/checks/file-naming-conventions.d.ts.map +1 -0
  532. package/dist/checks/file-naming-conventions.js +1258 -0
  533. package/dist/checks/file-naming-conventions.js.map +1 -0
  534. package/dist/checks/framework/framework-compatibility.d.ts +35 -0
  535. package/dist/checks/framework/framework-compatibility.d.ts.map +1 -0
  536. package/dist/checks/framework/framework-compatibility.js +159 -0
  537. package/dist/checks/framework/framework-compatibility.js.map +1 -0
  538. package/dist/checks/framework/turbopack-enforcement.d.ts +22 -0
  539. package/dist/checks/framework/turbopack-enforcement.d.ts.map +1 -0
  540. package/dist/checks/framework/turbopack-enforcement.js +171 -0
  541. package/dist/checks/framework/turbopack-enforcement.js.map +1 -0
  542. package/dist/checks/governance/check-ui-uniformity.d.ts +18 -0
  543. package/dist/checks/governance/check-ui-uniformity.d.ts.map +1 -0
  544. package/dist/checks/governance/check-ui-uniformity.js +127 -0
  545. package/dist/checks/governance/check-ui-uniformity.js.map +1 -0
  546. package/dist/checks/governance/codeowners-coverage.d.ts +26 -0
  547. package/dist/checks/governance/codeowners-coverage.d.ts.map +1 -0
  548. package/dist/checks/governance/codeowners-coverage.js +290 -0
  549. package/dist/checks/governance/codeowners-coverage.js.map +1 -0
  550. package/dist/checks/governance/naming-conventions.d.ts +7 -0
  551. package/dist/checks/governance/naming-conventions.d.ts.map +1 -0
  552. package/dist/checks/governance/naming-conventions.js +115 -0
  553. package/dist/checks/governance/naming-conventions.js.map +1 -0
  554. package/dist/checks/governance/seller-store-naming-consistency.d.ts +32 -0
  555. package/dist/checks/governance/seller-store-naming-consistency.d.ts.map +1 -0
  556. package/dist/checks/governance/seller-store-naming-consistency.js +241 -0
  557. package/dist/checks/governance/seller-store-naming-consistency.js.map +1 -0
  558. package/dist/checks/governance/store-seller-route-names.d.ts +17 -0
  559. package/dist/checks/governance/store-seller-route-names.d.ts.map +1 -0
  560. package/dist/checks/governance/store-seller-route-names.js +170 -0
  561. package/dist/checks/governance/store-seller-route-names.js.map +1 -0
  562. package/dist/checks/grading-config-usage.d.ts +23 -0
  563. package/dist/checks/grading-config-usage.d.ts.map +1 -0
  564. package/dist/checks/grading-config-usage.js +197 -0
  565. package/dist/checks/grading-config-usage.js.map +1 -0
  566. package/dist/checks/help-center-features-validation.d.ts +21 -0
  567. package/dist/checks/help-center-features-validation.d.ts.map +1 -0
  568. package/dist/checks/help-center-features-validation.js +529 -0
  569. package/dist/checks/help-center-features-validation.js.map +1 -0
  570. package/dist/checks/help-center-validation.d.ts +21 -0
  571. package/dist/checks/help-center-validation.d.ts.map +1 -0
  572. package/dist/checks/help-center-validation.js +325 -0
  573. package/dist/checks/help-center-validation.js.map +1 -0
  574. package/dist/checks/image/card-edge-protection.d.ts +33 -0
  575. package/dist/checks/image/card-edge-protection.d.ts.map +1 -0
  576. package/dist/checks/image/card-edge-protection.js +230 -0
  577. package/dist/checks/image/card-edge-protection.js.map +1 -0
  578. package/dist/checks/image/card-orientation-validation.d.ts +34 -0
  579. package/dist/checks/image/card-orientation-validation.d.ts.map +1 -0
  580. package/dist/checks/image/card-orientation-validation.js +519 -0
  581. package/dist/checks/image/card-orientation-validation.js.map +1 -0
  582. package/dist/checks/integrations/integrations-consolidated.d.ts +76 -0
  583. package/dist/checks/integrations/integrations-consolidated.d.ts.map +1 -0
  584. package/dist/checks/integrations/integrations-consolidated.js +493 -0
  585. package/dist/checks/integrations/integrations-consolidated.js.map +1 -0
  586. package/dist/checks/integrations/platform-feed-integrity.d.ts +75 -0
  587. package/dist/checks/integrations/platform-feed-integrity.d.ts.map +1 -0
  588. package/dist/checks/integrations/platform-feed-integrity.js +487 -0
  589. package/dist/checks/integrations/platform-feed-integrity.js.map +1 -0
  590. package/dist/checks/master-preflight.d.ts +56 -0
  591. package/dist/checks/master-preflight.d.ts.map +1 -0
  592. package/dist/checks/master-preflight.js +254 -0
  593. package/dist/checks/master-preflight.js.map +1 -0
  594. package/dist/checks/nextjs/dynamic-route-exports.d.ts +28 -0
  595. package/dist/checks/nextjs/dynamic-route-exports.d.ts.map +1 -0
  596. package/dist/checks/nextjs/dynamic-route-exports.js +201 -0
  597. package/dist/checks/nextjs/dynamic-route-exports.js.map +1 -0
  598. package/dist/checks/nextjs/essential-files-validation.d.ts +23 -0
  599. package/dist/checks/nextjs/essential-files-validation.d.ts.map +1 -0
  600. package/dist/checks/nextjs/essential-files-validation.js +355 -0
  601. package/dist/checks/nextjs/essential-files-validation.js.map +1 -0
  602. package/dist/checks/nextjs/ignore-build-errors.d.ts +15 -0
  603. package/dist/checks/nextjs/ignore-build-errors.d.ts.map +1 -0
  604. package/dist/checks/nextjs/ignore-build-errors.js +120 -0
  605. package/dist/checks/nextjs/ignore-build-errors.js.map +1 -0
  606. package/dist/checks/nextjs/metadata-api-placement.d.ts +29 -0
  607. package/dist/checks/nextjs/metadata-api-placement.d.ts.map +1 -0
  608. package/dist/checks/nextjs/metadata-api-placement.js +274 -0
  609. package/dist/checks/nextjs/metadata-api-placement.js.map +1 -0
  610. package/dist/checks/nextjs/nextjs-image-validation.d.ts +52 -0
  611. package/dist/checks/nextjs/nextjs-image-validation.d.ts.map +1 -0
  612. package/dist/checks/nextjs/nextjs-image-validation.js +253 -0
  613. package/dist/checks/nextjs/nextjs-image-validation.js.map +1 -0
  614. package/dist/checks/nextjs/nextjs16-compatibility.d.ts +39 -0
  615. package/dist/checks/nextjs/nextjs16-compatibility.d.ts.map +1 -0
  616. package/dist/checks/nextjs/nextjs16-compatibility.js +1208 -0
  617. package/dist/checks/nextjs/nextjs16-compatibility.js.map +1 -0
  618. package/dist/checks/nextjs/static-generation-check.d.ts +25 -0
  619. package/dist/checks/nextjs/static-generation-check.d.ts.map +1 -0
  620. package/dist/checks/nextjs/static-generation-check.js +178 -0
  621. package/dist/checks/nextjs/static-generation-check.js.map +1 -0
  622. package/dist/checks/observability/centralized-logging-validation.d.ts +22 -0
  623. package/dist/checks/observability/centralized-logging-validation.d.ts.map +1 -0
  624. package/dist/checks/observability/centralized-logging-validation.js +285 -0
  625. package/dist/checks/observability/centralized-logging-validation.js.map +1 -0
  626. package/dist/checks/order-number-consistency.d.ts +23 -0
  627. package/dist/checks/order-number-consistency.d.ts.map +1 -0
  628. package/dist/checks/order-number-consistency.js +288 -0
  629. package/dist/checks/order-number-consistency.js.map +1 -0
  630. package/dist/checks/organization/agent-steering-validation.d.ts +16 -0
  631. package/dist/checks/organization/agent-steering-validation.d.ts.map +1 -0
  632. package/dist/checks/organization/agent-steering-validation.js +186 -0
  633. package/dist/checks/organization/agent-steering-validation.js.map +1 -0
  634. package/dist/checks/organization/api-route-consolidation.d.ts +23 -0
  635. package/dist/checks/organization/api-route-consolidation.d.ts.map +1 -0
  636. package/dist/checks/organization/api-route-consolidation.js +364 -0
  637. package/dist/checks/organization/api-route-consolidation.js.map +1 -0
  638. package/dist/checks/organization/api-route-naming-validation.d.ts +23 -0
  639. package/dist/checks/organization/api-route-naming-validation.d.ts.map +1 -0
  640. package/dist/checks/organization/api-route-naming-validation.js +491 -0
  641. package/dist/checks/organization/api-route-naming-validation.js.map +1 -0
  642. package/dist/checks/organization/file-organization-validation.d.ts +18 -0
  643. package/dist/checks/organization/file-organization-validation.d.ts.map +1 -0
  644. package/dist/checks/organization/file-organization-validation.js +562 -0
  645. package/dist/checks/organization/file-organization-validation.js.map +1 -0
  646. package/dist/checks/organization/npm-script-bloat-prevention.d.ts +40 -0
  647. package/dist/checks/organization/npm-script-bloat-prevention.d.ts.map +1 -0
  648. package/dist/checks/organization/npm-script-bloat-prevention.js +412 -0
  649. package/dist/checks/organization/npm-script-bloat-prevention.js.map +1 -0
  650. package/dist/checks/organization/preflight-env-check.d.ts +12 -0
  651. package/dist/checks/organization/preflight-env-check.d.ts.map +1 -0
  652. package/dist/checks/organization/preflight-env-check.js +157 -0
  653. package/dist/checks/organization/preflight-env-check.js.map +1 -0
  654. package/dist/checks/organization/preflight-progress-consistency.d.ts +25 -0
  655. package/dist/checks/organization/preflight-progress-consistency.d.ts.map +1 -0
  656. package/dist/checks/organization/preflight-progress-consistency.js +227 -0
  657. package/dist/checks/organization/preflight-progress-consistency.js.map +1 -0
  658. package/dist/checks/organization/preflight-system-validation.d.ts +19 -0
  659. package/dist/checks/organization/preflight-system-validation.d.ts.map +1 -0
  660. package/dist/checks/organization/preflight-system-validation.js +487 -0
  661. package/dist/checks/organization/preflight-system-validation.js.map +1 -0
  662. package/dist/checks/organization/preflight-typescript-validation.d.ts +14 -0
  663. package/dist/checks/organization/preflight-typescript-validation.d.ts.map +1 -0
  664. package/dist/checks/organization/preflight-typescript-validation.js +43 -0
  665. package/dist/checks/organization/preflight-typescript-validation.js.map +1 -0
  666. package/dist/checks/organization/route-structure-validation.d.ts +18 -0
  667. package/dist/checks/organization/route-structure-validation.d.ts.map +1 -0
  668. package/dist/checks/organization/route-structure-validation.js +235 -0
  669. package/dist/checks/organization/route-structure-validation.js.map +1 -0
  670. package/dist/checks/organization/steering-bloat-prevention.d.ts +88 -0
  671. package/dist/checks/organization/steering-bloat-prevention.d.ts.map +1 -0
  672. package/dist/checks/organization/steering-bloat-prevention.js +1197 -0
  673. package/dist/checks/organization/steering-bloat-prevention.js.map +1 -0
  674. package/dist/checks/performance/bundle-optimization-drift.d.ts +18 -0
  675. package/dist/checks/performance/bundle-optimization-drift.d.ts.map +1 -0
  676. package/dist/checks/performance/bundle-optimization-drift.js +260 -0
  677. package/dist/checks/performance/bundle-optimization-drift.js.map +1 -0
  678. package/dist/checks/performance/bundle-size-regression.d.ts +14 -0
  679. package/dist/checks/performance/bundle-size-regression.d.ts.map +1 -0
  680. package/dist/checks/performance/bundle-size-regression.js +236 -0
  681. package/dist/checks/performance/bundle-size-regression.js.map +1 -0
  682. package/dist/checks/performance/core-web-vitals.d.ts +39 -0
  683. package/dist/checks/performance/core-web-vitals.d.ts.map +1 -0
  684. package/dist/checks/performance/core-web-vitals.js +445 -0
  685. package/dist/checks/performance/core-web-vitals.js.map +1 -0
  686. package/dist/checks/performance/mobile-performance-budget.d.ts +29 -0
  687. package/dist/checks/performance/mobile-performance-budget.d.ts.map +1 -0
  688. package/dist/checks/performance/mobile-performance-budget.js +415 -0
  689. package/dist/checks/performance/mobile-performance-budget.js.map +1 -0
  690. package/dist/checks/performance/runtime-regression.d.ts +17 -0
  691. package/dist/checks/performance/runtime-regression.d.ts.map +1 -0
  692. package/dist/checks/performance/runtime-regression.js +425 -0
  693. package/dist/checks/performance/runtime-regression.js.map +1 -0
  694. package/dist/checks/performance/unused-preload-detection.d.ts +17 -0
  695. package/dist/checks/performance/unused-preload-detection.d.ts.map +1 -0
  696. package/dist/checks/performance/unused-preload-detection.js +185 -0
  697. package/dist/checks/performance/unused-preload-detection.js.map +1 -0
  698. package/dist/checks/prisma/prisma7-compatibility.d.ts +29 -0
  699. package/dist/checks/prisma/prisma7-compatibility.d.ts.map +1 -0
  700. package/dist/checks/prisma/prisma7-compatibility.js +440 -0
  701. package/dist/checks/prisma/prisma7-compatibility.js.map +1 -0
  702. package/dist/checks/quality/component-size.d.ts +13 -0
  703. package/dist/checks/quality/component-size.d.ts.map +1 -0
  704. package/dist/checks/quality/component-size.js +104 -0
  705. package/dist/checks/quality/component-size.js.map +1 -0
  706. package/dist/checks/quality/critical-type-imports.d.ts +23 -0
  707. package/dist/checks/quality/critical-type-imports.d.ts.map +1 -0
  708. package/dist/checks/quality/critical-type-imports.js +632 -0
  709. package/dist/checks/quality/critical-type-imports.js.map +1 -0
  710. package/dist/checks/quality/development.d.ts +13 -0
  711. package/dist/checks/quality/development.d.ts.map +1 -0
  712. package/dist/checks/quality/development.js +98 -0
  713. package/dist/checks/quality/development.js.map +1 -0
  714. package/dist/checks/quality/docs-code-sync.d.ts +27 -0
  715. package/dist/checks/quality/docs-code-sync.d.ts.map +1 -0
  716. package/dist/checks/quality/docs-code-sync.js +368 -0
  717. package/dist/checks/quality/docs-code-sync.js.map +1 -0
  718. package/dist/checks/quality/duplicate-jsx-attributes.d.ts +23 -0
  719. package/dist/checks/quality/duplicate-jsx-attributes.d.ts.map +1 -0
  720. package/dist/checks/quality/duplicate-jsx-attributes.js +201 -0
  721. package/dist/checks/quality/duplicate-jsx-attributes.js.map +1 -0
  722. package/dist/checks/quality/file-size.d.ts +13 -0
  723. package/dist/checks/quality/file-size.d.ts.map +1 -0
  724. package/dist/checks/quality/file-size.js +97 -0
  725. package/dist/checks/quality/file-size.js.map +1 -0
  726. package/dist/checks/quality/file-validation.d.ts +13 -0
  727. package/dist/checks/quality/file-validation.d.ts.map +1 -0
  728. package/dist/checks/quality/file-validation.js +103 -0
  729. package/dist/checks/quality/file-validation.js.map +1 -0
  730. package/dist/checks/quality/i18n-hardcoded-strings.d.ts +28 -0
  731. package/dist/checks/quality/i18n-hardcoded-strings.d.ts.map +1 -0
  732. package/dist/checks/quality/i18n-hardcoded-strings.js +336 -0
  733. package/dist/checks/quality/i18n-hardcoded-strings.js.map +1 -0
  734. package/dist/checks/quality/lint-preflight.d.ts +70 -0
  735. package/dist/checks/quality/lint-preflight.d.ts.map +1 -0
  736. package/dist/checks/quality/lint-preflight.js +477 -0
  737. package/dist/checks/quality/lint-preflight.js.map +1 -0
  738. package/dist/checks/quality/react-namespace-import.d.ts +27 -0
  739. package/dist/checks/quality/react-namespace-import.d.ts.map +1 -0
  740. package/dist/checks/quality/react-namespace-import.js +212 -0
  741. package/dist/checks/quality/react-namespace-import.js.map +1 -0
  742. package/dist/checks/quality/strict-lint.d.ts +13 -0
  743. package/dist/checks/quality/strict-lint.d.ts.map +1 -0
  744. package/dist/checks/quality/strict-lint.js +41 -0
  745. package/dist/checks/quality/strict-lint.js.map +1 -0
  746. package/dist/checks/quality/syntax.d.ts +13 -0
  747. package/dist/checks/quality/syntax.d.ts.map +1 -0
  748. package/dist/checks/quality/syntax.js +94 -0
  749. package/dist/checks/quality/syntax.js.map +1 -0
  750. package/dist/checks/quality/unused-imports.d.ts +14 -0
  751. package/dist/checks/quality/unused-imports.d.ts.map +1 -0
  752. package/dist/checks/quality/unused-imports.js +172 -0
  753. package/dist/checks/quality/unused-imports.js.map +1 -0
  754. package/dist/checks/react/component-best-practices.d.ts +23 -0
  755. package/dist/checks/react/component-best-practices.d.ts.map +1 -0
  756. package/dist/checks/react/component-best-practices.js +273 -0
  757. package/dist/checks/react/component-best-practices.js.map +1 -0
  758. package/dist/checks/react/error-boundary-coverage.d.ts +26 -0
  759. package/dist/checks/react/error-boundary-coverage.d.ts.map +1 -0
  760. package/dist/checks/react/error-boundary-coverage.js +304 -0
  761. package/dist/checks/react/error-boundary-coverage.js.map +1 -0
  762. package/dist/checks/react/memory-leak-detection.d.ts +22 -0
  763. package/dist/checks/react/memory-leak-detection.d.ts.map +1 -0
  764. package/dist/checks/react/memory-leak-detection.js +268 -0
  765. package/dist/checks/react/memory-leak-detection.js.map +1 -0
  766. package/dist/checks/react/memory-leak-patterns.d.ts +27 -0
  767. package/dist/checks/react/memory-leak-patterns.d.ts.map +1 -0
  768. package/dist/checks/react/memory-leak-patterns.js +324 -0
  769. package/dist/checks/react/memory-leak-patterns.js.map +1 -0
  770. package/dist/checks/react/react19-compatibility.d.ts +14 -0
  771. package/dist/checks/react/react19-compatibility.d.ts.map +1 -0
  772. package/dist/checks/react/react19-compatibility.js +433 -0
  773. package/dist/checks/react/react19-compatibility.js.map +1 -0
  774. package/dist/checks/react/useeffect-loop-detector.d.ts +25 -0
  775. package/dist/checks/react/useeffect-loop-detector.d.ts.map +1 -0
  776. package/dist/checks/react/useeffect-loop-detector.js +216 -0
  777. package/dist/checks/react/useeffect-loop-detector.js.map +1 -0
  778. package/dist/checks/runtime/client-process-env-usage.d.ts +28 -0
  779. package/dist/checks/runtime/client-process-env-usage.d.ts.map +1 -0
  780. package/dist/checks/runtime/client-process-env-usage.js +190 -0
  781. package/dist/checks/runtime/client-process-env-usage.js.map +1 -0
  782. package/dist/checks/runtime/client-runtime-errors.d.ts +34 -0
  783. package/dist/checks/runtime/client-runtime-errors.d.ts.map +1 -0
  784. package/dist/checks/runtime/client-runtime-errors.js +308 -0
  785. package/dist/checks/runtime/client-runtime-errors.js.map +1 -0
  786. package/dist/checks/runtime/dev-error-monitoring-system.d.ts +22 -0
  787. package/dist/checks/runtime/dev-error-monitoring-system.d.ts.map +1 -0
  788. package/dist/checks/runtime/dev-error-monitoring-system.js +209 -0
  789. package/dist/checks/runtime/dev-error-monitoring-system.js.map +1 -0
  790. package/dist/checks/runtime/gtm-installation.d.ts +21 -0
  791. package/dist/checks/runtime/gtm-installation.d.ts.map +1 -0
  792. package/dist/checks/runtime/gtm-installation.js +341 -0
  793. package/dist/checks/runtime/gtm-installation.js.map +1 -0
  794. package/dist/checks/runtime/json-parse-safety.d.ts +22 -0
  795. package/dist/checks/runtime/json-parse-safety.d.ts.map +1 -0
  796. package/dist/checks/runtime/json-parse-safety.js +179 -0
  797. package/dist/checks/runtime/json-parse-safety.js.map +1 -0
  798. package/dist/checks/runtime/missing-public-env-import.d.ts +26 -0
  799. package/dist/checks/runtime/missing-public-env-import.d.ts.map +1 -0
  800. package/dist/checks/runtime/missing-public-env-import.js +175 -0
  801. package/dist/checks/runtime/missing-public-env-import.js.map +1 -0
  802. package/dist/checks/runtime/node-deprecations.d.ts +22 -0
  803. package/dist/checks/runtime/node-deprecations.d.ts.map +1 -0
  804. package/dist/checks/runtime/node-deprecations.js +157 -0
  805. package/dist/checks/runtime/node-deprecations.js.map +1 -0
  806. package/dist/checks/runtime/node25-compatibility.d.ts +28 -0
  807. package/dist/checks/runtime/node25-compatibility.d.ts.map +1 -0
  808. package/dist/checks/runtime/node25-compatibility.js +200 -0
  809. package/dist/checks/runtime/node25-compatibility.js.map +1 -0
  810. package/dist/checks/runtime/process-stdio-usage.d.ts +26 -0
  811. package/dist/checks/runtime/process-stdio-usage.d.ts.map +1 -0
  812. package/dist/checks/runtime/process-stdio-usage.js +179 -0
  813. package/dist/checks/runtime/process-stdio-usage.js.map +1 -0
  814. package/dist/checks/runtime/server-client-decimal.d.ts +25 -0
  815. package/dist/checks/runtime/server-client-decimal.d.ts.map +1 -0
  816. package/dist/checks/runtime/server-client-decimal.js +243 -0
  817. package/dist/checks/runtime/server-client-decimal.js.map +1 -0
  818. package/dist/checks/security/csrf-protection.d.ts +20 -0
  819. package/dist/checks/security/csrf-protection.d.ts.map +1 -0
  820. package/dist/checks/security/csrf-protection.js +249 -0
  821. package/dist/checks/security/csrf-protection.js.map +1 -0
  822. package/dist/checks/security/dependency-audit.d.ts +25 -0
  823. package/dist/checks/security/dependency-audit.d.ts.map +1 -0
  824. package/dist/checks/security/dependency-audit.js +219 -0
  825. package/dist/checks/security/dependency-audit.js.map +1 -0
  826. package/dist/checks/security/env-value-leakage.d.ts +21 -0
  827. package/dist/checks/security/env-value-leakage.d.ts.map +1 -0
  828. package/dist/checks/security/env-value-leakage.js +285 -0
  829. package/dist/checks/security/env-value-leakage.js.map +1 -0
  830. package/dist/checks/security/no-tracked-env-files.d.ts +18 -0
  831. package/dist/checks/security/no-tracked-env-files.d.ts.map +1 -0
  832. package/dist/checks/security/no-tracked-env-files.js +247 -0
  833. package/dist/checks/security/no-tracked-env-files.js.map +1 -0
  834. package/dist/checks/security/open-redirect-prevention.d.ts +19 -0
  835. package/dist/checks/security/open-redirect-prevention.d.ts.map +1 -0
  836. package/dist/checks/security/open-redirect-prevention.js +238 -0
  837. package/dist/checks/security/open-redirect-prevention.js.map +1 -0
  838. package/dist/checks/security/path-traversal-prevention.d.ts +25 -0
  839. package/dist/checks/security/path-traversal-prevention.d.ts.map +1 -0
  840. package/dist/checks/security/path-traversal-prevention.js +246 -0
  841. package/dist/checks/security/path-traversal-prevention.js.map +1 -0
  842. package/dist/checks/security/permission-security-validation.d.ts +19 -0
  843. package/dist/checks/security/permission-security-validation.d.ts.map +1 -0
  844. package/dist/checks/security/permission-security-validation.js +319 -0
  845. package/dist/checks/security/permission-security-validation.js.map +1 -0
  846. package/dist/checks/security/prod-command-detection.d.ts +17 -0
  847. package/dist/checks/security/prod-command-detection.d.ts.map +1 -0
  848. package/dist/checks/security/prod-command-detection.js +222 -0
  849. package/dist/checks/security/prod-command-detection.js.map +1 -0
  850. package/dist/checks/security/rate-limiting-validation.d.ts +19 -0
  851. package/dist/checks/security/rate-limiting-validation.d.ts.map +1 -0
  852. package/dist/checks/security/rate-limiting-validation.js +260 -0
  853. package/dist/checks/security/rate-limiting-validation.js.map +1 -0
  854. package/dist/checks/security/security-sla-enforcement.d.ts +34 -0
  855. package/dist/checks/security/security-sla-enforcement.d.ts.map +1 -0
  856. package/dist/checks/security/security-sla-enforcement.js +349 -0
  857. package/dist/checks/security/security-sla-enforcement.js.map +1 -0
  858. package/dist/checks/security/sensitive-data-exposure.d.ts +36 -0
  859. package/dist/checks/security/sensitive-data-exposure.d.ts.map +1 -0
  860. package/dist/checks/security/sensitive-data-exposure.js +540 -0
  861. package/dist/checks/security/sensitive-data-exposure.js.map +1 -0
  862. package/dist/checks/security/sql-injection-prevention.d.ts +25 -0
  863. package/dist/checks/security/sql-injection-prevention.d.ts.map +1 -0
  864. package/dist/checks/security/sql-injection-prevention.js +216 -0
  865. package/dist/checks/security/sql-injection-prevention.js.map +1 -0
  866. package/dist/checks/security/turnstile-scope-validation.d.ts +21 -0
  867. package/dist/checks/security/turnstile-scope-validation.d.ts.map +1 -0
  868. package/dist/checks/security/turnstile-scope-validation.js +237 -0
  869. package/dist/checks/security/turnstile-scope-validation.js.map +1 -0
  870. package/dist/checks/security/unvalidated-route-params.d.ts +28 -0
  871. package/dist/checks/security/unvalidated-route-params.d.ts.map +1 -0
  872. package/dist/checks/security/unvalidated-route-params.js +246 -0
  873. package/dist/checks/security/unvalidated-route-params.js.map +1 -0
  874. package/dist/checks/security/webhook-security-validation.d.ts +19 -0
  875. package/dist/checks/security/webhook-security-validation.d.ts.map +1 -0
  876. package/dist/checks/security/webhook-security-validation.js +258 -0
  877. package/dist/checks/security/webhook-security-validation.js.map +1 -0
  878. package/dist/checks/seo/missing-metadata.d.ts +26 -0
  879. package/dist/checks/seo/missing-metadata.d.ts.map +1 -0
  880. package/dist/checks/seo/missing-metadata.js +189 -0
  881. package/dist/checks/seo/missing-metadata.js.map +1 -0
  882. package/dist/checks/storage-keys-validation.d.ts +25 -0
  883. package/dist/checks/storage-keys-validation.d.ts.map +1 -0
  884. package/dist/checks/storage-keys-validation.js +312 -0
  885. package/dist/checks/storage-keys-validation.js.map +1 -0
  886. package/dist/checks/store-order-numbers.d.ts +19 -0
  887. package/dist/checks/store-order-numbers.d.ts.map +1 -0
  888. package/dist/checks/store-order-numbers.js +238 -0
  889. package/dist/checks/store-order-numbers.js.map +1 -0
  890. package/dist/checks/system/analyze-consolidation-candidates.d.ts +17 -0
  891. package/dist/checks/system/analyze-consolidation-candidates.d.ts.map +1 -0
  892. package/dist/checks/system/analyze-consolidation-candidates.js +221 -0
  893. package/dist/checks/system/analyze-consolidation-candidates.js.map +1 -0
  894. package/dist/checks/system/apply-universal-progress.d.ts +15 -0
  895. package/dist/checks/system/apply-universal-progress.d.ts.map +1 -0
  896. package/dist/checks/system/apply-universal-progress.js +292 -0
  897. package/dist/checks/system/apply-universal-progress.js.map +1 -0
  898. package/dist/checks/system/broken-preflight-detection.d.ts +30 -0
  899. package/dist/checks/system/broken-preflight-detection.d.ts.map +1 -0
  900. package/dist/checks/system/broken-preflight-detection.js +565 -0
  901. package/dist/checks/system/broken-preflight-detection.js.map +1 -0
  902. package/dist/checks/system/find-orphaned-preflights.d.ts +19 -0
  903. package/dist/checks/system/find-orphaned-preflights.d.ts.map +1 -0
  904. package/dist/checks/system/find-orphaned-preflights.js +157 -0
  905. package/dist/checks/system/find-orphaned-preflights.js.map +1 -0
  906. package/dist/checks/system/lint-preflight-consistency.d.ts +25 -0
  907. package/dist/checks/system/lint-preflight-consistency.d.ts.map +1 -0
  908. package/dist/checks/system/lint-preflight-consistency.js +374 -0
  909. package/dist/checks/system/lint-preflight-consistency.js.map +1 -0
  910. package/dist/checks/system/orphaned-scripts-detection.d.ts +24 -0
  911. package/dist/checks/system/orphaned-scripts-detection.d.ts.map +1 -0
  912. package/dist/checks/system/orphaned-scripts-detection.js +335 -0
  913. package/dist/checks/system/orphaned-scripts-detection.js.map +1 -0
  914. package/dist/checks/system/preflight-command-validation.d.ts +32 -0
  915. package/dist/checks/system/preflight-command-validation.d.ts.map +1 -0
  916. package/dist/checks/system/preflight-command-validation.js +631 -0
  917. package/dist/checks/system/preflight-command-validation.js.map +1 -0
  918. package/dist/checks/system/preflight-concurrency-support.d.ts +18 -0
  919. package/dist/checks/system/preflight-concurrency-support.d.ts.map +1 -0
  920. package/dist/checks/system/preflight-concurrency-support.js +207 -0
  921. package/dist/checks/system/preflight-concurrency-support.js.map +1 -0
  922. package/dist/checks/system/preflight-consolidation-safety.d.ts +16 -0
  923. package/dist/checks/system/preflight-consolidation-safety.d.ts.map +1 -0
  924. package/dist/checks/system/preflight-consolidation-safety.js +250 -0
  925. package/dist/checks/system/preflight-consolidation-safety.js.map +1 -0
  926. package/dist/checks/system/preflight-coverage-map.d.ts +26 -0
  927. package/dist/checks/system/preflight-coverage-map.d.ts.map +1 -0
  928. package/dist/checks/system/preflight-coverage-map.js +295 -0
  929. package/dist/checks/system/preflight-coverage-map.js.map +1 -0
  930. package/dist/checks/system/preflight-drift-detector.d.ts +28 -0
  931. package/dist/checks/system/preflight-drift-detector.d.ts.map +1 -0
  932. package/dist/checks/system/preflight-drift-detector.js +380 -0
  933. package/dist/checks/system/preflight-drift-detector.js.map +1 -0
  934. package/dist/checks/system/preflight-env-var-documentation.d.ts +25 -0
  935. package/dist/checks/system/preflight-env-var-documentation.d.ts.map +1 -0
  936. package/dist/checks/system/preflight-env-var-documentation.js +333 -0
  937. package/dist/checks/system/preflight-env-var-documentation.js.map +1 -0
  938. package/dist/checks/system/preflight-exit-code-validator.d.ts +30 -0
  939. package/dist/checks/system/preflight-exit-code-validator.d.ts.map +1 -0
  940. package/dist/checks/system/preflight-exit-code-validator.js +298 -0
  941. package/dist/checks/system/preflight-exit-code-validator.js.map +1 -0
  942. package/dist/checks/system/preflight-false-positive-tracker.d.ts +25 -0
  943. package/dist/checks/system/preflight-false-positive-tracker.d.ts.map +1 -0
  944. package/dist/checks/system/preflight-false-positive-tracker.js +262 -0
  945. package/dist/checks/system/preflight-false-positive-tracker.js.map +1 -0
  946. package/dist/checks/system/preflight-metadata-validator.d.ts +28 -0
  947. package/dist/checks/system/preflight-metadata-validator.d.ts.map +1 -0
  948. package/dist/checks/system/preflight-metadata-validator.js +220 -0
  949. package/dist/checks/system/preflight-metadata-validator.js.map +1 -0
  950. package/dist/checks/system/preflight-organization.d.ts +15 -0
  951. package/dist/checks/system/preflight-organization.d.ts.map +1 -0
  952. package/dist/checks/system/preflight-organization.js +212 -0
  953. package/dist/checks/system/preflight-organization.js.map +1 -0
  954. package/dist/checks/system/preflight-performance-optimizer.d.ts +17 -0
  955. package/dist/checks/system/preflight-performance-optimizer.d.ts.map +1 -0
  956. package/dist/checks/system/preflight-performance-optimizer.js +375 -0
  957. package/dist/checks/system/preflight-performance-optimizer.js.map +1 -0
  958. package/dist/checks/system/preflight-redundancy-detection.d.ts +28 -0
  959. package/dist/checks/system/preflight-redundancy-detection.d.ts.map +1 -0
  960. package/dist/checks/system/preflight-redundancy-detection.js +1168 -0
  961. package/dist/checks/system/preflight-redundancy-detection.js.map +1 -0
  962. package/dist/checks/system/preflight-reporting-standards.d.ts +17 -0
  963. package/dist/checks/system/preflight-reporting-standards.d.ts.map +1 -0
  964. package/dist/checks/system/preflight-reporting-standards.js +315 -0
  965. package/dist/checks/system/preflight-reporting-standards.js.map +1 -0
  966. package/dist/checks/system/preflight-runtime-health.d.ts +29 -0
  967. package/dist/checks/system/preflight-runtime-health.d.ts.map +1 -0
  968. package/dist/checks/system/preflight-runtime-health.js +346 -0
  969. package/dist/checks/system/preflight-runtime-health.js.map +1 -0
  970. package/dist/checks/system/preflight-schema-validator.d.ts +23 -0
  971. package/dist/checks/system/preflight-schema-validator.d.ts.map +1 -0
  972. package/dist/checks/system/preflight-schema-validator.js +322 -0
  973. package/dist/checks/system/preflight-schema-validator.js.map +1 -0
  974. package/dist/checks/system/preflight-test-coverage.d.ts +24 -0
  975. package/dist/checks/system/preflight-test-coverage.d.ts.map +1 -0
  976. package/dist/checks/system/preflight-test-coverage.js +242 -0
  977. package/dist/checks/system/preflight-test-coverage.js.map +1 -0
  978. package/dist/checks/system/script-path-validation.d.ts +30 -0
  979. package/dist/checks/system/script-path-validation.d.ts.map +1 -0
  980. package/dist/checks/system/script-path-validation.js +351 -0
  981. package/dist/checks/system/script-path-validation.js.map +1 -0
  982. package/dist/checks/system/stale-preflight-detection.d.ts +15 -0
  983. package/dist/checks/system/stale-preflight-detection.d.ts.map +1 -0
  984. package/dist/checks/system/stale-preflight-detection.js +200 -0
  985. package/dist/checks/system/stale-preflight-detection.js.map +1 -0
  986. package/dist/checks/system/universal-progress-reporter.d.ts +92 -0
  987. package/dist/checks/system/universal-progress-reporter.d.ts.map +1 -0
  988. package/dist/checks/system/universal-progress-reporter.js +272 -0
  989. package/dist/checks/system/universal-progress-reporter.js.map +1 -0
  990. package/dist/checks/tailwind/tailwind4-compatibility.d.ts +31 -0
  991. package/dist/checks/tailwind/tailwind4-compatibility.d.ts.map +1 -0
  992. package/dist/checks/tailwind/tailwind4-compatibility.js +490 -0
  993. package/dist/checks/tailwind/tailwind4-compatibility.js.map +1 -0
  994. package/dist/checks/tanstack/tanstack-query-compatibility.d.ts +31 -0
  995. package/dist/checks/tanstack/tanstack-query-compatibility.d.ts.map +1 -0
  996. package/dist/checks/tanstack/tanstack-query-compatibility.js +434 -0
  997. package/dist/checks/tanstack/tanstack-query-compatibility.js.map +1 -0
  998. package/dist/checks/ui/accessibility-critical.d.ts +18 -0
  999. package/dist/checks/ui/accessibility-critical.d.ts.map +1 -0
  1000. package/dist/checks/ui/accessibility-critical.js +357 -0
  1001. package/dist/checks/ui/accessibility-critical.js.map +1 -0
  1002. package/dist/checks/ui/alert-button-gap.d.ts +26 -0
  1003. package/dist/checks/ui/alert-button-gap.d.ts.map +1 -0
  1004. package/dist/checks/ui/alert-button-gap.js +215 -0
  1005. package/dist/checks/ui/alert-button-gap.js.map +1 -0
  1006. package/dist/checks/ui/breadcrumb-consistency.d.ts +18 -0
  1007. package/dist/checks/ui/breadcrumb-consistency.d.ts.map +1 -0
  1008. package/dist/checks/ui/breadcrumb-consistency.js +237 -0
  1009. package/dist/checks/ui/breadcrumb-consistency.js.map +1 -0
  1010. package/dist/checks/ui/button-group-gap.d.ts +22 -0
  1011. package/dist/checks/ui/button-group-gap.d.ts.map +1 -0
  1012. package/dist/checks/ui/button-group-gap.js +194 -0
  1013. package/dist/checks/ui/button-group-gap.js.map +1 -0
  1014. package/dist/checks/ui/button-icon-prop.d.ts +40 -0
  1015. package/dist/checks/ui/button-icon-prop.d.ts.map +1 -0
  1016. package/dist/checks/ui/button-icon-prop.js +248 -0
  1017. package/dist/checks/ui/button-icon-prop.js.map +1 -0
  1018. package/dist/checks/ui/card-section-content-spacing.d.ts +31 -0
  1019. package/dist/checks/ui/card-section-content-spacing.d.ts.map +1 -0
  1020. package/dist/checks/ui/card-section-content-spacing.js +260 -0
  1021. package/dist/checks/ui/card-section-content-spacing.js.map +1 -0
  1022. package/dist/checks/ui/color-check.d.ts +7 -0
  1023. package/dist/checks/ui/color-check.d.ts.map +1 -0
  1024. package/dist/checks/ui/color-check.js +105 -0
  1025. package/dist/checks/ui/color-check.js.map +1 -0
  1026. package/dist/checks/ui/component-library-quality.d.ts +19 -0
  1027. package/dist/checks/ui/component-library-quality.d.ts.map +1 -0
  1028. package/dist/checks/ui/component-library-quality.js +231 -0
  1029. package/dist/checks/ui/component-library-quality.js.map +1 -0
  1030. package/dist/checks/ui/component-prop-validation.d.ts +22 -0
  1031. package/dist/checks/ui/component-prop-validation.d.ts.map +1 -0
  1032. package/dist/checks/ui/component-prop-validation.js +271 -0
  1033. package/dist/checks/ui/component-prop-validation.js.map +1 -0
  1034. package/dist/checks/ui/console-log-check.d.ts +7 -0
  1035. package/dist/checks/ui/console-log-check.d.ts.map +1 -0
  1036. package/dist/checks/ui/console-log-check.js +126 -0
  1037. package/dist/checks/ui/console-log-check.js.map +1 -0
  1038. package/dist/checks/ui/css-grid-gap-check.d.ts +24 -0
  1039. package/dist/checks/ui/css-grid-gap-check.d.ts.map +1 -0
  1040. package/dist/checks/ui/css-grid-gap-check.js +314 -0
  1041. package/dist/checks/ui/css-grid-gap-check.js.map +1 -0
  1042. package/dist/checks/ui/css-token-syntax.d.ts +22 -0
  1043. package/dist/checks/ui/css-token-syntax.d.ts.map +1 -0
  1044. package/dist/checks/ui/css-token-syntax.js +386 -0
  1045. package/dist/checks/ui/css-token-syntax.js.map +1 -0
  1046. package/dist/checks/ui/dark-mode-support.d.ts +95 -0
  1047. package/dist/checks/ui/dark-mode-support.d.ts.map +1 -0
  1048. package/dist/checks/ui/dark-mode-support.js +702 -0
  1049. package/dist/checks/ui/dark-mode-support.js.map +1 -0
  1050. package/dist/checks/ui/dashboard-section-patterns.d.ts +85 -0
  1051. package/dist/checks/ui/dashboard-section-patterns.d.ts.map +1 -0
  1052. package/dist/checks/ui/dashboard-section-patterns.js +1751 -0
  1053. package/dist/checks/ui/dashboard-section-patterns.js.map +1 -0
  1054. package/dist/checks/ui/dashboard-ui.d.ts +28 -0
  1055. package/dist/checks/ui/dashboard-ui.d.ts.map +1 -0
  1056. package/dist/checks/ui/dashboard-ui.js +503 -0
  1057. package/dist/checks/ui/dashboard-ui.js.map +1 -0
  1058. package/dist/checks/ui/dead-action-detector.d.ts +24 -0
  1059. package/dist/checks/ui/dead-action-detector.d.ts.map +1 -0
  1060. package/dist/checks/ui/dead-action-detector.js +457 -0
  1061. package/dist/checks/ui/dead-action-detector.js.map +1 -0
  1062. package/dist/checks/ui/doubled-padding-check.d.ts +21 -0
  1063. package/dist/checks/ui/doubled-padding-check.d.ts.map +1 -0
  1064. package/dist/checks/ui/doubled-padding-check.js +233 -0
  1065. package/dist/checks/ui/doubled-padding-check.js.map +1 -0
  1066. package/dist/checks/ui/dropdown-positioning-check.d.ts +26 -0
  1067. package/dist/checks/ui/dropdown-positioning-check.d.ts.map +1 -0
  1068. package/dist/checks/ui/dropdown-positioning-check.js +283 -0
  1069. package/dist/checks/ui/dropdown-positioning-check.js.map +1 -0
  1070. package/dist/checks/ui/feature-page-hero-consistency.d.ts +29 -0
  1071. package/dist/checks/ui/feature-page-hero-consistency.d.ts.map +1 -0
  1072. package/dist/checks/ui/feature-page-hero-consistency.js +228 -0
  1073. package/dist/checks/ui/feature-page-hero-consistency.js.map +1 -0
  1074. package/dist/checks/ui/filter-loading-states.d.ts +19 -0
  1075. package/dist/checks/ui/filter-loading-states.d.ts.map +1 -0
  1076. package/dist/checks/ui/filter-loading-states.js +193 -0
  1077. package/dist/checks/ui/filter-loading-states.js.map +1 -0
  1078. package/dist/checks/ui/flex-icon-text-gap.d.ts +30 -0
  1079. package/dist/checks/ui/flex-icon-text-gap.d.ts.map +1 -0
  1080. package/dist/checks/ui/flex-icon-text-gap.js +371 -0
  1081. package/dist/checks/ui/flex-icon-text-gap.js.map +1 -0
  1082. package/dist/checks/ui/form-control-layout-check.d.ts +30 -0
  1083. package/dist/checks/ui/form-control-layout-check.d.ts.map +1 -0
  1084. package/dist/checks/ui/form-control-layout-check.js +287 -0
  1085. package/dist/checks/ui/form-control-layout-check.js.map +1 -0
  1086. package/dist/checks/ui/form-field-consistency.d.ts +29 -0
  1087. package/dist/checks/ui/form-field-consistency.d.ts.map +1 -0
  1088. package/dist/checks/ui/form-field-consistency.js +270 -0
  1089. package/dist/checks/ui/form-field-consistency.js.map +1 -0
  1090. package/dist/checks/ui/gap-spacing-consistency.d.ts +35 -0
  1091. package/dist/checks/ui/gap-spacing-consistency.d.ts.map +1 -0
  1092. package/dist/checks/ui/gap-spacing-consistency.js +316 -0
  1093. package/dist/checks/ui/gap-spacing-consistency.js.map +1 -0
  1094. package/dist/checks/ui/header-action-text-color.d.ts +19 -0
  1095. package/dist/checks/ui/header-action-text-color.d.ts.map +1 -0
  1096. package/dist/checks/ui/header-action-text-color.js +122 -0
  1097. package/dist/checks/ui/header-action-text-color.js.map +1 -0
  1098. package/dist/checks/ui/header-vertical-alignment.d.ts +33 -0
  1099. package/dist/checks/ui/header-vertical-alignment.d.ts.map +1 -0
  1100. package/dist/checks/ui/header-vertical-alignment.js +205 -0
  1101. package/dist/checks/ui/header-vertical-alignment.js.map +1 -0
  1102. package/dist/checks/ui/image-component-check.d.ts +7 -0
  1103. package/dist/checks/ui/image-component-check.d.ts.map +1 -0
  1104. package/dist/checks/ui/image-component-check.js +92 -0
  1105. package/dist/checks/ui/image-component-check.js.map +1 -0
  1106. package/dist/checks/ui/inline-flex-gap-check.d.ts +26 -0
  1107. package/dist/checks/ui/inline-flex-gap-check.d.ts.map +1 -0
  1108. package/dist/checks/ui/inline-flex-gap-check.js +196 -0
  1109. package/dist/checks/ui/inline-flex-gap-check.js.map +1 -0
  1110. package/dist/checks/ui/inline-to-tailwind-check.d.ts +47 -0
  1111. package/dist/checks/ui/inline-to-tailwind-check.d.ts.map +1 -0
  1112. package/dist/checks/ui/inline-to-tailwind-check.js +329 -0
  1113. package/dist/checks/ui/inline-to-tailwind-check.js.map +1 -0
  1114. package/dist/checks/ui/input-label-gap.d.ts +34 -0
  1115. package/dist/checks/ui/input-label-gap.d.ts.map +1 -0
  1116. package/dist/checks/ui/input-label-gap.js +347 -0
  1117. package/dist/checks/ui/input-label-gap.js.map +1 -0
  1118. package/dist/checks/ui/input-width-consistency.d.ts +53 -0
  1119. package/dist/checks/ui/input-width-consistency.d.ts.map +1 -0
  1120. package/dist/checks/ui/input-width-consistency.js +342 -0
  1121. package/dist/checks/ui/input-width-consistency.js.map +1 -0
  1122. package/dist/checks/ui/js-responsive-visibility.d.ts +31 -0
  1123. package/dist/checks/ui/js-responsive-visibility.d.ts.map +1 -0
  1124. package/dist/checks/ui/js-responsive-visibility.js +213 -0
  1125. package/dist/checks/ui/js-responsive-visibility.js.map +1 -0
  1126. package/dist/checks/ui/label-description-spacing.d.ts +30 -0
  1127. package/dist/checks/ui/label-description-spacing.d.ts.map +1 -0
  1128. package/dist/checks/ui/label-description-spacing.js +285 -0
  1129. package/dist/checks/ui/label-description-spacing.js.map +1 -0
  1130. package/dist/checks/ui/layout-shift-detection.d.ts +31 -0
  1131. package/dist/checks/ui/layout-shift-detection.d.ts.map +1 -0
  1132. package/dist/checks/ui/layout-shift-detection.js +398 -0
  1133. package/dist/checks/ui/layout-shift-detection.js.map +1 -0
  1134. package/dist/checks/ui/margin-in-gap-container.d.ts +25 -0
  1135. package/dist/checks/ui/margin-in-gap-container.d.ts.map +1 -0
  1136. package/dist/checks/ui/margin-in-gap-container.js +619 -0
  1137. package/dist/checks/ui/margin-in-gap-container.js.map +1 -0
  1138. package/dist/checks/ui/mega-menu-dropdown-position.d.ts +25 -0
  1139. package/dist/checks/ui/mega-menu-dropdown-position.d.ts.map +1 -0
  1140. package/dist/checks/ui/mega-menu-dropdown-position.js +230 -0
  1141. package/dist/checks/ui/mega-menu-dropdown-position.js.map +1 -0
  1142. package/dist/checks/ui/mega-menu-scrollbar-overlap.d.ts +24 -0
  1143. package/dist/checks/ui/mega-menu-scrollbar-overlap.d.ts.map +1 -0
  1144. package/dist/checks/ui/mega-menu-scrollbar-overlap.js +283 -0
  1145. package/dist/checks/ui/mega-menu-scrollbar-overlap.js.map +1 -0
  1146. package/dist/checks/ui/mega-menu-spacing-check.d.ts +21 -0
  1147. package/dist/checks/ui/mega-menu-spacing-check.d.ts.map +1 -0
  1148. package/dist/checks/ui/mega-menu-spacing-check.js +244 -0
  1149. package/dist/checks/ui/mega-menu-spacing-check.js.map +1 -0
  1150. package/dist/checks/ui/notification-feedback-check.d.ts +37 -0
  1151. package/dist/checks/ui/notification-feedback-check.d.ts.map +1 -0
  1152. package/dist/checks/ui/notification-feedback-check.js +552 -0
  1153. package/dist/checks/ui/notification-feedback-check.js.map +1 -0
  1154. package/dist/checks/ui/overflow-clipping-detection.d.ts +17 -0
  1155. package/dist/checks/ui/overflow-clipping-detection.d.ts.map +1 -0
  1156. package/dist/checks/ui/overflow-clipping-detection.js +198 -0
  1157. package/dist/checks/ui/overflow-clipping-detection.js.map +1 -0
  1158. package/dist/checks/ui/page-layout-spacing.d.ts +29 -0
  1159. package/dist/checks/ui/page-layout-spacing.d.ts.map +1 -0
  1160. package/dist/checks/ui/page-layout-spacing.js +604 -0
  1161. package/dist/checks/ui/page-layout-spacing.js.map +1 -0
  1162. package/dist/checks/ui/path-alias-check.d.ts +7 -0
  1163. package/dist/checks/ui/path-alias-check.d.ts.map +1 -0
  1164. package/dist/checks/ui/path-alias-check.js +95 -0
  1165. package/dist/checks/ui/path-alias-check.js.map +1 -0
  1166. package/dist/checks/ui/product-image-animations.d.ts +70 -0
  1167. package/dist/checks/ui/product-image-animations.d.ts.map +1 -0
  1168. package/dist/checks/ui/product-image-animations.js +332 -0
  1169. package/dist/checks/ui/product-image-animations.js.map +1 -0
  1170. package/dist/checks/ui/search-width-consistency.d.ts +53 -0
  1171. package/dist/checks/ui/search-width-consistency.d.ts.map +1 -0
  1172. package/dist/checks/ui/search-width-consistency.js +276 -0
  1173. package/dist/checks/ui/search-width-consistency.js.map +1 -0
  1174. package/dist/checks/ui/section-spacing-check.d.ts +30 -0
  1175. package/dist/checks/ui/section-spacing-check.d.ts.map +1 -0
  1176. package/dist/checks/ui/section-spacing-check.js +248 -0
  1177. package/dist/checks/ui/section-spacing-check.js.map +1 -0
  1178. package/dist/checks/ui/sibling-spacing-check.d.ts +25 -0
  1179. package/dist/checks/ui/sibling-spacing-check.d.ts.map +1 -0
  1180. package/dist/checks/ui/sibling-spacing-check.js +329 -0
  1181. package/dist/checks/ui/sibling-spacing-check.js.map +1 -0
  1182. package/dist/checks/ui/sidebar-layout-gap.d.ts +34 -0
  1183. package/dist/checks/ui/sidebar-layout-gap.d.ts.map +1 -0
  1184. package/dist/checks/ui/sidebar-layout-gap.js +200 -0
  1185. package/dist/checks/ui/sidebar-layout-gap.js.map +1 -0
  1186. package/dist/checks/ui/skeleton-size-consistency.d.ts +50 -0
  1187. package/dist/checks/ui/skeleton-size-consistency.d.ts.map +1 -0
  1188. package/dist/checks/ui/skeleton-size-consistency.js +1239 -0
  1189. package/dist/checks/ui/skeleton-size-consistency.js.map +1 -0
  1190. package/dist/checks/ui/spacing-check.d.ts +7 -0
  1191. package/dist/checks/ui/spacing-check.d.ts.map +1 -0
  1192. package/dist/checks/ui/spacing-check.js +100 -0
  1193. package/dist/checks/ui/spacing-check.js.map +1 -0
  1194. package/dist/checks/ui/styling-standards.d.ts +71 -0
  1195. package/dist/checks/ui/styling-standards.d.ts.map +1 -0
  1196. package/dist/checks/ui/styling-standards.js +567 -0
  1197. package/dist/checks/ui/styling-standards.js.map +1 -0
  1198. package/dist/checks/ui/tailwind-consistency.d.ts +26 -0
  1199. package/dist/checks/ui/tailwind-consistency.d.ts.map +1 -0
  1200. package/dist/checks/ui/tailwind-consistency.js +345 -0
  1201. package/dist/checks/ui/tailwind-consistency.js.map +1 -0
  1202. package/dist/checks/ui/tailwind-contrast-check.d.ts +44 -0
  1203. package/dist/checks/ui/tailwind-contrast-check.d.ts.map +1 -0
  1204. package/dist/checks/ui/tailwind-contrast-check.js +457 -0
  1205. package/dist/checks/ui/tailwind-contrast-check.js.map +1 -0
  1206. package/dist/checks/ui/text-button-group-gap.d.ts +29 -0
  1207. package/dist/checks/ui/text-button-group-gap.d.ts.map +1 -0
  1208. package/dist/checks/ui/text-button-group-gap.js +242 -0
  1209. package/dist/checks/ui/text-button-group-gap.js.map +1 -0
  1210. package/dist/checks/ui/typography-check.d.ts +7 -0
  1211. package/dist/checks/ui/typography-check.d.ts.map +1 -0
  1212. package/dist/checks/ui/typography-check.js +114 -0
  1213. package/dist/checks/ui/typography-check.js.map +1 -0
  1214. package/dist/checks/ui/z-index-check.d.ts +25 -0
  1215. package/dist/checks/ui/z-index-check.d.ts.map +1 -0
  1216. package/dist/checks/ui/z-index-check.js +663 -0
  1217. package/dist/checks/ui/z-index-check.js.map +1 -0
  1218. package/dist/checks/zod/zod4-compatibility.d.ts +31 -0
  1219. package/dist/checks/zod/zod4-compatibility.d.ts.map +1 -0
  1220. package/dist/checks/zod/zod4-compatibility.js +412 -0
  1221. package/dist/checks/zod/zod4-compatibility.js.map +1 -0
  1222. package/dist/core/categories.d.ts +40 -0
  1223. package/dist/core/categories.d.ts.map +1 -0
  1224. package/dist/core/categories.js +153 -0
  1225. package/dist/core/categories.js.map +1 -0
  1226. package/dist/core/config.d.ts +87 -0
  1227. package/dist/core/config.d.ts.map +1 -0
  1228. package/dist/core/config.js +176 -0
  1229. package/dist/core/config.js.map +1 -0
  1230. package/dist/core/types.d.ts +194 -0
  1231. package/dist/core/types.d.ts.map +1 -0
  1232. package/dist/core/types.js +24 -0
  1233. package/dist/core/types.js.map +1 -0
  1234. package/dist/index.d.ts +37 -0
  1235. package/dist/index.d.ts.map +1 -0
  1236. package/dist/index.js +207 -0
  1237. package/dist/index.js.map +1 -0
  1238. package/dist/runner.d.ts +33 -0
  1239. package/dist/runner.d.ts.map +1 -0
  1240. package/dist/runner.js +457 -0
  1241. package/dist/runner.js.map +1 -0
  1242. package/dist/shared/concurrency-config.d.ts +57 -0
  1243. package/dist/shared/concurrency-config.d.ts.map +1 -0
  1244. package/dist/shared/concurrency-config.js +128 -0
  1245. package/dist/shared/concurrency-config.js.map +1 -0
  1246. package/dist/shared/design-tokens-config.d.ts +140 -0
  1247. package/dist/shared/design-tokens-config.d.ts.map +1 -0
  1248. package/dist/shared/design-tokens-config.js +290 -0
  1249. package/dist/shared/design-tokens-config.js.map +1 -0
  1250. package/dist/shared/design-tokens.d.ts +771 -0
  1251. package/dist/shared/design-tokens.d.ts.map +1 -0
  1252. package/dist/shared/design-tokens.js +873 -0
  1253. package/dist/shared/design-tokens.js.map +1 -0
  1254. package/dist/shared/file-cache.d.ts +379 -0
  1255. package/dist/shared/file-cache.d.ts.map +1 -0
  1256. package/dist/shared/file-cache.js +744 -0
  1257. package/dist/shared/file-cache.js.map +1 -0
  1258. package/dist/shared/glob-patterns.d.ts +200 -0
  1259. package/dist/shared/glob-patterns.d.ts.map +1 -0
  1260. package/dist/shared/glob-patterns.js +291 -0
  1261. package/dist/shared/glob-patterns.js.map +1 -0
  1262. package/dist/shared/layout-constants.d.ts +101 -0
  1263. package/dist/shared/layout-constants.d.ts.map +1 -0
  1264. package/dist/shared/layout-constants.js +172 -0
  1265. package/dist/shared/layout-constants.js.map +1 -0
  1266. package/dist/utils/config-loader.d.ts +34 -0
  1267. package/dist/utils/config-loader.d.ts.map +1 -0
  1268. package/dist/utils/config-loader.js +169 -0
  1269. package/dist/utils/config-loader.js.map +1 -0
  1270. package/dist/utils/console-chars.d.ts +388 -0
  1271. package/dist/utils/console-chars.d.ts.map +1 -0
  1272. package/dist/utils/console-chars.js +378 -0
  1273. package/dist/utils/console-chars.js.map +1 -0
  1274. package/dist/utils/file-scanner.d.ts +73 -0
  1275. package/dist/utils/file-scanner.d.ts.map +1 -0
  1276. package/dist/utils/file-scanner.js +203 -0
  1277. package/dist/utils/file-scanner.js.map +1 -0
  1278. package/dist/utils/findings-writer.d.ts +32 -0
  1279. package/dist/utils/findings-writer.d.ts.map +1 -0
  1280. package/dist/utils/findings-writer.js +69 -0
  1281. package/dist/utils/findings-writer.js.map +1 -0
  1282. package/dist/utils/plugin-loader.d.ts +76 -0
  1283. package/dist/utils/plugin-loader.d.ts.map +1 -0
  1284. package/dist/utils/plugin-loader.js +235 -0
  1285. package/dist/utils/plugin-loader.js.map +1 -0
  1286. package/dist/utils/preflight-runner.d.ts +29 -0
  1287. package/dist/utils/preflight-runner.d.ts.map +1 -0
  1288. package/dist/utils/preflight-runner.js +131 -0
  1289. package/dist/utils/preflight-runner.js.map +1 -0
  1290. package/dist/utils/progress-reporter.d.ts +92 -0
  1291. package/dist/utils/progress-reporter.d.ts.map +1 -0
  1292. package/dist/utils/progress-reporter.js +272 -0
  1293. package/dist/utils/progress-reporter.js.map +1 -0
  1294. package/package.json +78 -0
  1295. package/templates/domain-specific/trading-card-system/tcg-seed-validation.ts +197 -0
  1296. package/templates/new-check.ts.template +205 -0
  1297. package/templates/preflight.config.ts.template +103 -0
@@ -0,0 +1,1239 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * Skeleton Size Consistency Preflight Check (Enhanced)
5
+ *
6
+ * Comprehensive validation that skeleton components match their corresponding
7
+ * real components to prevent Cumulative Layout Shift (CLS) during loading.
8
+ *
9
+ * BLOCKING: No (warning only - helps catch CLS issues before they ship)
10
+ *
11
+ * Run: pnpm preflight:skeleton-size
12
+ *
13
+ * Checks:
14
+ * 1. KNOWN MAPPINGS - Validates skeleton heights against expected component heights
15
+ * 2. STRUCTURAL MAPPINGS - Validates skeleton elements match component structure
16
+ * - Detects missing placeholders for component elements
17
+ * - Detects stale placeholders for removed elements
18
+ * - Compares action button counts between skeleton and component
19
+ * 3. AUTO-DISCOVERY - Finds skeleton/component pairs by naming convention
20
+ * 4. RESPONSIVE ANALYSIS - Compares mobile vs desktop height definitions
21
+ * 5. STRUCTURE MATCHING - Validates loading.tsx structure matches page structure
22
+ * 6. ELEMENT COUNT - Checks skeleton element counts match actual components
23
+ * 7. GRID PATTERNS - Validates grid column counts match between skeleton and page
24
+ * 8. DOCUMENTATION - Ensures skeletons document what they mirror
25
+ * 9. SPACING TOKENS - Validates consistent spacing between skeleton and component
26
+ * 10. DESIGN TOKEN CONSISTENCY - Validates CSS variables match between pairs
27
+ * 11. BORDER/SHADOW CONSISTENCY - Validates visual styling matches
28
+ * 12. ARIA/ACCESSIBILITY - Validates skeleton has proper aria-labels
29
+ * 13. ICON PLACEHOLDER VALIDATION - Validates icon placeholders match actual icons
30
+ */
31
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ var desc = Object.getOwnPropertyDescriptor(m, k);
34
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
35
+ desc = { enumerable: true, get: function() { return m[k]; } };
36
+ }
37
+ Object.defineProperty(o, k2, desc);
38
+ }) : (function(o, m, k, k2) {
39
+ if (k2 === undefined) k2 = k;
40
+ o[k2] = m[k];
41
+ }));
42
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
43
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
44
+ }) : function(o, v) {
45
+ o["default"] = v;
46
+ });
47
+ var __importStar = (this && this.__importStar) || (function () {
48
+ var ownKeys = function(o) {
49
+ ownKeys = Object.getOwnPropertyNames || function (o) {
50
+ var ar = [];
51
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
52
+ return ar;
53
+ };
54
+ return ownKeys(o);
55
+ };
56
+ return function (mod) {
57
+ if (mod && mod.__esModule) return mod;
58
+ var result = {};
59
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
60
+ __setModuleDefault(result, mod);
61
+ return result;
62
+ };
63
+ })();
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
66
+ exports.checkSkeletonSizeConsistency = checkSkeletonSizeConsistency;
67
+ const fs = __importStar(require("fs"));
68
+ const glob_1 = require("glob");
69
+ const path = __importStar(require("path"));
70
+ const console_chars_1 = require("../../utils/console-chars");
71
+ const glob_patterns_1 = require("../../shared/glob-patterns");
72
+ // Check metadata
73
+ exports.id = "ui/skeleton-size-consistency";
74
+ exports.name = "Skeleton Size Consistency";
75
+ exports.category = "ui";
76
+ exports.blocking = false;
77
+ exports.description = "Skeleton Size Consistency Preflight Check (Enhanced)";
78
+ exports.tags = ["ui"];
79
+ // CONSTANTS
80
+ const TAILWIND_SPACING = {
81
+ "0": 0,
82
+ px: 1,
83
+ "0.5": 2,
84
+ "1": 4,
85
+ "1.5": 6,
86
+ "2": 8,
87
+ "2.5": 10,
88
+ "3": 12,
89
+ "3.5": 14,
90
+ "4": 16,
91
+ "5": 20,
92
+ "6": 24,
93
+ "7": 28,
94
+ "8": 32,
95
+ "9": 36,
96
+ "10": 40,
97
+ "11": 44,
98
+ "12": 48,
99
+ "14": 56,
100
+ "16": 64,
101
+ "20": 80,
102
+ "24": 96,
103
+ "28": 112,
104
+ "32": 128,
105
+ "36": 144,
106
+ "40": 160,
107
+ "44": 176,
108
+ "48": 192,
109
+ "52": 208,
110
+ "56": 224,
111
+ "60": 240,
112
+ "64": 256,
113
+ "72": 288,
114
+ "80": 320,
115
+ "96": 384,
116
+ };
117
+ const BREAKPOINTS = ["base", "sm", "md", "lg", "xl", "2xl"];
118
+ // Known skeleton-to-component mappings with expected heights
119
+ const KNOWN_MAPPINGS = [
120
+ {
121
+ skeleton: "components/shared/HeaderSkeleton.tsx",
122
+ component: "components/UnifiedHeader.tsx",
123
+ name: "NavigationHeader",
124
+ expectedHeight: { min: 100, max: 130 },
125
+ },
126
+ ];
127
+ const STRUCTURAL_MAPPINGS = [
128
+ {
129
+ skeleton: "components/shared/HeaderSkeleton.tsx",
130
+ component: "components/UnifiedHeader.tsx",
131
+ name: "HeaderSkeleton",
132
+ expectedElements: [
133
+ {
134
+ // SellButton should have a skeleton placeholder on desktop
135
+ skeletonPattern: /SellButton|width={80}.*hidden sm:block.*rounded-lg/s,
136
+ componentPattern: /<SellButton|showSellButton/,
137
+ description: "SellButton placeholder (desktop)",
138
+ breakpoint: "sm",
139
+ severity: "warning",
140
+ },
141
+ {
142
+ // Theme toggle should have skeleton on desktop
143
+ skeletonPattern: /Theme toggle|hidden sm:block.*circular/s,
144
+ componentPattern: /toggleTheme|<HeaderIconButton.*Moon|Sun/s,
145
+ description: "Theme toggle placeholder (desktop)",
146
+ breakpoint: "sm",
147
+ severity: "warning",
148
+ },
149
+ {
150
+ // Mobile search should have skeleton on mobile
151
+ skeletonPattern: /Mobile search|block md:hidden.*circular/s,
152
+ componentPattern: /<MobileSearch|showMobileSearchButton/,
153
+ description: "Mobile search placeholder",
154
+ breakpoint: "base",
155
+ severity: "warning",
156
+ },
157
+ {
158
+ // Core action buttons: notifications, wishlist, cart, user
159
+ skeletonPattern: /NotificationsBell|circular.*width={40}.*height={40}/s,
160
+ componentPattern: /<NotificationsBell/,
161
+ description: "NotificationsBell placeholder",
162
+ breakpoint: "base",
163
+ severity: "warning",
164
+ },
165
+ {
166
+ skeletonPattern: /WishlistDrawer|circular.*width={40}.*height={40}/s,
167
+ componentPattern: /<WishlistDrawer/,
168
+ description: "WishlistDrawer placeholder",
169
+ breakpoint: "base",
170
+ severity: "warning",
171
+ },
172
+ {
173
+ skeletonPattern: /CartDrawer|circular.*width={40}.*height={40}/s,
174
+ componentPattern: /<CartDrawer/,
175
+ description: "CartDrawer placeholder",
176
+ breakpoint: "base",
177
+ severity: "warning",
178
+ },
179
+ {
180
+ skeletonPattern: /UserMenu|circular.*width={40}.*height={40}/s,
181
+ componentPattern: /<UserMenu/,
182
+ description: "UserMenu placeholder",
183
+ breakpoint: "base",
184
+ severity: "warning",
185
+ },
186
+ {
187
+ // Desktop search bar
188
+ skeletonPattern: /hidden md:block.*Search|SearchBar/s,
189
+ componentPattern: /<SearchBar|<DesktopSearchWrapper/,
190
+ description: "Desktop search bar placeholder",
191
+ breakpoint: "md",
192
+ severity: "warning",
193
+ },
194
+ {
195
+ // Navigation/MegaMenu
196
+ skeletonPattern: /<nav|MegaMenu/,
197
+ componentPattern: /<MegaMenu|showNavigation/,
198
+ description: "Navigation/MegaMenu placeholder",
199
+ breakpoint: "base",
200
+ severity: "warning",
201
+ },
202
+ ],
203
+ },
204
+ {
205
+ skeleton: "components/shared/HeaderSkeleton.tsx",
206
+ component: "components/shared/UnifiedBreadcrumbs.tsx",
207
+ name: "BreadcrumbSkeleton",
208
+ expectedElements: [
209
+ {
210
+ // ChevronRight separator (not "/" slash)
211
+ skeletonPattern: /ChevronRight|m9 18 6-6-6-6|path.*d="m9 18/,
212
+ componentPattern: /<ChevronRight/,
213
+ description: "ChevronRight separator icon",
214
+ breakpoint: "base",
215
+ severity: "warning",
216
+ },
217
+ {
218
+ // Home icon placeholder for first breadcrumb item
219
+ skeletonPattern: /Home icon|width={16}.*height={16}.*rounded/s,
220
+ componentPattern: /<Home|showHomeIcon/,
221
+ description: "Home icon placeholder",
222
+ breakpoint: "base",
223
+ severity: "warning",
224
+ },
225
+ {
226
+ // Background should be bg-secondary (not bg-primary)
227
+ skeletonPattern: /bg-secondary|--bg-secondary/,
228
+ componentPattern: /bg-secondary|--bg-secondary/,
229
+ description: "Background color (bg-secondary)",
230
+ breakpoint: "base",
231
+ severity: "warning",
232
+ },
233
+ {
234
+ // Proper nav element with aria-label
235
+ skeletonPattern: /<nav.*aria-label/s,
236
+ componentPattern: /<nav.*aria-label/s,
237
+ description: "Accessible nav element",
238
+ breakpoint: "base",
239
+ severity: "warning",
240
+ },
241
+ ],
242
+ },
243
+ ];
244
+ // Layout components that include UnifiedHeader by default
245
+ const LAYOUTS_WITH_HEADER = [
246
+ "DashboardPageLayout",
247
+ "StandardPageLayout",
248
+ "ContentLayout",
249
+ "SellerPageLayout",
250
+ "AccountPageLayout",
251
+ "AdminPageLayout",
252
+ "CategoryBrowseLoadingSkeleton",
253
+ "MarketplaceGridLoadingSkeleton",
254
+ ];
255
+ // EXTRACTION FUNCTIONS
256
+ function extractHeights(content, containerOnly = true) {
257
+ const heights = [];
258
+ const lines = content.split("\n");
259
+ lines.forEach((line, index) => {
260
+ if (line.trim().startsWith("//") || line.trim().startsWith("*"))
261
+ return;
262
+ // Skip lines that are skeleton element props (height={...} on UnifiedSkeleton)
263
+ if (containerOnly && (line.includes("UnifiedSkeleton") || line.includes("<Skeleton"))) {
264
+ return;
265
+ }
266
+ // Skip lines with height as a prop (height={32}, height: 32, etc.)
267
+ if (containerOnly && /height[=:]\s*[{"]?\d+[}"]?/.test(line) && !line.includes("minHeight")) {
268
+ // Only skip if it looks like a component prop, not a style object for a container
269
+ if (line.includes("variant=") || line.includes("width=")) {
270
+ return;
271
+ }
272
+ }
273
+ // Extract Tailwind height classes with breakpoint prefixes
274
+ // Only match min-h-* for containers (h-* is usually for specific elements)
275
+ for (const bp of BREAKPOINTS) {
276
+ const prefix = bp === "base" ? "" : `${bp}:`;
277
+ // Match min-h-{number} or min-h-[{number}px] patterns
278
+ // Note: \b doesn't work well with [ so we use a simpler pattern
279
+ const regex = new RegExp(bp === "base" ? `(?<![a-z]:)min-h-(\\d+|\\[\\d+px\\])` : `${bp}:min-h-(\\d+|\\[\\d+px\\])`, "g");
280
+ let match;
281
+ while ((match = regex.exec(line)) !== null) {
282
+ const twValue = match[1].replace(/[\[\]px]/g, "");
283
+ const pixels = TAILWIND_SPACING[twValue] ?? parseInt(twValue);
284
+ if (pixels && pixels >= 20) {
285
+ heights.push({
286
+ value: pixels,
287
+ source: bp === "base" ? `min-h-${twValue}` : `${bp}:min-h-${twValue}`,
288
+ line: index + 1,
289
+ breakpoint: bp,
290
+ });
291
+ }
292
+ }
293
+ }
294
+ // Extract inline minHeight styles (for container divs, not skeleton props)
295
+ // Only if it's in a style object context
296
+ if (line.includes("minHeight") && line.includes("style")) {
297
+ const inlineHeightMatch = line.match(/minHeight:\s*["']?(\d+)(?:px)?["']?/);
298
+ if (inlineHeightMatch) {
299
+ const pixels = parseInt(inlineHeightMatch[1]);
300
+ if (pixels >= 20) {
301
+ heights.push({
302
+ value: pixels,
303
+ source: `minHeight: ${pixels}px`,
304
+ line: index + 1,
305
+ breakpoint: "base",
306
+ });
307
+ }
308
+ }
309
+ }
310
+ });
311
+ return heights;
312
+ }
313
+ function extractGrids(content) {
314
+ const grids = [];
315
+ const lines = content.split("\n");
316
+ lines.forEach((line, index) => {
317
+ for (const bp of BREAKPOINTS) {
318
+ const prefix = bp === "base" ? "" : `${bp}:`;
319
+ const regex = new RegExp(`${prefix.replace(":", "\\:")}grid-cols-(\\d+)`, "g");
320
+ let match;
321
+ while ((match = regex.exec(line)) !== null) {
322
+ grids.push({
323
+ columns: parseInt(match[1]),
324
+ breakpoint: bp,
325
+ line: index + 1,
326
+ });
327
+ }
328
+ }
329
+ });
330
+ return grids;
331
+ }
332
+ function countSkeletonElements(content) {
333
+ const skeletonMatches = content.match(/<UnifiedSkeleton|<Skeleton/g);
334
+ return skeletonMatches?.length ?? 0;
335
+ }
336
+ function extractMirrorsComment(content) {
337
+ const mirrorsMatch = content.match(/(?:mirrors?|matches?|same as|dimensions of)\s+([A-Z][a-zA-Z]+)/i);
338
+ return mirrorsMatch?.[1];
339
+ }
340
+ function hasDocumentation(content) {
341
+ return /Heights:|Matches|mirrors|dimensions of|same as|Total:.*px/i.test(content);
342
+ }
343
+ function calculateTotalHeightByBreakpoint(heights) {
344
+ const totals = {};
345
+ for (const bp of BREAKPOINTS) {
346
+ const bpHeights = heights.filter((h) => h.breakpoint === bp);
347
+ if (bpHeights.length > 0) {
348
+ totals[bp] = bpHeights.reduce((sum, h) => sum + h.value, 0);
349
+ }
350
+ }
351
+ // Inherit from smaller breakpoints if not defined
352
+ let lastValue = totals["base"] ?? 0;
353
+ for (const bp of BREAKPOINTS) {
354
+ if (totals[bp] === undefined && lastValue > 0) {
355
+ totals[bp] = lastValue;
356
+ }
357
+ else if (totals[bp] !== undefined) {
358
+ lastValue = totals[bp];
359
+ }
360
+ }
361
+ return totals;
362
+ }
363
+ // ANALYSIS FUNCTIONS
364
+ function analyzeSkeletonFile(filePath) {
365
+ const content = fs.readFileSync(filePath, "utf8");
366
+ const heights = extractHeights(content, true); // containerOnly = true
367
+ const grids = extractGrids(content);
368
+ return {
369
+ file: filePath,
370
+ heights,
371
+ grids,
372
+ skeletonCount: countSkeletonElements(content),
373
+ hasDocumentation: hasDocumentation(content),
374
+ mirrorsComponent: extractMirrorsComment(content),
375
+ totalHeightByBreakpoint: calculateTotalHeightByBreakpoint(heights),
376
+ };
377
+ }
378
+ function analyzeComponentFile(filePath) {
379
+ const content = fs.readFileSync(filePath, "utf8");
380
+ const heights = extractHeights(content, true); // containerOnly = true
381
+ const grids = extractGrids(content);
382
+ // Extract common element patterns
383
+ const elementPatterns = [];
384
+ if (content.includes("map("))
385
+ elementPatterns.push("mapped-list");
386
+ if (content.includes("grid"))
387
+ elementPatterns.push("grid-layout");
388
+ if (content.includes("flex"))
389
+ elementPatterns.push("flex-layout");
390
+ return {
391
+ file: filePath,
392
+ heights,
393
+ grids,
394
+ elementPatterns,
395
+ totalHeightByBreakpoint: calculateTotalHeightByBreakpoint(heights),
396
+ };
397
+ }
398
+ // VALIDATION FUNCTIONS
399
+ async function validateKnownMappings() {
400
+ const issues = [];
401
+ for (const mapping of KNOWN_MAPPINGS) {
402
+ if (!fs.existsSync(mapping.skeleton))
403
+ continue;
404
+ const skeleton = analyzeSkeletonFile(mapping.skeleton);
405
+ const baseHeight = skeleton.totalHeightByBreakpoint["base"] ?? 0;
406
+ if (baseHeight < mapping.expectedHeight.min) {
407
+ issues.push({
408
+ file: mapping.skeleton,
409
+ line: skeleton.heights[0]?.line ?? 1,
410
+ severity: "error",
411
+ category: "HEIGHT_MISMATCH",
412
+ message: `${mapping.name} skeleton is too small (${baseHeight}px)`,
413
+ suggestion: `Increase container heights to ${mapping.expectedHeight.min}-${mapping.expectedHeight.max}px to match ${mapping.name}`,
414
+ details: {
415
+ actual: baseHeight,
416
+ expectedMin: mapping.expectedHeight.min,
417
+ expectedMax: mapping.expectedHeight.max,
418
+ },
419
+ });
420
+ }
421
+ else if (baseHeight > mapping.expectedHeight.max * 1.5) {
422
+ issues.push({
423
+ file: mapping.skeleton,
424
+ line: skeleton.heights[0]?.line ?? 1,
425
+ severity: "warning",
426
+ category: "HEIGHT_MISMATCH",
427
+ message: `${mapping.name} skeleton may be too large (${baseHeight}px)`,
428
+ suggestion: `Verify heights match ${mapping.name}. Oversized skeletons cause content to jump up.`,
429
+ details: {
430
+ actual: baseHeight,
431
+ expectedMin: mapping.expectedHeight.min,
432
+ expectedMax: mapping.expectedHeight.max,
433
+ },
434
+ });
435
+ }
436
+ }
437
+ return issues;
438
+ }
439
+ /**
440
+ * Validates that skeleton structure matches the actual component structure.
441
+ * This catches drift where the skeleton shows different elements than what actually renders.
442
+ */
443
+ async function validateStructuralMappings() {
444
+ const issues = [];
445
+ for (const mapping of STRUCTURAL_MAPPINGS) {
446
+ if (!fs.existsSync(mapping.skeleton) || !fs.existsSync(mapping.component)) {
447
+ continue;
448
+ }
449
+ const skeletonContent = fs.readFileSync(mapping.skeleton, "utf8");
450
+ const componentContent = fs.readFileSync(mapping.component, "utf8");
451
+ for (const element of mapping.expectedElements) {
452
+ const componentHasElement = element.componentPattern.test(componentContent);
453
+ const skeletonHasElement = element.skeletonPattern.test(skeletonContent);
454
+ // Component has element but skeleton doesn't - skeleton is missing placeholder
455
+ if (componentHasElement && !skeletonHasElement) {
456
+ issues.push({
457
+ file: mapping.skeleton,
458
+ line: 1,
459
+ severity: element.severity,
460
+ category: "STRUCTURE_DRIFT",
461
+ message: `${mapping.name} missing placeholder for: ${element.description}`,
462
+ suggestion: `Add skeleton placeholder for ${element.description} to match ${path.basename(mapping.component)}`,
463
+ details: {
464
+ element: element.description,
465
+ breakpoint: element.breakpoint ?? "base",
466
+ },
467
+ });
468
+ }
469
+ // Skeleton has element but component doesn't - skeleton has stale placeholder
470
+ if (skeletonHasElement && !componentHasElement) {
471
+ issues.push({
472
+ file: mapping.skeleton,
473
+ line: 1,
474
+ severity: "info",
475
+ category: "STRUCTURE_DRIFT",
476
+ message: `${mapping.name} has placeholder for removed element: ${element.description}`,
477
+ suggestion: `Remove skeleton placeholder for ${element.description} - no longer in ${path.basename(mapping.component)}`,
478
+ details: {
479
+ element: element.description,
480
+ breakpoint: element.breakpoint ?? "base",
481
+ },
482
+ });
483
+ }
484
+ }
485
+ // Count skeleton elements vs component interactive elements
486
+ // Only run this check for header-related mappings (not breadcrumbs, etc.)
487
+ const isHeaderMapping = mapping.name.toLowerCase().includes("header") &&
488
+ !mapping.name.toLowerCase().includes("breadcrumb");
489
+ if (isHeaderMapping) {
490
+ const skeletonCircularCount = (skeletonContent.match(/variant="circular"/g) || []).length;
491
+ const componentButtonCount = (componentContent.match(/<HeaderIconButton|<UserMenu|<NotificationsBell|<WishlistDrawer|<CartDrawer|<SellButton/g) || []).length;
492
+ // Allow some variance (skeleton might show fewer on mobile)
493
+ if (Math.abs(skeletonCircularCount - componentButtonCount) > 3) {
494
+ issues.push({
495
+ file: mapping.skeleton,
496
+ line: 1,
497
+ severity: "warning",
498
+ category: "ELEMENT_COUNT_DRIFT",
499
+ message: `${mapping.name} has ${skeletonCircularCount} circular skeletons but component has ~${componentButtonCount} action buttons`,
500
+ suggestion: "Review skeleton to ensure action button placeholders match actual component",
501
+ details: {
502
+ skeletonCount: skeletonCircularCount,
503
+ componentCount: componentButtonCount,
504
+ },
505
+ });
506
+ }
507
+ }
508
+ }
509
+ return issues;
510
+ }
511
+ async function validateAutoDiscoveredPairs() {
512
+ const issues = [];
513
+ // Find skeleton files and try to match them to components
514
+ const skeletonFiles = await (0, glob_1.glob)("components/**/*[Ss]keleton*.tsx", {
515
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
516
+ });
517
+ for (const skeletonFile of skeletonFiles) {
518
+ const skeleton = analyzeSkeletonFile(skeletonFile);
519
+ // Try to find matching component by name
520
+ const baseName = path
521
+ .basename(skeletonFile)
522
+ .replace(/Skeleton/gi, "")
523
+ .replace(/Loading/gi, "")
524
+ .replace(".tsx", "");
525
+ if (!baseName || baseName.length < 3)
526
+ continue;
527
+ // Look for component with similar name
528
+ const possibleComponents = await (0, glob_1.glob)(`components/**/${baseName}*.tsx`, {
529
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
530
+ });
531
+ const componentFile = possibleComponents.find((f) => !f.includes("Skeleton") && !f.includes("Loading"));
532
+ if (componentFile && fs.existsSync(componentFile)) {
533
+ const component = analyzeComponentFile(componentFile);
534
+ // Compare grid columns
535
+ for (const bp of BREAKPOINTS) {
536
+ const skeletonGrid = skeleton.grids.find((g) => g.breakpoint === bp);
537
+ const componentGrid = component.grids.find((g) => g.breakpoint === bp);
538
+ if (skeletonGrid && componentGrid && skeletonGrid.columns !== componentGrid.columns) {
539
+ issues.push({
540
+ file: skeletonFile,
541
+ line: skeletonGrid.line,
542
+ severity: "warning",
543
+ category: "GRID_MISMATCH",
544
+ message: `Grid columns mismatch at ${bp} breakpoint`,
545
+ suggestion: `Skeleton has ${skeletonGrid.columns} columns but component has ${componentGrid.columns}`,
546
+ details: {
547
+ breakpoint: bp,
548
+ skeletonCols: skeletonGrid.columns,
549
+ componentCols: componentGrid.columns,
550
+ },
551
+ });
552
+ }
553
+ }
554
+ }
555
+ }
556
+ return issues;
557
+ }
558
+ async function validateLoadingFiles() {
559
+ const issues = [];
560
+ const loadingFiles = await (0, glob_1.glob)("app/**/loading.tsx", { ignore: [...glob_patterns_1.STANDARD_EXCLUDES] });
561
+ for (const loadingFile of loadingFiles) {
562
+ const loadingContent = fs.readFileSync(loadingFile, "utf8");
563
+ const dir = path.dirname(loadingFile);
564
+ const pageFile = path.join(dir, "page.tsx");
565
+ // Check HeaderSkeleton usage
566
+ if (loadingContent.includes("HeaderSkeleton")) {
567
+ const hasHeaderProvider = await checkHeaderProvider(dir);
568
+ if (!hasHeaderProvider) {
569
+ issues.push({
570
+ file: loadingFile,
571
+ line: 1,
572
+ severity: "warning",
573
+ category: "STRUCTURE_MISMATCH",
574
+ message: "HeaderSkeleton used but no header found in page hierarchy",
575
+ suggestion: "Remove HeaderSkeleton or add header to layout/page",
576
+ });
577
+ }
578
+ }
579
+ // Check BreadcrumbSkeleton usage
580
+ if (loadingContent.includes("BreadcrumbSkeleton")) {
581
+ const hasBreadcrumbs = await checkBreadcrumbProvider(dir);
582
+ if (!hasBreadcrumbs) {
583
+ issues.push({
584
+ file: loadingFile,
585
+ line: 1,
586
+ severity: "info",
587
+ category: "STRUCTURE_MISMATCH",
588
+ message: "BreadcrumbSkeleton used but no breadcrumbs found in page hierarchy",
589
+ suggestion: "Verify page renders UnifiedBreadcrumbs or remove BreadcrumbSkeleton",
590
+ });
591
+ }
592
+ }
593
+ // Compare loading.tsx structure with page.tsx
594
+ if (fs.existsSync(pageFile)) {
595
+ const pageContent = fs.readFileSync(pageFile, "utf8");
596
+ // Check grid consistency
597
+ const loadingGrids = extractGrids(loadingContent);
598
+ const pageGrids = extractGrids(pageContent);
599
+ // Find the client component if page delegates to one
600
+ const clientMatch = pageContent.match(/import\s*{\s*(\w+Client)\s*}/);
601
+ if (clientMatch) {
602
+ const clientName = clientMatch[1];
603
+ const clientFiles = await (0, glob_1.glob)(`${dir}/${clientName}.tsx`, {
604
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
605
+ });
606
+ if (clientFiles.length > 0) {
607
+ const clientContent = fs.readFileSync(clientFiles[0], "utf8");
608
+ const clientGrids = extractGrids(clientContent);
609
+ pageGrids.push(...clientGrids);
610
+ }
611
+ }
612
+ // Compare base grid columns
613
+ const loadingBaseCols = loadingGrids.find((g) => g.breakpoint === "base")?.columns;
614
+ const pageBaseCols = pageGrids.find((g) => g.breakpoint === "base")?.columns;
615
+ if (loadingBaseCols && pageBaseCols && loadingBaseCols !== pageBaseCols) {
616
+ issues.push({
617
+ file: loadingFile,
618
+ line: loadingGrids[0]?.line ?? 1,
619
+ severity: "warning",
620
+ category: "GRID_MISMATCH",
621
+ message: `Loading skeleton grid (${loadingBaseCols} cols) doesn't match page grid (${pageBaseCols} cols)`,
622
+ suggestion: "Align grid-cols-X classes between loading.tsx and page component",
623
+ });
624
+ }
625
+ // Check for mapped list count mismatches
626
+ const loadingArrayLength = loadingContent.match(/\[([^\]]+)\]\.map/g)?.map((m) => {
627
+ const nums = m.match(/\d+/g);
628
+ return nums ? nums.length : 0;
629
+ }) ?? [];
630
+ // Warn if skeleton shows significantly different item count
631
+ const maxSkeletonItems = Math.max(...loadingArrayLength, 0);
632
+ if (maxSkeletonItems > 0 && maxSkeletonItems < 3) {
633
+ issues.push({
634
+ file: loadingFile,
635
+ line: 1,
636
+ severity: "info",
637
+ category: "ITEM_COUNT",
638
+ message: `Skeleton shows only ${maxSkeletonItems} placeholder items`,
639
+ suggestion: "Consider showing 3-6 skeleton items for better perceived loading",
640
+ });
641
+ }
642
+ // Check for Footer consistency
643
+ const loadingHasFooter = loadingContent.includes("Footer") || loadingContent.includes("footer");
644
+ const pageHasFooter = pageContent.includes("<Footer") || pageContent.includes("Footer />");
645
+ if (pageHasFooter && !loadingHasFooter) {
646
+ issues.push({
647
+ file: loadingFile,
648
+ line: 1,
649
+ severity: "info",
650
+ category: "STRUCTURE_MISMATCH",
651
+ message: "Page has Footer but loading skeleton does not",
652
+ suggestion: "Consider adding Footer to loading.tsx for consistent page height",
653
+ });
654
+ }
655
+ }
656
+ }
657
+ return issues;
658
+ }
659
+ async function checkHeaderProvider(dir) {
660
+ let currentDir = dir;
661
+ while (currentDir.includes("app")) {
662
+ for (const file of ["layout.tsx", "page.tsx"]) {
663
+ const filePath = path.join(currentDir, file);
664
+ if (fs.existsSync(filePath)) {
665
+ const content = fs.readFileSync(filePath, "utf8");
666
+ if (content.includes("UnifiedHeader") ||
667
+ content.includes("AppHeader") ||
668
+ LAYOUTS_WITH_HEADER.some((l) => content.includes(l))) {
669
+ return true;
670
+ }
671
+ }
672
+ }
673
+ const parentDir = path.dirname(currentDir);
674
+ if (parentDir === currentDir)
675
+ break;
676
+ currentDir = parentDir;
677
+ }
678
+ return false;
679
+ }
680
+ async function checkBreadcrumbProvider(dir) {
681
+ let currentDir = dir;
682
+ // Layout components that include breadcrumbs by default
683
+ const LAYOUTS_WITH_BREADCRUMBS = [
684
+ "DashboardPageLayout",
685
+ "StandardPageLayout",
686
+ "ContentLayout",
687
+ "SellerPageLayout",
688
+ "AccountPageLayout",
689
+ "AdminPageLayout",
690
+ ];
691
+ // Helper to check if content uses breadcrumb-providing layouts
692
+ const contentHasBreadcrumbs = (content) => {
693
+ return (content.includes("UnifiedBreadcrumbs") ||
694
+ content.includes("Breadcrumb") ||
695
+ LAYOUTS_WITH_BREADCRUMBS.some((l) => content.includes(l)));
696
+ };
697
+ // Helper to check client component files referenced in a page
698
+ const checkClientComponents = async (pageContent, pageDir) => {
699
+ // Match imports from relative paths like:
700
+ // import { DashboardPageClient } from "./DashboardPageClient"
701
+ // import SomeClient from "./SomeClient"
702
+ const importMatches = [...pageContent.matchAll(/from\s+["']\.\/([^"']+)["']/g)];
703
+ for (const match of importMatches) {
704
+ const importPath = match[1];
705
+ // Check if this looks like a client component (contains Client or Page)
706
+ if (importPath.includes("Client") || importPath.includes("Page")) {
707
+ // Normalize path separators for cross-platform compatibility
708
+ const normalizedDir = pageDir.replace(/\\/g, "/");
709
+ const clientFilePath = `${normalizedDir}/${importPath}.tsx`;
710
+ if (fs.existsSync(clientFilePath)) {
711
+ const clientContent = fs.readFileSync(clientFilePath, "utf8");
712
+ if (contentHasBreadcrumbs(clientContent)) {
713
+ return true;
714
+ }
715
+ }
716
+ }
717
+ }
718
+ return false;
719
+ };
720
+ while (currentDir.includes("app")) {
721
+ for (const file of ["layout.tsx", "page.tsx"]) {
722
+ const filePath = path.join(currentDir, file);
723
+ if (fs.existsSync(filePath)) {
724
+ const content = fs.readFileSync(filePath, "utf8");
725
+ if (contentHasBreadcrumbs(content)) {
726
+ return true;
727
+ }
728
+ // Also check client components imported by this page
729
+ if (file === "page.tsx" && (await checkClientComponents(content, currentDir))) {
730
+ return true;
731
+ }
732
+ }
733
+ }
734
+ const parentDir = path.dirname(currentDir);
735
+ if (parentDir === currentDir)
736
+ break;
737
+ currentDir = parentDir;
738
+ }
739
+ // Also check ALL child pages in the original directory tree
740
+ // This catches cases where loading.tsx is at /store but pages are at /store/dashboard, etc.
741
+ try {
742
+ // Normalize dir to use forward slashes for glob
743
+ const normalizedDir = dir.replace(/\\/g, "/");
744
+ const childPages = await (0, glob_1.glob)(`${normalizedDir}/**/page.tsx`, {
745
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
746
+ });
747
+ for (const childPage of childPages) {
748
+ const content = fs.readFileSync(childPage, "utf8");
749
+ if (contentHasBreadcrumbs(content)) {
750
+ return true;
751
+ }
752
+ // Check client components imported by child pages
753
+ const childDir = path.dirname(childPage);
754
+ if (await checkClientComponents(content, childDir)) {
755
+ return true;
756
+ }
757
+ }
758
+ }
759
+ catch {
760
+ // Ignore glob errors
761
+ }
762
+ return false;
763
+ }
764
+ async function validateSkeletonDocumentation() {
765
+ const issues = [];
766
+ const skeletonFiles = await (0, glob_1.glob)("components/**/*[Ss]keleton*.tsx", {
767
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
768
+ });
769
+ const sharedSkeletons = await (0, glob_1.glob)("components/shared/skeletons/**/*.tsx", {
770
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
771
+ });
772
+ const allSkeletons = [...new Set([...skeletonFiles, ...sharedSkeletons])];
773
+ for (const file of allSkeletons) {
774
+ const skeleton = analyzeSkeletonFile(file);
775
+ // Check documentation
776
+ if (skeleton.heights.length > 0 && !skeleton.hasDocumentation) {
777
+ issues.push({
778
+ file,
779
+ line: 1,
780
+ severity: "info",
781
+ category: "DOCUMENTATION",
782
+ message: "Skeleton lacks height documentation",
783
+ suggestion: "Add JSDoc comment with Heights: section documenting expected dimensions",
784
+ });
785
+ }
786
+ // Check for responsive consistency
787
+ const breakpointsUsed = new Set(skeleton.heights.map((h) => h.breakpoint));
788
+ if (breakpointsUsed.size > 1) {
789
+ const baseHeight = skeleton.totalHeightByBreakpoint["base"];
790
+ const mdHeight = skeleton.totalHeightByBreakpoint["md"];
791
+ if (baseHeight && mdHeight && Math.abs(baseHeight - mdHeight) > 50) {
792
+ // This is expected for responsive designs, just info
793
+ issues.push({
794
+ file,
795
+ line: 1,
796
+ severity: "info",
797
+ category: "RESPONSIVE",
798
+ message: `Large height difference between mobile (${baseHeight}px) and desktop (${mdHeight}px)`,
799
+ suggestion: "Verify this matches the actual component responsive behavior",
800
+ });
801
+ }
802
+ }
803
+ }
804
+ return issues;
805
+ }
806
+ async function validateSpacingConsistency() {
807
+ const issues = [];
808
+ const loadingFiles = await (0, glob_1.glob)("app/**/loading.tsx", { ignore: [...glob_patterns_1.STANDARD_EXCLUDES] });
809
+ for (const loadingFile of loadingFiles) {
810
+ const content = fs.readFileSync(loadingFile, "utf8");
811
+ const dir = path.dirname(loadingFile);
812
+ const pageFile = path.join(dir, "page.tsx");
813
+ if (!fs.existsSync(pageFile))
814
+ continue;
815
+ const pageContent = fs.readFileSync(pageFile, "utf8");
816
+ // Extract OUTER container spacing (first few lines typically define the main wrapper)
817
+ const loadingLines = content.split("\n").slice(0, 30);
818
+ const pageLines = pageContent.split("\n").slice(0, 50);
819
+ // Look for main container padding patterns
820
+ const loadingOuterPadding = loadingLines
821
+ .join("\n")
822
+ .match(/className="[^"]*\b(px?-\d+)[^"]*"/)?.[1];
823
+ const pageOuterPadding = pageLines.join("\n").match(/className="[^"]*\b(px?-\d+)[^"]*"/)?.[1];
824
+ // Only compare if both have outer padding defined
825
+ if (loadingOuterPadding && pageOuterPadding && loadingOuterPadding !== pageOuterPadding) {
826
+ // Check if they're significantly different
827
+ const loadingVal = TAILWIND_SPACING[loadingOuterPadding.replace(/p[xy]?-/, "")] ?? 0;
828
+ const pageVal = TAILWIND_SPACING[pageOuterPadding.replace(/p[xy]?-/, "")] ?? 0;
829
+ // Only warn if difference is >= 8px (2 spacing units)
830
+ if (Math.abs(loadingVal - pageVal) >= 8) {
831
+ issues.push({
832
+ file: loadingFile,
833
+ line: 1,
834
+ severity: "warning",
835
+ category: "SPACING_MISMATCH",
836
+ message: `Outer container padding mismatch: skeleton uses ${loadingOuterPadding}, page uses ${pageOuterPadding}`,
837
+ suggestion: "Align outer container padding classes to prevent layout shift",
838
+ });
839
+ }
840
+ }
841
+ // Check max-width consistency
842
+ const loadingMaxW = content.match(/max-w-(\w+)/)?.[1];
843
+ const pageMaxW = pageContent.match(/max-w-(\w+)/)?.[1];
844
+ if (loadingMaxW && pageMaxW && loadingMaxW !== pageMaxW) {
845
+ issues.push({
846
+ file: loadingFile,
847
+ line: 1,
848
+ severity: "warning",
849
+ category: "LAYOUT_MISMATCH",
850
+ message: `Max-width mismatch: skeleton uses max-w-${loadingMaxW}, page uses max-w-${pageMaxW}`,
851
+ suggestion: "Align max-width classes to prevent content width shift",
852
+ });
853
+ }
854
+ }
855
+ return issues;
856
+ }
857
+ // NEW VALIDATIONS - Design Token & Visual Consistency
858
+ /**
859
+ * Validates that skeleton components use consistent CSS variables/design tokens
860
+ * as their corresponding real components.
861
+ */
862
+ async function validateDesignTokenConsistency() {
863
+ const issues = [];
864
+ // Find skeleton files that have a clear component pair
865
+ const skeletonFiles = await (0, glob_1.glob)("components/**/*[Ss]keleton*.tsx", {
866
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
867
+ });
868
+ for (const skeletonFile of skeletonFiles) {
869
+ const skeletonContent = fs.readFileSync(skeletonFile, "utf8");
870
+ // Extract CSS variables used in skeleton
871
+ const skeletonVars = extractCssVariables(skeletonContent);
872
+ // Try to find matching component
873
+ const baseName = path
874
+ .basename(skeletonFile)
875
+ .replace(/Skeleton/gi, "")
876
+ .replace(/Loading/gi, "")
877
+ .replace(".tsx", "");
878
+ if (!baseName || baseName.length < 3)
879
+ continue;
880
+ const possibleComponents = await (0, glob_1.glob)(`components/**/${baseName}*.tsx`, {
881
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
882
+ });
883
+ const componentFile = possibleComponents.find((f) => !f.includes("Skeleton") && !f.includes("Loading"));
884
+ if (componentFile && fs.existsSync(componentFile)) {
885
+ const componentContent = fs.readFileSync(componentFile, "utf8");
886
+ const componentVars = extractCssVariables(componentContent);
887
+ // Check for background color mismatches on OUTER containers only
888
+ // Look at the first few lines to find the main container background
889
+ const skeletonFirstLines = skeletonContent.split("\n").slice(0, 30).join("\n");
890
+ const componentFirstLines = componentContent.split("\n").slice(0, 50).join("\n");
891
+ const skeletonOuterBg = skeletonFirstLines.match(/bg-\[var\(--bg-(primary|secondary)\)\]|bg-(primary|secondary)/)?.[0];
892
+ const componentOuterBg = componentFirstLines.match(/bg-\[var\(--bg-(primary|secondary)\)\]|bg-(primary|secondary)/)?.[0];
893
+ if (skeletonOuterBg && componentOuterBg && skeletonOuterBg !== componentOuterBg) {
894
+ // Only warn if outer container backgrounds are clearly different
895
+ const skeletonIsPrimary = skeletonOuterBg.includes("primary");
896
+ const componentIsPrimary = componentOuterBg.includes("primary");
897
+ if (skeletonIsPrimary !== componentIsPrimary) {
898
+ issues.push({
899
+ file: skeletonFile,
900
+ line: 1,
901
+ severity: "warning",
902
+ category: "TOKEN_MISMATCH",
903
+ message: `Outer container background mismatch: skeleton uses ${skeletonOuterBg}, component uses ${componentOuterBg}`,
904
+ suggestion: "Align outer container background CSS variables to prevent color flash on load",
905
+ });
906
+ }
907
+ }
908
+ // Check for border style mismatches - only if skeleton has NO borders at all
909
+ const skeletonBorder = skeletonContent.match(/border-\[var|border-color|borderBottom|border:\s*["']?1px/gi);
910
+ const componentBorder = componentContent.match(/border-\[var|border-color|borderBottom|border:\s*["']?1px/gi);
911
+ // Only flag if component has significant borders (3+) and skeleton has none
912
+ if (componentBorder &&
913
+ componentBorder.length >= 3 &&
914
+ (!skeletonBorder || skeletonBorder.length === 0)) {
915
+ issues.push({
916
+ file: skeletonFile,
917
+ line: 1,
918
+ severity: "info",
919
+ category: "STYLE_MISMATCH",
920
+ message: "Component has borders but skeleton does not",
921
+ suggestion: "Add matching border styles to skeleton for visual consistency",
922
+ });
923
+ }
924
+ }
925
+ }
926
+ return issues;
927
+ }
928
+ /**
929
+ * Validates that skeleton components have proper accessibility attributes.
930
+ */
931
+ async function validateSkeletonAccessibility() {
932
+ const issues = [];
933
+ const skeletonFiles = await (0, glob_1.glob)("components/**/*[Ss]keleton*.tsx", {
934
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
935
+ });
936
+ const loadingFiles = await (0, glob_1.glob)("app/**/loading.tsx", { ignore: [...glob_patterns_1.STANDARD_EXCLUDES] });
937
+ const allFiles = [...new Set([...skeletonFiles, ...loadingFiles])];
938
+ for (const file of allFiles) {
939
+ const content = fs.readFileSync(file, "utf8");
940
+ // Check for aria-label on main container
941
+ const hasAriaLabel = /aria-label=/.test(content);
942
+ const hasAriaLabelledBy = /aria-labelledby=/.test(content);
943
+ const hasRole = /role=["']status["']|role=["']progressbar["']/.test(content);
944
+ // Only check exported skeleton components (not internal helpers)
945
+ const isExportedSkeleton = /export\s+(function|const)\s+\w*[Ss]keleton/.test(content);
946
+ if (isExportedSkeleton && !hasAriaLabel && !hasAriaLabelledBy) {
947
+ issues.push({
948
+ file,
949
+ line: 1,
950
+ severity: "info",
951
+ category: "ACCESSIBILITY",
952
+ message: "Skeleton component lacks aria-label for screen readers",
953
+ suggestion: 'Add aria-label="Loading..." to main container for accessibility',
954
+ });
955
+ }
956
+ // Check for proper semantic structure in loading files
957
+ if (file.includes("loading.tsx")) {
958
+ const hasSection = /<section/.test(content);
959
+ const hasMain = /<main/.test(content);
960
+ const hasNav = /<nav/.test(content);
961
+ // If the corresponding page uses semantic elements, skeleton should too
962
+ const dir = path.dirname(file);
963
+ const pageFile = path.join(dir, "page.tsx");
964
+ if (fs.existsSync(pageFile)) {
965
+ const pageContent = fs.readFileSync(pageFile, "utf8");
966
+ const pageHasSection = /<section/.test(pageContent);
967
+ if (pageHasSection && !hasSection) {
968
+ issues.push({
969
+ file,
970
+ line: 1,
971
+ severity: "info",
972
+ category: "SEMANTIC_MISMATCH",
973
+ message: "Page uses <section> but loading skeleton does not",
974
+ suggestion: "Use matching semantic HTML elements for consistent structure",
975
+ });
976
+ }
977
+ }
978
+ }
979
+ }
980
+ return issues;
981
+ }
982
+ /**
983
+ * Validates separator/divider consistency between skeleton and component.
984
+ * Catches issues like "/" vs ChevronRight, "|" vs actual dividers, etc.
985
+ */
986
+ async function validateSeparatorConsistency() {
987
+ const issues = [];
988
+ // Common separator patterns to check
989
+ const textSeparators = [
990
+ { pattern: /["']\/["']|>\s*\/\s*</, name: "slash (/)" },
991
+ { pattern: /["']\|["']|>\s*\|\s*</, name: "pipe (|)" },
992
+ { pattern: /["']•["']|>\s*•\s*</, name: "bullet (•)" },
993
+ { pattern: /["']-["']|>\s*-\s*</, name: "dash (-)" },
994
+ ];
995
+ const iconSeparators = [
996
+ { pattern: /<ChevronRight|chevron-right/i, name: "ChevronRight icon" },
997
+ { pattern: /<ChevronLeft|chevron-left/i, name: "ChevronLeft icon" },
998
+ { pattern: /<ArrowRight|arrow-right/i, name: "ArrowRight icon" },
999
+ ];
1000
+ const skeletonFiles = await (0, glob_1.glob)("components/**/*[Ss]keleton*.tsx", {
1001
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
1002
+ });
1003
+ for (const skeletonFile of skeletonFiles) {
1004
+ const skeletonContent = fs.readFileSync(skeletonFile, "utf8");
1005
+ // Find matching component
1006
+ const baseName = path
1007
+ .basename(skeletonFile)
1008
+ .replace(/Skeleton/gi, "")
1009
+ .replace(/Loading/gi, "")
1010
+ .replace(".tsx", "");
1011
+ if (!baseName || baseName.length < 3)
1012
+ continue;
1013
+ const possibleComponents = await (0, glob_1.glob)(`components/**/${baseName}*.tsx`, {
1014
+ ignore: [...glob_patterns_1.STANDARD_EXCLUDES],
1015
+ });
1016
+ const componentFile = possibleComponents.find((f) => !f.includes("Skeleton") && !f.includes("Loading"));
1017
+ if (!componentFile || !fs.existsSync(componentFile))
1018
+ continue;
1019
+ const componentContent = fs.readFileSync(componentFile, "utf8");
1020
+ // Check if skeleton uses text separator but component uses icon
1021
+ for (const textSep of textSeparators) {
1022
+ if (textSep.pattern.test(skeletonContent)) {
1023
+ for (const iconSep of iconSeparators) {
1024
+ if (iconSep.pattern.test(componentContent)) {
1025
+ issues.push({
1026
+ file: skeletonFile,
1027
+ line: 1,
1028
+ severity: "warning",
1029
+ category: "SEPARATOR_MISMATCH",
1030
+ message: `Skeleton uses ${textSep.name} but component uses ${iconSep.name}`,
1031
+ suggestion: `Replace text separator with matching icon placeholder or inline SVG`,
1032
+ });
1033
+ break;
1034
+ }
1035
+ }
1036
+ }
1037
+ }
1038
+ // Check if component uses text separator but skeleton uses icon (less common but possible)
1039
+ for (const iconSep of iconSeparators) {
1040
+ if (iconSep.pattern.test(skeletonContent)) {
1041
+ let componentHasMatchingIcon = false;
1042
+ for (const checkIcon of iconSeparators) {
1043
+ if (checkIcon.pattern.test(componentContent)) {
1044
+ componentHasMatchingIcon = true;
1045
+ break;
1046
+ }
1047
+ }
1048
+ if (!componentHasMatchingIcon) {
1049
+ // Check if component uses text separator instead
1050
+ for (const textSep of textSeparators) {
1051
+ if (textSep.pattern.test(componentContent)) {
1052
+ issues.push({
1053
+ file: skeletonFile,
1054
+ line: 1,
1055
+ severity: "info",
1056
+ category: "SEPARATOR_MISMATCH",
1057
+ message: `Skeleton uses ${iconSep.name} but component uses ${textSep.name}`,
1058
+ suggestion: "Align separator style with actual component",
1059
+ });
1060
+ break;
1061
+ }
1062
+ }
1063
+ }
1064
+ }
1065
+ }
1066
+ }
1067
+ return issues;
1068
+ }
1069
+ /**
1070
+ * Validates that skeleton item counts are reasonable for the component.
1071
+ * Too few items = jarring expansion, too many = jarring contraction.
1072
+ */
1073
+ async function validateSkeletonItemCounts() {
1074
+ const issues = [];
1075
+ const loadingFiles = await (0, glob_1.glob)("app/**/loading.tsx", { ignore: [...glob_patterns_1.STANDARD_EXCLUDES] });
1076
+ for (const loadingFile of loadingFiles) {
1077
+ const content = fs.readFileSync(loadingFile, "utf8");
1078
+ // Extract skeleton item counts from array patterns like [1,2,3].map or Array.from({length: N})
1079
+ const arrayMapMatches = content.match(/\[([^\]]+)\]\.map/g) || [];
1080
+ const arrayFromMatches = content.match(/Array\.from\(\s*\{\s*length:\s*(\d+)\s*\}/g) || [];
1081
+ const countPropMatches = content.match(/count\s*[=:]\s*(\d+)/g) || [];
1082
+ // Extract counts
1083
+ const counts = [];
1084
+ for (const match of arrayMapMatches) {
1085
+ const nums = match.match(/\d+/g);
1086
+ if (nums)
1087
+ counts.push(nums.length);
1088
+ }
1089
+ for (const match of arrayFromMatches) {
1090
+ const num = match.match(/length:\s*(\d+)/)?.[1];
1091
+ if (num)
1092
+ counts.push(parseInt(num));
1093
+ }
1094
+ for (const match of countPropMatches) {
1095
+ const num = match.match(/(\d+)/)?.[1];
1096
+ if (num)
1097
+ counts.push(parseInt(num));
1098
+ }
1099
+ // Check for very low counts (likely to cause expansion)
1100
+ for (const count of counts) {
1101
+ if (count === 1) {
1102
+ issues.push({
1103
+ file: loadingFile,
1104
+ line: 1,
1105
+ severity: "info",
1106
+ category: "ITEM_COUNT",
1107
+ message: "Skeleton shows only 1 placeholder item",
1108
+ suggestion: "Consider showing 3-6 items to better represent typical content",
1109
+ });
1110
+ }
1111
+ else if (count === 2) {
1112
+ issues.push({
1113
+ file: loadingFile,
1114
+ line: 1,
1115
+ severity: "info",
1116
+ category: "ITEM_COUNT",
1117
+ message: "Skeleton shows only 2 placeholder items",
1118
+ suggestion: "Consider showing 4-8 items for grid layouts",
1119
+ });
1120
+ }
1121
+ else if (count > 20) {
1122
+ issues.push({
1123
+ file: loadingFile,
1124
+ line: 1,
1125
+ severity: "info",
1126
+ category: "ITEM_COUNT",
1127
+ message: `Skeleton shows ${count} placeholder items (may be excessive)`,
1128
+ suggestion: "Consider showing 8-12 items max to avoid overwhelming skeleton",
1129
+ });
1130
+ }
1131
+ }
1132
+ }
1133
+ return issues;
1134
+ }
1135
+ /**
1136
+ * Helper to extract CSS variable references from content
1137
+ */
1138
+ function extractCssVariables(content) {
1139
+ const vars = [];
1140
+ // Match var(--xxx) patterns
1141
+ const varMatches = content.match(/var\(--[a-z-]+\)/gi) || [];
1142
+ vars.push(...varMatches);
1143
+ // Match Tailwind bg-xxx patterns
1144
+ const bgMatches = content.match(/bg-\[var\(--[a-z-]+\)\]|bg-[a-z]+/gi) || [];
1145
+ vars.push(...bgMatches);
1146
+ return vars;
1147
+ }
1148
+ // MAIN
1149
+ async function checkSkeletonSizeConsistency() {
1150
+ console.log(`\n${console_chars_1.emoji.search} Running Enhanced Skeleton Size Consistency Check...\n`);
1151
+ const allIssues = [];
1152
+ // Run all validations
1153
+ const [knownMappingIssues, structuralIssues, autoDiscoveredIssues, loadingFileIssues, documentationIssues, spacingIssues,] = await Promise.all([
1154
+ validateKnownMappings(),
1155
+ validateStructuralMappings(),
1156
+ validateAutoDiscoveredPairs(),
1157
+ validateLoadingFiles(),
1158
+ validateSkeletonDocumentation(),
1159
+ validateSpacingConsistency(),
1160
+ ]);
1161
+ // Run additional validations (these are newer and can run in parallel)
1162
+ const [designTokenIssues, accessibilityIssues, separatorIssues, itemCountIssues] = await Promise.all([
1163
+ validateDesignTokenConsistency(),
1164
+ validateSkeletonAccessibility(),
1165
+ validateSeparatorConsistency(),
1166
+ validateSkeletonItemCounts(),
1167
+ ]);
1168
+ allIssues.push(...knownMappingIssues, ...structuralIssues, ...autoDiscoveredIssues, ...loadingFileIssues, ...documentationIssues, ...spacingIssues, ...designTokenIssues, ...accessibilityIssues, ...separatorIssues, ...itemCountIssues);
1169
+ // Print results
1170
+ const RED = "\x1b[31m";
1171
+ const YELLOW = "\x1b[33m";
1172
+ const BLUE = "\x1b[34m";
1173
+ const GREEN = "\x1b[32m";
1174
+ const DIM = "\x1b[2m";
1175
+ const RESET = "\x1b[0m";
1176
+ const errors = allIssues.filter((i) => i.severity === "error");
1177
+ const warnings = allIssues.filter((i) => i.severity === "warning");
1178
+ const infos = allIssues.filter((i) => i.severity === "info");
1179
+ if (allIssues.length === 0) {
1180
+ console.log(`${GREEN}${console_chars_1.emoji.success} No skeleton consistency issues found!${RESET}\n`);
1181
+ }
1182
+ else {
1183
+ // Group by category
1184
+ const byCategory = new Map();
1185
+ for (const issue of allIssues) {
1186
+ const list = byCategory.get(issue.category) ?? [];
1187
+ list.push(issue);
1188
+ byCategory.set(issue.category, list);
1189
+ }
1190
+ console.log(`Found ${errors.length} errors, ${warnings.length} warnings, ${infos.length} info\n`);
1191
+ if (errors.length > 0) {
1192
+ console.log(`${RED}${console_chars_1.emoji.error} ERRORS:${RESET}\n`);
1193
+ for (const issue of errors) {
1194
+ printIssue(issue, RED);
1195
+ }
1196
+ }
1197
+ if (warnings.length > 0) {
1198
+ console.log(`${YELLOW}${console_chars_1.emoji.warning} WARNINGS:${RESET}\n`);
1199
+ for (const issue of warnings) {
1200
+ printIssue(issue, YELLOW);
1201
+ }
1202
+ }
1203
+ if (infos.length > 0 && process.argv.includes("--verbose")) {
1204
+ console.log(`${BLUE}${console_chars_1.emoji.info} INFO:${RESET}\n`);
1205
+ for (const issue of infos) {
1206
+ printIssue(issue, DIM);
1207
+ }
1208
+ }
1209
+ else if (infos.length > 0) {
1210
+ console.log(`${DIM}(${infos.length} info items - use --verbose to see)${RESET}\n`);
1211
+ }
1212
+ }
1213
+ return {
1214
+ passed: errors.length === 0,
1215
+ issues: allIssues,
1216
+ };
1217
+ }
1218
+ function printIssue(issue, color) {
1219
+ const RESET = "\x1b[0m";
1220
+ const DIM = "\x1b[2m";
1221
+ const relPath = path.relative(process.cwd(), issue.file).replace(/\\/g, "/");
1222
+ console.log(` ${color}[${issue.category}]${RESET} ${relPath}:${issue.line}`);
1223
+ console.log(` ${issue.message}`);
1224
+ console.log(` ${DIM}Fix: ${issue.suggestion}${RESET}`);
1225
+ if (issue.details) {
1226
+ const detailStr = Object.entries(issue.details)
1227
+ .map(([k, v]) => `${k}=${v}`)
1228
+ .join(", ");
1229
+ console.log(` ${DIM}Details: ${detailStr}${RESET}`);
1230
+ }
1231
+ console.log("");
1232
+ }
1233
+ // Run if executed directly
1234
+ if (require.main === module) {
1235
+ checkSkeletonSizeConsistency().then((result) => {
1236
+ process.exit(result.passed ? 0 : 1);
1237
+ });
1238
+ }
1239
+ //# sourceMappingURL=skeleton-size-consistency.js.map