agent-ide 0.2.0 → 0.4.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 (543) hide show
  1. package/README.md +29 -355
  2. package/dist/application/events/event-bus.d.ts.map +1 -1
  3. package/dist/application/events/event-bus.js.map +1 -1
  4. package/dist/application/index.d.ts +3 -1
  5. package/dist/application/index.d.ts.map +1 -1
  6. package/dist/application/index.js +10 -5
  7. package/dist/application/index.js.map +1 -1
  8. package/dist/application/services/cache-coordinator.service.d.ts.map +1 -1
  9. package/dist/application/services/cache-coordinator.service.js.map +1 -1
  10. package/dist/application/services/error-handler.service.d.ts.map +1 -1
  11. package/dist/application/services/error-handler.service.js.map +1 -1
  12. package/dist/application/services/module-coordinator.service.d.ts +5 -14
  13. package/dist/application/services/module-coordinator.service.d.ts.map +1 -1
  14. package/dist/application/services/module-coordinator.service.js +15 -108
  15. package/dist/application/services/module-coordinator.service.js.map +1 -1
  16. package/dist/application/services/session-manager.service.d.ts.map +1 -1
  17. package/dist/application/services/session-manager.service.js.map +1 -1
  18. package/dist/application/services/workflow-engine.service.d.ts +1 -1
  19. package/dist/application/services/workflow-engine.service.d.ts.map +1 -1
  20. package/dist/application/services/workflow-engine.service.js.map +1 -1
  21. package/dist/application/state/state-manager.d.ts +3 -3
  22. package/dist/application/state/state-manager.d.ts.map +1 -1
  23. package/dist/application/state/state-manager.js +3 -3
  24. package/dist/application/state/state-manager.js.map +1 -1
  25. package/dist/application/types.d.ts.map +1 -1
  26. package/dist/application/workflows/analysis-workflow.d.ts +1 -1
  27. package/dist/application/workflows/analysis-workflow.d.ts.map +1 -1
  28. package/dist/application/workflows/analysis-workflow.js +1 -1
  29. package/dist/application/workflows/analysis-workflow.js.map +1 -1
  30. package/dist/application/workflows/base-workflow.d.ts.map +1 -1
  31. package/dist/application/workflows/base-workflow.js.map +1 -1
  32. package/dist/application/workflows/index.d.ts +2 -2
  33. package/dist/application/workflows/index.d.ts.map +1 -1
  34. package/dist/application/workflows/index.js +2 -2
  35. package/dist/application/workflows/index.js.map +1 -1
  36. package/dist/application/workflows/refactor-workflow.d.ts +1 -1
  37. package/dist/application/workflows/refactor-workflow.d.ts.map +1 -1
  38. package/dist/application/workflows/refactor-workflow.js +1 -1
  39. package/dist/application/workflows/refactor-workflow.js.map +1 -1
  40. package/dist/core/change-signature/change-signature-service.d.ts +94 -0
  41. package/dist/core/change-signature/change-signature-service.d.ts.map +1 -0
  42. package/dist/core/change-signature/change-signature-service.js +544 -0
  43. package/dist/core/change-signature/change-signature-service.js.map +1 -0
  44. package/dist/core/change-signature/index.d.ts +10 -0
  45. package/dist/core/change-signature/index.d.ts.map +1 -0
  46. package/dist/core/change-signature/index.js +12 -0
  47. package/dist/core/change-signature/index.js.map +1 -0
  48. package/dist/core/change-signature/signature-parser.d.ts +76 -0
  49. package/dist/core/change-signature/signature-parser.d.ts.map +1 -0
  50. package/dist/core/change-signature/signature-parser.js +387 -0
  51. package/dist/core/change-signature/signature-parser.js.map +1 -0
  52. package/dist/core/change-signature/types.d.ts +244 -0
  53. package/dist/core/change-signature/types.d.ts.map +1 -0
  54. package/dist/core/change-signature/types.js +73 -0
  55. package/dist/core/change-signature/types.js.map +1 -0
  56. package/dist/core/dependency/cycle-detector.d.ts +1 -1
  57. package/dist/core/dependency/cycle-detector.d.ts.map +1 -1
  58. package/dist/core/dependency/cycle-detector.js +1 -1
  59. package/dist/core/dependency/cycle-detector.js.map +1 -1
  60. package/dist/core/dependency/dependency-analyzer.d.ts +3 -1
  61. package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
  62. package/dist/core/dependency/dependency-analyzer.js +25 -24
  63. package/dist/core/dependency/dependency-analyzer.js.map +1 -1
  64. package/dist/core/dependency/types.d.ts.map +1 -1
  65. package/dist/core/indexing/file-index.d.ts.map +1 -1
  66. package/dist/core/indexing/file-index.js +1 -1
  67. package/dist/core/indexing/file-index.js.map +1 -1
  68. package/dist/core/indexing/index-engine.d.ts +3 -1
  69. package/dist/core/indexing/index-engine.d.ts.map +1 -1
  70. package/dist/core/indexing/index-engine.js +25 -17
  71. package/dist/core/indexing/index-engine.js.map +1 -1
  72. package/dist/core/indexing/index.d.ts +1 -9
  73. package/dist/core/indexing/index.d.ts.map +1 -1
  74. package/dist/core/indexing/index.js +2 -12
  75. package/dist/core/indexing/index.js.map +1 -1
  76. package/dist/core/indexing/symbol-index.d.ts.map +1 -1
  77. package/dist/core/indexing/types.d.ts +12 -0
  78. package/dist/core/indexing/types.d.ts.map +1 -1
  79. package/dist/core/indexing/types.js +12 -0
  80. package/dist/core/indexing/types.js.map +1 -1
  81. package/dist/core/move-file/import-resolver.d.ts.map +1 -0
  82. package/dist/core/{move → move-file}/import-resolver.js +9 -10
  83. package/dist/core/move-file/import-resolver.js.map +1 -0
  84. package/dist/core/{move → move-file}/index.d.ts +2 -2
  85. package/dist/core/move-file/index.d.ts.map +1 -0
  86. package/dist/core/{move → move-file}/index.js +2 -2
  87. package/dist/core/move-file/index.js.map +1 -0
  88. package/dist/core/{move → move-file}/move-service.d.ts +3 -1
  89. package/dist/core/move-file/move-service.d.ts.map +1 -0
  90. package/dist/core/{move → move-file}/move-service.js +66 -84
  91. package/dist/core/move-file/move-service.js.map +1 -0
  92. package/dist/core/move-file/types.d.ts.map +1 -0
  93. package/dist/core/move-file/types.js.map +1 -0
  94. package/dist/core/move-member/index.d.ts +10 -0
  95. package/dist/core/move-member/index.d.ts.map +1 -0
  96. package/dist/core/move-member/index.js +12 -0
  97. package/dist/core/move-member/index.js.map +1 -0
  98. package/dist/core/move-member/member-extractor.d.ts +96 -0
  99. package/dist/core/move-member/member-extractor.d.ts.map +1 -0
  100. package/dist/core/move-member/member-extractor.js +439 -0
  101. package/dist/core/move-member/member-extractor.js.map +1 -0
  102. package/dist/core/move-member/move-member-service.d.ts +87 -0
  103. package/dist/core/move-member/move-member-service.d.ts.map +1 -0
  104. package/dist/core/move-member/move-member-service.js +412 -0
  105. package/dist/core/move-member/move-member-service.js.map +1 -0
  106. package/dist/core/move-member/types.d.ts +182 -0
  107. package/dist/core/move-member/types.d.ts.map +1 -0
  108. package/dist/core/move-member/types.js +75 -0
  109. package/dist/core/move-member/types.js.map +1 -0
  110. package/dist/core/rename/index.d.ts +3 -3
  111. package/dist/core/rename/index.d.ts.map +1 -1
  112. package/dist/core/rename/index.js +5 -3
  113. package/dist/core/rename/index.js.map +1 -1
  114. package/dist/core/rename/reference-updater.d.ts +3 -1
  115. package/dist/core/rename/reference-updater.d.ts.map +1 -1
  116. package/dist/core/rename/reference-updater.js +9 -6
  117. package/dist/core/rename/reference-updater.js.map +1 -1
  118. package/dist/core/rename/rename-engine.d.ts +3 -1
  119. package/dist/core/rename/rename-engine.d.ts.map +1 -1
  120. package/dist/core/rename/rename-engine.js +8 -5
  121. package/dist/core/rename/rename-engine.js.map +1 -1
  122. package/dist/core/rename/scope-analyzer.d.ts.map +1 -1
  123. package/dist/core/rename/scope-analyzer.js.map +1 -1
  124. package/dist/core/rename/types.d.ts.map +1 -1
  125. package/dist/core/shared/call-hierarchy-analyzer.d.ts +102 -0
  126. package/dist/core/shared/call-hierarchy-analyzer.d.ts.map +1 -0
  127. package/dist/core/shared/call-hierarchy-analyzer.js +328 -0
  128. package/dist/core/shared/call-hierarchy-analyzer.js.map +1 -0
  129. package/dist/core/shared/index.d.ts +7 -0
  130. package/dist/core/shared/index.d.ts.map +1 -0
  131. package/dist/core/shared/index.js +7 -0
  132. package/dist/core/shared/index.js.map +1 -0
  133. package/dist/core/shared/symbol-finder.d.ts +154 -0
  134. package/dist/core/shared/symbol-finder.d.ts.map +1 -0
  135. package/dist/core/shared/symbol-finder.js +433 -0
  136. package/dist/core/shared/symbol-finder.js.map +1 -0
  137. package/dist/core/snapshot/index.d.ts +3 -19
  138. package/dist/core/snapshot/index.d.ts.map +1 -1
  139. package/dist/core/snapshot/index.js +2 -23
  140. package/dist/core/snapshot/index.js.map +1 -1
  141. package/dist/core/snapshot/snapshot-generator.d.ts +66 -0
  142. package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -0
  143. package/dist/core/snapshot/snapshot-generator.js +258 -0
  144. package/dist/core/snapshot/snapshot-generator.js.map +1 -0
  145. package/dist/core/snapshot/types.d.ts +41 -190
  146. package/dist/core/snapshot/types.d.ts.map +1 -1
  147. package/dist/core/snapshot/types.js +13 -67
  148. package/dist/core/snapshot/types.js.map +1 -1
  149. package/dist/infrastructure/cache/cache-manager.d.ts +1 -1
  150. package/dist/infrastructure/cache/cache-manager.d.ts.map +1 -1
  151. package/dist/infrastructure/cache/cache-manager.js +1 -1
  152. package/dist/infrastructure/cache/cache-manager.js.map +1 -1
  153. package/dist/infrastructure/cache/memory-cache.js +1 -1
  154. package/dist/infrastructure/cache/memory-cache.js.map +1 -1
  155. package/dist/infrastructure/cache/strategies.d.ts +1 -1
  156. package/dist/infrastructure/cache/strategies.d.ts.map +1 -1
  157. package/dist/infrastructure/cache/strategies.js +1 -1
  158. package/dist/infrastructure/cache/strategies.js.map +1 -1
  159. package/dist/infrastructure/formatters/diff-generator.d.ts +11 -0
  160. package/dist/infrastructure/formatters/diff-generator.d.ts.map +1 -0
  161. package/dist/infrastructure/formatters/diff-generator.js +227 -0
  162. package/dist/infrastructure/formatters/diff-generator.js.map +1 -0
  163. package/dist/infrastructure/formatters/index.d.ts +11 -0
  164. package/dist/infrastructure/formatters/index.d.ts.map +1 -0
  165. package/dist/infrastructure/formatters/index.js +13 -0
  166. package/dist/infrastructure/formatters/index.js.map +1 -0
  167. package/dist/infrastructure/formatters/preview-converter.d.ts +85 -0
  168. package/dist/infrastructure/formatters/preview-converter.d.ts.map +1 -0
  169. package/dist/infrastructure/formatters/preview-converter.js +209 -0
  170. package/dist/infrastructure/formatters/preview-converter.js.map +1 -0
  171. package/dist/infrastructure/formatters/preview-formatter.d.ts +61 -0
  172. package/dist/infrastructure/formatters/preview-formatter.d.ts.map +1 -0
  173. package/dist/infrastructure/formatters/preview-formatter.js +208 -0
  174. package/dist/infrastructure/formatters/preview-formatter.js.map +1 -0
  175. package/dist/infrastructure/formatters/query-formatter.d.ts +83 -0
  176. package/dist/infrastructure/formatters/query-formatter.d.ts.map +1 -0
  177. package/dist/infrastructure/formatters/query-formatter.js +349 -0
  178. package/dist/infrastructure/formatters/query-formatter.js.map +1 -0
  179. package/dist/infrastructure/formatters/query-types.d.ts +238 -0
  180. package/dist/infrastructure/formatters/query-types.d.ts.map +1 -0
  181. package/dist/infrastructure/formatters/query-types.js +29 -0
  182. package/dist/infrastructure/formatters/query-types.js.map +1 -0
  183. package/dist/infrastructure/formatters/types.d.ts +163 -0
  184. package/dist/infrastructure/formatters/types.d.ts.map +1 -0
  185. package/dist/infrastructure/formatters/types.js +27 -0
  186. package/dist/infrastructure/formatters/types.js.map +1 -0
  187. package/dist/infrastructure/parser/base.d.ts +1 -33
  188. package/dist/infrastructure/parser/base.d.ts.map +1 -1
  189. package/dist/infrastructure/parser/base.js +1 -65
  190. package/dist/infrastructure/parser/base.js.map +1 -1
  191. package/dist/infrastructure/parser/index.d.ts +0 -2
  192. package/dist/infrastructure/parser/index.d.ts.map +1 -1
  193. package/dist/infrastructure/parser/index.js +1 -2
  194. package/dist/infrastructure/parser/index.js.map +1 -1
  195. package/dist/infrastructure/parser/interface.d.ts +2 -59
  196. package/dist/infrastructure/parser/interface.d.ts.map +1 -1
  197. package/dist/infrastructure/parser/interface.js +1 -11
  198. package/dist/infrastructure/parser/interface.js.map +1 -1
  199. package/dist/infrastructure/parser/registry.d.ts +1 -1
  200. package/dist/infrastructure/parser/registry.d.ts.map +1 -1
  201. package/dist/infrastructure/parser/registry.js +1 -1
  202. package/dist/infrastructure/parser/registry.js.map +1 -1
  203. package/dist/infrastructure/parser/types.d.ts.map +1 -1
  204. package/dist/infrastructure/storage/file-system.d.ts +2 -1
  205. package/dist/infrastructure/storage/file-system.d.ts.map +1 -1
  206. package/dist/infrastructure/storage/file-system.interface.d.ts +69 -0
  207. package/dist/infrastructure/storage/file-system.interface.d.ts.map +1 -0
  208. package/dist/infrastructure/storage/file-system.interface.js +6 -0
  209. package/dist/infrastructure/storage/file-system.interface.js.map +1 -0
  210. package/dist/infrastructure/storage/file-system.js.map +1 -1
  211. package/dist/infrastructure/storage/index.d.ts +2 -4
  212. package/dist/infrastructure/storage/index.d.ts.map +1 -1
  213. package/dist/infrastructure/storage/index.js +1 -8
  214. package/dist/infrastructure/storage/index.js.map +1 -1
  215. package/dist/infrastructure/storage/mem-file-system.d.ts +44 -0
  216. package/dist/infrastructure/storage/mem-file-system.d.ts.map +1 -0
  217. package/dist/infrastructure/storage/mem-file-system.js +105 -0
  218. package/dist/infrastructure/storage/mem-file-system.js.map +1 -0
  219. package/dist/interfaces/cli/cli.d.ts +13 -94
  220. package/dist/interfaces/cli/cli.d.ts.map +1 -1
  221. package/dist/interfaces/cli/cli.js +47 -2450
  222. package/dist/interfaces/cli/cli.js.map +1 -1
  223. package/dist/interfaces/cli/commands/call-hierarchy.command.d.ts +11 -0
  224. package/dist/interfaces/cli/commands/call-hierarchy.command.d.ts.map +1 -0
  225. package/dist/interfaces/cli/commands/call-hierarchy.command.js +161 -0
  226. package/dist/interfaces/cli/commands/call-hierarchy.command.js.map +1 -0
  227. package/dist/interfaces/cli/commands/change-signature.command.d.ts +11 -0
  228. package/dist/interfaces/cli/commands/change-signature.command.d.ts.map +1 -0
  229. package/dist/interfaces/cli/commands/change-signature.command.js +290 -0
  230. package/dist/interfaces/cli/commands/change-signature.command.js.map +1 -0
  231. package/dist/interfaces/cli/commands/cycles.command.d.ts +11 -0
  232. package/dist/interfaces/cli/commands/cycles.command.d.ts.map +1 -0
  233. package/dist/interfaces/cli/commands/cycles.command.js +87 -0
  234. package/dist/interfaces/cli/commands/cycles.command.js.map +1 -0
  235. package/dist/interfaces/cli/commands/find-references.command.d.ts +11 -0
  236. package/dist/interfaces/cli/commands/find-references.command.d.ts.map +1 -0
  237. package/dist/interfaces/cli/commands/find-references.command.js +122 -0
  238. package/dist/interfaces/cli/commands/find-references.command.js.map +1 -0
  239. package/dist/interfaces/cli/commands/impact.command.d.ts +11 -0
  240. package/dist/interfaces/cli/commands/impact.command.d.ts.map +1 -0
  241. package/dist/interfaces/cli/commands/impact.command.js +98 -0
  242. package/dist/interfaces/cli/commands/impact.command.js.map +1 -0
  243. package/dist/interfaces/cli/commands/index.d.ts +14 -0
  244. package/dist/interfaces/cli/commands/index.d.ts.map +1 -0
  245. package/dist/interfaces/cli/commands/index.js +15 -0
  246. package/dist/interfaces/cli/commands/index.js.map +1 -0
  247. package/dist/interfaces/cli/commands/move-member.command.d.ts +11 -0
  248. package/dist/interfaces/cli/commands/move-member.command.d.ts.map +1 -0
  249. package/dist/interfaces/cli/commands/move-member.command.js +185 -0
  250. package/dist/interfaces/cli/commands/move-member.command.js.map +1 -0
  251. package/dist/interfaces/cli/commands/move.command.d.ts +11 -0
  252. package/dist/interfaces/cli/commands/move.command.d.ts.map +1 -0
  253. package/dist/interfaces/cli/commands/move.command.js +212 -0
  254. package/dist/interfaces/cli/commands/move.command.js.map +1 -0
  255. package/dist/interfaces/cli/commands/rename.command.d.ts +11 -0
  256. package/dist/interfaces/cli/commands/rename.command.d.ts.map +1 -0
  257. package/dist/interfaces/cli/commands/rename.command.js +258 -0
  258. package/dist/interfaces/cli/commands/rename.command.js.map +1 -0
  259. package/dist/interfaces/cli/commands/snapshot.command.d.ts +11 -0
  260. package/dist/interfaces/cli/commands/snapshot.command.d.ts.map +1 -0
  261. package/dist/interfaces/cli/commands/snapshot.command.js +68 -0
  262. package/dist/interfaces/cli/commands/snapshot.command.js.map +1 -0
  263. package/dist/interfaces/cli/commands/types.d.ts +18 -0
  264. package/dist/interfaces/cli/commands/types.d.ts.map +1 -0
  265. package/dist/interfaces/cli/commands/types.js +5 -0
  266. package/dist/interfaces/cli/commands/types.js.map +1 -0
  267. package/dist/interfaces/cli/index.d.ts +1 -1
  268. package/dist/interfaces/cli/index.d.ts.map +1 -1
  269. package/dist/interfaces/cli/index.js +1 -1
  270. package/dist/interfaces/cli/index.js.map +1 -1
  271. package/dist/interfaces/cli/preview-output-handler.d.ts +53 -0
  272. package/dist/interfaces/cli/preview-output-handler.d.ts.map +1 -0
  273. package/dist/interfaces/cli/preview-output-handler.js +73 -0
  274. package/dist/interfaces/cli/preview-output-handler.js.map +1 -0
  275. package/dist/interfaces/cli/unified-output-handler.d.ts +79 -0
  276. package/dist/interfaces/cli/unified-output-handler.d.ts.map +1 -0
  277. package/dist/interfaces/cli/unified-output-handler.js +149 -0
  278. package/dist/interfaces/cli/unified-output-handler.js.map +1 -0
  279. package/dist/plugins/javascript/index.d.ts +2 -2
  280. package/dist/plugins/javascript/index.d.ts.map +1 -1
  281. package/dist/plugins/javascript/index.js +1 -1
  282. package/dist/plugins/javascript/index.js.map +1 -1
  283. package/dist/plugins/javascript/types.d.ts.map +1 -1
  284. package/dist/plugins/javascript/types.js.map +1 -1
  285. package/dist/plugins/python/dependency-analyzer.d.ts +86 -0
  286. package/dist/plugins/python/dependency-analyzer.d.ts.map +1 -0
  287. package/dist/plugins/python/dependency-analyzer.js +252 -0
  288. package/dist/plugins/python/dependency-analyzer.js.map +1 -0
  289. package/dist/plugins/python/index.d.ts +9 -0
  290. package/dist/plugins/python/index.d.ts.map +1 -0
  291. package/dist/plugins/python/index.js +14 -0
  292. package/dist/plugins/python/index.js.map +1 -0
  293. package/dist/plugins/python/parser.d.ts +117 -0
  294. package/dist/plugins/python/parser.d.ts.map +1 -0
  295. package/dist/plugins/python/parser.js +414 -0
  296. package/dist/plugins/python/parser.js.map +1 -0
  297. package/dist/plugins/python/symbol-extractor.d.ts +108 -0
  298. package/dist/plugins/python/symbol-extractor.d.ts.map +1 -0
  299. package/dist/plugins/python/symbol-extractor.js +389 -0
  300. package/dist/plugins/python/symbol-extractor.js.map +1 -0
  301. package/dist/plugins/python/tree-sitter-bridge.d.ts +57 -0
  302. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -0
  303. package/dist/plugins/python/tree-sitter-bridge.js +267 -0
  304. package/dist/plugins/python/tree-sitter-bridge.js.map +1 -0
  305. package/dist/plugins/python/types.d.ts +179 -0
  306. package/dist/plugins/python/types.d.ts.map +1 -0
  307. package/dist/plugins/python/types.js +252 -0
  308. package/dist/plugins/python/types.js.map +1 -0
  309. package/dist/plugins/swift/dependency-analyzer.d.ts +1 -1
  310. package/dist/plugins/swift/dependency-analyzer.d.ts.map +1 -1
  311. package/dist/plugins/swift/dependency-analyzer.js +1 -1
  312. package/dist/plugins/swift/dependency-analyzer.js.map +1 -1
  313. package/dist/plugins/swift/parser.d.ts +4 -0
  314. package/dist/plugins/swift/parser.d.ts.map +1 -1
  315. package/dist/plugins/swift/parser.js +24 -6
  316. package/dist/plugins/swift/parser.js.map +1 -1
  317. package/dist/plugins/swift/symbol-extractor.d.ts +1 -1
  318. package/dist/plugins/swift/symbol-extractor.d.ts.map +1 -1
  319. package/dist/plugins/swift/symbol-extractor.js.map +1 -1
  320. package/dist/plugins/swift/types.d.ts.map +1 -1
  321. package/dist/plugins/swift/types.js.map +1 -1
  322. package/dist/plugins/typescript/parser.d.ts +4 -37
  323. package/dist/plugins/typescript/parser.d.ts.map +1 -1
  324. package/dist/plugins/typescript/parser.js +29 -331
  325. package/dist/plugins/typescript/parser.js.map +1 -1
  326. package/dist/plugins/typescript/symbol-extractor.d.ts.map +1 -1
  327. package/dist/plugins/typescript/symbol-extractor.js +12 -0
  328. package/dist/plugins/typescript/symbol-extractor.js.map +1 -1
  329. package/dist/plugins/typescript/types.d.ts.map +1 -1
  330. package/dist/plugins/typescript/types.js +10 -0
  331. package/dist/plugins/typescript/types.js.map +1 -1
  332. package/dist/shared/errors/config-error.d.ts +1 -1
  333. package/dist/shared/errors/config-error.d.ts.map +1 -1
  334. package/dist/shared/errors/config-error.js +1 -1
  335. package/dist/shared/errors/config-error.js.map +1 -1
  336. package/dist/shared/errors/file-error.d.ts +1 -1
  337. package/dist/shared/errors/file-error.d.ts.map +1 -1
  338. package/dist/shared/errors/file-error.js +1 -1
  339. package/dist/shared/errors/file-error.js.map +1 -1
  340. package/dist/shared/errors/index.d.ts +1 -1
  341. package/dist/shared/errors/index.d.ts.map +1 -1
  342. package/dist/shared/errors/index.js +4 -4
  343. package/dist/shared/errors/index.js.map +1 -1
  344. package/dist/shared/errors/parser-error.d.ts +1 -1
  345. package/dist/shared/errors/parser-error.d.ts.map +1 -1
  346. package/dist/shared/errors/parser-error.js +1 -1
  347. package/dist/shared/errors/parser-error.js.map +1 -1
  348. package/dist/shared/errors/validation-error.d.ts +1 -1
  349. package/dist/shared/errors/validation-error.d.ts.map +1 -1
  350. package/dist/shared/errors/validation-error.js +1 -1
  351. package/dist/shared/errors/validation-error.js.map +1 -1
  352. package/dist/shared/types/ast.d.ts +1 -1
  353. package/dist/shared/types/ast.d.ts.map +1 -1
  354. package/dist/shared/types/ast.js +1 -1
  355. package/dist/shared/types/ast.js.map +1 -1
  356. package/dist/shared/types/symbol.d.ts +3 -2
  357. package/dist/shared/types/symbol.d.ts.map +1 -1
  358. package/dist/shared/types/symbol.js +1 -0
  359. package/dist/shared/types/symbol.js.map +1 -1
  360. package/dist/shared/utils/index.d.ts +5 -5
  361. package/dist/shared/utils/index.d.ts.map +1 -1
  362. package/dist/shared/utils/index.js +5 -5
  363. package/dist/shared/utils/index.js.map +1 -1
  364. package/package.json +9 -8
  365. package/dist/core/analysis/index.d.ts +0 -6
  366. package/dist/core/analysis/index.d.ts.map +0 -1
  367. package/dist/core/analysis/index.js +0 -7
  368. package/dist/core/analysis/index.js.map +0 -1
  369. package/dist/core/analysis/quality-metrics.d.ts +0 -158
  370. package/dist/core/analysis/quality-metrics.d.ts.map +0 -1
  371. package/dist/core/analysis/quality-metrics.js +0 -442
  372. package/dist/core/analysis/quality-metrics.js.map +0 -1
  373. package/dist/core/indexing/file-watcher.d.ts +0 -110
  374. package/dist/core/indexing/file-watcher.d.ts.map +0 -1
  375. package/dist/core/indexing/file-watcher.js +0 -280
  376. package/dist/core/indexing/file-watcher.js.map +0 -1
  377. package/dist/core/move/import-resolver.d.ts.map +0 -1
  378. package/dist/core/move/import-resolver.js.map +0 -1
  379. package/dist/core/move/index.d.ts.map +0 -1
  380. package/dist/core/move/index.js.map +0 -1
  381. package/dist/core/move/move-service.d.ts.map +0 -1
  382. package/dist/core/move/move-service.js.map +0 -1
  383. package/dist/core/move/types.d.ts.map +0 -1
  384. package/dist/core/move/types.js.map +0 -1
  385. package/dist/core/refactor/design-patterns.d.ts +0 -178
  386. package/dist/core/refactor/design-patterns.d.ts.map +0 -1
  387. package/dist/core/refactor/design-patterns.js +0 -656
  388. package/dist/core/refactor/design-patterns.js.map +0 -1
  389. package/dist/core/refactor/extract-function.d.ts +0 -197
  390. package/dist/core/refactor/extract-function.d.ts.map +0 -1
  391. package/dist/core/refactor/extract-function.js +0 -730
  392. package/dist/core/refactor/extract-function.js.map +0 -1
  393. package/dist/core/refactor/index.d.ts +0 -8
  394. package/dist/core/refactor/index.d.ts.map +0 -1
  395. package/dist/core/refactor/index.js +0 -11
  396. package/dist/core/refactor/index.js.map +0 -1
  397. package/dist/core/refactor/inline-function.d.ts +0 -175
  398. package/dist/core/refactor/inline-function.d.ts.map +0 -1
  399. package/dist/core/refactor/inline-function.js +0 -425
  400. package/dist/core/refactor/inline-function.js.map +0 -1
  401. package/dist/core/refactor/swift-extractor.d.ts +0 -98
  402. package/dist/core/refactor/swift-extractor.d.ts.map +0 -1
  403. package/dist/core/refactor/swift-extractor.js +0 -283
  404. package/dist/core/refactor/swift-extractor.js.map +0 -1
  405. package/dist/core/search/engines/text-engine.d.ts +0 -52
  406. package/dist/core/search/engines/text-engine.d.ts.map +0 -1
  407. package/dist/core/search/engines/text-engine.js +0 -376
  408. package/dist/core/search/engines/text-engine.js.map +0 -1
  409. package/dist/core/search/index.d.ts +0 -10
  410. package/dist/core/search/index.d.ts.map +0 -1
  411. package/dist/core/search/index.js +0 -11
  412. package/dist/core/search/index.js.map +0 -1
  413. package/dist/core/search/service.d.ts +0 -105
  414. package/dist/core/search/service.d.ts.map +0 -1
  415. package/dist/core/search/service.js +0 -384
  416. package/dist/core/search/service.js.map +0 -1
  417. package/dist/core/search/types.d.ts +0 -357
  418. package/dist/core/search/types.d.ts.map +0 -1
  419. package/dist/core/search/types.js +0 -47
  420. package/dist/core/search/types.js.map +0 -1
  421. package/dist/core/shit-score/grading.d.ts +0 -39
  422. package/dist/core/shit-score/grading.d.ts.map +0 -1
  423. package/dist/core/shit-score/grading.js +0 -253
  424. package/dist/core/shit-score/grading.js.map +0 -1
  425. package/dist/core/shit-score/index.d.ts +0 -9
  426. package/dist/core/shit-score/index.d.ts.map +0 -1
  427. package/dist/core/shit-score/index.js +0 -8
  428. package/dist/core/shit-score/index.js.map +0 -1
  429. package/dist/core/shit-score/score-calculator.d.ts +0 -75
  430. package/dist/core/shit-score/score-calculator.d.ts.map +0 -1
  431. package/dist/core/shit-score/score-calculator.js +0 -240
  432. package/dist/core/shit-score/score-calculator.js.map +0 -1
  433. package/dist/core/shit-score/shit-score-analyzer.d.ts +0 -84
  434. package/dist/core/shit-score/shit-score-analyzer.d.ts.map +0 -1
  435. package/dist/core/shit-score/shit-score-analyzer.js +0 -595
  436. package/dist/core/shit-score/shit-score-analyzer.js.map +0 -1
  437. package/dist/core/shit-score/types.d.ts +0 -231
  438. package/dist/core/shit-score/types.d.ts.map +0 -1
  439. package/dist/core/shit-score/types.js +0 -73
  440. package/dist/core/shit-score/types.js.map +0 -1
  441. package/dist/core/snapshot/code-compressor.d.ts +0 -39
  442. package/dist/core/snapshot/code-compressor.d.ts.map +0 -1
  443. package/dist/core/snapshot/code-compressor.js +0 -211
  444. package/dist/core/snapshot/code-compressor.js.map +0 -1
  445. package/dist/core/snapshot/config.d.ts +0 -60
  446. package/dist/core/snapshot/config.d.ts.map +0 -1
  447. package/dist/core/snapshot/config.js +0 -136
  448. package/dist/core/snapshot/config.js.map +0 -1
  449. package/dist/core/snapshot/snapshot-differ.d.ts +0 -54
  450. package/dist/core/snapshot/snapshot-differ.d.ts.map +0 -1
  451. package/dist/core/snapshot/snapshot-differ.js +0 -262
  452. package/dist/core/snapshot/snapshot-differ.js.map +0 -1
  453. package/dist/core/snapshot/snapshot-engine.d.ts +0 -94
  454. package/dist/core/snapshot/snapshot-engine.d.ts.map +0 -1
  455. package/dist/core/snapshot/snapshot-engine.js +0 -492
  456. package/dist/core/snapshot/snapshot-engine.js.map +0 -1
  457. package/dist/infrastructure/parser/factory.d.ts +0 -141
  458. package/dist/infrastructure/parser/factory.d.ts.map +0 -1
  459. package/dist/infrastructure/parser/factory.js +0 -306
  460. package/dist/infrastructure/parser/factory.js.map +0 -1
  461. package/dist/infrastructure/storage/file-watcher.d.ts +0 -84
  462. package/dist/infrastructure/storage/file-watcher.d.ts.map +0 -1
  463. package/dist/infrastructure/storage/file-watcher.js +0 -249
  464. package/dist/infrastructure/storage/file-watcher.js.map +0 -1
  465. package/dist/infrastructure/storage/path-utils.d.ts +0 -96
  466. package/dist/infrastructure/storage/path-utils.d.ts.map +0 -1
  467. package/dist/infrastructure/storage/path-utils.js +0 -272
  468. package/dist/infrastructure/storage/path-utils.js.map +0 -1
  469. package/dist/plugins/swift/analyzers/complexity-analyzer.d.ts +0 -41
  470. package/dist/plugins/swift/analyzers/complexity-analyzer.d.ts.map +0 -1
  471. package/dist/plugins/swift/analyzers/complexity-analyzer.js +0 -206
  472. package/dist/plugins/swift/analyzers/complexity-analyzer.js.map +0 -1
  473. package/dist/plugins/swift/analyzers/duplication-detector.d.ts +0 -89
  474. package/dist/plugins/swift/analyzers/duplication-detector.d.ts.map +0 -1
  475. package/dist/plugins/swift/analyzers/duplication-detector.js +0 -271
  476. package/dist/plugins/swift/analyzers/duplication-detector.js.map +0 -1
  477. package/dist/plugins/swift/analyzers/error-handling-checker.d.ts +0 -34
  478. package/dist/plugins/swift/analyzers/error-handling-checker.d.ts.map +0 -1
  479. package/dist/plugins/swift/analyzers/error-handling-checker.js +0 -135
  480. package/dist/plugins/swift/analyzers/error-handling-checker.js.map +0 -1
  481. package/dist/plugins/swift/analyzers/naming-checker.d.ts +0 -47
  482. package/dist/plugins/swift/analyzers/naming-checker.d.ts.map +0 -1
  483. package/dist/plugins/swift/analyzers/naming-checker.js +0 -161
  484. package/dist/plugins/swift/analyzers/naming-checker.js.map +0 -1
  485. package/dist/plugins/swift/analyzers/pattern-detector.d.ts +0 -78
  486. package/dist/plugins/swift/analyzers/pattern-detector.d.ts.map +0 -1
  487. package/dist/plugins/swift/analyzers/pattern-detector.js +0 -247
  488. package/dist/plugins/swift/analyzers/pattern-detector.js.map +0 -1
  489. package/dist/plugins/swift/analyzers/security-checker.d.ts +0 -38
  490. package/dist/plugins/swift/analyzers/security-checker.d.ts.map +0 -1
  491. package/dist/plugins/swift/analyzers/security-checker.js +0 -135
  492. package/dist/plugins/swift/analyzers/security-checker.js.map +0 -1
  493. package/dist/plugins/swift/analyzers/test-coverage-checker.d.ts +0 -26
  494. package/dist/plugins/swift/analyzers/test-coverage-checker.d.ts.map +0 -1
  495. package/dist/plugins/swift/analyzers/test-coverage-checker.js +0 -63
  496. package/dist/plugins/swift/analyzers/test-coverage-checker.js.map +0 -1
  497. package/dist/plugins/swift/analyzers/type-safety-checker.d.ts +0 -41
  498. package/dist/plugins/swift/analyzers/type-safety-checker.d.ts.map +0 -1
  499. package/dist/plugins/swift/analyzers/type-safety-checker.js +0 -121
  500. package/dist/plugins/swift/analyzers/type-safety-checker.js.map +0 -1
  501. package/dist/plugins/swift/analyzers/unused-symbol-detector.d.ts +0 -38
  502. package/dist/plugins/swift/analyzers/unused-symbol-detector.d.ts.map +0 -1
  503. package/dist/plugins/swift/analyzers/unused-symbol-detector.js +0 -211
  504. package/dist/plugins/swift/analyzers/unused-symbol-detector.js.map +0 -1
  505. package/dist/plugins/typescript/analyzers/complexity-analyzer.d.ts +0 -39
  506. package/dist/plugins/typescript/analyzers/complexity-analyzer.d.ts.map +0 -1
  507. package/dist/plugins/typescript/analyzers/complexity-analyzer.js +0 -196
  508. package/dist/plugins/typescript/analyzers/complexity-analyzer.js.map +0 -1
  509. package/dist/plugins/typescript/analyzers/duplication-detector.d.ts +0 -181
  510. package/dist/plugins/typescript/analyzers/duplication-detector.d.ts.map +0 -1
  511. package/dist/plugins/typescript/analyzers/duplication-detector.js +0 -695
  512. package/dist/plugins/typescript/analyzers/duplication-detector.js.map +0 -1
  513. package/dist/plugins/typescript/analyzers/error-handling-checker.d.ts +0 -26
  514. package/dist/plugins/typescript/analyzers/error-handling-checker.d.ts.map +0 -1
  515. package/dist/plugins/typescript/analyzers/error-handling-checker.js +0 -84
  516. package/dist/plugins/typescript/analyzers/error-handling-checker.js.map +0 -1
  517. package/dist/plugins/typescript/analyzers/naming-checker.d.ts +0 -30
  518. package/dist/plugins/typescript/analyzers/naming-checker.d.ts.map +0 -1
  519. package/dist/plugins/typescript/analyzers/naming-checker.js +0 -116
  520. package/dist/plugins/typescript/analyzers/naming-checker.js.map +0 -1
  521. package/dist/plugins/typescript/analyzers/pattern-detector.d.ts +0 -80
  522. package/dist/plugins/typescript/analyzers/pattern-detector.d.ts.map +0 -1
  523. package/dist/plugins/typescript/analyzers/pattern-detector.js +0 -267
  524. package/dist/plugins/typescript/analyzers/pattern-detector.js.map +0 -1
  525. package/dist/plugins/typescript/analyzers/security-checker.d.ts +0 -34
  526. package/dist/plugins/typescript/analyzers/security-checker.d.ts.map +0 -1
  527. package/dist/plugins/typescript/analyzers/security-checker.js +0 -126
  528. package/dist/plugins/typescript/analyzers/security-checker.js.map +0 -1
  529. package/dist/plugins/typescript/analyzers/test-coverage-checker.d.ts +0 -22
  530. package/dist/plugins/typescript/analyzers/test-coverage-checker.d.ts.map +0 -1
  531. package/dist/plugins/typescript/analyzers/test-coverage-checker.js +0 -62
  532. package/dist/plugins/typescript/analyzers/test-coverage-checker.js.map +0 -1
  533. package/dist/plugins/typescript/analyzers/type-safety-checker.d.ts +0 -32
  534. package/dist/plugins/typescript/analyzers/type-safety-checker.d.ts.map +0 -1
  535. package/dist/plugins/typescript/analyzers/type-safety-checker.js +0 -86
  536. package/dist/plugins/typescript/analyzers/type-safety-checker.js.map +0 -1
  537. package/dist/plugins/typescript/analyzers/unused-symbol-detector.d.ts +0 -47
  538. package/dist/plugins/typescript/analyzers/unused-symbol-detector.d.ts.map +0 -1
  539. package/dist/plugins/typescript/analyzers/unused-symbol-detector.js +0 -152
  540. package/dist/plugins/typescript/analyzers/unused-symbol-detector.js.map +0 -1
  541. /package/dist/core/{move → move-file}/import-resolver.d.ts +0 -0
  542. /package/dist/core/{move → move-file}/types.d.ts +0 -0
  543. /package/dist/core/{move → move-file}/types.js +0 -0
