@kevinrabun/judges 2.2.0 → 3.0.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 (330) hide show
  1. package/README.md +203 -20
  2. package/dist/api.d.ts +40 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +56 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/ast/cross-file-taint.d.ts +43 -0
  7. package/dist/ast/cross-file-taint.d.ts.map +1 -0
  8. package/dist/ast/cross-file-taint.js +713 -0
  9. package/dist/ast/cross-file-taint.js.map +1 -0
  10. package/dist/ast/index.d.ts +4 -0
  11. package/dist/ast/index.d.ts.map +1 -1
  12. package/dist/ast/index.js +5 -0
  13. package/dist/ast/index.js.map +1 -1
  14. package/dist/ast/structural-parser.d.ts.map +1 -1
  15. package/dist/ast/structural-parser.js +66 -11
  16. package/dist/ast/structural-parser.js.map +1 -1
  17. package/dist/ast/taint-tracker.d.ts +35 -0
  18. package/dist/ast/taint-tracker.d.ts.map +1 -0
  19. package/dist/ast/taint-tracker.js +518 -0
  20. package/dist/ast/taint-tracker.js.map +1 -0
  21. package/dist/ast/types.d.ts +2 -0
  22. package/dist/ast/types.d.ts.map +1 -1
  23. package/dist/ast/typescript-ast.d.ts.map +1 -1
  24. package/dist/ast/typescript-ast.js +25 -5
  25. package/dist/ast/typescript-ast.js.map +1 -1
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +10 -9
  28. package/dist/config.js.map +1 -1
  29. package/dist/dedup.d.ts +19 -0
  30. package/dist/dedup.d.ts.map +1 -0
  31. package/dist/dedup.js +222 -0
  32. package/dist/dedup.js.map +1 -0
  33. package/dist/errors.d.ts +37 -0
  34. package/dist/errors.d.ts.map +1 -0
  35. package/dist/errors.js +57 -0
  36. package/dist/errors.js.map +1 -0
  37. package/dist/evaluators/accessibility.d.ts +1 -1
  38. package/dist/evaluators/accessibility.d.ts.map +1 -1
  39. package/dist/evaluators/accessibility.js +45 -7
  40. package/dist/evaluators/accessibility.js.map +1 -1
  41. package/dist/evaluators/agent-instructions.d.ts +1 -1
  42. package/dist/evaluators/agent-instructions.d.ts.map +1 -1
  43. package/dist/evaluators/agent-instructions.js +60 -2
  44. package/dist/evaluators/agent-instructions.js.map +1 -1
  45. package/dist/evaluators/ai-code-safety.d.ts +9 -0
  46. package/dist/evaluators/ai-code-safety.d.ts.map +1 -0
  47. package/dist/evaluators/ai-code-safety.js +507 -0
  48. package/dist/evaluators/ai-code-safety.js.map +1 -0
  49. package/dist/evaluators/api-design.d.ts +1 -1
  50. package/dist/evaluators/api-design.d.ts.map +1 -1
  51. package/dist/evaluators/api-design.js +33 -17
  52. package/dist/evaluators/api-design.js.map +1 -1
  53. package/dist/evaluators/app-builder.d.ts +34 -0
  54. package/dist/evaluators/app-builder.d.ts.map +1 -0
  55. package/dist/evaluators/app-builder.js +156 -0
  56. package/dist/evaluators/app-builder.js.map +1 -0
  57. package/dist/evaluators/authentication.d.ts +1 -1
  58. package/dist/evaluators/authentication.d.ts.map +1 -1
  59. package/dist/evaluators/authentication.js +69 -75
  60. package/dist/evaluators/authentication.js.map +1 -1
  61. package/dist/evaluators/backwards-compatibility.d.ts +1 -1
  62. package/dist/evaluators/backwards-compatibility.d.ts.map +1 -1
  63. package/dist/evaluators/backwards-compatibility.js +25 -3
  64. package/dist/evaluators/backwards-compatibility.js.map +1 -1
  65. package/dist/evaluators/caching.d.ts +1 -1
  66. package/dist/evaluators/caching.d.ts.map +1 -1
  67. package/dist/evaluators/caching.js +25 -4
  68. package/dist/evaluators/caching.js.map +1 -1
  69. package/dist/evaluators/ci-cd.d.ts +1 -1
  70. package/dist/evaluators/ci-cd.d.ts.map +1 -1
  71. package/dist/evaluators/ci-cd.js +34 -12
  72. package/dist/evaluators/ci-cd.js.map +1 -1
  73. package/dist/evaluators/cloud-readiness.d.ts +1 -1
  74. package/dist/evaluators/cloud-readiness.d.ts.map +1 -1
  75. package/dist/evaluators/cloud-readiness.js +26 -0
  76. package/dist/evaluators/cloud-readiness.js.map +1 -1
  77. package/dist/evaluators/code-structure.d.ts +1 -1
  78. package/dist/evaluators/code-structure.d.ts.map +1 -1
  79. package/dist/evaluators/code-structure.js +19 -6
  80. package/dist/evaluators/code-structure.js.map +1 -1
  81. package/dist/evaluators/compliance.d.ts +1 -1
  82. package/dist/evaluators/compliance.d.ts.map +1 -1
  83. package/dist/evaluators/compliance.js +48 -10
  84. package/dist/evaluators/compliance.js.map +1 -1
  85. package/dist/evaluators/concurrency.d.ts +1 -1
  86. package/dist/evaluators/concurrency.d.ts.map +1 -1
  87. package/dist/evaluators/concurrency.js +29 -4
  88. package/dist/evaluators/concurrency.js.map +1 -1
  89. package/dist/evaluators/configuration-management.d.ts +1 -1
  90. package/dist/evaluators/configuration-management.d.ts.map +1 -1
  91. package/dist/evaluators/configuration-management.js +57 -13
  92. package/dist/evaluators/configuration-management.js.map +1 -1
  93. package/dist/evaluators/cost-effectiveness.d.ts +1 -1
  94. package/dist/evaluators/cost-effectiveness.d.ts.map +1 -1
  95. package/dist/evaluators/cost-effectiveness.js +27 -3
  96. package/dist/evaluators/cost-effectiveness.js.map +1 -1
  97. package/dist/evaluators/cybersecurity.d.ts +1 -1
  98. package/dist/evaluators/cybersecurity.d.ts.map +1 -1
  99. package/dist/evaluators/cybersecurity.js +190 -1
  100. package/dist/evaluators/cybersecurity.js.map +1 -1
  101. package/dist/evaluators/data-security.d.ts +1 -1
  102. package/dist/evaluators/data-security.d.ts.map +1 -1
  103. package/dist/evaluators/data-security.js +114 -66
  104. package/dist/evaluators/data-security.js.map +1 -1
  105. package/dist/evaluators/data-sovereignty.d.ts +1 -1
  106. package/dist/evaluators/data-sovereignty.d.ts.map +1 -1
  107. package/dist/evaluators/data-sovereignty.js +89 -2
  108. package/dist/evaluators/data-sovereignty.js.map +1 -1
  109. package/dist/evaluators/database.d.ts +1 -1
  110. package/dist/evaluators/database.d.ts.map +1 -1
  111. package/dist/evaluators/database.js +35 -9
  112. package/dist/evaluators/database.js.map +1 -1
  113. package/dist/evaluators/dependencies.d.ts +6 -0
  114. package/dist/evaluators/dependencies.d.ts.map +1 -0
  115. package/dist/evaluators/dependencies.js +204 -0
  116. package/dist/evaluators/dependencies.js.map +1 -0
  117. package/dist/evaluators/dependency-health.d.ts +1 -1
  118. package/dist/evaluators/dependency-health.d.ts.map +1 -1
  119. package/dist/evaluators/dependency-health.js +265 -11
  120. package/dist/evaluators/dependency-health.js.map +1 -1
  121. package/dist/evaluators/documentation.d.ts +1 -1
  122. package/dist/evaluators/documentation.d.ts.map +1 -1
  123. package/dist/evaluators/documentation.js +25 -2
  124. package/dist/evaluators/documentation.js.map +1 -1
  125. package/dist/evaluators/error-handling.d.ts +1 -1
  126. package/dist/evaluators/error-handling.d.ts.map +1 -1
  127. package/dist/evaluators/error-handling.js +89 -24
  128. package/dist/evaluators/error-handling.js.map +1 -1
  129. package/dist/evaluators/ethics-bias.d.ts +1 -1
  130. package/dist/evaluators/ethics-bias.d.ts.map +1 -1
  131. package/dist/evaluators/ethics-bias.js +30 -5
  132. package/dist/evaluators/ethics-bias.js.map +1 -1
  133. package/dist/evaluators/framework-safety.d.ts +13 -0
  134. package/dist/evaluators/framework-safety.d.ts.map +1 -0
  135. package/dist/evaluators/framework-safety.js +424 -0
  136. package/dist/evaluators/framework-safety.js.map +1 -0
  137. package/dist/evaluators/index.d.ts +21 -24
  138. package/dist/evaluators/index.d.ts.map +1 -1
  139. package/dist/evaluators/index.js +297 -677
  140. package/dist/evaluators/index.js.map +1 -1
  141. package/dist/evaluators/internationalization.d.ts +1 -1
  142. package/dist/evaluators/internationalization.d.ts.map +1 -1
  143. package/dist/evaluators/internationalization.js +55 -4
  144. package/dist/evaluators/internationalization.js.map +1 -1
  145. package/dist/evaluators/logging-privacy.d.ts +1 -1
  146. package/dist/evaluators/logging-privacy.d.ts.map +1 -1
  147. package/dist/evaluators/logging-privacy.js +68 -30
  148. package/dist/evaluators/logging-privacy.js.map +1 -1
  149. package/dist/evaluators/maintainability.d.ts +1 -1
  150. package/dist/evaluators/maintainability.d.ts.map +1 -1
  151. package/dist/evaluators/maintainability.js +53 -26
  152. package/dist/evaluators/maintainability.js.map +1 -1
  153. package/dist/evaluators/observability.d.ts +1 -1
  154. package/dist/evaluators/observability.d.ts.map +1 -1
  155. package/dist/evaluators/observability.js +22 -1
  156. package/dist/evaluators/observability.js.map +1 -1
  157. package/dist/evaluators/performance.d.ts +1 -1
  158. package/dist/evaluators/performance.d.ts.map +1 -1
  159. package/dist/evaluators/performance.js +209 -2
  160. package/dist/evaluators/performance.js.map +1 -1
  161. package/dist/evaluators/portability.d.ts +1 -1
  162. package/dist/evaluators/portability.d.ts.map +1 -1
  163. package/dist/evaluators/portability.js +24 -1
  164. package/dist/evaluators/portability.js.map +1 -1
  165. package/dist/evaluators/project.d.ts +16 -0
  166. package/dist/evaluators/project.d.ts.map +1 -0
  167. package/dist/evaluators/project.js +353 -0
  168. package/dist/evaluators/project.js.map +1 -0
  169. package/dist/evaluators/rate-limiting.d.ts +1 -1
  170. package/dist/evaluators/rate-limiting.d.ts.map +1 -1
  171. package/dist/evaluators/rate-limiting.js +33 -10
  172. package/dist/evaluators/rate-limiting.js.map +1 -1
  173. package/dist/evaluators/reliability.d.ts +1 -1
  174. package/dist/evaluators/reliability.d.ts.map +1 -1
  175. package/dist/evaluators/reliability.js +20 -0
  176. package/dist/evaluators/reliability.js.map +1 -1
  177. package/dist/evaluators/scalability.d.ts +1 -1
  178. package/dist/evaluators/scalability.d.ts.map +1 -1
  179. package/dist/evaluators/scalability.js +27 -1
  180. package/dist/evaluators/scalability.js.map +1 -1
  181. package/dist/evaluators/shared.d.ts +24 -2
  182. package/dist/evaluators/shared.d.ts.map +1 -1
  183. package/dist/evaluators/shared.js +194 -26
  184. package/dist/evaluators/shared.js.map +1 -1
  185. package/dist/evaluators/software-practices.d.ts +1 -1
  186. package/dist/evaluators/software-practices.d.ts.map +1 -1
  187. package/dist/evaluators/software-practices.js +50 -3
  188. package/dist/evaluators/software-practices.js.map +1 -1
  189. package/dist/evaluators/testing.d.ts +1 -1
  190. package/dist/evaluators/testing.d.ts.map +1 -1
  191. package/dist/evaluators/testing.js +32 -4
  192. package/dist/evaluators/testing.js.map +1 -1
  193. package/dist/evaluators/ux.d.ts +1 -1
  194. package/dist/evaluators/ux.d.ts.map +1 -1
  195. package/dist/evaluators/ux.js +24 -0
  196. package/dist/evaluators/ux.js.map +1 -1
  197. package/dist/evaluators/v2.d.ts +1 -1
  198. package/dist/evaluators/v2.d.ts.map +1 -1
  199. package/dist/evaluators/v2.js +15 -35
  200. package/dist/evaluators/v2.js.map +1 -1
  201. package/dist/formatters/sarif.d.ts +75 -0
  202. package/dist/formatters/sarif.d.ts.map +1 -0
  203. package/dist/formatters/sarif.js +93 -0
  204. package/dist/formatters/sarif.js.map +1 -0
  205. package/dist/index.d.ts +4 -1
  206. package/dist/index.d.ts.map +1 -1
  207. package/dist/index.js +9 -782
  208. package/dist/index.js.map +1 -1
  209. package/dist/judges/accessibility.d.ts +1 -1
  210. package/dist/judges/accessibility.d.ts.map +1 -1
  211. package/dist/judges/agent-instructions.d.ts +1 -1
  212. package/dist/judges/agent-instructions.d.ts.map +1 -1
  213. package/dist/judges/ai-code-safety.d.ts +3 -0
  214. package/dist/judges/ai-code-safety.d.ts.map +1 -0
  215. package/dist/judges/ai-code-safety.js +45 -0
  216. package/dist/judges/ai-code-safety.js.map +1 -0
  217. package/dist/judges/api-design.d.ts +1 -1
  218. package/dist/judges/api-design.d.ts.map +1 -1
  219. package/dist/judges/authentication.d.ts +1 -1
  220. package/dist/judges/authentication.d.ts.map +1 -1
  221. package/dist/judges/backwards-compatibility.d.ts +1 -1
  222. package/dist/judges/backwards-compatibility.d.ts.map +1 -1
  223. package/dist/judges/caching.d.ts +1 -1
  224. package/dist/judges/caching.d.ts.map +1 -1
  225. package/dist/judges/ci-cd.d.ts +1 -1
  226. package/dist/judges/ci-cd.d.ts.map +1 -1
  227. package/dist/judges/cloud-readiness.d.ts +1 -1
  228. package/dist/judges/cloud-readiness.d.ts.map +1 -1
  229. package/dist/judges/code-structure.d.ts +1 -1
  230. package/dist/judges/code-structure.d.ts.map +1 -1
  231. package/dist/judges/compliance.d.ts +1 -1
  232. package/dist/judges/compliance.d.ts.map +1 -1
  233. package/dist/judges/concurrency.d.ts +1 -1
  234. package/dist/judges/concurrency.d.ts.map +1 -1
  235. package/dist/judges/configuration-management.d.ts +1 -1
  236. package/dist/judges/configuration-management.d.ts.map +1 -1
  237. package/dist/judges/cost-effectiveness.d.ts +1 -1
  238. package/dist/judges/cost-effectiveness.d.ts.map +1 -1
  239. package/dist/judges/cybersecurity.d.ts +1 -1
  240. package/dist/judges/cybersecurity.d.ts.map +1 -1
  241. package/dist/judges/data-security.d.ts +1 -1
  242. package/dist/judges/data-security.d.ts.map +1 -1
  243. package/dist/judges/data-sovereignty.d.ts +1 -1
  244. package/dist/judges/data-sovereignty.d.ts.map +1 -1
  245. package/dist/judges/database.d.ts +1 -1
  246. package/dist/judges/database.d.ts.map +1 -1
  247. package/dist/judges/dependency-health.d.ts +1 -1
  248. package/dist/judges/dependency-health.d.ts.map +1 -1
  249. package/dist/judges/documentation.d.ts +1 -1
  250. package/dist/judges/documentation.d.ts.map +1 -1
  251. package/dist/judges/error-handling.d.ts +1 -1
  252. package/dist/judges/error-handling.d.ts.map +1 -1
  253. package/dist/judges/ethics-bias.d.ts +1 -1
  254. package/dist/judges/ethics-bias.d.ts.map +1 -1
  255. package/dist/judges/framework-safety.d.ts +3 -0
  256. package/dist/judges/framework-safety.d.ts.map +1 -0
  257. package/dist/judges/framework-safety.js +25 -0
  258. package/dist/judges/framework-safety.js.map +1 -0
  259. package/dist/judges/index.d.ts +1 -1
  260. package/dist/judges/index.d.ts.map +1 -1
  261. package/dist/judges/index.js +76 -0
  262. package/dist/judges/index.js.map +1 -1
  263. package/dist/judges/internationalization.d.ts +1 -1
  264. package/dist/judges/internationalization.d.ts.map +1 -1
  265. package/dist/judges/logging-privacy.d.ts +1 -1
  266. package/dist/judges/logging-privacy.d.ts.map +1 -1
  267. package/dist/judges/maintainability.d.ts +1 -1
  268. package/dist/judges/maintainability.d.ts.map +1 -1
  269. package/dist/judges/observability.d.ts +1 -1
  270. package/dist/judges/observability.d.ts.map +1 -1
  271. package/dist/judges/performance.d.ts +1 -1
  272. package/dist/judges/performance.d.ts.map +1 -1
  273. package/dist/judges/portability.d.ts +1 -1
  274. package/dist/judges/portability.d.ts.map +1 -1
  275. package/dist/judges/rate-limiting.d.ts +1 -1
  276. package/dist/judges/rate-limiting.d.ts.map +1 -1
  277. package/dist/judges/reliability.d.ts +1 -1
  278. package/dist/judges/reliability.d.ts.map +1 -1
  279. package/dist/judges/scalability.d.ts +1 -1
  280. package/dist/judges/scalability.d.ts.map +1 -1
  281. package/dist/judges/software-practices.d.ts +1 -1
  282. package/dist/judges/software-practices.d.ts.map +1 -1
  283. package/dist/judges/testing.d.ts +1 -1
  284. package/dist/judges/testing.d.ts.map +1 -1
  285. package/dist/judges/ux.d.ts +1 -1
  286. package/dist/judges/ux.d.ts.map +1 -1
  287. package/dist/language-patterns.d.ts +37 -0
  288. package/dist/language-patterns.d.ts.map +1 -1
  289. package/dist/language-patterns.js +59 -4
  290. package/dist/language-patterns.js.map +1 -1
  291. package/dist/patches/index.d.ts +10 -0
  292. package/dist/patches/index.d.ts.map +1 -0
  293. package/dist/patches/index.js +533 -0
  294. package/dist/patches/index.js.map +1 -0
  295. package/dist/reports/public-repo-report.d.ts +3 -1
  296. package/dist/reports/public-repo-report.d.ts.map +1 -1
  297. package/dist/reports/public-repo-report.js +41 -0
  298. package/dist/reports/public-repo-report.js.map +1 -1
  299. package/dist/scoring.d.ts +18 -0
  300. package/dist/scoring.d.ts.map +1 -0
  301. package/dist/scoring.js +178 -0
  302. package/dist/scoring.js.map +1 -0
  303. package/dist/tools/deep-review.d.ts +4 -0
  304. package/dist/tools/deep-review.d.ts.map +1 -0
  305. package/dist/tools/deep-review.js +56 -0
  306. package/dist/tools/deep-review.js.map +1 -0
  307. package/dist/tools/prompts.d.ts +8 -0
  308. package/dist/tools/prompts.d.ts.map +1 -0
  309. package/dist/tools/prompts.js +66 -0
  310. package/dist/tools/prompts.js.map +1 -0
  311. package/dist/tools/register-evaluation.d.ts +7 -0
  312. package/dist/tools/register-evaluation.d.ts.map +1 -0
  313. package/dist/tools/register-evaluation.js +303 -0
  314. package/dist/tools/register-evaluation.js.map +1 -0
  315. package/dist/tools/register-workflow.d.ts +7 -0
  316. package/dist/tools/register-workflow.d.ts.map +1 -0
  317. package/dist/tools/register-workflow.js +395 -0
  318. package/dist/tools/register-workflow.js.map +1 -0
  319. package/dist/tools/register.d.ts +7 -0
  320. package/dist/tools/register.d.ts.map +1 -0
  321. package/dist/tools/register.js +14 -0
  322. package/dist/tools/register.js.map +1 -0
  323. package/dist/tools/schemas.d.ts +26 -0
  324. package/dist/tools/schemas.d.ts.map +1 -0
  325. package/dist/tools/schemas.js +42 -0
  326. package/dist/tools/schemas.js.map +1 -0
  327. package/dist/types.d.ts +53 -2
  328. package/dist/types.d.ts.map +1 -1
  329. package/package.json +42 -3
  330. package/server.json +51 -3
