driftdetect-detectors 0.1.0

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 (509) hide show
  1. package/dist/accessibility/alt-text.d.ts +63 -0
  2. package/dist/accessibility/alt-text.d.ts.map +1 -0
  3. package/dist/accessibility/alt-text.js +100 -0
  4. package/dist/accessibility/alt-text.js.map +1 -0
  5. package/dist/accessibility/aria-roles.d.ts +65 -0
  6. package/dist/accessibility/aria-roles.d.ts.map +1 -0
  7. package/dist/accessibility/aria-roles.js +87 -0
  8. package/dist/accessibility/aria-roles.js.map +1 -0
  9. package/dist/accessibility/focus-management.d.ts +62 -0
  10. package/dist/accessibility/focus-management.d.ts.map +1 -0
  11. package/dist/accessibility/focus-management.js +88 -0
  12. package/dist/accessibility/focus-management.js.map +1 -0
  13. package/dist/accessibility/heading-hierarchy.d.ts +66 -0
  14. package/dist/accessibility/heading-hierarchy.d.ts.map +1 -0
  15. package/dist/accessibility/heading-hierarchy.js +94 -0
  16. package/dist/accessibility/heading-hierarchy.js.map +1 -0
  17. package/dist/accessibility/index.d.ts +25 -0
  18. package/dist/accessibility/index.d.ts.map +1 -0
  19. package/dist/accessibility/index.js +21 -0
  20. package/dist/accessibility/index.js.map +1 -0
  21. package/dist/accessibility/keyboard-nav.d.ts +63 -0
  22. package/dist/accessibility/keyboard-nav.d.ts.map +1 -0
  23. package/dist/accessibility/keyboard-nav.js +86 -0
  24. package/dist/accessibility/keyboard-nav.js.map +1 -0
  25. package/dist/accessibility/semantic-html.d.ts +76 -0
  26. package/dist/accessibility/semantic-html.d.ts.map +1 -0
  27. package/dist/accessibility/semantic-html.js +204 -0
  28. package/dist/accessibility/semantic-html.js.map +1 -0
  29. package/dist/api/client-patterns.d.ts +121 -0
  30. package/dist/api/client-patterns.d.ts.map +1 -0
  31. package/dist/api/client-patterns.js +478 -0
  32. package/dist/api/client-patterns.js.map +1 -0
  33. package/dist/api/error-format.d.ts +140 -0
  34. package/dist/api/error-format.d.ts.map +1 -0
  35. package/dist/api/error-format.js +614 -0
  36. package/dist/api/error-format.js.map +1 -0
  37. package/dist/api/http-methods.d.ts +255 -0
  38. package/dist/api/http-methods.d.ts.map +1 -0
  39. package/dist/api/http-methods.js +890 -0
  40. package/dist/api/http-methods.js.map +1 -0
  41. package/dist/api/index.d.ts +16 -0
  42. package/dist/api/index.d.ts.map +1 -0
  43. package/dist/api/index.js +37 -0
  44. package/dist/api/index.js.map +1 -0
  45. package/dist/api/pagination.d.ts +133 -0
  46. package/dist/api/pagination.d.ts.map +1 -0
  47. package/dist/api/pagination.js +521 -0
  48. package/dist/api/pagination.js.map +1 -0
  49. package/dist/api/response-envelope.d.ts +261 -0
  50. package/dist/api/response-envelope.d.ts.map +1 -0
  51. package/dist/api/response-envelope.js +1050 -0
  52. package/dist/api/response-envelope.js.map +1 -0
  53. package/dist/api/retry-patterns.d.ts +117 -0
  54. package/dist/api/retry-patterns.d.ts.map +1 -0
  55. package/dist/api/retry-patterns.js +480 -0
  56. package/dist/api/retry-patterns.js.map +1 -0
  57. package/dist/api/route-structure.d.ts +128 -0
  58. package/dist/api/route-structure.d.ts.map +1 -0
  59. package/dist/api/route-structure.js +738 -0
  60. package/dist/api/route-structure.js.map +1 -0
  61. package/dist/auth/audit-logging.d.ts +80 -0
  62. package/dist/auth/audit-logging.d.ts.map +1 -0
  63. package/dist/auth/audit-logging.js +370 -0
  64. package/dist/auth/audit-logging.js.map +1 -0
  65. package/dist/auth/index.d.ts +33 -0
  66. package/dist/auth/index.d.ts.map +1 -0
  67. package/dist/auth/index.js +49 -0
  68. package/dist/auth/index.js.map +1 -0
  69. package/dist/auth/middleware-usage.d.ts +65 -0
  70. package/dist/auth/middleware-usage.d.ts.map +1 -0
  71. package/dist/auth/middleware-usage.js +192 -0
  72. package/dist/auth/middleware-usage.js.map +1 -0
  73. package/dist/auth/permission-checks.d.ts +60 -0
  74. package/dist/auth/permission-checks.d.ts.map +1 -0
  75. package/dist/auth/permission-checks.js +159 -0
  76. package/dist/auth/permission-checks.js.map +1 -0
  77. package/dist/auth/rbac-patterns.d.ts +68 -0
  78. package/dist/auth/rbac-patterns.d.ts.map +1 -0
  79. package/dist/auth/rbac-patterns.js +143 -0
  80. package/dist/auth/rbac-patterns.js.map +1 -0
  81. package/dist/auth/resource-ownership.d.ts +77 -0
  82. package/dist/auth/resource-ownership.d.ts.map +1 -0
  83. package/dist/auth/resource-ownership.js +324 -0
  84. package/dist/auth/resource-ownership.js.map +1 -0
  85. package/dist/auth/token-handling.d.ts +64 -0
  86. package/dist/auth/token-handling.d.ts.map +1 -0
  87. package/dist/auth/token-handling.js +151 -0
  88. package/dist/auth/token-handling.js.map +1 -0
  89. package/dist/base/ast-detector.d.ts +421 -0
  90. package/dist/base/ast-detector.d.ts.map +1 -0
  91. package/dist/base/ast-detector.js +699 -0
  92. package/dist/base/ast-detector.js.map +1 -0
  93. package/dist/base/base-detector.d.ts +366 -0
  94. package/dist/base/base-detector.d.ts.map +1 -0
  95. package/dist/base/base-detector.js +170 -0
  96. package/dist/base/base-detector.js.map +1 -0
  97. package/dist/base/index.d.ts +12 -0
  98. package/dist/base/index.d.ts.map +1 -0
  99. package/dist/base/index.js +17 -0
  100. package/dist/base/index.js.map +1 -0
  101. package/dist/base/regex-detector.d.ts +421 -0
  102. package/dist/base/regex-detector.d.ts.map +1 -0
  103. package/dist/base/regex-detector.js +537 -0
  104. package/dist/base/regex-detector.js.map +1 -0
  105. package/dist/base/structural-detector.d.ts +424 -0
  106. package/dist/base/structural-detector.d.ts.map +1 -0
  107. package/dist/base/structural-detector.js +731 -0
  108. package/dist/base/structural-detector.js.map +1 -0
  109. package/dist/base/types.d.ts +53 -0
  110. package/dist/base/types.d.ts.map +1 -0
  111. package/dist/base/types.js +5 -0
  112. package/dist/base/types.js.map +1 -0
  113. package/dist/components/component-structure.d.ts +163 -0
  114. package/dist/components/component-structure.d.ts.map +1 -0
  115. package/dist/components/component-structure.js +500 -0
  116. package/dist/components/component-structure.js.map +1 -0
  117. package/dist/components/composition.d.ts +287 -0
  118. package/dist/components/composition.d.ts.map +1 -0
  119. package/dist/components/composition.js +1123 -0
  120. package/dist/components/composition.js.map +1 -0
  121. package/dist/components/duplicate-detection.d.ts +251 -0
  122. package/dist/components/duplicate-detection.d.ts.map +1 -0
  123. package/dist/components/duplicate-detection.js +804 -0
  124. package/dist/components/duplicate-detection.js.map +1 -0
  125. package/dist/components/index.d.ts +16 -0
  126. package/dist/components/index.d.ts.map +1 -0
  127. package/dist/components/index.js +51 -0
  128. package/dist/components/index.js.map +1 -0
  129. package/dist/components/near-duplicate.d.ts +402 -0
  130. package/dist/components/near-duplicate.d.ts.map +1 -0
  131. package/dist/components/near-duplicate.js +1090 -0
  132. package/dist/components/near-duplicate.js.map +1 -0
  133. package/dist/components/props-patterns.d.ts +194 -0
  134. package/dist/components/props-patterns.d.ts.map +1 -0
  135. package/dist/components/props-patterns.js +795 -0
  136. package/dist/components/props-patterns.js.map +1 -0
  137. package/dist/components/ref-forwarding.d.ts +250 -0
  138. package/dist/components/ref-forwarding.d.ts.map +1 -0
  139. package/dist/components/ref-forwarding.js +832 -0
  140. package/dist/components/ref-forwarding.js.map +1 -0
  141. package/dist/components/state-patterns.d.ts +291 -0
  142. package/dist/components/state-patterns.d.ts.map +1 -0
  143. package/dist/components/state-patterns.js +970 -0
  144. package/dist/components/state-patterns.js.map +1 -0
  145. package/dist/config/config-validation.d.ts +74 -0
  146. package/dist/config/config-validation.d.ts.map +1 -0
  147. package/dist/config/config-validation.js +446 -0
  148. package/dist/config/config-validation.js.map +1 -0
  149. package/dist/config/default-values.d.ts +72 -0
  150. package/dist/config/default-values.d.ts.map +1 -0
  151. package/dist/config/default-values.js +386 -0
  152. package/dist/config/default-values.js.map +1 -0
  153. package/dist/config/env-naming.d.ts +73 -0
  154. package/dist/config/env-naming.d.ts.map +1 -0
  155. package/dist/config/env-naming.js +429 -0
  156. package/dist/config/env-naming.js.map +1 -0
  157. package/dist/config/environment-detection.d.ts +72 -0
  158. package/dist/config/environment-detection.d.ts.map +1 -0
  159. package/dist/config/environment-detection.js +400 -0
  160. package/dist/config/environment-detection.js.map +1 -0
  161. package/dist/config/feature-flags.d.ts +72 -0
  162. package/dist/config/feature-flags.d.ts.map +1 -0
  163. package/dist/config/feature-flags.js +384 -0
  164. package/dist/config/feature-flags.js.map +1 -0
  165. package/dist/config/index.d.ts +27 -0
  166. package/dist/config/index.d.ts.map +1 -0
  167. package/dist/config/index.js +43 -0
  168. package/dist/config/index.js.map +1 -0
  169. package/dist/config/required-optional.d.ts +71 -0
  170. package/dist/config/required-optional.d.ts.map +1 -0
  171. package/dist/config/required-optional.js +344 -0
  172. package/dist/config/required-optional.js.map +1 -0
  173. package/dist/data-access/connection-pooling.d.ts +63 -0
  174. package/dist/data-access/connection-pooling.d.ts.map +1 -0
  175. package/dist/data-access/connection-pooling.js +297 -0
  176. package/dist/data-access/connection-pooling.js.map +1 -0
  177. package/dist/data-access/dto-patterns.d.ts +64 -0
  178. package/dist/data-access/dto-patterns.d.ts.map +1 -0
  179. package/dist/data-access/dto-patterns.js +291 -0
  180. package/dist/data-access/dto-patterns.js.map +1 -0
  181. package/dist/data-access/index.d.ts +31 -0
  182. package/dist/data-access/index.d.ts.map +1 -0
  183. package/dist/data-access/index.js +49 -0
  184. package/dist/data-access/index.js.map +1 -0
  185. package/dist/data-access/n-plus-one.d.ts +60 -0
  186. package/dist/data-access/n-plus-one.d.ts.map +1 -0
  187. package/dist/data-access/n-plus-one.js +264 -0
  188. package/dist/data-access/n-plus-one.js.map +1 -0
  189. package/dist/data-access/query-patterns.d.ts +64 -0
  190. package/dist/data-access/query-patterns.d.ts.map +1 -0
  191. package/dist/data-access/query-patterns.js +314 -0
  192. package/dist/data-access/query-patterns.js.map +1 -0
  193. package/dist/data-access/repository-pattern.d.ts +62 -0
  194. package/dist/data-access/repository-pattern.d.ts.map +1 -0
  195. package/dist/data-access/repository-pattern.js +257 -0
  196. package/dist/data-access/repository-pattern.js.map +1 -0
  197. package/dist/data-access/transaction-patterns.d.ts +61 -0
  198. package/dist/data-access/transaction-patterns.d.ts.map +1 -0
  199. package/dist/data-access/transaction-patterns.js +277 -0
  200. package/dist/data-access/transaction-patterns.js.map +1 -0
  201. package/dist/data-access/validation-patterns.d.ts +62 -0
  202. package/dist/data-access/validation-patterns.d.ts.map +1 -0
  203. package/dist/data-access/validation-patterns.js +301 -0
  204. package/dist/data-access/validation-patterns.js.map +1 -0
  205. package/dist/documentation/deprecation.d.ts +62 -0
  206. package/dist/documentation/deprecation.d.ts.map +1 -0
  207. package/dist/documentation/deprecation.js +83 -0
  208. package/dist/documentation/deprecation.js.map +1 -0
  209. package/dist/documentation/example-code.d.ts +64 -0
  210. package/dist/documentation/example-code.d.ts.map +1 -0
  211. package/dist/documentation/example-code.js +79 -0
  212. package/dist/documentation/example-code.js.map +1 -0
  213. package/dist/documentation/index.d.ts +22 -0
  214. package/dist/documentation/index.d.ts.map +1 -0
  215. package/dist/documentation/index.js +19 -0
  216. package/dist/documentation/index.js.map +1 -0
  217. package/dist/documentation/jsdoc-patterns.d.ts +72 -0
  218. package/dist/documentation/jsdoc-patterns.d.ts.map +1 -0
  219. package/dist/documentation/jsdoc-patterns.js +92 -0
  220. package/dist/documentation/jsdoc-patterns.js.map +1 -0
  221. package/dist/documentation/readme-structure.d.ts +67 -0
  222. package/dist/documentation/readme-structure.d.ts.map +1 -0
  223. package/dist/documentation/readme-structure.js +76 -0
  224. package/dist/documentation/readme-structure.js.map +1 -0
  225. package/dist/documentation/todo-patterns.d.ts +67 -0
  226. package/dist/documentation/todo-patterns.d.ts.map +1 -0
  227. package/dist/documentation/todo-patterns.js +73 -0
  228. package/dist/documentation/todo-patterns.js.map +1 -0
  229. package/dist/errors/async-errors.d.ts +72 -0
  230. package/dist/errors/async-errors.d.ts.map +1 -0
  231. package/dist/errors/async-errors.js +214 -0
  232. package/dist/errors/async-errors.js.map +1 -0
  233. package/dist/errors/circuit-breaker.d.ts +53 -0
  234. package/dist/errors/circuit-breaker.d.ts.map +1 -0
  235. package/dist/errors/circuit-breaker.js +241 -0
  236. package/dist/errors/circuit-breaker.js.map +1 -0
  237. package/dist/errors/error-codes.d.ts +73 -0
  238. package/dist/errors/error-codes.d.ts.map +1 -0
  239. package/dist/errors/error-codes.js +211 -0
  240. package/dist/errors/error-codes.js.map +1 -0
  241. package/dist/errors/error-logging.d.ts +73 -0
  242. package/dist/errors/error-logging.d.ts.map +1 -0
  243. package/dist/errors/error-logging.js +256 -0
  244. package/dist/errors/error-logging.js.map +1 -0
  245. package/dist/errors/error-propagation.d.ts +73 -0
  246. package/dist/errors/error-propagation.d.ts.map +1 -0
  247. package/dist/errors/error-propagation.js +244 -0
  248. package/dist/errors/error-propagation.js.map +1 -0
  249. package/dist/errors/exception-hierarchy.d.ts +75 -0
  250. package/dist/errors/exception-hierarchy.d.ts.map +1 -0
  251. package/dist/errors/exception-hierarchy.js +259 -0
  252. package/dist/errors/exception-hierarchy.js.map +1 -0
  253. package/dist/errors/index.d.ts +31 -0
  254. package/dist/errors/index.d.ts.map +1 -0
  255. package/dist/errors/index.js +49 -0
  256. package/dist/errors/index.js.map +1 -0
  257. package/dist/errors/try-catch-placement.d.ts +73 -0
  258. package/dist/errors/try-catch-placement.d.ts.map +1 -0
  259. package/dist/errors/try-catch-placement.js +214 -0
  260. package/dist/errors/try-catch-placement.js.map +1 -0
  261. package/dist/index.d.ts +221 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +245 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/logging/context-fields.d.ts +48 -0
  266. package/dist/logging/context-fields.d.ts.map +1 -0
  267. package/dist/logging/context-fields.js +160 -0
  268. package/dist/logging/context-fields.js.map +1 -0
  269. package/dist/logging/correlation-ids.d.ts +44 -0
  270. package/dist/logging/correlation-ids.d.ts.map +1 -0
  271. package/dist/logging/correlation-ids.js +144 -0
  272. package/dist/logging/correlation-ids.js.map +1 -0
  273. package/dist/logging/health-checks.d.ts +45 -0
  274. package/dist/logging/health-checks.d.ts.map +1 -0
  275. package/dist/logging/health-checks.js +165 -0
  276. package/dist/logging/health-checks.js.map +1 -0
  277. package/dist/logging/index.d.ts +31 -0
  278. package/dist/logging/index.d.ts.map +1 -0
  279. package/dist/logging/index.js +49 -0
  280. package/dist/logging/index.js.map +1 -0
  281. package/dist/logging/log-levels.d.ts +46 -0
  282. package/dist/logging/log-levels.d.ts.map +1 -0
  283. package/dist/logging/log-levels.js +178 -0
  284. package/dist/logging/log-levels.js.map +1 -0
  285. package/dist/logging/metric-naming.d.ts +46 -0
  286. package/dist/logging/metric-naming.d.ts.map +1 -0
  287. package/dist/logging/metric-naming.js +157 -0
  288. package/dist/logging/metric-naming.js.map +1 -0
  289. package/dist/logging/pii-redaction.d.ts +44 -0
  290. package/dist/logging/pii-redaction.d.ts.map +1 -0
  291. package/dist/logging/pii-redaction.js +166 -0
  292. package/dist/logging/pii-redaction.js.map +1 -0
  293. package/dist/logging/structured-format.d.ts +53 -0
  294. package/dist/logging/structured-format.d.ts.map +1 -0
  295. package/dist/logging/structured-format.js +235 -0
  296. package/dist/logging/structured-format.js.map +1 -0
  297. package/dist/performance/bundle-size.d.ts +79 -0
  298. package/dist/performance/bundle-size.d.ts.map +1 -0
  299. package/dist/performance/bundle-size.js +276 -0
  300. package/dist/performance/bundle-size.js.map +1 -0
  301. package/dist/performance/caching-patterns.d.ts +78 -0
  302. package/dist/performance/caching-patterns.d.ts.map +1 -0
  303. package/dist/performance/caching-patterns.js +257 -0
  304. package/dist/performance/caching-patterns.js.map +1 -0
  305. package/dist/performance/code-splitting.d.ts +86 -0
  306. package/dist/performance/code-splitting.d.ts.map +1 -0
  307. package/dist/performance/code-splitting.js +447 -0
  308. package/dist/performance/code-splitting.js.map +1 -0
  309. package/dist/performance/debounce-throttle.d.ts +75 -0
  310. package/dist/performance/debounce-throttle.d.ts.map +1 -0
  311. package/dist/performance/debounce-throttle.js +232 -0
  312. package/dist/performance/debounce-throttle.js.map +1 -0
  313. package/dist/performance/index.d.ts +28 -0
  314. package/dist/performance/index.d.ts.map +1 -0
  315. package/dist/performance/index.js +39 -0
  316. package/dist/performance/index.js.map +1 -0
  317. package/dist/performance/lazy-loading.d.ts +75 -0
  318. package/dist/performance/lazy-loading.d.ts.map +1 -0
  319. package/dist/performance/lazy-loading.js +233 -0
  320. package/dist/performance/lazy-loading.js.map +1 -0
  321. package/dist/performance/memoization.d.ts +75 -0
  322. package/dist/performance/memoization.d.ts.map +1 -0
  323. package/dist/performance/memoization.js +251 -0
  324. package/dist/performance/memoization.js.map +1 -0
  325. package/dist/registry/detector-registry.d.ts +266 -0
  326. package/dist/registry/detector-registry.d.ts.map +1 -0
  327. package/dist/registry/detector-registry.js +526 -0
  328. package/dist/registry/detector-registry.js.map +1 -0
  329. package/dist/registry/index.d.ts +10 -0
  330. package/dist/registry/index.d.ts.map +1 -0
  331. package/dist/registry/index.js +10 -0
  332. package/dist/registry/index.js.map +1 -0
  333. package/dist/registry/loader.d.ts +232 -0
  334. package/dist/registry/loader.d.ts.map +1 -0
  335. package/dist/registry/loader.js +419 -0
  336. package/dist/registry/loader.js.map +1 -0
  337. package/dist/registry/types.d.ts +111 -0
  338. package/dist/registry/types.d.ts.map +1 -0
  339. package/dist/registry/types.js +19 -0
  340. package/dist/registry/types.js.map +1 -0
  341. package/dist/security/csp-headers.d.ts +78 -0
  342. package/dist/security/csp-headers.d.ts.map +1 -0
  343. package/dist/security/csp-headers.js +401 -0
  344. package/dist/security/csp-headers.js.map +1 -0
  345. package/dist/security/csrf-protection.d.ts +72 -0
  346. package/dist/security/csrf-protection.d.ts.map +1 -0
  347. package/dist/security/csrf-protection.js +344 -0
  348. package/dist/security/csrf-protection.js.map +1 -0
  349. package/dist/security/index.d.ts +30 -0
  350. package/dist/security/index.d.ts.map +1 -0
  351. package/dist/security/index.js +48 -0
  352. package/dist/security/index.js.map +1 -0
  353. package/dist/security/input-sanitization.d.ts +74 -0
  354. package/dist/security/input-sanitization.d.ts.map +1 -0
  355. package/dist/security/input-sanitization.js +373 -0
  356. package/dist/security/input-sanitization.js.map +1 -0
  357. package/dist/security/rate-limiting.d.ts +81 -0
  358. package/dist/security/rate-limiting.d.ts.map +1 -0
  359. package/dist/security/rate-limiting.js +535 -0
  360. package/dist/security/rate-limiting.js.map +1 -0
  361. package/dist/security/secret-management.d.ts +83 -0
  362. package/dist/security/secret-management.d.ts.map +1 -0
  363. package/dist/security/secret-management.js +547 -0
  364. package/dist/security/secret-management.js.map +1 -0
  365. package/dist/security/sql-injection.d.ts +76 -0
  366. package/dist/security/sql-injection.d.ts.map +1 -0
  367. package/dist/security/sql-injection.js +383 -0
  368. package/dist/security/sql-injection.js.map +1 -0
  369. package/dist/security/xss-prevention.d.ts +80 -0
  370. package/dist/security/xss-prevention.d.ts.map +1 -0
  371. package/dist/security/xss-prevention.js +416 -0
  372. package/dist/security/xss-prevention.js.map +1 -0
  373. package/dist/structural/barrel-exports.d.ts +178 -0
  374. package/dist/structural/barrel-exports.d.ts.map +1 -0
  375. package/dist/structural/barrel-exports.js +553 -0
  376. package/dist/structural/barrel-exports.js.map +1 -0
  377. package/dist/structural/circular-deps.d.ts +140 -0
  378. package/dist/structural/circular-deps.d.ts.map +1 -0
  379. package/dist/structural/circular-deps.js +422 -0
  380. package/dist/structural/circular-deps.js.map +1 -0
  381. package/dist/structural/co-location.d.ts +202 -0
  382. package/dist/structural/co-location.d.ts.map +1 -0
  383. package/dist/structural/co-location.js +640 -0
  384. package/dist/structural/co-location.js.map +1 -0
  385. package/dist/structural/directory-structure.d.ts +151 -0
  386. package/dist/structural/directory-structure.d.ts.map +1 -0
  387. package/dist/structural/directory-structure.js +457 -0
  388. package/dist/structural/directory-structure.js.map +1 -0
  389. package/dist/structural/file-naming.d.ts +61 -0
  390. package/dist/structural/file-naming.d.ts.map +1 -0
  391. package/dist/structural/file-naming.js +231 -0
  392. package/dist/structural/file-naming.js.map +1 -0
  393. package/dist/structural/import-ordering.d.ts +212 -0
  394. package/dist/structural/import-ordering.d.ts.map +1 -0
  395. package/dist/structural/import-ordering.js +821 -0
  396. package/dist/structural/import-ordering.js.map +1 -0
  397. package/dist/structural/index.d.ts +23 -0
  398. package/dist/structural/index.d.ts.map +1 -0
  399. package/dist/structural/index.js +26 -0
  400. package/dist/structural/index.js.map +1 -0
  401. package/dist/structural/module-boundaries.d.ts +164 -0
  402. package/dist/structural/module-boundaries.d.ts.map +1 -0
  403. package/dist/structural/module-boundaries.js +616 -0
  404. package/dist/structural/module-boundaries.js.map +1 -0
  405. package/dist/structural/package-boundaries.d.ts +182 -0
  406. package/dist/structural/package-boundaries.d.ts.map +1 -0
  407. package/dist/structural/package-boundaries.js +602 -0
  408. package/dist/structural/package-boundaries.js.map +1 -0
  409. package/dist/styling/class-naming.d.ts +263 -0
  410. package/dist/styling/class-naming.d.ts.map +1 -0
  411. package/dist/styling/class-naming.js +892 -0
  412. package/dist/styling/class-naming.js.map +1 -0
  413. package/dist/styling/color-usage.d.ts +213 -0
  414. package/dist/styling/color-usage.d.ts.map +1 -0
  415. package/dist/styling/color-usage.js +732 -0
  416. package/dist/styling/color-usage.js.map +1 -0
  417. package/dist/styling/design-tokens.d.ts +212 -0
  418. package/dist/styling/design-tokens.d.ts.map +1 -0
  419. package/dist/styling/design-tokens.js +748 -0
  420. package/dist/styling/design-tokens.js.map +1 -0
  421. package/dist/styling/index.d.ts +16 -0
  422. package/dist/styling/index.d.ts.map +1 -0
  423. package/dist/styling/index.js +56 -0
  424. package/dist/styling/index.js.map +1 -0
  425. package/dist/styling/responsive.d.ts +304 -0
  426. package/dist/styling/responsive.d.ts.map +1 -0
  427. package/dist/styling/responsive.js +888 -0
  428. package/dist/styling/responsive.js.map +1 -0
  429. package/dist/styling/spacing-scale.d.ts +248 -0
  430. package/dist/styling/spacing-scale.d.ts.map +1 -0
  431. package/dist/styling/spacing-scale.js +865 -0
  432. package/dist/styling/spacing-scale.js.map +1 -0
  433. package/dist/styling/tailwind-patterns.d.ts +305 -0
  434. package/dist/styling/tailwind-patterns.d.ts.map +1 -0
  435. package/dist/styling/tailwind-patterns.js +1181 -0
  436. package/dist/styling/tailwind-patterns.js.map +1 -0
  437. package/dist/styling/typography.d.ts +281 -0
  438. package/dist/styling/typography.d.ts.map +1 -0
  439. package/dist/styling/typography.js +1004 -0
  440. package/dist/styling/typography.js.map +1 -0
  441. package/dist/styling/z-index-scale.d.ts +270 -0
  442. package/dist/styling/z-index-scale.d.ts.map +1 -0
  443. package/dist/styling/z-index-scale.js +714 -0
  444. package/dist/styling/z-index-scale.js.map +1 -0
  445. package/dist/testing/co-location.d.ts +42 -0
  446. package/dist/testing/co-location.d.ts.map +1 -0
  447. package/dist/testing/co-location.js +134 -0
  448. package/dist/testing/co-location.js.map +1 -0
  449. package/dist/testing/describe-naming.d.ts +47 -0
  450. package/dist/testing/describe-naming.d.ts.map +1 -0
  451. package/dist/testing/describe-naming.js +150 -0
  452. package/dist/testing/describe-naming.js.map +1 -0
  453. package/dist/testing/file-naming.d.ts +44 -0
  454. package/dist/testing/file-naming.d.ts.map +1 -0
  455. package/dist/testing/file-naming.js +131 -0
  456. package/dist/testing/file-naming.js.map +1 -0
  457. package/dist/testing/fixture-patterns.d.ts +52 -0
  458. package/dist/testing/fixture-patterns.d.ts.map +1 -0
  459. package/dist/testing/fixture-patterns.js +228 -0
  460. package/dist/testing/fixture-patterns.js.map +1 -0
  461. package/dist/testing/index.d.ts +31 -0
  462. package/dist/testing/index.d.ts.map +1 -0
  463. package/dist/testing/index.js +49 -0
  464. package/dist/testing/index.js.map +1 -0
  465. package/dist/testing/mock-patterns.d.ts +53 -0
  466. package/dist/testing/mock-patterns.d.ts.map +1 -0
  467. package/dist/testing/mock-patterns.js +264 -0
  468. package/dist/testing/mock-patterns.js.map +1 -0
  469. package/dist/testing/setup-teardown.d.ts +55 -0
  470. package/dist/testing/setup-teardown.d.ts.map +1 -0
  471. package/dist/testing/setup-teardown.js +262 -0
  472. package/dist/testing/setup-teardown.js.map +1 -0
  473. package/dist/testing/test-structure.d.ts +51 -0
  474. package/dist/testing/test-structure.d.ts.map +1 -0
  475. package/dist/testing/test-structure.js +225 -0
  476. package/dist/testing/test-structure.js.map +1 -0
  477. package/dist/types/any-usage.d.ts +99 -0
  478. package/dist/types/any-usage.d.ts.map +1 -0
  479. package/dist/types/any-usage.js +641 -0
  480. package/dist/types/any-usage.js.map +1 -0
  481. package/dist/types/file-location.d.ts +76 -0
  482. package/dist/types/file-location.d.ts.map +1 -0
  483. package/dist/types/file-location.js +395 -0
  484. package/dist/types/file-location.js.map +1 -0
  485. package/dist/types/generic-patterns.d.ts +97 -0
  486. package/dist/types/generic-patterns.d.ts.map +1 -0
  487. package/dist/types/generic-patterns.js +615 -0
  488. package/dist/types/generic-patterns.js.map +1 -0
  489. package/dist/types/index.d.ts +31 -0
  490. package/dist/types/index.d.ts.map +1 -0
  491. package/dist/types/index.js +43 -0
  492. package/dist/types/index.js.map +1 -0
  493. package/dist/types/interface-vs-type.d.ts +81 -0
  494. package/dist/types/interface-vs-type.d.ts.map +1 -0
  495. package/dist/types/interface-vs-type.js +440 -0
  496. package/dist/types/interface-vs-type.js.map +1 -0
  497. package/dist/types/naming-conventions.d.ts +84 -0
  498. package/dist/types/naming-conventions.d.ts.map +1 -0
  499. package/dist/types/naming-conventions.js +455 -0
  500. package/dist/types/naming-conventions.js.map +1 -0
  501. package/dist/types/type-assertions.d.ts +98 -0
  502. package/dist/types/type-assertions.d.ts.map +1 -0
  503. package/dist/types/type-assertions.js +639 -0
  504. package/dist/types/type-assertions.js.map +1 -0
  505. package/dist/types/utility-types.d.ts +110 -0
  506. package/dist/types/utility-types.d.ts.map +1 -0
  507. package/dist/types/utility-types.js +547 -0
  508. package/dist/types/utility-types.js.map +1 -0
  509. package/package.json +44 -0