@@ -1,253 +0,0 @@
1
- /**
2
- * ShitScore 評級系統
3
- * 負責評級判定和改進建議生成
4
- */
5
- import { GradeLevel as GradeLevelEnum, SeverityLevel as SeverityLevelEnum } from './types.js';
6
- /**
7
- * 評級表
8
- */
9
- export const gradeTable = [
10
- {
11
- level: GradeLevelEnum.A,
12
- emoji: '✅',
13
- message: '程式碼品質優秀,保持下去',
14
- minScore: 0,
15
- maxScore: 29,
16
- },
17
- {
18
- level: GradeLevelEnum.B,
19
- emoji: '⚠️',
20
- message: '程式碼品質良好,有少量改進空間',
21
- minScore: 30,
22
- maxScore: 49,
23
- },
24
- {
25
- level: GradeLevelEnum.C,
26
- emoji: '💩',
27
- message: '程式碼品質普通,需要重構',
28
- minScore: 50,
29
- maxScore: 69,
30
- },
31
- {
32
- level: GradeLevelEnum.D,
33
- emoji: '💩💩',
34
- message: '程式碼品質差勁,強烈建議重構',
35
- minScore: 70,
36
- maxScore: 84,
37
- },
38
- {
39
- level: GradeLevelEnum.F,
40
- emoji: '💩💩💩',
41
- message: '程式碼品質極差,建議整個重寫',
42
- minScore: 85,
43
- maxScore: 100,
44
- },
45
- ];
46
- /**
47
- * 評級系統
48
- */
49
- export class Grading {
50
- /**
51
- * 取得評級
52
- */
53
- getGrade(score) {
54
- for (const grade of gradeTable) {
55
- if (score >= grade.minScore && score <= grade.maxScore) {
56
- return grade;
57
- }
58
- }
59
- throw new Error(`Invalid score: ${score}. Score must be between 0 and 100.`);
60
- }
61
- /**
62
- * 生成改進建議(四個維度)
63
- */
64
- generateRecommendations(complexity, maintainability, architecture, qualityAssurance) {
65
- const recommendations = [];
66
- recommendations.push(...this.generateComplexityRecommendations(complexity));
67
- recommendations.push(...this.generateMaintainabilityRecommendations(maintainability));
68
- recommendations.push(...this.generateArchitectureRecommendations(architecture));
69
- recommendations.push(...this.generateQualityAssuranceRecommendations(qualityAssurance));
70
- return recommendations.sort((a, b) => {
71
- const priorityOrder = {
72
- [SeverityLevelEnum.Critical]: 4,
73
- [SeverityLevelEnum.High]: 3,
74
- [SeverityLevelEnum.Medium]: 2,
75
- [SeverityLevelEnum.Low]: 1,
76
- };
77
- return priorityOrder[b.priority] - priorityOrder[a.priority];
78
- });
79
- }
80
- /**
81
- * 生成複雜度建議
82
- */
83
- generateComplexityRecommendations(dimension) {
84
- const recommendations = [];
85
- if (dimension.breakdown.highComplexity > 30) {
86
- recommendations.push({
87
- priority: dimension.breakdown.highComplexity > 50 ? SeverityLevelEnum.Critical : SeverityLevelEnum.High,
88
- category: '複雜度',
89
- suggestion: `有 ${dimension.breakdown.highComplexity.toFixed(0)}% 的函式複雜度過高(>10)。建議重構複雜函式,拆分成小函式。`,
90
- affectedFiles: [],
91
- estimatedImpact: Math.round(dimension.breakdown.highComplexity * 0.4 * 0.35),
92
- });
93
- }
94
- if (dimension.breakdown.longFunction > 30) {
95
- recommendations.push({
96
- priority: dimension.breakdown.longFunction > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
97
- category: '複雜度',
98
- suggestion: `有 ${dimension.breakdown.longFunction.toFixed(0)}% 的函式過長(>100 行)。建議拆分長函式,提高可讀性。`,
99
- affectedFiles: [],
100
- estimatedImpact: Math.round(dimension.breakdown.longFunction * 0.25 * 0.35),
101
- });
102
- }
103
- if (dimension.breakdown.deepNesting > 30) {
104
- recommendations.push({
105
- priority: SeverityLevelEnum.Medium,
106
- category: '複雜度',
107
- suggestion: `有 ${dimension.breakdown.deepNesting.toFixed(0)}% 的函式巢狀過深(>4 層)。建議使用 early return 減少巢狀層級。`,
108
- affectedFiles: [],
109
- estimatedImpact: Math.round(dimension.breakdown.deepNesting * 0.2 * 0.35),
110
- });
111
- }
112
- if (dimension.breakdown.tooManyParams > 30) {
113
- recommendations.push({
114
- priority: SeverityLevelEnum.Low,
115
- category: '複雜度',
116
- suggestion: `有 ${dimension.breakdown.tooManyParams.toFixed(0)}% 的函式參數過多(>5 個)。建議使用物件參數或重構函式。`,
117
- affectedFiles: [],
118
- estimatedImpact: Math.round(dimension.breakdown.tooManyParams * 0.15 * 0.35),
119
- });
120
- }
121
- return recommendations;
122
- }
123
- /**
124
- * 生成維護性建議
125
- */
126
- generateMaintainabilityRecommendations(dimension) {
127
- const recommendations = [];
128
- if (dimension.breakdown.deadCode > 30) {
129
- recommendations.push({
130
- priority: dimension.breakdown.deadCode > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
131
- category: '維護性',
132
- suggestion: `有 ${dimension.breakdown.deadCode.toFixed(0)}% 的檔案包含死代碼(未使用的變數/函式)。建議刪除所有死代碼。`,
133
- affectedFiles: [],
134
- estimatedImpact: Math.round(dimension.breakdown.deadCode * 0.5 * 0.35),
135
- });
136
- }
137
- if (dimension.breakdown.largeFile > 30) {
138
- recommendations.push({
139
- priority: dimension.breakdown.largeFile > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
140
- category: '維護性',
141
- suggestion: `有 ${dimension.breakdown.largeFile.toFixed(0)}% 的檔案過大(>500 行)。建議拆分大檔案,提高模組化程度。`,
142
- affectedFiles: [],
143
- estimatedImpact: Math.round(dimension.breakdown.largeFile * 0.3 * 0.35),
144
- });
145
- }
146
- if (dimension.breakdown.duplicateCode > 30) {
147
- recommendations.push({
148
- priority: SeverityLevelEnum.Medium,
149
- category: '維護性',
150
- suggestion: `有 ${dimension.breakdown.duplicateCode.toFixed(0)}% 的檔案包含重複代碼。建議提取共用邏輯到共用模組。`,
151
- affectedFiles: [],
152
- estimatedImpact: Math.round(dimension.breakdown.duplicateCode * 0.2 * 0.35),
153
- });
154
- }
155
- if (dimension.breakdown.patternDuplication !== undefined && dimension.breakdown.patternDuplication > 20) {
156
- recommendations.push({
157
- priority: dimension.breakdown.patternDuplication > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
158
- category: '維護性',
159
- suggestion: `檢測到 ${dimension.breakdown.patternDuplication.toFixed(0)}% 的模式重複(try-catch、logger、建構函式 DI、環境變數存取等)。建議使用裝飾器、Interceptor 或 ConfigService 統一管理。`,
160
- affectedFiles: [],
161
- estimatedImpact: Math.round(dimension.breakdown.patternDuplication * 0.25 * 0.35),
162
- });
163
- }
164
- return recommendations;
165
- }
166
- /**
167
- * 生成架構建議
168
- */
169
- generateArchitectureRecommendations(dimension) {
170
- const recommendations = [];
171
- if (dimension.breakdown.circularDependency > 30) {
172
- recommendations.push({
173
- priority: SeverityLevelEnum.Critical,
174
- category: '架構',
175
- suggestion: `檢測到循環依賴(評分 ${dimension.breakdown.circularDependency.toFixed(0)})。循環依賴會導致模組耦合度高,建議立即重構。`,
176
- affectedFiles: [],
177
- estimatedImpact: Math.round(dimension.breakdown.circularDependency * 0.6 * 0.3),
178
- });
179
- }
180
- if (dimension.breakdown.orphanFile > 30) {
181
- recommendations.push({
182
- priority: SeverityLevelEnum.Low,
183
- category: '架構',
184
- suggestion: `有 ${dimension.breakdown.orphanFile.toFixed(0)}% 的檔案是孤立檔案(無依賴也無被依賴)。檢查是否為遺留代碼。`,
185
- affectedFiles: [],
186
- estimatedImpact: Math.round(dimension.breakdown.orphanFile * 0.25 * 0.3),
187
- });
188
- }
189
- if (dimension.breakdown.highCoupling > 30) {
190
- recommendations.push({
191
- priority: SeverityLevelEnum.Medium,
192
- category: '架構',
193
- suggestion: `有 ${dimension.breakdown.highCoupling.toFixed(0)}% 的檔案耦合度過高(>10 個依賴)。建議降低模組間的耦合度。`,
194
- affectedFiles: [],
195
- estimatedImpact: Math.round(dimension.breakdown.highCoupling * 0.15 * 0.3),
196
- });
197
- }
198
- return recommendations;
199
- }
200
- /**
201
- * 生成品質保證建議
202
- */
203
- generateQualityAssuranceRecommendations(dimension) {
204
- const recommendations = [];
205
- if (dimension.breakdown.typeSafety > 30) {
206
- recommendations.push({
207
- priority: dimension.breakdown.typeSafety > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
208
- category: '品質保證',
209
- suggestion: `型別安全問題評分 ${dimension.breakdown.typeSafety.toFixed(0)}。檢測到 any 型別、@ts-ignore 或 as any 使用。建議修正型別定義,啟用 strict 模式。`,
210
- affectedFiles: [],
211
- estimatedImpact: Math.round(dimension.breakdown.typeSafety * 0.3 * 0.2),
212
- });
213
- }
214
- if (dimension.breakdown.testCoverage > 30) {
215
- recommendations.push({
216
- priority: dimension.breakdown.testCoverage > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
217
- category: '品質保證',
218
- suggestion: `測試覆蓋率不足(評分 ${dimension.breakdown.testCoverage.toFixed(0)})。建議增加單元測試和整合測試,提高程式碼可靠性。`,
219
- affectedFiles: [],
220
- estimatedImpact: Math.round(dimension.breakdown.testCoverage * 0.25 * 0.2),
221
- });
222
- }
223
- if (dimension.breakdown.errorHandling > 30) {
224
- recommendations.push({
225
- priority: dimension.breakdown.errorHandling > 50 ? SeverityLevelEnum.High : SeverityLevelEnum.Medium,
226
- category: '品質保證',
227
- suggestion: `錯誤處理問題評分 ${dimension.breakdown.errorHandling.toFixed(0)}。檢測到空 catch 區塊或靜默吞錯。建議加上適當的錯誤處理和日誌記錄。`,
228
- affectedFiles: [],
229
- estimatedImpact: Math.round(dimension.breakdown.errorHandling * 0.2 * 0.2),
230
- });
231
- }
232
- if (dimension.breakdown.naming > 30) {
233
- recommendations.push({
234
- priority: SeverityLevelEnum.Low,
235
- category: '品質保證',
236
- suggestion: `命名規範問題評分 ${dimension.breakdown.naming.toFixed(0)}。檢測到底線開頭變數或不符合規範的檔案命名。建議遵循專案命名規範。`,
237
- affectedFiles: [],
238
- estimatedImpact: Math.round(dimension.breakdown.naming * 0.15 * 0.2),
239
- });
240
- }
241
- if (dimension.breakdown.security > 30) {
242
- recommendations.push({
243
- priority: dimension.breakdown.security > 50 ? SeverityLevelEnum.Critical : SeverityLevelEnum.High,
244
- category: '品質保證',
245
- suggestion: `安全性問題評分 ${dimension.breakdown.security.toFixed(0)}。檢測到硬編碼密碼、eval 使用或 innerHTML 賦值。建議立即修正安全漏洞。`,
246
- affectedFiles: [],
247
- estimatedImpact: Math.round(dimension.breakdown.security * 0.1 * 0.2),
248
- });
249
- }
250
- return recommendations;
251
- }
252
- }
253
- //# sourceMappingURL=grading.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grading.js","sourceRoot":"","sources":["../../../src/core/shit-score/grading.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * ShitScore 模組統一匯出
3
- */
4
- export { ShitScoreAnalyzer, ShitScoreError } from './shit-score-analyzer.js';
5
- export { ScoreCalculator } from './score-calculator.js';
6
- export { Grading, gradeTable } from './grading.js';
7
- export type { ShitScoreResult, ShitScoreOptions, GradeInfo, GradeLevel, SeverityLevel, ShitType, DimensionScore, ShitItem, ShitStats, Recommendation, ComplexityData, MaintainabilityData, ArchitectureData, } from './types.js';
8
- export { GradeLevel as GradeLevelEnum, SeverityLevel as SeverityLevelEnum, ShitType as ShitTypeEnum, createDefaultShitScoreOptions, isShitScoreResult, } from './types.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/shit-score/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,IAAI,cAAc,EAC5B,aAAa,IAAI,iBAAiB,EAClC,QAAQ,IAAI,YAAY,EACxB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * ShitScore 模組統一匯出
3
- */
4
- export { ShitScoreAnalyzer, ShitScoreError } from './shit-score-analyzer.js';
5
- export { ScoreCalculator } from './score-calculator.js';
6
- export { Grading, gradeTable } from './grading.js';
7
- export { GradeLevel as GradeLevelEnum, SeverityLevel as SeverityLevelEnum, ShitType as ShitTypeEnum, createDefaultShitScoreOptions, isShitScoreResult, } from './types.js';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/shit-score/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAkBnD,OAAO,EACL,UAAU,IAAI,cAAc,EAC5B,aAAa,IAAI,iBAAiB,EAClC,QAAQ,IAAI,YAAY,EACxB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -1,75 +0,0 @@
1
- /**
2
- * ShitScore 評分計算器
3
- * 負責計算三大維度的垃圾度評分並計算總分
4
- */
5
- import type { DimensionScore, ComplexityData, MaintainabilityData, ArchitectureData, QualityAssuranceData } from './types.js';
6
- /**
7
- * 評分計算器
8
- */
9
- export declare class ScoreCalculator {
10
- /**
11
- * 計算總分(四個維度)
12
- */
13
- calculate(complexity: ComplexityData, maintainability: MaintainabilityData, architecture: ArchitectureData, qualityAssurance: QualityAssuranceData): {
14
- readonly complexityScore: DimensionScore;
15
- readonly maintainabilityScore: DimensionScore;
16
- readonly architectureScore: DimensionScore;
17
- readonly qualityAssuranceScore: DimensionScore;
18
- readonly totalScore: number;
19
- };
20
- /**
21
- * 計算複雜度垃圾(30%)
22
- * complexityShit = (
23
- * highComplexityRatio * 0.4 +
24
- * longFunctionRatio * 0.25 +
25
- * deepNestingRatio * 0.2 +
26
- * tooManyParamsRatio * 0.15
27
- * ) * 100
28
- */
29
- calculateComplexityShit(data: ComplexityData): DimensionScore;
30
- /**
31
- * 計算維護性垃圾(30%)
32
- * maintainabilityShit = (
33
- * deadCodeRatio * 0.35 +
34
- * largeFileRatio * 0.2 +
35
- * duplicateCodeRatio * 0.2 +
36
- * patternDuplicationRatio * 0.25
37
- * ) * 100
38
- */
39
- calculateMaintainabilityShit(data: MaintainabilityData): DimensionScore;
40
- /**
41
- * 計算架構垃圾(30%)
42
- * architectureShit = (
43
- * min(cyclicDependencies * 10, 100) * 0.6 +
44
- * orphanFileRatio * 0.25 +
45
- * highCouplingRatio * 0.15
46
- * )
47
- */
48
- calculateArchitectureShit(data: ArchitectureData): DimensionScore;
49
- /**
50
- * 計算品質保證垃圾(20%)
51
- * qualityAssuranceShit = (
52
- * typeSafetyScore * 0.3 +
53
- * testCoverageScore * 0.25 +
54
- * errorHandlingScore * 0.2 +
55
- * namingScore * 0.15 +
56
- * securityScore * 0.1
57
- * ) * 100
58
- */
59
- calculateQualityAssuranceShit(data: QualityAssuranceData): DimensionScore;
60
- /**
61
- * 計算總分
62
- * shitScore = (
63
- * complexityShit * 0.3 +
64
- * maintainabilityShit * 0.3 +
65
- * architectureShit * 0.3 +
66
- * qualityAssuranceShit * 0.2
67
- * )
68
- */
69
- calculateTotalScore(complexity: DimensionScore, maintainability: DimensionScore, architecture: DimensionScore, qualityAssurance: DimensionScore): number;
70
- /**
71
- * 四捨五入到小數點後 2 位
72
- */
73
- private round;
74
- }
75
- //# sourceMappingURL=score-calculator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"score-calculator.d.ts","sourceRoot":"","sources":["../../../src/core/shit-score/score-calculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,GAAG;QACnJ,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC;QACzC,QAAQ,CAAC,oBAAoB,EAAE,cAAc,CAAC;QAC9C,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC;QAC3C,QAAQ,CAAC,qBAAqB,EAAE,cAAc,CAAC;QAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B;IAgBD;;;;;;;;OAQG;IACH,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc;IA6C7D;;;;;;;;OAQG;IACH,4BAA4B,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc;IAoDvE;;;;;;;OAOG;IACH,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc;IAsCjE;;;;;;;;;OASG;IACH,6BAA6B,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc;IAyDzE;;;;;;;;OAQG;IACH,mBAAmB,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,GAAG,MAAM;IAMxJ;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -1,240 +0,0 @@
1
- /**
2
- * ShitScore 評分計算器
3
- * 負責計算三大維度的垃圾度評分並計算總分
4
- */
5
- /**
6
- * 評分計算器
7
- */
8
- export class ScoreCalculator {
9
- /**
10
- * 計算總分(四個維度)
11
- */
12
- calculate(complexity, maintainability, architecture, qualityAssurance) {
13
- const complexityScore = this.calculateComplexityShit(complexity);
14
- const maintainabilityScore = this.calculateMaintainabilityShit(maintainability);
15
- const architectureScore = this.calculateArchitectureShit(architecture);
16
- const qualityAssuranceScore = this.calculateQualityAssuranceShit(qualityAssurance);
17
- const totalScore = this.calculateTotalScore(complexityScore, maintainabilityScore, architectureScore, qualityAssuranceScore);
18
- return {
19
- complexityScore,
20
- maintainabilityScore,
21
- architectureScore,
22
- qualityAssuranceScore,
23
- totalScore,
24
- };
25
- }
26
- /**
27
- * 計算複雜度垃圾(30%)
28
- * complexityShit = (
29
- * highComplexityRatio * 0.4 +
30
- * longFunctionRatio * 0.25 +
31
- * deepNestingRatio * 0.2 +
32
- * tooManyParamsRatio * 0.15
33
- * ) * 100
34
- */
35
- calculateComplexityShit(data) {
36
- const total = data.totalFunctions;
37
- if (total === 0) {
38
- return {
39
- dimension: 'complexity',
40
- score: 0,
41
- weight: 0.3,
42
- weightedScore: 0,
43
- breakdown: {
44
- highComplexity: 0,
45
- longFunction: 0,
46
- deepNesting: 0,
47
- tooManyParams: 0,
48
- },
49
- };
50
- }
51
- const highComplexityRatio = data.highComplexityCount / total;
52
- const longFunctionRatio = data.longFunctionCount / total;
53
- const deepNestingRatio = data.deepNestingCount / total;
54
- const tooManyParamsRatio = data.tooManyParamsCount / total;
55
- const score = this.round((highComplexityRatio * 0.4 +
56
- longFunctionRatio * 0.25 +
57
- deepNestingRatio * 0.2 +
58
- tooManyParamsRatio * 0.15) *
59
- 100);
60
- return {
61
- dimension: 'complexity',
62
- score,
63
- weight: 0.3,
64
- weightedScore: this.round(score * 0.3),
65
- breakdown: {
66
- highComplexity: this.round(highComplexityRatio * 100),
67
- longFunction: this.round(longFunctionRatio * 100),
68
- deepNesting: this.round(deepNestingRatio * 100),
69
- tooManyParams: this.round(tooManyParamsRatio * 100),
70
- },
71
- };
72
- }
73
- /**
74
- * 計算維護性垃圾(30%)
75
- * maintainabilityShit = (
76
- * deadCodeRatio * 0.35 +
77
- * largeFileRatio * 0.2 +
78
- * duplicateCodeRatio * 0.2 +
79
- * patternDuplicationRatio * 0.25
80
- * ) * 100
81
- */
82
- calculateMaintainabilityShit(data) {
83
- const total = data.totalFiles;
84
- if (total === 0) {
85
- return {
86
- dimension: 'maintainability',
87
- score: 0,
88
- weight: 0.3,
89
- weightedScore: 0,
90
- breakdown: {
91
- deadCode: 0,
92
- largeFile: 0,
93
- duplicateCode: 0,
94
- patternDuplication: 0,
95
- },
96
- };
97
- }
98
- // 原始比例(可能超過 100%,用於 breakdown 顯示)
99
- const deadCodeRatio = data.deadCodeCount / total;
100
- const largeFileRatio = data.largeFileCount / total;
101
- const duplicateCodeRatio = data.duplicateCodeCount / total;
102
- const patternDuplicationRatio = data.patternDuplicationCount / total;
103
- // 限制比例上限為 100%,用於計算分數
104
- const deadCodeRatioCapped = Math.min(deadCodeRatio, 1);
105
- const largeFileRatioCapped = Math.min(largeFileRatio, 1);
106
- const duplicateCodeRatioCapped = Math.min(duplicateCodeRatio, 1);
107
- const patternDuplicationRatioCapped = Math.min(patternDuplicationRatio, 1);
108
- const score = this.round((deadCodeRatioCapped * 0.35 +
109
- largeFileRatioCapped * 0.2 +
110
- duplicateCodeRatioCapped * 0.2 +
111
- patternDuplicationRatioCapped * 0.25) *
112
- 100);
113
- return {
114
- dimension: 'maintainability',
115
- score,
116
- weight: 0.3,
117
- weightedScore: this.round(score * 0.3),
118
- breakdown: {
119
- deadCode: this.round(deadCodeRatio * 100),
120
- largeFile: this.round(largeFileRatio * 100),
121
- duplicateCode: this.round(duplicateCodeRatio * 100),
122
- patternDuplication: this.round(patternDuplicationRatio * 100),
123
- },
124
- };
125
- }
126
- /**
127
- * 計算架構垃圾(30%)
128
- * architectureShit = (
129
- * min(cyclicDependencies * 10, 100) * 0.6 +
130
- * orphanFileRatio * 0.25 +
131
- * highCouplingRatio * 0.15
132
- * )
133
- */
134
- calculateArchitectureShit(data) {
135
- const total = data.totalFiles;
136
- if (total === 0) {
137
- return {
138
- dimension: 'architecture',
139
- score: 0,
140
- weight: 0.3,
141
- weightedScore: 0,
142
- breakdown: {
143
- circularDependency: 0,
144
- orphanFile: 0,
145
- highCoupling: 0,
146
- },
147
- };
148
- }
149
- const cyclicScore = Math.min(data.circularDependencyCount * 10, 100);
150
- const orphanFileRatio = data.orphanFileCount / total;
151
- const highCouplingRatio = data.highCouplingCount / total;
152
- const score = this.round(cyclicScore * 0.6 + orphanFileRatio * 0.25 * 100 + highCouplingRatio * 0.15 * 100);
153
- return {
154
- dimension: 'architecture',
155
- score,
156
- weight: 0.3,
157
- weightedScore: this.round(score * 0.3),
158
- breakdown: {
159
- circularDependency: cyclicScore,
160
- orphanFile: this.round(orphanFileRatio * 100),
161
- highCoupling: this.round(highCouplingRatio * 100),
162
- },
163
- };
164
- }
165
- /**
166
- * 計算品質保證垃圾(20%)
167
- * qualityAssuranceShit = (
168
- * typeSafetyScore * 0.3 +
169
- * testCoverageScore * 0.25 +
170
- * errorHandlingScore * 0.2 +
171
- * namingScore * 0.15 +
172
- * securityScore * 0.1
173
- * ) * 100
174
- */
175
- calculateQualityAssuranceShit(data) {
176
- const total = data.totalFiles;
177
- if (total === 0) {
178
- return {
179
- dimension: 'qualityAssurance',
180
- score: 0,
181
- weight: 0.2,
182
- weightedScore: 0,
183
- breakdown: {
184
- typeSafety: 0,
185
- testCoverage: 0,
186
- errorHandling: 0,
187
- naming: 0,
188
- security: 0,
189
- },
190
- };
191
- }
192
- // 1. 型別安全評分(30%)
193
- const typeSafetyScore = Math.min((data.typeSafetyIssues / total) * 100, 100);
194
- // 2. 測試覆蓋率評分(25%)- 反向評分
195
- const testCoverageScore = (1 - data.testCoverageRatio) * 100;
196
- // 3. 錯誤處理評分(20%)
197
- const errorHandlingScore = Math.min((data.errorHandlingIssues / total) * 100, 100);
198
- // 4. 命名規範評分(15%)
199
- const namingScore = Math.min((data.namingIssues / total) * 100, 100);
200
- // 5. 安全性評分(10%)
201
- const securityScore = Math.min((data.securityIssues / total) * 100, 100);
202
- const score = this.round(typeSafetyScore * 0.3 +
203
- testCoverageScore * 0.25 +
204
- errorHandlingScore * 0.2 +
205
- namingScore * 0.15 +
206
- securityScore * 0.1);
207
- return {
208
- dimension: 'qualityAssurance',
209
- score,
210
- weight: 0.2,
211
- weightedScore: this.round(score * 0.2),
212
- breakdown: {
213
- typeSafety: this.round(typeSafetyScore),
214
- testCoverage: this.round(testCoverageScore),
215
- errorHandling: this.round(errorHandlingScore),
216
- naming: this.round(namingScore),
217
- security: this.round(securityScore),
218
- },
219
- };
220
- }
221
- /**
222
- * 計算總分
223
- * shitScore = (
224
- * complexityShit * 0.3 +
225
- * maintainabilityShit * 0.3 +
226
- * architectureShit * 0.3 +
227
- * qualityAssuranceShit * 0.2
228
- * )
229
- */
230
- calculateTotalScore(complexity, maintainability, architecture, qualityAssurance) {
231
- return this.round(complexity.weightedScore + maintainability.weightedScore + architecture.weightedScore + qualityAssurance.weightedScore);
232
- }
233
- /**
234
- * 四捨五入到小數點後 2 位
235
- */
236
- round(value) {
237
- return Math.round(value * 100) / 100;
238
- }
239
- }
240
- //# sourceMappingURL=score-calculator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"score-calculator.js","sourceRoot":"","sources":["../../../src/core/shit-score/score-calculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,SAAS,CAAC,UAA0B,EAAE,eAAoC,EAAE,YAA8B,EAAE,gBAAsC;QAOhJ,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QAChF,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACvE,MAAM,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;QAE7H,OAAO;YACL,eAAe;YACf,oBAAoB;YACpB,iBAAiB;YACjB,qBAAqB;YACrB,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,uBAAuB,CAAC,IAAoB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAElC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG;gBACX,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE;oBACT,cAAc,EAAE,CAAC;oBACjB,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,CAAC;oBACd,aAAa,EAAE,CAAC;iBACjB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAE3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,CAAC,mBAAmB,GAAG,GAAG;YACxB,iBAAiB,GAAG,IAAI;YACxB,gBAAgB,GAAG,GAAG;YACtB,kBAAkB,GAAG,IAAI,CAAC;YAC1B,GAAG,CACN,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,YAAY;YACvB,KAAK;YACL,MAAM,EAAE,GAAG;YACX,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACtC,SAAS,EAAE;gBACT,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;gBACrD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;gBACjD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;gBAC/C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;aACpD;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,4BAA4B,CAAC,IAAyB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAE9B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,iBAAiB;gBAC5B,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG;gBACX,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE;oBACT,QAAQ,EAAE,CAAC;oBACX,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE,CAAC;oBAChB,kBAAkB,EAAE,CAAC;iBACtB;aACF,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAC3D,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QAErE,sBAAsB;QACtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,6BAA6B,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,CAAC,mBAAmB,GAAG,IAAI;YACzB,oBAAoB,GAAG,GAAG;YAC1B,wBAAwB,GAAG,GAAG;YAC9B,6BAA6B,GAAG,IAAI,CAAC;YACrC,GAAG,CACN,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,iBAAiB;YAC5B,KAAK;YACL,MAAM,EAAE,GAAG;YACX,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACtC,SAAS,EAAE;gBACT,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;gBAC3C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;gBACnD,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,GAAG,GAAG,CAAC;aAC9D;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,yBAAyB,CAAC,IAAsB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAE9B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,cAAc;gBACzB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG;gBACX,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE;oBACT,kBAAkB,EAAE,CAAC;oBACrB,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;iBAChB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAEzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,WAAW,GAAG,GAAG,GAAG,eAAe,GAAG,IAAI,GAAG,GAAG,GAAG,iBAAiB,GAAG,IAAI,GAAG,GAAG,CAClF,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,cAAc;YACzB,KAAK;YACL,MAAM,EAAE,GAAG;YACX,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACtC,SAAS,EAAE;gBACT,kBAAkB,EAAE,WAAW;gBAC/B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;gBAC7C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;aAClD;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,6BAA6B,CAAC,IAA0B;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAE9B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,kBAAkB;gBAC7B,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG;gBACX,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE;oBACT,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;oBACf,aAAa,EAAE,CAAC;oBAChB,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,CAAC;iBACZ;aACF,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7E,wBAAwB;QACxB,MAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC;QAE7D,iBAAiB;QACjB,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAEnF,iBAAiB;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAErE,gBAAgB;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,eAAe,GAAG,GAAG;YACnB,iBAAiB,GAAG,IAAI;YACxB,kBAAkB,GAAG,GAAG;YACxB,WAAW,GAAG,IAAI;YAClB,aAAa,GAAG,GAAG,CACtB,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,kBAAkB;YAC7B,KAAK;YACL,MAAM,EAAE,GAAG;YACX,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACtC,SAAS,EAAE;gBACT,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACvC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAC3C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAC7C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;aACpC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,mBAAmB,CAAC,UAA0B,EAAE,eAA+B,EAAE,YAA4B,EAAE,gBAAgC;QAC7I,OAAO,IAAI,CAAC,KAAK,CACf,UAAU,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,GAAG,gBAAgB,CAAC,aAAa,CACvH,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;CACF"}