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,72 @@
1
+ /**
2
+ * Default Values Detector - Configuration default value pattern detection
3
+ *
4
+ * Detects default value patterns including:
5
+ * - Hardcoded defaults
6
+ * - Environment-based defaults
7
+ * - Computed defaults
8
+ * - Fallback chains
9
+ *
10
+ * @requirements 17.3 - Default value patterns
11
+ */
12
+ import type { Violation, QuickFix, PatternCategory, Language } from 'driftdetect-core';
13
+ import { RegexDetector } from '../base/regex-detector.js';
14
+ import type { DetectionContext, DetectionResult } from '../base/base-detector.js';
15
+ export type DefaultValuePatternType = 'hardcoded-default' | 'env-default' | 'computed-default' | 'fallback-chain' | 'conditional-default' | 'factory-default';
16
+ export type DefaultValueViolationType = 'magic-number' | 'magic-string' | 'inconsistent-defaults';
17
+ export interface DefaultValuePatternInfo {
18
+ type: DefaultValuePatternType;
19
+ file: string;
20
+ line: number;
21
+ column: number;
22
+ matchedText: string;
23
+ defaultValue?: string | undefined;
24
+ context?: string | undefined;
25
+ }
26
+ export interface DefaultValueViolationInfo {
27
+ type: DefaultValueViolationType;
28
+ file: string;
29
+ line: number;
30
+ column: number;
31
+ matchedText: string;
32
+ issue: string;
33
+ suggestedFix?: string | undefined;
34
+ severity: 'high' | 'medium' | 'low';
35
+ }
36
+ export interface DefaultValueAnalysis {
37
+ patterns: DefaultValuePatternInfo[];
38
+ violations: DefaultValueViolationInfo[];
39
+ hasHardcodedDefaults: boolean;
40
+ hasEnvDefaults: boolean;
41
+ confidence: number;
42
+ }
43
+ export declare const HARDCODED_DEFAULT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
44
+ export declare const ENV_DEFAULT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
45
+ export declare const COMPUTED_DEFAULT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
46
+ export declare const FALLBACK_CHAIN_PATTERNS: readonly [RegExp, RegExp, RegExp];
47
+ export declare const CONDITIONAL_DEFAULT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
48
+ export declare const FACTORY_DEFAULT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
49
+ export declare const MAGIC_NUMBER_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp];
50
+ export declare const MAGIC_STRING_PATTERNS: readonly [RegExp, RegExp, RegExp];
51
+ export declare function shouldExcludeFile(filePath: string): boolean;
52
+ export declare function detectHardcodedDefaults(content: string, filePath: string): DefaultValuePatternInfo[];
53
+ export declare function detectEnvDefaults(content: string, filePath: string): DefaultValuePatternInfo[];
54
+ export declare function detectComputedDefaults(content: string, filePath: string): DefaultValuePatternInfo[];
55
+ export declare function detectFallbackChains(content: string, filePath: string): DefaultValuePatternInfo[];
56
+ export declare function detectConditionalDefaults(content: string, filePath: string): DefaultValuePatternInfo[];
57
+ export declare function detectFactoryDefaults(content: string, filePath: string): DefaultValuePatternInfo[];
58
+ export declare function detectMagicNumberViolations(content: string, filePath: string): DefaultValueViolationInfo[];
59
+ export declare function detectMagicStringViolations(content: string, filePath: string): DefaultValueViolationInfo[];
60
+ export declare function analyzeDefaultValues(content: string, filePath: string): DefaultValueAnalysis;
61
+ export declare class DefaultValuesDetector extends RegexDetector {
62
+ readonly id = "config/default-values";
63
+ readonly name = "Default Values Detector";
64
+ readonly description = "Detects configuration default value patterns";
65
+ readonly category: PatternCategory;
66
+ readonly subcategory = "default-values";
67
+ readonly supportedLanguages: Language[];
68
+ detect(context: DetectionContext): Promise<DetectionResult>;
69
+ generateQuickFix(_violation: Violation): QuickFix | null;
70
+ }
71
+ export declare function createDefaultValuesDetector(): DefaultValuesDetector;
72
+ //# sourceMappingURL=default-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-values.d.ts","sourceRoot":"","sources":["../../src/config/default-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,386 @@
1
+ /**
2
+ * Default Values Detector - Configuration default value pattern detection
3
+ *
4
+ * Detects default value patterns including:
5
+ * - Hardcoded defaults
6
+ * - Environment-based defaults
7
+ * - Computed defaults
8
+ * - Fallback chains
9
+ *
10
+ * @requirements 17.3 - Default value patterns
11
+ */
12
+ import { RegexDetector } from '../base/regex-detector.js';
13
+ // ============================================================================
14
+ // Constants
15
+ // ============================================================================
16
+ export const HARDCODED_DEFAULT_PATTERNS = [
17
+ // JavaScript/TypeScript
18
+ /\?\?\s*['"`][^'"`]+['"`]/gi,
19
+ /\|\|\s*['"`][^'"`]+['"`]/gi,
20
+ /\?\?\s*\d+/gi,
21
+ /\|\|\s*\d+/gi,
22
+ /\?\?\s*(?:true|false)/gi,
23
+ /\|\|\s*(?:true|false)/gi,
24
+ /default\s*[=:]\s*['"`][^'"`]+['"`]/gi,
25
+ /default\s*[=:]\s*\d+/gi,
26
+ /defaultValue\s*[=:]\s*['"`][^'"`]+['"`]/gi,
27
+ // Python
28
+ /\.get\s*\(\s*['"][^'"]+['"]\s*,\s*['"][^'"]+['"]\s*\)/gi,
29
+ /\.get\s*\(\s*['"][^'"]+['"]\s*,\s*\d+\s*\)/gi,
30
+ /or\s+['"][^'"]+['"]/gi,
31
+ /or\s+\d+/gi,
32
+ /default\s*=\s*['"][^'"]+['"]/gi,
33
+ /default\s*=\s*\d+/gi,
34
+ ];
35
+ export const ENV_DEFAULT_PATTERNS = [
36
+ // JavaScript/TypeScript
37
+ /process\.env\.[A-Z_]+\s*\?\?\s*process\.env\.[A-Z_]+/gi,
38
+ /process\.env\.[A-Z_]+\s*\|\|\s*process\.env\.[A-Z_]+/gi,
39
+ /\.default\s*\(\s*process\.env\.[A-Z_]+\s*\)/gi,
40
+ // Python
41
+ /os\.environ\.get\s*\(\s*['"][A-Z_]+['"]\s*,\s*os\.environ\.get/gi,
42
+ /os\.getenv\s*\(\s*['"][A-Z_]+['"]\s*,\s*os\.getenv/gi,
43
+ /os\.getenv\s*\(\s*['"][A-Z_]+['"]\s*\)\s*or\s*os\.getenv/gi,
44
+ ];
45
+ export const COMPUTED_DEFAULT_PATTERNS = [
46
+ // JavaScript/TypeScript
47
+ /\?\?\s*\w+\s*\(/gi, // Function call as default
48
+ /\|\|\s*\w+\s*\(/gi,
49
+ /\?\?\s*new\s+\w+/gi, // Constructor as default
50
+ /\|\|\s*new\s+\w+/gi,
51
+ /default\s*[=:]\s*\(\s*\)\s*=>/gi, // Arrow function default
52
+ /default\s*[=:]\s*function\s*\(/gi, // Function default
53
+ /getDefault\w*\s*\(/gi,
54
+ /createDefault\w*\s*\(/gi,
55
+ // Python
56
+ /or\s+\w+\s*\(/gi, // Function call as default
57
+ /default\s*=\s*\w+\s*\(/gi,
58
+ /default_factory\s*=\s*\w+/gi, // dataclass default_factory
59
+ /get_default\w*\s*\(/gi,
60
+ /create_default\w*\s*\(/gi,
61
+ ];
62
+ export const FALLBACK_CHAIN_PATTERNS = [
63
+ /\?\?\s*[^?]+\?\?\s*[^?]+/gi, // Multiple nullish coalescing
64
+ /\|\|\s*[^|]+\|\|\s*[^|]+/gi, // Multiple OR
65
+ /process\.env\.[A-Z_]+\s*\?\?\s*process\.env\.[A-Z_]+\s*\?\?/gi,
66
+ ];
67
+ export const CONDITIONAL_DEFAULT_PATTERNS = [
68
+ /\?\s*[^:]+\s*:\s*['"`][^'"`]+['"`]/gi, // Ternary with string default
69
+ /\?\s*[^:]+\s*:\s*\d+/gi, // Ternary with number default
70
+ /if\s*\([^)]+\)\s*\{[^}]*default/gi,
71
+ /switch\s*\([^)]+\)\s*\{[^}]*default\s*:/gi,
72
+ ];
73
+ export const FACTORY_DEFAULT_PATTERNS = [
74
+ // JavaScript/TypeScript
75
+ /createConfig\s*\(/gi,
76
+ /getConfig\s*\(/gi,
77
+ /loadConfig\s*\(/gi,
78
+ /configFactory\s*\(/gi,
79
+ /defaultConfig\s*[=:]/gi,
80
+ /DEFAULT_CONFIG\s*[=:]/gi,
81
+ /baseConfig\s*[=:]/gi,
82
+ // Python
83
+ /create_config\s*\(/gi,
84
+ /get_config\s*\(/gi,
85
+ /load_config\s*\(/gi,
86
+ /config_factory\s*\(/gi,
87
+ /default_config\s*=/gi,
88
+ /DEFAULT_CONFIG\s*=/gi,
89
+ /base_config\s*=/gi,
90
+ /class\s+\w*Settings\s*\(\s*BaseSettings\s*\)/gi, // Pydantic Settings
91
+ ];
92
+ export const MAGIC_NUMBER_PATTERNS = [
93
+ /timeout\s*[=:]\s*\d{4,}/gi, // Large timeout numbers
94
+ /port\s*[=:]\s*\d{4,5}/gi, // Port numbers
95
+ /maxRetries\s*[=:]\s*\d+/gi,
96
+ /limit\s*[=:]\s*\d+/gi,
97
+ /size\s*[=:]\s*\d+/gi,
98
+ ];
99
+ export const MAGIC_STRING_PATTERNS = [
100
+ /url\s*[=:]\s*['"`]https?:\/\/[^'"`]+['"`]/gi,
101
+ /host\s*[=:]\s*['"`](?:localhost|127\.0\.0\.1)[^'"`]*['"`]/gi,
102
+ /endpoint\s*[=:]\s*['"`]\/[^'"`]+['"`]/gi,
103
+ ];
104
+ // ============================================================================
105
+ // Analysis Functions
106
+ // ============================================================================
107
+ export function shouldExcludeFile(filePath) {
108
+ const excludePatterns = [
109
+ /\.test\.[jt]sx?$/,
110
+ /\.spec\.[jt]sx?$/,
111
+ /__tests__\//,
112
+ /\.d\.ts$/,
113
+ /node_modules\//,
114
+ /\.min\.[jt]s$/,
115
+ ];
116
+ return excludePatterns.some((p) => p.test(filePath));
117
+ }
118
+ export function detectHardcodedDefaults(content, filePath) {
119
+ const results = [];
120
+ const lines = content.split('\n');
121
+ for (let i = 0; i < lines.length; i++) {
122
+ const line = lines[i];
123
+ for (const pattern of HARDCODED_DEFAULT_PATTERNS) {
124
+ const regex = new RegExp(pattern.source, pattern.flags);
125
+ let match;
126
+ while ((match = regex.exec(line)) !== null) {
127
+ const valueMatch = match[0].match(/['"`]([^'"`]+)['"`]|\d+|true|false/);
128
+ results.push({
129
+ type: 'hardcoded-default',
130
+ file: filePath,
131
+ line: i + 1,
132
+ column: match.index + 1,
133
+ matchedText: match[0],
134
+ defaultValue: valueMatch ? valueMatch[1] || valueMatch[0] : undefined,
135
+ context: line.trim(),
136
+ });
137
+ }
138
+ }
139
+ }
140
+ return results;
141
+ }
142
+ export function detectEnvDefaults(content, filePath) {
143
+ const results = [];
144
+ const lines = content.split('\n');
145
+ for (let i = 0; i < lines.length; i++) {
146
+ const line = lines[i];
147
+ for (const pattern of ENV_DEFAULT_PATTERNS) {
148
+ const regex = new RegExp(pattern.source, pattern.flags);
149
+ let match;
150
+ while ((match = regex.exec(line)) !== null) {
151
+ results.push({
152
+ type: 'env-default',
153
+ file: filePath,
154
+ line: i + 1,
155
+ column: match.index + 1,
156
+ matchedText: match[0],
157
+ context: line.trim(),
158
+ });
159
+ }
160
+ }
161
+ }
162
+ return results;
163
+ }
164
+ export function detectComputedDefaults(content, filePath) {
165
+ const results = [];
166
+ const lines = content.split('\n');
167
+ for (let i = 0; i < lines.length; i++) {
168
+ const line = lines[i];
169
+ for (const pattern of COMPUTED_DEFAULT_PATTERNS) {
170
+ const regex = new RegExp(pattern.source, pattern.flags);
171
+ let match;
172
+ while ((match = regex.exec(line)) !== null) {
173
+ results.push({
174
+ type: 'computed-default',
175
+ file: filePath,
176
+ line: i + 1,
177
+ column: match.index + 1,
178
+ matchedText: match[0],
179
+ context: line.trim(),
180
+ });
181
+ }
182
+ }
183
+ }
184
+ return results;
185
+ }
186
+ export function detectFallbackChains(content, filePath) {
187
+ const results = [];
188
+ const lines = content.split('\n');
189
+ for (let i = 0; i < lines.length; i++) {
190
+ const line = lines[i];
191
+ for (const pattern of FALLBACK_CHAIN_PATTERNS) {
192
+ const regex = new RegExp(pattern.source, pattern.flags);
193
+ let match;
194
+ while ((match = regex.exec(line)) !== null) {
195
+ results.push({
196
+ type: 'fallback-chain',
197
+ file: filePath,
198
+ line: i + 1,
199
+ column: match.index + 1,
200
+ matchedText: match[0],
201
+ context: line.trim(),
202
+ });
203
+ }
204
+ }
205
+ }
206
+ return results;
207
+ }
208
+ export function detectConditionalDefaults(content, filePath) {
209
+ const results = [];
210
+ const lines = content.split('\n');
211
+ for (let i = 0; i < lines.length; i++) {
212
+ const line = lines[i];
213
+ for (const pattern of CONDITIONAL_DEFAULT_PATTERNS) {
214
+ const regex = new RegExp(pattern.source, pattern.flags);
215
+ let match;
216
+ while ((match = regex.exec(line)) !== null) {
217
+ results.push({
218
+ type: 'conditional-default',
219
+ file: filePath,
220
+ line: i + 1,
221
+ column: match.index + 1,
222
+ matchedText: match[0],
223
+ context: line.trim(),
224
+ });
225
+ }
226
+ }
227
+ }
228
+ return results;
229
+ }
230
+ export function detectFactoryDefaults(content, filePath) {
231
+ const results = [];
232
+ const lines = content.split('\n');
233
+ for (let i = 0; i < lines.length; i++) {
234
+ const line = lines[i];
235
+ for (const pattern of FACTORY_DEFAULT_PATTERNS) {
236
+ const regex = new RegExp(pattern.source, pattern.flags);
237
+ let match;
238
+ while ((match = regex.exec(line)) !== null) {
239
+ results.push({
240
+ type: 'factory-default',
241
+ file: filePath,
242
+ line: i + 1,
243
+ column: match.index + 1,
244
+ matchedText: match[0],
245
+ context: line.trim(),
246
+ });
247
+ }
248
+ }
249
+ }
250
+ return results;
251
+ }
252
+ export function detectMagicNumberViolations(content, filePath) {
253
+ const results = [];
254
+ const lines = content.split('\n');
255
+ // Skip config files where magic numbers are expected
256
+ if (/config\.[jt]s$/.test(filePath))
257
+ return results;
258
+ for (let i = 0; i < lines.length; i++) {
259
+ const line = lines[i];
260
+ // Skip comments and const declarations with descriptive names
261
+ if (/^\s*\/\/|^\s*\/\*|const\s+[A-Z_]+\s*=/.test(line))
262
+ continue;
263
+ for (const pattern of MAGIC_NUMBER_PATTERNS) {
264
+ const regex = new RegExp(pattern.source, pattern.flags);
265
+ let match;
266
+ while ((match = regex.exec(line)) !== null) {
267
+ results.push({
268
+ type: 'magic-number',
269
+ file: filePath,
270
+ line: i + 1,
271
+ column: match.index + 1,
272
+ matchedText: match[0],
273
+ issue: 'Magic number in configuration - consider using named constant',
274
+ suggestedFix: 'Extract to a named constant or config value',
275
+ severity: 'low',
276
+ });
277
+ }
278
+ }
279
+ }
280
+ return results;
281
+ }
282
+ export function detectMagicStringViolations(content, filePath) {
283
+ const results = [];
284
+ const lines = content.split('\n');
285
+ // Skip config files where magic strings are expected
286
+ if (/config\.[jt]s$/.test(filePath))
287
+ return results;
288
+ for (let i = 0; i < lines.length; i++) {
289
+ const line = lines[i];
290
+ // Skip comments and const declarations
291
+ if (/^\s*\/\/|^\s*\/\*|const\s+[A-Z_]+\s*=/.test(line))
292
+ continue;
293
+ for (const pattern of MAGIC_STRING_PATTERNS) {
294
+ const regex = new RegExp(pattern.source, pattern.flags);
295
+ let match;
296
+ while ((match = regex.exec(line)) !== null) {
297
+ results.push({
298
+ type: 'magic-string',
299
+ file: filePath,
300
+ line: i + 1,
301
+ column: match.index + 1,
302
+ matchedText: match[0],
303
+ issue: 'Magic string in configuration - consider using environment variable',
304
+ suggestedFix: 'Use environment variable or config constant',
305
+ severity: 'low',
306
+ });
307
+ }
308
+ }
309
+ }
310
+ return results;
311
+ }
312
+ export function analyzeDefaultValues(content, filePath) {
313
+ if (shouldExcludeFile(filePath)) {
314
+ return {
315
+ patterns: [],
316
+ violations: [],
317
+ hasHardcodedDefaults: false,
318
+ hasEnvDefaults: false,
319
+ confidence: 1.0,
320
+ };
321
+ }
322
+ const patterns = [
323
+ ...detectHardcodedDefaults(content, filePath),
324
+ ...detectEnvDefaults(content, filePath),
325
+ ...detectComputedDefaults(content, filePath),
326
+ ...detectFallbackChains(content, filePath),
327
+ ...detectConditionalDefaults(content, filePath),
328
+ ...detectFactoryDefaults(content, filePath),
329
+ ];
330
+ const violations = [
331
+ ...detectMagicNumberViolations(content, filePath),
332
+ ...detectMagicStringViolations(content, filePath),
333
+ ];
334
+ const hasHardcodedDefaults = patterns.some((p) => p.type === 'hardcoded-default');
335
+ const hasEnvDefaults = patterns.some((p) => p.type === 'env-default');
336
+ let confidence = 0.7;
337
+ if (hasHardcodedDefaults || hasEnvDefaults)
338
+ confidence += 0.15;
339
+ if (patterns.some((p) => p.type === 'factory-default'))
340
+ confidence += 0.1;
341
+ if (violations.length === 0)
342
+ confidence += 0.05;
343
+ confidence = Math.min(confidence, 0.95);
344
+ return {
345
+ patterns,
346
+ violations,
347
+ hasHardcodedDefaults,
348
+ hasEnvDefaults,
349
+ confidence,
350
+ };
351
+ }
352
+ // ============================================================================
353
+ // Detector Class
354
+ // ============================================================================
355
+ export class DefaultValuesDetector extends RegexDetector {
356
+ id = 'config/default-values';
357
+ name = 'Default Values Detector';
358
+ description = 'Detects configuration default value patterns';
359
+ category = 'config';
360
+ subcategory = 'default-values';
361
+ supportedLanguages = ['typescript', 'javascript', 'python'];
362
+ async detect(context) {
363
+ if (!this.supportsLanguage(context.language)) {
364
+ return this.createEmptyResult();
365
+ }
366
+ const analysis = analyzeDefaultValues(context.content, context.file);
367
+ if (analysis.patterns.length === 0 && analysis.violations.length === 0) {
368
+ return this.createEmptyResult();
369
+ }
370
+ return this.createResult([], [], analysis.confidence, {
371
+ custom: {
372
+ patterns: analysis.patterns,
373
+ violations: analysis.violations,
374
+ hasHardcodedDefaults: analysis.hasHardcodedDefaults,
375
+ hasEnvDefaults: analysis.hasEnvDefaults,
376
+ },
377
+ });
378
+ }
379
+ generateQuickFix(_violation) {
380
+ return null;
381
+ }
382
+ }
383
+ export function createDefaultValuesDetector() {
384
+ return new DefaultValuesDetector();
385
+ }
386
+ //# sourceMappingURL=default-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-values.js","sourceRoot":"","sources":["../../src/config/default-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Env Naming Detector - Environment variable naming pattern detection
3
+ *
4
+ * Detects environment variable naming patterns including:
5
+ * - SCREAMING_SNAKE_CASE convention
6
+ * - Prefix patterns (APP_, DB_, API_)
7
+ * - Naming consistency
8
+ * - Reserved name violations
9
+ *
10
+ * @requirements 17.1 - Environment variable naming patterns
11
+ */
12
+ import type { Violation, QuickFix, PatternCategory, Language } from 'driftdetect-core';
13
+ import { RegexDetector } from '../base/regex-detector.js';
14
+ import type { DetectionContext, DetectionResult } from '../base/base-detector.js';
15
+ export type EnvNamingPatternType = 'screaming-snake-case' | 'prefixed-env' | 'app-prefix' | 'db-prefix' | 'api-prefix' | 'feature-prefix' | 'secret-prefix';
16
+ export type EnvNamingViolationType = 'invalid-case' | 'missing-prefix' | 'reserved-name' | 'inconsistent-naming';
17
+ export interface EnvNamingPatternInfo {
18
+ type: EnvNamingPatternType;
19
+ file: string;
20
+ line: number;
21
+ column: number;
22
+ matchedText: string;
23
+ envName: string;
24
+ prefix?: string | undefined;
25
+ context?: string | undefined;
26
+ }
27
+ export interface EnvNamingViolationInfo {
28
+ type: EnvNamingViolationType;
29
+ file: string;
30
+ line: number;
31
+ column: number;
32
+ matchedText: string;
33
+ issue: string;
34
+ suggestedFix?: string | undefined;
35
+ severity: 'high' | 'medium' | 'low';
36
+ }
37
+ export interface EnvNamingAnalysis {
38
+ patterns: EnvNamingPatternInfo[];
39
+ violations: EnvNamingViolationInfo[];
40
+ usesScreamingSnakeCase: boolean;
41
+ prefixes: string[];
42
+ confidence: number;
43
+ }
44
+ export declare const SCREAMING_SNAKE_CASE_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
45
+ export declare const APP_PREFIX_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
46
+ export declare const DB_PREFIX_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
47
+ export declare const API_PREFIX_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
48
+ export declare const FEATURE_PREFIX_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
49
+ export declare const SECRET_PREFIX_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
50
+ export declare const INVALID_CASE_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp];
51
+ export declare const RESERVED_ENV_NAMES: readonly ["PATH", "HOME", "USER", "SHELL", "PWD", "TERM", "LANG", "LC_ALL", "TZ", "HOSTNAME", "LOGNAME", "MAIL", "EDITOR", "VISUAL", "PAGER", "TMPDIR", "TEMP", "TMP"];
52
+ export declare function shouldExcludeFile(filePath: string): boolean;
53
+ export declare function detectScreamingSnakeCase(content: string, filePath: string): EnvNamingPatternInfo[];
54
+ export declare function detectAppPrefix(content: string, filePath: string): EnvNamingPatternInfo[];
55
+ export declare function detectDbPrefix(content: string, filePath: string): EnvNamingPatternInfo[];
56
+ export declare function detectApiPrefix(content: string, filePath: string): EnvNamingPatternInfo[];
57
+ export declare function detectFeaturePrefix(content: string, filePath: string): EnvNamingPatternInfo[];
58
+ export declare function detectSecretPrefix(content: string, filePath: string): EnvNamingPatternInfo[];
59
+ export declare function detectInvalidCaseViolations(content: string, filePath: string): EnvNamingViolationInfo[];
60
+ export declare function detectReservedNameViolations(content: string, filePath: string): EnvNamingViolationInfo[];
61
+ export declare function analyzeEnvNaming(content: string, filePath: string): EnvNamingAnalysis;
62
+ export declare class EnvNamingDetector extends RegexDetector {
63
+ readonly id = "config/env-naming";
64
+ readonly name = "Env Naming Detector";
65
+ readonly description = "Detects environment variable naming patterns and identifies violations";
66
+ readonly category: PatternCategory;
67
+ readonly subcategory = "env-naming";
68
+ readonly supportedLanguages: Language[];
69
+ detect(context: DetectionContext): Promise<DetectionResult>;
70
+ generateQuickFix(_violation: Violation): QuickFix | null;
71
+ }
72
+ export declare function createEnvNamingDetector(): EnvNamingDetector;
73
+ //# sourceMappingURL=env-naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-naming.d.ts","sourceRoot":"","sources":["../../src/config/env-naming.ts"],"names":[],"mappings":"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"}