@@ -0,0 +1,640 @@
1
+ /**
2
+ * Co-location Detector - Test and style co-location detection
3
+ *
4
+ * Detects test co-location patterns (tests next to source vs separate directories)
5
+ * and style co-location patterns (styles next to components vs separate directories).
6
+ *
7
+ * @requirements 7.3 - THE Structural_Detector SHALL detect co-location patterns (tests next to source vs separate)
8
+ */
9
+ import { StructuralDetector } from '../base/index.js';
10
+ /**
11
+ * Common test file patterns
12
+ */
13
+ export const TEST_FILE_PATTERNS = [
14
+ /\.test\.[jt]sx?$/,
15
+ /\.spec\.[jt]sx?$/,
16
+ /_test\.[jt]sx?$/,
17
+ /_spec\.[jt]sx?$/,
18
+ ];
19
+ /**
20
+ * Common test directory names
21
+ */
22
+ export const TEST_DIRECTORIES = [
23
+ '__tests__',
24
+ 'tests',
25
+ 'test',
26
+ '__test__',
27
+ 'spec',
28
+ 'specs',
29
+ '__specs__',
30
+ ];
31
+ /**
32
+ * Common style file patterns
33
+ */
34
+ export const STYLE_FILE_PATTERNS = [
35
+ /\.module\.css$/,
36
+ /\.module\.scss$/,
37
+ /\.module\.sass$/,
38
+ /\.module\.less$/,
39
+ /\.styles?\.[jt]sx?$/,
40
+ /\.css$/,
41
+ /\.scss$/,
42
+ /\.sass$/,
43
+ /\.less$/,
44
+ /\.styled\.[jt]sx?$/,
45
+ ];
46
+ /**
47
+ * Common style directory names
48
+ */
49
+ export const STYLE_DIRECTORIES = [
50
+ 'styles',
51
+ 'style',
52
+ 'css',
53
+ 'scss',
54
+ '__styles__',
55
+ ];
56
+ // ============================================================================
57
+ // Helper Functions
58
+ // ============================================================================
59
+ /**
60
+ * Check if a file is a test file
61
+ */
62
+ export function isTestFile(filePath) {
63
+ const normalizedPath = filePath.replace(/\\/g, '/');
64
+ const fileName = normalizedPath.split('/').pop() || '';
65
+ // Check file name patterns
66
+ for (const pattern of TEST_FILE_PATTERNS) {
67
+ if (pattern.test(fileName)) {
68
+ return true;
69
+ }
70
+ }
71
+ return false;
72
+ }
73
+ /**
74
+ * Check if a file is in a test directory
75
+ */
76
+ export function isInTestDirectory(filePath) {
77
+ const normalizedPath = filePath.replace(/\\/g, '/');
78
+ const segments = normalizedPath.split('/');
79
+ for (const segment of segments) {
80
+ const lowerSegment = segment.toLowerCase();
81
+ if (TEST_DIRECTORIES.some(dir => lowerSegment === dir.toLowerCase())) {
82
+ return true;
83
+ }
84
+ }
85
+ return false;
86
+ }
87
+ /**
88
+ * Get the test directory from a file path (if any)
89
+ */
90
+ export function getTestDirectory(filePath) {
91
+ const normalizedPath = filePath.replace(/\\/g, '/');
92
+ const segments = normalizedPath.split('/');
93
+ for (let i = 0; i < segments.length; i++) {
94
+ const segment = segments[i];
95
+ const lowerSegment = segment.toLowerCase();
96
+ if (TEST_DIRECTORIES.some(dir => lowerSegment === dir.toLowerCase())) {
97
+ return segments.slice(0, i + 1).join('/');
98
+ }
99
+ }
100
+ return null;
101
+ }
102
+ /**
103
+ * Check if a file is a style file
104
+ */
105
+ export function isStyleFile(filePath) {
106
+ const normalizedPath = filePath.replace(/\\/g, '/');
107
+ const fileName = normalizedPath.split('/').pop() || '';
108
+ // Check file name patterns
109
+ for (const pattern of STYLE_FILE_PATTERNS) {
110
+ if (pattern.test(fileName)) {
111
+ return true;
112
+ }
113
+ }
114
+ return false;
115
+ }
116
+ /**
117
+ * Check if a file is in a style directory
118
+ */
119
+ export function isInStyleDirectory(filePath) {
120
+ const normalizedPath = filePath.replace(/\\/g, '/');
121
+ const segments = normalizedPath.split('/');
122
+ for (const segment of segments) {
123
+ const lowerSegment = segment.toLowerCase();
124
+ if (STYLE_DIRECTORIES.some(dir => lowerSegment === dir.toLowerCase())) {
125
+ return true;
126
+ }
127
+ }
128
+ return false;
129
+ }
130
+ /**
131
+ * Get the style directory from a file path (if any)
132
+ */
133
+ export function getStyleDirectory(filePath) {
134
+ const normalizedPath = filePath.replace(/\\/g, '/');
135
+ const segments = normalizedPath.split('/');
136
+ for (let i = 0; i < segments.length; i++) {
137
+ const segment = segments[i];
138
+ const lowerSegment = segment.toLowerCase();
139
+ if (STYLE_DIRECTORIES.some(dir => lowerSegment === dir.toLowerCase())) {
140
+ return segments.slice(0, i + 1).join('/');
141
+ }
142
+ }
143
+ return null;
144
+ }
145
+ /**
146
+ * Extract the base name from a test file (remove test suffix)
147
+ */
148
+ export function extractTestBaseName(testFile) {
149
+ const normalizedPath = testFile.replace(/\\/g, '/');
150
+ const fileName = normalizedPath.split('/').pop() || '';
151
+ // Remove test suffixes
152
+ let baseName = fileName
153
+ .replace(/\.test\.[jt]sx?$/, '')
154
+ .replace(/\.spec\.[jt]sx?$/, '')
155
+ .replace(/_test\.[jt]sx?$/, '')
156
+ .replace(/_spec\.[jt]sx?$/, '');
157
+ return baseName;
158
+ }
159
+ /**
160
+ * Extract the base name from a style file (remove style suffix)
161
+ */
162
+ export function extractStyleBaseName(styleFile) {
163
+ const normalizedPath = styleFile.replace(/\\/g, '/');
164
+ const fileName = normalizedPath.split('/').pop() || '';
165
+ // Remove style suffixes
166
+ let baseName = fileName
167
+ .replace(/\.module\.css$/, '')
168
+ .replace(/\.module\.scss$/, '')
169
+ .replace(/\.module\.sass$/, '')
170
+ .replace(/\.module\.less$/, '')
171
+ .replace(/\.styles?\.[jt]sx?$/, '')
172
+ .replace(/\.styled\.[jt]sx?$/, '')
173
+ .replace(/\.css$/, '')
174
+ .replace(/\.scss$/, '')
175
+ .replace(/\.sass$/, '')
176
+ .replace(/\.less$/, '');
177
+ return baseName;
178
+ }
179
+ /**
180
+ * Get the directory of a file
181
+ */
182
+ export function getFileDirectory(filePath) {
183
+ const normalizedPath = filePath.replace(/\\/g, '/');
184
+ const lastSlash = normalizedPath.lastIndexOf('/');
185
+ return lastSlash === -1 ? '' : normalizedPath.slice(0, lastSlash);
186
+ }
187
+ /**
188
+ * Find the corresponding source file for a test file
189
+ */
190
+ export function findSourceFileForTest(testFile, allFiles) {
191
+ const baseName = extractTestBaseName(testFile);
192
+ const testDir = getFileDirectory(testFile);
193
+ const testDirName = getTestDirectory(testFile);
194
+ // Common source file extensions
195
+ const sourceExtensions = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
196
+ // First, look in the same directory (co-located)
197
+ for (const ext of sourceExtensions) {
198
+ const candidate = `${testDir}/${baseName}${ext}`;
199
+ if (allFiles.some(f => f.replace(/\\/g, '/') === candidate)) {
200
+ return candidate;
201
+ }
202
+ }
203
+ // If test is in a test directory, look in parent or sibling directories
204
+ if (testDirName) {
205
+ // Get the path before the test directory
206
+ const parentPath = testDirName.split('/').slice(0, -1).join('/');
207
+ for (const ext of sourceExtensions) {
208
+ // Check parent directory
209
+ const parentCandidate = parentPath ? `${parentPath}/${baseName}${ext}` : `${baseName}${ext}`;
210
+ if (allFiles.some(f => f.replace(/\\/g, '/') === parentCandidate)) {
211
+ return parentCandidate;
212
+ }
213
+ // Check src sibling directory
214
+ const srcCandidate = parentPath ? `${parentPath}/src/${baseName}${ext}` : `src/${baseName}${ext}`;
215
+ if (allFiles.some(f => f.replace(/\\/g, '/') === srcCandidate)) {
216
+ return srcCandidate;
217
+ }
218
+ }
219
+ }
220
+ // Search for any file with the same base name
221
+ for (const file of allFiles) {
222
+ const normalizedFile = file.replace(/\\/g, '/');
223
+ const fileName = normalizedFile.split('/').pop() || '';
224
+ for (const ext of sourceExtensions) {
225
+ if (fileName === `${baseName}${ext}` && !isTestFile(normalizedFile)) {
226
+ return normalizedFile;
227
+ }
228
+ }
229
+ }
230
+ return null;
231
+ }
232
+ /**
233
+ * Find the corresponding component file for a style file
234
+ */
235
+ export function findComponentFileForStyle(styleFile, allFiles) {
236
+ const baseName = extractStyleBaseName(styleFile);
237
+ const styleDir = getFileDirectory(styleFile);
238
+ const styleDirName = getStyleDirectory(styleFile);
239
+ // Common component file extensions
240
+ const componentExtensions = ['.tsx', '.jsx', '.ts', '.js'];
241
+ // First, look in the same directory (co-located)
242
+ for (const ext of componentExtensions) {
243
+ const candidate = `${styleDir}/${baseName}${ext}`;
244
+ if (allFiles.some(f => f.replace(/\\/g, '/') === candidate)) {
245
+ return candidate;
246
+ }
247
+ }
248
+ // If style is in a style directory, look in parent or sibling directories
249
+ if (styleDirName) {
250
+ // Get the path before the style directory
251
+ const parentPath = styleDirName.split('/').slice(0, -1).join('/');
252
+ for (const ext of componentExtensions) {
253
+ // Check parent directory
254
+ const parentCandidate = parentPath ? `${parentPath}/${baseName}${ext}` : `${baseName}${ext}`;
255
+ if (allFiles.some(f => f.replace(/\\/g, '/') === parentCandidate)) {
256
+ return parentCandidate;
257
+ }
258
+ // Check components sibling directory
259
+ const componentsCandidate = parentPath ? `${parentPath}/components/${baseName}${ext}` : `components/${baseName}${ext}`;
260
+ if (allFiles.some(f => f.replace(/\\/g, '/') === componentsCandidate)) {
261
+ return componentsCandidate;
262
+ }
263
+ }
264
+ }
265
+ // Search for any file with the same base name
266
+ for (const file of allFiles) {
267
+ const normalizedFile = file.replace(/\\/g, '/');
268
+ const fileName = normalizedFile.split('/').pop() || '';
269
+ for (const ext of componentExtensions) {
270
+ if (fileName === `${baseName}${ext}` && !isStyleFile(normalizedFile)) {
271
+ return normalizedFile;
272
+ }
273
+ }
274
+ }
275
+ return null;
276
+ }
277
+ /**
278
+ * Analyze test co-location patterns in a project
279
+ */
280
+ export function analyzeTestCoLocation(files) {
281
+ const testFiles = files.filter(f => isTestFile(f));
282
+ const coLocatedTests = [];
283
+ const separateTests = [];
284
+ for (const testFile of testFiles) {
285
+ const normalizedPath = testFile.replace(/\\/g, '/');
286
+ const sourceFile = findSourceFileForTest(testFile, files);
287
+ const testDirectory = getTestDirectory(testFile);
288
+ const isInTestDir = isInTestDirectory(testFile);
289
+ // A test is co-located if it's NOT in a test directory
290
+ // and is in the same directory as its source file
291
+ const testDir = getFileDirectory(normalizedPath);
292
+ const sourceDir = sourceFile ? getFileDirectory(sourceFile) : null;
293
+ const isCoLocated = !isInTestDir && (sourceDir === null || testDir === sourceDir);
294
+ const info = {
295
+ testFile: normalizedPath,
296
+ sourceFile,
297
+ isCoLocated,
298
+ testDirectory,
299
+ };
300
+ if (isCoLocated) {
301
+ coLocatedTests.push(info);
302
+ }
303
+ else {
304
+ separateTests.push(info);
305
+ }
306
+ }
307
+ const totalTestFiles = testFiles.length;
308
+ const coLocationRatio = totalTestFiles > 0 ? coLocatedTests.length / totalTestFiles : 0;
309
+ // Determine pattern type
310
+ let pattern;
311
+ let confidence;
312
+ if (totalTestFiles === 0) {
313
+ pattern = 'unknown';
314
+ confidence = 0;
315
+ }
316
+ else if (coLocationRatio >= 0.8) {
317
+ pattern = 'co-located';
318
+ confidence = coLocationRatio;
319
+ }
320
+ else if (coLocationRatio <= 0.2) {
321
+ pattern = 'separate';
322
+ confidence = 1 - coLocationRatio;
323
+ }
324
+ else {
325
+ pattern = 'mixed';
326
+ confidence = 0.5 + Math.abs(coLocationRatio - 0.5);
327
+ }
328
+ return {
329
+ pattern,
330
+ confidence,
331
+ coLocatedTests,
332
+ separateTests,
333
+ totalTestFiles,
334
+ coLocationRatio,
335
+ };
336
+ }
337
+ /**
338
+ * Analyze style co-location patterns in a project
339
+ */
340
+ export function analyzeStyleCoLocation(files) {
341
+ const styleFiles = files.filter(f => isStyleFile(f));
342
+ const coLocatedStyles = [];
343
+ const separateStyles = [];
344
+ for (const styleFile of styleFiles) {
345
+ const normalizedPath = styleFile.replace(/\\/g, '/');
346
+ const componentFile = findComponentFileForStyle(styleFile, files);
347
+ const styleDirectory = getStyleDirectory(styleFile);
348
+ const isInStyleDir = isInStyleDirectory(styleFile);
349
+ // A style is co-located if it's NOT in a style directory
350
+ // and is in the same directory as its component file
351
+ const styleDir = getFileDirectory(normalizedPath);
352
+ const componentDir = componentFile ? getFileDirectory(componentFile) : null;
353
+ const isCoLocated = !isInStyleDir && (componentDir === null || styleDir === componentDir);
354
+ const info = {
355
+ styleFile: normalizedPath,
356
+ componentFile,
357
+ isCoLocated,
358
+ styleDirectory,
359
+ };
360
+ if (isCoLocated) {
361
+ coLocatedStyles.push(info);
362
+ }
363
+ else {
364
+ separateStyles.push(info);
365
+ }
366
+ }
367
+ const totalStyleFiles = styleFiles.length;
368
+ const coLocationRatio = totalStyleFiles > 0 ? coLocatedStyles.length / totalStyleFiles : 0;
369
+ // Determine pattern type
370
+ let pattern;
371
+ let confidence;
372
+ if (totalStyleFiles === 0) {
373
+ pattern = 'unknown';
374
+ confidence = 0;
375
+ }
376
+ else if (coLocationRatio >= 0.8) {
377
+ pattern = 'co-located';
378
+ confidence = coLocationRatio;
379
+ }
380
+ else if (coLocationRatio <= 0.2) {
381
+ pattern = 'separate';
382
+ confidence = 1 - coLocationRatio;
383
+ }
384
+ else {
385
+ pattern = 'mixed';
386
+ confidence = 0.5 + Math.abs(coLocationRatio - 0.5);
387
+ }
388
+ return {
389
+ pattern,
390
+ confidence,
391
+ coLocatedStyles,
392
+ separateStyles,
393
+ totalStyleFiles,
394
+ coLocationRatio,
395
+ };
396
+ }
397
+ /**
398
+ * Analyze all co-location patterns in a project
399
+ */
400
+ export function analyzeCoLocation(files) {
401
+ const tests = analyzeTestCoLocation(files);
402
+ const styles = analyzeStyleCoLocation(files);
403
+ // Calculate overall confidence as weighted average
404
+ const totalFiles = tests.totalTestFiles + styles.totalStyleFiles;
405
+ let confidence;
406
+ if (totalFiles === 0) {
407
+ confidence = 0;
408
+ }
409
+ else {
410
+ const testWeight = tests.totalTestFiles / totalFiles;
411
+ const styleWeight = styles.totalStyleFiles / totalFiles;
412
+ confidence = tests.confidence * testWeight + styles.confidence * styleWeight;
413
+ }
414
+ return {
415
+ tests,
416
+ styles,
417
+ confidence,
418
+ };
419
+ }
420
+ // ============================================================================
421
+ // Co-location Detector Class
422
+ // ============================================================================
423
+ /**
424
+ * Detector for co-location patterns
425
+ *
426
+ * Identifies whether a project uses co-located tests/styles (next to source)
427
+ * or separate directories for tests and styles.
428
+ *
429
+ * @requirements 7.3 - THE Structural_Detector SHALL detect co-location patterns
430
+ */
431
+ export class CoLocationDetector extends StructuralDetector {
432
+ id = 'structural/co-location';
433
+ category = 'structural';
434
+ subcategory = 'co-location';
435
+ name = 'Co-location Detector';
436
+ description = 'Detects test and style co-location patterns (co-located vs separate directories)';
437
+ supportedLanguages = [
438
+ 'typescript',
439
+ 'javascript',
440
+ 'css',
441
+ 'scss',
442
+ ];
443
+ /**
444
+ * Detect co-location patterns in the project
445
+ */
446
+ async detect(context) {
447
+ const patterns = [];
448
+ const violations = [];
449
+ // Analyze the entire project's co-location patterns
450
+ const analysis = analyzeCoLocation(context.projectContext.files);
451
+ // Create pattern matches for detected patterns
452
+ if (analysis.tests.pattern !== 'unknown') {
453
+ patterns.push(this.createTestCoLocationPattern(context.file, analysis.tests));
454
+ }
455
+ if (analysis.styles.pattern !== 'unknown') {
456
+ patterns.push(this.createStyleCoLocationPattern(context.file, analysis.styles));
457
+ }
458
+ // Generate violations for inconsistent co-location
459
+ const testViolation = this.checkTestCoLocationConsistency(context.file, analysis.tests);
460
+ if (testViolation) {
461
+ violations.push(testViolation);
462
+ }
463
+ const styleViolation = this.checkStyleCoLocationConsistency(context.file, analysis.styles);
464
+ if (styleViolation) {
465
+ violations.push(styleViolation);
466
+ }
467
+ return this.createResult(patterns, violations, analysis.confidence);
468
+ }
469
+ /**
470
+ * Generate a quick fix for co-location violations
471
+ */
472
+ generateQuickFix(violation) {
473
+ // Co-location violations typically require manual refactoring
474
+ if (violation.patternId === 'structural/co-location-test-inconsistency') {
475
+ return {
476
+ title: 'Move test file to follow project pattern',
477
+ kind: 'refactor',
478
+ edit: {
479
+ changes: {},
480
+ documentChanges: [],
481
+ },
482
+ isPreferred: false,
483
+ confidence: 0.5,
484
+ preview: `Consider moving test file to follow the ${violation.expected} pattern`,
485
+ };
486
+ }
487
+ if (violation.patternId === 'structural/co-location-style-inconsistency') {
488
+ return {
489
+ title: 'Move style file to follow project pattern',
490
+ kind: 'refactor',
491
+ edit: {
492
+ changes: {},
493
+ documentChanges: [],
494
+ },
495
+ isPreferred: false,
496
+ confidence: 0.5,
497
+ preview: `Consider moving style file to follow the ${violation.expected} pattern`,
498
+ };
499
+ }
500
+ return null;
501
+ }
502
+ /**
503
+ * Create a pattern match for test co-location
504
+ */
505
+ createTestCoLocationPattern(file, analysis) {
506
+ return {
507
+ patternId: `co-location-test-${analysis.pattern}`,
508
+ location: { file, line: 1, column: 1 },
509
+ confidence: analysis.confidence,
510
+ isOutlier: false,
511
+ };
512
+ }
513
+ /**
514
+ * Create a pattern match for style co-location
515
+ */
516
+ createStyleCoLocationPattern(file, analysis) {
517
+ return {
518
+ patternId: `co-location-style-${analysis.pattern}`,
519
+ location: { file, line: 1, column: 1 },
520
+ confidence: analysis.confidence,
521
+ isOutlier: false,
522
+ };
523
+ }
524
+ /**
525
+ * Check if the current file follows the project's test co-location pattern
526
+ */
527
+ checkTestCoLocationConsistency(file, analysis) {
528
+ // Only check test files
529
+ if (!isTestFile(file)) {
530
+ return null;
531
+ }
532
+ // Skip if pattern is unknown or mixed (no clear pattern to enforce)
533
+ if (analysis.pattern === 'unknown' || analysis.pattern === 'mixed') {
534
+ return null;
535
+ }
536
+ const normalizedPath = file.replace(/\\/g, '/');
537
+ const isInTestDir = isInTestDirectory(file);
538
+ const isFileCoLocated = !isInTestDir;
539
+ // Check if file follows the dominant pattern
540
+ const followsPattern = (analysis.pattern === 'co-located' && isFileCoLocated) ||
541
+ (analysis.pattern === 'separate' && !isFileCoLocated);
542
+ if (followsPattern) {
543
+ return null;
544
+ }
545
+ const range = {
546
+ start: { line: 1, character: 1 },
547
+ end: { line: 1, character: 1 },
548
+ };
549
+ let message;
550
+ let expected;
551
+ let actual;
552
+ if (analysis.pattern === 'co-located') {
553
+ message = `Test file '${normalizedPath}' is in a separate test directory but project uses co-located tests. Consider moving it next to its source file.`;
554
+ expected = 'co-located tests (test files next to source files)';
555
+ actual = 'test file in separate test directory';
556
+ }
557
+ else {
558
+ message = `Test file '${normalizedPath}' is co-located with source but project uses separate test directories. Consider moving it to a test directory.`;
559
+ expected = 'separate test directories (__tests__/, tests/)';
560
+ actual = 'test file co-located with source';
561
+ }
562
+ return {
563
+ id: `co-location-test-${normalizedPath.replace(/[^a-zA-Z0-9]/g, '-')}`,
564
+ patternId: 'structural/co-location-test-inconsistency',
565
+ severity: 'info',
566
+ file,
567
+ range,
568
+ message,
569
+ expected,
570
+ actual,
571
+ aiExplainAvailable: true,
572
+ aiFixAvailable: false,
573
+ firstSeen: new Date(),
574
+ occurrences: 1,
575
+ };
576
+ }
577
+ /**
578
+ * Check if the current file follows the project's style co-location pattern
579
+ */
580
+ checkStyleCoLocationConsistency(file, analysis) {
581
+ // Only check style files
582
+ if (!isStyleFile(file)) {
583
+ return null;
584
+ }
585
+ // Skip if pattern is unknown or mixed (no clear pattern to enforce)
586
+ if (analysis.pattern === 'unknown' || analysis.pattern === 'mixed') {
587
+ return null;
588
+ }
589
+ const normalizedPath = file.replace(/\\/g, '/');
590
+ const isInStyleDir = isInStyleDirectory(file);
591
+ const isFileCoLocated = !isInStyleDir;
592
+ // Check if file follows the dominant pattern
593
+ const followsPattern = (analysis.pattern === 'co-located' && isFileCoLocated) ||
594
+ (analysis.pattern === 'separate' && !isFileCoLocated);
595
+ if (followsPattern) {
596
+ return null;
597
+ }
598
+ const range = {
599
+ start: { line: 1, character: 1 },
600
+ end: { line: 1, character: 1 },
601
+ };
602
+ let message;
603
+ let expected;
604
+ let actual;
605
+ if (analysis.pattern === 'co-located') {
606
+ message = `Style file '${normalizedPath}' is in a separate styles directory but project uses co-located styles. Consider moving it next to its component.`;
607
+ expected = 'co-located styles (style files next to components)';
608
+ actual = 'style file in separate styles directory';
609
+ }
610
+ else {
611
+ message = `Style file '${normalizedPath}' is co-located with component but project uses separate style directories. Consider moving it to a styles directory.`;
612
+ expected = 'separate style directories (styles/, css/)';
613
+ actual = 'style file co-located with component';
614
+ }
615
+ return {
616
+ id: `co-location-style-${normalizedPath.replace(/[^a-zA-Z0-9]/g, '-')}`,
617
+ patternId: 'structural/co-location-style-inconsistency',
618
+ severity: 'info',
619
+ file,
620
+ range,
621
+ message,
622
+ expected,
623
+ actual,
624
+ aiExplainAvailable: true,
625
+ aiFixAvailable: false,
626
+ firstSeen: new Date(),
627
+ occurrences: 1,
628
+ };
629
+ }
630
+ }
631
+ // ============================================================================
632
+ // Factory Function
633
+ // ============================================================================
634
+ /**
635
+ * Create a new CoLocationDetector instance
636
+ */
637
+ export function createCoLocationDetector() {
638
+ return new CoLocationDetector();
639
+ }
640
+ //# sourceMappingURL=co-location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"co-location.js","sourceRoot":"","sources":["../../src/structural/co-location.ts"],"names":[],"mappings":"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"}