@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,1168 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * Preflight Redundancy Detection (BLOCKING)
5
+ *
6
+ * Detects redundant preflights by analyzing:
7
+ * 1. Regex patterns being checked (same pattern in multiple preflights)
8
+ * 2. File glob patterns being scanned (same files scanned multiple times)
9
+ * 3. Error codes emitted (duplicate error codes = duplicate checks)
10
+ * 4. Similar check names (semantic overlap)
11
+ * 5. Content hash duplicates (copy-pasted preflights)
12
+ * 6. Local exclude definitions (should use shared/glob-patterns.ts)
13
+ *
14
+ * This runs on every build to ensure efficiency - we don't want to waste
15
+ * CI time running the same checks multiple times.
16
+ *
17
+ * Usage:
18
+ * pnpm preflight:redundancy
19
+ * pnpm preflight:redundancy --verbose # Show info-level issues
20
+ * pnpm preflight:redundancy --json # Output JSON for trend tracking
21
+ * tsx scripts/active/preflights/system/preflight-redundancy-detection.ts
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || (function () {
40
+ var ownKeys = function(o) {
41
+ ownKeys = Object.getOwnPropertyNames || function (o) {
42
+ var ar = [];
43
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
44
+ return ar;
45
+ };
46
+ return ownKeys(o);
47
+ };
48
+ return function (mod) {
49
+ if (mod && mod.__esModule) return mod;
50
+ var result = {};
51
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
52
+ __setModuleDefault(result, mod);
53
+ return result;
54
+ };
55
+ })();
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.tags = exports.description = exports.blocking = exports.category = exports.name = exports.id = void 0;
58
+ const crypto = __importStar(require("crypto"));
59
+ const fs = __importStar(require("fs"));
60
+ const path = __importStar(require("path"));
61
+ const console_chars_1 = require("../../utils/console-chars");
62
+ // Check metadata
63
+ exports.id = "system/preflight-redundancy-detection";
64
+ exports.name = "Preflight Redundancy Detection";
65
+ exports.category = "system";
66
+ exports.blocking = true;
67
+ exports.description = "Preflight Redundancy Detection (BLOCKING)";
68
+ exports.tags = ["system"];
69
+ // Import shared patterns to exclude from duplicate detection
70
+ // These are expected to appear in many files since they're the shared source
71
+ const file_cache_1 = require("../../shared/file-cache");
72
+ const glob_patterns_1 = require("../../shared/glob-patterns");
73
+ const issues = [];
74
+ // Patterns to ignore (too generic to be meaningful for redundancy detection)
75
+ const IGNORE_PATTERNS = new Set([
76
+ // Generic regex patterns
77
+ ".*",
78
+ ".+",
79
+ "\\s+",
80
+ "\\w+",
81
+ "\\d+",
82
+ '[^"]+',
83
+ "[^']+",
84
+ "\\n",
85
+ "\\r?\\n",
86
+ // Common words that appear in many preflights (not actual redundancy)
87
+ "system",
88
+ "shared",
89
+ "scripts",
90
+ "constants",
91
+ "components",
92
+ "utils",
93
+ "hooks",
94
+ "types",
95
+ "config",
96
+ "error",
97
+ "warning",
98
+ "success",
99
+ "failed",
100
+ "import",
101
+ "export",
102
+ "function",
103
+ "const",
104
+ "return",
105
+ "async",
106
+ "await",
107
+ "string",
108
+ "number",
109
+ "boolean",
110
+ "object",
111
+ "array",
112
+ "null",
113
+ "undefined",
114
+ "true",
115
+ "false",
116
+ ]);
117
+ // File globs to ignore (too generic)
118
+ const IGNORE_GLOBS = new Set(["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "*.ts", "*.tsx"]);
119
+ // Shared pattern globs - these are expected to appear in many files
120
+ // Don't flag them as duplicates since they come from glob-patterns.ts or are common patterns
121
+ const SHARED_PATTERN_GLOBS = new Set([
122
+ // Exclusion patterns from glob-patterns.ts
123
+ ...glob_patterns_1.CORE_EXCLUDES,
124
+ ...glob_patterns_1.STANDARD_EXCLUDES,
125
+ ...glob_patterns_1.FULL_EXCLUDES,
126
+ // Common test/story exclusion patterns
127
+ "**/*.test.ts",
128
+ "**/*.test.tsx",
129
+ "**/*.spec.ts",
130
+ "**/*.spec.tsx",
131
+ "**/tests/**",
132
+ "**/__tests__/**",
133
+ "**/__mocks__/**",
134
+ "**/*.stories.ts",
135
+ "**/*.stories.tsx",
136
+ "**/stories/**",
137
+ "**/.storybook/**",
138
+ // Common INCLUDE patterns - these are expected to be used by many preflights
139
+ "**/*.{ts,tsx}",
140
+ "**/*.{tsx,jsx}",
141
+ "**/*.{ts,tsx,js,jsx}",
142
+ "**/*.{tsx,ts}",
143
+ "**/*.test.*",
144
+ "**/*.spec.*",
145
+ "**/*.test.{ts,tsx}",
146
+ "**/*.spec.{ts,tsx}",
147
+ "**/*.stories.*",
148
+ "**/*.stories.{ts,tsx}",
149
+ "**/scripts/**",
150
+ "**/scripts/active/preflights/**",
151
+ "**/packages/ui/**",
152
+ "tests/e2e/**/*.spec.ts",
153
+ "tests/e2e/**/*.ts",
154
+ "app/**/page.tsx",
155
+ "app/**/page.{ts,tsx,js,jsx}",
156
+ "app/**/layout.tsx",
157
+ "app/**/*.tsx",
158
+ "app/api/**/*.ts",
159
+ "lib/**/*.ts",
160
+ "{app,components,lib,hooks}/**/*.{ts,tsx}",
161
+ "{app,components}/**/*.{tsx,jsx}",
162
+ "app/api/**/route.{ts,js}",
163
+ "app/api/**/route.ts",
164
+ "components/**/*.tsx",
165
+ "components/**/*.ts",
166
+ "components/**/*.{tsx,jsx}",
167
+ "**/ui/**",
168
+ "**/docs/**",
169
+ "**/components/ui/**",
170
+ "app/**/*Client.tsx",
171
+ "{app,components}/**/*.tsx",
172
+ "scripts/active/preflights/**/*.ts",
173
+ "**/utils/**",
174
+ "app/**/*.ts",
175
+ "{app,lib,components}/**/*.{ts,tsx}",
176
+ "app/**/*.{tsx,jsx}",
177
+ "packages/ui/src/**/*.tsx",
178
+ "**/test/**",
179
+ "**/*.d.ts",
180
+ ]);
181
+ function extractRegexPatterns(content) {
182
+ const patterns = [];
183
+ // Match regex literals: /pattern/flags
184
+ const regexLiteralMatches = content.matchAll(/\/([^\/\n]{5,})\/[gimsuvy]*/g);
185
+ for (const match of regexLiteralMatches) {
186
+ const pattern = match[1];
187
+ if (pattern && !IGNORE_PATTERNS.has(pattern) && pattern.length > 5) {
188
+ patterns.push(pattern);
189
+ }
190
+ }
191
+ // Match new RegExp('pattern')
192
+ const regexpConstructorMatches = content.matchAll(/new RegExp\s*\(\s*['"`]([^'"`]{5,})['"`]/g);
193
+ for (const match of regexpConstructorMatches) {
194
+ const pattern = match[1];
195
+ if (pattern && !IGNORE_PATTERNS.has(pattern)) {
196
+ patterns.push(pattern);
197
+ }
198
+ }
199
+ // Match .match(/pattern/) and .test(/pattern/)
200
+ const methodMatches = content.matchAll(/\.(match|test|replace|search)\s*\(\s*\/([^\/\n]{5,})\/[gimsuvy]*/g);
201
+ for (const match of methodMatches) {
202
+ const pattern = match[2];
203
+ if (pattern && !IGNORE_PATTERNS.has(pattern)) {
204
+ patterns.push(pattern);
205
+ }
206
+ }
207
+ return [...new Set(patterns)];
208
+ }
209
+ function extractFileGlobs(content) {
210
+ const globs = [];
211
+ // Match glob patterns in strings
212
+ const globMatches = content.matchAll(/['"`](\*\*\/[^'"`]+|[^'"`]*\*\.[a-z]+)['"`]/g);
213
+ for (const match of globMatches) {
214
+ const pattern = match[1];
215
+ if (pattern && !IGNORE_GLOBS.has(pattern)) {
216
+ globs.push(pattern);
217
+ }
218
+ }
219
+ // Match directory patterns
220
+ const dirMatches = content.matchAll(/glob\s*\(\s*['"`]([^'"`]+)['"`]/g);
221
+ for (const match of dirMatches) {
222
+ const pattern = match[1];
223
+ if (pattern && !IGNORE_GLOBS.has(pattern)) {
224
+ globs.push(pattern);
225
+ }
226
+ }
227
+ return [...new Set(globs)];
228
+ }
229
+ function extractErrorCodes(content) {
230
+ const codes = [];
231
+ // Match code: 'ERROR_CODE' patterns
232
+ const codeMatches = content.matchAll(/code:\s*['"]([A-Z][A-Z0-9_]+)['"]/g);
233
+ for (const match of codeMatches) {
234
+ if (match[1])
235
+ codes.push(match[1]);
236
+ }
237
+ // Match error code constants
238
+ const constMatches = content.matchAll(/const\s+([A-Z][A-Z0-9_]+)\s*=\s*['"]([A-Z][A-Z0-9_]+)['"]/g);
239
+ for (const match of constMatches) {
240
+ if (match[2])
241
+ codes.push(match[2]);
242
+ }
243
+ return [...new Set(codes)];
244
+ }
245
+ function extractCheckDescriptions(content) {
246
+ const descriptions = [];
247
+ // Match console.log with check descriptions
248
+ const logMatches = content.matchAll(/console\.log\s*\(\s*['"`]([^'"`]{20,})['"`]/g);
249
+ for (const match of logMatches) {
250
+ if (match[1] &&
251
+ !match[1].includes("${box.heavyHorizontal}") &&
252
+ !match[1].includes("${box.doubleHorizontal}")) {
253
+ descriptions.push(match[1]);
254
+ }
255
+ }
256
+ // Match description fields
257
+ const descMatches = content.matchAll(/description:\s*['"`]([^'"`]{20,})['"`]/g);
258
+ for (const match of descMatches) {
259
+ if (match[1])
260
+ descriptions.push(match[1]);
261
+ }
262
+ return descriptions;
263
+ }
264
+ function calculateContentHash(content) {
265
+ // Normalize content for comparison (remove comments, whitespace)
266
+ const normalized = content
267
+ .replace(/\/\/.*$/gm, "")
268
+ .replace(/\/\*[\s\S]*?\*\//g, "")
269
+ .replace(/\s+/g, " ")
270
+ .trim();
271
+ return crypto.createHash("md5").update(normalized).digest("hex").slice(0, 12);
272
+ }
273
+ function calculateSimilarity(str1, str2) {
274
+ const words1 = new Set(str1
275
+ .toLowerCase()
276
+ .split(/\W+/)
277
+ .filter((w) => w.length > 2));
278
+ const words2 = new Set(str2
279
+ .toLowerCase()
280
+ .split(/\W+/)
281
+ .filter((w) => w.length > 2));
282
+ if (words1.size === 0 || words2.size === 0)
283
+ return 0;
284
+ const intersection = new Set([...words1].filter((w) => words2.has(w)));
285
+ const union = new Set([...words1, ...words2]);
286
+ return intersection.size / union.size;
287
+ }
288
+ // CACHED FILE LISTS - Scan once, use everywhere
289
+ let _cachedPreflightFiles = null;
290
+ async function getPreflightFiles() {
291
+ if (!_cachedPreflightFiles) {
292
+ _cachedPreflightFiles = await file_cache_1.fileCache.getPreflightFiles();
293
+ }
294
+ return _cachedPreflightFiles;
295
+ }
296
+ async function analyzePreflightFile(filePath) {
297
+ const content = fs.readFileSync(filePath, "utf-8");
298
+ const relativePath = path.relative(process.cwd(), filePath);
299
+ // Extract preflight name from file or content
300
+ const nameMatch = content.match(/name:\s*['"]([^'"]+)['"]/);
301
+ const name = nameMatch?.[1] || path.basename(filePath, path.extname(filePath));
302
+ // Check if file imports from shared glob-patterns
303
+ const usesSharedPatterns = content.includes("from '../shared/glob-patterns'") ||
304
+ content.includes('from "../../shared/glob-patterns"') ||
305
+ content.includes("...STANDARD_EXCLUDES") ||
306
+ content.includes("...CORE_EXCLUDES") ||
307
+ content.includes("...FULL_EXCLUDES") ||
308
+ content.includes("...PRODUCTION_CODE_EXCLUDES");
309
+ return {
310
+ file: relativePath,
311
+ name,
312
+ regexPatterns: extractRegexPatterns(content),
313
+ fileGlobs: extractFileGlobs(content),
314
+ errorCodes: extractErrorCodes(content),
315
+ checkDescriptions: extractCheckDescriptions(content),
316
+ contentHash: calculateContentHash(content),
317
+ lineCount: content.split("\n").length,
318
+ usesSharedPatterns,
319
+ };
320
+ }
321
+ function findDuplicatePatterns(analyses) {
322
+ // Re-enabled with smarter filtering - only flag truly identical complex patterns
323
+ const patternToFiles = new Map();
324
+ for (const analysis of analyses) {
325
+ for (const pattern of analysis.regexPatterns) {
326
+ // Skip short/generic patterns
327
+ if (pattern.length < 20)
328
+ continue;
329
+ // Skip common patterns that are legitimately reused
330
+ if (/flex|grid|gap|margin|padding|className/i.test(pattern))
331
+ continue;
332
+ if (!patternToFiles.has(pattern)) {
333
+ patternToFiles.set(pattern, []);
334
+ }
335
+ patternToFiles.get(pattern).push(analysis.file);
336
+ }
337
+ }
338
+ for (const [pattern, files] of patternToFiles) {
339
+ if (files.length >= 3) {
340
+ // Only flag if 3+ preflights use the exact same complex pattern
341
+ issues.push({
342
+ type: "duplicate-pattern",
343
+ severity: "info",
344
+ message: `Complex regex pattern used by ${files.length} preflights - consider extracting to shared module`,
345
+ files,
346
+ pattern: pattern.substring(0, 50) + (pattern.length > 50 ? "..." : ""),
347
+ });
348
+ }
349
+ }
350
+ }
351
+ function findDuplicateGlobs(analyses) {
352
+ const globToFiles = new Map();
353
+ for (const analysis of analyses) {
354
+ for (const glob of analysis.fileGlobs) {
355
+ // Skip shared patterns - they're expected to be in many files
356
+ if (SHARED_PATTERN_GLOBS.has(glob))
357
+ continue;
358
+ if (!globToFiles.has(glob)) {
359
+ globToFiles.set(glob, []);
360
+ }
361
+ globToFiles.get(glob).push(analysis.file);
362
+ }
363
+ }
364
+ for (const [globPattern, files] of globToFiles) {
365
+ if (files.length >= 6) {
366
+ // Only flag if 6+ preflights scan same glob (meaningful redundancy)
367
+ issues.push({
368
+ type: "duplicate-glob",
369
+ severity: files.length >= 10 ? "warning" : "info",
370
+ message: `File glob "${globPattern}" scanned by ${files.length} preflights - consider consolidating`,
371
+ files,
372
+ pattern: globPattern,
373
+ });
374
+ }
375
+ }
376
+ }
377
+ function findDuplicateErrorCodes(analyses) {
378
+ const codeToFiles = new Map();
379
+ for (const analysis of analyses) {
380
+ for (const code of analysis.errorCodes) {
381
+ if (!codeToFiles.has(code)) {
382
+ codeToFiles.set(code, []);
383
+ }
384
+ codeToFiles.get(code).push(analysis.file);
385
+ }
386
+ }
387
+ for (const [code, files] of codeToFiles) {
388
+ if (files.length > 1) {
389
+ issues.push({
390
+ type: "duplicate-error-code",
391
+ severity: "error", // Duplicate error codes are a real problem
392
+ message: `Error code "${code}" emitted by ${files.length} preflights - indicates duplicate checks`,
393
+ files,
394
+ pattern: code,
395
+ });
396
+ }
397
+ }
398
+ }
399
+ // Generic names that shouldn't trigger similar-name warnings
400
+ const GENERIC_NAMES = new Set([
401
+ "delete",
402
+ "create",
403
+ "update",
404
+ "read",
405
+ "get",
406
+ "set",
407
+ "check",
408
+ "validate",
409
+ "test",
410
+ "run",
411
+ "execute",
412
+ "process",
413
+ "handle",
414
+ "main",
415
+ "init",
416
+ "setup",
417
+ "development",
418
+ "database",
419
+ "security",
420
+ "performance",
421
+ "quality",
422
+ // Workflow file names that call other preflights
423
+ "esm import extensions",
424
+ "image optimization",
425
+ "code quality",
426
+ "cost optimization",
427
+ "strict-lint",
428
+ "strict lint",
429
+ ]);
430
+ function findSimilarNames(analyses) {
431
+ // Re-enabled with better heuristics - only flag very high similarity (>0.8)
432
+ const checked = new Set();
433
+ for (let i = 0; i < analyses.length; i++) {
434
+ for (let j = i + 1; j < analyses.length; j++) {
435
+ const a1 = analyses[i];
436
+ const a2 = analyses[j];
437
+ const key = `${a1.file}:${a2.file}`;
438
+ if (checked.has(key))
439
+ continue;
440
+ checked.add(key);
441
+ // Skip workflow files - they legitimately have similar names
442
+ if (a1.file.includes("/workflows/") || a2.file.includes("/workflows/"))
443
+ continue;
444
+ // Skip consolidated files - they're meant to replace others
445
+ if (a1.file.includes("/consolidated/") || a2.file.includes("/consolidated/"))
446
+ continue;
447
+ const similarity = calculateSimilarity(a1.name, a2.name);
448
+ // Only flag very high similarity (>0.8) and same directory
449
+ if (similarity > 0.8) {
450
+ const dir1 = path.dirname(a1.file);
451
+ const dir2 = path.dirname(a2.file);
452
+ if (dir1 === dir2) {
453
+ issues.push({
454
+ type: "similar-name",
455
+ severity: "info",
456
+ message: `Very similar names in same directory (${(similarity * 100).toFixed(0)}% match) - consider consolidating`,
457
+ files: [a1.file, a2.file],
458
+ similarity,
459
+ });
460
+ }
461
+ }
462
+ }
463
+ }
464
+ }
465
+ function findHighOverlap(analyses) {
466
+ const checked = new Set();
467
+ for (let i = 0; i < analyses.length; i++) {
468
+ for (let j = i + 1; j < analyses.length; j++) {
469
+ const a1 = analyses[i];
470
+ const a2 = analyses[j];
471
+ const key = `${a1.file}:${a2.file}`;
472
+ if (checked.has(key))
473
+ continue;
474
+ checked.add(key);
475
+ // Calculate overlap in regex patterns
476
+ const patterns1 = new Set(a1.regexPatterns);
477
+ const patterns2 = new Set(a2.regexPatterns);
478
+ const patternOverlap = [...patterns1].filter((p) => patterns2.has(p));
479
+ // Calculate overlap in error codes
480
+ const codes1 = new Set(a1.errorCodes);
481
+ const codes2 = new Set(a2.errorCodes);
482
+ const codeOverlap = [...codes1].filter((c) => codes2.has(c));
483
+ // High overlap = many shared patterns AND shared error codes
484
+ if (patternOverlap.length >= 3 && codeOverlap.length >= 1) {
485
+ issues.push({
486
+ type: "high-overlap",
487
+ severity: "error",
488
+ message: `High overlap between preflights: ${patternOverlap.length} shared patterns, ${codeOverlap.length} shared error codes. Consider merging.`,
489
+ files: [a1.file, a2.file],
490
+ similarity: patternOverlap.length / Math.max(patterns1.size, patterns2.size),
491
+ });
492
+ }
493
+ }
494
+ }
495
+ }
496
+ /**
497
+ * Find domain fragmentation - too many preflights in the same category
498
+ * that could be consolidated into fewer modules.
499
+ *
500
+ * Re-enabled with smarter thresholds - only flag categories with 10+ standalone files
501
+ * that are NOT already orchestrated by consolidated/*.ts files.
502
+ */
503
+ function findDomainFragmentation(analyses) {
504
+ const categoryToFiles = new Map();
505
+ // Get list of already orchestrated preflights
506
+ const orchestratedPreflights = getOrchestratedPreflights();
507
+ for (const analysis of analyses) {
508
+ // Extract category from path (e.g., "ui" from "scripts/active/preflights/ui/button-consistency.ts")
509
+ // Normalize path separators for cross-platform compatibility
510
+ const normalizedPath = analysis.file.replace(/\\/g, "/");
511
+ const match = normalizedPath.match(/preflights\/([^\/]+)\//);
512
+ if (!match)
513
+ continue;
514
+ const category = match[1];
515
+ // Skip consolidated, workflows, system, shared, utils - these are organizational
516
+ if (["consolidated", "workflows", "system", "shared", "utils"].includes(category))
517
+ continue;
518
+ // Skip files that are orchestrators themselves
519
+ if (isOrchestratorFile(analysis.file))
520
+ continue;
521
+ // Skip files that are already orchestrated
522
+ const relativePath = normalizedPath.replace(/^scripts\/active\/preflights\//, "");
523
+ if (orchestratedPreflights.has(relativePath) || orchestratedPreflights.has(normalizedPath)) {
524
+ continue;
525
+ }
526
+ if (!categoryToFiles.has(category)) {
527
+ categoryToFiles.set(category, []);
528
+ }
529
+ categoryToFiles.get(category).push(analysis.file);
530
+ }
531
+ for (const [category, files] of categoryToFiles) {
532
+ // Only flag if 10+ NON-ORCHESTRATED files exist
533
+ if (files.length >= 10) {
534
+ // Check if this category already has a consolidated orchestrator
535
+ if (hasConsolidatedOrchestrator(category, analyses)) {
536
+ continue; // Already has orchestrator - not fragmentation
537
+ }
538
+ issues.push({
539
+ type: "similar-name", // Using existing type for domain fragmentation
540
+ severity: "info",
541
+ message: `Category "${category}" has ${files.length} non-orchestrated preflights - consider consolidating into fewer modules`,
542
+ files: files.slice(0, 5),
543
+ });
544
+ }
545
+ }
546
+ }
547
+ /**
548
+ * Find preflights scanning the same test files that could share a single scan
549
+ *
550
+ * DISABLED: This check is advisory only. Many preflights legitimately scan
551
+ * test files for different purposes (patterns, coverage, performance, etc.)
552
+ */
553
+ function findTestFileScanOverlap(_analyses) {
554
+ // Disabled - produces advisory findings that don't indicate actual problems
555
+ return;
556
+ }
557
+ /**
558
+ * NEW: Find orphaned preflights - not referenced in package.json or workflows
559
+ * These may be dead code or forgotten preflights that should be removed or integrated.
560
+ *
561
+ * IMPORTANT: Files orchestrated by consolidated/*.ts are NOT orphaned - they're
562
+ * called via runCheck() which this function now recognizes.
563
+ */
564
+ async function findOrphanedPreflights(analyses) {
565
+ try {
566
+ const packageJsonPath = path.join(process.cwd(), "package.json");
567
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
568
+ const scripts = packageJson.scripts || {};
569
+ const scriptValues = Object.values(scripts).join(" ");
570
+ // Get list of orchestrated preflights (called by consolidated/*.ts)
571
+ const orchestratedPreflights = getOrchestratedPreflights();
572
+ // Also check workflow files
573
+ const workflowDir = path.join(process.cwd(), "scripts/active/preflights/workflows");
574
+ let workflowContent = "";
575
+ if (fs.existsSync(workflowDir)) {
576
+ const workflowFiles = fs.readdirSync(workflowDir).filter((f) => f.endsWith(".ts"));
577
+ for (const wf of workflowFiles) {
578
+ workflowContent += fs.readFileSync(path.join(workflowDir, wf), "utf-8");
579
+ }
580
+ }
581
+ // Also check consolidated files for references
582
+ const consolidatedDir = path.join(process.cwd(), "scripts/active/preflights/consolidated");
583
+ let consolidatedContent = "";
584
+ if (fs.existsSync(consolidatedDir)) {
585
+ const consolidatedFiles = fs.readdirSync(consolidatedDir).filter((f) => f.endsWith(".ts"));
586
+ for (const cf of consolidatedFiles) {
587
+ consolidatedContent += fs.readFileSync(path.join(consolidatedDir, cf), "utf-8");
588
+ }
589
+ }
590
+ const orphaned = [];
591
+ for (const analysis of analyses) {
592
+ // Skip workflow files, system files, shared utilities, consolidated files
593
+ if (analysis.file.includes("/workflows/"))
594
+ continue;
595
+ if (analysis.file.includes("/system/"))
596
+ continue;
597
+ if (analysis.file.includes("/shared/"))
598
+ continue;
599
+ if (analysis.file.includes("/utils/"))
600
+ continue;
601
+ if (analysis.file.includes("/consolidated/"))
602
+ continue;
603
+ const fileName = path.basename(analysis.file, path.extname(analysis.file));
604
+ const relativePath = analysis.file.replace(/^scripts\/active\/preflights\//, "");
605
+ // Check if orchestrated by consolidated/*.ts
606
+ if (orchestratedPreflights.has(relativePath) || orchestratedPreflights.has(analysis.file)) {
607
+ continue; // Not orphaned - called by orchestrator
608
+ }
609
+ // Check if referenced in package.json scripts
610
+ const inPackageJson = scriptValues.includes(fileName) || scriptValues.includes(analysis.file);
611
+ // Check if imported in workflow files
612
+ const inWorkflows = workflowContent.includes(fileName) ||
613
+ workflowContent.includes(`from './${fileName}'`) ||
614
+ workflowContent.includes(`from "../${path.basename(path.dirname(analysis.file))}/${fileName}"`);
615
+ // Check if referenced in consolidated files
616
+ const inConsolidated = consolidatedContent.includes(fileName) ||
617
+ consolidatedContent.includes(analysis.file) ||
618
+ consolidatedContent.includes(relativePath);
619
+ if (!inPackageJson && !inWorkflows && !inConsolidated) {
620
+ orphaned.push(analysis.file);
621
+ }
622
+ }
623
+ if (orphaned.length > 5) {
624
+ issues.push({
625
+ type: "local-excludes", // Reusing type for orphaned detection
626
+ severity: "info",
627
+ message: `${orphaned.length} preflights not referenced in package.json, workflows, or consolidated files - may be orphaned`,
628
+ files: orphaned.slice(0, 10),
629
+ });
630
+ }
631
+ }
632
+ catch {
633
+ // Skip if can't read package.json
634
+ }
635
+ }
636
+ /**
637
+ * NEW: Find build command redundancy - preflights called multiple times in build
638
+ */
639
+ function findBuildCommandRedundancy() {
640
+ try {
641
+ const packageJsonPath = path.join(process.cwd(), "package.json");
642
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
643
+ const scripts = packageJson.scripts || {};
644
+ const buildCommand = scripts.build || "";
645
+ // Check if preflight:all is called AND individual preflights are also called
646
+ if (buildCommand.includes("preflight:all")) {
647
+ const redundantCalls = [];
648
+ // These are likely already included in preflight:all
649
+ const likelyIncluded = [
650
+ "preflight:ui:consistency",
651
+ "preflight:mobile-responsive",
652
+ "preflight:product-image-animations",
653
+ "preflight:ux-consistency",
654
+ ];
655
+ for (const preflight of likelyIncluded) {
656
+ if (buildCommand.includes(preflight)) {
657
+ redundantCalls.push(preflight);
658
+ }
659
+ }
660
+ if (redundantCalls.length > 0) {
661
+ issues.push({
662
+ type: "duplicate-glob", // Reusing type for build redundancy
663
+ severity: "warning",
664
+ message: `Build command calls preflight:all AND ${redundantCalls.length} individual preflights that may already be included. Check if these are redundant: ${redundantCalls.join(", ")}`,
665
+ files: ["package.json"],
666
+ });
667
+ }
668
+ }
669
+ }
670
+ catch {
671
+ // Skip if can't read package.json
672
+ }
673
+ }
674
+ /**
675
+ * Detect if a file is an orchestrator (calls other preflights)
676
+ * Orchestrators use patterns like:
677
+ * - runCheck('name', 'path/to/preflight.ts')
678
+ * - exec('pnpm preflight:xxx')
679
+ * - import from other preflight files
680
+ */
681
+ function isOrchestratorFile(filePath) {
682
+ // Consolidated and workflow files are always orchestrators
683
+ if (filePath.includes("/consolidated/") || filePath.includes("/workflows/")) {
684
+ return true;
685
+ }
686
+ try {
687
+ const content = fs.readFileSync(filePath, "utf-8");
688
+ // Check for runCheck pattern (used in consolidated/*.ts)
689
+ if (/runCheck\s*\(\s*['"][^'"]+['"]\s*,\s*['"][^'"]+\.ts['"]/.test(content)) {
690
+ return true;
691
+ }
692
+ // Check for exec pattern calling other preflights
693
+ if (/exec\s*\(\s*['"`].*preflight.*\.ts/.test(content)) {
694
+ return true;
695
+ }
696
+ // Check for pnpm preflight commands
697
+ if (/pnpm\s+preflight:/.test(content)) {
698
+ return true;
699
+ }
700
+ // Check for importing and calling multiple preflight modules
701
+ const preflightImports = content.match(/from\s+['"][^'"]*preflights\/[^'"]+['"]/g);
702
+ if (preflightImports && preflightImports.length >= 3) {
703
+ return true;
704
+ }
705
+ return false;
706
+ }
707
+ catch {
708
+ return false;
709
+ }
710
+ }
711
+ /**
712
+ * Get list of preflights that are already orchestrated by consolidated/*.ts files
713
+ */
714
+ function getOrchestratedPreflights() {
715
+ const orchestrated = new Set();
716
+ const consolidatedDir = path.join(process.cwd(), "scripts/active/preflights/consolidated");
717
+ const workflowsDir = path.join(process.cwd(), "scripts/active/preflights/workflows");
718
+ const scanDir = (dir) => {
719
+ if (!fs.existsSync(dir))
720
+ return;
721
+ const files = fs.readdirSync(dir).filter((f) => f.endsWith(".ts"));
722
+ for (const file of files) {
723
+ try {
724
+ const content = fs.readFileSync(path.join(dir, file), "utf-8");
725
+ // Extract preflight paths from runCheck calls
726
+ // Pattern: runCheck("name", "scripts/active/preflights/path.ts")
727
+ const runCheckMatches = content.matchAll(/runCheck\s*\(\s*['"][^'"]+['"]\s*,\s*['"]([^'"]+\.(?:ts|js|mjs))['"]/g);
728
+ for (const match of runCheckMatches) {
729
+ if (match[1]) {
730
+ // Normalize path
731
+ const preflightPath = match[1].replace(/^scripts\/active\/preflights\//, "");
732
+ orchestrated.add(preflightPath);
733
+ }
734
+ }
735
+ // Extract from exec calls
736
+ const execMatches = content.matchAll(/exec\s*\(\s*['"`][^'"`]*scripts\/active\/preflights\/([^'"`\s]+\.(?:ts|js|mjs))/g);
737
+ for (const match of execMatches) {
738
+ if (match[1]) {
739
+ orchestrated.add(match[1]);
740
+ }
741
+ }
742
+ // Extract from script arrays (used in quality.ts pattern)
743
+ // Pattern: { name: "...", script: "scripts/active/preflights/path.ts" }
744
+ const scriptArrayMatches = content.matchAll(/script:\s*['"]scripts\/active\/preflights\/([^'"]+\.(?:ts|js|mjs))['"]/g);
745
+ for (const match of scriptArrayMatches) {
746
+ if (match[1]) {
747
+ orchestrated.add(match[1]);
748
+ }
749
+ }
750
+ // Extract from string literals containing preflight paths
751
+ // Pattern: "scripts/active/preflights/specialized/file.ts"
752
+ const stringLiteralMatches = content.matchAll(/['"]scripts\/active\/preflights\/(specialized\/[^'"]+\.(?:ts|js|mjs))['"]/g);
753
+ for (const match of stringLiteralMatches) {
754
+ if (match[1]) {
755
+ orchestrated.add(match[1]);
756
+ }
757
+ }
758
+ }
759
+ catch {
760
+ // Skip files that can't be read
761
+ }
762
+ }
763
+ };
764
+ scanDir(consolidatedDir);
765
+ scanDir(workflowsDir);
766
+ return orchestrated;
767
+ }
768
+ /**
769
+ * Check if a category already has a consolidated orchestrator
770
+ */
771
+ function hasConsolidatedOrchestrator(category, analyses) {
772
+ const categoryLower = category.toLowerCase().replace(/-/g, "");
773
+ // Check consolidated directory for matching orchestrator
774
+ return analyses.some((a) => {
775
+ if (!a.file.includes("/consolidated/"))
776
+ return false;
777
+ const fileName = path.basename(a.file, path.extname(a.file)).toLowerCase().replace(/-/g, "");
778
+ // Match category name or related names
779
+ return (fileName.includes(categoryLower) ||
780
+ categoryLower.includes(fileName) ||
781
+ // Special mappings
782
+ (category === "prisma" && fileName.includes("database")) ||
783
+ (category === "forms" && fileName.includes("uiforms")) ||
784
+ (category === "buttons" && fileName.includes("uibuttons")) ||
785
+ (category === "cards" && fileName.includes("uicards")) ||
786
+ (category === "responsive" &&
787
+ (fileName.includes("uiresponsive") || fileName.includes("uigrid"))) ||
788
+ (category === "spacing" && fileName.includes("uispacing")) ||
789
+ (category === "typography" && fileName.includes("uitypography")) ||
790
+ (category === "accessibility" && fileName.includes("uiaccessibility")) ||
791
+ (category === "dark-mode" && fileName.includes("darkmode")));
792
+ });
793
+ }
794
+ function findConsolidationOpportunities(analyses) {
795
+ const opportunities = [];
796
+ // Get list of already orchestrated preflights
797
+ const orchestratedPreflights = getOrchestratedPreflights();
798
+ // Group files by prefix patterns (e.g., "button-", "card-", "form-", "grid-")
799
+ const prefixGroups = new Map();
800
+ const prefixPatterns = [
801
+ { prefix: "button-", category: "buttons", suggestedName: "ui-buttons" },
802
+ { prefix: "card-", category: "cards", suggestedName: "ui-cards" },
803
+ { prefix: "form-", category: "forms", suggestedName: "ui-forms" },
804
+ { prefix: "formfield-", category: "forms", suggestedName: "ui-forms" },
805
+ { prefix: "grid-", category: "grid", suggestedName: "ui-grid-responsive" },
806
+ { prefix: "spacing-", category: "spacing", suggestedName: "ui-spacing" },
807
+ { prefix: "deprecated-", category: "deprecated", suggestedName: "ui-deprecated" },
808
+ { prefix: "prisma-", category: "prisma", suggestedName: "database-prisma" },
809
+ { prefix: "select-", category: "forms", suggestedName: "ui-forms" },
810
+ { prefix: "textfield-", category: "forms", suggestedName: "ui-forms" },
811
+ { prefix: "mobile-", category: "responsive", suggestedName: "ui-grid-responsive" },
812
+ { prefix: "table-", category: "tables", suggestedName: "ui-tables" },
813
+ { prefix: "typography-", category: "typography", suggestedName: "ui-typography" },
814
+ { prefix: "dark-mode-", category: "dark-mode", suggestedName: "ui-dark-mode" },
815
+ { prefix: "accessibility-", category: "accessibility", suggestedName: "ui-accessibility" },
816
+ { prefix: "css-", category: "css", suggestedName: "css-validation" },
817
+ ];
818
+ for (const analysis of analyses) {
819
+ // Skip organizational directories
820
+ if (analysis.file.includes("/consolidated/"))
821
+ continue;
822
+ if (analysis.file.includes("/workflows/"))
823
+ continue;
824
+ if (analysis.file.includes("/system/"))
825
+ continue;
826
+ if (analysis.file.includes("/shared/"))
827
+ continue;
828
+ if (analysis.file.includes("/utils/"))
829
+ continue;
830
+ // Skip files that are orchestrators themselves
831
+ if (isOrchestratorFile(analysis.file))
832
+ continue;
833
+ // Skip files that are already orchestrated by consolidated/*.ts
834
+ // Normalize path separators for cross-platform compatibility
835
+ const relativePath = analysis.file
836
+ .replace(/\\/g, "/")
837
+ .replace(/^scripts\/active\/preflights\//, "");
838
+ if (orchestratedPreflights.has(relativePath) ||
839
+ orchestratedPreflights.has(analysis.file.replace(/\\/g, "/"))) {
840
+ continue;
841
+ }
842
+ const fileName = path.basename(analysis.file, path.extname(analysis.file));
843
+ for (const { prefix, category } of prefixPatterns) {
844
+ if (fileName.startsWith(prefix)) {
845
+ if (!prefixGroups.has(category)) {
846
+ prefixGroups.set(category, []);
847
+ }
848
+ prefixGroups.get(category).push(analysis);
849
+ break;
850
+ }
851
+ }
852
+ }
853
+ // Check for groups with 3+ files that could be consolidated
854
+ for (const [category, files] of prefixGroups) {
855
+ if (files.length >= 3) {
856
+ // Check if a consolidated orchestrator already exists for this category
857
+ if (hasConsolidatedOrchestrator(category, analyses)) {
858
+ continue; // Already consolidated - not a real opportunity
859
+ }
860
+ const patternInfo = prefixPatterns.find((p) => p.category === category);
861
+ opportunities.push({
862
+ category,
863
+ files: files.map((f) => f.file),
864
+ reason: `${files.length} preflights with "${category}" prefix could be merged`,
865
+ suggestedName: patternInfo?.suggestedName || `consolidated-${category}`,
866
+ priority: files.length >= 5 ? "high" : files.length >= 3 ? "medium" : "low",
867
+ });
868
+ }
869
+ }
870
+ // Check for files in same directory with similar functionality
871
+ // BUT only if the directory doesn't already have a consolidated orchestrator
872
+ const dirGroups = new Map();
873
+ for (const analysis of analyses) {
874
+ // Skip organizational directories
875
+ if (analysis.file.includes("/consolidated/"))
876
+ continue;
877
+ if (analysis.file.includes("/workflows/"))
878
+ continue;
879
+ if (analysis.file.includes("/system/"))
880
+ continue;
881
+ if (analysis.file.includes("/shared/"))
882
+ continue;
883
+ if (analysis.file.includes("/utils/"))
884
+ continue;
885
+ // Skip orchestrators
886
+ if (isOrchestratorFile(analysis.file))
887
+ continue;
888
+ // Skip already orchestrated files
889
+ // Normalize path separators for cross-platform compatibility
890
+ const relativePath = analysis.file
891
+ .replace(/\\/g, "/")
892
+ .replace(/^scripts\/active\/preflights\//, "");
893
+ if (orchestratedPreflights.has(relativePath) ||
894
+ orchestratedPreflights.has(analysis.file.replace(/\\/g, "/"))) {
895
+ continue;
896
+ }
897
+ const dir = path.dirname(analysis.file);
898
+ if (!dirGroups.has(dir)) {
899
+ dirGroups.set(dir, []);
900
+ }
901
+ dirGroups.get(dir).push(analysis);
902
+ }
903
+ for (const [dir, files] of dirGroups) {
904
+ // Skip if directory has fewer than 8 NON-ORCHESTRATED standalone files
905
+ if (files.length < 8)
906
+ continue;
907
+ const dirName = path.basename(dir);
908
+ // Skip organizational directories that shouldn't be consolidated
909
+ if (["workflows", "utils", "system", "shared", "consolidated"].includes(dirName)) {
910
+ continue;
911
+ }
912
+ // Check if this directory already has a consolidated orchestrator
913
+ if (hasConsolidatedOrchestrator(dirName, analyses)) {
914
+ continue; // Already has orchestrator - not a real opportunity
915
+ }
916
+ opportunities.push({
917
+ category: dirName,
918
+ files: files.slice(0, 10).map((f) => f.file),
919
+ reason: `Directory "${dirName}" has ${files.length} non-orchestrated preflights - consider creating consolidated/${dirName}.ts`,
920
+ suggestedName: `${dirName}`,
921
+ priority: files.length >= 15 ? "high" : "medium",
922
+ });
923
+ }
924
+ return opportunities;
925
+ }
926
+ /**
927
+ * Find preflights with identical or near-identical content (copy-pasted).
928
+ * Uses content hash to detect duplicates.
929
+ */
930
+ function findDuplicateContent(analyses) {
931
+ const hashToFiles = new Map();
932
+ for (const analysis of analyses) {
933
+ if (!hashToFiles.has(analysis.contentHash)) {
934
+ hashToFiles.set(analysis.contentHash, []);
935
+ }
936
+ hashToFiles.get(analysis.contentHash).push(analysis);
937
+ }
938
+ for (const [hash, duplicates] of hashToFiles) {
939
+ if (duplicates.length > 1) {
940
+ issues.push({
941
+ type: "duplicate-content",
942
+ severity: "error",
943
+ message: `${duplicates.length} preflights have identical content (hash: ${hash}). These are likely copy-pasted and should be consolidated.`,
944
+ files: duplicates.map((d) => d.file),
945
+ pattern: hash,
946
+ });
947
+ }
948
+ }
949
+ }
950
+ /**
951
+ * Find preflights not using shared patterns that should be migrated.
952
+ * Tracks adoption rate of shared glob-patterns.ts
953
+ */
954
+ function findSharedPatternAdoption(analyses) {
955
+ const notUsingShared = analyses.filter((a) => !a.usesSharedPatterns);
956
+ const adoptionRate = (((analyses.length - notUsingShared.length) / analyses.length) *
957
+ 100).toFixed(1);
958
+ // Only flag if adoption is below 20% (most preflights don't need shared patterns)
959
+ // This is just for tracking, not actionable
960
+ if (parseFloat(adoptionRate) < 20) {
961
+ issues.push({
962
+ type: "local-excludes",
963
+ severity: "info",
964
+ message: `Shared pattern adoption: ${adoptionRate}%. Consider migrating more preflights to use shared/glob-patterns.ts.`,
965
+ files: notUsingShared.slice(0, 5).map((a) => a.file),
966
+ });
967
+ }
968
+ }
969
+ /**
970
+ * Find preflights with local EXCLUDED definitions that should use shared glob-patterns.ts
971
+ * This prevents the pattern duplication problem from recurring.
972
+ *
973
+ * Only flags const definitions with hardcoded glob strings (not regex patterns or spread operators).
974
+ */
975
+ function findLocalExcludeDefinitions(analyses) {
976
+ const filesWithLocalExcludes = [];
977
+ for (const analysis of analyses) {
978
+ // Skip the shared glob-patterns file itself
979
+ if (analysis.file.includes("shared/glob-patterns"))
980
+ continue;
981
+ try {
982
+ const content = fs.readFileSync(analysis.file, "utf-8");
983
+ // Check if file has local EXCLUDED/EXCLUDED_PATHS/SKIP_PATTERNS const definition
984
+ // with hardcoded glob strings (not using spread from shared patterns)
985
+ const localExcludedMatch = content.match(/const\s+(?:EXCLUDED|EXCLUDED_PATHS|SKIP_PATTERNS)\s*=\s*\[([^\]]*)\]/s);
986
+ if (localExcludedMatch) {
987
+ const arrayContent = localExcludedMatch[1] || "";
988
+ // Skip if it uses spread operator from shared patterns (already migrated)
989
+ if (arrayContent.includes("...STANDARD_EXCLUDES") ||
990
+ arrayContent.includes("...CORE_EXCLUDES") ||
991
+ arrayContent.includes("...PRODUCTION_CODE_EXCLUDES") ||
992
+ arrayContent.includes("...FULL_EXCLUDES") ||
993
+ arrayContent.includes("extendExcludes")) {
994
+ continue;
995
+ }
996
+ // Skip if it's regex patterns (like /node_modules/) not glob strings
997
+ if (arrayContent.includes("/node_modules/") &&
998
+ !arrayContent.includes("'**/node_modules/**'") &&
999
+ !arrayContent.includes('"**/node_modules/**"')) {
1000
+ continue;
1001
+ }
1002
+ // Check if it has hardcoded glob strings like '**/node_modules/**'
1003
+ const hasHardcodedGlobs = /['"](\*\*\/[^'"]+|[^'"]*\*\.[a-z]+)['"]/.test(arrayContent);
1004
+ if (hasHardcodedGlobs) {
1005
+ filesWithLocalExcludes.push(analysis.file);
1006
+ }
1007
+ }
1008
+ }
1009
+ catch {
1010
+ // Skip files that can't be read
1011
+ }
1012
+ }
1013
+ if (filesWithLocalExcludes.length > 0) {
1014
+ issues.push({
1015
+ type: "duplicate-glob",
1016
+ severity: "error",
1017
+ message: `${filesWithLocalExcludes.length} preflight(s) define local EXCLUDED/SKIP_PATTERNS arrays with hardcoded globs instead of using shared/glob-patterns.ts. Run: pnpm tsx scripts/active/maintenance-tools/migrate-preflight-excludes.ts --apply`,
1018
+ files: filesWithLocalExcludes,
1019
+ });
1020
+ }
1021
+ }
1022
+ async function main() {
1023
+ const isVerbose = process.argv.includes("--verbose");
1024
+ const isJson = process.argv.includes("--json");
1025
+ if (!isJson) {
1026
+ console.log(`\n${console_chars_1.emoji.search} Preflight Redundancy Detection (blocking)\n`);
1027
+ console.log((0, console_chars_1.createDivider)(70, "heavy"));
1028
+ }
1029
+ // Find all preflight files
1030
+ const preflightFiles = await getPreflightFiles();
1031
+ if (!isJson) {
1032
+ console.log(`${console_chars_1.emoji.chart} Analyzing ${preflightFiles.length} preflight files...\n`);
1033
+ }
1034
+ // Analyze each preflight
1035
+ const analyses = [];
1036
+ for (const file of preflightFiles) {
1037
+ try {
1038
+ const analysis = await analyzePreflightFile(file);
1039
+ analyses.push(analysis);
1040
+ }
1041
+ catch (err) {
1042
+ if (!isJson) {
1043
+ console.warn(`${console_chars_1.emoji.warning} Could not analyze ${file}: ${err}`);
1044
+ }
1045
+ }
1046
+ }
1047
+ // Find redundancies
1048
+ findDuplicatePatterns(analyses);
1049
+ findDuplicateGlobs(analyses);
1050
+ findDuplicateErrorCodes(analyses);
1051
+ findSimilarNames(analyses);
1052
+ findHighOverlap(analyses);
1053
+ findDomainFragmentation(analyses);
1054
+ findTestFileScanOverlap(analyses);
1055
+ findDuplicateContent(analyses);
1056
+ findSharedPatternAdoption(analyses);
1057
+ findLocalExcludeDefinitions(analyses);
1058
+ await findOrphanedPreflights(analyses);
1059
+ findBuildCommandRedundancy();
1060
+ // Find consolidation opportunities
1061
+ const consolidationOpportunities = findConsolidationOpportunities(analyses);
1062
+ // Report results
1063
+ const errors = issues.filter((i) => i.severity === "error");
1064
+ const warnings = issues.filter((i) => i.severity === "warning");
1065
+ const infos = issues.filter((i) => i.severity === "info");
1066
+ // JSON output for trend tracking
1067
+ if (isJson) {
1068
+ const report = {
1069
+ timestamp: new Date().toISOString(),
1070
+ totalPreflights: analyses.length,
1071
+ errors: errors.length,
1072
+ warnings: warnings.length,
1073
+ infos: infos.length,
1074
+ totalRegexPatterns: analyses.reduce((sum, a) => sum + a.regexPatterns.length, 0),
1075
+ totalErrorCodes: analyses.reduce((sum, a) => sum + a.errorCodes.length, 0),
1076
+ issues: issues,
1077
+ };
1078
+ console.log(JSON.stringify(report, null, 2));
1079
+ process.exit(errors.length > 0 ? 1 : 0);
1080
+ }
1081
+ if (errors.length > 0) {
1082
+ console.log(`${console_chars_1.emoji.error} ERRORS (blocking - must fix):`);
1083
+ for (const issue of errors) {
1084
+ console.log(`\n [${issue.type}] ${issue.message}`);
1085
+ console.log(` Files: ${issue.files.map((f) => path.basename(f)).join(", ")}`);
1086
+ }
1087
+ console.log("");
1088
+ }
1089
+ if (warnings.length > 0) {
1090
+ console.log(`${console_chars_1.emoji.warning} WARNINGS (should fix):`);
1091
+ for (const issue of warnings.slice(0, 10)) {
1092
+ console.log(`\n [${issue.type}] ${issue.message}`);
1093
+ console.log(` Files: ${issue.files.map((f) => path.basename(f)).join(", ")}`);
1094
+ }
1095
+ if (warnings.length > 10) {
1096
+ console.log(`\n ... and ${warnings.length - 10} more warnings`);
1097
+ }
1098
+ console.log("");
1099
+ }
1100
+ if (infos.length > 0 && isVerbose) {
1101
+ console.log(`${console_chars_1.emoji.info} INFO (for awareness):`);
1102
+ for (const issue of infos.slice(0, 5)) {
1103
+ console.log(` [${issue.type}] ${issue.message}`);
1104
+ }
1105
+ if (infos.length > 5) {
1106
+ console.log(` ... and ${infos.length - 5} more info items`);
1107
+ }
1108
+ console.log("");
1109
+ }
1110
+ // Show consolidation opportunities
1111
+ if (consolidationOpportunities.length > 0) {
1112
+ console.log(`\n${console_chars_1.emoji.hint} CONSOLIDATION OPPORTUNITIES:`);
1113
+ console.log((0, console_chars_1.createDivider)(70, "light"));
1114
+ const highPriority = consolidationOpportunities.filter((o) => o.priority === "high");
1115
+ const mediumPriority = consolidationOpportunities.filter((o) => o.priority === "medium");
1116
+ if (highPriority.length > 0) {
1117
+ console.log(`\n ${console_chars_1.emoji.error} HIGH PRIORITY (5+ files):`);
1118
+ for (const opp of highPriority) {
1119
+ console.log(`\n Category: ${opp.category}`);
1120
+ console.log(` Reason: ${opp.reason}`);
1121
+ console.log(` Suggested: consolidated/${opp.suggestedName}.ts`);
1122
+ console.log(` Files: ${opp.files
1123
+ .slice(0, 5)
1124
+ .map((f) => path.basename(f))
1125
+ .join(", ")}${opp.files.length > 5 ? ` (+${opp.files.length - 5} more)` : ""}`);
1126
+ }
1127
+ }
1128
+ if (mediumPriority.length > 0 && isVerbose) {
1129
+ console.log(`\n ${console_chars_1.emoji.warning} MEDIUM PRIORITY (3-4 files):`);
1130
+ for (const opp of mediumPriority.slice(0, 5)) {
1131
+ console.log(`\n Category: ${opp.category}`);
1132
+ console.log(` Reason: ${opp.reason}`);
1133
+ console.log(` Suggested: consolidated/${opp.suggestedName}.ts`);
1134
+ }
1135
+ if (mediumPriority.length > 5) {
1136
+ console.log(`\n ... and ${mediumPriority.length - 5} more medium priority opportunities`);
1137
+ }
1138
+ }
1139
+ console.log(`\n Total opportunities: ${consolidationOpportunities.length} (${highPriority.length} high, ${mediumPriority.length} medium)`);
1140
+ }
1141
+ // Summary
1142
+ console.log((0, console_chars_1.createDivider)(70, "heavy"));
1143
+ console.log(`${console_chars_1.emoji.chart} Summary: ${errors.length} errors, ${warnings.length} warnings, ${infos.length} info`);
1144
+ console.log(` Analyzed: ${analyses.length} preflights`);
1145
+ console.log(` Total regex patterns: ${analyses.reduce((sum, a) => sum + a.regexPatterns.length, 0)}`);
1146
+ console.log(` Total error codes: ${analyses.reduce((sum, a) => sum + a.errorCodes.length, 0)}`);
1147
+ // Shared pattern adoption stats
1148
+ const usingShared = analyses.filter((a) => a.usesSharedPatterns).length;
1149
+ console.log(` Shared pattern adoption: ${usingShared}/${analyses.length} (${((usingShared / analyses.length) * 100).toFixed(0)}%)`);
1150
+ if (errors.length === 0) {
1151
+ console.log(`\n${console_chars_1.emoji.success} No critical redundancies detected\n`);
1152
+ process.exit(0);
1153
+ }
1154
+ else {
1155
+ console.log(`\n${console_chars_1.emoji.error} Fix redundancies before continuing\n`);
1156
+ console.log(`${console_chars_1.emoji.hint} Suggestions:`);
1157
+ console.log(` ${console_chars_1.chars.bullet} Merge preflights with high overlap into consolidated modules`);
1158
+ console.log(` ${console_chars_1.chars.bullet} Remove duplicate error codes (use unique codes per check)`);
1159
+ console.log(` ${console_chars_1.chars.bullet} Consider if similar-named preflights should be combined`);
1160
+ console.log(" ${chars.bullet} Run: pnpm preflight:migrate-excludes --apply to fix local excludes");
1161
+ process.exit(1);
1162
+ }
1163
+ }
1164
+ main().catch((err) => {
1165
+ console.error(`${console_chars_1.emoji.error} Preflight redundancy detection crashed:`, err);
1166
+ process.exit(1);
1167
+ });
1168
+ //# sourceMappingURL=preflight-redundancy-detection.js.map