@empline/preflight 1.1.11 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (709) hide show
  1. package/dist/checks/consolidated/auth-storage-state.d.ts +3 -0
  2. package/dist/checks/consolidated/auth-storage-state.d.ts.map +1 -0
  3. package/dist/checks/consolidated/auth-storage-state.js +146 -0
  4. package/dist/checks/consolidated/auth-storage-state.js.map +1 -0
  5. package/dist/checks/consolidated/business.d.ts +50 -0
  6. package/dist/checks/consolidated/business.d.ts.map +1 -0
  7. package/dist/checks/consolidated/business.js +252 -0
  8. package/dist/checks/consolidated/business.js.map +1 -0
  9. package/dist/checks/consolidated/caching-strategy.d.ts +104 -0
  10. package/dist/checks/consolidated/caching-strategy.d.ts.map +1 -0
  11. package/dist/checks/consolidated/caching-strategy.js +725 -0
  12. package/dist/checks/consolidated/caching-strategy.js.map +1 -0
  13. package/dist/checks/consolidated/code-quality.d.ts +83 -0
  14. package/dist/checks/consolidated/code-quality.d.ts.map +1 -0
  15. package/dist/checks/consolidated/code-quality.js +445 -0
  16. package/dist/checks/consolidated/code-quality.js.map +1 -0
  17. package/dist/checks/consolidated/console-statements.d.ts +32 -0
  18. package/dist/checks/consolidated/console-statements.d.ts.map +1 -0
  19. package/dist/checks/consolidated/console-statements.js +304 -0
  20. package/dist/checks/consolidated/console-statements.js.map +1 -0
  21. package/dist/checks/consolidated/css-advanced-validation.d.ts +24 -0
  22. package/dist/checks/consolidated/css-advanced-validation.d.ts.map +1 -0
  23. package/dist/checks/consolidated/css-advanced-validation.js +415 -0
  24. package/dist/checks/consolidated/css-advanced-validation.js.map +1 -0
  25. package/dist/checks/consolidated/css-organization.d.ts +14 -0
  26. package/dist/checks/consolidated/css-organization.d.ts.map +1 -0
  27. package/dist/checks/consolidated/css-organization.js +432 -0
  28. package/dist/checks/consolidated/css-organization.js.map +1 -0
  29. package/dist/checks/consolidated/css-runtime-validation.d.ts +22 -0
  30. package/dist/checks/consolidated/css-runtime-validation.d.ts.map +1 -0
  31. package/dist/checks/consolidated/css-runtime-validation.js +330 -0
  32. package/dist/checks/consolidated/css-runtime-validation.js.map +1 -0
  33. package/dist/checks/consolidated/css-variable-validation.d.ts +17 -0
  34. package/dist/checks/consolidated/css-variable-validation.d.ts.map +1 -0
  35. package/dist/checks/consolidated/css-variable-validation.js +412 -0
  36. package/dist/checks/consolidated/css-variable-validation.js.map +1 -0
  37. package/dist/checks/consolidated/dark-mode-consistency.d.ts +23 -0
  38. package/dist/checks/consolidated/dark-mode-consistency.d.ts.map +1 -0
  39. package/dist/checks/consolidated/dark-mode-consistency.js +291 -0
  40. package/dist/checks/consolidated/dark-mode-consistency.js.map +1 -0
  41. package/dist/checks/consolidated/database.d.ts +95 -0
  42. package/dist/checks/consolidated/database.d.ts.map +1 -0
  43. package/dist/checks/consolidated/database.js +427 -0
  44. package/dist/checks/consolidated/database.js.map +1 -0
  45. package/dist/checks/consolidated/e2e-checks.d.ts +52 -0
  46. package/dist/checks/consolidated/e2e-checks.d.ts.map +1 -0
  47. package/dist/checks/consolidated/e2e-checks.js +157 -0
  48. package/dist/checks/consolidated/e2e-checks.js.map +1 -0
  49. package/dist/checks/consolidated/e2e-regression-coverage.d.ts +14 -0
  50. package/dist/checks/consolidated/e2e-regression-coverage.d.ts.map +1 -0
  51. package/dist/checks/consolidated/e2e-regression-coverage.js +151 -0
  52. package/dist/checks/consolidated/e2e-regression-coverage.js.map +1 -0
  53. package/dist/checks/consolidated/e2e-validation.d.ts +137 -0
  54. package/dist/checks/consolidated/e2e-validation.d.ts.map +1 -0
  55. package/dist/checks/consolidated/e2e-validation.js +1001 -0
  56. package/dist/checks/consolidated/e2e-validation.js.map +1 -0
  57. package/dist/checks/consolidated/enterprise-baseline.d.ts +9 -0
  58. package/dist/checks/consolidated/enterprise-baseline.d.ts.map +1 -0
  59. package/dist/checks/consolidated/enterprise-baseline.js +277 -0
  60. package/dist/checks/consolidated/enterprise-baseline.js.map +1 -0
  61. package/dist/checks/consolidated/generate-pageload-config.d.ts +6 -0
  62. package/dist/checks/consolidated/generate-pageload-config.d.ts.map +1 -0
  63. package/dist/checks/consolidated/generate-pageload-config.js +161 -0
  64. package/dist/checks/consolidated/generate-pageload-config.js.map +1 -0
  65. package/dist/checks/consolidated/hardened-checks.d.ts +276 -0
  66. package/dist/checks/consolidated/hardened-checks.d.ts.map +1 -0
  67. package/dist/checks/consolidated/hardened-checks.js +3056 -0
  68. package/dist/checks/consolidated/hardened-checks.js.map +1 -0
  69. package/dist/checks/consolidated/homepage-ux.d.ts +12 -0
  70. package/dist/checks/consolidated/homepage-ux.d.ts.map +1 -0
  71. package/dist/checks/consolidated/homepage-ux.js +242 -0
  72. package/dist/checks/consolidated/homepage-ux.js.map +1 -0
  73. package/dist/checks/consolidated/images.d.ts +76 -0
  74. package/dist/checks/consolidated/images.d.ts.map +1 -0
  75. package/dist/checks/consolidated/images.js +311 -0
  76. package/dist/checks/consolidated/images.js.map +1 -0
  77. package/dist/checks/consolidated/import-cycles.d.ts +63 -0
  78. package/dist/checks/consolidated/import-cycles.d.ts.map +1 -0
  79. package/dist/checks/consolidated/import-cycles.js +291 -0
  80. package/dist/checks/consolidated/import-cycles.js.map +1 -0
  81. package/dist/checks/consolidated/imports.d.ts +112 -0
  82. package/dist/checks/consolidated/imports.d.ts.map +1 -0
  83. package/dist/checks/consolidated/imports.js +977 -0
  84. package/dist/checks/consolidated/imports.js.map +1 -0
  85. package/dist/checks/consolidated/inline-style-conflicts.d.ts +21 -0
  86. package/dist/checks/consolidated/inline-style-conflicts.d.ts.map +1 -0
  87. package/dist/checks/consolidated/inline-style-conflicts.js +300 -0
  88. package/dist/checks/consolidated/inline-style-conflicts.js.map +1 -0
  89. package/dist/checks/consolidated/lib-organization.d.ts +12 -0
  90. package/dist/checks/consolidated/lib-organization.d.ts.map +1 -0
  91. package/dist/checks/consolidated/lib-organization.js +419 -0
  92. package/dist/checks/consolidated/lib-organization.js.map +1 -0
  93. package/dist/checks/consolidated/n-plus-one.d.ts +63 -0
  94. package/dist/checks/consolidated/n-plus-one.d.ts.map +1 -0
  95. package/dist/checks/consolidated/n-plus-one.js +331 -0
  96. package/dist/checks/consolidated/n-plus-one.js.map +1 -0
  97. package/dist/checks/consolidated/nextjs.d.ts +51 -0
  98. package/dist/checks/consolidated/nextjs.d.ts.map +1 -0
  99. package/dist/checks/consolidated/nextjs.js +205 -0
  100. package/dist/checks/consolidated/nextjs.js.map +1 -0
  101. package/dist/checks/consolidated/organization.d.ts +54 -0
  102. package/dist/checks/consolidated/organization.d.ts.map +1 -0
  103. package/dist/checks/consolidated/organization.js +158 -0
  104. package/dist/checks/consolidated/organization.js.map +1 -0
  105. package/dist/checks/consolidated/pageload.d.ts +12 -0
  106. package/dist/checks/consolidated/pageload.d.ts.map +1 -0
  107. package/dist/checks/consolidated/pageload.js +138 -0
  108. package/dist/checks/consolidated/pageload.js.map +1 -0
  109. package/dist/checks/consolidated/performance.d.ts +112 -0
  110. package/dist/checks/consolidated/performance.d.ts.map +1 -0
  111. package/dist/checks/consolidated/performance.js +1546 -0
  112. package/dist/checks/consolidated/performance.js.map +1 -0
  113. package/dist/checks/consolidated/quality.d.ts +52 -0
  114. package/dist/checks/consolidated/quality.d.ts.map +1 -0
  115. package/dist/checks/consolidated/quality.js +253 -0
  116. package/dist/checks/consolidated/quality.js.map +1 -0
  117. package/dist/checks/consolidated/react.d.ts +48 -0
  118. package/dist/checks/consolidated/react.d.ts.map +1 -0
  119. package/dist/checks/consolidated/react.js +203 -0
  120. package/dist/checks/consolidated/react.js.map +1 -0
  121. package/dist/checks/consolidated/regression-hygiene.d.ts +17 -0
  122. package/dist/checks/consolidated/regression-hygiene.d.ts.map +1 -0
  123. package/dist/checks/consolidated/regression-hygiene.js +242 -0
  124. package/dist/checks/consolidated/regression-hygiene.js.map +1 -0
  125. package/dist/checks/consolidated/regression.d.ts +20 -0
  126. package/dist/checks/consolidated/regression.d.ts.map +1 -0
  127. package/dist/checks/consolidated/regression.js +121 -0
  128. package/dist/checks/consolidated/regression.js.map +1 -0
  129. package/dist/checks/consolidated/runtime.d.ts +53 -0
  130. package/dist/checks/consolidated/runtime.d.ts.map +1 -0
  131. package/dist/checks/consolidated/runtime.js +160 -0
  132. package/dist/checks/consolidated/runtime.js.map +1 -0
  133. package/dist/checks/consolidated/script-performance.d.ts +17 -0
  134. package/dist/checks/consolidated/script-performance.d.ts.map +1 -0
  135. package/dist/checks/consolidated/script-performance.js +137 -0
  136. package/dist/checks/consolidated/script-performance.js.map +1 -0
  137. package/dist/checks/consolidated/security.d.ts +78 -0
  138. package/dist/checks/consolidated/security.d.ts.map +1 -0
  139. package/dist/checks/consolidated/security.js +404 -0
  140. package/dist/checks/consolidated/security.js.map +1 -0
  141. package/dist/checks/consolidated/seo.d.ts +31 -0
  142. package/dist/checks/consolidated/seo.d.ts.map +1 -0
  143. package/dist/checks/consolidated/seo.js +1438 -0
  144. package/dist/checks/consolidated/seo.js.map +1 -0
  145. package/dist/checks/consolidated/sx-prop-deprecation.d.ts +22 -0
  146. package/dist/checks/consolidated/sx-prop-deprecation.d.ts.map +1 -0
  147. package/dist/checks/consolidated/sx-prop-deprecation.js +280 -0
  148. package/dist/checks/consolidated/sx-prop-deprecation.js.map +1 -0
  149. package/dist/checks/consolidated/tailwind-class-validation.d.ts +25 -0
  150. package/dist/checks/consolidated/tailwind-class-validation.d.ts.map +1 -0
  151. package/dist/checks/consolidated/tailwind-class-validation.js +533 -0
  152. package/dist/checks/consolidated/tailwind-class-validation.js.map +1 -0
  153. package/dist/checks/consolidated/testing.d.ts +54 -0
  154. package/dist/checks/consolidated/testing.d.ts.map +1 -0
  155. package/dist/checks/consolidated/testing.js +163 -0
  156. package/dist/checks/consolidated/testing.js.map +1 -0
  157. package/dist/checks/consolidated/typescript.d.ts +3 -0
  158. package/dist/checks/consolidated/typescript.d.ts.map +1 -0
  159. package/dist/checks/consolidated/typescript.js +31 -0
  160. package/dist/checks/consolidated/typescript.js.map +1 -0
  161. package/dist/checks/consolidated/ui-accessibility-advanced.d.ts +104 -0
  162. package/dist/checks/consolidated/ui-accessibility-advanced.d.ts.map +1 -0
  163. package/dist/checks/consolidated/ui-accessibility-advanced.js +689 -0
  164. package/dist/checks/consolidated/ui-accessibility-advanced.js.map +1 -0
  165. package/dist/checks/consolidated/ui-accessibility.d.ts +121 -0
  166. package/dist/checks/consolidated/ui-accessibility.d.ts.map +1 -0
  167. package/dist/checks/consolidated/ui-accessibility.js +776 -0
  168. package/dist/checks/consolidated/ui-accessibility.js.map +1 -0
  169. package/dist/checks/consolidated/ui-advanced-spacing.d.ts +142 -0
  170. package/dist/checks/consolidated/ui-advanced-spacing.d.ts.map +1 -0
  171. package/dist/checks/consolidated/ui-advanced-spacing.js +1220 -0
  172. package/dist/checks/consolidated/ui-advanced-spacing.js.map +1 -0
  173. package/dist/checks/consolidated/ui-animation-duration.d.ts +108 -0
  174. package/dist/checks/consolidated/ui-animation-duration.d.ts.map +1 -0
  175. package/dist/checks/consolidated/ui-animation-duration.js +531 -0
  176. package/dist/checks/consolidated/ui-animation-duration.js.map +1 -0
  177. package/dist/checks/consolidated/ui-border-radius.d.ts +90 -0
  178. package/dist/checks/consolidated/ui-border-radius.d.ts.map +1 -0
  179. package/dist/checks/consolidated/ui-border-radius.js +519 -0
  180. package/dist/checks/consolidated/ui-border-radius.js.map +1 -0
  181. package/dist/checks/consolidated/ui-buttons.d.ts +32 -0
  182. package/dist/checks/consolidated/ui-buttons.d.ts.map +1 -0
  183. package/dist/checks/consolidated/ui-buttons.js +481 -0
  184. package/dist/checks/consolidated/ui-buttons.js.map +1 -0
  185. package/dist/checks/consolidated/ui-cards.d.ts +29 -0
  186. package/dist/checks/consolidated/ui-cards.d.ts.map +1 -0
  187. package/dist/checks/consolidated/ui-cards.js +504 -0
  188. package/dist/checks/consolidated/ui-cards.js.map +1 -0
  189. package/dist/checks/consolidated/ui-checks.d.ts +48 -0
  190. package/dist/checks/consolidated/ui-checks.d.ts.map +1 -0
  191. package/dist/checks/consolidated/ui-checks.js +264 -0
  192. package/dist/checks/consolidated/ui-checks.js.map +1 -0
  193. package/dist/checks/consolidated/ui-cleanup.d.ts +81 -0
  194. package/dist/checks/consolidated/ui-cleanup.d.ts.map +1 -0
  195. package/dist/checks/consolidated/ui-cleanup.js +650 -0
  196. package/dist/checks/consolidated/ui-cleanup.js.map +1 -0
  197. package/dist/checks/consolidated/ui-components.d.ts +255 -0
  198. package/dist/checks/consolidated/ui-components.d.ts.map +1 -0
  199. package/dist/checks/consolidated/ui-components.js +2008 -0
  200. package/dist/checks/consolidated/ui-components.js.map +1 -0
  201. package/dist/checks/consolidated/ui-consistency-advanced.d.ts +130 -0
  202. package/dist/checks/consolidated/ui-consistency-advanced.d.ts.map +1 -0
  203. package/dist/checks/consolidated/ui-consistency-advanced.js +982 -0
  204. package/dist/checks/consolidated/ui-consistency-advanced.js.map +1 -0
  205. package/dist/checks/consolidated/ui-consistency-comprehensive.d.ts +30 -0
  206. package/dist/checks/consolidated/ui-consistency-comprehensive.d.ts.map +1 -0
  207. package/dist/checks/consolidated/ui-consistency-comprehensive.js +1018 -0
  208. package/dist/checks/consolidated/ui-consistency-comprehensive.js.map +1 -0
  209. package/dist/checks/consolidated/ui-consistency-extended.d.ts +26 -0
  210. package/dist/checks/consolidated/ui-consistency-extended.d.ts.map +1 -0
  211. package/dist/checks/consolidated/ui-consistency-extended.js +606 -0
  212. package/dist/checks/consolidated/ui-consistency-extended.js.map +1 -0
  213. package/dist/checks/consolidated/ui-data-display.d.ts +103 -0
  214. package/dist/checks/consolidated/ui-data-display.d.ts.map +1 -0
  215. package/dist/checks/consolidated/ui-data-display.js +740 -0
  216. package/dist/checks/consolidated/ui-data-display.js.map +1 -0
  217. package/dist/checks/consolidated/ui-deprecated.d.ts +22 -0
  218. package/dist/checks/consolidated/ui-deprecated.d.ts.map +1 -0
  219. package/dist/checks/consolidated/ui-deprecated.js +336 -0
  220. package/dist/checks/consolidated/ui-deprecated.js.map +1 -0
  221. package/dist/checks/consolidated/ui-empty-null-states.d.ts +90 -0
  222. package/dist/checks/consolidated/ui-empty-null-states.d.ts.map +1 -0
  223. package/dist/checks/consolidated/ui-empty-null-states.js +511 -0
  224. package/dist/checks/consolidated/ui-empty-null-states.js.map +1 -0
  225. package/dist/checks/consolidated/ui-error-states.d.ts +99 -0
  226. package/dist/checks/consolidated/ui-error-states.d.ts.map +1 -0
  227. package/dist/checks/consolidated/ui-error-states.js +694 -0
  228. package/dist/checks/consolidated/ui-error-states.js.map +1 -0
  229. package/dist/checks/consolidated/ui-feedback-confirmations.d.ts +90 -0
  230. package/dist/checks/consolidated/ui-feedback-confirmations.d.ts.map +1 -0
  231. package/dist/checks/consolidated/ui-feedback-confirmations.js +596 -0
  232. package/dist/checks/consolidated/ui-feedback-confirmations.js.map +1 -0
  233. package/dist/checks/consolidated/ui-forms.d.ts +32 -0
  234. package/dist/checks/consolidated/ui-forms.d.ts.map +1 -0
  235. package/dist/checks/consolidated/ui-forms.js +568 -0
  236. package/dist/checks/consolidated/ui-forms.js.map +1 -0
  237. package/dist/checks/consolidated/ui-gradient-shadow.d.ts +90 -0
  238. package/dist/checks/consolidated/ui-gradient-shadow.d.ts.map +1 -0
  239. package/dist/checks/consolidated/ui-gradient-shadow.js +568 -0
  240. package/dist/checks/consolidated/ui-gradient-shadow.js.map +1 -0
  241. package/dist/checks/consolidated/ui-grid-responsive.d.ts +27 -0
  242. package/dist/checks/consolidated/ui-grid-responsive.d.ts.map +1 -0
  243. package/dist/checks/consolidated/ui-grid-responsive.js +441 -0
  244. package/dist/checks/consolidated/ui-grid-responsive.js.map +1 -0
  245. package/dist/checks/consolidated/ui-icon-size-tokens.d.ts +104 -0
  246. package/dist/checks/consolidated/ui-icon-size-tokens.d.ts.map +1 -0
  247. package/dist/checks/consolidated/ui-icon-size-tokens.js +514 -0
  248. package/dist/checks/consolidated/ui-icon-size-tokens.js.map +1 -0
  249. package/dist/checks/consolidated/ui-iconography.d.ts +90 -0
  250. package/dist/checks/consolidated/ui-iconography.d.ts.map +1 -0
  251. package/dist/checks/consolidated/ui-iconography.js +565 -0
  252. package/dist/checks/consolidated/ui-iconography.js.map +1 -0
  253. package/dist/checks/consolidated/ui-interactive-states.d.ts +240 -0
  254. package/dist/checks/consolidated/ui-interactive-states.d.ts.map +1 -0
  255. package/dist/checks/consolidated/ui-interactive-states.js +2474 -0
  256. package/dist/checks/consolidated/ui-interactive-states.js.map +1 -0
  257. package/dist/checks/consolidated/ui-layout.d.ts +256 -0
  258. package/dist/checks/consolidated/ui-layout.d.ts.map +1 -0
  259. package/dist/checks/consolidated/ui-layout.js +1371 -0
  260. package/dist/checks/consolidated/ui-layout.js.map +1 -0
  261. package/dist/checks/consolidated/ui-loading-skeletons.d.ts +11 -0
  262. package/dist/checks/consolidated/ui-loading-skeletons.d.ts.map +1 -0
  263. package/dist/checks/consolidated/ui-loading-skeletons.js +145 -0
  264. package/dist/checks/consolidated/ui-loading-skeletons.js.map +1 -0
  265. package/dist/checks/consolidated/ui-loading-state-skeletons.d.ts +9 -0
  266. package/dist/checks/consolidated/ui-loading-state-skeletons.d.ts.map +1 -0
  267. package/dist/checks/consolidated/ui-loading-state-skeletons.js +125 -0
  268. package/dist/checks/consolidated/ui-loading-state-skeletons.js.map +1 -0
  269. package/dist/checks/consolidated/ui-media.d.ts +74 -0
  270. package/dist/checks/consolidated/ui-media.d.ts.map +1 -0
  271. package/dist/checks/consolidated/ui-media.js +408 -0
  272. package/dist/checks/consolidated/ui-media.js.map +1 -0
  273. package/dist/checks/consolidated/ui-micro-interactions.d.ts +107 -0
  274. package/dist/checks/consolidated/ui-micro-interactions.d.ts.map +1 -0
  275. package/dist/checks/consolidated/ui-micro-interactions.js +825 -0
  276. package/dist/checks/consolidated/ui-micro-interactions.js.map +1 -0
  277. package/dist/checks/consolidated/ui-microcopy-consistency.d.ts +114 -0
  278. package/dist/checks/consolidated/ui-microcopy-consistency.d.ts.map +1 -0
  279. package/dist/checks/consolidated/ui-microcopy-consistency.js +566 -0
  280. package/dist/checks/consolidated/ui-microcopy-consistency.js.map +1 -0
  281. package/dist/checks/consolidated/ui-mobile-ux.d.ts +251 -0
  282. package/dist/checks/consolidated/ui-mobile-ux.d.ts.map +1 -0
  283. package/dist/checks/consolidated/ui-mobile-ux.js +2212 -0
  284. package/dist/checks/consolidated/ui-mobile-ux.js.map +1 -0
  285. package/dist/checks/consolidated/ui-motion-accessibility.d.ts +93 -0
  286. package/dist/checks/consolidated/ui-motion-accessibility.d.ts.map +1 -0
  287. package/dist/checks/consolidated/ui-motion-accessibility.js +450 -0
  288. package/dist/checks/consolidated/ui-motion-accessibility.js.map +1 -0
  289. package/dist/checks/consolidated/ui-navigation.d.ts +85 -0
  290. package/dist/checks/consolidated/ui-navigation.d.ts.map +1 -0
  291. package/dist/checks/consolidated/ui-navigation.js +673 -0
  292. package/dist/checks/consolidated/ui-navigation.js.map +1 -0
  293. package/dist/checks/consolidated/ui-patterns.d.ts +174 -0
  294. package/dist/checks/consolidated/ui-patterns.d.ts.map +1 -0
  295. package/dist/checks/consolidated/ui-patterns.js +1532 -0
  296. package/dist/checks/consolidated/ui-patterns.js.map +1 -0
  297. package/dist/checks/consolidated/ui-responsive.d.ts +89 -0
  298. package/dist/checks/consolidated/ui-responsive.d.ts.map +1 -0
  299. package/dist/checks/consolidated/ui-responsive.js +588 -0
  300. package/dist/checks/consolidated/ui-responsive.js.map +1 -0
  301. package/dist/checks/consolidated/ui-spacing-standards.d.ts +43 -0
  302. package/dist/checks/consolidated/ui-spacing-standards.d.ts.map +1 -0
  303. package/dist/checks/consolidated/ui-spacing-standards.js +874 -0
  304. package/dist/checks/consolidated/ui-spacing-standards.js.map +1 -0
  305. package/dist/checks/consolidated/ui-spacing.d.ts +751 -0
  306. package/dist/checks/consolidated/ui-spacing.d.ts.map +1 -0
  307. package/dist/checks/consolidated/ui-spacing.js +4996 -0
  308. package/dist/checks/consolidated/ui-spacing.js.map +1 -0
  309. package/dist/checks/consolidated/ui-standards-auto-fixer.d.ts +70 -0
  310. package/dist/checks/consolidated/ui-standards-auto-fixer.d.ts.map +1 -0
  311. package/dist/checks/consolidated/ui-standards-auto-fixer.js +429 -0
  312. package/dist/checks/consolidated/ui-standards-auto-fixer.js.map +1 -0
  313. package/dist/checks/consolidated/ui-standards-enforcement.d.ts +100 -0
  314. package/dist/checks/consolidated/ui-standards-enforcement.d.ts.map +1 -0
  315. package/dist/checks/consolidated/ui-standards-enforcement.js +935 -0
  316. package/dist/checks/consolidated/ui-standards-enforcement.js.map +1 -0
  317. package/dist/checks/consolidated/ui-state-consistency.d.ts +90 -0
  318. package/dist/checks/consolidated/ui-state-consistency.d.ts.map +1 -0
  319. package/dist/checks/consolidated/ui-state-consistency.js +659 -0
  320. package/dist/checks/consolidated/ui-state-consistency.js.map +1 -0
  321. package/dist/checks/consolidated/ui-style-validation.d.ts +74 -0
  322. package/dist/checks/consolidated/ui-style-validation.d.ts.map +1 -0
  323. package/dist/checks/consolidated/ui-style-validation.js +403 -0
  324. package/dist/checks/consolidated/ui-style-validation.js.map +1 -0
  325. package/dist/checks/consolidated/ui-tokens.d.ts +110 -0
  326. package/dist/checks/consolidated/ui-tokens.d.ts.map +1 -0
  327. package/dist/checks/consolidated/ui-tokens.js +990 -0
  328. package/dist/checks/consolidated/ui-tokens.js.map +1 -0
  329. package/dist/checks/consolidated/ui-typography.d.ts +77 -0
  330. package/dist/checks/consolidated/ui-typography.d.ts.map +1 -0
  331. package/dist/checks/consolidated/ui-typography.js +416 -0
  332. package/dist/checks/consolidated/ui-typography.js.map +1 -0
  333. package/dist/checks/consolidated/ui-visual-hierarchy.d.ts +90 -0
  334. package/dist/checks/consolidated/ui-visual-hierarchy.d.ts.map +1 -0
  335. package/dist/checks/consolidated/ui-visual-hierarchy.js +562 -0
  336. package/dist/checks/consolidated/ui-visual-hierarchy.js.map +1 -0
  337. package/dist/checks/consolidated/woocommerce.d.ts +50 -0
  338. package/dist/checks/consolidated/woocommerce.d.ts.map +1 -0
  339. package/dist/checks/consolidated/woocommerce.js +198 -0
  340. package/dist/checks/consolidated/woocommerce.js.map +1 -0
  341. package/dist/checks/core/api-route-protection.d.ts +2 -0
  342. package/dist/checks/core/api-route-protection.d.ts.map +1 -0
  343. package/dist/checks/core/api-route-protection.js +101 -0
  344. package/dist/checks/core/api-route-protection.js.map +1 -0
  345. package/dist/checks/core/critical.d.ts +8 -0
  346. package/dist/checks/core/critical.d.ts.map +1 -0
  347. package/dist/checks/core/critical.js +200 -0
  348. package/dist/checks/core/critical.js.map +1 -0
  349. package/dist/checks/core/database.d.ts +8 -0
  350. package/dist/checks/core/database.d.ts.map +1 -0
  351. package/dist/checks/core/database.js +699 -0
  352. package/dist/checks/core/database.js.map +1 -0
  353. package/dist/checks/core/development.d.ts +8 -0
  354. package/dist/checks/core/development.d.ts.map +1 -0
  355. package/dist/checks/core/development.js +417 -0
  356. package/dist/checks/core/development.js.map +1 -0
  357. package/dist/checks/core/hydration-mismatch-check.d.ts +38 -0
  358. package/dist/checks/core/hydration-mismatch-check.d.ts.map +1 -0
  359. package/dist/checks/core/hydration-mismatch-check.js +411 -0
  360. package/dist/checks/core/hydration-mismatch-check.js.map +1 -0
  361. package/dist/checks/core/performance.d.ts +8 -0
  362. package/dist/checks/core/performance.d.ts.map +1 -0
  363. package/dist/checks/core/performance.js +474 -0
  364. package/dist/checks/core/performance.js.map +1 -0
  365. package/dist/checks/core/security.d.ts +8 -0
  366. package/dist/checks/core/security.d.ts.map +1 -0
  367. package/dist/checks/core/security.js +275 -0
  368. package/dist/checks/core/security.js.map +1 -0
  369. package/dist/checks/core/standardized-error-handling.d.ts +43 -0
  370. package/dist/checks/core/standardized-error-handling.d.ts.map +1 -0
  371. package/dist/checks/core/standardized-error-handling.js +384 -0
  372. package/dist/checks/core/standardized-error-handling.js.map +1 -0
  373. package/dist/checks/core/supercatch.d.ts +8 -0
  374. package/dist/checks/core/supercatch.d.ts.map +1 -0
  375. package/dist/checks/core/supercatch.js +750 -0
  376. package/dist/checks/core/supercatch.js.map +1 -0
  377. package/dist/checks/core/suppression-check.d.ts +2 -0
  378. package/dist/checks/core/suppression-check.d.ts.map +1 -0
  379. package/dist/checks/core/suppression-check.js +129 -0
  380. package/dist/checks/core/suppression-check.js.map +1 -0
  381. package/dist/checks/core/ui-quality.d.ts +8 -0
  382. package/dist/checks/core/ui-quality.d.ts.map +1 -0
  383. package/dist/checks/core/ui-quality.js +1736 -0
  384. package/dist/checks/core/ui-quality.js.map +1 -0
  385. package/dist/checks/core/unused-assets-check.d.ts +2 -0
  386. package/dist/checks/core/unused-assets-check.d.ts.map +1 -0
  387. package/dist/checks/core/unused-assets-check.js +112 -0
  388. package/dist/checks/core/unused-assets-check.js.map +1 -0
  389. package/dist/checks/core/use-status-ssr-safety.d.ts +34 -0
  390. package/dist/checks/core/use-status-ssr-safety.d.ts.map +1 -0
  391. package/dist/checks/core/use-status-ssr-safety.js +283 -0
  392. package/dist/checks/core/use-status-ssr-safety.js.map +1 -0
  393. package/dist/checks/email/email-flow-validation.d.ts +23 -0
  394. package/dist/checks/email/email-flow-validation.d.ts.map +1 -0
  395. package/dist/checks/email/email-flow-validation.js +468 -0
  396. package/dist/checks/email/email-flow-validation.js.map +1 -0
  397. package/dist/checks/email/email-template-db-verification.d.ts +20 -0
  398. package/dist/checks/email/email-template-db-verification.d.ts.map +1 -0
  399. package/dist/checks/email/email-template-db-verification.js +46 -0
  400. package/dist/checks/email/email-template-db-verification.js.map +1 -0
  401. package/dist/checks/email/email-template-validation.d.ts +24 -0
  402. package/dist/checks/email/email-template-validation.d.ts.map +1 -0
  403. package/dist/checks/email/email-template-validation.js +688 -0
  404. package/dist/checks/email/email-template-validation.js.map +1 -0
  405. package/dist/checks/jsx/comment-placement.d.ts +45 -0
  406. package/dist/checks/jsx/comment-placement.d.ts.map +1 -0
  407. package/dist/checks/jsx/comment-placement.js +316 -0
  408. package/dist/checks/jsx/comment-placement.js.map +1 -0
  409. package/dist/checks/specialized/admin-layout-check.d.ts +19 -0
  410. package/dist/checks/specialized/admin-layout-check.d.ts.map +1 -0
  411. package/dist/checks/specialized/admin-layout-check.js +166 -0
  412. package/dist/checks/specialized/admin-layout-check.js.map +1 -0
  413. package/dist/checks/specialized/client-server-separation.d.ts +14 -0
  414. package/dist/checks/specialized/client-server-separation.d.ts.map +1 -0
  415. package/dist/checks/specialized/client-server-separation.js +197 -0
  416. package/dist/checks/specialized/client-server-separation.js.map +1 -0
  417. package/dist/checks/specialized/cost-optimization.d.ts +18 -0
  418. package/dist/checks/specialized/cost-optimization.d.ts.map +1 -0
  419. package/dist/checks/specialized/cost-optimization.js +78 -0
  420. package/dist/checks/specialized/cost-optimization.js.map +1 -0
  421. package/dist/checks/specialized/database-migration-sync.d.ts +21 -0
  422. package/dist/checks/specialized/database-migration-sync.d.ts.map +1 -0
  423. package/dist/checks/specialized/database-migration-sync.js +150 -0
  424. package/dist/checks/specialized/database-migration-sync.js.map +1 -0
  425. package/dist/checks/specialized/database-model-validation.d.ts +15 -0
  426. package/dist/checks/specialized/database-model-validation.d.ts.map +1 -0
  427. package/dist/checks/specialized/database-model-validation.js +35 -0
  428. package/dist/checks/specialized/database-model-validation.js.map +1 -0
  429. package/dist/checks/specialized/database-schema-migrations-diff.d.ts +27 -0
  430. package/dist/checks/specialized/database-schema-migrations-diff.d.ts.map +1 -0
  431. package/dist/checks/specialized/database-schema-migrations-diff.js +177 -0
  432. package/dist/checks/specialized/database-schema-migrations-diff.js.map +1 -0
  433. package/dist/checks/specialized/database-schema-sync.d.ts +23 -0
  434. package/dist/checks/specialized/database-schema-sync.d.ts.map +1 -0
  435. package/dist/checks/specialized/database-schema-sync.js +77 -0
  436. package/dist/checks/specialized/database-schema-sync.js.map +1 -0
  437. package/dist/checks/specialized/decimal-serialization.d.ts +24 -0
  438. package/dist/checks/specialized/decimal-serialization.d.ts.map +1 -0
  439. package/dist/checks/specialized/decimal-serialization.js +400 -0
  440. package/dist/checks/specialized/decimal-serialization.js.map +1 -0
  441. package/dist/checks/specialized/detect-router-issues.d.ts +14 -0
  442. package/dist/checks/specialized/detect-router-issues.d.ts.map +1 -0
  443. package/dist/checks/specialized/detect-router-issues.js +96 -0
  444. package/dist/checks/specialized/detect-router-issues.js.map +1 -0
  445. package/dist/checks/specialized/enum-validation.d.ts +15 -0
  446. package/dist/checks/specialized/enum-validation.d.ts.map +1 -0
  447. package/dist/checks/specialized/enum-validation.js +35 -0
  448. package/dist/checks/specialized/enum-validation.js.map +1 -0
  449. package/dist/checks/specialized/hash-collision.d.ts +18 -0
  450. package/dist/checks/specialized/hash-collision.d.ts.map +1 -0
  451. package/dist/checks/specialized/hash-collision.js +78 -0
  452. package/dist/checks/specialized/hash-collision.js.map +1 -0
  453. package/dist/checks/specialized/id-generation-enforcement.d.ts +16 -0
  454. package/dist/checks/specialized/id-generation-enforcement.d.ts.map +1 -0
  455. package/dist/checks/specialized/id-generation-enforcement.js +307 -0
  456. package/dist/checks/specialized/id-generation-enforcement.js.map +1 -0
  457. package/dist/checks/specialized/image-data-integrity.d.ts +15 -0
  458. package/dist/checks/specialized/image-data-integrity.d.ts.map +1 -0
  459. package/dist/checks/specialized/image-data-integrity.js +79 -0
  460. package/dist/checks/specialized/image-data-integrity.js.map +1 -0
  461. package/dist/checks/specialized/image-health.d.ts +14 -0
  462. package/dist/checks/specialized/image-health.d.ts.map +1 -0
  463. package/dist/checks/specialized/image-health.js +122 -0
  464. package/dist/checks/specialized/image-health.js.map +1 -0
  465. package/dist/checks/specialized/image-metadata-validation.d.ts +14 -0
  466. package/dist/checks/specialized/image-metadata-validation.d.ts.map +1 -0
  467. package/dist/checks/specialized/image-metadata-validation.js +95 -0
  468. package/dist/checks/specialized/image-metadata-validation.js.map +1 -0
  469. package/dist/checks/specialized/image-optimization.d.ts +16 -0
  470. package/dist/checks/specialized/image-optimization.d.ts.map +1 -0
  471. package/dist/checks/specialized/image-optimization.js +86 -0
  472. package/dist/checks/specialized/image-optimization.js.map +1 -0
  473. package/dist/checks/specialized/invalid-module-imports.d.ts +24 -0
  474. package/dist/checks/specialized/invalid-module-imports.d.ts.map +1 -0
  475. package/dist/checks/specialized/invalid-module-imports.js +209 -0
  476. package/dist/checks/specialized/invalid-module-imports.js.map +1 -0
  477. package/dist/checks/specialized/lint-validation.d.ts +26 -0
  478. package/dist/checks/specialized/lint-validation.d.ts.map +1 -0
  479. package/dist/checks/specialized/lint-validation.js +193 -0
  480. package/dist/checks/specialized/lint-validation.js.map +1 -0
  481. package/dist/checks/specialized/listing-workflow.d.ts +19 -0
  482. package/dist/checks/specialized/listing-workflow.d.ts.map +1 -0
  483. package/dist/checks/specialized/listing-workflow.js +89 -0
  484. package/dist/checks/specialized/listing-workflow.js.map +1 -0
  485. package/dist/checks/specialized/mui-imports-validation.d.ts +18 -0
  486. package/dist/checks/specialized/mui-imports-validation.d.ts.map +1 -0
  487. package/dist/checks/specialized/mui-imports-validation.js +134 -0
  488. package/dist/checks/specialized/mui-imports-validation.js.map +1 -0
  489. package/dist/checks/specialized/nextauth-v5-compliance.d.ts +16 -0
  490. package/dist/checks/specialized/nextauth-v5-compliance.d.ts.map +1 -0
  491. package/dist/checks/specialized/nextauth-v5-compliance.js +164 -0
  492. package/dist/checks/specialized/nextauth-v5-compliance.js.map +1 -0
  493. package/dist/checks/specialized/nextjs-params-check.d.ts +14 -0
  494. package/dist/checks/specialized/nextjs-params-check.d.ts.map +1 -0
  495. package/dist/checks/specialized/nextjs-params-check.js +140 -0
  496. package/dist/checks/specialized/nextjs-params-check.js.map +1 -0
  497. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.d.ts +16 -0
  498. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.d.ts.map +1 -0
  499. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.js +36 -0
  500. package/dist/checks/specialized/no-legacy-catalog-aliases-validation.js.map +1 -0
  501. package/dist/checks/specialized/no-wata-cardgraded-validation.d.ts +22 -0
  502. package/dist/checks/specialized/no-wata-cardgraded-validation.d.ts.map +1 -0
  503. package/dist/checks/specialized/no-wata-cardgraded-validation.js +97 -0
  504. package/dist/checks/specialized/no-wata-cardgraded-validation.js.map +1 -0
  505. package/dist/checks/specialized/parameter-consistency-check.d.ts +20 -0
  506. package/dist/checks/specialized/parameter-consistency-check.d.ts.map +1 -0
  507. package/dist/checks/specialized/parameter-consistency-check.js +115 -0
  508. package/dist/checks/specialized/parameter-consistency-check.js.map +1 -0
  509. package/dist/checks/specialized/prisma-field-names-validation.d.ts +15 -0
  510. package/dist/checks/specialized/prisma-field-names-validation.d.ts.map +1 -0
  511. package/dist/checks/specialized/prisma-field-names-validation.js +35 -0
  512. package/dist/checks/specialized/prisma-field-names-validation.js.map +1 -0
  513. package/dist/checks/specialized/prisma-null-syntax.d.ts +34 -0
  514. package/dist/checks/specialized/prisma-null-syntax.d.ts.map +1 -0
  515. package/dist/checks/specialized/prisma-null-syntax.js +330 -0
  516. package/dist/checks/specialized/prisma-null-syntax.js.map +1 -0
  517. package/dist/checks/specialized/prisma-query-validation.d.ts +15 -0
  518. package/dist/checks/specialized/prisma-query-validation.d.ts.map +1 -0
  519. package/dist/checks/specialized/prisma-query-validation.js +35 -0
  520. package/dist/checks/specialized/prisma-query-validation.js.map +1 -0
  521. package/dist/checks/specialized/product-type-validation.d.ts +17 -0
  522. package/dist/checks/specialized/product-type-validation.d.ts.map +1 -0
  523. package/dist/checks/specialized/product-type-validation.js +129 -0
  524. package/dist/checks/specialized/product-type-validation.js.map +1 -0
  525. package/dist/checks/specialized/responsive-image-validation.d.ts +14 -0
  526. package/dist/checks/specialized/responsive-image-validation.d.ts.map +1 -0
  527. package/dist/checks/specialized/responsive-image-validation.js +101 -0
  528. package/dist/checks/specialized/responsive-image-validation.js.map +1 -0
  529. package/dist/checks/specialized/root-cleanliness.d.ts +21 -0
  530. package/dist/checks/specialized/root-cleanliness.d.ts.map +1 -0
  531. package/dist/checks/specialized/root-cleanliness.js +251 -0
  532. package/dist/checks/specialized/root-cleanliness.js.map +1 -0
  533. package/dist/checks/specialized/rotation-detection-validation.d.ts +16 -0
  534. package/dist/checks/specialized/rotation-detection-validation.d.ts.map +1 -0
  535. package/dist/checks/specialized/rotation-detection-validation.js +113 -0
  536. package/dist/checks/specialized/rotation-detection-validation.js.map +1 -0
  537. package/dist/checks/specialized/script-organization.d.ts +17 -0
  538. package/dist/checks/specialized/script-organization.d.ts.map +1 -0
  539. package/dist/checks/specialized/script-organization.js +487 -0
  540. package/dist/checks/specialized/script-organization.js.map +1 -0
  541. package/dist/checks/specialized/shared-components-migration.d.ts +137 -0
  542. package/dist/checks/specialized/shared-components-migration.d.ts.map +1 -0
  543. package/dist/checks/specialized/shared-components-migration.js +1288 -0
  544. package/dist/checks/specialized/shared-components-migration.js.map +1 -0
  545. package/dist/checks/specialized/store-specialties-normalization.d.ts +10 -0
  546. package/dist/checks/specialized/store-specialties-normalization.d.ts.map +1 -0
  547. package/dist/checks/specialized/store-specialties-normalization.js +126 -0
  548. package/dist/checks/specialized/store-specialties-normalization.js.map +1 -0
  549. package/dist/checks/specialized/two-stage-trim-validation.d.ts +16 -0
  550. package/dist/checks/specialized/two-stage-trim-validation.d.ts.map +1 -0
  551. package/dist/checks/specialized/two-stage-trim-validation.js +115 -0
  552. package/dist/checks/specialized/two-stage-trim-validation.js.map +1 -0
  553. package/dist/checks/specialized/underscore-variable-audit.d.ts +26 -0
  554. package/dist/checks/specialized/underscore-variable-audit.d.ts.map +1 -0
  555. package/dist/checks/specialized/underscore-variable-audit.js +219 -0
  556. package/dist/checks/specialized/underscore-variable-audit.js.map +1 -0
  557. package/dist/checks/specialized/unified-badge-consistency.d.ts +16 -0
  558. package/dist/checks/specialized/unified-badge-consistency.d.ts.map +1 -0
  559. package/dist/checks/specialized/unified-badge-consistency.js +284 -0
  560. package/dist/checks/specialized/unified-badge-consistency.js.map +1 -0
  561. package/dist/checks/specialized/validate-integration-enums.d.ts +15 -0
  562. package/dist/checks/specialized/validate-integration-enums.d.ts.map +1 -0
  563. package/dist/checks/specialized/validate-integration-enums.js +131 -0
  564. package/dist/checks/specialized/validate-integration-enums.js.map +1 -0
  565. package/dist/checks/testing/action-regression.d.ts +23 -0
  566. package/dist/checks/testing/action-regression.d.ts.map +1 -0
  567. package/dist/checks/testing/action-regression.js +192 -0
  568. package/dist/checks/testing/action-regression.js.map +1 -0
  569. package/dist/checks/testing/critical-api-coverage.d.ts +21 -0
  570. package/dist/checks/testing/critical-api-coverage.d.ts.map +1 -0
  571. package/dist/checks/testing/critical-api-coverage.js +158 -0
  572. package/dist/checks/testing/critical-api-coverage.js.map +1 -0
  573. package/dist/checks/testing/data-entry-regression-required.d.ts +24 -0
  574. package/dist/checks/testing/data-entry-regression-required.d.ts.map +1 -0
  575. package/dist/checks/testing/data-entry-regression-required.js +378 -0
  576. package/dist/checks/testing/data-entry-regression-required.js.map +1 -0
  577. package/dist/checks/testing/e2e-best-practices.d.ts +24 -0
  578. package/dist/checks/testing/e2e-best-practices.d.ts.map +1 -0
  579. package/dist/checks/testing/e2e-best-practices.js +791 -0
  580. package/dist/checks/testing/e2e-best-practices.js.map +1 -0
  581. package/dist/checks/testing/e2e-flake-patterns.d.ts +26 -0
  582. package/dist/checks/testing/e2e-flake-patterns.d.ts.map +1 -0
  583. package/dist/checks/testing/e2e-flake-patterns.js +305 -0
  584. package/dist/checks/testing/e2e-flake-patterns.js.map +1 -0
  585. package/dist/checks/testing/e2e-redundant-visibility-checks.d.ts +25 -0
  586. package/dist/checks/testing/e2e-redundant-visibility-checks.d.ts.map +1 -0
  587. package/dist/checks/testing/e2e-redundant-visibility-checks.js +613 -0
  588. package/dist/checks/testing/e2e-redundant-visibility-checks.js.map +1 -0
  589. package/dist/checks/testing/e2e-slow-tests.d.ts +9 -0
  590. package/dist/checks/testing/e2e-slow-tests.d.ts.map +1 -0
  591. package/dist/checks/testing/e2e-slow-tests.js +142 -0
  592. package/dist/checks/testing/e2e-slow-tests.js.map +1 -0
  593. package/dist/checks/testing/e2e-timeouts.d.ts +9 -0
  594. package/dist/checks/testing/e2e-timeouts.d.ts.map +1 -0
  595. package/dist/checks/testing/e2e-timeouts.js +82 -0
  596. package/dist/checks/testing/e2e-timeouts.js.map +1 -0
  597. package/dist/checks/testing/integration-e2e-depth.d.ts +20 -0
  598. package/dist/checks/testing/integration-e2e-depth.d.ts.map +1 -0
  599. package/dist/checks/testing/integration-e2e-depth.js +575 -0
  600. package/dist/checks/testing/integration-e2e-depth.js.map +1 -0
  601. package/dist/checks/testing/playwright-feature-coverage-gaps.d.ts +31 -0
  602. package/dist/checks/testing/playwright-feature-coverage-gaps.d.ts.map +1 -0
  603. package/dist/checks/testing/playwright-feature-coverage-gaps.js +1582 -0
  604. package/dist/checks/testing/playwright-feature-coverage-gaps.js.map +1 -0
  605. package/dist/checks/testing/playwright-mock-inventory.d.ts +24 -0
  606. package/dist/checks/testing/playwright-mock-inventory.d.ts.map +1 -0
  607. package/dist/checks/testing/playwright-mock-inventory.js +380 -0
  608. package/dist/checks/testing/playwright-mock-inventory.js.map +1 -0
  609. package/dist/checks/testing/test-coverage-threshold.d.ts +25 -0
  610. package/dist/checks/testing/test-coverage-threshold.d.ts.map +1 -0
  611. package/dist/checks/testing/test-coverage-threshold.js +166 -0
  612. package/dist/checks/testing/test-coverage-threshold.js.map +1 -0
  613. package/dist/checks/testing/test-flakiness-score.d.ts +27 -0
  614. package/dist/checks/testing/test-flakiness-score.d.ts.map +1 -0
  615. package/dist/checks/testing/test-flakiness-score.js +358 -0
  616. package/dist/checks/testing/test-flakiness-score.js.map +1 -0
  617. package/dist/checks/testing/test-patterns.d.ts +16 -0
  618. package/dist/checks/testing/test-patterns.d.ts.map +1 -0
  619. package/dist/checks/testing/test-patterns.js +156 -0
  620. package/dist/checks/testing/test-patterns.js.map +1 -0
  621. package/dist/checks/workflows/a-plus-rating-validation.d.ts +42 -0
  622. package/dist/checks/workflows/a-plus-rating-validation.d.ts.map +1 -0
  623. package/dist/checks/workflows/a-plus-rating-validation.js +527 -0
  624. package/dist/checks/workflows/a-plus-rating-validation.js.map +1 -0
  625. package/dist/checks/workflows/affected.d.ts +14 -0
  626. package/dist/checks/workflows/affected.d.ts.map +1 -0
  627. package/dist/checks/workflows/affected.js +126 -0
  628. package/dist/checks/workflows/affected.js.map +1 -0
  629. package/dist/checks/workflows/ai.d.ts +6 -0
  630. package/dist/checks/workflows/ai.d.ts.map +1 -0
  631. package/dist/checks/workflows/ai.js +42 -0
  632. package/dist/checks/workflows/ai.js.map +1 -0
  633. package/dist/checks/workflows/all.d.ts +31 -0
  634. package/dist/checks/workflows/all.d.ts.map +1 -0
  635. package/dist/checks/workflows/all.js +2688 -0
  636. package/dist/checks/workflows/all.js.map +1 -0
  637. package/dist/checks/workflows/commit.d.ts +19 -0
  638. package/dist/checks/workflows/commit.d.ts.map +1 -0
  639. package/dist/checks/workflows/commit.js +207 -0
  640. package/dist/checks/workflows/commit.js.map +1 -0
  641. package/dist/checks/workflows/critical.d.ts +9 -0
  642. package/dist/checks/workflows/critical.d.ts.map +1 -0
  643. package/dist/checks/workflows/critical.js +213 -0
  644. package/dist/checks/workflows/critical.js.map +1 -0
  645. package/dist/checks/workflows/database-id-validation.d.ts +9 -0
  646. package/dist/checks/workflows/database-id-validation.d.ts.map +1 -0
  647. package/dist/checks/workflows/database-id-validation.js +13 -0
  648. package/dist/checks/workflows/database-id-validation.js.map +1 -0
  649. package/dist/checks/workflows/deploy.d.ts +20 -0
  650. package/dist/checks/workflows/deploy.d.ts.map +1 -0
  651. package/dist/checks/workflows/deploy.js +107 -0
  652. package/dist/checks/workflows/deploy.js.map +1 -0
  653. package/dist/checks/workflows/deployment-readiness.d.ts +12 -0
  654. package/dist/checks/workflows/deployment-readiness.d.ts.map +1 -0
  655. package/dist/checks/workflows/deployment-readiness.js +403 -0
  656. package/dist/checks/workflows/deployment-readiness.js.map +1 -0
  657. package/dist/checks/workflows/dev.d.ts +19 -0
  658. package/dist/checks/workflows/dev.d.ts.map +1 -0
  659. package/dist/checks/workflows/dev.js +88 -0
  660. package/dist/checks/workflows/dev.js.map +1 -0
  661. package/dist/checks/workflows/development.d.ts +9 -0
  662. package/dist/checks/workflows/development.d.ts.map +1 -0
  663. package/dist/checks/workflows/development.js +65 -0
  664. package/dist/checks/workflows/development.js.map +1 -0
  665. package/dist/checks/workflows/enterprise.d.ts +10 -0
  666. package/dist/checks/workflows/enterprise.d.ts.map +1 -0
  667. package/dist/checks/workflows/enterprise.js +359 -0
  668. package/dist/checks/workflows/enterprise.js.map +1 -0
  669. package/dist/checks/workflows/images.d.ts +6 -0
  670. package/dist/checks/workflows/images.d.ts.map +1 -0
  671. package/dist/checks/workflows/images.js +58 -0
  672. package/dist/checks/workflows/images.js.map +1 -0
  673. package/dist/checks/workflows/naming.d.ts +19 -0
  674. package/dist/checks/workflows/naming.d.ts.map +1 -0
  675. package/dist/checks/workflows/naming.js +42 -0
  676. package/dist/checks/workflows/naming.js.map +1 -0
  677. package/dist/checks/workflows/performance.d.ts +8 -0
  678. package/dist/checks/workflows/performance.d.ts.map +1 -0
  679. package/dist/checks/workflows/performance.js +77 -0
  680. package/dist/checks/workflows/performance.js.map +1 -0
  681. package/dist/checks/workflows/pre-deploy.d.ts +6 -0
  682. package/dist/checks/workflows/pre-deploy.d.ts.map +1 -0
  683. package/dist/checks/workflows/pre-deploy.js +41 -0
  684. package/dist/checks/workflows/pre-deploy.js.map +1 -0
  685. package/dist/checks/workflows/security.d.ts +8 -0
  686. package/dist/checks/workflows/security.d.ts.map +1 -0
  687. package/dist/checks/workflows/security.js +71 -0
  688. package/dist/checks/workflows/security.js.map +1 -0
  689. package/dist/checks/workflows/supercatch.d.ts +8 -0
  690. package/dist/checks/workflows/supercatch.d.ts.map +1 -0
  691. package/dist/checks/workflows/supercatch.js +127 -0
  692. package/dist/checks/workflows/supercatch.js.map +1 -0
  693. package/dist/checks/workflows/ui-quality.d.ts +9 -0
  694. package/dist/checks/workflows/ui-quality.d.ts.map +1 -0
  695. package/dist/checks/workflows/ui-quality.js +264 -0
  696. package/dist/checks/workflows/ui-quality.js.map +1 -0
  697. package/dist/checks/workflows/ui-uniformity.d.ts +18 -0
  698. package/dist/checks/workflows/ui-uniformity.d.ts.map +1 -0
  699. package/dist/checks/workflows/ui-uniformity.js +265 -0
  700. package/dist/checks/workflows/ui-uniformity.js.map +1 -0
  701. package/dist/checks/workflows/vercel.d.ts +16 -0
  702. package/dist/checks/workflows/vercel.d.ts.map +1 -0
  703. package/dist/checks/workflows/vercel.js +173 -0
  704. package/dist/checks/workflows/vercel.js.map +1 -0
  705. package/dist/utils/validation-helpers.d.ts +43 -0
  706. package/dist/utils/validation-helpers.d.ts.map +1 -0
  707. package/dist/utils/validation-helpers.js +370 -0
  708. package/dist/utils/validation-helpers.js.map +1 -0
  709. package/package.json +1 -1