@@ -0,0 +1,533 @@
1
+ /**
2
+ * Auto-Fix Patch Rules
3
+ *
4
+ * Extracted from the evaluators monolith. Contains the PATCH_RULES registry
5
+ * and the enrichWithPatches function that attaches deterministic, single-line
6
+ * code-fix patches to findings.
7
+ */
8
+ /**
9
+ * Auto-fix patch rules: each entry maps a finding pattern to a function that
10
+ * can produce a Patch from the source code line. Only deterministic,
11
+ * single-line replacements are emitted — no guessing.
12
+ */
13
+ const PATCH_RULES = [
14
+ // ── Deprecated APIs ──
15
+ // new Buffer() → Buffer.from()
16
+ {
17
+ match: /deprecated|DEPRECATED_API/i,
18
+ generate: (line) => {
19
+ const m = line.match(/new\s+Buffer\s*\(([^)]*)\)/);
20
+ if (!m)
21
+ return null;
22
+ return { oldText: m[0], newText: `Buffer.from(${m[1]})` };
23
+ },
24
+ },
25
+ // ── Transport Security ──
26
+ // http:// → https:// (non-localhost)
27
+ {
28
+ match: /unencrypted.*http|http.*connection/i,
29
+ generate: (line) => {
30
+ const m = line.match(/(["'])http:\/\/(?!localhost|127\.0\.0\.1|0\.0\.0\.0)([^"']+)\1/);
31
+ if (!m)
32
+ return null;
33
+ return { oldText: `${m[1]}http://${m[2]}${m[1]}`, newText: `${m[1]}https://${m[2]}${m[1]}` };
34
+ },
35
+ },
36
+ // ws:// → wss:// (insecure WebSocket)
37
+ {
38
+ match: /insecure.*websocket|ws:\/\//i,
39
+ generate: (line) => {
40
+ const m = line.match(/(["'])ws:\/\/([^"']+)\1/);
41
+ if (!m)
42
+ return null;
43
+ return { oldText: `${m[1]}ws://${m[2]}${m[1]}`, newText: `${m[1]}wss://${m[2]}${m[1]}` };
44
+ },
45
+ },
46
+ // ── Cryptography ──
47
+ // Math.random() → crypto.randomUUID()
48
+ {
49
+ match: /insecure.*random/i,
50
+ generate: (line) => {
51
+ const m = line.match(/Math\.random\s*\(\s*\)/);
52
+ if (!m)
53
+ return null;
54
+ return { oldText: m[0], newText: "crypto.randomUUID()" };
55
+ },
56
+ },
57
+ // MD5/SHA-1 → SHA-256
58
+ {
59
+ match: /weak.*hash|weak.*crypto/i,
60
+ generate: (line) => {
61
+ const m = line.match(/createHash\s*\(\s*(["'])(md5|sha1|sha-1)\1\s*\)/i);
62
+ if (!m)
63
+ return null;
64
+ return { oldText: m[0], newText: `createHash(${m[1]}sha256${m[1]})` };
65
+ },
66
+ },
67
+ // ECB encryption mode → GCM
68
+ {
69
+ match: /insecure.*ecb|encryption.*mode/i,
70
+ generate: (line) => {
71
+ const m = line.match(/(["'])(aes-\d+-)(ecb)\1/i);
72
+ if (!m)
73
+ return null;
74
+ return { oldText: `${m[1]}${m[2]}${m[3]}${m[1]}`, newText: `${m[1]}${m[2]}gcm${m[1]}` };
75
+ },
76
+ },
77
+ // ── Injection Prevention ──
78
+ // eval() → Function() or comment warning
79
+ {
80
+ match: /dangerous.*eval|eval.*usage/i,
81
+ generate: (line) => {
82
+ const m = line.match(/\beval\s*\(([^)]*)\)/);
83
+ if (!m)
84
+ return null;
85
+ return { oldText: m[0], newText: `new Function(${m[1]})() /* TODO: eliminate dynamic code execution */` };
86
+ },
87
+ },
88
+ // innerHTML → textContent (XSS prevention)
89
+ {
90
+ match: /xss.*innerhtml|innerhtml/i,
91
+ generate: (line) => {
92
+ const m = line.match(/(\.innerHTML)\s*=\s*/);
93
+ if (!m)
94
+ return null;
95
+ return { oldText: m[1], newText: ".textContent" };
96
+ },
97
+ },
98
+ // document.write → safer alternative
99
+ {
100
+ match: /document\.write/i,
101
+ generate: (line) => {
102
+ const m = line.match(/document\.write\s*\(([^)]*)\)/);
103
+ if (!m)
104
+ return null;
105
+ return { oldText: m[0], newText: `document.body.insertAdjacentHTML("beforeend", ${m[1]})` };
106
+ },
107
+ },
108
+ // exec() → execFile() (command injection)
109
+ {
110
+ match: /command.*injection|potential command/i,
111
+ generate: (line) => {
112
+ const m = line.match(/\bexec\s*\(/);
113
+ if (!m)
114
+ return null;
115
+ return { oldText: "exec(", newText: "execFile(" };
116
+ },
117
+ },
118
+ // User input in RegExp → escaped
119
+ {
120
+ match: /redos|regexp.*user/i,
121
+ generate: (line) => {
122
+ const m = line.match(/new\s+RegExp\s*\((\w+)\)/);
123
+ if (!m)
124
+ return null;
125
+ return { oldText: m[0], newText: `new RegExp(${m[1]}.replace(/[.*+?^\${}()|[\\]\\\\]/g, "\\\\$&"))` };
126
+ },
127
+ },
128
+ // ── Equality & Type Safety ──
129
+ // == → === (loose equality)
130
+ {
131
+ match: /loose.*equal|==.*strict/i,
132
+ generate: (line) => {
133
+ const m = line.match(/([^!=<>])={2}(?!=)/);
134
+ if (!m)
135
+ return null;
136
+ return { oldText: m[0], newText: `${m[1]}===` };
137
+ },
138
+ },
139
+ // != → !== (loose inequality)
140
+ {
141
+ match: /loose.*equal/i,
142
+ generate: (line) => {
143
+ const m = line.match(/!={1}(?!=)/);
144
+ if (!m)
145
+ return null;
146
+ return { oldText: m[0], newText: "!==" };
147
+ },
148
+ },
149
+ // throw "string" → throw new Error("string")
150
+ {
151
+ match: /throwing.*string|string.*literal.*instead.*error/i,
152
+ generate: (line) => {
153
+ const m = line.match(/throw\s+(["'])([^"']*)\1/);
154
+ if (!m)
155
+ return null;
156
+ return { oldText: m[0], newText: `throw new Error(${m[1]}${m[2]}${m[1]})` };
157
+ },
158
+ },
159
+ // any → unknown
160
+ {
161
+ match: /weak.*type|unsafe.*type|any.*type/i,
162
+ generate: (line) => {
163
+ const m = line.match(/:\s*any\b/);
164
+ if (!m)
165
+ return null;
166
+ return { oldText: m[0], newText: ": unknown" };
167
+ },
168
+ },
169
+ // ── Variable Declarations ──
170
+ // var → let (maintainability)
171
+ {
172
+ match: /var.*declaration|var.*keyword|var.*instead/i,
173
+ generate: (line) => {
174
+ const m = line.match(/\bvar\s+/);
175
+ if (!m)
176
+ return null;
177
+ return { oldText: m[0], newText: "let " };
178
+ },
179
+ },
180
+ // ── Logging ──
181
+ // console.log → structured logger placeholder
182
+ {
183
+ match: /console.*log.*structured|console.*instead.*structured/i,
184
+ generate: (line) => {
185
+ const m = line.match(/console\.log\s*\(([^)]*)\)/);
186
+ if (!m)
187
+ return null;
188
+ return { oldText: m[0], newText: `logger.info(${m[1]})` };
189
+ },
190
+ },
191
+ // console.error as sole error strategy
192
+ {
193
+ match: /console\.error.*sole/i,
194
+ generate: (line) => {
195
+ const m = line.match(/console\.error\s*\(([^)]*)\)/);
196
+ if (!m)
197
+ return null;
198
+ return { oldText: m[0], newText: `logger.error(${m[1]})` };
199
+ },
200
+ },
201
+ // ── Error Handling ──
202
+ // Empty catch block → catch with error handling comment
203
+ {
204
+ match: /empty.*catch|catch.*swallow/i,
205
+ generate: (line) => {
206
+ const m = line.match(/catch\s*\(\s*\)\s*\{\s*\}/);
207
+ if (!m)
208
+ return null;
209
+ return { oldText: m[0], newText: "catch (error) { /* TODO: handle error appropriately */ }" };
210
+ },
211
+ },
212
+ // catch without error parameter
213
+ {
214
+ match: /catch.*discard|catch.*error.*object/i,
215
+ generate: (line) => {
216
+ const m = line.match(/catch\s*\(\s*\)\s*\{/);
217
+ if (!m)
218
+ return null;
219
+ return { oldText: m[0], newText: "catch (error) {" };
220
+ },
221
+ },
222
+ // ── Security Headers & CORS ──
223
+ // Wildcard CORS → specific origin
224
+ {
225
+ match: /wildcard.*cors|cors.*wildcard|permissive.*cors/i,
226
+ generate: (line) => {
227
+ const m = line.match(/(origin\s*:\s*)(["'])\*\2/);
228
+ if (!m)
229
+ return null;
230
+ return { oldText: m[0], newText: `${m[1]}process.env.ALLOWED_ORIGIN || ${m[2]}*${m[2]}` };
231
+ },
232
+ },
233
+ // CSP unsafe-inline → nonce-based
234
+ {
235
+ match: /content-security-policy|csp.*unsafe/i,
236
+ generate: (line) => {
237
+ const m = line.match(/(["'])unsafe-inline\1/);
238
+ if (!m)
239
+ return null;
240
+ return { oldText: m[0], newText: `${m[1]}nonce-\${nonce}${m[1]}` };
241
+ },
242
+ },
243
+ // ── Cookie Security ──
244
+ // Cookie without secure flag
245
+ {
246
+ match: /cookie.*security|cookie.*secure|cookie.*httponly/i,
247
+ generate: (line) => {
248
+ const m = line.match(/(secure\s*:\s*)false/);
249
+ if (m)
250
+ return { oldText: m[0], newText: `${m[1]}true` };
251
+ const m2 = line.match(/(httpOnly\s*:\s*)false/i);
252
+ if (m2)
253
+ return { oldText: m2[0], newText: `${m2[1]}true` };
254
+ return null;
255
+ },
256
+ },
257
+ // ── Authentication ──
258
+ // JWT without verification
259
+ {
260
+ match: /jwt.*without.*verif|jwt.*decoded/i,
261
+ generate: (line) => {
262
+ const m = line.match(/jwt\.decode\s*\(([^)]*)\)/);
263
+ if (!m)
264
+ return null;
265
+ return { oldText: m[0], newText: `jwt.verify(${m[1]}, process.env.JWT_SECRET)` };
266
+ },
267
+ },
268
+ // TLS verification disabled
269
+ {
270
+ match: /tls.*verif|certificate.*valid.*disabled/i,
271
+ generate: (line) => {
272
+ const m = line.match(/(rejectUnauthorized\s*:\s*)false/);
273
+ if (!m)
274
+ return null;
275
+ return { oldText: m[0], newText: `${m[1]}true` };
276
+ },
277
+ },
278
+ // ── Async/Concurrency ──
279
+ // .then() without .catch()
280
+ {
281
+ match: /promise.*catch|then.*without.*catch/i,
282
+ generate: (line) => {
283
+ const m = line.match(/(\.then\s*\([^)]*\))\s*;/);
284
+ if (!m)
285
+ return null;
286
+ return { oldText: m[0], newText: `${m[1]}.catch((err) => { throw err; });` };
287
+ },
288
+ },
289
+ // Synchronous fs operations → async
290
+ {
291
+ match: /synchronous.*blocking|blocking.*i\/o|sync.*file/i,
292
+ generate: (line) => {
293
+ const m = line.match(/\b(readFileSync|writeFileSync|appendFileSync|existsSync|mkdirSync|readdirSync|statSync|unlinkSync|renameSync|copyFileSync)\b/);
294
+ if (!m)
295
+ return null;
296
+ const asyncName = m[1].replace("Sync", "");
297
+ return { oldText: m[1], newText: `await ${asyncName}` };
298
+ },
299
+ },
300
+ // ── Performance ──
301
+ // new Array() → []
302
+ {
303
+ match: /array.*constructor/i,
304
+ generate: (line) => {
305
+ const m = line.match(/new\s+Array\s*\(\s*\)/);
306
+ if (!m)
307
+ return null;
308
+ return { oldText: m[0], newText: "[]" };
309
+ },
310
+ },
311
+ // new Object() → {}
312
+ {
313
+ match: /object.*constructor/i,
314
+ generate: (line) => {
315
+ const m = line.match(/new\s+Object\s*\(\s*\)/);
316
+ if (!m)
317
+ return null;
318
+ return { oldText: m[0], newText: "{}" };
319
+ },
320
+ },
321
+ // String concatenation in loop → template literal guidance
322
+ {
323
+ match: /string.*concat.*loop/i,
324
+ generate: (line) => {
325
+ const m = line.match(/(\w+)\s*\+=\s*(["'])/);
326
+ if (!m)
327
+ return null;
328
+ return { oldText: m[0], newText: `/* TODO: use array.push() + join() instead */ ${m[0]}` };
329
+ },
330
+ },
331
+ // ── Database ──
332
+ // SELECT * → explicit columns reminder
333
+ {
334
+ match: /select\s*\*/i,
335
+ generate: (line) => {
336
+ const m = line.match(/SELECT\s+\*/i);
337
+ if (!m)
338
+ return null;
339
+ return { oldText: m[0], newText: "SELECT /* TODO: specify columns */" };
340
+ },
341
+ },
342
+ // ── Serialization ──
343
+ // JSON.parse without try/catch → safe wrapper
344
+ {
345
+ match: /unsafe.*deserialization|deserialization/i,
346
+ generate: (line) => {
347
+ const m = line.match(/JSON\.parse\s*\(([^)]*)\)/);
348
+ if (!m)
349
+ return null;
350
+ return { oldText: m[0], newText: `(() => { try { return JSON.parse(${m[1]}); } catch { return null; } })()` };
351
+ },
352
+ },
353
+ // ── Process & Lifecycle ──
354
+ // process.exit() → graceful shutdown
355
+ {
356
+ match: /abrupt.*process|process.*termination/i,
357
+ generate: (line) => {
358
+ const m = line.match(/process\.exit\s*\(([^)]*)\)/);
359
+ if (!m)
360
+ return null;
361
+ return { oldText: m[0], newText: `process.exitCode = ${m[1] || "1"}; /* allow graceful cleanup */` };
362
+ },
363
+ },
364
+ // ── Docker / Container ──
365
+ // :latest tag → pinned version
366
+ {
367
+ match: /latest.*tag|docker.*latest/i,
368
+ generate: (line) => {
369
+ const m = line.match(/(FROM\s+\S+):latest/i);
370
+ if (!m)
371
+ return null;
372
+ return { oldText: `${m[1]}:latest`, newText: `${m[1]}:lts-slim /* TODO: pin to specific version */` };
373
+ },
374
+ },
375
+ // USER root → non-root user
376
+ {
377
+ match: /docker.*root|container.*root/i,
378
+ generate: (line) => {
379
+ const m = line.match(/^USER\s+root\s*$/i);
380
+ if (!m)
381
+ return null;
382
+ return { oldText: m[0], newText: "USER node" };
383
+ },
384
+ },
385
+ // ── CI/CD ──
386
+ // npm install → npm ci
387
+ {
388
+ match: /npm install.*instead.*ci|npm ci/i,
389
+ generate: (line) => {
390
+ const m = line.match(/npm\s+install(?!\s+\S)/);
391
+ if (!m)
392
+ return null;
393
+ return { oldText: m[0], newText: "npm ci" };
394
+ },
395
+ },
396
+ // ── Network ──
397
+ // 0.0.0.0 binding → localhost
398
+ {
399
+ match: /binds.*all.*interfaces|0\.0\.0\.0/i,
400
+ generate: (line) => {
401
+ const m = line.match(/(["'])0\.0\.0\.0\1/);
402
+ if (!m)
403
+ return null;
404
+ return { oldText: m[0], newText: `${m[1]}127.0.0.1${m[1]}` };
405
+ },
406
+ },
407
+ // External calls without timeout
408
+ {
409
+ match: /without.*timeout|network.*timeout/i,
410
+ generate: (line) => {
411
+ const m = line.match(/(fetch\s*\(\s*\w+)\s*\)/);
412
+ if (!m)
413
+ return null;
414
+ return { oldText: m[0], newText: `${m[1]}, { signal: AbortSignal.timeout(30000) })` };
415
+ },
416
+ },
417
+ // ── Accessibility ──
418
+ // outline: none → visible focus style
419
+ {
420
+ match: /focus.*indicator.*removed|outline.*none/i,
421
+ generate: (line) => {
422
+ const m = line.match(/outline\s*:\s*none/);
423
+ if (!m)
424
+ return null;
425
+ return { oldText: m[0], newText: "outline: 2px solid currentColor" };
426
+ },
427
+ },
428
+ // img without alt → add alt placeholder
429
+ {
430
+ match: /image.*alt|missing.*alt/i,
431
+ generate: (line) => {
432
+ const m = line.match(/<img\s+(?!.*alt\s*=)/);
433
+ if (!m)
434
+ return null;
435
+ return { oldText: m[0], newText: `<img alt="" ` };
436
+ },
437
+ },
438
+ // ── Configuration ──
439
+ // Hardcoded connection string → env var
440
+ {
441
+ match: /hardcoded.*connection|connection.*string.*code/i,
442
+ generate: (line) => {
443
+ const m = line.match(/(["'])((?:mongodb|postgres|mysql|redis):\/\/[^"']+)\1/);
444
+ if (!m)
445
+ return null;
446
+ return { oldText: m[0], newText: `process.env.DATABASE_URL || ${m[0]}` };
447
+ },
448
+ },
449
+ // Debug mode enabled
450
+ {
451
+ match: /debug.*mode.*enabled|debug.*enabled/i,
452
+ generate: (line) => {
453
+ const m = line.match(/(debug\s*[:=]\s*)true/i);
454
+ if (!m)
455
+ return null;
456
+ return { oldText: m[0], newText: `${m[1]}process.env.NODE_ENV !== "production"` };
457
+ },
458
+ },
459
+ // ── Session Security ──
460
+ // Insecure session config
461
+ {
462
+ match: /insecure.*session/i,
463
+ generate: (line) => {
464
+ const m = line.match(/(secure\s*:\s*)false/);
465
+ if (m)
466
+ return { oldText: m[0], newText: `${m[1]}process.env.NODE_ENV === "production"` };
467
+ return null;
468
+ },
469
+ },
470
+ // ── Input Validation ──
471
+ // Request body without size limit
472
+ {
473
+ match: /body.*parser.*size|request.*body.*size/i,
474
+ generate: (line) => {
475
+ const m = line.match(/(\.json\s*\(\s*)\)/);
476
+ if (!m)
477
+ return null;
478
+ return { oldText: m[0], newText: `${m[1]}{ limit: "1mb" })` };
479
+ },
480
+ },
481
+ // ── Deprecated Patterns ──
482
+ // __dirname in ESM → import.meta
483
+ {
484
+ match: /__dirname.*esm|__filename.*esm/i,
485
+ generate: (line) => {
486
+ const m = line.match(/__dirname/);
487
+ if (!m)
488
+ return null;
489
+ return { oldText: m[0], newText: `new URL(".", import.meta.url).pathname` };
490
+ },
491
+ },
492
+ // ── XML Security ──
493
+ // XML without XXE protection
494
+ {
495
+ match: /xxe|xml.*protect/i,
496
+ generate: (line) => {
497
+ const m = line.match(/(new\s+(?:DOMParser|XMLParser)\s*\(\s*)\)/);
498
+ if (!m)
499
+ return null;
500
+ return { oldText: m[0], newText: `${m[1]}{ noent: false, dtd: false })` };
501
+ },
502
+ },
503
+ ];
504
+ export function enrichWithPatches(findings, code) {
505
+ const lines = code.split("\n");
506
+ return findings.map((f) => {
507
+ // Skip if patch already present or no line numbers
508
+ if (f.patch || !f.lineNumbers || f.lineNumbers.length === 0)
509
+ return f;
510
+ for (const rule of PATCH_RULES) {
511
+ if (!rule.match.test(f.title) && !rule.match.test(f.ruleId))
512
+ continue;
513
+ // Try the first affected line
514
+ const lineIdx = f.lineNumbers[0] - 1;
515
+ if (lineIdx < 0 || lineIdx >= lines.length)
516
+ continue;
517
+ const result = rule.generate(lines[lineIdx]);
518
+ if (result) {
519
+ return {
520
+ ...f,
521
+ patch: {
522
+ oldText: result.oldText,
523
+ newText: result.newText,
524
+ startLine: f.lineNumbers[0],
525
+ endLine: f.lineNumbers[0],
526
+ },
527
+ };
528
+ }
529
+ }
530
+ return f;
531
+ });
532
+ }
533
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patches/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Verdict } from "../types.js";
1
+ import type { MustFixGateOptions, Verdict } from "../types.js";
2
2
  type CredentialMode = "standard" | "strict";
3
3
  export interface PublicRepoReportOptions {
4
4
  repoUrl: string;
@@ -10,6 +10,7 @@ export interface PublicRepoReportOptions {
10
10
  credentialMode?: CredentialMode;
11
11
  includeAstFindings?: boolean;
12
12
  minConfidence?: number;
13
+ mustFixGate?: MustFixGateOptions;
13
14
  outputPath?: string;
14
15
  keepClone?: boolean;
15
16
  }
@@ -33,6 +34,7 @@ export interface LocalRepoReportOptions {
33
34
  credentialMode?: CredentialMode;
34
35
  includeAstFindings?: boolean;
35
36
  minConfidence?: number;
37
+ mustFixGate?: MustFixGateOptions;
36
38
  outputPath?: string;
37
39
  }
38
40
  export declare function generateRepoReportFromLocalPath(options: LocalRepoReportOptions): Omit<PublicRepoReportResult, "clonePath">;
@@ -1 +1 @@
1
- {"version":3,"file":"public-repo-report.d.ts","sourceRoot":"","sources":["../../src/reports/public-repo-report.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,OAAO,EAAE,MAAM,aAAa,CAAC;AA6B1E,KAAK,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2fD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAiE3C;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAoCjG"}
1
+ {"version":3,"file":"public-repo-report.d.ts","sourceRoot":"","sources":["../../src/reports/public-repo-report.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAA4B,kBAAkB,EAAY,OAAO,EAAE,MAAM,aAAa,CAAC;AAgCnG,KAAK,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyiBD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAsE3C;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAqCjG"}