@@ -0,0 +1,725 @@
1
+ #!/usr/bin/env tsx
2
+ "use strict";
3
+ /**
4
+ * Caching Strategy Preflight (NON-BLOCKING)
5
+ *
6
+ * Validates caching patterns across the application for optimal performance.
7
+ * Ensures proper cache configuration, invalidation, and consistency.
8
+ *
9
+ * Checks:
10
+ * 1. HTTP Cache Headers - API routes set appropriate Cache-Control
11
+ * 2. React Query/SWR Stale Time - Appropriate cache time configuration
12
+ * 3. Cache Key Consistency - Deterministic, stable query keys
13
+ * 4. Revalidation Configuration - Next.js ISR/revalidate settings
14
+ * 5. Cache Invalidation Patterns - Proper invalidation after mutations
15
+ * 6. Static Asset Caching - next.config.js headers configuration
16
+ * 7. Browser Storage Patterns - localStorage/sessionStorage usage
17
+ * 8. Memoization Patterns - useMemo/useCallback for expensive operations
18
+ *
19
+ * Usage:
20
+ * pnpm preflight:caching-strategy # All checks
21
+ * pnpm preflight:caching-strategy headers # HTTP cache headers only
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.CachingStrategyModule = void 0;
58
+ const fs = __importStar(require("fs"));
59
+ const path = __importStar(require("path"));
60
+ const console_chars_1 = require("../../utils/console-chars");
61
+ const file_cache_1 = require("../../shared/file-cache");
62
+ class CachingStrategyModule {
63
+ verbose;
64
+ constructor(options = {}) {
65
+ this.verbose = options.verbose || false;
66
+ }
67
+ async getTsxFiles() {
68
+ return file_cache_1.fileCache.getAppAndComponentsTSX();
69
+ }
70
+ async getApiRoutes() {
71
+ const files = await file_cache_1.fileCache.getAppAndComponentsTSX();
72
+ return files.filter(f => f.includes("/api/") && (f.endsWith("route.ts") || f.endsWith("route.tsx")));
73
+ }
74
+ /**
75
+ * 1. HTTP Cache Headers
76
+ * Check API routes for appropriate Cache-Control headers
77
+ */
78
+ async checkHttpCacheHeaders() {
79
+ const startTime = Date.now();
80
+ const issues = [];
81
+ const apiRoutes = await this.getApiRoutes();
82
+ for (const file of apiRoutes) {
83
+ const content = fs.readFileSync(file, "utf8");
84
+ const lines = content.split("\n");
85
+ // Skip if it's a mutation endpoint (POST, PUT, DELETE, PATCH)
86
+ const hasMutation = /export\s+(?:async\s+)?function\s+(?:POST|PUT|DELETE|PATCH)/i.test(content);
87
+ const hasGet = /export\s+(?:async\s+)?function\s+GET/i.test(content);
88
+ if (hasGet && !hasMutation) {
89
+ // Check for Cache-Control header
90
+ const hasCacheControl = /Cache-Control|cache-control|headers\.set\(['"']Cache/i.test(content);
91
+ const hasNextRevalidate = /revalidate\s*[:=]/i.test(content);
92
+ if (!hasCacheControl && !hasNextRevalidate) {
93
+ issues.push({
94
+ file,
95
+ line: 1,
96
+ type: "missing-cache-header",
97
+ severity: "info",
98
+ message: "GET API route missing Cache-Control header",
99
+ suggestion: "Add Cache-Control header: headers.set('Cache-Control', 'public, max-age=60, stale-while-revalidate=300')",
100
+ });
101
+ }
102
+ }
103
+ // Check for no-store on dynamic data
104
+ for (let i = 0; i < lines.length; i++) {
105
+ const line = lines[i];
106
+ // Detect user-specific data without no-store
107
+ if (/session|currentUser|user\.id|auth/i.test(line) && hasGet) {
108
+ const contextBlock = lines.slice(Math.max(0, i - 10), Math.min(i + 10, lines.length)).join("\n");
109
+ if (!/no-store|private|max-age=0/i.test(contextBlock)) {
110
+ issues.push({
111
+ file,
112
+ line: i + 1,
113
+ type: "user-data-caching",
114
+ severity: "warning",
115
+ message: "User-specific data may be cached without private/no-store directive",
116
+ suggestion: "Add 'Cache-Control: private, no-store' for user-specific endpoints",
117
+ snippet: line.trim(),
118
+ });
119
+ break; // One warning per file
120
+ }
121
+ }
122
+ }
123
+ }
124
+ return {
125
+ name: "HTTP Cache Headers",
126
+ passed: issues.filter(i => i.severity === "error").length === 0,
127
+ blocking: false,
128
+ issues,
129
+ duration: Date.now() - startTime,
130
+ };
131
+ }
132
+ /**
133
+ * 2. React Query/SWR Stale Time
134
+ * Check for appropriate staleTime/cacheTime configuration
135
+ */
136
+ async checkQueryStaleTime() {
137
+ const startTime = Date.now();
138
+ const issues = [];
139
+ const files = await this.getTsxFiles();
140
+ for (const file of files) {
141
+ const content = fs.readFileSync(file, "utf8");
142
+ const lines = content.split("\n");
143
+ // Check for useQuery without staleTime
144
+ for (let i = 0; i < lines.length; i++) {
145
+ const line = lines[i];
146
+ // Detect useQuery usage
147
+ if (/useQuery\s*\(/.test(line) || /useQuery\s*</.test(line)) {
148
+ const contextBlock = lines.slice(i, Math.min(i + 15, lines.length)).join("\n");
149
+ // Check if staleTime is configured
150
+ if (!/staleTime/i.test(contextBlock)) {
151
+ issues.push({
152
+ file,
153
+ line: i + 1,
154
+ type: "missing-stale-time",
155
+ severity: "info",
156
+ message: "useQuery without explicit staleTime configuration",
157
+ suggestion: "Consider adding staleTime to control refetch behavior: { staleTime: 5 * 60 * 1000 }",
158
+ snippet: line.trim(),
159
+ });
160
+ }
161
+ // Check for staleTime: 0 (always stale)
162
+ if (/staleTime\s*:\s*0[,\s}]/.test(contextBlock)) {
163
+ issues.push({
164
+ file,
165
+ line: i + 1,
166
+ type: "zero-stale-time",
167
+ severity: "info",
168
+ message: "staleTime set to 0 causes unnecessary refetches",
169
+ suggestion: "Consider a small staleTime (e.g., 30000) unless real-time data is required",
170
+ snippet: line.trim(),
171
+ });
172
+ }
173
+ }
174
+ // Check for useSWR without revalidation config
175
+ if (/useSWR\s*\(/.test(line)) {
176
+ const contextBlock = lines.slice(i, Math.min(i + 10, lines.length)).join("\n");
177
+ if (!/revalidateOnFocus|revalidateOnReconnect|dedupingInterval/i.test(contextBlock)) {
178
+ issues.push({
179
+ file,
180
+ line: i + 1,
181
+ type: "swr-no-config",
182
+ severity: "info",
183
+ message: "useSWR without explicit revalidation configuration",
184
+ suggestion: "Consider configuring revalidateOnFocus, dedupingInterval for optimal caching",
185
+ snippet: line.trim(),
186
+ });
187
+ }
188
+ }
189
+ }
190
+ }
191
+ return {
192
+ name: "React Query/SWR Stale Time",
193
+ passed: issues.filter(i => i.severity === "error").length === 0,
194
+ blocking: false,
195
+ issues,
196
+ duration: Date.now() - startTime,
197
+ };
198
+ }
199
+ /**
200
+ * 3. Cache Key Consistency
201
+ * Ensure query keys are deterministic and stable
202
+ */
203
+ async checkCacheKeyConsistency() {
204
+ const startTime = Date.now();
205
+ const issues = [];
206
+ const files = await this.getTsxFiles();
207
+ for (const file of files) {
208
+ const content = fs.readFileSync(file, "utf8");
209
+ const lines = content.split("\n");
210
+ for (let i = 0; i < lines.length; i++) {
211
+ const line = lines[i];
212
+ // Check for non-deterministic values in query keys
213
+ if (/queryKey\s*[:=]/.test(line) || /\[\s*['"]/.test(line)) {
214
+ const contextBlock = lines.slice(i, Math.min(i + 5, lines.length)).join("\n");
215
+ // Detect Date.now(), Math.random(), new Date() in keys
216
+ if (/Date\.now\(\)|Math\.random\(\)|new Date\(\)|uuid\(\)|crypto\.randomUUID/i.test(contextBlock)) {
217
+ if (/queryKey|useSWR|useQuery/i.test(contextBlock)) {
218
+ issues.push({
219
+ file,
220
+ line: i + 1,
221
+ type: "non-deterministic-key",
222
+ severity: "warning",
223
+ message: "Non-deterministic value in cache key causes cache misses",
224
+ suggestion: "Use stable, deterministic values for query keys",
225
+ snippet: line.trim(),
226
+ });
227
+ }
228
+ }
229
+ }
230
+ // Check for object references in query keys (common mistake)
231
+ if (/queryKey\s*:\s*\[.*\{/.test(line)) {
232
+ const contextBlock = lines.slice(i, Math.min(i + 3, lines.length)).join("\n");
233
+ if (!/JSON\.stringify|\.id|\.slug/.test(contextBlock)) {
234
+ issues.push({
235
+ file,
236
+ line: i + 1,
237
+ type: "object-in-query-key",
238
+ severity: "info",
239
+ message: "Object in query key may cause unexpected cache behavior",
240
+ suggestion: "Ensure objects in query keys are serializable or use primitive values",
241
+ snippet: line.trim(),
242
+ });
243
+ }
244
+ }
245
+ }
246
+ }
247
+ return {
248
+ name: "Cache Key Consistency",
249
+ passed: issues.filter(i => i.severity === "error").length === 0,
250
+ blocking: false,
251
+ issues,
252
+ duration: Date.now() - startTime,
253
+ };
254
+ }
255
+ /**
256
+ * 4. Revalidation Configuration
257
+ * Check for Next.js ISR and revalidate settings
258
+ */
259
+ async checkRevalidationConfig() {
260
+ const startTime = Date.now();
261
+ const issues = [];
262
+ // Check page files for revalidate config
263
+ const files = await this.getTsxFiles();
264
+ const pageFiles = files.filter(f => f.includes("/app/") && (f.endsWith("page.tsx") || f.endsWith("page.ts")));
265
+ for (const file of pageFiles) {
266
+ const content = fs.readFileSync(file, "utf8");
267
+ const lines = content.split("\n");
268
+ // Check for fetch without revalidate
269
+ for (let i = 0; i < lines.length; i++) {
270
+ const line = lines[i];
271
+ if (/fetch\s*\(/.test(line)) {
272
+ const contextBlock = lines.slice(i, Math.min(i + 5, lines.length)).join("\n");
273
+ // Check if it has next: { revalidate } or cache config
274
+ if (!/next\s*:\s*\{|cache\s*:|revalidate/i.test(contextBlock)) {
275
+ // Skip if it's a mutation (POST, PUT, etc)
276
+ if (!/method\s*:\s*['"](?:POST|PUT|DELETE|PATCH)/i.test(contextBlock)) {
277
+ issues.push({
278
+ file,
279
+ line: i + 1,
280
+ type: "fetch-no-revalidate",
281
+ severity: "info",
282
+ message: "fetch() without explicit cache/revalidate configuration",
283
+ suggestion: "Add { next: { revalidate: 60 } } for ISR or { cache: 'no-store' } for dynamic",
284
+ snippet: line.trim(),
285
+ });
286
+ }
287
+ }
288
+ }
289
+ }
290
+ // Check for exported revalidate constant
291
+ if (/export\s+const\s+dynamic\s*=\s*['"]force-dynamic['"]/.test(content)) {
292
+ if (!/export\s+const\s+revalidate/.test(content)) {
293
+ // This is fine - force-dynamic means no caching
294
+ }
295
+ }
296
+ }
297
+ // Check for very long revalidate times
298
+ for (const file of files) {
299
+ const content = fs.readFileSync(file, "utf8");
300
+ const lines = content.split("\n");
301
+ for (let i = 0; i < lines.length; i++) {
302
+ const line = lines[i];
303
+ const revalidateMatch = line.match(/revalidate\s*[:=]\s*(\d+)/);
304
+ if (revalidateMatch) {
305
+ const revalidateTime = parseInt(revalidateMatch[1], 10);
306
+ if (revalidateTime > 86400) {
307
+ issues.push({
308
+ file,
309
+ line: i + 1,
310
+ type: "long-revalidate",
311
+ severity: "info",
312
+ message: `Very long revalidate time (${revalidateTime}s = ${(revalidateTime / 86400).toFixed(1)} days)`,
313
+ suggestion: "Consider if data can really be stale for this long",
314
+ snippet: line.trim(),
315
+ });
316
+ }
317
+ }
318
+ }
319
+ }
320
+ return {
321
+ name: "Revalidation Configuration",
322
+ passed: issues.filter(i => i.severity === "error").length === 0,
323
+ blocking: false,
324
+ issues,
325
+ duration: Date.now() - startTime,
326
+ };
327
+ }
328
+ /**
329
+ * 5. Cache Invalidation Patterns
330
+ * Check for proper invalidation after mutations
331
+ */
332
+ async checkCacheInvalidation() {
333
+ const startTime = Date.now();
334
+ const issues = [];
335
+ const files = await this.getTsxFiles();
336
+ for (const file of files) {
337
+ const content = fs.readFileSync(file, "utf8");
338
+ const lines = content.split("\n");
339
+ // Track if file uses React Query
340
+ const usesReactQuery = /useQuery|useMutation|useQueryClient/.test(content);
341
+ const usesSWR = /useSWR|mutate\s*\(/.test(content);
342
+ for (let i = 0; i < lines.length; i++) {
343
+ const line = lines[i];
344
+ // Check for useMutation without onSuccess invalidation
345
+ if (/useMutation\s*\(/.test(line)) {
346
+ const contextBlock = lines.slice(i, Math.min(i + 20, lines.length)).join("\n");
347
+ if (!/invalidateQueries|setQueryData|refetchQueries/.test(contextBlock)) {
348
+ issues.push({
349
+ file,
350
+ line: i + 1,
351
+ type: "mutation-no-invalidation",
352
+ severity: "warning",
353
+ message: "useMutation without cache invalidation may show stale data",
354
+ suggestion: "Add onSuccess: () => queryClient.invalidateQueries({ queryKey: [...] })",
355
+ snippet: line.trim(),
356
+ });
357
+ }
358
+ }
359
+ // Check for fetch POST/PUT/DELETE without SWR mutate
360
+ if (usesSWR && /fetch\s*\(/.test(line)) {
361
+ const contextBlock = lines.slice(i, Math.min(i + 10, lines.length)).join("\n");
362
+ if (/method\s*:\s*['"](?:POST|PUT|DELETE|PATCH)/.test(contextBlock)) {
363
+ // Check surrounding code for mutate call
364
+ const surroundingBlock = lines.slice(Math.max(0, i - 5), Math.min(i + 15, lines.length)).join("\n");
365
+ if (!/mutate\s*\(|revalidate/.test(surroundingBlock)) {
366
+ issues.push({
367
+ file,
368
+ line: i + 1,
369
+ type: "mutation-no-swr-invalidation",
370
+ severity: "info",
371
+ message: "Mutation without SWR mutate() may show stale data",
372
+ suggestion: "Call mutate() or revalidate after successful mutation",
373
+ snippet: line.trim(),
374
+ });
375
+ }
376
+ }
377
+ }
378
+ // Check for direct state updates that bypass cache
379
+ if (usesReactQuery && /setState\s*\(/.test(line)) {
380
+ const contextBlock = lines.slice(Math.max(0, i - 5), Math.min(i + 5, lines.length)).join("\n");
381
+ if (/queryKey|useQuery/.test(content) && /\.data/.test(contextBlock)) {
382
+ issues.push({
383
+ file,
384
+ line: i + 1,
385
+ type: "bypass-cache-update",
386
+ severity: "info",
387
+ message: "Direct setState may bypass React Query cache",
388
+ suggestion: "Consider using queryClient.setQueryData for optimistic updates",
389
+ snippet: line.trim(),
390
+ });
391
+ }
392
+ }
393
+ }
394
+ }
395
+ return {
396
+ name: "Cache Invalidation Patterns",
397
+ passed: issues.filter(i => i.severity === "error").length === 0,
398
+ blocking: false,
399
+ issues,
400
+ duration: Date.now() - startTime,
401
+ };
402
+ }
403
+ /**
404
+ * 6. Static Asset Caching
405
+ * Check next.config.js for proper cache headers
406
+ */
407
+ async checkStaticAssetCaching() {
408
+ const startTime = Date.now();
409
+ const issues = [];
410
+ const projectRoot = process.cwd();
411
+ const nextConfigPaths = [
412
+ path.join(projectRoot, "next.config.js"),
413
+ path.join(projectRoot, "next.config.mjs"),
414
+ path.join(projectRoot, "next.config.ts"),
415
+ ];
416
+ let nextConfigPath = null;
417
+ for (const p of nextConfigPaths) {
418
+ if (fs.existsSync(p)) {
419
+ nextConfigPath = p;
420
+ break;
421
+ }
422
+ }
423
+ if (nextConfigPath) {
424
+ const content = fs.readFileSync(nextConfigPath, "utf8");
425
+ const lines = content.split("\n");
426
+ // Check for custom headers configuration
427
+ if (!/headers\s*\(\s*\)|async\s+headers\s*\(/.test(content)) {
428
+ issues.push({
429
+ file: nextConfigPath,
430
+ line: 1,
431
+ type: "no-custom-headers",
432
+ severity: "info",
433
+ message: "No custom headers() configuration in next.config",
434
+ suggestion: "Consider adding cache headers for static assets and API routes",
435
+ });
436
+ }
437
+ // Check for images configuration
438
+ if (!/images\s*:\s*\{/.test(content)) {
439
+ issues.push({
440
+ file: nextConfigPath,
441
+ line: 1,
442
+ type: "no-image-config",
443
+ severity: "info",
444
+ message: "No images configuration for Next.js Image optimization",
445
+ suggestion: "Configure images.minimumCacheTTL for image caching",
446
+ });
447
+ }
448
+ else {
449
+ // Check for minimumCacheTTL
450
+ if (!/minimumCacheTTL/.test(content)) {
451
+ for (let i = 0; i < lines.length; i++) {
452
+ if (/images\s*:/.test(lines[i])) {
453
+ issues.push({
454
+ file: nextConfigPath,
455
+ line: i + 1,
456
+ type: "no-image-cache-ttl",
457
+ severity: "info",
458
+ message: "images config without minimumCacheTTL",
459
+ suggestion: "Add minimumCacheTTL: 60 (seconds) to cache optimized images",
460
+ snippet: lines[i].trim(),
461
+ });
462
+ break;
463
+ }
464
+ }
465
+ }
466
+ }
467
+ }
468
+ return {
469
+ name: "Static Asset Caching",
470
+ passed: issues.filter(i => i.severity === "error").length === 0,
471
+ blocking: false,
472
+ issues,
473
+ duration: Date.now() - startTime,
474
+ };
475
+ }
476
+ /**
477
+ * 7. Browser Storage Patterns
478
+ * Check localStorage/sessionStorage usage patterns
479
+ */
480
+ async checkBrowserStoragePatterns() {
481
+ const startTime = Date.now();
482
+ const issues = [];
483
+ const files = await this.getTsxFiles();
484
+ for (const file of files) {
485
+ const content = fs.readFileSync(file, "utf8");
486
+ const lines = content.split("\n");
487
+ for (let i = 0; i < lines.length; i++) {
488
+ const line = lines[i];
489
+ // Check for localStorage without try-catch (can fail in SSR or private mode)
490
+ if (/localStorage\.|sessionStorage\./.test(line)) {
491
+ const contextBlock = lines.slice(Math.max(0, i - 3), Math.min(i + 3, lines.length)).join("\n");
492
+ if (!/try\s*\{|catch\s*\(|typeof\s+window/.test(contextBlock)) {
493
+ issues.push({
494
+ file,
495
+ line: i + 1,
496
+ type: "storage-no-try-catch",
497
+ severity: "warning",
498
+ message: "localStorage/sessionStorage access without error handling",
499
+ suggestion: "Wrap in try-catch - storage can fail in SSR, private browsing, or when quota exceeded",
500
+ snippet: line.trim(),
501
+ });
502
+ }
503
+ }
504
+ // Check for storing large objects
505
+ if (/localStorage\.setItem|sessionStorage\.setItem/.test(line)) {
506
+ const contextBlock = lines.slice(i, Math.min(i + 3, lines.length)).join("\n");
507
+ if (/JSON\.stringify\s*\([^)]{50,}/.test(contextBlock)) {
508
+ issues.push({
509
+ file,
510
+ line: i + 1,
511
+ type: "large-storage-object",
512
+ severity: "info",
513
+ message: "Potentially large object being stored in browser storage",
514
+ suggestion: "Consider using IndexedDB for large data or implement storage size limits",
515
+ snippet: line.trim(),
516
+ });
517
+ }
518
+ }
519
+ // Check for cache expiration patterns
520
+ if (/localStorage\.getItem/.test(line)) {
521
+ const functionBlock = lines.slice(Math.max(0, i - 10), Math.min(i + 10, lines.length)).join("\n");
522
+ if (/cache|Cache/.test(functionBlock) && !/expir|ttl|timestamp|Date\.now/i.test(functionBlock)) {
523
+ issues.push({
524
+ file,
525
+ line: i + 1,
526
+ type: "cache-no-expiration",
527
+ severity: "info",
528
+ message: "Cache read without expiration check",
529
+ suggestion: "Consider adding TTL/expiration to cached data",
530
+ snippet: line.trim(),
531
+ });
532
+ }
533
+ }
534
+ }
535
+ }
536
+ return {
537
+ name: "Browser Storage Patterns",
538
+ passed: issues.filter(i => i.severity === "error").length === 0,
539
+ blocking: false,
540
+ issues,
541
+ duration: Date.now() - startTime,
542
+ };
543
+ }
544
+ /**
545
+ * 8. Memoization Patterns
546
+ * Check useMemo/useCallback usage for expensive operations
547
+ */
548
+ async checkMemoizationPatterns() {
549
+ const startTime = Date.now();
550
+ const issues = [];
551
+ const files = await this.getTsxFiles();
552
+ for (const file of files) {
553
+ const content = fs.readFileSync(file, "utf8");
554
+ const lines = content.split("\n");
555
+ for (let i = 0; i < lines.length; i++) {
556
+ const line = lines[i];
557
+ // Check for expensive operations without useMemo
558
+ if (/\.filter\s*\(.*\)\.map\s*\(|\.sort\s*\(.*\)\.filter|\.reduce\s*\(/.test(line)) {
559
+ const contextBlock = lines.slice(Math.max(0, i - 3), Math.min(i + 1, lines.length)).join("\n");
560
+ if (!/useMemo|useCallback/.test(contextBlock)) {
561
+ // Check if it's in render/return path
562
+ const beforeBlock = lines.slice(Math.max(0, i - 15), i).join("\n");
563
+ if (/return\s*\(|return\s*<|{\s*$/.test(beforeBlock)) {
564
+ issues.push({
565
+ file,
566
+ line: i + 1,
567
+ type: "unmemoized-computation",
568
+ severity: "info",
569
+ message: "Chained array operations in render without useMemo",
570
+ suggestion: "Wrap expensive computations in useMemo to prevent recalculation on every render",
571
+ snippet: line.trim().substring(0, 80),
572
+ });
573
+ }
574
+ }
575
+ }
576
+ // Check for inline object/array in dependency arrays
577
+ if (/useMemo\s*\(|useCallback\s*\(|useEffect\s*\(/.test(line)) {
578
+ const hookBlock = lines.slice(i, Math.min(i + 10, lines.length)).join("\n");
579
+ const depsMatch = hookBlock.match(/\],\s*\[(.*?)\]/s);
580
+ if (depsMatch) {
581
+ const deps = depsMatch[1];
582
+ if (/\{.*\}|\[.*\]/.test(deps) && !/useMemo|useCallback|useRef/.test(deps)) {
583
+ issues.push({
584
+ file,
585
+ line: i + 1,
586
+ type: "inline-dep-object",
587
+ severity: "warning",
588
+ message: "Inline object/array in dependency array causes infinite re-runs",
589
+ suggestion: "Extract inline objects to useMemo or useRef",
590
+ snippet: line.trim(),
591
+ });
592
+ }
593
+ }
594
+ }
595
+ // Check for useMemo with empty deps but using external values
596
+ if (/useMemo\s*\(/.test(line)) {
597
+ const hookBlock = lines.slice(i, Math.min(i + 8, lines.length)).join("\n");
598
+ if (/\],\s*\[\s*\]\s*\)/.test(hookBlock)) {
599
+ // Has empty dependency array - check if it references props/state
600
+ if (/props\.|state\.|use[A-Z]/.test(hookBlock)) {
601
+ issues.push({
602
+ file,
603
+ line: i + 1,
604
+ type: "empty-deps-with-refs",
605
+ severity: "warning",
606
+ message: "useMemo with empty deps but referencing props/state - value will be stale",
607
+ suggestion: "Add referenced values to the dependency array",
608
+ snippet: line.trim(),
609
+ });
610
+ }
611
+ }
612
+ }
613
+ }
614
+ }
615
+ return {
616
+ name: "Memoization Patterns",
617
+ passed: issues.filter(i => i.severity === "error").length === 0,
618
+ blocking: false,
619
+ issues,
620
+ duration: Date.now() - startTime,
621
+ };
622
+ }
623
+ /**
624
+ * Run all caching strategy checks
625
+ */
626
+ async runAll(filter) {
627
+ const startTime = Date.now();
628
+ const checkMap = {
629
+ headers: () => this.checkHttpCacheHeaders(),
630
+ staletime: () => this.checkQueryStaleTime(),
631
+ keys: () => this.checkCacheKeyConsistency(),
632
+ revalidate: () => this.checkRevalidationConfig(),
633
+ invalidation: () => this.checkCacheInvalidation(),
634
+ assets: () => this.checkStaticAssetCaching(),
635
+ storage: () => this.checkBrowserStoragePatterns(),
636
+ memo: () => this.checkMemoizationPatterns(),
637
+ };
638
+ let checksToRun;
639
+ if (filter && checkMap[filter]) {
640
+ checksToRun = [checkMap[filter]];
641
+ }
642
+ else {
643
+ checksToRun = Object.values(checkMap);
644
+ }
645
+ const checks = [];
646
+ for (const check of checksToRun) {
647
+ checks.push(await check());
648
+ }
649
+ const summary = {
650
+ total: checks.length,
651
+ passed: checks.filter(c => c.passed).length,
652
+ failed: checks.filter(c => !c.passed).length,
653
+ errors: checks.reduce((acc, c) => acc + c.issues.filter(i => i.severity === "error").length, 0),
654
+ warnings: checks.reduce((acc, c) => acc + c.issues.filter(i => i.severity === "warning").length, 0),
655
+ };
656
+ return {
657
+ module: "Caching Strategy",
658
+ passed: summary.errors === 0,
659
+ totalDuration: Date.now() - startTime,
660
+ checks,
661
+ summary,
662
+ };
663
+ }
664
+ }
665
+ exports.CachingStrategyModule = CachingStrategyModule;
666
+ // CLI Entry Point
667
+ async function main() {
668
+ const args = process.argv.slice(2);
669
+ const filter = args.find(a => !a.startsWith("-"));
670
+ const verbose = args.includes("-v") || args.includes("--verbose");
671
+ console.log((0, console_chars_1.createDivider)());
672
+ console.log(`${console_chars_1.emoji.rocket} Caching Strategy Preflight`);
673
+ console.log((0, console_chars_1.createDivider)());
674
+ const module = new CachingStrategyModule({ verbose });
675
+ const result = await module.runAll(filter);
676
+ // Print results
677
+ for (const check of result.checks) {
678
+ const icon = check.passed ? console_chars_1.emoji.check : console_chars_1.emoji.warning;
679
+ console.log(`\n${icon} ${check.name} (${check.duration}ms)`);
680
+ if (check.issues.length > 0) {
681
+ const grouped = new Map();
682
+ for (const issue of check.issues) {
683
+ const key = issue.type;
684
+ if (!grouped.has(key))
685
+ grouped.set(key, []);
686
+ grouped.get(key).push(issue);
687
+ }
688
+ for (const [type, issues] of grouped) {
689
+ console.log(`\n ${type} (${issues.length} occurrences):`);
690
+ const displayIssues = verbose ? issues : issues.slice(0, 3);
691
+ for (const issue of displayIssues) {
692
+ const relPath = issue.file.replace(process.cwd(), "").replace(/\\/g, "/");
693
+ const severityIcon = issue.severity === "error" ? console_chars_1.emoji.error : issue.severity === "warning" ? console_chars_1.emoji.warning : console_chars_1.emoji.info;
694
+ console.log(` ${severityIcon} ${relPath}:${issue.line}`);
695
+ console.log(` ${issue.message}`);
696
+ if (issue.snippet) {
697
+ console.log(` ${console_chars_1.emoji.file} ${issue.snippet.substring(0, 60)}${issue.snippet.length > 60 ? "..." : ""}`);
698
+ }
699
+ console.log(` ${console_chars_1.emoji.hint} ${issue.suggestion}`);
700
+ }
701
+ if (!verbose && issues.length > 3) {
702
+ console.log(` ... and ${issues.length - 3} more (use -v to see all)`);
703
+ }
704
+ }
705
+ }
706
+ }
707
+ // Summary
708
+ console.log((0, console_chars_1.createDivider)());
709
+ console.log(`\n${console_chars_1.emoji.chart} Summary:`);
710
+ console.log(` Checks: ${result.summary.passed}/${result.summary.total} passed`);
711
+ console.log(` Errors: ${result.summary.errors}`);
712
+ console.log(` Warnings: ${result.summary.warnings}`);
713
+ console.log(` Duration: ${result.totalDuration}ms`);
714
+ if (!result.passed) {
715
+ console.log(`\n${console_chars_1.emoji.warning} Caching strategy issues detected (non-blocking)`);
716
+ }
717
+ else {
718
+ console.log(`\n${console_chars_1.emoji.check} All caching strategy checks passed!`);
719
+ }
720
+ console.log((0, console_chars_1.createDivider)());
721
+ // Non-blocking - always exit 0
722
+ process.exit(0);
723
+ }
724
+ main().catch(console.error);
725
+ //# sourceMappingURL=caching-strategy.js.map