{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D22","name":"Internal API Consistency","shortDescription":{"text":"Internal API Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D22"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"]}},{"id":"AC1","name":"Text alternatives","shortDescription":{"text":"Text alternatives"},"helpUri":"https://codehealth.canine.dev/dimensions/AC1"},{"id":"AC2","name":"Forms \u0026 labels","shortDescription":{"text":"Forms \u0026 labels"},"helpUri":"https://codehealth.canine.dev/dimensions/AC2"},{"id":"AC3","name":"Page structure","shortDescription":{"text":"Page structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AC3"},{"id":"AC4","name":"Keyboard semantics","shortDescription":{"text":"Keyboard semantics"},"helpUri":"https://codehealth.canine.dev/dimensions/AC4"},{"id":"AC5","name":"ARIA correctness","shortDescription":{"text":"ARIA correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/AC5"},{"id":"AC6","name":"Visual \u0026 motion safety","shortDescription":{"text":"Visual \u0026 motion safety"},"helpUri":"https://codehealth.canine.dev/dimensions/AC6"},{"id":"AC7","name":"A11y enforcement","shortDescription":{"text":"A11y enforcement"},"helpUri":"https://codehealth.canine.dev/dimensions/AC7"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX9","name":"CQS / query purity","shortDescription":{"text":"CQS / query purity"},"helpUri":"https://codehealth.canine.dev/dimensions/AX9"},{"id":"AXB2","name":"Runtime readiness","shortDescription":{"text":"Runtime readiness"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB2"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P10","name":"Library API \u0026 versioning","shortDescription":{"text":"Library API \u0026 versioning"},"helpUri":"https://codehealth.canine.dev/dimensions/P10"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P2","name":"Observability","shortDescription":{"text":"Observability"},"helpUri":"https://codehealth.canine.dev/dimensions/P2"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"P7","name":"Outbound HTTP resilience","shortDescription":{"text":"Outbound HTTP resilience"},"helpUri":"https://codehealth.canine.dev/dimensions/P7"},{"id":"PF1","name":"Benchmark discipline","shortDescription":{"text":"Benchmark discipline"},"helpUri":"https://codehealth.canine.dev/dimensions/PF1"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"R1","name":"Type Safety","shortDescription":{"text":"Type Safety"},"helpUri":"https://codehealth.canine.dev/dimensions/R1"},{"id":"R10","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/R10"},{"id":"R11","name":"Import Boundaries","shortDescription":{"text":"Import Boundaries"},"helpUri":"https://codehealth.canine.dev/dimensions/R11"},{"id":"R2","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/R2"},{"id":"R3","name":"Large Files","shortDescription":{"text":"Large Files"},"helpUri":"https://codehealth.canine.dev/dimensions/R3"},{"id":"R4","name":"Test Coverage","shortDescription":{"text":"Test Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/R4"},{"id":"R6","name":"Tooling","shortDescription":{"text":"Tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/R6"},{"id":"R7","name":"Dead Code","shortDescription":{"text":"Dead Code"},"helpUri":"https://codehealth.canine.dev/dimensions/R7"},{"id":"R8","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/R8"},{"id":"R9","name":"Circular Imports","shortDescription":{"text":"Circular Imports"},"helpUri":"https://codehealth.canine.dev/dimensions/R9"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"Parser::parse (cyclomatic 57): Parser::parse has cyclomatic complexity 57 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/parser.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c444d6bf96b455f7a6e4a0fec1a7e5b07ccb63270a09f2a11b57265a22bbccb"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::transform_attrs (cyclomatic 53): VueJsxTransformVisitor::transform_attrs has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df88695a78431d01c358a511158afcc76217a1233981763b1f640346b81bd50"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::resolve_indexed_access (cyclomatic 46): VueJsxTransformVisitor::resolve_indexed_access has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a5d8e351205ea0b7c56814f57550700c6a7c27d001143479a604d2bc9d7926d"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::attribute_selector_parser::parse (cyclomatic 44): farmfe_ecosystem_tailwindcss::attribute_selector_parser::parse has cyclomatic complexity 44 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/attribute_selector_parser.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4cbd8a94a74df143f64ab2de7d50723f4bc88a30c8239ebdbaf0df409b802c"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_module_exports_dfs (cyclomatic 40): farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_module_exports_dfs has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports/expand_exports.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"9620859ddc5444d447caf73178c14811c08a8942c6e47444ffb0d0902d6763cf"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::resolve_type_elements (cyclomatic 39): VueJsxTransformVisitor::resolve_type_elements has cyclomatic complexity 39 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba57226208aad3802e0b8516af92b417186440f9a8961bac578ea3a325cff71"}},{"ruleId":"D1","level":"warning","message":{"text":"index.farmPlugin (cyclomatic 38): index.farmPlugin has cyclomatic complexity 38 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/vuetify/src/index.ts"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cd72c9d33f85132a3c298d7b1f60ff99e28978cc9a64727d1ea1eecf3290138"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info (cyclomatic 37): farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info has cyclomatic complexity 37 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/analyze_statement/statement_info.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3597b493bcb402bdec7bd14fed127e5637068715f0414ea85552a48267ab0a5"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::math_operators::add_whitespace_around_math_operators (cyclomatic 37): farmfe_ecosystem_tailwindcss::utils::math_operators::add_whitespace_around_math_operators has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/math_operators.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1791102a3f3b36240a5f32fcd44ba11acbfd7d697539e51fa4dd5790f2d9881e"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::infer_runtime_type (cyclomatic 36): VueJsxTransformVisitor::infer_runtime_type has cyclomatic complexity 36 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fe00b0c2ba95c5acaca741bf39bf1839ee96d5936737f51068b5e626eacbe5"}},{"ruleId":"D1","level":"warning","message":{"text":"farm-to-vite-config.viteConfigToFarmConfig (cyclomatic 36): farm-to-vite-config.viteConfigToFarmConfig has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-config.ts"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"df5bfde1a3fa8b8183997aadb32ee18ceea1f01bf40a7ecf71dac583649519b2"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_write_imported_idents_statements (cyclomatic 35): farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_write_imported_idents_statements has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc5aae26d677d2ac5e44ee4dea1877c77b79ae3716d8d177168612fa3b00c4b"}},{"ruleId":"D1","level":"warning","message":{"text":"normalize-persistent-cache.normalizePersistentCache (cyclomatic 35): normalize-persistent-cache.normalizePersistentCache has cyclomatic complexity 35 (threshold 15). Of this number, 33 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-persistent-cache.ts"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6488070e6cf80a1137ffee1ccf739730f10864863231582c92691f47927c45aa"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_compiler::update::diff_and_patch_module_graph::diff_module_deps (cyclomatic 34): farmfe_compiler::update::diff_and_patch_module_graph::diff_module_deps has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/diff_and_patch_module_graph.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"18866b48f0a34f2b69d42bfc1185fcad0e5ca066b5c12f56bb430f84c0af0ef4"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::selector_parser::parse (cyclomatic 33): farmfe_ecosystem_tailwindcss::selector_parser::parse has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/selector_parser.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"137ed291f1748ff6007bc91ab70b8281e890fb158396d4916e1bff23fb76b5f4"}},{"ruleId":"D1","level":"warning","message":{"text":"ExportsVisitor::visit_module_decl (cyclomatic 31): ExportsVisitor::visit_module_decl has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"514184945f2354d7b2483828999be0f0a07993aeec4f6013fa91c8fab4033c89"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources (cyclomatic 30): farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/generate/render_resource_pots.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf99a3c63014a60da4f7956f331328cb0804f17a61ced852ec208eaf052c17b"}},{"ruleId":"D1","level":"warning","message":{"text":"SideEffectsAnalyzer::visit_expr (cyclomatic 30): SideEffectsAnalyzer::visit_expr has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/analyze_statement_side_effects.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"3023f35d3407bc21e5da8bbc832f24b443123268ae88e1e3684a1181144ccda1"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_svgr_rs::transform_svg_component::variables::get_variables (cyclomatic 28): farmfe_svgr_rs::transform_svg_component::variables::get_variables has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97b9de6382abef44639c27ba71fa324175681ecd8eae30d8c6b38e10f584b7f"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl (cyclomatic 27): farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"939490d2e73ff77d4969e61f6c561fc0aed144ddb4c98359e5149a3fe76e9dbb"}},{"ruleId":"D1","level":"warning","message":{"text":"WsServer.createWebSocketServer (cyclomatic 27): WsServer.createWebSocketServer has cyclomatic complexity 27 (threshold 15). Most of this is not in the body itself: 12 of the 27 points are its own statements and the rest belongs to 5 function literals inside it that branch (lines 245, 188, 285, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/ws.ts"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"a75fa99bec35ce9484dc3c1a15237a77c094fbe6ec991fcafd15c2d1bc5cc3cf"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::candidate::parse_candidate (cyclomatic 26): farmfe_ecosystem_tailwindcss::candidate::parse_candidate has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/candidate.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"2851c79af630dc1275b6f51ef5052b61c9bd7cfbc667ec30e121141580adac83"}},{"ruleId":"D1","level":"warning","message":{"text":"build.buildExamples (cyclomatic 26): build.buildExamples has cyclomatic complexity 26 (threshold 15). Most of this is not in the body itself: 12 of the 26 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 94, 74, 133, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b62418c54c54faeaa5a9715c460a52e52612f8086acb3d30628956b0faaec3"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_export_statements (cyclomatic 25): farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_export_statements has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/strip_module_decl.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"5913a18b6c70d739f3c69fc43cedc1d43784fc69d2289b80d649f32116701399"}},{"ruleId":"D1","level":"warning","message":{"text":"proxy.proxyMiddleware (cyclomatic 25): proxy.proxyMiddleware has cyclomatic complexity 25 (threshold 15). Most of this is not in the body itself: 2 of the 25 points are its own statements and the rest belongs to 5 function literals inside it that branch (lines 96, 126, 44, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/middlewares/proxy.ts"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"203fd649eb67ff8bdb93f193dae926665fd6019b7a1655616abac568bcc9acd9"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::transform_children (cyclomatic 24): VueJsxTransformVisitor::transform_children has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc04fc38daa116be99907e262c5140d656bf3863b8791a80b693133283260f5"}},{"ruleId":"D1","level":"warning","message":{"text":"index.farmPlugin (cyclomatic 24): index.farmPlugin has cyclomatic complexity 24 (threshold 15). Most of this is not in the body itself: 1 of the 24 points is its own statement and the rest belongs to 2 function literals inside it that branch (lines 133, 217). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/copy/src/index.ts"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfeaa89cfd540c839bb327f4f3bf8e1dbb9b646aa01c4dc275cdbdec90c09c6e"}},{"ruleId":"D1","level":"warning","message":{"text":"create_farm::run_cli (cyclomatic 23): create_farm::run_cli has cyclomatic complexity 23 (threshold 15). Of this number, 20 points are the body\u0027s own statements and 3 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/lib.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5aaacc70dee057e46b80bb01a4834e55ebf1dcd2efbe3a5c8f2f7d1746ca91"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_swc_transformer_import_glob::get_object_literal (cyclomatic 23): farmfe_swc_transformer_import_glob::get_object_literal has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"458839323167db4d6d4a59edf36cd83bcb02241e0a096bb7cca436e451dbd71a"}},{"ruleId":"D1","level":"warning","message":{"text":"index.proxyContext (cyclomatic 23): index.proxyContext has cyclomatic complexity 23 (threshold 15). Most of this is not in the body itself: 9 of the 23 points are its own statements and the rest belongs to 6 function literals inside it that branch (lines 210, 248, 215, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/index.ts"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fd1d4884f032b4155653e8ed074e071feb77edde47a12c0d3da97cbf9b0427"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::find_imports_to_rename (cyclomatic 22): farmfe_plugin_mangle_exports::mangle_exports::find_imports_to_rename has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"53150b18ddb97d610194b6ce694e5b97d3cac6cfc91752119d4f1f913544856f"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::extract_props_type (cyclomatic 21): VueJsxTransformVisitor::extract_props_type has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10d95a74b4aa2e1edad27362107eded8dca0cdb0c06ff47a0ad973ecd5adb9a"}},{"ruleId":"D1","level":"warning","message":{"text":"index.Tabs (cyclomatic 21): index.Tabs has cyclomatic complexity 21 (threshold 15). Most of this is not in the body itself: 7 of the 21 points are its own statements and the rest belongs to 9 function literals inside it that branch (lines 97, 114, 127, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"website/src/theme/ManagerTabs/index.tsx"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"668c442c2329843f0ae6082e129edc712a953626d99c3fb2b554990f70a48c34"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_unresolved_import_dfs (cyclomatic 20): farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_unresolved_import_dfs has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports/expand_exports.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c9c22599d021b66fe7212355df1436d811b06d2d8c7cfe1b23595323584e61"}},{"ruleId":"D1","level":"warning","message":{"text":"TreeShakeModule::used_exports_idents_to_statement_idents (cyclomatic 20): TreeShakeModule::used_exports_idents_to_statement_idents has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/module.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ed3b01dc56ade203573202658a4fdb2054f9e4ed3d59e1303bd51033ee23371"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all (cyclomatic 20): farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf1ad404fcfdc9ff213024468e38467b3bd67712486d8102c0d2a0758cf6e8f"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_icons::loader::icon_to_svg::icon_to_svg (cyclomatic 20): farmfe_plugin_icons::loader::icon_to_svg::icon_to_svg has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/icon_to_svg.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"19b6d995f47f9c57112f2bfef249fc7a48020d6a151edeaf4c3e95b550e01e16"}},{"ruleId":"D1","level":"warning","message":{"text":"VueJsxTransformVisitor::extract_emits_type (cyclomatic 20): VueJsxTransformVisitor::extract_emits_type has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":1140}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d511b4c3f9377e16af71b14a82c598beb7b75bdbd47622e94f3ea6d0f8b947c"}},{"ruleId":"D1","level":"warning","message":{"text":"HmrClient.applyHotUpdates (cyclomatic 20): HmrClient.applyHotUpdates has cyclomatic complexity 20 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/hmr-client.ts"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71e18341352d4cc04c70a20daa8adefb860216778c749f65d29b27213c37b4b"}},{"ruleId":"D1","level":"warning","message":{"text":"module-system.farmRequire (cyclomatic 20): module-system.farmRequire has cyclomatic complexity 20 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/module-system.ts"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b9548c8a4796fbdafceb11701552999e000a1235efb256fc668e946c9714707"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::strip_modules_asts (cyclomatic 19): farmfe_toolkit::script::concatenate_modules::strip_modules_asts has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/mod.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"15511d09d2a1236203839327667ae31bfa6db4fdf071b993c6f836565437fb93"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_svgr_rs::hast_to_swc_ast::decode_xml::decode_xml (cyclomatic 19): farmfe_svgr_rs::hast_to_swc_ast::decode_xml::decode_xml has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/hast_to_swc_ast/decode_xml.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"302a360572a6e3ecbc13ad7ec670ab025c5d92b0361d18b7a68b5fa6d73775c8"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::value_parser::parse (cyclomatic 19): farmfe_ecosystem_tailwindcss::value_parser::parse has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/value_parser.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"d33294759e120d056a916e22f65b02655d7d9f7ea663e74c344b79048318aca0"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportMetaURLVisitor::transform_url (cyclomatic 18): ImportMetaURLVisitor::transform_url has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/transform_import_meta_url/mod.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"6afca3ef4b6e1ab61019b679e072272ab740ecb5522a660726ab88f4926ab603"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_auto_import::parser::scan_exports::scan_exports (cyclomatic 18): farmfe_plugin_auto_import::parser::scan_exports::scan_exports has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_exports.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c694b4813211d5f9ed4e5fd38c3938ca884f2ea8f37ad46823249f1d3e3ab2ca"}},{"ruleId":"D1","level":"warning","message":{"text":"index.convertPluginVite (cyclomatic 18): index.convertPluginVite has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/index.ts"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"a89405ba4190a0c8c66235527d123af238b7b7670970e413caccd078e51bc096"}},{"ruleId":"D1","level":"warning","message":{"text":"module-helper.interopRequireWildcard (cyclomatic 18): module-helper.interopRequireWildcard has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/modules/module-helper.ts"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"f628c6e8e2a23890ab77920c80e6ec49a179ec1fb64faa2fb658318e8a31f48b"}},{"ruleId":"D1","level":"warning","message":{"text":"index.CodeBlockWrapper (cyclomatic 18): index.CodeBlockWrapper has cyclomatic complexity 18 (threshold 15). Of this number, 9 points are the body\u0027s own statements and 9 belong to 4 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"website/src/theme/CodeBlock/index.tsx"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f82018d197862e1a7ff8839eae4b2b04104c4696819ea906e5c4d0610451d8a"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_compiler::update::handle_update_modules::handle_update_modules (cyclomatic 17): farmfe_compiler::update::handle_update_modules::handle_update_modules has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/handle_update_modules.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"d66a8abe0b76a1e3188eba2ceb264c127f2d7e4d15fd53cbda788e0fedd98661"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::mangle_exports (cyclomatic 17): farmfe_plugin_mangle_exports::mangle_exports::mangle_exports has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b1638425db9c975595b2d3ab940126963033dc8be6aaa48adb121bc2d1334f"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_resolve::resolver::exports::walk (cyclomatic 17): farmfe_plugin_resolve::resolver::exports::walk has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver/exports.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"af78489b90ce6c2617be7d2bb48584e7ad64c35683b6368597c1ab020dee926f"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_used_statements (cyclomatic 17): farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_used_statements has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a2385170a7944ee1e5cfa9791344717be9e416943b052f663099ba6fdfa6288"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::variants::resolve_functional (cyclomatic 17): farmfe_ecosystem_tailwindcss::variants::resolve_functional has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: farmfe_ecosystem_tailwindcss::variants::resolve_named (cyclomatic 48) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/variants.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"60b7f8e7fce923ca7048518ad95f6b276cc8a60a46ac43aafac6075fdab1b4f9"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::ast::optimize_ast (cyclomatic 17): farmfe_ecosystem_tailwindcss::ast::optimize_ast has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/ast.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"8edd67d4983d4b373c0ff4ada2dd75ce47c72454d698b2427657d6a5dad896a4"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss_node::resolve::resolve_with_extensions (cyclomatic 17): farmfe_ecosystem_tailwindcss_node::resolve::resolve_with_extensions has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/resolve.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e5c3161ea5e9d5241ca90be37b37f4dd20a8b772e98ca3f4a8fc2f720a7a5d"}},{"ruleId":"D1","level":"warning","message":{"text":"utils.getResolvedOptions (cyclomatic 17): utils.getResolvedOptions has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"89610b0e52659ab2e1e842a4cfbcc651379b14e3cbefdd0e1a62cc4212ece5d6"}},{"ruleId":"D1","level":"warning","message":{"text":"index.farmPostcssPlugin (cyclomatic 17): index.farmPostcssPlugin has cyclomatic complexity 17 (threshold 15). Of this number, 12 points are the body\u0027s own statements and 5 belong to 2 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/postcss/src/index.ts"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c2af5efa3f16542567a44bbd3be8f902f790abb5c4f2184c231a997c3b01a1"}},{"ruleId":"D1","level":"warning","message":{"text":"merge-config.mergeFarmCliConfig (cyclomatic 17): merge-config.mergeFarmCliConfig has cyclomatic complexity 17 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/merge-config.ts"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a10418e09c7824de0f8e0e69a1ae24c73899cd5a3e7c8a29d5bde669f301d1d"}},{"ruleId":"D1","level":"warning","message":{"text":"index.normalizeUserCompilationConfig (cyclomatic 17): index.normalizeUserCompilationConfig has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/index.ts"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fefd51060036ac143309a2896c4110fe228203990a44babab1d0d75a41b7a98"}},{"ruleId":"D1","level":"warning","message":{"text":"normalize-output.normalizeTargetEnv (cyclomatic 17): normalize-output.normalizeTargetEnv has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-output.ts"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c275875b387d1f10cbac93c615b8f48e586abca5f93db8bbee2fe0a1d5edea"}},{"ruleId":"D1","level":"warning","message":{"text":"farm-to-vite-context.farmContextToViteContext (cyclomatic 17): farm-to-vite-context.farmContextToViteContext has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 2 of the 17 points are its own statements and the rest belongs to 6 function literals inside it that branch (lines 129, 49, 73, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-context.ts"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b798b5e90f0452ef5137a8ad9755a3529f077a829a7e7048f821c188364d3e"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_compiler::update::patch_module_group_graph::patch_removed_dynamic_import_and_dynamic_entry (cyclomatic 16): farmfe_compiler::update::patch_module_group_graph::patch_removed_dynamic_import_and_dynamic_entry has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/patch_module_group_graph.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dc228e371888e8867a4df3d32ad46e22492ecd47684eae1300c4844c297c674"}},{"ruleId":"D1","level":"warning","message":{"text":"Lexer::next (cyclomatic 16): Lexer::next has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/utils/lte.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"733117f2226a274fbc02f54e74f39b1dd8505db15e4428fa20b066dcf7ccd3d1"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::find_idents_can_not_be_mangled (cyclomatic 16): farmfe_plugin_mangle_exports::mangle_exports::find_idents_can_not_be_mangled has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"435f3612fa64fee864a0dc71ed25e64f88177a21efc430289124669aae97394a"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_plugin_partial_bundling::merge_module_pots::handle_enforce_target_min_size (cyclomatic 16): farmfe_plugin_partial_bundling::merge_module_pots::handle_enforce_target_min_size has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/merge_module_pots.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa245b732c1a857e842758f9f827ed714cee9e8602289c598b9fb7596b4065a3"}},{"ruleId":"D1","level":"warning","message":{"text":"Resolver::try_alias (cyclomatic 16): Resolver::try_alias has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b8f5c5d1d91ccec5e0b9b241415bd54b1667ccea0ad06f59b88cf61b9a00955"}},{"ruleId":"D1","level":"warning","message":{"text":"Resolver::try_package_entry (cyclomatic 16): Resolver::try_package_entry has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"5309ec8e0e2c391b3137cd36a68798abeb6dcf6252a7597a90e8979560db738b"}},{"ruleId":"D1","level":"warning","message":{"text":"TracedUsedImportStatement::from_import_info_and_used_idents (cyclomatic 16): TracedUsedImportStatement::from_import_info_and_used_idents has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/traced_used_import.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"be042e833821dfb74dbb74a7b7617c93b2fa6374dc06a85c646d73d5c416a7bf"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportGlobVisitor::try_alias (cyclomatic 16): ImportGlobVisitor::try_alias has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"692598657a936c7b7f776ead2b00ae973a089e3dc25a2d4ac563a20d05a3311b"}},{"ruleId":"D1","level":"warning","message":{"text":"RuntimeFeatureGuardRemover::handle_stmt (cyclomatic 16): RuntimeFeatureGuardRemover::handle_stmt has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/runtime.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"25956b21ee990a652b98c81178de0bf76a4a6c0bea1e6d5b2c860b2062ec4c6d"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_toolkit::script::transform_to_esm::update_module_graph_edges_of_cjs_modules (cyclomatic 16): farmfe_toolkit::script::transform_to_esm::update_module_graph_edges_of_cjs_modules has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/transform_to_esm/mod.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b227c081d35e17cf9d8c1146e5acdf1db8d4e7ae0a0b671a07aa6bdff1d6c118"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::brace_expansion::expand_sequence (cyclomatic 16): farmfe_ecosystem_tailwindcss::utils::brace_expansion::expand_sequence has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/brace_expansion.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa370205f51234bcaea2616722c348b9c990aaef37f57b596ff2cc9b8de5649"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utilities::resolve_spacing (cyclomatic 16): farmfe_ecosystem_tailwindcss::utilities::resolve_spacing has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d74ae580007053bebb976ce69ec5022501b132890bf6b035f85b34e16c96e6"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::apply::process_nodes (cyclomatic 16): farmfe_ecosystem_tailwindcss::apply::process_nodes has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/apply.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5991150394222c0ac1f2159fe152fe0bc38dc4fdd3d117aef81f7af7c19dd40"}},{"ruleId":"D1","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::segment::segment (cyclomatic 16): farmfe_ecosystem_tailwindcss::utils::segment::segment has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/segment.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"45523400cf9e5def28dd5bd88dfbc0b56a3f43a4dc0416b8c281fb93252bc9f1"}},{"ruleId":"D1","level":"warning","message":{"text":"index.farmLessPlugin (cyclomatic 16): index.farmLessPlugin has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"083dee0ba9ae72bb645d33e0bd1dc00d06c689189b40c606d0fa79b6d02d1e7b"}},{"ruleId":"D1","level":"warning","message":{"text":"Root.generate (cyclomatic 16): Root.generate has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/tailwindcss/src/index.ts"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"1201672962a2209f2ed96f4b765c079fbe1ece9a4c30471a41a23b80a6cdf287"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_write_imported_idents_statements (cognitive 161): farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_write_imported_idents_statements has cognitive complexity 161 (threshold 15). Drivers by points: if/else 22 (111 pts), loops 10 (31 pts), match/switch 2 (18 pts), boolean chains 1 (nesting depth added 126). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"00da7dbd7c4091d8f56b56133c9c9735b7c13f2c72e8dc0a58437e8a0aa98807"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl (cognitive 131): farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl has cognitive complexity 131 (threshold 15). Drivers by points: match/switch 8 (59 pts), if/else 12 (54 pts), loops 5 (18 pts) (nesting depth added 106). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fef25f76efbb264af01546ff70fdd0c509430c00cf08112d5160b089a999bbc"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::resolve_indexed_access (cognitive 122): VueJsxTransformVisitor::resolve_indexed_access has cognitive complexity 122 (threshold 15). Drivers by points: if/else 32 (82 pts), match/switch 12 (40 pts) (nesting depth added 78). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ee108961e720c39ba949a47df03f61a400790381ac751a7dea10df9aa32efc"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse (cognitive 121): Parser::parse has cognitive complexity 121 (threshold 15). Drivers by points: if/else 35 (98 pts), boolean chains 18, match/switch 4, loops 1 (nesting depth added 63). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/parser.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4733a5b6f10549efe4f1c238b0aace1b4c2e83126b41b305505e450ae17e94e"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_module_exports_dfs (cognitive 109): farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_module_exports_dfs has cognitive complexity 109 (threshold 15). Drivers by points: if/else 23 (72 pts), loops 10 (21 pts), match/switch 3 (13 pts), boolean chains 3 (nesting depth added 70). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports/expand_exports.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f16829851a0c181f796c61bc0a51e5a8d6ff2a8855b393eb88b57703ce5c19"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::find_imports_to_rename (cognitive 95): farmfe_plugin_mangle_exports::mangle_exports::find_imports_to_rename has cognitive complexity 95 (threshold 15). Drivers by points: if/else 13 (59 pts), loops 4 (21 pts), match/switch 2 (13 pts), boolean chains 2 (nesting depth added 74). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c849bf379d42a0eb387680f8871669d949b9a2879b8a124945a66165cbd637"}},{"ruleId":"D2","level":"warning","message":{"text":"index.proxyContext (cognitive 80): index.proxyContext has cognitive complexity 80 (threshold 15). Drivers by points: if/else 10 (54 pts), ternaries 3 (16 pts), boolean chains 7, loops 2 (3 pts) (nesting depth added 58). Of this number, 26 points are the body\u0027s own statements and 54 belong to 6 function literals inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/index.ts"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"2524d0f2d18d311eaa91a54864f8a492b8f6ffc65dfa719385c53977f1187a49"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::diff_and_patch_module_graph::diff_module_deps (cognitive 79): farmfe_compiler::update::diff_and_patch_module_graph::diff_module_deps has cognitive complexity 79 (threshold 15). Drivers by points: if/else 24 (54 pts), loops 10 (22 pts), boolean chains 3 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/diff_and_patch_module_graph.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"0272593dee6bdb07191298d548b4d4f4e7ab8f38724dc8f3130f89d801bf6d90"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::transform_attrs (cognitive 79): VueJsxTransformVisitor::transform_attrs has cognitive complexity 79 (threshold 15). Drivers by points: if/else 32 (52 pts), match/switch 9 (20 pts), boolean chains 7 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"622f82a7b9a06a919fd06e2e5005c900f0bb661c0c8b0004f86ff7680f85820d"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_export_statements (cognitive 78): farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_export_statements has cognitive complexity 78 (threshold 15). Drivers by points: if/else 13 (42 pts), match/switch 4 (21 pts), loops 4 (15 pts) (nesting depth added 57). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/strip_module_decl.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"5abad72f9811bde46f70ea04b953b9132d659eea5c52908060c5f659072c7936"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::selector_parser::parse (cognitive 78): farmfe_ecosystem_tailwindcss::selector_parser::parse has cognitive complexity 78 (threshold 15). Drivers by points: if/else 20 (61 pts), loops 5 (14 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 51). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/selector_parser.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b611fe859bb6422c89940e5f73cadbecc4c7cc316f87ee5d248197bee3d862a"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources (cognitive 76): farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources has cognitive complexity 76 (threshold 15). Drivers by points: if/else 25 (55 pts), loops 9 (20 pts), boolean chains 1 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/generate/render_resource_pots.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"707f6a6ac3c625cd87aec29db7e7339087afb08e1f2a54c60ac727a16d392cf6"}},{"ruleId":"D2","level":"warning","message":{"text":"farm-to-vite-config.viteConfigToFarmConfig (cognitive 74): farm-to-vite-config.viteConfigToFarmConfig has cognitive complexity 74 (threshold 15). Drivers by points: if/else 25 (50 pts), loops 3 (14 pts), ternaries 1 (6 pts), boolean chains 4 (nesting depth added 41). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-config.ts"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa3fa98fe06b45e5a8f133742dfb4b7722f4bb7de732c3db52fcdccf09a37dd"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info (cognitive 71): farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info has cognitive complexity 71 (threshold 15). Drivers by points: match/switch 12 (38 pts), if/else 7 (23 pts), loops 3 (10 pts) (nesting depth added 49). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/analyze_statement/statement_info.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"000aa3f94467345bfdac6fb18d94c702aacbf3d3d3eea60b71f2d91949cb5038"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_swc_transformer_import_glob::get_object_literal (cognitive 68): farmfe_swc_transformer_import_glob::get_object_literal has cognitive complexity 68 (threshold 15). Drivers by points: if/else 10 (35 pts), match/switch 7 (26 pts), loops 2 (7 pts) (nesting depth added 49). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c6914acedba7ff1b751c1011efa80f9dd226af42ef87179a13ead8c3b8fee5"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::math_operators::add_whitespace_around_math_operators (cognitive 68): farmfe_ecosystem_tailwindcss::utils::math_operators::add_whitespace_around_math_operators has cognitive complexity 68 (threshold 15). Drivers by points: if/else 25 (48 pts), boolean chains 16, loops 2 (4 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/math_operators.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b836abb4a4127246a8d669cddf081060ddb15def8afbd6eb6e0d6fd502a1a6bc"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::resolve_type_elements (cognitive 65): VueJsxTransformVisitor::resolve_type_elements has cognitive complexity 65 (threshold 15). Drivers by points: match/switch 10 (36 pts), if/else 10 (24 pts), loops 2 (5 pts) (nesting depth added 43). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd493f26c19083608c17578a0bfcfec5a47488dc30bddea548b4341d0ed133ee"}},{"ruleId":"D2","level":"warning","message":{"text":"normalize-persistent-cache.normalizePersistentCache (cognitive 59): normalize-persistent-cache.normalizePersistentCache has cognitive complexity 59 (threshold 15). Drivers by points: if/else 22 (37 pts), loops 4 (10 pts), boolean chains 6, error handling 1 (4 pts), ternaries 1 (2 pts) (nesting depth added 25). Of this number, 58 points are the body\u0027s own statements and 1 belongs to 2 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-persistent-cache.ts"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebf3f2c66a336a3de9b5aa8f8594a8ef2e063719eac762fb8239616ebe8deb89"}},{"ruleId":"D2","level":"warning","message":{"text":"TracedUsedImportStatement::from_import_info_and_used_idents (cognitive 57): TracedUsedImportStatement::from_import_info_and_used_idents has cognitive complexity 57 (threshold 15). Drivers by points: if/else 13 (40 pts), match/switch 3 (10 pts), loops 2 (7 pts) (nesting depth added 39). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/traced_used_import.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d815dc5fb22dd198c170ee42ef303174b03fbbd0fa682f2d0dc914529978cff"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_svgr_rs::transform_svg_component::variables::get_variables (cognitive 56): farmfe_svgr_rs::transform_svg_component::variables::get_variables has cognitive complexity 56 (threshold 15). Drivers by points: if/else 27 (48 pts), loops 1 (4 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"54167b2eea08f9eed70191c974074a9dda619a894fd3160023ac771a9b0bae78"}},{"ruleId":"D2","level":"warning","message":{"text":"TreeShakeModule::used_exports_idents_to_statement_idents (cognitive 55): TreeShakeModule::used_exports_idents_to_statement_idents has cognitive complexity 55 (threshold 15). Drivers by points: if/else 13 (40 pts), loops 3 (9 pts), match/switch 2 (6 pts) (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/module.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e33df3fdde9d5b48aeecd592ac67a2457b694da80d093add2763ea75e8fe1ee"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::attribute_selector_parser::parse (cognitive 54): farmfe_ecosystem_tailwindcss::attribute_selector_parser::parse has cognitive complexity 54 (threshold 15). Drivers by points: if/else 22 (31 pts), boolean chains 10, loops 8 (10 pts), match/switch 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/attribute_selector_parser.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"de1438c47d4c3eb70e3d0653ad95b9058146a370f8726f17a16b56e5db87c0bf"}},{"ruleId":"D2","level":"warning","message":{"text":"proxy.proxyMiddleware (cognitive 52): proxy.proxyMiddleware has cognitive complexity 52 (threshold 15). Drivers by points: if/else 20 (47 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 28). Most of this is not in the body itself: 1 of the 52 points is its own statement and the rest belongs to 5 function literals inside it that branch (lines 96, 126, 44, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/middlewares/proxy.ts"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ed1895936f2e2a8b033fc15ca3ceb3ecaf060519eca5d2c03f1fe64f416687"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::find_idents_can_not_be_mangled (cognitive 50): farmfe_plugin_mangle_exports::mangle_exports::find_idents_can_not_be_mangled has cognitive complexity 50 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 4 (13 pts), match/switch 2 (11 pts), boolean chains 1 (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"deeb19309c666d9b57be27dbddfcda63edf0c745b541f710903d7d859682cc04"}},{"ruleId":"D2","level":"warning","message":{"text":"HmrClient.applyHotUpdates (cognitive 49): HmrClient.applyHotUpdates has cognitive complexity 49 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 8 (17 pts), ternaries 2 (9 pts), error handling 1 (3 pts), boolean chains 1 (nesting depth added 30). Of this number, 43 points are the body\u0027s own statements and 6 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/hmr-client.ts"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc61ecce85db927d591f266593c1098b4f5a8de34fc576743241a4e34198fe5"}},{"ruleId":"D2","level":"warning","message":{"text":"index.farmPlugin (cognitive 48): index.farmPlugin has cognitive complexity 48 (threshold 15). Drivers by points: if/else 14 (30 pts), loops 3 (8 pts), boolean chains 5, ternaries 1 (5 pts) (nesting depth added 25). Most of this is not in the body itself: 0 of the 48 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 133, 217). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/copy/src/index.ts"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"962f8f09133ee1d65767dbcabf4c7c52d010e50453a6fcffce46288a404e0677"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportsVisitor::visit_module_decl (cognitive 47): ExportsVisitor::visit_module_decl has cognitive complexity 47 (threshold 15). Drivers by points: if/else 14 (29 pts), match/switch 7 (16 pts), loops 1 (2 pts) (nesting depth added 25). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeeea7d82adc763383cd9a862b40a0cdb8a7bffcc596346723a4088eba260588"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_auto_import::parser::scan_exports::scan_exports (cognitive 47): farmfe_plugin_auto_import::parser::scan_exports::scan_exports has cognitive complexity 47 (threshold 15). Drivers by points: if/else 7 (26 pts), loops 5 (19 pts), match/switch 1 (2 pts) (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_exports.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed6b0b000d107ec854709f1e6a182f3f4c90f94ac4631223e4ab74239f2e2740"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceReplacer::visit_mut_url (cognitive 46): SourceReplacer::visit_mut_url has cognitive complexity 46 (threshold 15). Drivers by points: if/else 10 (37 pts), loops 1 (4 pts), match/switch 1 (4 pts), boolean chains 1 (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/source_replacer.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"86720447725d305dc7149c69f925d91d963ec19bd01feab207e2bcb6659e6773"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeFeatureGuardRemover::handle_stmt (cognitive 46): RuntimeFeatureGuardRemover::handle_stmt has cognitive complexity 46 (threshold 15). Drivers by points: if/else 13 (37 pts), match/switch 2 (7 pts), boolean chains 2 (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/runtime.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed83994aa90b2322931575f19d553228f085a8d5536b6d81ffb5253020121dfa"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_import_statements (cognitive 46): farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_import_statements has cognitive complexity 46 (threshold 15). Drivers by points: if/else 10 (35 pts), loops 3 (7 pts), match/switch 1 (4 pts) (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/strip_module_decl.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad10c5bb658907f94fa8c94c8776193dbc940523f447fb0daf0468a95b0476d5"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_unresolved_import_dfs (cognitive 45): farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_unresolved_import_dfs has cognitive complexity 45 (threshold 15). Drivers by points: if/else 13 (31 pts), loops 3 (10 pts), boolean chains 4 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports/expand_exports.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e2353d8a8841e2547567e4ad3810cabee277767c4516aee447d6ca5caa8e452"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::patch_module_group_graph::patch_removed_dynamic_import_and_dynamic_entry (cognitive 44): farmfe_compiler::update::patch_module_group_graph::patch_removed_dynamic_import_and_dynamic_entry has cognitive complexity 44 (threshold 15). Drivers by points: if/else 13 (33 pts), loops 3 (8 pts), boolean chains 3 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/patch_module_group_graph.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"572960fabcd432a1293da8dd1cdc4b1558df580737d9aecd9ec6d8a1f3f452af"}},{"ruleId":"D2","level":"warning","message":{"text":"build.buildExamples (cognitive 44): build.buildExamples has cognitive complexity 44 (threshold 15). Drivers by points: if/else 14 (29 pts), ternaries 3 (6 pts), loops 4 (5 pts), boolean chains 3, error handling 1 (nesting depth added 19). Of this number, 23 points are the body\u0027s own statements and 21 belong to 4 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dcc0f14ef3c5e78c2fcc15ea1a47799caacb480542a96ca12c1afaa37e22d3d"}},{"ruleId":"D2","level":"warning","message":{"text":"SideEffectsAnalyzer::visit_expr (cognitive 43): SideEffectsAnalyzer::visit_expr has cognitive complexity 43 (threshold 15). Drivers by points: if/else 16 (28 pts), match/switch 3 (6 pts), boolean chains 5, loops 1 (4 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/analyze_statement_side_effects.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c554aea0ca8feb0a4b3a5a3abaab1d8f7b1523a07ddae7dcdbeeda6b12012fa"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportGlobVisitor::glob_and_filter_sources (cognitive 43): ImportGlobVisitor::glob_and_filter_sources has cognitive complexity 43 (threshold 15). Drivers by points: if/else 13 (33 pts), match/switch 2 (5 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"931431bf30d772d55e9d2b8d148c56073dafa66afa28562697411bb6e703fa4c"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all (cognitive 43): farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all has cognitive complexity 43 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 3 (12 pts), boolean chains 6 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d1bcaa4f2ed71a5585e87dea25870af42c8904e0dd450250b3e95cd2c220e6"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::extract_props_type (cognitive 42): VueJsxTransformVisitor::extract_props_type has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (24 pts), match/switch 7 (18 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ebbeb6af7a8f0321b69b25577e54022144fcfe0b7ae9fb023f3ff74d9933c2"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_partial_bundling::merge_module_pots::handle_enforce_target_min_size (cognitive 41): farmfe_plugin_partial_bundling::merge_module_pots::handle_enforce_target_min_size has cognitive complexity 41 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 6 (18 pts), boolean chains 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/merge_module_pots.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"34c3e1f4a369c970a31d5329a8e1efd064836a91887ae4c519a599bdb27d2b2e"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::find_dep_module_read_global_variables_dfs (cognitive 40): farmfe_plugin_tree_shake::tree_shake_modules::find_dep_module_read_global_variables_dfs has cognitive complexity 40 (threshold 15). Drivers by points: if/else 8 (24 pts), loops 5 (15 pts), boolean chains 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa15b9970b0574b65b28f760a1bf3ead35d37d90055260f6051d2e82615aa4d"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::candidate::parse_candidate (cognitive 40): farmfe_ecosystem_tailwindcss::candidate::parse_candidate has cognitive complexity 40 (threshold 15). Drivers by points: if/else 21 (33 pts), boolean chains 7 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/candidate.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"161894da17f8bd9159fd3118b5410fc20343a94d1f828162748895b65bcd5441"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss_node::resolve::resolve_with_extensions (cognitive 40): farmfe_ecosystem_tailwindcss_node::resolve::resolve_with_extensions has cognitive complexity 40 (threshold 15). Drivers by points: if/else 13 (30 pts), loops 5 (9 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/resolve.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ddad13c731ca8b61a0b0c649e6b45b03b9861a058cd0b2e3723638adf5e0e8"}},{"ruleId":"D2","level":"warning","message":{"text":"index.farmPlugin (cognitive 40): index.farmPlugin has cognitive complexity 40 (threshold 15). Drivers by points: if/else 17 (21 pts), boolean chains 15, ternaries 2 (4 pts) (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/vuetify/src/index.ts"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"73af67ef4d55ef5d9f82b4809134f2ace4a7d605eb67c931bf207bb77db61d56"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::try_alias (cognitive 38): Resolver::try_alias has cognitive complexity 38 (threshold 15). Drivers by points: if/else 10 (32 pts), boolean chains 3, match/switch 1 (2 pts), loops 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c3513f03acdd202ebbaec306c5a49a9154b570542264077c57a53f11bb8d2e7"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_resolve::resolver::exports::walk (cognitive 38): farmfe_plugin_resolve::resolver::exports::walk has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (34 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver/exports.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"c850d2ab38cfb085bfb9962af4549b2a0a168b4ad4920788048e382396405005"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportMetaURLVisitor::transform_url (cognitive 38): ImportMetaURLVisitor::transform_url has cognitive complexity 38 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 2 (8 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/transform_import_meta_url/mod.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab5bebc11687b5e394fc29401e6da634a8530cae9649c33ce0a799a9a15b448"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementGraph::traverse_dependents_dfs (cognitive 38): StatementGraph::traverse_dependents_dfs has cognitive complexity 38 (threshold 15). Drivers by points: if/else 11 (31 pts), loops 2 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph.rs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"77887cc7beb897ba6a0820ef841434e5d6f03893b74c971c1385a843b85eeaae"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::transform_children (cognitive 38): VueJsxTransformVisitor::transform_children has cognitive complexity 38 (threshold 15). Drivers by points: if/else 15 (27 pts), match/switch 5 (10 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d74a5872ad5058eed133b582d9ad1e49d31d23d9f47731567d7db52a2377f1"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::infer_runtime_type (cognitive 38): VueJsxTransformVisitor::infer_runtime_type has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (28 pts), match/switch 4 (8 pts), loops 1 (2 pts) (nesting depth added 19). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b695b9bbb5b3634df026e1c6b5b5f20790ccfbdddccf51fd129124104c70c0"}},{"ruleId":"D2","level":"warning","message":{"text":"create_farm::run_cli (cognitive 37): create_farm::run_cli has cognitive complexity 37 (threshold 15). Drivers by points: if/else 16 (26 pts), match/switch 4 (5 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 13). Of this number, 27 points are the body\u0027s own statements and 10 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/lib.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"0791756979ac2e505d7b241f562177d6f23c442710d0c2be84d5478e8333c413"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::transform_to_esm::update_module_graph_edges_of_cjs_modules (cognitive 37): farmfe_toolkit::script::transform_to_esm::update_module_graph_edges_of_cjs_modules has cognitive complexity 37 (threshold 15). Drivers by points: if/else 9 (26 pts), loops 4 (8 pts), boolean chains 3 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/transform_to_esm/mod.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c042cc2ab66b9e2af613ece5af01a9614d775fc8574fa9f7e0841a1c838a3c"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::value_parser::parse (cognitive 37): farmfe_ecosystem_tailwindcss::value_parser::parse has cognitive complexity 37 (threshold 15). Drivers by points: if/else 10 (27 pts), loops 3 (7 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/value_parser.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d11c20470c1bc5a1c3f13e0f911b86336f6d02bcd9af20d8c7d71dca7e2570"}},{"ruleId":"D2","level":"warning","message":{"text":"normalize-output.normalizeTargetEnv (cognitive 37): normalize-output.normalizeTargetEnv has cognitive complexity 37 (threshold 15). Drivers by points: if/else 18 (36 pts), boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-output.ts"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ed01afa933bbcec0e02f45e003f2f13ca846d8388daf69be3189187f1a92fd"}},{"ruleId":"D2","level":"warning","message":{"text":"TracedUsedImportStatement::from_export_info_and_used_idents (cognitive 36): TracedUsedImportStatement::from_export_info_and_used_idents has cognitive complexity 36 (threshold 15). Drivers by points: if/else 8 (26 pts), loops 2 (7 pts), match/switch 1 (3 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/traced_used_import.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac129a237aa35bdfdd480a19116b24da8fbafe5457eb24c302b726d5d363738"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_vue_jsx::directive::parse_directive (cognitive 36): farmfe_plugin_vue_jsx::directive::parse_directive has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (27 pts), match/switch 4 (9 pts) (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/directive.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3310c39ea4c60367b90c459085f6d9c4731d8bfeac1aa870f268761b36919969"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_vue_jsx::directive::parse_v_model_directive (cognitive 36): farmfe_plugin_vue_jsx::directive::parse_v_model_directive has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (27 pts), match/switch 3 (6 pts), boolean chains 3 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/directive.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6625ce19a0fa8958fcda61fcf8713fe141975846ac0136260275b293038607e"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_used_statements (cognitive 35): farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_used_statements has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (27 pts), loops 4 (5 pts), boolean chains 3 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b7840e5c24b7b5267bce56ec11a060dce2c290146256221b57011f50c8e053f"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::apply::process_nodes (cognitive 35): farmfe_ecosystem_tailwindcss::apply::process_nodes has cognitive complexity 35 (threshold 15). Drivers by points: if/else 4 (16 pts), loops 4 (11 pts), match/switch 2 (7 pts), boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/apply.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3458f975e91b3c397ee443494f2d46d883ca7b82d4f5a7a4dbb5fedd4c263df"}},{"ruleId":"D2","level":"warning","message":{"text":"module-system.farmRequire (cognitive 35): module-system.farmRequire has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18 (30 pts), error handling 1 (3 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/module-system.ts"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"2935a54f788d13c5f6df025255ff49e16bceef5268f44670323826f19d32dbc2"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::patch_module_group_graph::patch_existing_added_non_dynamic_children (cognitive 34): farmfe_compiler::update::patch_module_group_graph::patch_existing_added_non_dynamic_children has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (23 pts), loops 4 (10 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/patch_module_group_graph.rs"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"92057b1b411114141063b5710aa0c372903a70e27177661cd0458f4c47a37f81"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::handle_update_modules::handle_update_modules (cognitive 34): farmfe_compiler::update::handle_update_modules::handle_update_modules has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15 (24 pts), loops 4 (9 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/handle_update_modules.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"2657ca62e584a6646a4625becb3a0f60a5f31a58ec89d72398be69813cb8d130"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_runtime::render_resource_pot::transform_async_module::transform_async_module (cognitive 34): farmfe_plugin_runtime::render_resource_pot::transform_async_module::transform_async_module has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (25 pts), loops 3 (6 pts), match/switch 1 (3 pts) (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/transform_async_module.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"56201a419242e5a8db890090c17f02b98be8d07a85c1804260f8906a91f3cf89"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_script_meta::plugin_exports::expand_exports::get_basic_module_export_ident (cognitive 34): farmfe_plugin_script_meta::plugin_exports::expand_exports::get_basic_module_export_ident has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 3 (10 pts), match/switch 1 (4 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports/expand_exports.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a56b63064c10a20addd5747aa368affd7a96fab477b967b640dc037031f860"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_svgr_rs::hast_to_swc_ast::decode_xml::decode_xml (cognitive 34): farmfe_svgr_rs::hast_to_swc_ast::decode_xml::decode_xml has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (20 pts), match/switch 2 (6 pts), boolean chains 4, loops 2 (4 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/hast_to_swc_ast/decode_xml.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af60611f15ac673c9589c35152180faefa31f3b44cbade97179a2b9ad214d09"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::build_props_type (cognitive 34): VueJsxTransformVisitor::build_props_type has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (29 pts), match/switch 2 (3 pts), boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15a59248d45e041cb28868a3c46067646bbe2da4e42d1a3ca90903049aaa116"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::mangle_exports::mangle_exports (cognitive 33): farmfe_plugin_mangle_exports::mangle_exports::mangle_exports has cognitive complexity 33 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 5 (10 pts), boolean chains 3 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"2681bf695b40fec8a70b0a4d1e0184929e76fc79fa722c3058e627a4a8ad724b"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_partial_bundling::merge_module_pots::merge_resource_pots_by_buckets (cognitive 33): farmfe_plugin_partial_bundling::merge_module_pots::merge_resource_pots_by_buckets has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (27 pts), loops 3 (6 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/merge_module_pots.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"de68ece7103370aabd288f897ef7dd62a421af3a9aba3f294855d0ca7ca3f19c"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementGraph::trace_and_mark_used_statements (cognitive 32): StatementGraph::trace_and_mark_used_statements has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (25 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"270f439878dfa3c0f223565a7de0e5b1b4716364dc638cb82c537db4078f6d29"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::traverse_tree_shake_modules (cognitive 32): farmfe_plugin_tree_shake::tree_shake_modules::traverse_tree_shake_modules has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 4 (11 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20398d402115c5361a499827cc4be0688268b5e391919e9b4a1d8354a2f3c21"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::remove_export_idents::remove_export_idents (cognitive 32): farmfe_plugin_tree_shake::tree_shake_modules::remove_export_idents::remove_export_idents has cognitive complexity 32 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 5 (10 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules/remove_export_idents.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"386b5ca470b4ae2b159ff8e85a664f538c7a2d838870233d7a8547065a8b15df"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_external_import (cognitive 32): farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_external_import has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 2 (5 pts), match/switch 1 (5 pts), boolean chains 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"e721ab566740f714edde0b359aa30d1c177005199ab82731a2d767dd20e585d2"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::ast::optimize_ast (cognitive 32): farmfe_ecosystem_tailwindcss::ast::optimize_ast has cognitive complexity 32 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/ast.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f2a9a01409337bd9f7424cf6d4d5244d133dc506fe2f3fc4ae92d6173454544"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::patch_module_group_graph::patch_any_module_group_for_toposort_modules (cognitive 31): farmfe_compiler::update::patch_module_group_graph::patch_any_module_group_for_toposort_modules has cognitive complexity 31 (threshold 15). Drivers by points: if/else 5 (21 pts), loops 3 (8 pts), boolean chains 2 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/patch_module_group_graph.rs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"7922dc9146026cb142f37fa43216e8593235e7b4380a8f3b02b48ddc05953eb8"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_runtime::render_resource_pot::scope_hoisting::build_scope_hoisted_module_groups (cognitive 31): farmfe_plugin_runtime::render_resource_pot::scope_hoisting::build_scope_hoisted_module_groups has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 5 (12 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/scope_hoisting.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd46471de5f113a48020f161b83b8d64044e8e64a9a23797f05a8487a3dba2a1"}},{"ruleId":"D2","level":"warning","message":{"text":"FeaturesAnalyzer::analyze (cognitive 31): FeaturesAnalyzer::analyze has cognitive complexity 31 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 3 (7 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_features/features_analyzer.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"b665118f6d5887cc632dc6daa14e6883e9af1ae9d159992eaf6c0a20f62396ce"}},{"ruleId":"D2","level":"warning","message":{"text":"index.farmPostcssPlugin (cognitive 31): index.farmPostcssPlugin has cognitive complexity 31 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 2 (6 pts), ternaries 1 (5 pts), error handling 2 (3 pts), boolean chains 1 (nesting depth added 15). Of this number, 21 points are the body\u0027s own statements and 10 belong to 2 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/postcss/src/index.ts"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee34c0e1e087c07bafd81aef2dfca61b83fc4e6111db244fce43bf9e0299549b"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_partial_bundling::analyze_module_graph::module_group_from_entry (cognitive 30): farmfe_plugin_partial_bundling::analyze_module_graph::module_group_from_entry has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 3 (8 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/analyze_module_graph.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68d49aad4e1cd0ec8c0a9fdeacd868f30de1c60c7dce691b19707266d19e83b"}},{"ruleId":"D2","level":"warning","message":{"text":"HmrAcceptedVisitor::visit_mut_expr (cognitive 30): HmrAcceptedVisitor::visit_mut_expr has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 1 (5 pts), boolean chains 2 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/import_meta_visitor.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc350d6fefc697461560703fdd7049896fe2294de4a95afc91e1840bb3b3272"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::compiler::scan_var_calls (cognitive 30): farmfe_ecosystem_tailwindcss::compiler::scan_var_calls has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (19 pts), loops 3 (8 pts), boolean chains 3 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/compiler.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"70710af923cdd9bfc6111f248f22a553cdb56ed82451ec903baa76bd334983f3"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::patch_module_group_graph::patch_module_group_graph (cognitive 29): farmfe_compiler::update::patch_module_group_graph::patch_module_group_graph has cognitive complexity 29 (threshold 15). Drivers by points: loops 9 (18 pts), if/else 3 (10 pts), boolean chains 1 (nesting depth added 16). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/patch_module_group_graph.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3b0689a81d92bb490436037cbf89f189ed03473b8fcbaeb7c67c3862ff9d50"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_swc_transformer_import_glob::transform_import_meta_glob (cognitive 29): farmfe_swc_transformer_import_glob::transform_import_meta_glob has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 2 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6eefa6532d4f656c5dc61499796278861e89de7057ca72963c168d23f74191"}},{"ruleId":"D2","level":"warning","message":{"text":"index.checkCompilationInputValue (cognitive 29): index.checkCompilationInputValue has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (14 pts), error handling 2 (7 pts), loops 1 (3 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/index.ts"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"6496f5dfdefd7f7bfe028fa35975e2d3ed75113eb5bd6e90a452b610e809f740"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceReplacer::replace_source_with_id (cognitive 28): SourceReplacer::replace_source_with_id has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (28 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/source_replacer.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b995a26f6c35cb8d9aaf0d16a4c0bee95ba4ce2569c207d581c242ac58dd1b"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginScriptMetaExports::is_import_ident_changed (cognitive 28): FarmPluginScriptMetaExports::is_import_ident_changed has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (18 pts), loops 2 (4 pts), match/switch 1 (4 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d8a5b6d8d95b42e9fc8d74c4bdd13fa6919aae311d8a2385b163c6c0cf2da3"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::sourcemap::collapse_sourcemap_chain (cognitive 28): farmfe_toolkit::sourcemap::collapse_sourcemap_chain has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/sourcemap.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e514f277a248977200e89ca06342bdda54cb20c2a7e72762686154e87e62b3d"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::strip_modules_asts (cognitive 28): farmfe_toolkit::script::concatenate_modules::strip_modules_asts has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5 (6 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/mod.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a330bb483a2c6a06901d1c7a844ca15aebcb7b54f3e0585f2b2b7119fe39d3"}},{"ruleId":"D2","level":"warning","message":{"text":"WsServer.createWebSocketServer (cognitive 28): WsServer.createWebSocketServer has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 10, error handling 1, ternaries 1 (nesting depth added 3). Of this number, 15 points are the body\u0027s own statements and 13 belong to 5 function literals inside it that branch. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/ws.ts"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"cad1ae5dd2f6979d74087809e74434abf15c85e08431fa4a05f7b70c31fbde55"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::regenerate_resources::generate_and_diff_resource_pots::handle_enforce_resource_pots (cognitive 27): farmfe_compiler::update::regenerate_resources::generate_and_diff_resource_pots::handle_enforce_resource_pots has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/regenerate_resources/generate_and_diff_resource_pots.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7008c42ae539ee20fcf41004d82866869873cd265c835fda7cc6b90c33f92e"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginCssResolve::resolve (cognitive 27): FarmPluginCssResolve::resolve has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 1 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"78aaedda2f41df728df154e976a1cc700d407e4a69083f39e397a431d0e0648d"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::remove_export_idents::is_module_contains_reexport_ident (cognitive 27): farmfe_plugin_tree_shake::tree_shake_modules::remove_export_idents::is_module_contains_reexport_ident has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 1 (4 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules/remove_export_idents.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9396f6a41a20148d731f009f1b5f0cfe6a8fccdbba3abbfea7a9c7ae97424c6"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportGlobVisitor::try_alias (cognitive 27): ImportGlobVisitor::try_alias has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 3, match/switch 2 (3 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc37e57f97ee14cf639a673bab3293609776888fa1f08342525d141cab074ed"}},{"ruleId":"D2","level":"warning","message":{"text":"InsertImportModifier::visit_mut_module_items (cognitive 27): InsertImportModifier::visit_mut_module_items has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 5 (12 pts), loops 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/react-components/src/insert_import.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"559e60410b70cb2f13787560294f7a1a965e30c3d61cd1696123160dc9c292cb"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::decode_arbitrary_value::recursively_decode_arbitrary_values (cognitive 26): farmfe_ecosystem_tailwindcss::utils::decode_arbitrary_value::recursively_decode_arbitrary_values has cognitive complexity 26 (threshold 15). Drivers by points: if/else 4 (17 pts), loops 2 (5 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/decode_arbitrary_value.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"af71a3aae5c57def11408d342451e3c021f1c7283f0d11d7c97a1480b69ad94b"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::segment::segment (cognitive 26): farmfe_ecosystem_tailwindcss::utils::segment::segment has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 2 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/segment.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"4112af7e4a484ee2ff1765bceb40c1bf2f2dd6c99ad533c85b42869fe8c83613"}},{"ruleId":"D2","level":"warning","message":{"text":"VueJsxTransformVisitor::extract_emits_type (cognitive 26): VueJsxTransformVisitor::extract_emits_type has cognitive complexity 26 (threshold 15). Drivers by points: match/switch 8 (21 pts), if/else 4 (5 pts) (nesting depth added 14). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":1140}}}],"partialFingerprints":{"codehealthFindingId/v1":"f01612fe4563faf0f36de7bf51fb78794b3181749e33f4e9cc517fe24583f552"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::diff_and_patch_module_graph::patch_module_graph (cognitive 25): farmfe_compiler::update::diff_and_patch_module_graph::patch_module_graph has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 7 (9 pts), match/switch 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/diff_and_patch_module_graph.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"a52d87f853e6269f3f0f9b79f46b3e4fef9b9c9b97953cc04a1a39e1b2e41fb0"}},{"ruleId":"D2","level":"warning","message":{"text":"Lexer::next (cognitive 25): Lexer::next has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (17 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/utils/lte.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b7dcaf85390016880d99ed8ab5f6be705b407d1e6d739295240583a9ff70e95"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceReplacer::visit_mut_stylesheet (cognitive 25): SourceReplacer::visit_mut_stylesheet has cognitive complexity 25 (threshold 15). Drivers by points: if/else 4 (14 pts), match/switch 2 (9 pts), boolean chains 1, loops 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/source_replacer.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4b57720b5698ea4b6018287c7e22a156e6c030f3adf0d536080fab7be467b4"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginDefine::transform (cognitive 25): FarmPluginDefine::transform has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (20 pts), match/switch 1 (3 pts), loops 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_define/src/lib.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff1ca0541d55960efcbfb93b3e51e12e5163f3453a638d14053e422f7b22fb7"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::_try_node_modules_internal (cognitive 25): Resolver::_try_node_modules_internal has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (23 pts), boolean chains 1, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ada5ec2a9719d0f810ff59d41837da633154cd96fa501036aeb875964e9f611"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginScript::process_resource_pots (cognitive 25): FarmPluginScript::process_resource_pots has cognitive complexity 25 (threshold 15). Drivers by points: if/else 4 (16 pts), loops 3 (8 pts), boolean chains 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/lib.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ccaeeda85493715c8364bf302c1f76107c06a83d5797e10a549744160f1795"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_script::transform_import_meta_url::normalized_glob_pattern (cognitive 25): farmfe_plugin_script::transform_import_meta_url::normalized_glob_pattern has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 3, loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/transform_import_meta_url/mod.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"e354c130d2cd9f159a0c6f4f869b6b7dcc47ab85573733a6cea8839615d11cc9"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::module2cjs::transform_export_named (cognitive 25): farmfe_toolkit::script::module2cjs::transform_export_named has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (21 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/module2cjs.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"0500e19e667f31360444b3dbbc00f3ded221685d606ec655cabc398ddbfac684"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::variants::resolve_functional (cognitive 25): farmfe_ecosystem_tailwindcss::variants::resolve_functional has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17 (25 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/variants.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"b654ac02e2c69a10a424d5f15c4bad5c7f2b679994db49869ea7fe422b98ad22"}},{"ruleId":"D2","level":"warning","message":{"text":"index.Tabs (cognitive 25): index.Tabs has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (15 pts), ternaries 4 (6 pts), boolean chains 4 (nesting depth added 5). Most of this is not in the body itself: 7 of the 25 points are its own statements and the rest belongs to 9 function literals inside it that branch (lines 97, 114, 127, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"website/src/theme/ManagerTabs/index.tsx"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e658fc282a44d8ba265ad0ca5c14f67bfc125eae6329fb817f6e1ca902475a7"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourcesInjector::visit_mut_element (cognitive 24): ResourcesInjector::visit_mut_element has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_html/src/resources_injector.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"c075624f5f250b3ec8697ae1931c21d2693d5fc9f15a3fa81c3f97b4a51e77ad"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::try_package_entry (cognitive 24): Resolver::try_package_entry has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 4, match/switch 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96f6c556387a45951c794aa352e666f0db74c2857b79fbee4318495d25231de"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginStaticAssets::transform (cognitive 24): FarmPluginStaticAssets::transform has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (21 pts), match/switch 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_static_assets/src/lib.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"162ea3fa8ac60aea7c2708249727d2c6e47d48407760a350fbd8640ade244bcf"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::tree_shake_modules::remove_useless_stmts::remove_useless_stmts (cognitive 24): farmfe_plugin_tree_shake::tree_shake_modules::remove_useless_stmts::remove_useless_stmts has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (15 pts), match/switch 2 (7 pts), loops 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules/remove_useless_stmts.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ea712b73b36d8808dd018e4a8a018b17314a471a67a7fc6a2c96262bbf650a"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportGlobVisitor::visit_mut_expr (cognitive 24): ImportGlobVisitor::visit_mut_expr has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 2 (4 pts), boolean chains 1, match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffea17a10468933e4a9faafc71d8dceed8d70f483a1301b963ae974e9400f260"}},{"ruleId":"D2","level":"warning","message":{"text":"RequireEsmReplacer::visit_mut_expr (cognitive 24): RequireEsmReplacer::visit_mut_expr has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (23 pts), boolean chains 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/transform_to_esm/transform_cjs.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"6048e5ef70d033c9cb290d87dd9da97f3cdcdf035116512629d4bb6ed8ea892e"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_auto_import::presets::parse_presets (cognitive 24): farmfe_plugin_auto_import::presets::parse_presets has cognitive complexity 24 (threshold 15). Drivers by points: loops 5 (14 pts), match/switch 3 (10 pts) (nesting depth added 16). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/presets/mod.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"93df08eed1d2e1033b4b694ea52edbd8757080a6815a3f95fe2e9b4473187cbb"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_icons::loader::icon_to_svg::icon_to_svg (cognitive 24): farmfe_plugin_icons::loader::icon_to_svg::icon_to_svg has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (17 pts), match/switch 4 (7 pts) (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/icon_to_svg.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"748e09830ab3f4c663e8b3f82c9d8e9de9e0981692c1130bb15b6060b88cfe8f"}},{"ruleId":"D2","level":"warning","message":{"text":"index.normalizeUserCompilationConfig (cognitive 24): index.normalizeUserCompilationConfig has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 5, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/index.ts"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d9aec4db6cac0bd28ef22974c20b8e85bb4c86f3dcb71a7d01c26b637344f9"}},{"ruleId":"D2","level":"warning","message":{"text":"merge.merge (cognitive 24): merge.merge has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/merge.ts"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad42e063d9ca10bad51f7a0636d8554d6bbb47dfa2edfa4b32418fa25c37bbed"}},{"ruleId":"D2","level":"warning","message":{"text":"PersistentCacheConfig::as_obj (cognitive 23): PersistentCacheConfig::as_obj has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 1 (4 pts), boolean chains 1, match/switch 1 (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/config/persistent_cache.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6efd9a5746ac9f013507596edd2626dd1112567aadeecaebdd5c427dcd1d25"}},{"ruleId":"D2","level":"warning","message":{"text":"Visitor::visit_mut_jsx_opening_element (cognitive 23): Visitor::visit_mut_jsx_opening_element has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 2 (5 pts), boolean chains 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/add_jsx_attribute.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"398ac79f24bb386c3d5d96aed8900bfff67a1dd3a28f5f97b2b680a2b771b99e"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::escape::unescape (cognitive 23): farmfe_ecosystem_tailwindcss::utils::escape::unescape has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/escape.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de92ca173dd15ef50c02e578c90f65471e64bc7de79c49eab390bd98c07ea09"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::update::regenerate_resources::generate_and_diff_resource_pots::diff_and_patch_resource_pot_map (cognitive 22): farmfe_compiler::update::regenerate_resources::generate_and_diff_resource_pots::diff_and_patch_resource_pot_map has cognitive complexity 22 (threshold 15). Drivers by points: loops 5 (11 pts), if/else 4 (10 pts), boolean chains 1 (nesting depth added 12). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/regenerate_resources/generate_and_diff_resource_pots.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"261a67c130959704dc0009110bc7fa10b0a8bcc16c89f1b253d5bbb5710803e0"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginCss::transform (cognitive 22): FarmPluginCss::transform has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 2 (7 pts), match/switch 1 (5 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"79600aee14e9a86c412416572b9856984dcd9a2264e3a6d23b96e514ab83aea9"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_auto_import::parser::inject_imports::inject_imports (cognitive 22): farmfe_plugin_auto_import::parser::inject_imports::inject_imports has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (20 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/inject_imports.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1e55c095d70817c0872e5e7604f35804b34efe95543bf6afd115ef4cb2fb1b"}},{"ruleId":"D2","level":"warning","message":{"text":"module-helper.interopRequireWildcard (cognitive 22): module-helper.interopRequireWildcard has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 8, ternaries 1 (3 pts), loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/modules/module-helper.ts"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"531e5e297320637e7fb5b57656ad1feea05df269f3a6acd6c8d0701ba13cc83d"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::consume_if (cognitive 21): Parser::consume_if has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 2 (5 pts), match/switch 2 (4 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/utils/lte.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3afd6f59a1bece109a7f3d76efa96a254775f7daa1dffcd1e881cbd7a77b8db"}},{"ruleId":"D2","level":"warning","message":{"text":"Theme::resolve_key (cognitive 21): Theme::resolve_key has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (18 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/theme.rs"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"344771c42633fe88f4a6d90bf4e94c3f72483ad4df45b5d97ef75a09f735ab43"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::brace_expansion::expand_sequence (cognitive 21): farmfe_ecosystem_tailwindcss::utils::brace_expansion::expand_sequence has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 5, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/brace_expansion.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35367379b113da8da6ad705a1a8dcabb000e0a9eeb15fcfd99c61e3e43d6d4c"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::compare::compare (cognitive 21): farmfe_ecosystem_tailwindcss::utils::compare::compare has cognitive complexity 21 (threshold 15). Drivers by points: loops 3 (7 pts), match/switch 2 (7 pts), if/else 2 (4 pts), boolean chains 3 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/compare.rs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f39bd1ce89c2977bb607ab717e144d7959c1b7668e1add39899531c5d3c7d6"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_vue_jsx::util::dedupe_props (cognitive 21): farmfe_plugin_vue_jsx::util::dedupe_props has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 3 (10 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/util.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b989dd6d342e6ee0d8e4336b8c6e6a07041dafd46c4d9f586bee054f06ddec"}},{"ruleId":"D2","level":"warning","message":{"text":"index.convertPluginVite (cognitive 21): index.convertPluginVite has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/index.ts"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"8277bb8acc9200536bd86fa2344a39c90ccc3a3ad41588d6ca302b550a61f38c"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_html::deps_analyzer::get_script_src_or_code (cognitive 20): farmfe_plugin_html::deps_analyzer::get_script_src_or_code has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (20 pts) (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (farmfe_plugin_html::deps_analyzer::get_href_link_or_code) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_html/src/deps_analyzer.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab782d16fc9bc37d3c49bd693f600bd30ad6954d8af4ca1390510e7dfae4eb7"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_html::deps_analyzer::get_href_link_or_code (cognitive 20): farmfe_plugin_html::deps_analyzer::get_href_link_or_code has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (20 pts) (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (farmfe_plugin_html::deps_analyzer::get_script_src_or_code) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_html/src/deps_analyzer.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f18b0d4001dc558d7594f8968ff27e1c89c042d608bb44a59ce63064c1c6ac9"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_mangle_exports::utils::transform_export_all_to_export_named (cognitive 20): farmfe_plugin_mangle_exports::utils::transform_export_all_to_export_named has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/utils.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88b6ad658e067295279856213cc75a4c2a27cdb9a7e0b9f2a56ff44a2c164a7"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportGlobVisitor::find_rel_source (cognitive 20): ImportGlobVisitor::find_rel_source has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (17 pts), loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"e395bee3467486e6e7eca4898f04da506450fa0de7ac993006fb2e92253c44e6"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::sourcemap::trace_module_sourcemap (cognitive 20): farmfe_toolkit::sourcemap::trace_module_sourcemap has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/sourcemap.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d0dabbea22df9daa8226eeaf76e048cdc1a49dd3f3c356b2a98d8b138c8b0f"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::is_valid_arbitrary::is_valid_arbitrary (cognitive 20): farmfe_ecosystem_tailwindcss::utils::is_valid_arbitrary::is_valid_arbitrary has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/is_valid_arbitrary.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8daa54c4c662cc4480a9da5f8fa2fc8833cb46780d97e377c608159eecf623"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::ast::stringify (cognitive 20): farmfe_ecosystem_tailwindcss::ast::stringify has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (12 pts), if/else 5 (7 pts), match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/ast.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"8460fd6ccd9a73cc16b9ce0b12c609a481a3082b720a133760ccf0c15ac99392"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss_node::urls::rewrite_image_set_inner (cognitive 20): farmfe_ecosystem_tailwindcss_node::urls::rewrite_image_set_inner has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/urls.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f60d538e9f517a9fb59323db5e3fc9ab2b79b2fa380d6d341d8c14d150a6f2"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss_node::compile::resolve_imports (cognitive 20): farmfe_ecosystem_tailwindcss_node::compile::resolve_imports has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (16 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/compile.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97c9b0d11ae8efc02ba27216d6a0df6f7f97009f075c57e46745f9aefbc5b92"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss_node::normalize_path::normalize_path_base (cognitive 20): farmfe_ecosystem_tailwindcss_node::normalize_path::normalize_path_base has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/normalize_path.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"139890fa12d354e58fc440c8f9be8fc01e90785949725f78f0313047f55c9c63"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportComponentsFinder::visit_export_decl (cognitive 20): ExportComponentsFinder::visit_export_decl has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (11 pts), match/switch 2 (6 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/react-components/src/find_local_components.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"91e89b9a75a6fbd25e9f6b49111769ef2dfcddd80f01a8430a269dd3882a3720"}},{"ruleId":"D2","level":"warning","message":{"text":"farm-to-vite-context.farmContextToViteContext (cognitive 20): farm-to-vite-context.farmContextToViteContext has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (17 pts), boolean chains 2, ternaries 1 (nesting depth added 1). Most of this is not in the body itself: 1 of the 20 points is its own statement and the rest belongs to 6 function literals inside it that branch (lines 49, 129, 73, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-context.ts"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fdb4e3188c2cb050b36174582eb1f733a6e984764bf957a824d9aefa5400eca"}},{"ruleId":"D2","level":"warning","message":{"text":"dynamic-import.load (cognitive 20): dynamic-import.load has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 1 (nesting depth added 9). Of this number, 14 points are the body\u0027s own statements and 6 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/modules/dynamic-import.ts"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc2c71b48763a94bea9937c5b2952157c6943fdaa452dd278620e17ef55e033"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginDriver::transform (cognitive 19): PluginDriver::transform has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/plugin/plugin_driver.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"43444a843209331b182ece73264b426c53d2cdea581c6f9832b5bbd07a52a8e5"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginResolve::resolve (cognitive 19): FarmPluginResolve::resolve has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/lib.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e75abed7a9c08aa5f5eeb6a19e2e34b03289d6bf5abe1e3f6d74d802d9928b7"}},{"ruleId":"D2","level":"warning","message":{"text":"PackageJsonLoader::load (cognitive 19): PackageJsonLoader::load has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/resolve/package_json_loader.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"d709e31789a54874ce6ed3ef457f467dc8dab8c98529bc8cb8c86f184e21c28b"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_external_export (cognitive 19): farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_external_export has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2 (3 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"369015cec002bae743a6b437d63bffee92bab2f7ebb157c4504cb6eef628c62a"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::candidate::normalize_arbitrary_value (cognitive 19): farmfe_ecosystem_tailwindcss::candidate::normalize_arbitrary_value has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (7 pts), boolean chains 4, loops 2 (4 pts), match/switch 1 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/candidate.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"835f1272db51b82992a76000be726edd52e6f16ba199dd57620367989c81412d"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_worker::resource_patch::patch_inline_worker_resources (cognitive 19): farmfe_plugin_worker::resource_patch::patch_inline_worker_resources has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 4 (5 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/worker/src/resource_patch.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"530f375f52840359b63c1516d13e52f7fb60d2ad31cb5d500f0ea10526a162bf"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginLazyCompilation::resolve (cognitive 18): FarmPluginLazyCompilation::resolve has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_lazy_compilation/src/lib.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"08746f20a14599ae715577b82b8f151c61773ce71a8dbdfbb6f8eee6a7140881"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_library::replace_internal_import_sources_with_placeholders (cognitive 18): farmfe_plugin_library::replace_internal_import_sources_with_placeholders has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/lib.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"a185d063d49cd4a89106cb21eb29531a326732847bbe81c26c13d183140a395a"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_tree_shake::statement_graph::analyze_written_imported_idents::find_written_imported_idents_dfs (cognitive 18): farmfe_plugin_tree_shake::statement_graph::analyze_written_imported_idents::find_written_imported_idents_dfs has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 2 (5 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/analyze_written_imported_idents.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"c70a17be315d2c5bc86a8e5996921564292dfc3149afd09e1096d97c281d1948"}},{"ruleId":"D2","level":"warning","message":{"text":"ModuleSystemAnalyzer::visit_member_expr (cognitive 18): ModuleSystemAnalyzer::visit_member_expr has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/module_system.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"eccf13a8a48b9805cd8b8c749262c6e8e75a437a3e6b3eeffb60eb33bc94f057"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::fs::normalize_file_name_as_variable (cognitive 18): farmfe_toolkit::fs::normalize_file_name_as_variable has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/fs.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"06de79db8c11fe796c8684b20ca73af923fec03fc228340b494fa46528517213"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmPluginVue::load (cognitive 18): FarmPluginVue::load has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (17 pts), boolean chains 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue/src/lib.rs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7c4f8276e9de9f6ab1960adc17f0ec74cb6cc39d00fb8eeebe5fea89fb3bb6"}},{"ruleId":"D2","level":"warning","message":{"text":"utils.queryPublicPath (cognitive 18): utils.queryPublicPath has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"01724ef8ec9dcc34d89a0a1842f44ed42e27f2acc65ea610db1683fb20fcc287"}},{"ruleId":"D2","level":"warning","message":{"text":"utils.transformAliasImport (cognitive 18): utils.transformAliasImport has cognitive complexity 18 (threshold 15). Drivers by points: ternaries 3 (9 pts), if/else 5 (8 pts), boolean chains 1 (nesting depth added 9). Most of this is not in the body itself: 1 of the 18 points is its own statement and the rest belongs to 2 function literals inside it that branch (lines 401, 417). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d2624f6e3f3596f757abfb965d1c052c392ccac4b5fa89d7a91a9dd43d53201"}},{"ruleId":"D2","level":"warning","message":{"text":"index.farmLessPlugin (cognitive 18): index.farmLessPlugin has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 4, loops 1 (2 pts), error handling 1, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdc9fbe42ef1be5102e042d1a5ae032f8e96b80c501d5ea12b2eafeff7b1f95"}},{"ruleId":"D2","level":"warning","message":{"text":"merge-config.mergeFarmCliConfig (cognitive 18): merge-config.mergeFarmCliConfig has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14 (15 pts), boolean chains 3 (nesting depth added 1). Of this number, 16 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/merge-config.ts"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"d48f57f852447b944b62a490cdb6aa60f53249e4302a15ceddfa161756011195"}},{"ruleId":"D2","level":"warning","message":{"text":"HmrEngine.hmrUpdate (cognitive 18): HmrEngine.hmrUpdate has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 3, error handling 1 (2 pts), loops 1, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/hmr-engine.ts"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ab6b0d664f624d8ca1e2c95e9486a794875202398fc38e459fb0eeefa8873b"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::generate::partial_bundling::generate_enforce_resource_pots (cognitive 17): farmfe_compiler::generate::partial_bundling::generate_enforce_resource_pots has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/generate/partial_bundling.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e4ac23cf70d0e0beb8fbbbee978916bb33df171078ec1d41cb3a74b57b8cea"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_compiler::build::resolve_module (cognitive 17): farmfe_compiler::build::resolve_module has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (17 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/mod.rs"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"3babc265ca3bd03c4090ec316a58bfe07d6e1faad9ea06ee6c85cf96e5a73365"}},{"ruleId":"D2","level":"warning","message":{"text":"ImmutableModulesMemoryStore::write_cache (cognitive 17): ImmutableModulesMemoryStore::write_cache has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (5 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/cache/module_cache/immutable_modules.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"a70349715f78822d5da3e7f97034e7dad29b597640593f7e0b89e1a43d0e258c"}},{"ruleId":"D2","level":"warning","message":{"text":"PackageJsonInfo::analyze_parsed_side_effects (cognitive 17): PackageJsonInfo::analyze_parsed_side_effects has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/common/mod.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5bc3a6cccec978c0a3edc6408e63f14dc883d2de3840e4f21459977431a14bb"}},{"ruleId":"D2","level":"warning","message":{"text":"UsedIdentsVisitor::visit_decl (cognitive 17): UsedIdentsVisitor::visit_decl has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/analyze_deps_by_used_idents.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"513174cfc0e97889baf657e69e3e5f02aacaea54261b7bb307ab72f36fa7834a"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_toolkit::script::module2cjs::transform_module_decls (cognitive 17): farmfe_toolkit::script::module2cjs::transform_module_decls has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (6 pts), loops 3 (6 pts), match/switch 2 (5 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/module2cjs.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c9e1d9b917ee044e69567cc76f49465d31c2904bb2ac844eabc814305309cf"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_utils::relative (cognitive 17): farmfe_utils::relative has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/utils/src/lib.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5fea35a8c681d707238cbc54a3e6f6d4f8bc99a55c55ca591770d10fee79fbb"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utilities::resolve_spacing (cognitive 17): farmfe_ecosystem_tailwindcss::utilities::resolve_spacing has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"756eaf193e2afee9122feecab7fbf263a60b4ca8d99aed88cbabe222b1bbb82d"}},{"ruleId":"D2","level":"warning","message":{"text":"FarmfePluginIcons::load (cognitive 17): FarmfePluginIcons::load has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (17 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/lib.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb41349caaef57389f3c4f67edefac4763371f5c1a7802dca77f9212530ea917"}},{"ruleId":"D2","level":"warning","message":{"text":"index.resolveDependency (cognitive 17): index.resolveDependency has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 4, error handling 2 (3 pts), loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b0d5e38d22e298fdae47ed9614131706897da67191fdb288a0dce38594b1606"}},{"ruleId":"D2","level":"warning","message":{"text":"VitePluginAdapter.constructor (cognitive 17): VitePluginAdapter.constructor has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (4 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3ec0a44326ce1f493160acb777ec1492c0f19c260ec6fd7e4cb03b522e499a"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_plugin_library::utils::strip_runtime_module_helper_import (cognitive 16): farmfe_plugin_library::utils::strip_runtime_module_helper_import has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (10 pts), loops 3 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/utils.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f3fe96e4ee8cf04ca8e5b1bd9b6f69b70ba500ce9db97e87aba23734133dc1"}},{"ruleId":"D2","level":"warning","message":{"text":"DesignSystem::register_theme_block (cognitive 16): DesignSystem::register_theme_block has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/design_system.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"64048aebb45ea18a695a8d3777b48696eac33d081a252213cde1e392e1c365de"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::utils::brace_expansion::expand_inner (cognitive 16): farmfe_ecosystem_tailwindcss::utils::brace_expansion::expand_inner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 4 (5 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/brace_expansion.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"02730e7c74ee6cf0f4f6c7fc9373c2294a1924f76e5f95a4621e0c05cfa66d9d"}},{"ruleId":"D2","level":"warning","message":{"text":"farmfe_ecosystem_tailwindcss::compiler::walk_features (cognitive 16): farmfe_ecosystem_tailwindcss::compiler::walk_features has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (10 pts), match/switch 2 (5 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/compiler.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"430b889e264be7db8809cede3d7a2af3ef8c9269fdb61e5ac5ace78329abaf89"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNode::to_css (cognitive 16): AstNode::to_css has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (5 pts), match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/compile.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cbf62c42157dd48c9226e217b5b798a44970a96d2e1bc18622661cfeb135cb1"}},{"ruleId":"D2","level":"warning","message":{"text":"Instrumentation::report (cognitive 16): Instrumentation::report has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 3 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/instrumentation.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7afa68529df9a6516dbf378278a7ea9487934906a1bf3e0d6550fc861951f80"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpClient::fetch_data (cognitive 16): HttpClient::fetch_data has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/cache/mod.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da59ac6370e8923c746e573798bca4203cbfdfe04aa62770f7caa97d00fa40a"}},{"ruleId":"D2","level":"warning","message":{"text":"Root.generate (cognitive 16): Root.generate has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 7, if/else 5, loops 1 (2 pts), ternaries 2 (nesting depth added 1). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/tailwindcss/src/index.ts"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1fcc6160921e3508a341e2cd80f3616eb35fcc6b81231e63537e0e70a4e5d4"}},{"ruleId":"D2","level":"warning","message":{"text":"bump-create-farm-version.updatePackageJsonDependencies (cognitive 16): bump-create-farm-version.updatePackageJsonDependencies has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 2, error handling 1 (2 pts) (nesting depth added 5). Most of this is not in the body itself: 0 of the 16 points are its own statements and the rest belongs to 5 function literals inside it that branch (lines 46, 26, 34, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/bump-create-farm-version.mjs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c83739463c69df31dd11f3caae415f4dfe9a79a81164e235f577b0f5071a8f"}},{"ruleId":"D2","level":"warning","message":{"text":"main (cognitive 16): main has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 1 (2 pts), error handling 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/writing-skills/render-graphs.js"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4fb6e6e5d661b6e603c057053c1056001b0903d90361e9d407c7c0916ba1784"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VueJsxTransformVisitor.resolve_indexed_access: MethodTooLong \u2014 resolve_indexed_access runs 274 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 174 over it, 2.74\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3dc7f3f84f654e831f66c8dd6291e49e8a8e994d44e1a0708f6ee62343d1eb0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UtilityRegistry.builtin: MethodTooLong \u2014 builtin runs 273 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 173 over it, 2.73\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"d961d0e13332541d8822b0896926ae3fe18d4beb090e0851a6fe6c696b4b2e87"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VueJsxTransformVisitor.transform_attrs: MethodTooLong \u2014 transform_attrs runs 257 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 157 over it, 2.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"945b0e744898c326106401e81b00c4a921068e8f70075e52c2807ed3464781d8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VueJsxTransformVisitor: ClassTooLong \u2014 1002 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 24 methods, 7 blocks, lines 39-1489. The bar is 400 significant lines; this is 602 over it, 2.51\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6b93dc567ed49985dd9542e73e04005ee8418ac8b2837f2e51bf89f3df1c86"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 1162 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 86% of them inside a single declaration: VueJsxTransformVisitor (7 blocks, 39-1489). The bar is 500 significant lines; this is 662 over it, 2.32\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e304c77634548f31c04b56cfadbc7407f5146a2589046e2582a9a6a24d2bf521"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_svgr_rs::transform_svg_component::variables::get_variables: FunctionTooLong \u2014 farmfe_svgr_rs::transform_svg_component::variables::get_variables runs 214 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 114 over it, 2.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"206f70e07007ba968386f85ac5c5abb9259582dddb1ec91fce0bb5f6fb074f29"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_module_exports_dfs: FunctionTooLong \u2014 farmfe_plugin_script_meta::plugin_exports::expand_exports::expand_module_exports_dfs runs 194 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 94 over it, 1.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/plugin_exports/expand_exports.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea6564fb2ac810256915c0fed9f0c71e060f2e15fc659c0442c8adadf93a53d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/utilities.rs: FileTooLong \u2014 956 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 108 free functions. The bar is 500 significant lines; this is 456 over it, 1.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd4470c8167d2c523179a712f44cb624bf44c715f2b9a0d44fbc291586bfbe1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resolve_type.rs: FileTooLong \u2014 941 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 95% of them inside a single declaration: VueJsxTransformVisitor (21-1226). The bar is 500 significant lines; this is 441 over it, 1.88\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"85e8964dcfbbf8009dabe7d9e6c63af7120aca52a81d66a594a189dcd9c2599e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_write_imported_idents_statements: FunctionTooLong \u2014 farmfe_plugin_tree_shake::tree_shake_modules::trace_and_mark_write_imported_idents_statements runs 183 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 83 over it, 1.83\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"aade9bbb594bbe54b161a4d33a64720a6a8024bdd74d4b99fb2168998942a32f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExportsVisitor.visit_module_decl: MethodTooLong \u2014 visit_module_decl runs 179 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 79 over it, 1.79\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a4c13f1b185e720d6952e5a6bf8973fdc6ca386fe22ff8fa44f1c0034ddb70"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VueJsxTransformVisitor.resolve_type_elements: MethodTooLong \u2014 resolve_type_elements runs 165 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 65 over it, 1.65\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a758920857bc20e0f257285f5ae6bdf3ee20e159fc7df5447ae42a8079f8a5c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_plugin_css::transform_css_to_script::transform_css_to_script_modules: FunctionTooLong \u2014 farmfe_plugin_css::transform_css_to_script::transform_css_to_script_modules runs 156 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 56 over it, 1.56\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/transform_css_to_script.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c1ecb626c0eff9bc4a5f670fc2a691195cd1b8c21ca77d22622cde203d60016"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: script/module2cjs.rs: FileTooLong \u2014 757 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 257 over it, 1.51\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/module2cjs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dcc7440e0bd9b58d1004dd4e3378d5199171a24f4ba81582c14d019c95c96c2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Compiler: TooManyMethods \u2014 44 methods, declared across 6 files: build/mod.rs (15), update/mod.rs (10), write/mod.rs (9), src/lib.rs (5), \u002B2 more file(s). The bar is 30 methods; this is 14 over it, 1.47\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/lib.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9347f6b9718d1c6bb23e11de638ad6521cb060512327004f938f041e57011184"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_compiler::update::diff_and_patch_module_graph::diff_module_deps: FunctionTooLong \u2014 farmfe_compiler::update::diff_and_patch_module_graph::diff_module_deps runs 146 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/diff_and_patch_module_graph.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62bb3546dff2c92ebf1951664f06e1dc69fe942d5b46df6610cac0de5b12c08"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ErrorOverlay.renderMessages: MethodTooLong \u2014 renderMessages runs 146 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/overlay.ts"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"a582a0f130e2072ccb2a2c4f42cae23f9131325a585b6c4e7a7012439d1c531f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PluginDriver: ClassTooLong \u2014 573 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 6 methods, 2 blocks, lines 27-929. The bar is 400 significant lines; this is 173 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/plugin/plugin_driver.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c676b9e8946960e5a3cd4b13628987cb6cec37186d9b7fc15fb91c249f2fff"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources: FunctionTooLong \u2014 farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources runs 143 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 43 over it, 1.43\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/generate/render_resource_pots.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"90bfa1af01481bbb3879facff257521908aa495f7955542d1433e37df84f72a4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info: FunctionTooLong \u2014 farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info runs 143 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 43 over it, 1.43\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/analyze_statement/statement_info.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"691af12faa4a91c6c54b9c59821538855a426c8b28bd9849df227c296c963643"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VitePluginAdapter: ClassTooLong \u2014 569 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 169 over it, 1.42\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c9635cca1cd95aaf278c8cc3112b478d8359393b1cb85e90198461f3fedc28"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: plugin/plugin_driver.rs: FileTooLong \u2014 708 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 81% of them inside a single declaration: PluginDriver (2 blocks, 27-929). The bar is 500 significant lines; this is 208 over it, 1.42\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/plugin/plugin_driver.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf7b726b1ae2be3ae126f14f0d413be5ec950ef2a4df8fe6e8b1b0d617d2d106"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: roadmap.TimelineCpm: FunctionTooLong \u2014 TimelineCpm runs 139 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 39 over it, 1.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"website/src/pages/roadmap.tsx"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e363858bdcd7290b8b53248e77d142967e1c0768c3353a38040f0a1a28e1996e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Resolver: ClassTooLong \u2014 543 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 18 methods, 3 blocks, lines 52-864. The bar is 400 significant lines; this is 143 over it, 1.36\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"084646bd8b8df4e0d3720ca48bba95046454136ee3e40f1976d051907c0b22cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VueJsxTransformVisitor.transform_children: MethodTooLong \u2014 transform_children runs 135 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d900a6f26efdca468e2ba4c561d9066040f107c5ef5ae5ed6582b9d956bd88"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl: FunctionTooLong \u2014 farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl runs 134 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"220e7eb2dffb0553966c6f4c292f6b85e8771d0528dbc9ed32ad9b8a84042b85"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_toolkit::script::concatenate_modules::strip_modules_asts: FunctionTooLong \u2014 farmfe_toolkit::script::concatenate_modules::strip_modules_asts runs 134 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/mod.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c193b7c59da31221556342ba58b0eb3293b543ff9ff0e8029ca24e48eb54e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js/vite-plugin-adapter.ts: FileTooLong \u2014 664 significant lines (blank, comment-only and punctuation-only lines excluded), about 86% of them inside a single declaration: VitePluginAdapter (100-976). The bar is 500 significant lines; this is 164 over it, 1.33\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dff6ebff73c334d41bbc195fb2f1eb35d00819112122eed9e3ebd0a044d6cfda"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Compiler.update: MethodTooLong \u2014 update runs 130 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 30 over it, 1.30\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/mod.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"a790f4e20251f53cc0d2e9b7ea3b0230098beb783f3e55a00a41fdd07b59ef33"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SideEffectsAnalyzer.visit_expr: MethodTooLong \u2014 visit_expr runs 125 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/statement_graph/analyze_statement_side_effects.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c97f38c142f6bf2bcde89774074912a8829b498a4d374a57a2527df6aea6930"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: create_farm::utils::colors: TooManyFunctions \u2014 37 free functions. The bar is 30 free functions; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/utils/colors.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b6999f4d3c9311f78fc1575391638f58d859206dddb380cf667959e480ffaeb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_compiler::update::handle_update_modules::handle_update_modules: FunctionTooLong \u2014 farmfe_compiler::update::handle_update_modules::handle_update_modules runs 123 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/handle_update_modules.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29a0638cd88ea48b9c1b79ab03a7ee8149edc89a9362b92deb1b6fb5807090f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FarmPluginCss.transform: MethodTooLong \u2014 transform runs 122 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"133515918420ef8460d49023e7be40bf97e87c4fedbd3e15a74ab11d42ac0269"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 602 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 102 over it, 1.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b41c14d474c56b9962393b456d540ede114a978643423697bfb1e61b47570e17"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_ecosystem_tailwindcss::candidate::parse_candidate: FunctionTooLong \u2014 farmfe_ecosystem_tailwindcss::candidate::parse_candidate runs 120 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/candidate.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dec385d4a2933fc5af2ab908ccd8b1b01166140d54f624159846bddd3c5514a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_export_statements: FunctionTooLong \u2014 farmfe_toolkit::script::concatenate_modules::strip_module_decl::strip_export_statements runs 119 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/strip_module_decl.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"4856ade840775267a32288311a51a258f38fbeefa85cca9fc3307591ccea4e97"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: concatenate_modules/handle_external_modules.rs: FileTooLong \u2014 592 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 92 over it, 1.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad7cfed535c75fc83e4bec21cddf210e4ec60eaa1a81e0a26c1bfdccb74f1c5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resolver.rs: FileTooLong \u2014 591 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 92% of them inside a single declaration: Resolver (3 blocks, 52-864). The bar is 500 significant lines; this is 91 over it, 1.18\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a208b01291e10ccb0daddab2d36bce615bb19cf70d503477742f4b7457123fc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FarmfePluginIcons.load: MethodTooLong \u2014 load runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/lib.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"656e8d12da9df2b47f483f49b2be18638548be495d3495d65a450d3cac45827a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/overlay.ts: FileTooLong \u2014 584 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 84 over it, 1.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/overlay.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8ee985b7d719938c9df446d6cd0b6fe1aa9f4d93bc2d27af2abda9db3a51aab"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ModuleGraph: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb43519f2af35c564e19aef18c6e89da7ce228d8c33fd29444aef4d543de04e1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_ecosystem_tailwindcss::attribute_selector_parser::parse: FunctionTooLong \u2014 farmfe_ecosystem_tailwindcss::attribute_selector_parser::parse runs 116 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/attribute_selector_parser.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f7fc7d75042093d0c53b769dcd7fa6628e3f94c97bbbb63ebb460b8fe5ae2b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 562 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 72% of them inside a single declaration: FarmPluginCss (3 blocks, 169-736). The bar is 500 significant lines; this is 62 over it, 1.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bfa60677d67b7a481c1815b7e159102ce48c632b0c7eadc229e740473772755"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: index.farmPlugin: FunctionTooLong \u2014 farmPlugin runs 112 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/vuetify/src/index.ts"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"2605308c3fcc728b15b76bbf6be9a46edfd9de774ca50ad67e9157498c6998da"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VueJsxTransformVisitor.infer_runtime_type: MethodTooLong \u2014 infer_runtime_type runs 112 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23ab39521a637ef57d9d2919dbc4a010fdcd4e24134863cd62a0c4085bdcdcf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: update/mod.rs: FileTooLong \u2014 555 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 79% of them inside a single declaration: Compiler (78-690). The bar is 500 significant lines; this is 55 over it, 1.11\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64bc045905ba02eaf6f9f4984e8f135f50100181db93dab90b83b6586c769b0a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VueJsxTransformVisitor.extract_props_type: MethodTooLong \u2014 extract_props_type runs 111 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"376d3d969f4131b278c2be126c395d0ad82980f1a5d2cb6e149aa4a180122eec"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_ecosystem_tailwindcss::selector_parser::parse: FunctionTooLong \u2014 farmfe_ecosystem_tailwindcss::selector_parser::parse runs 107 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/selector_parser.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"10f4cce4d16e607392e509c868d9fe801cf8a06fd3fdac66e71795c1ee0bda75"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: farmfe_ecosystem_tailwindcss::utils::infer_data_type: TooManyFunctions \u2014 32 free functions. The bar is 30 free functions; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/infer_data_type.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"951a536e2fd9bf7264fc3d352befedf8ce9b3513ca58a1c9dac5f3b3786bc480"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_ecosystem_tailwindcss::utils::math_operators::add_whitespace_around_math_operators: FunctionTooLong \u2014 farmfe_ecosystem_tailwindcss::utils::math_operators::add_whitespace_around_math_operators runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/math_operators.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5dbe1bbd8bf0901f972a716c568d6c95944a2ee08b6462318d547525f8fe9d6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FarmfePluginCompress.finalize_resources: MethodTooLong \u2014 finalize_resources runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/compress/src/lib.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee7321ffbdef35a808dc952c96510d55edcb7d6091721085eca2fadfedabe57"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Compiler: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/compiler/index.ts"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ecee364dae7c979aca4803ba9e4eb89b96d0450d78fe0dac2242d06e1783325"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all: FunctionTooLong \u2014 farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d0a0ea342a511b2aed46d3304a9072bc0c6c21f20fea0c5b7e38c85ff83382"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_toolkit::script::module2cjs::transform_export_named: FunctionTooLong \u2014 farmfe_toolkit::script::module2cjs::transform_export_named runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/module2cjs.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4452843adb602c7f77f1cd4a2d2ecbfa4440415dcb0d93a500606a2c649521"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: normalize-persistent-cache.normalizePersistentCache: FunctionTooLong \u2014 normalizePersistentCache runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-persistent-cache.ts"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"49f41a50acfa81d568fe931670625b288dc33ae77543f4cdf9d441ef45cece9a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FarmPluginCss: ClassTooLong \u2014 404 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 2 methods, 3 blocks, lines 169-736. The bar is 400 significant lines; this is 4 over it, 1.01\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"79fcb14b8da1cae9d604b4bd0175d53174e1fdd333db569e5aa89e2844d01d3a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: farmfe_plugin_auto_import::parser::scan_exports::scan_exports: FunctionTooLong \u2014 farmfe_plugin_auto_import::parser::scan_exports::scan_exports runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_exports.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d88843c8184f56045373f2907ce3b59f491cee3129e9b7e28a5699478e9216"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (16 corresponding lines): rust-plugins/compress/src/utils.rs:41-57 | rust-plugins/compress/src/utils.rs:59-75 \u2014 These two members are one piece of code written twice and then edited apart: 16 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/compress/src/utils.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b73be17868f425911b4466ee3b47249e5da9d08ae291746d437557ea7cc6b8c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): crates/toolkit/src/script/module2cjs.rs:942-966 | crates/toolkit/src/script/module2cjs.rs:992-1015 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/module2cjs.rs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"543b6edbc71853729b9c06fd9287dbf19c970cfd388c5266b42adde1d26baf37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 2): rust-ecosystem/tailwindcss/src/utils/is_valid_arbitrary.rs:27-50 | rust-ecosystem/tailwindcss/src/utils/segment.rs:49-71 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utils/is_valid_arbitrary.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"55809d56a3b83d6065db13d15bb7610f9999ec567b6aefc875bbe69074d760d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): rust-ecosystem/tailwindcss-node/src/resolve.rs:122-144 | rust-ecosystem/tailwindcss-node/src/resolve.rs:156-178 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/resolve.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b0255519d047ab64313bbf056656a0e97adcdb56d8ac059314a08037f71abb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): rust-plugins/auto-import/src/parser/generate_dts.rs:71-93 | rust-plugins/react-components/src/generate_dts.rs:74-96 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/generate_dts.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae310f30df9c52159305076e3c75e255d52c810b71ac7ac060006fc7cfed32f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201321 lines \u00D7 2): crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs:673-693 | crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs:705-720 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"7070ee4622cdf5f536e6803d84f5b8b1c0bd7fbec541045ce7f9d04eb97ceac0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust-plugins/auto-import/src/lib.rs:57-77 | rust-plugins/react-components/src/lib.rs:73-93 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/lib.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33d24f2e88b575ec737d81ffbc77596d2f9b157e1ca919ec5992092eb4dbde0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:82-102 | rust-plugins/svgr/src/svg_builder.rs:95-115 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"234c805a0de459864040ed83ba25e6eb16b90dcb5eabbad3e9be9cc7e3ba4779"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): crates/plugin_tree_shake/src/tree_shake_modules.rs:468-487 | crates/plugin_tree_shake/src/tree_shake_modules.rs:557-575 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/tree_shake_modules.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f414c857b1a7f217402e09992ffca8131d688922ee2a5b3ca83e256eaae8c5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:479-497 | rust-plugins/vue-jsx/src/resolve_type.rs:511-529 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"485b0762fa025f7e00a7510e2ea7e03fb0918ed54789b1dad2830a069eeb3714"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): crates/plugin_partial_bundling/src/merge_module_pots.rs:280-297 | crates/plugin_partial_bundling/src/merge_module_pots.rs:302-318 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/merge_module_pots.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"6637330907e4bc1475f212f44ed0a56c4647d605eb3d2e56e6f79cad16f2b387"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust-plugins/auto-import/src/parser/parse.rs:407-424 | rust-plugins/auto-import/src/parser/parse.rs:477-494 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5696f44c942160b1dd099eef7772fa0ab6510dea06dd9f18fc7b5fea131126"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:758-775 | rust-plugins/vue-jsx/src/resolve_type.rs:908-925 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa2885d3bf6a81db1be2c69674db238e5586bcc8c5e91d98d1adbecf4a870f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): crates/compiler/src/build/mod.rs:681-697 | crates/compiler/src/update/mod.rs:739-755 \u2014 \u0060crates/compiler/src/build/mod.rs\u0060 and \u0060crates/compiler/src/update/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 40 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/mod.rs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed6aa94075832eb61c397a90cebb6a267d1efa1bbee512552fc096655202a2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): crates/toolkit/src/css.rs:131-147 | crates/toolkit/src/script/merge_swc_globals.rs:72-88 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/css.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc024939bea9bc760a381a82d526b968059d1e098a5505550b80b6f90abb64f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:201-217 | rust-plugins/vue-jsx/src/resolve_type.rs:233-249 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"23af3b0e585abd4962b1ec5f941f5e7d2c067cb20f8b122a42e90755b1c55a89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust-ecosystem/tailwindcss/src/design_system.rs:183-198 | rust-ecosystem/tailwindcss/src/design_system.rs:227-242 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/design_system.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"205113f365638ea4ce16adc8163cd845d571e1f6c8072228303b278aaf56dde4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): rust-plugins/react-components/src/lib.rs:193-208 | rust-plugins/strip/src/lib.rs:131-145 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/react-components/src/lib.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"72264f529b6e4330c99e71d423610c41513cc3dc2f627c5aba891a379ee5d775"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust-plugins/vue-jsx/src/directive.rs:158-173 | rust-plugins/vue-jsx/src/directive.rs:184-199 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/directive.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"761c17b422ef28b393fed96eece85f954b4e13da1689b90355a0b5a2f8759696"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/compiler/src/build/finalize_module_graph.rs:63-77 | crates/compiler/src/update/finalize_module_graph.rs:54-68 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/finalize_module_graph.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"44cf9c75c311de6a3dfa339244e3a72a6a011edf7ba26acedf1fb39c9f2672ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): crates/plugin_runtime/src/render_resource_pot/external.rs:83-97 | crates/plugin_runtime/src/render_resource_pot/external.rs:129-141 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/external.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"02c28b2dccf7cef4eeecbd4e8611f435bfbf99a0e2ecce6b5b947fac907daa7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/testing_helpers/src/lib.rs:78-92 | crates/testing_helpers/src/lib.rs:207-221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/testing_helpers/src/lib.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2bf76b1af7fc760c0e527a94b7083cc45e5c816409e365374499764c4626ae3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust-plugins/compress/src/utils.rs:43-57 | rust-plugins/compress/src/utils.rs:61-75 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/compress/src/utils.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"665b034d76665d4ea32ba5875156d6e71e8e54f2d324772ccbd84d4452c1f65c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/compiler/src/build/mod.rs:169-182 | crates/compiler/src/update/mod.rs:229-242 \u2014 \u0060crates/compiler/src/build/mod.rs\u0060 and \u0060crates/compiler/src/update/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 40 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/mod.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d363b720ed2628d89d43820ccec73aab8c05795592c394c064429da56ff47d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/plugin_html/src/deps_analyzer.rs:116-129 | crates/plugin_html/src/deps_analyzer.rs:172-185 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_html/src/deps_analyzer.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2c91061a349f73a03fe3d600c79219ac8e45d32f075670878793029137b6f53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/plugin_library/src/lib.rs:462-475 | crates/plugin_library/src/lib.rs:494-507 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/lib.rs"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"984424c77171b9f2159bdb29eb310481ce870fb85da4525ee794d4cd45a59650"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): crates/plugin_resolve/src/resolver/exports.rs:137-150 | crates/plugin_resolve/src/resolver/exports.rs:183-195 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver/exports.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"48e2f36c6f75ae45912236944627023a6d590b258f21211d903afc15a6a8935d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/swc_transformer_import_glob/src/lib.rs:194-207 | crates/swc_transformer_import_glob/src/lib.rs:220-233 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"e945194fbb9919f24dc6b1ce10e7299b944b5e6707a251f8d02e48d7b9503267"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust-ecosystem/tailwindcss/src/candidate.rs:292-305 | rust-ecosystem/tailwindcss/src/candidate.rs:309-322 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/candidate.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a33017f0fe065d2f9f653faa6b98240cd335b790379d15fd1069b28b56d907f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust-plugins/auto-import/src/lib.rs:137-150 | rust-plugins/strip/src/lib.rs:61-74 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/lib.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"523dea09d3dc5c38bba5cebeccd6cb4b270768bb9d8294eb5f35d6a18d96441a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust-plugins/vue-jsx/src/directive.rs:93-106 | rust-plugins/vue-jsx/src/directive.rs:241-254 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/directive.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8788b26a20cb04ad881d237ce08600eb3b95c10bc0440669e3dc342b400646a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/core/src/module/module_graph.rs:391-403 | crates/core/src/module/module_graph.rs:425-437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"66930c42001cd4acebbae270098eb25d8b6d4a611dbf45a95f273a5c9c77be68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/plugin_script_meta/src/find_async_modules.rs:20-32 | crates/plugin_script_meta/src/find_async_modules.rs:71-83 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script_meta/src/find_async_modules.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6c78f67c59943076890bc6594703f7465993ae190be25a2d56c90eb76cbbf90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/toolkit/src/runtime.rs:74-86 | crates/toolkit/src/runtime.rs:107-119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/runtime.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4c475ba421994a732b6c36fb9ad6d89960069383d8ff22c6212bf9a680aca5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust-plugins/auto-import/src/parser/parse.rs:402-413 | rust-plugins/auto-import/src/parser/parse.rs:437-448 | rust-plugins/auto-import/src/parser/parse.rs:472-483 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"038eef9615727a19130fd01132de24180f5aabf9f62c22e56110492528b45f6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/compiler/src/build/module_cache.rs:343-354 | crates/compiler/src/build/module_cache.rs:379-390 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/module_cache.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"98960de2677b5500c669dabe976893f1f3890cc7fae9f39c9ce402e54ac4d786"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): crates/core/src/module/module_graph.rs:474-482 | crates/core/src/module/module_group.rs:117-128 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"9742b7b637b0d1ee4e7095703e8e8a1c8b83812510049479f029c2c4704f7782"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/node/src/plugin_adapters/js_plugin_adapter/thread_safe_js_plugin_hook.rs:354-365 | crates/node/src/plugin_adapters/js_plugin_adapter/thread_safe_js_plugin_hook.rs:395-406 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/plugin_adapters/js_plugin_adapter/thread_safe_js_plugin_hook.rs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda0ddc9765b58bdf94a1ad8da8648f89c92527fef840be99d40ccd569415d9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs:376-387 | rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs:389-400 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6b95d7e007d107bddd55cc0cf5ad6b821cabea4b9e0f38a14606f44a87c834e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust-ecosystem/tailwindcss/src/utilities.rs:450-461 | rust-ecosystem/tailwindcss/src/utilities.rs:608-619 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d56ce9cbc767ecf94b8e37248a91b15d66fa2c6d31c79d7b36e0fc148aca050"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust-plugins/react-components/src/insert_import.rs:197-208 | rust-plugins/react-components/src/insert_import.rs:213-224 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/react-components/src/insert_import.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d6228280a19954237fd3757712df5a4e4293dd81e2322a82637a6a2ec280e5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust-plugins/auto-import/src/parser/parse.rs:411-421 | rust-plugins/auto-import/src/parser/parse.rs:481-491 | rust-plugins/react-components/src/find_local_components.rs:321-331 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e09eddd89b8cc0e69acb630d4b8d627fe2afb0dead4f1890351332c5b833c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/core/src/cache/module_cache/mutable_modules.rs:118-128 | crates/core/src/cache/resource_cache/resource_pot.rs:76-86 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/cache/module_cache/mutable_modules.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbae13198a52373e98485d9df073518b2081d8ceda0863dcb8d9e4bb457ed429"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/plugin_partial_bundling/src/analyze_module_graph.rs:122-132 | crates/plugin_partial_bundling/src/analyze_module_graph.rs:165-175 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/analyze_module_graph.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04920ea502877a1552dc2f9a0e2a4ac5ea6f68e5991e26e289bbe9258a2faae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust-ecosystem/tailwindcss/src/utilities.rs:1397-1407 | rust-ecosystem/tailwindcss/src/utilities.rs:1431-1441 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":1397}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8fbc66f8658a1fc2e826d2f5b666b38fbf38b39eeedc53d774a05d64d9b88d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/core/src/module/module_graph.rs:243-252 | crates/core/src/module/module_graph.rs:513-522 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f39c60f597664e77597dfbffb834ed00ad4a7e641f048f71c72cb52bcf9b4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): crates/core/src/module/watch_graph.rs:128-134 | crates/core/src/module/watch_graph.rs:149-158 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/watch_graph.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"23317fb11d8105911c5436f5b82a99704a25a9bb1044c152b3c5d4a6c568c40a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/plugin_css/src/lib.rs:660-669 | crates/plugin_script/src/lib.rs:565-575 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"371205e49a07866d877c764460b6516e4f6bd54ba2a8e3c5ba93c30add32fc1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): crates/plugin_css/src/lib.rs:669-678 | crates/plugin_script/src/lib.rs:580-587 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70651230eda48e5b143d9416968e7f2812f01c2086adff6f71dd3bfb97b7217"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/toolkit/src/script/analyze_statement/statement_info.rs:81-90 | crates/toolkit/src/script/analyze_statement/statement_info.rs:92-101 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/analyze_statement/statement_info.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d3dd8fb82d6ebedc4cb2b616a259ca1eecbc7f5c1e182831e82da5ae315e6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust-plugins/auto-import/src/finish_imports.rs:25-34 | rust-plugins/react-components/src/finish_components.rs:29-38 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/finish_imports.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd069a5575a29c64db5bc10be09dd42f08db26fcb1084b1820ccec28288c144c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:1008-1017 | rust-plugins/vue-jsx/src/resolve_type.rs:1048-1056 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"29430bb78eee5e8f11aa7e72c5d246dd2bddb065690b97697319485a23bd7c65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/compiler/src/build/mod.rs:557-565 | crates/compiler/src/update/mod.rs:486-494 \u2014 \u0060crates/compiler/src/build/mod.rs\u0060 and \u0060crates/compiler/src/update/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 40 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/mod.rs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f3a92d9df085f56dc65aacbf9a249d7b5dda5d5a7a7ee2f03bf8f13bc09927"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): crates/core/src/module/module_graph.rs:520-526 | crates/core/src/module/module_graph.rs:569-577 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c59a54729b6ff6f29d415bd4bd1a475f146c360f84e0481673c49b1cb8971db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): crates/plugin_runtime/src/render_resource_pot/source_replacer.rs:187-194 | crates/plugin_runtime/src/render_resource_pot/source_replacer.rs:268-276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/source_replacer.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"96725d6c1c4fe25fd792c0bef95d5a85c5d999018cdf7812dbcbe80552300aa7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust-ecosystem/tailwindcss/src/candidate.rs:381-389 | rust-ecosystem/tailwindcss/src/variants.rs:637-644 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/candidate.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6f9d9d2130f98851b3587a8447aea79503fcf4a016e17b6aed80477371f2f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust-plugins/auto-import/src/parser/scan_exports.rs:55-63 | rust-plugins/react-components/src/find_local_components.rs:50-58 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_exports.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d66419281cd61ee995cca4cc59480a42dd6627939c518e66e06ba7a508e76e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): crates/plugin_library/src/formats/esm.rs:47-53 | crates/plugin_library/src/formats/umd.rs:40-47 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/formats/esm.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f5784c429d57845d22aae84062361052caab037be59a11787e9ac3159cc6aec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/plugin_partial_bundling/src/analyze_module_graph.rs:44-51 | crates/plugin_partial_bundling/src/analyze_module_graph.rs:67-74 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_partial_bundling/src/analyze_module_graph.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ef4eb24205be2821f26e04183d627c7a3c73bcc6dec97578ff3a8c98077c16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:372-379 | rust-plugins/vue-jsx/src/resolve_type.rs:411-418 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea43f823985c5c2e9bdd089581bfefbebf2922e0d6884b6a5826c92f3e3ff205"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:432-439 | rust-plugins/vue-jsx/src/resolve_type.rs:454-461 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"213e09216558230b071a844425da13564b431a0565f63eadcad954ccd7167901"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/plugin_runtime/src/render_resource_pot/source_replacer.rs:130-136 | crates/plugin_runtime/src/render_resource_pot/source_replacer.rs:267-273 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/source_replacer.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"f263b8b665ce1167e703e767b2d6ba4bcbc69c57148ed13712cac3dd62e41ef8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust-plugins/dsv/src/lib.rs:69-74 | rust-plugins/image/src/lib.rs:46-51 | rust-plugins/react-components/src/lib.rs:157-162 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/dsv/src/lib.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5ce7b4845d749c8de148975adf5c6b68a573437265d9c815b4c0e06e07ecb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/core/src/module/module_graph.rs:689-694 | crates/core/src/module/module_group.rs:139-144 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"987e183e3d40f0d1540d26907fe3b79095ae9607d917e27964c35ec1251c0a97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/core/src/module/module_graph.rs:697-702 | crates/core/src/module/module_group.rs:155-160 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8a6eb8068fbe099d9651e9a75646b222f3f6f154770ed323191f968e82f7f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/plugin_runtime/src/import_meta_visitor.rs:78-83 | crates/plugin_tree_shake/src/remove_hot_update.rs:29-34 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/import_meta_visitor.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"630c3c708def794852186cee2d37ea266ace60ccdcc1337e15e118a0ecf2724d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/toolkit/src/script/concatenate_modules/unique_idents.rs:218-223 | crates/toolkit/src/script/concatenate_modules/unique_idents.rs:237-242 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/unique_idents.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"39aa230aac2a1852b424e6006d1972844d4ab4c46c7a366860e3fb281f3a7fea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-plugins/vue-jsx/src/lib.rs:1048-1053 | rust-plugins/vue-jsx/src/lib.rs:1120-1125 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/lib.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ac18b946a63feea4dd5f99c1ba001a6cad8445ac98f020f3c3e962a7370be4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust-plugins/icons/src/lib.rs:138-142 | rust-plugins/icons/src/lib.rs:212-216 | rust-plugins/svgr/src/lib.rs:85-89 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/lib.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c064fd2aac58084b0bed5d61ed6e93c84485494875992eb2732d9d68c02093f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust-plugins/auto-import/src/parser/scan_dirs_exports.rs:39-43 | rust-plugins/react-components/src/find_local_components.rs:364-368 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_dirs_exports.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"036d6552ef9e62dc74585b1a8cbf6cfd49bf86033dfc07208f1461227525cf21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:365-369 | rust-plugins/vue-jsx/src/resolve_type.rs:404-408 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61f7fc60ba507a0bdecdde36cc81c66c41ae104fec6d52a2f9b86f269080673"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/core/src/module/meta_data/mod.rs:111-117 | crates/core/src/resource/meta_data/mod.rs:72-78 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/meta_data/mod.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"762f1477f237599cdccddd34646a2b2df04abc38cf4a0982402c49e4b3e24ab0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/node/src/plugin_adapters/js_plugin_adapter/hooks/augment_resource_hash.rs:61-74 | crates/node/src/plugin_adapters/js_plugin_adapter/hooks/process_rendered_resource_pot.rs:109-122 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/plugin_adapters/js_plugin_adapter/hooks/augment_resource_hash.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"52951cdf28384a102efac141f2c3481f31a2c43f5ce7b1f3078f1b516267b74d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/plugin_html/src/deps_analyzer.rs:34-40 | crates/plugin_script/src/deps_analyzer.rs:45-51 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_html/src/deps_analyzer.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff839a80bc97b9e705038a1f71a5860509a953f538c2a68774a9b44ae51c833"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust-ecosystem/tailwindcss/src/selector_parser.rs:242-248 | rust-ecosystem/tailwindcss/src/value_parser.rs:190-196 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/selector_parser.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"b142424c8a70696717b8fe3c5bb88d5c8193209cbff914c3db2635fd0dcb9499"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-plugins/auto-import/src/lib.rs:44-49 | rust-plugins/react-components/src/lib.rs:60-65 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/lib.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"780b6dab0790425e099cc8187558bb63578dc83bea1565ad85e6141d2a41b481"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust-plugins/auto-import/src/parser/generate_dts.rs:95-102 | rust-plugins/react-components/src/generate_dts.rs:98-105 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/generate_dts.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5abdc753cde4b5e111cc7363e9e0e281c5aaf3c7079c3ef89c1b3f63097858e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust-plugins/auto-import/src/parser/scan_exports.rs:69-77 | rust-plugins/react-components/src/find_local_components.rs:169-177 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_exports.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"82061b8f9da9e53f763a6db8ce0477dcee1cd21515fea75dc9d8e79a628469da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:33-38 | rust-plugins/svgr/src/svg_builder.rs:46-51 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28294a41cfdc9494dd04263c8f93de436870320c2dd5f83db4bea4bd432701a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:40-48 | rust-plugins/svgr/src/svg_builder.rs:53-61 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b00e2f5ba988ce3df2c04897cabd84f63c1ba1647a45c6016cbe1b93466a615"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:50-55 | rust-plugins/svgr/src/svg_builder.rs:63-68 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64f682a06219e321f57a55050d1853e7fd1af30f24841fe4fbadb0919879456"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:57-62 | rust-plugins/svgr/src/svg_builder.rs:70-75 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0d5d800c062f4dc04db91b80e1a5bc7ce6a71962fd788c3f796513fab5ce7f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:64-72 | rust-plugins/svgr/src/svg_builder.rs:77-85 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee3b8678b3db8cba5a039f3e8daa758ff57dc53adca36b73abf9997616f0006f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:74-79 | rust-plugins/svgr/src/svg_builder.rs:87-92 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df6aaa1532c6b647a7e86fb4b9b5c0c5050f0d6de2b4bf457f80d1c9df067ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:104-114 | rust-plugins/svgr/src/svg_builder.rs:117-127 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0d7f63c0a64277ec409f90b49dc010d92a2557ab7ef818059295abb5a2cb32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust-plugins/icons/src/loader/svg_builder.rs:116-120 | rust-plugins/svgr/src/svg_builder.rs:144-148 \u2014 before extracting anything, compare \u0060rust-plugins/icons/src/loader/svg_builder.rs\u0060 and \u0060rust-plugins/svgr/src/svg_builder.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 79 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/loader/svg_builder.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"432a9fd13f4d0592fc1b3105aee08daf2a1678d0b272f6d39981e9f32781f431"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust-plugins/icons/src/compiler/react.rs:5-16 | rust-plugins/svgr/src/react_compiler.rs:10-22 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/compiler/react.rs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e970128a28c97b540383eeef3941fabd7fb48c8034f1e50897c3c4b28e7023"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/core/src/plugin/plugin_driver.rs:220-231 | crates/core/src/plugin/plugin_driver.rs:900-912 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/plugin/plugin_driver.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"2714af8de7b5cd1ebe247fc8bbb7233752b1e40a250abd7ed8f1aaa378fa9c20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/core/src/module/module_graph.rs:291-301 | crates/core/src/module/module_graph.rs:429-440 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1da50f0234f61dd9f425a5187f86f1242b4e115bcb0e1ec8bfc63104e82c08d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/create-farm-rs/src/lib.rs:118-128 | crates/create-farm-rs/src/lib.rs:133-143 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/src/lib.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"d658840ddb0c0e46836b69a5b4e6cb2da21669c5ea870e78b0912d1834c226bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/testing_helpers/src/lib.rs:247-256 | crates/testing_helpers/src/lib.rs:262-272 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/testing_helpers/src/lib.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"837d1cc35f71d2ffd213728d4c47352688ce67d9612a77afd1f257bd15537849"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust-plugins/sass/src/rebase_urls.rs:64-73 | rust-plugins/sass/src/rebase_urls.rs:84-94 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/sass/src/rebase_urls.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d9c791850fe1ec0c6314e997c1c97414aa5394265d68a1923c1953cdebf664"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust-ecosystem/tailwindcss/src/utilities.rs:1189-1199 | rust-ecosystem/tailwindcss/src/utilities.rs:1211-1221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"b889bf7805865ef3bcb0b8ad48a604acb4655ee8c64ee941896ca26738f6e016"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/compiler/src/update/handle_update_modules.rs:34-43 | crates/compiler/src/update/handle_update_modules.rs:165-174 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/handle_update_modules.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"133794209cfbd9e4ac03d87340a96023fb5acad90e5e7203905f9c7e9efde477"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust-plugins/auto-import/src/parser/scan_exports.rs:179-186 | rust-plugins/auto-import/src/parser/scan_exports.rs:190-198 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/scan_exports.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd828a2a963166dff19be1b1e1aa1de5a709aef175de97b1ece33417cb29911"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs:133-141 | rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs:229-237 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/transform_svg_component/variables.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"835409416ee28c350e228825d0d399af5aaca793722c8643979a12aa683ce856"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust-ecosystem/tailwindcss-node/src/compile.rs:111-119 | rust-ecosystem/tailwindcss-node/src/compile.rs:128-136 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/compile.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee4b6e0f2f2ef65f61634a70249c6e9c2ea3e4f0b7a3862cab5371e32b326aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): crates/core/src/module/module_graph.rs:287-294 | crates/core/src/module/module_graph.rs:391-398 | crates/core/src/module/module_graph.rs:425-432 | crates/core/src/module/module_graph.rs:446-453 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/module/module_graph.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"03be3d69c464ca8586afee7a86be9e01c75a1e50a82ebd76eece7de3bb005a54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust-ecosystem/tailwindcss/src/utilities.rs:1018-1023 | rust-ecosystem/tailwindcss/src/utilities.rs:1049-1054 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":1018}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7bdefe53412608bceb6ad718b637c5353a34b9b31fb2cd567cb9165610b745"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/node/src/plugin_adapters/js_plugin_adapter/context_methods/vite_get_importers.rs:19-23 | crates/node/src/plugin_adapters/js_plugin_adapter/context_methods/vite_get_modules_by_file.rs:36-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/plugin_adapters/js_plugin_adapter/context_methods/vite_get_importers.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"017a9df353233642b6b7504a0ad79d45608c9d57102820f77f3336c2a4c89fea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust-ecosystem/tailwindcss/src/utilities.rs:1281-1285 | rust-ecosystem/tailwindcss/src/utilities.rs:1295-1299 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/src/utilities.rs"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"97d7cbb6fd30ced03dede698420137fd3e56c8b1ed8538f2c80e0f55fcf09df1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/node/src/plugin_adapters/js_plugin_adapter/context.rs:242-246 | crates/node/src/plugin_adapters/js_plugin_adapter/context.rs:254-258 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/plugin_adapters/js_plugin_adapter/context.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"3898e91e3897d5f945edfda542de1069fa1249806684da029a00b63c5a1c091b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust-plugins/vue-jsx/src/directive.rs:86-92 | rust-plugins/vue-jsx/src/directive.rs:231-237 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/directive.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bc10bbe3b59bf4557ba807e24e22379ae3b33c8d5b720c615608e9f32098d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust-plugins/vue-jsx/src/resolve_type.rs:1144-1148 | rust-plugins/vue-jsx/src/resolve_type.rs:1150-1154 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/src/resolve_type.rs"},"region":{"startLine":1144}}}],"partialFingerprints":{"codehealthFindingId/v1":"eabd4c37548987b2856c930d4776d5fd42a5c4544b42354e44697d9978e0e5cc"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project farmfe_compiler: farmfe_compiler has instability 0.92 with 2 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d1187e03abc808fd6a994d04e6a0c61e0b7522e3e2be0cd2628d050852b63313"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project farmfe_plugin_file_size: farmfe_plugin_file_size has instability 0.83 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"59aee64bdc668b2e4752f216cc2df527eeaf170ac2b32df12eae601cc094b9cc"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project farmfe_plugin_script: farmfe_plugin_script has instability 0.86 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d672e77d343466e6e5dafc041e25132569d0cf17b2f47916e1d63055a1c87b94"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: @farmfe/runtime-plugin-hmr: @farmfe/runtime-plugin-hmr: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7c1dc6b1610caf5b9e82aafb98f1f311ab80c033429cb7f236c69d872cb3de85"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: @farmfe/runtime-plugin-import-meta: @farmfe/runtime-plugin-import-meta: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c1c1890d58748801bad42fe5d0ea87f09961beacec65b7e42edd1f83f98d6692"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: @farmfe/utils: @farmfe/utils: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 2 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1832667d136c2332fc0910a9d0daad1f6961ece8c12999e8137e97adfc8aa26d"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_ecosystem_tailwindcss: farmfe_ecosystem_tailwindcss: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 2 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"33c91bb525a909c2e073eb23e0189b0c3fa6703a2715b5678514aa6a309aac71"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_svgr_rs: farmfe_svgr_rs: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 2 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ddf88f7f597027b06c68686e0dd9ca61d40057976ea54072ad32ac16feee278f"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_utils: farmfe_utils: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 24 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"19450bb849008f6b4ddc4f92d77d3a9cb9534b8974a0336f74cf370bd2ee6cba"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_testing_helpers: farmfe_testing_helpers: abstractness 0.00, instability 0.05, distance 0.95 \u2014 zone of pain \u2014 concrete and depended on by 20 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5e9712723dc9c48009c9d8a8587e91c916e629ca5c61de83fe59707f442921f1"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_toolkit_plugin_types: farmfe_toolkit_plugin_types: abstractness 0.00, instability 0.05, distance 0.95 \u2014 zone of pain \u2014 concrete and depended on by 19 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"94cbc0c4abd4f1b0a430faa7f082955c8691d3fc54fed603a2e7aec1eef83a12"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_toolkit: farmfe_toolkit: abstractness 0.02, instability 0.07, distance 0.91 \u2014 zone of pain \u2014 concrete and depended on by 38 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b73fdecc67e0bd34e4938c5668505176c1e98d7e1f81b9c696061d1945a6f053"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: farmfe_core: farmfe_core: abstractness 0.06, instability 0.06, distance 0.88 \u2014 zone of pain \u2014 concrete and depended on by 46 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"34ded003d3311ce8746704bca688182cf321bb369c076987ef18acc6aad110fd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JsPluginAdapter (LCOM4 11): JsPluginAdapter\u0027s methods fall into 11 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 11 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/plugin_adapters/js_plugin_adapter/mod.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be3ee68230d90bb58b94407c33562d5d04e4a9af8dabb0ed3bc30939c407cfd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FarmPluginCss (LCOM4 8): FarmPluginCss\u0027s methods fall into 8 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 8 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_css/src/lib.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a1577b4b49b50931762fef6789fc6422b341d11e8b4b8fac6833ee88fad494"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FarmPluginScript (LCOM4 7): FarmPluginScript\u0027s methods fall into 7 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 7 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/lib.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fcaecd9ccf2d8a28b4fa1b088f33ec8c2d5aa7ae1ddc7b35f9a80c21d67966"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FarmPluginLibrary (LCOM4 6): FarmPluginLibrary\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/lib.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"c440ef369d38968b01248cd3bf2b64abd33d53b920d3262d3097818480078036"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameVisitor (LCOM4 6): RenameVisitor\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/unique_idents.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"0418c5ff80fe48b4cf23ba9ba084c613defc5228113efc77981e73a03201705c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompilationContext (LCOM4 4): CompilationContext\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/context/mod.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"d83d86ff79fbfa120974ff2ef2d9dcca4918144d504e44b80541a6e9945bfbe2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Binding - should parse config to rust correctly: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/tests/binding.spec.ts"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f7945299e2fd3941cd8b3ef20443cbffa02eb36d3a2893cf9d78610ff994a9"}},{"ruleId":"D13","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c640153d77a0cd8cd5165b1be4305201f3772cc1cb8fc711856ff96d50f55d5f"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D13","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dec0d490eff4c041497d8fbe7718e815cb4af14eada2494d6a83c353cd721fa3"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D13","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4946460e604d938e7ea16fdd435fbee918b58b88572ddab043009dd9969951cb"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/toolkit/src/script/analyze_statement/statement_info.rs: crates/toolkit/src/script/analyze_statement/statement_info.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 37 in farmfe_toolkit::script::analyze_statement::statement_info::analyze_statement_info at line 32. 1 of those changes was a fix/bug commit, and the other 2 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-03-16..2026-06-14, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-03-16 08:34:49 \u002B08:00\u0027 --until=\u00272026-06-14 08:34:49 \u002B08:00\u0027 --full-history --no-merges -- crates/toolkit/src/script/analyze_statement/statement_info.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/analyze_statement/statement_info.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac2a1b32179c994164e7cb74adcf285125984399701b3beea52d01f0f4d5a0f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/compiler/src/generate/render_resource_pots.rs: crates/compiler/src/generate/render_resource_pots.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in farmfe_compiler::generate::render_resource_pots::render_resource_pots_and_generate_resources at line 22. 1 of those changes was a fix/bug commit, and the other 2 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-03-16..2026-06-14, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-03-16 08:34:49 \u002B08:00\u0027 --until=\u00272026-06-14 08:34:49 \u002B08:00\u0027 --full-history --no-merges -- crates/compiler/src/generate/render_resource_pots.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/generate/render_resource_pots.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"690cf7ddd92769403fcd43bc772204371da110990e36dfc0bbbaae5583e2ae14"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/plugin_mangle_exports/src/mangle_exports.rs: crates/plugin_mangle_exports/src/mangle_exports.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in farmfe_plugin_mangle_exports::mangle_exports::update_exports_meta_and_module_decl at line 251. 1 of those changes was a fix/bug commit, and the other 2 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-03-16..2026-06-14, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-03-16 08:34:49 \u002B08:00\u0027 --until=\u00272026-06-14 08:34:49 \u002B08:00\u0027 --full-history --no-merges -- crates/plugin_mangle_exports/src/mangle_exports.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_mangle_exports/src/mangle_exports.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6b5dd570c568daf66d89b87cfbc486f9b6f744d3a129c16d630773bfadd2d6f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs: crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in farmfe_toolkit::script::concatenate_modules::handle_external_modules::handle_ambiguous_export_all at line 603. 1 of those changes was a fix/bug commit, and the other 3 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-03-16..2026-06-14, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-03-16 08:34:49 \u002B08:00\u0027 --until=\u00272026-06-14 08:34:49 \u002B08:00\u0027 --full-history --no-merges -- crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/handle_external_modules.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a493554a519b9bfd8155a04ff9a68a40af12b77ed53779045d44bfa13f6cb9d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/swc_transformer_import_glob/src/lib.rs: crates/swc_transformer_import_glob/src/lib.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in farmfe_swc_transformer_import_glob::get_object_literal at line 821. 1 of those changes was a fix/bug commit, and the other 2 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-03-16..2026-06-14, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-03-16 08:34:49 \u002B08:00\u0027 --until=\u00272026-06-14 08:34:49 \u002B08:00\u0027 --full-history --no-merges -- crates/swc_transformer_import_glob/src/lib.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/swc_transformer_import_glob/src/lib.rs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"9572fcf9f55ea4b653dfdcc280d3a7b2c1de4df0850925cc524c02538944b13f"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 1 significant file(s) lose their only recent owner: crates/core/src/cache/store/disk.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4151b9f52447b254b403c8e72341c9a2ca5594f3d6f6994d532c2fb90cb2a2c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: return of resolve hook should be treated as part of the cache key \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/module_cache.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ccb43a708d4cd0ed83dc6250db113d2bb9c9824387833880c01185d722d88d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO using context.load first for virtual modules, then read file string if context.load returns None \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/build/module_cache.rs"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ef0ba86ee7bf41e02a10145c3c2026db0bb8b03ce3bbe0c96724f4fc634badc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO update these complex 1 2 3 tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/update/diff_and_patch_module_graph/test_patch_module_graph.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"b521a3069a875048e20c4119df57ee88048a28cbc498c1ce4918479107c77586"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO may be different for different platforms threshold will be different linux / macos / windows \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/write/mod.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c82ba9e979e53eb2be3597c91c68f6b1939d3a391d2b11e7104cbc38b6acf15e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO use error::{CompilationError} we need refactor Error mod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/write/mod.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccabec5b2a2c25f2f7e32307472a0ada51f350c67adab000cee986d17e3a27ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO use error::{CompilationError} we need refactor Error mod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/write/mod.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaffcc76d7208b51a9a6a8a794420cc15d6234295e9b8d8ebafa211448e921e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   // TODO add writeBundle write hooks plugin_driver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/write/mod.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"4892355e1144648394157e55e78dc648c170b4352725cd015892e2b2bcee1bb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO try catch error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/src/write/mod.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6085de5b3d71a782c9e68299739612904b4bb02625b15ccb8ea1f3b6706029"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: multiple bundle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/compiler/tests/bundle.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c0bcdc5daa81a062bb7c377fc714d39ba4fdf9f8fc1dc1336b3c233419c54d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache unit test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/cache/module_cache/mutable_modules.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3953041de3e724f21debd16d3370c4b68749cd59e7205444d49545c9edfd7c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO make CacheStore a trait and implement DiskCacheStore or RemoteCacheStore or more. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/cache/store/disk.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"225baedfe92f3b12f9a65adca580b0e918ed4b4a98699a37c18b870f55a466ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO check if it is between 0 and 1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/config/partial_bundling.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf7e3b250d8326c988630a2bac42de012baaf7324e88f67f5e845e6e6b4e4a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO set default to MultipleBundle when multiple bundle is fully supported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/config/output.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e093978c1da83faa5eda1869ff22083ad2540b09a38cc16798c80bb1fe1a6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO optimize string performance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/context/mod.rs"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"747dfb533055e1acc0ee536a1ef7582dbe82f69f2d94ee13802ae05b3cec2365"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO, give the specific recommended plugin of this kind of module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/error/mod.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a3ca7862f588cbddd5716d672d1a0f6ada7c18642391e4ca138f54929d263e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO, give the specific recommended plugin of this kind of module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/error/mod.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e40199b4a59625b55161f089787e47e404962738d490f134be07da564855c4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add potential causes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/error/mod.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a651ca3ad22818ce26bfc168d67430fa0ebfda45850aeb2a02d0ea98e15a1dde"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO optimize using source Error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/core/src/error/mod.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"160dd338d908c436ce98f4e226708010b1f2a534596c72b110428df3b48ffad7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: usage example \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/lib.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ac09776437f80cf5c02e3dc7ec39ac09de88a522031726bc9f8171911d1abd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support other kind of events \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/file_watcher.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c6d4baf4eae9e27bc0ba00645637df975866f5e0daa689042e85cf90b813a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: maybe can prompt for the name of the plugin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/node/src/plugin_adapters/js_plugin_adapter/mod.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"9816ab44443a6a6a3f74c343632be1edd6fa1e0f69bdb43d761602c1c085e100"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support source map \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_define/src/lib.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb1b74fbedfeae18e0ddafd3044125aa99236b7ac5a1661046d3de20a7731de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add a hook collect resource pot import/export info before render resource pot \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/lib.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f15c581adaf8650661251663f5a76a43ce35c6bf9fe78ca398be80b17abc01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support multiple bundle, in multiple bundle, the helper may not be in a separate resource \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/formats/mod.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7668293bb6f5e198ba928f2a302b101c256dcc791494b672bf62aef50f1ae40c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add test case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/formats/cjs.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1964a05a7fd860b470b31fbd2cd633499f5d6e95a2581b8291393fae1b5f5b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add exportStar for cjs entries and entries that reexport from cjs or hybrid modules \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/formats/cjs.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"28733fc25603717ef4daec22b83984a2913438b2df7f343e12396649b208f29a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support multiple bundle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_library/src/formats/cjs.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfa5c8308687e6ffa28f620535f5f4c55a50b503c1e1d310342e968fdf090e95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support css minify options \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_minify/src/minify_resource_pot.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42fe1758024d8f6d81b6e6e0b2efb0ad5dd0542f5713b332e22f699601eb68f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO try read symlink from the resolved path step by step to its parent util the root \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver.rs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b413b27a06e421c816fbb1c5d3b0a16cd53fba7dfe85058d61de46aec6bd60f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO If the current package does not have a name, then look up for the name of the folder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver/exports.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd38e81b9e82d2349063d1c384c0e48c9aa7c87fc85136e97955ab99e15cb1f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO If the current package does not have a name, then look up for the name of the folder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/src/resolver/exports.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b50b53f90695a532052d30288c74fba5e2e04c220a61790d91e7810688b202"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO node environment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/tests/imports.rs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3525c71daf05e7deb4fcee7bae50b373ce5a825c192cf9fe0e583b73c204c5fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO node environment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/tests/imports.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"3146d9ee74ba42319dfc8a34942c4d4fb9b0b0b23f80c39792c2f163c8815872"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO node environment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/tests/imports.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"1918fe98310a648dfc01e76a45858fb084055998af9cec275aba2608250ce8d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO node environment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/tests/imports.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"3867e04224ea14f78af40b22117872dfcff21efd5d1c26e19d768d1166f8e3c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO node environment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_resolve/tests/imports.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"53152855185f8fd66a4d458ea529885396ecd89e982761db9cdd8401c1d90e9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/handle_entry_resources.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"c67fe86f58b66d00679f374152e746100b42a3db0a6b30127f8dc3a0ce053a41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //! replace all \u0060require(\u0027./xxx\u0027)\u0060 and \u0060import(./xxx)\u0060(TODO)\u0027s argument to the actual id. for example \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_runtime/src/render_resource_pot/source_replacer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a553d785744bf0570db813fe543be0f713ee2bc403b0037cdfd76822301e39a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO make it configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/swc_script_transforms.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82e64eda0297cc649cb1ac8622688ff0ecbf7fe25d2ab45cd7a34fadac4d891"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO move this function to farmfe_toolkit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_script/src/lib.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe1dbc440941345cd74db768fa2fbcfdb413721b4409cedba843fe72145e134"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO make css imported asset only handled by static assets to avoid issue: background: url(xx.svg), \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_static_assets/src/lib.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"22dfeff29c3b7d05b6b5a57ac0812a153df8aa56e9cf820c7bd73c3b87f63ba9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO cache tree shake module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_tree_shake/src/module.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"94af7ea731a12ca963c7905fddb186c1f05620fb3dea71eb9a4d184d7697832c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO investigate performance comparison of swc_sourcemap and sourcemap and normalize the usage of sourcemap crate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/sourcemap.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c071e53960b3c38584e19e06dfcec8dc8e13f537f67dd39eacf7685fd40f43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make it configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/sourcemap.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c49cc5c0979e314ba29299f97040611051df12547d788862cee4eeb4c446144"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO print warning for recovered errors later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/html.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"890f311fe0d81de1fed3994161617fd442bcc56f61dd2830af41ba93bf8082e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: print recovered errors as warning \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/css.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"926c9fddff8f49ea815976c5f8acfd482edab6fbbf3721112c8861a957e926cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO cover it with tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/resolve/package_json_loader.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"8139a78872d8507a5c87a733c387f1004c38e22909e3159d41238c4d1ad508aa"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // // xxx \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/toolkit/src/script/concatenate_modules/unique_idents.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d176f2582b5f25019945d6adfddd534ddbf26ed583cfb611f2601712f36fe4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: submit a PR to farm(export default farm) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/electron/src/index.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"810594a798502382c77530c5e2c12ce80406a43a2d1128a8c02927f9540fb576"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: .mjs file ext \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/electron/src/index.ts"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c346308ab84ee964dc0c8d29924694eb4e6d182d79fe3ac6da0abf1f0f866a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: submit a PR to farm(Omit\u003CFarmCliOptions, \u0027server\u0027\u003E \u0026 UserConfig) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/electron/src/index.ts"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d4e3c1ec43f4e36be6cbcbb61d6ca26061099ad4abcf48bcf1b15b2645c26a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // @ts-ignore TODO fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"58250b11d1764a1f3f0f0f268184fc2fe0d19770847aee785b02510f7ed3a29b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // @ts-ignore TODO fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"217c7617dd5bf53c53ed69b96c4ef8dec9759e385ba47133ae44cf57e1ed5ed2"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // /xxx \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8bf61f4bcf6fdbafaa24a87d39dc8dc0f637460c3f6742d4c1fa0b798c57f7"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ./xxx \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e76657ed567c8ed49abef8591d979895832fdfe2ed4f8556b8f694891e1411"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO move to rust \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/index.ts"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"035b4a020c9ada1e7efee97e2cb4283f915bfa72ba9c0ac876f5ff5c9db8599f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add customResolver schema \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/schema.ts"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e2323ca86b4767f066a902efe532461b28c3a9c187ca40e3cd44f0e970b59b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO find latest lock file starting from root \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-persistent-cache.ts"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e32c1b75d1efc96fafb3b3d9759377ac7871eb14ea72e01862e8f3abf06e16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO The priority needs to be redefined. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/index.ts"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"6992c1cad7ea5d8e89c8b56fab192ea7e98050c78aff285aec0ecdd534e3ad78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support order, if a hook has order, it should be split into two plugins \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"06ca4ad327fd4ce5231ff64138e0ef16f74a45d79968a411da94377bd84ddbcd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support relative and absolute external \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a93bfdd38904757695cdb75636e4590e08abb75579d63d2cb0f5e466408210"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO support meta and sideEffects \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b7d5bb29c821c3bd446e54dc6f7cc03858bf73e769716072f7c6e5cdce9118"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO these 2 options are not supported in farm \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-context.ts"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a34762556ecf854c6396112f06ef9c7e4be933d2ada9bc0b13497bda08c6db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO think about vite has two watch options \u0060server.watch\u0060 | \u0060build.watch\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-config.ts"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdfcb0b9e83e69bcbac6e9adcc9021fb8625adc012bffda9e9ddeb6d33e6d3f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO FS.allow FS.deny server.fs.allow server.fs.deny \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/middlewares/static.ts"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"506101b66229b0d0f5bae021a39a827c8193c443625ef659970cedacda58e93b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO add support for customResolver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/plugin-utils.ts"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1cb12026332dfb56fc53c0571150192e14078a50b35a60f8822eb66daa090d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: impl ILogger \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/logger.ts"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28cb343b6ce3b4d107255ae3edb50337cfdb7b29c8e2662f9603f5e058deefe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Optimize hmr boundaries and return values to match vite hmr mode socket return values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/overlay.ts"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a96deeecd63e6d158f63c88f9fc6236857ae5c5826c457407270a43d925579"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Do you want to do an elegant cleaning? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/hmr-client.ts"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b16d0306b4ce95d9b2a42da33b2bbe42681c2084c01e7b1af79461ddadf5af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: custom templates \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/svgr-rs/src/transform_svg_component/mod.rs"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"512f018b45f3f37c515e031f23e85b327d1d62e1ee125ae6fd6b7059161de4f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // as its own at-rule; if unsupported, this test acts as a future TODO. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss/tests/variants.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6bec960ad5a05ab0a585a5d797fd9aec4a9b2164a59d62c9011ac32e208dcc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u6682\u65F6\u4E0D\u652F\u6301\u52A8\u6001\u5BFC\u5165 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/src/parser/parse.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c4371a8a72a653663569c6391ac78cab8952b491d9fb63a3d23232eb390de5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u751F\u6210\u540E\u7F00 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/dts/src/lib.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5701cc578a49141cc48d2115a95c36c5dab2ce04ea58ebef4f1ef429b856f5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO emit_file baseDir \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/dts/src/lib.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dfbe33d268ce203f57cd25204ccb14e1f655f36e718da7ad27ce8b653c3031a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO namespace window.$RefreshReg$ and window.$RefreshSig$ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/react/src/react_refresh.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71f57e904883871ff6badf77642d8575b1bd721c8db7046309701b223ecdc60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO custom react component compiler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/svgr/src/react_compiler.rs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c66bfa445c3df21252eea8f4303e54ce9c1d553416d2ac7c1adb19c2682afe"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D22","level":"warning","message":{"text":"Redundant/Conflicting Logic for Error-to-ModuleId Conversion: \u0060Compiler\u0060 has a setter that takes errors, but a utility function exists to extract module IDs from those same errors. It is unclear if the setter calls the utility or if they are independent. The setter name implies it sets a single ID (\u0060last_fail_module_ids\u0060 is singular type \u0060ModuleId\u0060 but takes a slice), which is semantically confusing.: Remove \u0060Compiler.set_last_fail_module_ids\u0060. Expose a clear \u0060Compiler.get_last_failed_module_id()\u0060 or ensure the utility function is the single source of truth and the Compiler property is updated via a dedicated, clearly named method like \u0060Compiler.record_failure(module_id: ModuleId)\u0060. (signatures: Compiler.set_last_fail_module_ids(errors: \u0026[CompilationError]) | utils.get_module_ids_from_compilation_errors(errors: \u0026[CompilationError]): ModuleId)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0dcc816054f296dce6c344e5577f512cd1c63734f5751e2418055b16f5f61c3c"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent Borrowing API: \u0060ModuleCacheManager\u0060 exposes multiple methods for accessing cached data (\u0060get_cache\u0060, \u0060get_cache_ref\u0060, \u0060get_cache_mut_ref\u0060, \u0060get_cache_mut_option_ref\u0060) with unclear distinctions in ownership/lifetime guarantees compared to the underlying \u0060ModuleMemoryStore\u0060. \u0060get_cache_mut_option_ref\u0060 is particularly confusingly named (returns \u0060RefMut\u0060 but name suggests Option?).: Unify accessors. Use standard Rust patterns: \u0060get\u0060 (value), \u0060get_ref\u0060 (borrow), \u0060get_mut\u0060 (mutable borrow). Remove \u0060get_cache_mut_option_ref\u0060 or rename to \u0060get_mut\u0060 if it returns an Option, but the signature \u0060RefMut\u0060 contradicts the name. (signatures: ModuleCacheManager.get_cache(key: ModuleId): CachedModule | ModuleCacheManager.get_cache_ref(key: ModuleId): Ref | ModuleCacheManager.get_cache_mut_ref(key: ModuleId): RefMut | ModuleCacheManager.get_cache_mut_option_ref(key: ModuleId): RefMut)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b9b32e717fb919076b13d42c582068cf3b140b7eb42fa941bc9a9550aed30187"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent Cache Persistence API: \u0060CacheManager\u0060 has \u0060write_cache()\u0060, but specific managers (\u0060ModuleCacheManager\u0060, etc.) also have \u0060write_cache()\u0060. It is unclear if calling the manager\u0027s write triggers the global write or if they are independent. Additionally, \u0060PluginCacheManager\u0060 has \u0060write_cache_to_disk()\u0060 which is distinct from \u0060write_cache()\u0060, creating confusion about when data is persisted.: Standardize on a single persistence entry point, e.g., \u0060CacheManager.flush()\u0060 or \u0060CacheManager.persist()\u0060. Remove \u0060write_cache\u0060 from sub-managers or make them private/internal. Unify \u0060write_cache\u0060 and \u0060write_cache_to_disk\u0060 naming. (signatures: CacheManager.write_cache() | ModuleCacheManager.write_cache() | ResourceCacheManager.write_cache() | PluginCacheManager.write_cache() | ResourceMemoryStore.write_cache() | ImmutableModulesMemoryStore.new(...) | MutableModulesMemoryStore.new(...))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"60679c8aae6d3aee68e7b21344a16aa688f8433cfd428d892b0dc0b8ca00a083"}},{"ruleId":"D22","level":"warning","message":{"text":"Confusing Constructor Naming: \u0060new_without_internal_plugins\u0060 is a verbose and awkward name for a constructor variant. It suggests a special case rather than a standard builder pattern or factory method.: Use a builder pattern or a static factory method like \u0060Compiler::with_plugins(config, plugins)\u0060 and \u0060Compiler::default(config)\u0060 to avoid the awkward \u0027without\u0027 naming convention. (signatures: Compiler.new(config: Config, plugin_adapters: ThreadPool): Result | Compiler.new_without_internal_plugins(config: Config, plugins: ThreadPool): Result)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e07fbf98206dee1d0a91b059609c2dfe78d7b32f2f814d8c19a5c0b18dca4738"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent Method Naming for Similar Operations: \u0060get_cache_mut_option_ref\u0060 and \u0060get_cache_mut_ref\u0060 both return \u0060RefMut\u0060 but have different names, implying different behavior (likely one returns Option internally or handles missing keys differently), but the naming is not self-evident from the signature.: Rename to \u0060get_mut\u0060 and \u0060get_mut_or_default\u0060 or \u0060get_mut_option\u0060 (if it returns Option\u003CRefMut\u003E). The current names are inconsistent with standard Rust conventions. (signatures: ModuleCacheManager.get_cache_mut_option_ref(key: ModuleId): RefMut | ModuleCacheManager.get_cache_mut_ref(key: ModuleId): RefMut)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e924b2f32a601fdee76fc18da46017c6b3d4c75c41fdce07c5dba48b1781f975"}},{"ruleId":"D26","level":"note","message":{"text":"Projects may be oversized for their cohesion: 1 of 71 project(s) overshoot their size bounds, lowering Project Cohesion to 9.8/10. The most over is \u0060crates/core\u0060 (9385 LoC, 178 public types across 16 directories). Review these for cohesion \u2014 draw the boundary inside the module first (group each responsibility into its own package or directory and keep the cross-boundary members non-public), since splitting a published package moves types between packages and breaks consumers."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d5a94650dc74886a0f1f08eb9fb6775f1fc395279ef7e901c970c9d26f767a72"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e70495bdc0c122f695a2142411e09698f0d6de0da7205e334c2faf83a3e5ee3e"},"properties":{"commitSha":"d3d17defb5568ce5f9ad0887536c8f6b89a90c4a"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"88b3043cfcc38aa9e9daf9a8a1bbb264d3775f28a20e9a7f5552ba2ca00a3f77"},"properties":{"commitSha":"d3d17defb5568ce5f9ad0887536c8f6b89a90c4a"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b00bb097bb7650a654a01076469623f93e8dcefd77ad9aded3868fb3d5f98719"},"properties":{"commitSha":"3cf0cdd9bd8444ece1dd98746fd7ea56d2f980c1"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1f1cb064e99d0eb5d75e5152f942909300b26e7ca9b5532d53bf76ebd2000b3b"},"properties":{"commitSha":"d3d17defb5568ce5f9ad0887536c8f6b89a90c4a"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f613b74d5e7666f75733a21456833bf96364c779563ab2c2c1a26c680c7e359b"},"properties":{"commitSha":"d3d17defb5568ce5f9ad0887536c8f6b89a90c4a"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"59beb04525b23feed96e351647546b496b096cfca5cb6327c3dedd1a2025aeab"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c7628a1ae992ab66511e6a4fd7f2dec4996df17e54815a2a094988a01358b3f8"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb17b69ec1007f3eb89be001fe1db8b9ff56d158ec30d9013887449d05d1f7a9"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"073893b3bc0fa510ec095a3c0a89beb31b9d7123b5c4647efdf01bc8a2b59345"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d6eab37a8a4d9a4d97d2903db4c714cfaf71ca8acd8a974ca666f8e2c742215"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f8008350e024f8219e0ac59c4671f740a77de00160caa61896cde35b9718c87e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3aac53479b3c2e6adbbf6627964312356402e629afb03377c2b411433f4edc58"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31569935e936bde7243efc0680df476cb758ee74cd841f9ce72d362119a8f76c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4ee7c9bf2001505fb772c76c16291735fa4fc7d1536d3b1632726a0df5282611"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"24fe38f91597256fba25491cc40074463f39030b7d2f560483e19576d4e6e1b6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"170a79d6e7763c118a8178d2fdf41b917298ab3c96ff82541b5e4a9ac6e600bf"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a2c4d7e91b12b23d22ec3822fca808c0d7aedae176f693bbbdb30314feebccc7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"68771d8074b9d1a3a2e1d5ad8d381d344c811694b1e0eeeb44d05806069768e0"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d6a9c804d8e219c0800c37bc954450d019f87f3c5484e31a17b93733c5c49269"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"815f0672e186089b9c2e96fcf31c07c8b5698c2c3663f5683db82661274dbb9e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4dc458afbbd2ddbdfdd97969f7b4ce66ae1f9473c9cba315b8a9cbae74072d7e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"aecddea90fd1d3fa791f0ca0ef3191da5082891f7005bdee0cd419f2a9cef577"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d9107388abccc45b6fe5ec4e76dedfccc55a58b7fbfff1e03e2d0949ad4b5e7f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9f59e90d415aaa0f788b101f54dfabcf62d22aef43a0649cc301191bed33c0c1"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ebd8c711f758d70031ac1c6dc10135dfd8329ec08ac05fed2e79f80b6f2f64d9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e28c86575854deb7dd7e27150c550c7d07563a1225e00f14a6eb65dc29dcc13"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"72d7d930c195053350ea6a6a61b7d5dfb4ca28f872bf42976e836e01dbeb4fff"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"651687bac0ca124ddf695c6177294e3ac23c501973baf639d1487ccd7604a9af"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1ab3b430603fe6b62d57a830ccb8ecb7367453b9933bf2aa9fcf9fbd39080b84"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"728a6b311d5ebd707c16f93efedc95f4ec2a9305f9b0bffa3a12f5c688881c4d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4c415c8cb99830775e95de34d2db517a9970fa24ed59ef3126e99ec1999b3655"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"781759436845f6d14198f5958cf9d34e5d90dee66202a58571ab734c07db7328"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"329a99b6c455b66c3ff23219ad2604da8c1c5f87c7364bec39e0c30d21f2ca4b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cbc6209aa1a3e5d6c748a8925cd8bc5dbf2d4bd30af82b1fb08c65b2b076fd17"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb4854530e45213485eea25d64587fae88efcf7d0419dcf23490c61446ee8fbd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c16a9b98e7abe51845373281a50453e149f66df17018ccee862b72b01caf993f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1aa36addd96840290170896036aefc678f7cdff5e05f4715a4b61d3ecc730473"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0518f6c259f13d42224a05c9215c5213f8f2a1db7dfab37164b3244ded000642"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2e4878d27aaa95c06af3f937edf4b8e466b863fc5324b3d9f96111dcd0c6d11d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"92e358246da833fbc6745e1307ca673dbdae3461c0c93c085e69a55ba55f4163"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1775204ede2772114eb203619a60f955fcc5079cc63536faec98942a51ed96da"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"57fbc348836694dd5257d767eeac04cbc05f0b7419ecc2f833d6c917bbf5f0c2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"43db6868a1703c599704b08e8146eed6fff47cc5123bfa7d017d769fc9695078"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4c59f80bcbea0a3055829a2a0a1a87bcf39620a0872929a1745501a6b9139355"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"19781c9ec97edad61e1b29f33062cc302e85a9573f45997d5a02137b3f168556"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6a8926d56e37f93afb769615e25becf7659f1eb82bdaeea087b1b613924f4331"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fc8082222dc2fd3ae11cdc153ef038b2cbc1156d0aec66db30b651a5d2a491a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bfade9bdd81a3b7c75d974167e8a971e5cecc8f2b501a74ddc6e6de54791949c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b739c19478bb2d2d8a06cbbe9df8de410da2ccc2b58046b8112426e61cd16968"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bf5aa22584c32505617ca96007a417a0d423b854ad219a25b82426cd186bcdcc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3f5f9f75c2aba8d19e6b450dce4e48416be92630557df62469c2e115d5d1065a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"580e983579d17fb703de17cada1371bd5600515acf75e77881af8a39a70bd37e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5ffe55c1bb3a89bff68673489479383be5700347eb81ac1293b166377ba08c72"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0c69ad1edaced3caef993a3796ab4224c1213a3e8cf16f0761414894d5c2236c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0c7ef46b41927f3679be77664a29665bcd8a165ede6511ea36d801df07e3496b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fc8cf7684e9051cb7a6265f23ad8a76a3133ccd4ea38687d770824df94d1a71c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"707d0c4768ca4a4d38cbc731fde78e740fbd243a55bdc5d6c9f105ee7221f193"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c5729bdf1ea87379f398774d5721e4e6cf1d5042a73c1d6438a6b996894fee98"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f44ac076c63d5456e33734c941cbc87f648639b288832b53c56ed2d47abbb666"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"baecb27978d05d83fa7459288a526b8119d60c735e6c807a94439097c4e66c34"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"57e1abf859f86d3da4381a67fb630002965ad666e0e6e22903256c04ae0d4330"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"86bc876c1b26027daf1b54d400a9d2da9383029b159462aabab9518cb9019040"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a276cc3484480073cc770a128861efccaedb4cedd9cbfc81bec5fa841ffec6e4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5005e9af5fd1495a019f6c37db3a51b13b7bcc4440e36a81e8dfc4d88b033c9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb811de2cc960084c1aa04bb5282cb431198ec3b547e8f5216baf1281b30bd99"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"211c3768e2ecaa84edc5b8fc2f0b04353de81af33e86e2d86937ed413a11fddd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f3b3d334189be11b5c5a216d981f746ac8a7c8843f27ba2f5a0889f26912ee81"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9231504a438d1045a0b32e34d34ca49c0e7a058c245b428adc52579960ae9c7f"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c4251ae12f852a86a553e8b8353b532bf70cc885a009a9ab9deccfb8eb2cef06"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"de72d770c854bf1b0dc3ef73387f9f55404f276c3efe20ca802b1ece23323285"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1403db6a23b387e263c59f3f4369194e148b031ca645a7d36efdbec9c8f7f6bb"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d3b7138b25291c82dbd7d910c7ea69499626e07260633838b821443ac332d5e5"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30d4bcec754f8b90267263928820180f38787b1b03e2541b742d15386f30df4f"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"23e8a595ee6cb621af2ba897f2639226eac2000f6a87a772b4ae7c64cf880844"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30f943e0980035c7cf403de654eb7781be970f67d36f613ae38281d56b4be317"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4b7ab5a17621f5ee4fb5b8e44b0a310924c96e612a1f1a213f4d62e79d9e1222"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"42a62a710e4602578030d7f02aa4ac2866a9b5679f8c725adf155db2288bce41"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1fdd397fc0c7dae88a30d2a6ef4426aedf35a2c1346f28f488f53571726f8cde"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5f766855299b8bbb3c683e4ca2d5c3c8db046fa93be0833b98cb5d6e84bd7598"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"df444238c11225772742c2d3c0d550ca49082a08ae7a6dd2caf8a5bb2c84ff63"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6fd6dc1c2d74ee84a8ee40c120a6bd02a1097b7945cde53ede47d438556a1962"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4fc19386618d017ea6557f90646218be6c7a15eba215c3501ff570519f4b055b"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2f34b96497440449cb3c0e819a8c901e0453ccd99a3120fd0b7f21bc9db8376b"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"707bc056dcfbf846eb0b4ce292050d04690b506421760784a8fbd9f802cadf70"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"667e19f88375e2d526cd49ec4390d15b7d4aa75429a7ff64a55aaeb90951ba67"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b79b2086bcdf7796d6ab0d94f5a63beece065d93c2ac742943820b865497ee18"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"56e6571d1d800c8358a490848eab6a2d3b63d1c7ea8bf75f4ac483cec61b43c9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6729d33ae35565b3680bc93c93ff0a6fdeec8541d5c62a9317d1cc277c2da298"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"97f9c59b65187e4fc3e965de4a3f5667c66017d0dfe17e801e88b534b6322dbc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d54ab8b5896e89b929ac267fbf429efecaca78a04ec2b6dd8cabad91abe0396d"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"24f8b550887d1ff09ddadc07304085ee3e8e1e82754c2d765938d4645b323592"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"56dd576fa00dba757e4866b9b72ebe0fa073ef6843fd3a003c5001e90ada296b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"52f229b73fd1428b4be1474bff5cc4002080c2e2ed570523c76f69496fad47e7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4052ad82b8427290af2c298ea4ecb3cb4b2ccbf804f13ff43e91dff8f7ec50c8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e24cbd1d00d14d3cbfcbcce0964188dd814d5c2460f5e0d033088b5050a0ac0e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"38f653cf8e2bfe05a2cdeb5e362931a036a90ea14379ce44cfc2d471168019f4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ecb6ac99a586407390af5d521d4f7e04b7679be4497d0ab485f3d4480edd5fb4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"14471646c6fa684a12ec0a6011646e0dbbddea8a4e86a15a10d47bbe60a87014"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7f0c7899540d627edf9058d70e21f365b61cc9ea6ff0d3c203654ccb08cb062a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5a87292ed75359f6c255cfdc5539c9c47360da927448fd0f35d76bd8288969b4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c4f56f877aa085ab42e30bfffabcd7221e48dc367be7cebe161c418365fe289"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9c43ff5eb9b7852f825bed26796ef0e73f82cab2fb515a081aaa25f31505b817"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"227e05113a7f54ff69b0a36bdd26f76c0e7bb7e3b3ab8db21354d8af7796ff5f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c94230ba4e10f3ff7ec3c8eddc66fe031221aca8f6160890f1c311368c6a655"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4d7c54f8df94d54271610e2362e30582ef94ef0b7c94c94aad6b2d63fc414bfd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d80987795efbddbfe99367c3085fefc1346ce902157bfccaf95d2b34228ce593"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3d77f24ebd970abc342197a32d4d56e7cc25d94f3745c708aabbaa134dec8896"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c8da8bf3f453f0870b7082b3966775d92d70ad86cd00e613a8489239e148bfde"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3550646616e6ce32b7da908c947011c05853865b75bb8230a0832ff1552bef34"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"24ab59e4442ec97befa0bc1d7ea523f86ff2028520ad2263edd6a91fcbb875cb"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c9f1dbf7697646936bffc314145525e24159dfe6ae5ec38f9e9f92a3b601e7ad"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8cc65f3f7a691af53c213f9cc6d3e2e8301028fe60d7300a5b392c4bd9ecbd04"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"00b98634eac25bc08ccb12ef2698dcaf377f5e556cb0c93d940f4d43c1e25617"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"741c264f49721e9b37dffd9891872edb6f00ebb9b80e62052908d6cec65c4b3b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"55082dd75255ca4ad9bb6309e505ad5f5bbecb391c691721c281640c6aba8f0f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d2b2768eba0088a716ad1c0dba9454fab8e7c97967c3e3f1232048447f7286e2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f50ade16242f177e6c34040986379518a3713e15b1388a14704e8eaa1ac895c4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b46ddcc3c22e410609d38be502c58a5e197cf6166e73ddbbb948680f2e4c0963"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"311dfb46c414df5ffe2dde998721c6c35171cbb28b98952433d928f205763334"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"93a047e4d4c43c45ac4d06bb30153be3f7e0b240be9e4e8938d7869ffc229616"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"051e634893b5078c57634fb7ed2cbcc34e4ac28f44144c5e7258932f20ac072c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"01cb6ed9b809a9ca6e7a9a1b634855374a8f33e20c6f79eb305a3e12609dc89f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"985ccd64f506764df46373600253ba5d5095bf0321f4840b201baaad94544039"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"80e52a22be47aa578279eeb6f9d1bfdd1b41866fa3d8b6b7b8c1c4a7c46e23c7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"67f3928870c6f5d65e476677649ba28f2dc9550ead3b4912dc33a1abc3edc1d6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3b8737934066be51ba46314238319a2e46d3ce290abcfa92f418f0356f64bd58"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b3fea268893d96a713853860b40a62700694ae723a9afd0b2fa0c10d6dcf2802"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9806836e01a0a158a7fc8f2bb8b847d4ed8d83242b8cbaacae6ca7b8a73f4760"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"38eea620e21c7f61fa72de3935d1022d58130426c9ae75001bd728fedd140fa9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"55a45dee145405300aef306b4d98961bab8d9606239c20dd6361eb71390d5143"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e663220edb8912d4587115680ad497fdb0068d6b92308b4e29bb314a327372da"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5142d0b450ae86b1271762874610012e02eab41a642ddf0711314c4ffa61c43d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"814b0072c6351d786fbcd749d6b0f01585f5aa9aef1f10ee411bc49cc27132bc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2ce6d0fe8417a4814232b385af085a93bcd10f8fec7edf2d61e24ea2e33c81e4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dcd61ed0f731c8e280eb21619ac27c9582594ebe3319a9db09637256d439b7a6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"55af0daad29670e7dff50ae0add26e3a0793b5cd833242b9dc282ba69495cab0"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"50461398a07ad243a7973ffa89ccd8cc5c715f641331f09c4eff89017a381416"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6b9e3d3ab2a44d009f743a0e5e9fd7f9aeca48edcef940ae65279c93bf35c9cc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6576c7d4c13793978d03eb13461da95ab642e2ff463cb69169095ca4e4466321"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4ef67bc73f62d226bd1e588817da28eec041c8a462e141fe60572c43e3e2241d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2eb5d86cf47322586512b61f655b8079a81bcef7c02fee10afbacfbfdbf20328"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5983c0095118738906e70a2e93f29e954ed99e3c4d00bd0f1965a774abf900a7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"216afb2e6f0f02f5963d58b4dd4ea0737dc399e5e2e2fc7d1778d6cf17bb5bba"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7ffda1b5d8de17c6d902e63ae35584294cc45a6a0daf473970e000b9e6e91584"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c2a2b76d4f815549c76d27997f36955cbcdfcf033f319bee5d72b53db12274f2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b096b94da1421f70e3bf04fce98f4bd57f219491d077e3ddc14a16ca388b6498"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6c5e165a4e653c0e324209a186fafd84bb4b387654ce4a701e151d2a7c089d82"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"29176cd9179ad6c74251411d2b57e9c6845ff15d1f13f09455cff222a7b1d56c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5bcca63fe4f84e1b6225fbf1fa6111b48ed133e2f0305b27e9cdf36628dc5646"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"958fba4007258414ce7f761d768658f8ee241bf57d7e0131e498cb60886dda98"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"27982a8d7792995d4ee3d3f6d64fad4d8ecd29b995a660b64b4c421f32aca88b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f08cd9b94576dfdb49e751e086701b6441d88c74cae4ea12454aeec1d5b9f668"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"309cfb2d3e9c152b0e5bf95a1ff100c3cf81e2b83f3f5f2a20188dc275754abe"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2f6000567b324b68ee8f78150089b53e68aad8539dac9f3c945d198a38aa9206"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"41cc7a5664de4dd01414ef559532ba2ff0f4db83d37cdbfe3a15aff4d5f003e9"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"178eb38531ea80e74627c0b8162af8c88b120494e0e0bffa5359388f23089461"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"af297cbd9f8ce1d8d77056c485eb1e3dd79679beb166278faaa7b07365f590b0"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"671181bd230eb30ecf156acabf563522acec4a953bdc98bf6b6113562e86d903"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3eeef5667ff2673c47c8999093b255ffb64145faf50e632a97a2f635c4f24399"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3191a78401ebbb42c488c7a6ee295192360af7c1048f9c1b40c8a7fd0563169a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"71b966301514bd96d32bd0add1ef0f0b7d5ea5f0c993a1599c26d5dd0583d344"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c1d2d949f9a105b435a4195ffa24974a44ef057b6be8f4f224f8b56a4688de46"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5040a04d463bf221fa19edfc17fddf517a2c5ef1056763d19f7dfd9ce1a71a4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8af93b54d7b6d09176d9c9016e65470b9e3497c2e30cd6af0b8b0a89230292a4"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"887e298df2788c12ed4d0b43419d070ecc18935f01253e10eb07089215f809de"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d20fb9dc5399fc153a9919de2ae3b6f628885f867fb52bd0ae61d143f978afeb"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7fbb419291993fd9b7042c512e67778256cbcbf97b5086104fb4fa96f93bb647"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b9ff49e25fb9dcf73b9a08bb51dfe2b04b66ac645535eaafd9910305bede3169"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"335fafd2a9287e8e879cf2cd790d7bee7796e1f5e27f88bb2d7021588c3d1766"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c36e55013b7e319a79d9df0bb46ced8470bd95f858e5c0885f126640977c24e4"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8339612877fe85b5e63ae52b8b5671f48d5c68e4a6d618827d807c8596251f04"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fd9ff5d5a467e621296d0939184202e26f87154a0702d93c8dee76953eac77b0"},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dc30a8fbbc7aa4dbef6af38a3a2835dbad6158f1bafc33fbc72d5594b1fbf68a"},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c2b44dc1c158f3b8ede77c66deff79e6159d6c415b90406569b2fea97d9ef14e"},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"19f5c135c4eafebab90241310d80477688180c2ca2f89e7a620f4fdda004a0c2"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7cf8a78c4a993aecafcb4fe2b18ecb6ff3aced137586a07de2812771fcf18756"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1498825690ee691422757d83c6c8726aaf69040fa62a3b6b71a03075f0880320"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"85f99189d964cdde824a816d83f2290af0a3f7efe42feb1d6495743a90e33e22"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb4867cd15fc5b0a59e89c839e221e5b4d2aef81ea1261edfe7d03b253d81d84"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1329","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5548f1807cea981eb0dc3064656cf37f5d5f922eb6c0a13e777cd5167ce43a80"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1329","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2074dc155aeabe3cdbe4a08e329b7845e3c4e9fc3c99c1724ec674b21a7da5fb"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"17bb2887aac8378902d7a27fa201a9c19ada85c78a8f412a2b4883a4adc68ce0"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e02b21e37ef634e85e1c62b6c23a6788044dabfed25e2606b7165d6416082d5d"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4ed15800ef1adc6c20efe5828af72a33821e727f9faf6aad3985d40efec7f317"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9017755633d19df222ec4097ac8d72ab231300ff32945d8936c0d361a830c9bb"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"464003f82f1c5e938e2a1e1a05f9bf1746e4a6d72d0936f5daac9e57a00edbb3"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c9066cc9fc1c152df44b4288b5df315e4eebc63580143f20e79285daeb049882"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"00c2a2a5aa1f00e71b72043900cb1dd0d1f0c197be93eeb46d984671e013f9b1"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b00fc5c78b29d1fe87e7fff4b2bf28f38c2c9ece2b83991a6d0b571a863edd61"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6b6f628af1147161adb811273d189db9a521c99db4d9c9d0d1befd36e0f1d29e"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b3ee2737a1a65f5d87d5e6f1bd5afe908a6b95e3ba70820fbd0fa4bce16118de"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4b5bd2b71278eaa57616792fc0da71eda45e51a4cca713cccb76b7a0931bf534"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b76ca7a304f6ff58b4a686719e9695e3868b9d5c61d374e524d74694b375b9bb"},"taxa":[{"id":"CWE-457","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cbdb00996678dc3caa31021e37efb95574aa1471d7366f8fc3abafe7ebad5d3d"},"taxa":[{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a849b2fe698412bb41cdd262423f5568cb7c2c428b174c089799a07b21fd228f"},"properties":{"dependency":{"package":"tar","version":"6.2.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8767a3685e44ed9cbbfa118c6192b4d98266fcbfc8a61ea592b397812a509aaf"},"properties":{"dependency":{"package":"tar","version":"7.4.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"becc263f74b17e2754d1841c62db6d259164d8c946cdd38779fb1ddac66bb310"},"properties":{"dependency":{"package":"vitest","version":"2.0.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/vuetify/src/index.spec.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"302ddf53c619511d643221d6c2c9bc34fdd8a239aa4370f80ed49f4cca3389f2"},"properties":{"dependency":{"package":"vitest","version":"2.1.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/vuetify/src/index.spec.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9e32a448cc007ced35f574ac851d62d56116470e427182b0cdc6268bd3dd0048"},"properties":{"dependency":{"package":"form-data","version":"4.0.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"087ceb00e8e8063466668717231aae11244539ee0aeb5db35cfcca207aa6233b"},"properties":{"dependency":{"package":"seroval","version":"0.12.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4bccb71b5d19da520c96e71a7aa0ba9c5630b74ceff7196e3312bf66f529499c"},"properties":{"dependency":{"package":"seroval","version":"1.5.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"29827ff1862f4841c892ec8b8867f048f1bfa9d96110dfe90e22961d0aa8306d"},"properties":{"dependency":{"package":"shell-quote","version":"1.8.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3be3df418cb63fed345ec369da090cb9737dc9ff080dd327970a48c07c84363f"},"properties":{"dependency":{"package":"websocket-driver","version":"0.7.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e7f6da568124a275bdb38bfd2d0066251888a59c0fee21e1f8165e7ab30916e9"},"properties":{"dependency":{"package":"minimist","version":"1.2.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/create-farm-plugin/index.ts","line":6}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b5308f9ed219ff7d361ed2b01ab7b5fa7a33b0013fcd35575e7068ccda1d2997"},"properties":{"dependency":{"package":"quinn-proto","version":"0.11.14","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2026-0185"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b873cf768c77dcd3130dcabea8e403d85fedf544ec95e711983ac77e0dcd7758"},"properties":{"dependency":{"package":"libyml","version":"0.0.5","advisory":"[GHSA redacted]","aliases":["RUSTSEC-2025-0067"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd35a72e6722ab54649b8f90b26091aedbff60323fea941d92430016c01956ae"},"properties":{"dependency":{"package":"linkify-it","version":"5.0.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1c436004dbd621ebcd05d90ad3583dfa555ecab6f081fe7e33d0c129a03ee0cb"},"properties":{"dependency":{"package":"node-forge","version":"1.3.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"56f8fe0d055326a2ec2d4867ffb61ae9725a60e31aaf4493fb733a639324c9d4"},"properties":{"dependency":{"package":"minimatch","version":"10.0.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"42ecef14e54ef56461c3f03fdf2bd38d73a8525ccc9dc9b1efc7932590fb4945"},"properties":{"dependency":{"package":"minimatch","version":"3.0.8","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e734f1024fb3740c5ad6839a7c9c482ccb7340c164c284fa8e898675fd868009"},"properties":{"dependency":{"package":"minimatch","version":"3.1.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"12ef5769060d15ee56448d37b658fa4bbb7747aecbae1b55ca12e189776362a9"},"properties":{"dependency":{"package":"minimatch","version":"5.1.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ba4985bc00f14e751bbc2fdd403ef11c329e6c4d95f8d2fc898f525a54af666"},"properties":{"dependency":{"package":"minimatch","version":"7.4.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"81db5025beff773fa5a0c7e58318be065c70b064b2b2062130c3490630ee34ba"},"properties":{"dependency":{"package":"minimatch","version":"9.0.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"32455de16efe087a2180d815156f4a41db7d757557004b9c612b5db9f0c77668"},"properties":{"dependency":{"package":"minimatch","version":"9.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bf6d962945e3701825bd0b68a8e28bfc19080a96fc458c6ef1b831a18fcba34a"},"properties":{"dependency":{"package":"flatted","version":"3.2.9","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"75a3a2c5a99c446cf2ced5f4cf5d9253bba773c9f7ad243579a001230dcdc4ac"},"properties":{"dependency":{"package":"flatted","version":"3.3.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dcd64392f90c18401b918781f3086904a8ef2691e50467e3cb3018a7dfe9864b"},"properties":{"dependency":{"package":"@xmldom/xmldom","version":"0.8.10","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"685cba4514570b53bf9bc85812fa54c07fec7b3f62fc67d4712c038e9ec2e605"},"properties":{"dependency":{"package":"js-yaml","version":"3.14.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"24ca2b657a002371f47253ffc3d1042d7a3752a5b2076cdfa1568b90732fc738"},"properties":{"dependency":{"package":"js-yaml","version":"4.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"88af8839bec0abbfd23aaf67b9c751bbc28f864e0e0009ea7ab642b9e6455970"},"properties":{"dependency":{"package":"nanoid","version":"3.3.11","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f0fe758c0febc68182c29dc1f335f63d3a1e29afca9266694c820bfd234d181a"},"properties":{"dependency":{"package":"nanoid","version":"3.3.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"00632f8c780b46abb2566d710ea068f9b003257e7e679f8e7a42ad6026d5e6f7"},"properties":{"dependency":{"package":"nanoid","version":"3.3.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5ddcb03f3161feb32073aef554fbee9dca659e1881914c86b1ccf728e7cc36fc"},"properties":{"dependency":{"package":"nanoid","version":"5.0.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"036ceb1c827887c9feb7b132d0f921bc5f3fcceb704bc04b99a26df371b5f1b3"},"properties":{"dependency":{"package":"svgo","version":"3.2.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1628ba672b6f1c4b34b9ea40aad5c32e43cb6d492268772bf3ce8005fa22aaad"},"properties":{"dependency":{"package":"@remix-run/router","version":"1.11.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5c7d3c1eb2d2ffb8c642ac07787cfa27317372c5e96556d145cdab93d0c3ff27"},"properties":{"dependency":{"package":"@remix-run/router","version":"1.15.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ed38dd0999bf39c7d999494d100ea87cfdf79b84db1d2f6af34d76fe740f02c"},"properties":{"dependency":{"package":"axios","version":"1.6.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/visualizer/src/client/src/http.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"95b12d78a9d03d876292e43f11812b3e3c73d9092de63af356439f1bfab210a2"},"properties":{"dependency":{"package":"axios","version":"1.6.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/visualizer/src/client/src/http.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2227e5aa68662ea87aa2c08b17636421859e30414fc4c030a887ccfe95499bbb"},"properties":{"dependency":{"package":"axios","version":"1.7.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/visualizer/src/client/src/http.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3c02112ac16a83aed04b6247d815926b5f5bf941840edbf0fa7c80b8fcee002a"},"properties":{"dependency":{"package":"axios","version":"1.7.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/visualizer/src/client/src/http.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"55bb3986aec1e2e40294c46650ceeadc2ea24e7e4b8482cdd51746604ddded6a"},"properties":{"dependency":{"package":"preact","version":"10.27.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"crates/create-farm-rs/templates/electron/preact/src/app.tsx","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f92fc2ddb946ed0765e4c67aa7e243a07870f2368edac2bd98c50b6c0d66c7eb"},"properties":{"dependency":{"package":"path-to-regexp","version":"0.1.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7d4fe671e968fac7e67223ba2b62473672c7cf2f781b334b8785a5edaa97edb9"},"properties":{"dependency":{"package":"effect","version":"3.10.16","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c2b24aaa67f38274086d7b9b346106d216dd78d4885c67628dcf133ba0a29934"},"properties":{"dependency":{"package":"axios","version":"0.24.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/visualizer/src/client/src/http.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f408f10d0afd83ca93b80afe49f2e933daa9e03963b1f371e8df6efd35d4c959"},"properties":{"dependency":{"package":"ws","version":"8.14.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/core/src/server/ws.ts","line":7}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"df21b8127d24aeed9579f3ce44f2f84d2d4f9ae41d6b03d4309b75c4781747cc"},"properties":{"dependency":{"package":"brace-expansion","version":"1.1.11","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6fde06abe7dac0b6bc6951df4e58a3dd77b634a2402a8ce8ec6bcc39669c05de"},"properties":{"dependency":{"package":"brace-expansion","version":"2.0.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1ebd1bec0635afa7a72fa686ed0e84623637b0c511ad89dc69520cc32ef297ff"},"properties":{"dependency":{"package":"solid-js","version":"1.8.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"crates/create-farm-rs/templates/electron/solid/src/App.tsx","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"38ed54444ce68c8bd656550f969b0e7e33d4a21fb956b63e212424a140e516b8"},"properties":{"dependency":{"package":"cross-spawn","version":"5.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1388eade7d8b4413e226e58a9e48223f913f6ea1bc23c997b25f1c4fa0d5c36d"},"properties":{"dependency":{"package":"cross-spawn","version":"6.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d41224ed04528859bdb154c3a6be1873edf0c7e066c494d747258ce678c50746"},"properties":{"dependency":{"package":"cross-spawn","version":"7.0.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7e32be7995275f1555ae8651ca18fadd4f080fc503944f21e521c4b47b3fd1fb"},"properties":{"dependency":{"package":"multer","version":"1.4.4-lts.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b4dd9e35f2b2cf3aeea6267a3e29fffc45a78df2e3d8e4394ee2c7ed9e511801"},"properties":{"dependency":{"package":"undici","version":"7.16.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7623fc0eec5175e28baa47d5cfe678797ec717df004fc37bc2fd8af169897451"},"properties":{"dependency":{"package":"xlsx","version":"0.18.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3a53231b599d5d534939bef2c8be2f0fc4989bf40745a1b5d15809f642030837"},"properties":{"dependency":{"package":"electron","version":"30.0.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/electron/src/index.ts","line":184}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5bd55a47dee84d51461f4d7235c2f9c6c4d731816a3c86eb50aa0cf01ac3d52a"},"properties":{"dependency":{"package":"glob","version":"10.3.16","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7a3b2748456f79d2f69f8aca637605678392c7a572d95246e9ee520e84766c74"},"properties":{"dependency":{"package":"glob","version":"10.4.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b5732c55cc1bc6291168d5d3d2a93b0f0262bc70d9db8dc61a178c775e538c4"},"properties":{"dependency":{"package":"glob","version":"11.0.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f44487f76e182bc35cdd665b79bd6121688dbc86799392c0a51fec17535bb252"},"properties":{"dependency":{"package":"postcss","version":"5.2.18","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"84096bea6ceffef39cc86e24a555c712d435b34920f6ee47ac8c8274cd5da494"},"properties":{"dependency":{"package":"postcss","version":"7.0.39","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"50eec5004aa91923cbc5680c577714f2e2219bf9e5411c5c414aa9c77479f334"},"properties":{"dependency":{"package":"postcss","version":"8.4.31","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3b2c7dffe8ec51e5bd491e7e571a9ab47c63a8533e7fac126701922fec4cc735"},"properties":{"dependency":{"package":"postcss","version":"8.4.32","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"164921e17daee9d6ed204c91fd01511b4a370e17c21ed9dd41b204f97d011a2b"},"properties":{"dependency":{"package":"postcss","version":"8.4.35","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"df8ea16a46c2916bbd96bd2ab0ca7bd672ca89566666522ca53fcf710cec160a"},"properties":{"dependency":{"package":"postcss","version":"8.4.38","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"45877a0256f7e819bc4f04cca65723487a3b67beb414712e7cd1bd642f56eb44"},"properties":{"dependency":{"package":"postcss","version":"8.4.39","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"155e616fce30bafe728832766b2a0efe3c9f82006483814c0ed09623972a7cdb"},"properties":{"dependency":{"package":"postcss","version":"8.4.47","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ea8c411f5d2c6aab83b920838d7f55612496efdc6140d558e469ccd213fe2035"},"properties":{"dependency":{"package":"postcss","version":"8.5.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"js-plugins/postcss/src/index.ts","line":4}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7efd016abae99d72844bbb774ba5625064247ddf2419145f6f0addff7d5a7b2b"},"properties":{"dependency":{"package":"joi","version":"17.13.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f8ed3878fd4990d970372c99df48b5c9ea45601d5792f91c92d67aa62fd6aaa5"},"properties":{"dependency":{"package":"defu","version":"6.1.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6658d706dd2d06b9225adbb892465ee66f393f1a14e24360f4e572f16b6ffec7"},"properties":{"dependency":{"package":"browserslist","version":"4.23.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"56e78983a06a8fbbe28a4116d98b60fd9e779f4226c2c7e447c739f034d85372"},"properties":{"dependency":{"package":"browserslist","version":"4.24.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a6f3dabd85477c0c5e71f941e497d5920923c5f039dd44bd3c046aaadc700853"},"properties":{"dependency":{"package":"app-builder-lib","version":"24.13.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2293c5b7438af6e9b72fcd6de42f60336e9647543d0ec963a873c5fd77b6da43"},"properties":{"dependency":{"package":"extract-zip","version":"2.0.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"25c0023c210e5dff0730a5514ed2a700e869046f9fa990c42ad782a7881cca25"},"properties":{"dependency":{"package":"tar-fs","version":"2.1.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f5cdc6a04da8934c2e32f06f75897408e5bfffc448575be52e6f766a6894a70c"},"properties":{"dependency":{"package":"tar-fs","version":"3.0.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"659b17df3a297d0c761f05e64fbd7a7fec481b8fec3425db0f2590512d5583b5"},"properties":{"dependency":{"package":"ws","version":"7.5.10","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"packages/core/src/server/ws.ts","line":7}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ebb46be9702a87f53bc42084cf6514eba42cd515d31ca43d612acc321762fcb9"},"properties":{"dependency":{"package":"path-to-regexp","version":"1.8.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4d5f02c3b4a8360826abfa2419db1ecf86d44b563a63d98844993aa586cabf17"},"properties":{"dependency":{"package":"path-to-regexp","version":"2.2.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"74b23ef4bfae05697f486814bc94943a4559fb67b9bf4f3b924fbfba862f5d18"},"properties":{"dependency":{"package":"path-to-regexp","version":"3.2.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0cbb3e7a5dcab1f7cfcc0c1b9ea12d8b99b214b1187e480e3ff093f958713551"},"properties":{"dependency":{"package":"vite","version":"5.2.8","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/core/src/plugin/js/farm-to-vite-config.ts","line":3}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"280e573e700c0863f2b8b333788aeabc2f274e76d24c55afa449e8c3eb772323"},"properties":{"dependency":{"package":"picomatch","version":"2.3.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"923a85df6c859452ea7ed7bb471de56a0b76997ffb0c775dac1850f55f9415a2"},"properties":{"dependency":{"package":"picomatch","version":"4.0.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6eff163cc59e6f76de4607e68d2da87dd961b9e02e44f6898c28f733cb42edc2"},"properties":{"dependency":{"package":"picomatch","version":"4.0.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"85a0cc54a04a258f890dfcf56d8b54e982ad85db677a716180fa388a7789ed89"},"properties":{"dependency":{"package":"@babel/plugin-transform-modules-systemjs","version":"7.25.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"50158e674a425a76864e10f3dc10943702dcd4e3db70274c526a9a9e55691783"},"properties":{"dependency":{"package":"webpack-dev-middleware","version":"5.3.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5937f3a19db64bb6532b1c4d1778a944ec5e92552e9fa98b9efe644039fea206"},"properties":{"dependency":{"package":"rollup","version":"0.25.8","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/core/src/plugin/js/farm-to-vite-context.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"35e21b0736d659267bf250e3f4cb06459c0b3e2630fcaf1c379448c0535b6c6d"},"properties":{"dependency":{"package":"rollup","version":"2.79.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/core/src/plugin/js/farm-to-vite-context.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"901fbda7fca0e86987dc8a78e3a7f4cb5a026cf1a0cbd88201ea1607e5bdc80d"},"properties":{"dependency":{"package":"rollup","version":"3.29.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/core/src/plugin/js/farm-to-vite-context.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8236be0f73c584c627467baae0166a130dd81fcde49532c449ef1f0e32542233"},"properties":{"dependency":{"package":"rollup","version":"4.14.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"packages/core/src/plugin/js/farm-to-vite-context.ts","line":1}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fab4940bf2a8fc270c68898bb2d086ce8ede7e6a694d8591e3fb0414eeecfcdf"},"properties":{"dependency":{"package":"braces","version":"2.3.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7f8ca15b3ff05f89b1b2dcecd9917dd58d1c6833fa1c4ae4233ca828cf223e9e"},"properties":{"dependency":{"package":"braces","version":"3.0.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3bac668e18f3c5d2f8513c749add59e46084dfacf0fe936f8986eaab1438c1db"},"properties":{"dependency":{"package":"path-to-regexp","version":"8.2.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"efd8acd6821741901ef8afb9ced8cfd6d0c7eb114af3358991966194858fbb92"},"properties":{"dependency":{"package":"mockjs","version":"1.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6d66865a895be83070d47ca5389552eea8c6cee10a32818c70a3443fc659d917"},"properties":{"dependency":{"package":"ip-address","version":"9.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"44a10d7d3daa9120bdb27c3a8f7ca2308cb8d614963b2a6704cdd18419a67448"},"properties":{"dependency":{"package":"builder-util-runtime","version":"9.2.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"badf7c493666545c7171567225cbbd7f143d468fa3a0303f4c4610d80dddbd61"},"properties":{"dependency":{"package":"tmp","version":"0.0.33","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f559c3cff961549a0550793ac1bd1352d1683385b31a472f742621360d986f4b"},"properties":{"dependency":{"package":"tmp","version":"0.2.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4a539e7af619b290a8669cdb1ff65f476184510fd681d84375f32b86c97136b5"},"properties":{"dependency":{"package":"js-cookie","version":"2.2.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8b276062f6cb6b64796ad1434664cde698f9cfa15337bc559c77e77d3bc5e393"},"properties":{"dependency":{"package":"body-parser","version":"1.20.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7fd3cd206ebd8d4ca84bb7808163fcb0d91255d08cb3f9e48ed6eb2ebc95a52a"},"properties":{"dependency":{"package":"body-parser","version":"1.20.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b8b3bbf9ecd52a067daa1e55380dd20b6613b629da21502a83274529788bdcb5"},"properties":{"dependency":{"package":"lodash","version":"4.17.21","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"269cc46fb58c84bb8dbec1ba8d33147c38068a964b508dbdbe3c82460be70a54"},"properties":{"dependency":{"package":"lodash-es","version":"4.17.21","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"43fdd96ab6f3c166fbbd321e8830a7c0de721e0af096db26acb6f7e375cabfaa"},"properties":{"dependency":{"package":"node-fetch","version":"1.6.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a314a3d234ff403f096b06f011eebeb700bcf210035dc31991e118d836703adb"},"properties":{"dependency":{"package":"immutable","version":"4.3.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"14484e1c7d115a72967103e6e26aeb5ee04e1424e68fcb08d1f9c45f9d3f7e72"},"properties":{"dependency":{"package":"immutable","version":"5.0.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9a209c12a8b973f9be7221863ffa05f85e852ccdc2f5f4dffeacbce5f322db64"},"properties":{"dependency":{"package":"validator","version":"13.11.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"addbeeceadb4c5bc8ee5caeb04de03ac44d22d147c99d7f88af5a778dea0b9c6"},"properties":{"dependency":{"package":"serialize-javascript","version":"6.0.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5f538739e89f76b0971a5390fa8cddbf706f34980e213deea9c68f7ff3476760"},"properties":{"dependency":{"package":"sharp","version":"0.32.6","advisory":"[GHSA redacted]","aliases":["[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8a1d8004e78909e1da2b9f80d517732ffbb29897298b40462c3f531cbb3ef69f"},"properties":{"dependency":{"package":"image-size","version":"0.5.5","advisory":"[CVE redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}},"taxa":[{"id":"CWE-835","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"449d4e9afefbe6656c756e07116d0e81ab688305d105ba734602a134581fedd2"},"properties":{"dependency":{"package":"image-size","version":"1.1.1","advisory":"[CVE redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}},"taxa":[{"id":"CWE-835","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0eb19e418505544070a102c0604a1461db9d7e74bc2d21be232c445ed0144daa"},"properties":{"dependency":{"package":"lodash.template","version":"4.5.0","advisory":"[CVE redacted]","aliases":["[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5cf73de26521693eccaf4d4cd15624ee265f19f709004653bf153ecb3bb511ea"},"properties":{"dependency":{"package":"swc_html_minifier","version":"52.0.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"95686d8e64236c3c2c566e482859faf67a5bbd9dbeebb6f4df8aab56c3496281"},"properties":{"dependency":{"package":"proc-macro-error","version":"1.0.4","advisory":"RUSTSEC-2024-0370","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f48cf8c9f415048128045caa118a1e03769d0b4fe18d7f036c2f3766e3e8d8fb"},"properties":{"dependency":{"package":"instant","version":"0.1.13","advisory":"RUSTSEC-2024-0384","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5922a5beeab5ac077ffb485a783ad545036e79b56239f83da38f3fb84336b113"},"properties":{"dependency":{"package":"paste","version":"1.0.15","advisory":"RUSTSEC-2024-0436","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a42ca7416279f52063a649dbc505340ffc7c7a5727193e601ae1de8d6db75e3d"},"properties":{"dependency":{"package":"fxhash","version":"0.2.1","advisory":"RUSTSEC-2025-0057","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"705e8761c5e609601c0419d94a8bad1aeb6aee434f48ec4660c92e8bf534c9de"},"properties":{"dependency":{"package":"number_prefix","version":"0.4.0","advisory":"RUSTSEC-2025-0119","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4975822701b3b96654c82dada9bad969e348a6adefa52cd3bba1b6cfd71c3bb7"},"properties":{"dependency":{"package":"bincode","version":"1.3.3","advisory":"RUSTSEC-2025-0141","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7d885a6c3524cf72fd5a2ed03e9e79b3e2b2b4c2a38e5f00b3f7bb7e4044b710"},"properties":{"dependency":{"package":"bincode","version":"2.0.1","advisory":"RUSTSEC-2025-0141","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d469c4cdd0b2892278c4ee90c01a5a8ea4872a98733c483777e04c904cfebdfc"},"properties":{"dependency":{"package":"proc-macro-error2","version":"2.0.1","advisory":"RUSTSEC-2026-0173","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c356dafc2d2f879539349393edf47ceccc3e0771bf15e4dae816abd8594fd25c"},"properties":{"dependency":{"package":"ttf-parser","version":"0.25.1","advisory":"RUSTSEC-2026-0192","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0897771ffd4e3ceb3419dde32bb5bb1ffcf0f4b413f8009f7ee61b96577e12ed"},"properties":{"dependency":{"package":"smartstring","version":"1.0.1","advisory":"RUSTSEC-2026-0249","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"433267b08b35cb8c0d37e7938ef24636de48f80ee3ac620dbcd3c6af69391298"},"properties":{"dependency":{"package":"lexical","version":"6.1.1","advisory":"RUSTSEC-2023-0055","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb856e74e10d37fb6e0d0a711638adeb720b7091f80232e89c26efdaf1896d30"},"properties":{"dependency":{"package":"lexical-core","version":"0.8.5","advisory":"RUSTSEC-2023-0086","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"69278a4f17a8374fd58af6479e4801aac5a544ac077d2cc4fad4416b2bfdb8b1"},"properties":{"dependency":{"package":"memmap2","version":"0.5.10","advisory":"RUSTSEC-2026-0186","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fa988b18d31bcce306b65e53a7a04f2f383058a52728e860710059004b272a3"},"properties":{"dependency":{"package":"memmap2","version":"0.6.2","advisory":"RUSTSEC-2026-0186","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"759d36a63e8483c4a467399ff199fa57fa2e02d89ef311720974588edb9516d4"},"properties":{"dependency":{"package":"anyhow","version":"1.0.102","advisory":"RUSTSEC-2026-0190","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"422864efbc32ee020d94634a443edac9d818b90faf02ac96d91c4d66ffa4da37"},"properties":{"dependency":{"package":"lru","version":"0.16.4","advisory":"RUSTSEC-2026-0253","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"91d43a93b3706ec87efad5b997b467aa58e0ea37e710457e42ec82a30c7c70e5"},"properties":{"dependency":{"package":"serde_yml","version":"0.0.12","advisory":"[GHSA redacted]","aliases":["RUSTSEC-2025-0068"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c4a0c58aca13bc848c37d4c3d5bcb90f8e046f8df5b386f5a3743d0625ad8dae"},"properties":{"dependency":{"package":"crossbeam-epoch","version":"0.9.18","advisory":"RUSTSEC-2026-0204","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"724dc287344d7132b72d1f16bb1fc253c8392cf978fd4bf6d454481b72775b59"},"properties":{"dependency":{"package":"rkyv","version":"0.8.16","advisory":"RUSTSEC-2026-0233","aliases":["RUSTSEC-2026-0234","RUSTSEC-2026-0235"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f33134b914692cd6c5f119efdf542f3d6c34c918da971c9cc600e5d39c46efde"},"properties":{"dependency":{"package":"rkyv","version":"0.7.46","advisory":"RUSTSEC-2026-0235","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1be0220e1fa221ea274d30abdd6b4e473172e558c80e87aecee355dd31489ca8"},"properties":{"dependency":{"package":"webbrowser","version":"0.8.15","advisory":"RUSTSEC-2026-0257","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3035e85b1a9c0c33df37dc333f490439b3fa52aefda24a401e2e75a177cdf778"},"properties":{"dependency":{"package":"rustls","version":"0.23.40","advisory":"RUSTSEC-2026-0285","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"da58c67d0cd706a8ceec64e5d86fc8ed813f8ed5b585b5621e1f13dd1fa45fbb"},"properties":{"dependency":{"package":"bytes","version":"1.6.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2026-0007"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c9c99ba95a6f3cd0924fc242f4a8b5f8423c38b9d125d59e836bea2683ebd13"},"properties":{"dependency":{"package":"tauri","version":"1.6.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c6759c1fadc4c7223a3d8ce14b219b41c0dca6434821b25013dc17566450a353"},"properties":{"dependency":{"package":"idna","version":"0.5.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2024-0421"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f29ed38d44f8824e96d00824d6950ea31694542b0f305209246ff5d55a51ccb7"},"properties":{"dependency":{"package":"crossbeam-channel","version":"0.5.12","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2025-0024","TROVE-2025-013"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"531d82df5333df7d8092362b6843e8f651d7f2c9861503e2bebbfa250e54ea74"},"properties":{"dependency":{"package":"time","version":"0.3.36","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2026-0009"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ed57538f58fefe4341d2b9e8bbd962ee2b248f55e4e83c5736122187b8a6d31b"},"properties":{"dependency":{"package":"tracing-subscriber","version":"0.3.18","advisory":"RUSTSEC-2025-0055","aliases":["[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"48612165060da8a0377391d9b4d2a50815335017a2081258f59060508a2708a2"},"properties":{"dependency":{"package":"instant","version":"0.1.12","advisory":"RUSTSEC-2024-0384","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ab84c86519f89655b3543e8045b57406c5ad70e142e8b886a0e422ea5d920fe8"},"properties":{"dependency":{"package":"adler","version":"1.0.2","advisory":"RUSTSEC-2025-0056","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fabd6887f5a042defb00928df2075586aec3b7f78df101fea84f663cb47d7773"},"properties":{"dependency":{"package":"tokio","version":"1.37.0","advisory":"RUSTSEC-2025-0023","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d8cdcf17da892ee78d527cb0640faca4115ba675e843130d2b9463ec30347f6f"},"properties":{"dependency":{"package":"rand","version":"0.7.3","advisory":"RUSTSEC-2026-0097","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3f3ca781b9dce584f048cb47a9f24fb2351bece7ab7ba3dde458c7843e17ef1d"},"properties":{"dependency":{"package":"rand","version":"0.8.5","advisory":"RUSTSEC-2026-0097","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fc1b5456a05ee4dfbdb8de7339943b0b82dd1b98546846b6282fc7bc24e2c7c9"},"properties":{"dependency":{"package":"anyhow","version":"1.0.82","advisory":"RUSTSEC-2026-0190","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d510d0d082e4982ba596eedccd2a5273caef47d34c38bbbe2d183b48fab9c525"},"properties":{"dependency":{"package":"tar","version":"0.4.40","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","RUSTSEC-2026-0067","RUSTSEC-2026-0068"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b4cc0b8669798b19945d8e9b002a2a2d728b77793abb6825382db4797d1940a4"},"properties":{"dependency":{"package":"serde_with","version":"3.7.0","advisory":"[GHSA redacted]","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"14ec29856c082e58877e023432d313bb242f8fd5f1dd9f778979ddc5f7c9d606"},"properties":{"dependency":{"package":"glib","version":"0.15.12","advisory":"[GHSA redacted]","aliases":["RUSTSEC-2024-0429"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d4b34e87cab6d4a0155164f5c5ca28bda27c81b4ed775e5ef6416eec3db44ca0"},"properties":{"dependency":{"package":"quick-xml","version":"0.31.0","advisory":"RUSTSEC-2026-0194","aliases":["RUSTSEC-2026-0195"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5cfda3aaef6c9ab4b14a323e5a43c98beb6f781ea72cc76db481867a4da749f6"},"properties":{"dependency":{"package":"bytes","version":"1.5.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2026-0007"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"41306ad6f2edc3d2cb0f1ad596b7e2cdb27cb5ad77ae5052920a92f2bb2b9442"},"properties":{"dependency":{"package":"anyhow","version":"1.0.81","advisory":"RUSTSEC-2026-0190","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8a0a369f353dd1a110e5c773a01e2cd7b962069ad28f62b71dcbcae96f551c54"},"properties":{"dependency":{"package":"inventory","version":"0.1.11","advisory":"[GHSA redacted]","aliases":["[GHSA redacted]","RUSTSEC-2023-0057","RUSTSEC-2023-0058"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d1d292ebd297dc35f5f94d7ce33171a83bdec620904a115ffede28a85b23e3c"},"properties":{"dependency":{"package":"rkyv","version":"0.7.44","advisory":"RUSTSEC-2026-0001","aliases":["RUSTSEC-2026-0235"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2639f61623a5815c15805f0ab1ea882024f8f36e1447afdb291df43968e00fe0"},"properties":{"dependency":{"package":"ajv","version":"6.12.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"548161690794da37894c4bf72c91c900899afc9520ca0347f9ba7e529ec8383a"},"properties":{"dependency":{"package":"ajv","version":"8.11.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c223c3cc19a5f5a9a20e50e05218eefc7782d952d13374ec9e885db57e6893e5"},"properties":{"dependency":{"package":"ajv","version":"8.12.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d075232ab5fd6544c5c2ba4d1f38426d8ea54bc45e6a00b9ef8697c8f2cdbc3"},"properties":{"dependency":{"package":"react-router","version":"6.18.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"rust-plugins/auto-import/playground-vue/src/types/auto_import.d.ts","line":4}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"72833b03391a61c42e1f4049aca033ce4cf86b09b38aaddb9d4d084e9194b8a2"},"properties":{"dependency":{"package":"react-router","version":"6.22.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"rust-plugins/auto-import/playground-vue/src/types/auto_import.d.ts","line":4}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3e28dd2da9a40e794e9cb9bb48d649ff80832ed5b9964b8392540d4033c64d16"},"properties":{"dependency":{"package":"colord","version":"2.9.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f10e28a890968cead99d23ccb9b886c5b333216dcaf9dddbbca102614955829a"},"properties":{"dependency":{"package":"@nestjs/core","version":"10.3.10","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"crates/create-farm-rs/templates/nestjs/src/main.ts","line":1}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"39ce9f3d5b9937d1e18419611bdb567cc6e434f5804c6d0d0dd7db797398c187"},"properties":{"dependency":{"package":"dompurify","version":"3.2.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5b812c4ed0748adb8ee20181699c8c8360409304cf9c3a853cd4d9bd937aff00"},"properties":{"dependency":{"package":"yaml","version":"1.10.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0b9abaea280f0bea7986a03e7fbb4751ca5a2fda525612b2ba71b1edcbde121a"},"properties":{"dependency":{"package":"yaml","version":"2.3.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"628d083bcaf1f2c25bc785736ad15be08a987bcc364e05e3e4c73b365b8d3e6d"},"properties":{"dependency":{"package":"yaml","version":"2.3.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bb62d16a7e241f8f72788dbd0f1402d17fef708453627c6b278f93e5ce08bc2b"},"properties":{"dependency":{"package":"yaml","version":"2.5.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"77595ddeb2a6b879721911aadde164fd7862ca58273f1b37abcf5a8d19439247"},"properties":{"dependency":{"package":"mdast-util-to-hast","version":"13.2.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9fa903053a3f312606416859cb67a9d184205be1a801337492ae8f642ebf9203"},"properties":{"dependency":{"package":"qs","version":"6.11.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fafc9091ae4762e9addb9f637beebbabf3036e8267907c7dd8475a28cbc70427"},"properties":{"dependency":{"package":"webpack-dev-server","version":"4.15.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d4446501abe32fb7b9dca6668d3db5cfd803d137bc1910eb29e8e129c60f899c"},"properties":{"dependency":{"package":"webpack","version":"5.92.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7e391009489dbb984757e0374614cc051a58eec8d7d4e113f6df3fa9c357780f"},"properties":{"dependency":{"package":"http-proxy-middleware","version":"2.0.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"afc0545aad2e2789f4d7c524d6cba021af6a1c96b293091e4aaf720775efee82"},"properties":{"dependency":{"package":"element-plus","version":"2.4.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"10e7ebf2bc6f092b587e1c5c6554560a1e358ae0c03c4a8acfc1fe5df51e8d09"},"properties":{"dependency":{"package":"@vitest/mocker","version":"2.1.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b0626639ffdbc658e7c1d889d41abcccd1682a45cb32c6b8f2e50a6f85a0bc7b"},"properties":{"dependency":{"package":"csv-parse","version":"4.16.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"52750697fd8e900586c56c0582fa46b9e47d6ecff03c0178c428b68ae328b6d5"},"properties":{"dependency":{"package":"micromatch","version":"3.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a69d569b90875dbebccc2fbb63678bc794414b754434260c6246d227560ec932"},"properties":{"dependency":{"package":"micromatch","version":"4.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"21ab85bbb0943e1f6c6ee9e567b6de5a413d818041672af724618e3ab98ce495"},"properties":{"dependency":{"package":"@babel/runtime","version":"7.23.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"758afe0c87cd9884d501364979638a4fdeee6a3ab8a742f472957bdf9a7ed2ac"},"properties":{"dependency":{"package":"@babel/runtime","version":"7.25.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"76d447f8c0e6d13bfc39d633936dad41df5cce33b59b16e9d34607aa51cfe22f"},"properties":{"dependency":{"package":"@babel/runtime-corejs3","version":"7.25.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"15770bd6b46142fcbb69061454415cdaaa407233dfe5539465e9b4828ef60655"},"properties":{"dependency":{"package":"katex","version":"0.16.15","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cfb36ea2a84c5319d1406a187032a563e5c54736816c2ba48fe5fc95d4dc1454"},"properties":{"dependency":{"package":"@nestjs/common","version":"10.3.10","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"crates/create-farm-rs/templates/nestjs/src/app.controller.ts","line":1}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"503930ce8ac5830cbf3d5f5d8ca5d3c7277e8c969216591a7fc2d919ef93f071"},"properties":{"dependency":{"package":"svelte","version":"5.2.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"production","file":"rust-plugins/icons/types/svelte3.d.ts","line":6}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"faeca7e289ec36c2fd0c22fc086dfa95dda2c9ba7002f32ef1301866f7a6c005"},"properties":{"dependency":{"package":"follow-redirects","version":"1.15.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"99efaed38ec27434fcb1909653f3ed7ddf7229f6dca7e0da5ad0a515da6bfbf7"},"properties":{"dependency":{"package":"follow-redirects","version":"1.15.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"660f990e616b0bfcf975be7c5504d9bd4046104f8b9843acd8100cb0dbab8375"},"properties":{"dependency":{"package":"estree-util-value-to-estree","version":"3.1.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2b519283877a3f1797aacba66092421122cb6459d205d2a205946b0c1383aa9f"},"properties":{"dependency":{"package":"echarts","version":"5.4.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2d93c38655ec32f76d456e0b7dac0b047eb2dbcdbeb544b53150bd8b4e342eb9"},"properties":{"dependency":{"package":"vue-template-compiler","version":"2.6.14","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"test-or-tooling","file":"crates/create-farm-rs/templates/vue2/package.json"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"615edd07ea8b7f6f2a1369ebd032e91df67cdc40183334e0efc1785a5255a04a"},"properties":{"dependency":{"package":"vue-template-compiler","version":"2.7.16","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"test-or-tooling","file":"crates/create-farm-rs/templates/vue2/package.json"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"adb1db0a33a4e2ed4d3e8978da58716dce74069c784425f9459d47a78d1185a0"},"properties":{"dependency":{"package":"@octokit/plugin-paginate-rest","version":"11.3.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6fb79007bff808f0f9ed82f4d428b3c45193863658dcd9768c0fea9c35128c01"},"properties":{"dependency":{"package":"fflate","version":"0.6.10","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"17629de07d75668c0bdc3d6703239568b9365bda46dfc6b85a25895cb637cc5a"},"properties":{"dependency":{"package":"fflate","version":"0.8.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d58c68394c16b8c0a4366511da73d604492f8dbc6e97d556c290a4d2eac4df4"},"properties":{"dependency":{"package":"@octokit/request","version":"8.4.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"484a2dd69b2c79e2727bdb94af222b1a81dd696cef15f62eab5cd3ecc9dc40f0"},"properties":{"dependency":{"package":"express","version":"4.18.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"57930d9d2ef5ab67d4fd4677d1b711b586ad62e59b52bd1efed2f5350f80d438"},"properties":{"dependency":{"package":"launch-editor","version":"2.9.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bea5062a3b6660225d627f9c4bdb4f25fec7bc046da1156713c45b0c01333efd"},"properties":{"dependency":{"package":"decode-uri-component","version":"0.2.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bcaff5d1e287866fb15ab08f33c0744f85cfc07f596d7af736c916f57cc95099"},"properties":{"dependency":{"package":"uuid","version":"8.3.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a927bc70f88e6ffbf10034373a1e003bc39beb46b4cad97f1dc1535c53116a8f"},"properties":{"dependency":{"package":"uuid","version":"9.0.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a6d6c2cbe69b1994e8a12122da24060486b972806f28b1d0e376e9bc9fad22ee"},"properties":{"dependency":{"package":"@octokit/endpoint","version":"9.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"88bcaf1543136855513fe9da54013a1bf5da5607a386e07661ee0e8589913aef"},"properties":{"dependency":{"package":"x-data-spreadsheet","version":"1.1.9","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b6e48f2ab489d740267f3420f0898bd304e2c0f84b1980cdaa2e0feb14fb734e"},"properties":{"dependency":{"package":"prismjs","version":"1.29.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"packages/runtime-plugin-hmr/src/overlay.ts","line":2}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"79ca8dc1cfc3a191151c814b55bf11606fbe6b718c02717ff2c35660618baee6"},"properties":{"dependency":{"package":"@octokit/request-error","version":"5.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"883fd3c84469606ed4a401071afec07180093ddf48e39d18013c6879dae795e5"},"properties":{"dependency":{"package":"markdown-it","version":"14.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8ff4501a0b6eb84bb92385b6433ad1c9d658a3cd9dbc3a993388fb9e366aa074"},"properties":{"dependency":{"package":"esbuild","version":"0.23.1","advisory":"[GHSA redacted]","reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d374d31479090548fe05c27ed2d66648c6c748b8aa823bb61433c24d94e784da"},"properties":{"dependency":{"package":"esbuild","version":"0.20.2","advisory":"[GHSA redacted]","reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8ad99cb4954b0f40a074c9b419d41dde3c5238c306ff64bb372d7d4805267e0f"},"properties":{"dependency":{"package":"follow-redirects","version":"1.15.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f392b1419f96aa208ac2115d3c34c2f00540ad0c5381e81423f8727e54319f35"},"properties":{"dependency":{"package":"@babel/core","version":"7.23.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"js-plugins/babel/src/index.ts","line":1}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f7518778193e79315a047e2cc5376b03a6e62d47ab6e48e1fe6cc61f5a69e6b9"},"properties":{"dependency":{"package":"@babel/core","version":"7.24.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"js-plugins/babel/src/index.ts","line":1}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c5735321e7a3663d414cfde76553bb506052b48aa844efdcf297db16d81d9f53"},"properties":{"dependency":{"package":"@babel/core","version":"7.28.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"js-plugins/babel/src/index.ts","line":1}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a772571f162bc5f31d0a2374592ce0695689cc2d40dd69d5806253d4f6ed2a9d"},"properties":{"dependency":{"package":"@babel/core","version":"7.29.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"js-plugins/babel/src/index.ts","line":1}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"63504ced86aa0f2e93b06b230de721cceee54190d2361421468e37053efc3b31"},"properties":{"dependency":{"package":"vue","version":"2.6.14","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"crates/create-farm-rs/templates/electron/vue/src/components/HelloWorld.vue","line":2}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"87e614b0befb1dd5a49a82977ff52ebe516b1082c64ee18aa0519b40a3e7fb1a"},"properties":{"dependency":{"package":"vue","version":"2.7.16","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"crates/create-farm-rs/templates/electron/vue/src/components/HelloWorld.vue","line":2}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d8884977fb5db81074778c0c1d8e66cf2219fb89e44e4956024b365306db135d"},"properties":{"dependency":{"package":"diff","version":"4.0.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"658b686120997e4aa0f19afe59b684cb2aefcab6d84f1b709e706224bb1788bd"},"properties":{"dependency":{"package":"diff","version":"5.2.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7d423efd264254eedb5082256406a0e92adc47e683482443902fef3ca874a69a"},"properties":{"dependency":{"package":"formidable","version":"2.1.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5832f3a8ef448215dad621251d84f94ff3300e007d91dc8d2e6a7d56ff8e5510"},"properties":{"dependency":{"package":"on-headers","version":"1.0.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"db74e868a2dda9fa32cc5976d76b226a5d471e1f02f6e2e0fd9855144ae188e1"},"properties":{"dependency":{"package":"serve-static","version":"1.15.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8f5f76c29d070ad8e886149fe6bcecbf683c467cf33e141a6bbf5f940f5bd32d"},"properties":{"dependency":{"package":"send","version":"0.18.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d1eb17a4af6bb8c064d5dca9e627a676ea1f7a8879f8a1f879eb654874243770"},"properties":{"dependency":{"package":"cookie","version":"0.5.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd60af0ee5f6708181dc6a3424bca4f0919142c106091e05996858d5ef865cdd"},"properties":{"dependency":{"package":"cookie","version":"0.6.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a061d74fb43a79b1eda01c17123b27bc0a6f216f63287b7caff7c72343a4d977"},"properties":{"dependency":{"package":"express","version":"4.19.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"986be8a9e3e6a6d872fe1ae6395a44a270132f5a5f578c7a3b3dbb6c999205d6"},"properties":{"dependency":{"package":"@tootallnate/once","version":"2.0.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eba7fb25d0b8d38048d1fab612533e16c381b81645728bbe7213282cfb7a64f5"},"properties":{"dependency":{"package":"postcss-selector-parser","version":"6.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3f54d1f4607fdaea22194262dabcf05db6136d2d813d8619ac129c6b6f33edda"},"properties":{"dependency":{"package":"esbuild","version":"0.27.4","advisory":"[GHSA redacted]","reachability":{"kind":"not-imported"}}}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned files with no living knowledge: 20 of 343 analysed file(s) have no living knowledge left \u2014 their last meaningful change has decayed away, so if one breaks, no one currently understands it (counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 343 of the 732 production source files in this repository met that bar). None is large enough to earn a read-through of its own, so this row stands in for the per-file rows rather than raising one each \u2014 most significant first: crates/create-farm-rs/src/template.rs, crates/create-farm-rs/src/utils/lte.rs, js-plugins/dts/src/utils.ts, crates/core/src/cache/scope.rs, crates/create-farm-rs/src/utils/colors.rs, crates/create-farm-rs/src/utils/theme.rs, js-plugins/dts/src/context.ts, crates/create-farm-rs/src/lib.rs (and 12 more). Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.ts \u2194 share.ts: \u0060packages/core/src/config/index.ts\u0060 and \u0060packages/core/src/utils/share.ts\u0060 change together 57% of the time (8 of the 14 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u00603085d644\u0060 fix: check different node environment (#1947); \u006049523be7\u0060 fix: resolve env file read environment variables error (#1483); \u0060f0f42b27\u0060 chore: logger use from param \u0026 type compile (#1337) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"709e2bd75b035c2362eec12486d83da8141bdb54f5c5c5f3d36e39ec1b2531eb"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.d.ts \u2194 schema.ts: \u0060packages/core/binding/index.d.ts\u0060 and \u0060packages/core/src/config/schema.ts\u0060 change together 50% of the time (15 of the 30 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 15 shared commits counted here, the most recent 3 are \u006091f897b2\u0060 chore: optimize js logic (#1334); \u0060492353f8\u0060 Fix/lazy compilation (#1253); \u00605b75ec27\u0060 feat: support isolate runtime resource (#1200) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/binding/index.d.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"031daf7dc584370fe35df2d860a92568369cb199b650355893ef54fa54c9f174"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.ts \u2194 binding.ts: \u0060packages/core/src/config/index.ts\u0060 and \u0060packages/core/src/types/binding.ts\u0060 change together 50% of the time (8 of the 16 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u00607e71514f\u0060 feat: support add and remove event for HMR (#2226); \u0060e63b163a\u0060 feat: v1.5.0 (#1987); \u006036512446\u0060 feat: add assets mode for asset path generate (#1852) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6442caa1ba1f49dacf6f0e1535103a27517087591ba6651adb06d5d6d5f66def"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0752d0df7434000fcabf1048e2de30a7a1a8b982b3db9a19898c4dec199856b4"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d068c977b62d9a977df1bb6f53e8b00b586c3abee955f91d715f92b8e019d624"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cbutton\u003E with no accessible text: A button with no text and no aria-label has no accessible name. Add visible text or an aria-label (an icon-only button still needs one)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/vanilla/src/main.ts"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"6808e731bf6e1f4f1dd55b33e90a0501145a39bf9f34a97d181c890139c57440"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel htmlFor\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/preact/src/App.tsx"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"968238fd7dd150107af7ddffa0219dcd81875e57ab48cebc6f5d04c1344184a7"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel htmlFor\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/react/src/App.tsx"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b1caab96e573b5adcc01245b98f03b63992e68e26a92204e3ecfbb788ab7331"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel htmlFor\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/solid/src/App.tsx"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d53c0718095c34b99aa478424b6a42cf578243aac446ee49192284a0bdbb40"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/svelte/src/lib/Greet.svelte"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"45dea7b8c46614f472825bb55b3e2253e743a75b715ae6d2fa09abc9fbc39e97"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/vanilla/index.html"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"ded6067e1ddd69d2fe39ca974a7558406c8174d2fb6be542a9c50881e544c121"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/vue/src/components/Greet.vue"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3ea95a3f7a230d179ac171d283f3ab19d03c64265f70fbfd744c62d2db729f"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel htmlFor\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/preact/src/App.tsx"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d2910a74f7dd0a3f0cdd46485fab71426485c93c74241a172fcaaa47574d9b"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel htmlFor\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/react/src/App.tsx"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"a783feb0321fff2ad5671f03afb42d450a58da7fd4d0d02905fef9f60f77ecec"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel htmlFor\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/solid/src/App.tsx"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"3501b9f6355249e08ca3adfd681513673de9b7646fab61365a5051079fab236e"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/svelte/src/routes/\u002Bpage.svelte"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb1dd673099ea6733aa648bc63b24aa978eb9efb3c38f5d2e495e7571a71399"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/vanilla/index.html"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bfe85b427ab4180c53d3aaf4aed41bed456b41bb1f9fb50732717628a43f077"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cinput\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/vue/src/App.vue"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"465aa3172bb835d3e79cd58ee66d120c743548891a866420e1914ab0d400206f"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cbutton\u003E with no accessible text: A button with no text and no aria-label has no accessible name. Add visible text or an aria-label (an icon-only button still needs one)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/vanilla/src/main.ts"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0193e2a714f5e68243c036d0053931c56de7ee488a4142666c6bdd2f8f4f79c"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/pages/analysis/Compilation.vue"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf254df7bde7a5ff75b1c85f928ee75ad92945abed0db49c9f9c1cab95db05d0"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has only a placeholder \u2014 a placeholder is not a label (it vanishes on input and many AT ignore it). Add a \u003Clabel for\u003E, a wrapping \u003Clabel\u003E, or aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/pages/analysis/Compilation.vue"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd9a94a4a8d7530e32f77d3dd3252ee4929aaa8927b48191b74f7a723bd55b1e"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cselect\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/pages/analysis/Plugin.vue"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"69bd8119e526d7ff411b7af11ec50bf967da1e4940f80e41a8924eb3f102b547"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/frame-template.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"37d1928f6e412dd2ea096338f5b9e27887dac78fa0ac0926517cda846cc877bb"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/frame-template.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b709290ac5bde217fbcce97cf9022aabec4bf66a156d94a05cf46b1029af144"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".claude/skills/brainstorming/scripts/frame-template.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12255e825582834c314a79ad12c1ecb997400365dfb2fdbcd1f54d966476b09"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".claude/skills/brainstorming/scripts/frame-template.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b078a8d5310e3447c3674e6d4e08490ee6dd230a9cea2998f769ad466b67ab"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/lit/index.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"5388e0ff86a7416876dccaf5a023a8e4841d4af45938c763e84598e592d61a6e"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/vanilla/index.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b7e30d0e442f8e4a28a054fee100e76650b8c1c20bc29e6f99513ea2bc5682"}},{"ruleId":"AC4","level":"error","message":{"text":"Clickable element isn\u0027t keyboard-operable: The repo\u0027s own CSS styles .card with \u0060cursor: pointer\u0060, so this \u003Cdiv\u003E is a control \u2014 but it has no role, no tabindex=\u00220\u0022 and no key handler, so it can only be reached with a mouse. Use a \u003Cbutton\u003E, or add role \u002B tabindex=\u00220\u0022 \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/svelte/src/App.svelte"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"49f5d724b8f8824eb6131a477adf30ad29c5409a6e1409084b90454a16bbbc40"}},{"ruleId":"AC4","level":"error","message":{"text":"Clickable element isn\u0027t keyboard-operable: The repo\u0027s own CSS styles .card with \u0060cursor: pointer\u0060, so this \u003Cdiv\u003E is a control \u2014 but it has no role, no tabindex=\u00220\u0022 and no key handler, so it can only be reached with a mouse. Use a \u003Cbutton\u003E, or add role \u002B tabindex=\u00220\u0022 \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/svelte/src/App.svelte"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"abfc140a9331106e6696f8b1dc972592b7a4e2f528995da5e261e2587f71cf70"}},{"ruleId":"AC4","level":"error","message":{"text":"Click handler on a non-interactive \u003Cdiv\u003E: A click handler on a plain element isn\u0027t keyboard-operable. Use a \u003Cbutton\u003E, or add role \u002B tabindex=\u00220\u0022 \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/ModuleList.vue"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"11d784fa18a55494e379700ee0d5447a6fedc4eef9d9fb4da45f8546df6a0454"}},{"ruleId":"AC4","level":"error","message":{"text":"Click handler on a non-interactive \u003Cdiv\u003E: A click handler on a plain element isn\u0027t keyboard-operable. Use a \u003Cbutton\u003E, or add role \u002B tabindex=\u00220\u0022 \u002B a key handler."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/ResourcePots.vue"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc1c752bc142689b22630b791021b4a28ad2ef51f914d4338c0c1fc55b769ba"}},{"ruleId":"AC7","level":"warning","message":{"text":"Accessibility enforcement below the top rung: No accessibility enforcement found \u2014 your Biome config enables no a11y rules and there\u0027s no axe/pa11y/Lighthouse in tests or CI. Start by turning on Biome\u0027s own a11y rule group to catch issues at author time. What was searched, so you can tell an absence from a miss: the 95 markup file(s) this pass actually assessed, the linter configuration checked in beside them, and this repository\u0027s test and CI files \u2014 matched by name against the accessibility checkers this dimension carries. An audit run outside the repository, a hosted scanner, or a check whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d46019b86eff5ddad9db289e6802ac158899e980df54c34f67722442787ead62"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"P1","level":"warning","message":{"text":"CI formatting step cannot fail: \u0060cargo fmt\u0060 invokes cargo fmt in the mode that REWRITES the files it reformats and exits 0 whatever it changed. The rewrite happens inside the runner\u0027s throwaway checkout and is then discarded, so the step passes on a badly-formatted change exactly as it passes on a clean one \u2014 it enforces nothing, and no other step in this file reads the result. \u0060--check\u0060 is the flag that turns the same invocation into a gate: it leaves the files alone and exits non-zero when anything would have been reformatted."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".github/workflows/lint.yaml"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d4c2631c19f06bf743b5e77a093a70ba5f6989a39804ea27cde6aab0727ae4e"}},{"ruleId":"P2","level":"note","message":{"text":"Logging is not universal: Only 5/23 runnable modules use logging (modules with no entry point or server are excluded \u2014 they are libraries a runnable module hosts). Silent: \u0060crates/create-farm-rs\u0060, \u0060crates/create-farm-rs/templates/tauri/preact/src-tauri\u0060, \u0060crates/create-farm-rs/templates/tauri/react/src-tauri\u0060, \u0060crates/create-farm-rs/templates/tauri/solid/src-tauri\u0060, \u0060crates/create-farm-rs/templates/tauri/svelte/src-tauri\u0060 and 13 more."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a94e21d6d4d0e6a2003f94505b0b02b157176f0b24c4820f3f82b4447a97fe"}},{"ruleId":"P4","level":"note","message":{"text":"No release approval gate: The release is automated and no gate that pauses it for a human is DECLARED IN THIS REPOSITORY\u0027S PIPELINE FILES. What was read: every file under \u0060.github/workflows/\u0060, \u0060.forgejo/workflows/\u0060, \u0060.gitea/workflows/\u0060, \u0060.azuredevops/\u0060 and \u0060.azure-pipelines/\u0060, plus \u0060.gitlab-ci*\u0060 and \u0060azure-pipelines*\u0060 \u2014 with comment text stripped, so documenting a gate is not declaring one. What would have counted: GitLab\u0027s \u0060when: manual\u0060, CircleCI\u0027s \u0060type: approval\u0060, an Azure \u0060ManualValidation@\u0060 task or an \u0060approvals:\u0060 block, a Jenkins \u0060input\u0060 step, a \u0060uses:\u0060 step naming an approval action, an \u0060environment:\u0060 paired with \u0060reviewers\u0060 / \u0060required_reviewers\u0060 / \u0060protection\u0060 / \u0060wait-timer\u0060 / \u0060deployment_branch_policy\u0060, a draft-release step, a \u0060workflow_dispatch\u0060 promotion, or a release-event gate. \u2605 What this cannot see, because none of it is a file: a GitHub environment whose required reviewers are configured in repo SETTINGS, a branch protection rule, or an organisation deployment policy \u2014 all of them real, enforced gates that live outside the repository. If yours is one of those, this row is wrong and nothing in the tree could have told us. Otherwise: whatever the release trigger points at is published to users unreviewed, so a mistagged or unverified commit ships and the only remedy is a follow-up release."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6c11e2dbd483b4b423b95ac61bfcc7af1d55351b28a20d2b1105b31cfe38cc60"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060reqwest::get(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/src/cache/mod.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"9384c6f367a3da6c11650a38909bc9753aae8637b1ed41d677e07f957e36bb67"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060farmLessPlugin\u0060 holds an async function that calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1101302802deccd0edbbbdffa3c42cf12c5f2ca1992c60fccc070b5ca1ff2b"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060farmSassPlugin\u0060 holds an async function that calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b0d8366a706536f66ed040ebb5a9b348c4b1f02cf1cd5a6c7abf46a6f401e8"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060resolveDependency\u0060 is async and calls existsSync, statSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"517fc42cf6cf83941d9f767db9371e166d1310389e619a5ec16a37affc93f017"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060readConfigFile\u0060 is async and calls existsSync, rmSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/load-config-file.ts"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa90bd7e68df8a1376a1cb5882f375ef9037c46c9162a5af62055d2eae1d7140"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060checkCompilationInputValue\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/index.ts"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"9253221d2732af3a4d66b9ed668681bdb9b24099a817bb650fd56794f6700b34"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060normalizePersistentCache\u0060 is async and calls existsSync, readFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-persistent-cache.ts"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d66714de076dc7aa8edc1264efccb22f301c8fdc65569a9acc4a3cb0fac6b0"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060defaultLoadPlugin\u0060 holds an async function that calls existsSync, readFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/adapter-plugins/default-load.ts"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4488a0e5820ea7f9ddee0d366c1ea0da7d5ad0915afb120dd3ee8ebc68fd7a2"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060hmrUpdate\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/hmr-engine.ts"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dff7293290310787ad410062bad051a326c8b47ff688a410c9fab59f6a0accc"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060lazyCompilationMiddleware\u0060 holds an async function that calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/middlewares/lazyCompilation.ts"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8fa07a72bb8a844250d78a4f72b192dabf6e233d60f058304f2205cec9b5205"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060#resolveOptions\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/preview.ts"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9549b30ee9659b8d4c9a0b5b6656cc2c7d1bc15e1517d3e00c0b9aa4a6387d9"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060isCacheDirExists\u0060 is async and calls readdirSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/cacheDir.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"282dbb28bb90587d2041d8123176bedd805550b1e4ae5c3f5a01f7514b3c0515"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060recursiveReaddir\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/file.ts"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7544128e9f4cfcab4d77ff48fde184aa5c33c1757d050f1bba766703eeb31d1"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060getAdditionContext\u0060 is async and calls readFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/plugin-utils.ts"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc990eeeb4d90bf6c6ab16a4b1ccff73d242de746c9fb97a7b4cf83d3cb9ada"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060checkPublicFile\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/publicDir.ts"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd1aee99025ac58b266caad777ff656b4108001041be899e9c56c4665784307"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060traceDependencies\u0060 is async and calls existsSync, statSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/trace-dependencies.ts"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd8c4056f3ae04ba6a9b01cf4bd7076c1f93fee54dfaf35af744b6cbed24feb"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060copyTemplate\u0060 is async and calls existsSync, copyFileSync, readFileSync, writeFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/create-farm-plugin/index.ts"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b091010f4ccb48dec8ffbf2201f9b71d48ed064cb86ac3a5b4fde78e28a70b"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060prepublish\u0060 is async and calls execSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/plugin-tools/src/prepublish.ts"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f67834cbf915a11d880f388402f918383f6d71722a7ba69b5f4c17e1a9bafc8"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060installDependencies\u0060 is async and calls execSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f136b4bfed948e76c5734e1ec591c9d1aed60b7ad92b5d9579f109e5fd4ca1"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060buildExamples\u0060 is async and calls readdirSync, existsSync, readFileSync, statSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"176abc186d5597256f7b72f7c65392b6be2ba65562b9c161501bd83749d61f7e"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060buildJsPlugins\u0060 is async and calls readdirSync, statSync, existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0cd8f3a3999229cf8e1d30bce5c7b644b0768f3d2f170cb32b1cef8fbd6cb3b"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060buildRustPlugins\u0060 is async and calls readdirSync, statSync, existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc5de1717e050483846e590252288703dcc502f947cc97fac4544e8a2c7a127"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060runExample\u0060 is async and calls existsSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b35ae296052c362c4797bc56b3bee0b7447c7df8ee11b734af051c813731c85"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 7 sibling directories (9 clone groups): 9 duplicated blocks under crates/create-farm-rs/templates/ have copies in at least two of the sibling directories electron, preact, react, solid, tauri, tauri2 (\u002B1 more sibling(s) not listed) \u2014 6 of them are reported below, and 3 are counted here but not reported individually: those copies match on shape but no longer clear R10\u0027s bar for an individually reported row \u2014 either they kept neither their own names nor their values, or what was copied is too small to stand on its own (it reports near-exact duplication only, and only of substantial extent). What this row states is the concentration, which the detector measured over all 9 and which does not depend on how exactly each block\u0027s copies still match. That concentration is one structural fact, not 9 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 9 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/react/src/App.tsx"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"65be4492712e32f59a088330daa3f133d62e7cc82ef3b529677f133af3215a53"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 6 sibling directories (8 clone groups): 8 of the duplicated blocks reported below have copies in at least two of the sibling directories preact, react, solid, svelte, vanilla, vue under crates/create-farm-rs/templates/electron/. That concentration is one structural fact, not 8 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 8 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/electron/main.ts"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3dbcb54d454fd7a3963e4dfa7a13cdd1943b6e44e8ed0bd3a39d24cf5bcff20"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplication concentrated across 6 sibling directories (5 clone groups): 5 duplicated blocks under js-plugins/ have copies in at least two of the sibling directories babel, dts, less, postcss, react-compiler, sass \u2014 4 of them are reported below, and 1 is counted here but not reported individually: those copies match on shape but no longer clear R10\u0027s bar for an individually reported row \u2014 either they kept neither their own names nor their values, or what was copied is too small to stand on its own (it reports near-exact duplication only, and only of substantial extent). What this row states is the concentration, which the detector measured over all 5 and which does not depend on how exactly each block\u0027s copies still match. That concentration is one structural fact, not 5 local ones: the siblings replicate behaviour none of them owns, which is the shape of a missing shared module \u2014 a common library every sibling imports \u2014 rather than 5 separate extractions. Check first whether the siblings are deliberately standalone deliverables (scaffold templates, demo apps that must stay copy-pasteable); where they are, the duplication is the design and the per-block rows are the ones to act on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61af763c63ad37df905e0f17a06e0253a3aefe3688f368d076f4f17b02ee39e"}},{"ruleId":"R10","level":"warning","message":{"text":"Wholesale file copy (64 identical lines \u00D7 4 files): rust-plugins/dts/scripts/index.js:1 \u00B7 rust-plugins/replace-dirname/scripts/index.js:1 \u00B7 rust-plugins/svgr/scripts/index.js:1 \u00B7 rust-plugins/vue-jsx/scripts/index.js:1 \u2014 these 4 files are line-for-line copies of one another \u2014 64 lines are identical, in the same order, in every one of them \u2014 so this is one fact about the file set, not a block to extract. An edit made to one file and not the others changes behaviour silently, which is the failure a wholesale copy guarantees. Pick one file as the single source and derive the others from it (re-export it, spread it into the local overrides each variant genuinely needs, or generate the copies at build time) \u2014 the few lines that differ between the files are exactly the part each variant should still own. Check first whether the copies are deliberately standalone deliverables (a translation file seeded from its sibling and waiting to be translated); where they are, the duplication is the design, and the honest move is to mark the seeded file as untranslated rather than to let it pass as done."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/dts/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2297eb542cba9f521ed279d3fe8824adae5e3392b037f8bad838102962dbc60"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (53 lines \u00D7 21 locations): packages/create-farm-plugin/templates/rust/scripts/index.js:69 \u00B7 rust-plugins/auto-import/scripts/index.js:69 \u00B7 rust-plugins/compress/scripts/index.js:69 \u00B7 rust-plugins/dsv/scripts/index.js:69 \u00B7 \u002B17 more site(s) not listed \u2014 the 21 copies are spread across 21 files, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/create-farm-plugin/templates/rust/scripts/index.js"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe82ea1dce2ee29b029ffde36d4c2c73467a3257a25f91ae52d7150e78a5227"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 2 locations): crates/create-farm-rs/templates/tauri/preact/src/App.tsx:7 \u00B7 crates/create-farm-rs/templates/tauri/react/src/App.tsx:7 \u2014 the 2 copies are spread across 2 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/preact/src/App.tsx"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc18d7bc15f9df3f2afcad9460effbf347f171dd3171c124a7334298278f0143"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (45 matched lines \u00D7 2 locations): js-plugins/less/src/index.ts:39 \u00B7 js-plugins/sass/src/index.ts:56 \u2014 the two spans are one implementation copied and then locally edited \u2014 254 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"043f3a4fcbb20081b158d70d8b2c07acac1c4ff7023f473696588e285c195294"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (43 matched lines \u00D7 2 locations): packages/core/src/server/type.ts:9 \u00B7 packages/runtime-plugin-hmr/src/types.ts:55 \u2014 the two spans are one implementation copied and then locally edited \u2014 163 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/type.ts"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0bab1bbceede7933eb7bab8598c67d11bcc12df2e2d3580540b5980895d85d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2 locations): crates/create-farm-rs/templates/tauri/react/src/App.tsx:7 \u00B7 crates/create-farm-rs/templates/tauri2/react/src/App.tsx:6 \u2014 the 2 copies are spread across 2 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/react/src/App.tsx"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c2fd43285df68ce85de4c9e625ffb2e8aa3a33a38dc391bff534c387117a5a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2 locations): crates/create-farm-rs/templates/tauri/solid/src/App.tsx:7 \u00B7 crates/create-farm-rs/templates/tauri2/solid/src/App.tsx:6 \u2014 the 2 copies are spread across 2 files, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri/solid/src/App.tsx"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"accae5c8fb9089d8d753cf4bf0efffdaad928d288a7e56692d7a765e59e3ce4c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 3 locations): js-plugins/copy/farm.config.ts:4 \u00B7 js-plugins/vuetify/farm.config.ts:4 \u00B7 packages/create-farm-plugin/templates/js/farm.config.ts:4 \u2014 the 3 copies are spread across 3 files, and the SHAPE of this repetition could not be determined. It is not a run of declarations, a listing, a declaration header, a type body or a slice through a construct \u2014 and it was not measured as a run of executable statements either, so this row cannot tell you whether a function can stand where these lines are. Read the two spans before acting, because the move is opposite in the two cases. Where they are statements, the ordinary answer holds: give the shared part one home and call it from each site. Where they turn out to be declarations, a literal\u0027s entries, or the cases of an enumeration, there is no call site to call anything from, and collapsing them would delete what each copy pins \u2014 a shared base type, a generated set, or one exported constant each site refers to is the move instead, and sometimes the honest answer is that there is nothing to extract at all. Reported because the copies drift apart the first time only one of them is edited, which is true whichever of those they are."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/copy/farm.config.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"128527dc3186dbdfb8b683e3819b19ee7f830590a102a0d430e3c28a27ffd40a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 21 locations): packages/create-farm-plugin/templates/rust/scripts/index.js:6 \u00B7 rust-plugins/auto-import/scripts/index.js:6 \u00B7 rust-plugins/compress/scripts/index.js:6 \u00B7 rust-plugins/dsv/scripts/index.js:6 \u00B7 \u002B17 more site(s) not listed \u2014 the 21 copies are spread across 21 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another. There is one copy in each of 21 separate files rather than several in one place, so check first whether these are sibling modules that each declare their own version of one shape \u2014 one per entity, per provider, per language. Where they are, no single extracted module collapses them: each module still has to be written, and what recurs is the TEMPLATE. The moves that do collapse a template are to generate these modules from the set they enumerate, or to replace the repeated construction with one factory each site calls with its own values \u2014 and where the set is the point, each module pinning one distinct thing, the repetition IS the enumeration and there is nothing to delete."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/create-farm-plugin/templates/rust/scripts/index.js"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23590a27738064eadb69be10b49590aa129b7132aa1bc52dcadc92eab5a1389"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 3 locations): packages/core/src/types/ws.ts:148 \u00B7 packages/core/src/types/ws.ts:184 \u00B7 packages/core/src/types/ws.ts:219 \u2014 all 3 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/types/ws.ts"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb2c5560d1e94fcc32acb78fd6eeaab55026fca3d2b8be844430f7918fdac74"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 6 locations): crates/create-farm-rs/templates/electron/preact/electron/main.ts:5 \u00B7 crates/create-farm-rs/templates/electron/react/electron/main.ts:5 \u00B7 crates/create-farm-rs/templates/electron/solid/electron/main.ts:5 \u00B7 crates/create-farm-rs/templates/electron/svelte/electron/main.ts:5 \u00B7 \u002B2 more site(s) not listed \u2014 the 6 copies are spread across 6 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another. There is one copy in each of 6 separate files rather than several in one place, so check first whether these are sibling modules that each declare their own version of one shape \u2014 one per entity, per provider, per language. Where they are, no single extracted module collapses them: each module still has to be written, and what recurs is the TEMPLATE. The moves that do collapse a template are to generate these modules from the set they enumerate, or to replace the repeated construction with one factory each site calls with its own values \u2014 and where the set is the point, each module pinning one distinct thing, the repetition IS the enumeration and there is nothing to delete."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/electron/main.ts"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f78df16e3f38a75bc3f37f9dec98a6494a32e56a5c0ac2a73ef7013e01fd9a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (33 matched lines \u00D7 2 locations): packages/core/src/server/index.ts:727 \u00B7 packages/core/src/server/preview.ts:273 \u2014 the two spans are one implementation copied and then locally edited \u2014 197 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/index.ts"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98c3bab7680d1ee0067ab17d4ea318529e38a1a9fc12d41a5409480ea72e891"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2 locations): scripts/build.mjs:282 \u00B7 scripts/build.mjs:332 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"24af8c55ffbf081d7908d69108e6d97af7d30317a42e315946137caf4315420c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/solid/src/App.tsx:6 \u00B7 crates/create-farm-rs/templates/solid/src/App.tsx:6 \u2014 the 2 copies are spread across 2 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/solid/src/App.tsx"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b5c7a77d0c706c958e867ea50ed7e7c75d9f51df551a989e175f00ca5c79b6"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 3 locations): crates/create-farm-rs/templates/tauri2/preact/src/App.tsx:17 \u00B7 crates/create-farm-rs/templates/tauri2/react/src/App.tsx:17 \u00B7 crates/create-farm-rs/templates/tauri2/solid/src/App.tsx:17 \u2014 the 3 copies are spread across 3 files, and the CITED SPAN is a DECLARATION HEADER \u2014 the name, parameter list with its constraints and defaults, and base-type clause of a declaration \u2014 rather than statements inside a body. A header cannot be lifted into a helper: there is no expression position for a call to stand in, and the copies are frequently required to match, because one declaration passes its parameters straight through to the other. So the move is not extraction. Give the repeated pieces names \u2014 factor a long constraint or base-type expression into one named type both declarations refer to \u2014 and where the headers must stay identical, derive one from the other (a shared base declaration, or a single alias that spells the parameter set once) so that changing it once changes both. Where the language offers neither, treat the two as a pair that must be edited together: they drift apart the first time only one of them is changed, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/preact/src/App.tsx"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"769aa97ba0b80a2528e885ca8def8e38adccc3e8b9f7983c7a7cb6e8f223e6f8"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2 locations): packages/core/binding/resolve-binding.cjs:160 \u00B7 packages/core/binding/resolve-binding.cjs:191 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/binding/resolve-binding.cjs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa606b39d406c583f143454f505c3e566f7943ec753d5dba643c17f80863f6db"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2 locations): packages/create-farm-plugin/templates/js/playground/src/main.tsx:5 \u00B7 packages/create-farm-plugin/templates/rust/playground/src/main.tsx:5 \u2014 the 2 copies are spread across 2 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/create-farm-plugin/templates/js/playground/src/main.tsx"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"27288a26bd911b2506a053ae1857a78b11de952ba32e1d4b089be359290270ea"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/react/src/main.tsx:5 \u00B7 crates/create-farm-rs/templates/react/src/main.tsx:5 \u2014 the 2 copies are spread across 2 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/react/src/main.tsx"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d0aa26f7d8f3415ec833bdf7303b9c301bcd5992b3a5867f927b809b4f9ac73"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/preact/src/app.tsx:6 \u00B7 crates/create-farm-rs/templates/preact/src/app.tsx:6 \u2014 the 2 copies are spread across 2 files, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/src/app.tsx"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e073bbfa5422c4ea89ac900acda39b81c7f16f743dd702565840851a5424663"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2 locations): js-plugins/visualizer/src/client/src/components/CodeDiff.vue:25 \u00B7 js-plugins/visualizer/src/client/src/components/CodeViewer.vue:24 \u2014 the 2 copies are spread across 2 files, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/CodeDiff.vue"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"97486657f97b094dcbe8d27ac53ca1fe13b33a11ef0e3a16b8826906fdc50071"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2 locations): packages/core/src/plugin/js/vite-plugin-adapter.ts:521 \u00B7 packages/core/src/plugin/js/vite-plugin-adapter.ts:580 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-plugin-adapter.ts"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"caba0a26c486b83cc778b1871eb2e102061517f2697ac27ee6ef7f70889e317f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (23 matched lines \u00D7 2 locations): packages/runtime-plugin-hmr/src/overlay.ts:703 \u00B7 packages/runtime-plugin-hmr/src/overlay.ts:742 \u2014 the two spans are one implementation copied and then locally edited \u2014 145 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/overlay.ts"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d3c7d2d58329c4dd861936ddeecf5626bd98140cdeab8a6f040c6f0a962b70d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (22 matched lines \u00D7 2 locations): packages/core/src/plugin/js/apply-html-transform.ts:68 \u00B7 packages/core/src/plugin/js/apply-html-transform.ts:104 \u2014 the two spans are one implementation copied and then locally edited \u2014 132 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/apply-html-transform.ts"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de88e9acb187d37b5ba649b447708b18e3adc25db4becd29a646d9ca51b476d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2 locations): packages/core/src/server/error.ts:5 \u00B7 packages/runtime-plugin-hmr/src/utils.ts:32 \u2014 the 2 copies are spread across 2 files, and the SHAPE of this repetition could not be determined. It is not a run of declarations, a listing, a declaration header, a type body or a slice through a construct \u2014 and it was not measured as a run of executable statements either, so this row cannot tell you whether a function can stand where these lines are. Read the two spans before acting, because the move is opposite in the two cases. Where they are statements, the ordinary answer holds: give the shared part one home and call it from each site. Where they turn out to be declarations, a literal\u0027s entries, or the cases of an enumeration, there is no call site to call anything from, and collapsing them would delete what each copy pins \u2014 a shared base type, a generated set, or one exported constant each site refers to is the move instead, and sometimes the honest answer is that there is nothing to extract at all. Reported because the copies drift apart the first time only one of them is edited, which is true whichever of those they are."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/error.ts"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2cae41c0eefc757aa1be7c897efd98103682356b11aa01113484c3e05c1bae5"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4 locations): crates/create-farm-rs/templates/tauri2/preact/farm.config.ts:5 \u00B7 crates/create-farm-rs/templates/tauri2/solid/farm.config.ts:5 \u00B7 crates/create-farm-rs/templates/tauri2/svelte/farm.config.ts:5 \u00B7 crates/create-farm-rs/templates/tauri2/vue/farm.config.ts:5 \u2014 the 4 copies are spread across 4 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another. There is one copy in each of 4 separate files rather than several in one place, so check first whether these are sibling modules that each declare their own version of one shape \u2014 one per entity, per provider, per language. Where they are, no single extracted module collapses them: each module still has to be written, and what recurs is the TEMPLATE. The moves that do collapse a template are to generate these modules from the set they enumerate, or to replace the repeated construction with one factory each site calls with its own values \u2014 and where the set is the point, each module pinning one distinct thing, the repetition IS the enumeration and there is nothing to delete."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/tauri2/preact/farm.config.ts"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b35b3b1af8eec4534aff059a6dc44d92b3429cc119c209f233716741e50379"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2 locations): packages/core/src/types/ws.ts:257 \u00B7 packages/core/src/types/ws.ts:278 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/types/ws.ts"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"357dedb58d69d9fe5dcbef0595c7e71bc499a61958f1399500c146a4ef8915ef"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 6 locations): crates/create-farm-rs/templates/electron/preact/electron/preload.ts:4 \u00B7 crates/create-farm-rs/templates/electron/react/electron/preload.ts:4 \u00B7 crates/create-farm-rs/templates/electron/solid/electron/preload.ts:4 \u00B7 crates/create-farm-rs/templates/electron/svelte/electron/preload.ts:4 \u00B7 \u002B2 more site(s) not listed \u2014 the 6 copies are spread across 6 files, and the SHAPE of this repetition could not be determined. It is not a run of declarations, a listing, a declaration header, a type body or a slice through a construct \u2014 and it was not measured as a run of executable statements either, so this row cannot tell you whether a function can stand where these lines are. Read the two spans before acting, because the move is opposite in the two cases. Where they are statements, the ordinary answer holds: give the shared part one home and call it from each site. Where they turn out to be declarations, a literal\u0027s entries, or the cases of an enumeration, there is no call site to call anything from, and collapsing them would delete what each copy pins \u2014 a shared base type, a generated set, or one exported constant each site refers to is the move instead, and sometimes the honest answer is that there is nothing to extract at all. Reported because the copies drift apart the first time only one of them is edited, which is true whichever of those they are."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/electron/preload.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"57d31ea7c59ae531f75e7fd1113f48cbe70acdd19fc0a645c053eae63ed2aac5"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 6 locations): crates/create-farm-rs/templates/electron/preact/forge.config.cjs:13 \u00B7 crates/create-farm-rs/templates/electron/react/forge.config.cjs:13 \u00B7 crates/create-farm-rs/templates/electron/solid/forge.config.cjs:13 \u00B7 crates/create-farm-rs/templates/electron/svelte/forge.config.cjs:13 \u00B7 \u002B2 more site(s) not listed \u2014 the 6 copies are spread across 6 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another. There is one copy in each of 6 separate files rather than several in one place, so check first whether these are sibling modules that each declare their own version of one shape \u2014 one per entity, per provider, per language. Where they are, no single extracted module collapses them: each module still has to be written, and what recurs is the TEMPLATE. The moves that do collapse a template are to generate these modules from the set they enumerate, or to replace the repeated construction with one factory each site calls with its own values \u2014 and where the set is the point, each module pinning one distinct thing, the repetition IS the enumeration and there is nothing to delete."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/forge.config.cjs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d2b8715e5dd873f1b247bfce37fbf90e6b7d33031500b40541dc0afa7c44931"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (18 matched lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/solid/farm.config.ts:3 \u00B7 crates/create-farm-rs/templates/electron/svelte/farm.config.ts:3 \u2014 the two spans are one implementation copied and then locally edited \u2014 51 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/solid/farm.config.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d234bec94e385bb4fa48c2e00e702257bc24e3eed1792526f2683e5b37c27d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (18 matched lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/solid/farm.config.ts:3 \u00B7 crates/create-farm-rs/templates/electron/vue/farm.config.ts:3 \u2014 the two spans are one implementation copied and then locally edited \u2014 51 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/solid/farm.config.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"9baa6ca861ac194da1231509077c467471c38f20cb78f0ba11bbc6270efd89da"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 6 locations): packages/core/src/plugin/js/js-plugin-schema.ts:256 \u00B7 packages/core/src/plugin/js/js-plugin-schema.ts:275 \u00B7 packages/core/src/plugin/js/js-plugin-schema.ts:294 \u00B7 packages/core/src/plugin/js/js-plugin-schema.ts:313 \u00B7 \u002B2 more site(s) not listed \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/js-plugin-schema.ts"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cbfc9d1baf92ab5d7397bd19f508fb477be13225f004ed9fe5ffb8bf851e25d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (18 matched lines \u00D7 2 locations): packages/core/src/server/index.ts:322 \u00B7 packages/core/src/watcher/index.ts:266 \u2014 the two spans are one implementation copied and then locally edited \u2014 84 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/index.ts"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf83869b327a8ef0d7913d55a7d2c491c2b0109794c1829b35111e97cce9e864"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (17 matched lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/preact/farm.config.ts:3 \u00B7 crates/create-farm-rs/templates/electron/solid/farm.config.ts:3 \u2014 the two spans are one implementation copied and then locally edited \u2014 52 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/farm.config.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc224598ca78e67d9140c964059cd95fb80a31b519c9212759be6d981804e98f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (17 matched lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/preact/farm.config.ts:3 \u00B7 crates/create-farm-rs/templates/electron/svelte/farm.config.ts:3 \u2014 the two spans are one implementation copied and then locally edited \u2014 51 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/farm.config.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"e90da561a8c29ec24fe0ac630ffff51d6e71b30184945fd5d777f72a273149ec"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (17 matched lines \u00D7 2 locations): crates/create-farm-rs/templates/electron/preact/farm.config.ts:3 \u00B7 crates/create-farm-rs/templates/electron/vue/farm.config.ts:3 \u2014 the two spans are one implementation copied and then locally edited \u2014 51 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/farm.config.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"acc3f070fd52ba05e5529e78dd6cedf5063020ad18732f8228b771a2726c8bd3"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (17 matched lines \u00D7 2 locations): packages/core/src/plugin/index.ts:209 \u00B7 packages/core/src/plugin/index.ts:247 \u2014 the two spans are one implementation copied and then locally edited \u2014 73 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/index.ts"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c4126832f70f212d278865159afaf5295c41884ada06b30c9da7bb9ebc0366"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2 locations): packages/core/src/plugin/js/index.ts:182 \u00B7 packages/core/src/plugin/js/index.ts:201 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/index.ts"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66043d8ce902504ad175b40665e67d0fa5e148f546fd94eabf6681905c26237"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:undeclared-workspace-dep]: js-plugins/electron/src/index.ts:5 imports @farmfe/core, a package this repository publishes, but this package\u0027s own package.json does not list it in dependencies (or peer/optional dependencies) \u2014 it resolves only through the workspace link, so an installed copy of this package is missing it. Add it to this package\u0027s dependencies."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/electron/src/index.ts"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4792798f4f7309a3d1def6628872fa93aa89b30dc1631af1feb93a15b21d36a"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: js-plugins/less/src/utils.ts:7 reaches into another package with a relative path (../../package.json) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/utils.ts"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bf6860b67492444ba546be652255ca2c14747f18e9a9ea39e357d4a4c5c390"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: js-plugins/postcss/src/utils.ts:6 reaches into another package with a relative path (../../package.json) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/postcss/src/utils.ts"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"430268d93e24dec94282bdbbfba4afd03fe13028eec7b04256ea318d713a687e"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: js-plugins/sass/src/options.ts:7 reaches into another package with a relative path (../../package.json) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/options.ts"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eadc34d5bc07d398b0a6eb1bfbdcec0f1cd2435ddce7f3f2206dd6e0fd96840"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:deep-import]: js-plugins/visualizer/src/client/src/api/index.ts:2 imports @farmfe/core/binding/binding, which the target package\u0027s package.json \u0060exports\u0060 does not declare \u2014 use a declared entry or declare the subpath."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/api/index.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"606c4e9530e5441b2f2f73384960f7d7b55515915abf840d55ae1a21877b656c"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:deep-import]: js-plugins/visualizer/src/client/src/components/AnalyzeDepsRecord.vue:51 imports @farmfe/core/binding, which the target package\u0027s package.json \u0060exports\u0060 does not declare \u2014 use a declared entry or declare the subpath."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/AnalyzeDepsRecord.vue"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb739461c619b0e40c0fbd1b21d62f563f1c18907a351bd21bae95ea0ce2be0"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:deep-import]: js-plugins/visualizer/src/client/src/components/ModuleList.vue:32 imports @farmfe/core/binding/binding, which the target package\u0027s package.json \u0060exports\u0060 does not declare \u2014 use a declared entry or declare the subpath."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/ModuleList.vue"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"846560a99b2d91ed7920e12d10cb18827c6ca93581d596fe8a1aaf85051c2f91"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:deep-import]: js-plugins/visualizer/src/client/src/components/ProcessRecord.vue:33 imports @farmfe/core/binding, which the target package\u0027s package.json \u0060exports\u0060 does not declare \u2014 use a declared entry or declare the subpath."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/ProcessRecord.vue"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b86de962ee461ff18f572916ca8c38b2d84dcaa0047cd5fedefa679d8a6001c"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:undeclared-workspace-dep]: packages/cli/src/index.ts:1 imports @farmfe/core, a package this repository publishes, but this package\u0027s own package.json does not list it in dependencies (or peer/optional dependencies) \u2014 it resolves only through the workspace link, so an installed copy of this package is missing it. Add it to this package\u0027s dependencies."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/cli/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a6d694d249d864ab3e00afdd67c0aed3b54c06a4cfe84a2d67e2fb5a3a9a1c"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:undeclared-workspace-dep]: packages/cli/src/utils.ts:4 imports @farmfe/core, a package this repository publishes, but this package\u0027s own package.json does not list it in dependencies (or peer/optional dependencies) \u2014 it resolves only through the workspace link, so an installed copy of this package is missing it. Add it to this package\u0027s dependencies."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/cli/src/utils.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"b157fdf8459b0b0b07cdcdd4f80b41781ea2aee44fe7da8dccdf659d9c4b49cd"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:undeclared-workspace-dep]: packages/cli/src/utils.ts:26 imports @farmfe/core, a package this repository publishes, but this package\u0027s own package.json does not list it in dependencies (or peer/optional dependencies) \u2014 it resolves only through the workspace link, so an installed copy of this package is missing it. Add it to this package\u0027s dependencies."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/cli/src/utils.ts"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"b10891b63a52c28243fd77c47c6a165437cbc17a067d8ae270dc01ac55e0d117"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/test-e2e-worker.mjs:15 reaches into another package with a relative path (../e2e/farm-runner.mjs) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fad0eaf7197cfee578c53ae1ab090d34c83ae3ab2a19519c30a8faa659d7c47"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:test-suite-dependency]: scripts/test-e2e-worker.mjs:15 imports e2e/farm-runner.mjs, a module inside the test suite \u2014 test helpers carry no compatibility contract and are maintained for the suite, not as an API, so production code that depends on one is coupled to a module nobody keeps stable. Move the shared helper into a source directory both layers may depend on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c79961c4030a9b5e1784124e10e0babb45919ab976e30ab37a5e3bf89032ed9"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/test-e2e-worker.mjs:21 reaches into another package with a relative path (../e2e/runner.mjs) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4f5a7fb5c44de7f5a171590302635c98f6014692fe2ce092634ee951bcd48f"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:test-suite-dependency]: scripts/test-e2e-worker.mjs:21 imports e2e/runner.mjs, a module inside the test suite \u2014 test helpers carry no compatibility contract and are maintained for the suite, not as an API, so production code that depends on one is coupled to a module nobody keeps stable. Move the shared helper into a source directory both layers may depend on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea7ea85f54e0eb404c2ede3746dd0972027df16a343a835bb669ebc4d382560"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/test-e2e-worker.mjs:22 reaches into another package with a relative path (../e2e/utils.mjs) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"563aff1fdc9f57b3ffed4b300919fe9ac40828c80eb51c3aa5162fc2627dbae7"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:test-suite-dependency]: scripts/test-e2e-worker.mjs:22 imports e2e/utils.mjs, a module inside the test suite \u2014 test helpers carry no compatibility contract and are maintained for the suite, not as an API, so production code that depends on one is coupled to a module nobody keeps stable. Move the shared helper into a source directory both layers may depend on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"92323b2322ebdf19d93d5e5e1595c1f62d6faa668891758954167dc68a478fb4"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/test-e2e.mjs:21 reaches into another package with a relative path (../e2e/runner.mjs) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f34fd2f241674e72c25d2c987f3f19540c5766286631bf670000b01b2c06b9"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:test-suite-dependency]: scripts/test-e2e.mjs:21 imports e2e/runner.mjs, a module inside the test suite \u2014 test helpers carry no compatibility contract and are maintained for the suite, not as an API, so production code that depends on one is coupled to a module nobody keeps stable. Move the shared helper into a source directory both layers may depend on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"b341d64880dd0dbc1004fa3184e8b126cce1817f71b577550d4f44924ebc4773"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/test-e2e.mjs:22 reaches into another package with a relative path (../e2e/process-cleanup.mjs) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e087b3d01d251e220aab52784f69e920da09fe8ead055b9a90a5b0da472134"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:test-suite-dependency]: scripts/test-e2e.mjs:22 imports e2e/process-cleanup.mjs, a module inside the test suite \u2014 test helpers carry no compatibility contract and are maintained for the suite, not as an API, so production code that depends on one is coupled to a module nobody keeps stable. Move the shared helper into a source directory both layers may depend on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2dda01f7d328ef413de45af6b9c1830e4081be9231c0f5c73cf0ac9ef333b8f"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: scripts/test-e2e.mjs:23 reaches into another package with a relative path (../e2e/utils.mjs) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbcc4dc05b61ea1d898968a8e503458a778fe4d4764f779033771691e93d96fe"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:test-suite-dependency]: scripts/test-e2e.mjs:23 imports e2e/utils.mjs, a module inside the test suite \u2014 test helpers carry no compatibility contract and are maintained for the suite, not as an API, so production code that depends on one is coupled to a module nobody keeps stable. Move the shared helper into a source directory both layers may depend on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f7c556a7e2014251b1a0988e952805487cf02cfb8298fc514fce35ef924f82"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function normalizePersistentCache (cyclomatic 39, cognitive 68): normalizePersistentCache has cyclomatic complexity 39 and cognitive complexity 68; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-persistent-cache.ts"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6683910e1ea552a142a2c5beaf67d303e2a34be9f02438acbcd6e084711a93"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function viteConfigToFarmConfig (cyclomatic 37, cognitive 83): viteConfigToFarmConfig has cyclomatic complexity 37 and cognitive complexity 83; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-config.ts"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80426ffe4dbb4e648a8398e5f741848a641dd2fa9d805ee707382c151c4f4e2"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function executor (cyclomatic 23, cognitive 48): executor has cyclomatic complexity 23 and cognitive complexity 48; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/copy/src/index.ts"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"943b1d5fbefd1bb36b08a997b00da4e94deda6c4f869c71a8a4685e0d2fb4868"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function normalizeTargetEnv (cyclomatic 21, cognitive 39): normalizeTargetEnv has cyclomatic complexity 21 and cognitive complexity 39; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-output.ts"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74a56d5a4d61e23b4b6900306c787d56dd0f4f56f26a6f0ae761eb2286d41db"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function normalizeUserCompilationConfig (cyclomatic 21, cognitive 29): normalizeUserCompilationConfig has cyclomatic complexity 21 and cognitive complexity 29; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/index.ts"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b476f54082f0a6ed9a7b21543a9112e5893ec0b37e13bb9a0e108c7d8398d3f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function cleanupStaleE2EProcesses (cyclomatic 21, cognitive 22): cleanupStaleE2EProcesses has cyclomatic complexity 21 and cognitive complexity 22; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"e2e/process-cleanup.mjs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a0ce1ba06c3104227bf0d4ba70c9aa90f65f3e3f3b93616bb5b9c437bf5fcd"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function normalizeRuntimeConfig (cyclomatic 21, cognitive 16): normalizeRuntimeConfig has cyclomatic complexity 21 and cognitive complexity 16; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/normalize-runtime.ts"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf8ba798732920a5e606e13ffb6e7e9a9a165ff71bd042153e9e42539a36878"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function applyHotUpdates (cyclomatic 19, cognitive 43): applyHotUpdates has cyclomatic complexity 19 and cognitive complexity 43; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/hmr-client.ts"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"543c3011f77d6c8d6a5e7e85cc370a0d9f7fddf188542a327b366da8f2b02dc9"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function farmRequire (cyclomatic 19, cognitive 35): farmRequire has cyclomatic complexity 19 and cognitive complexity 35; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/module-system.ts"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f155a73d8ee7f4bd26359298632745bd3b829a7b6a5392598c4da32334405f0"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function config (cyclomatic 19, cognitive 17): config has cyclomatic complexity 19 and cognitive complexity 17; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/nestjs/index.plugin.ts"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"399dfb8694d92081c27d129ad6d643a9bda85084d3f9ccfc3cf74b1c2a995bda"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function interopRequireWildcard (cyclomatic 18, cognitive 22): interopRequireWildcard has cyclomatic complexity 18 and cognitive complexity 22; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/modules/module-helper.ts"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"80491cb220222de9838a51d4d1964196a72d5308eb917e1390924e1b6a165615"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function convertPluginVite (cyclomatic 18, cognitive 21): convertPluginVite has cyclomatic complexity 18 and cognitive complexity 21; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/index.ts"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"bddaf6ce8afa2f9af3857921921692a3765efcf0d660a7d4778fb7141b74e073"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function #resolveOptions (cyclomatic 18, cognitive 15): #resolveOptions has cyclomatic complexity 18 and cognitive complexity 15; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/preview.ts"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"7566342caef9578558bc63a05ec93a1ef9049efdb831d7599cf8c6db9ce8daef"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function getResolvedOptions (cyclomatic 17, cognitive 25): getResolvedOptions has cyclomatic complexity 17 and cognitive complexity 25; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e2a29976b22c262be88049ae3bd13729ecd39949d58de61862a6801a33e44d"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function mergeFarmCliConfig (cyclomatic 16, cognitive 17): mergeFarmCliConfig has cyclomatic complexity 16 and cognitive complexity 17; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/merge-config.ts"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"13a86969df0c1e1fd9caf341cb6f29a94652175ca1857bd649ae10770a718856"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function farmUserConfigToViteConfig (cyclomatic 16, cognitive 15): farmUserConfigToViteConfig has cyclomatic complexity 16 and cognitive complexity 15; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/farm-to-vite-config.ts"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ecb6f171a8ba8cfb1d3dd9810b95c539a388305a5777ad9c51b5433a5519656"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function htmlFallbackMiddleware (cyclomatic 16, cognitive 15): htmlFallbackMiddleware has cyclomatic complexity 16 and cognitive complexity 15; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/middlewares/htmlFallback.ts"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ea2a749e99adafed0a8d40c7b8957009deaf1009ceb4e4f468a6724c0b5d47"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function handleResolveOptions (cyclomatic 16, cognitive 14): handleResolveOptions has cyclomatic complexity 16 and cognitive complexity 14; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/context.ts"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f106dc48a90eb5f07c32738c8d656b814e72da7cdfc44a31da106a3594ab7004"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function checkCompilationInputValue (cyclomatic 15, cognitive 32): checkCompilationInputValue has cyclomatic complexity 15 and cognitive complexity 32; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/config/normalize-config/index.ts"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd76dbf43f47703b12727b504e1bcae4458c62e1b9229beeb7a94e59a011c0aa"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function parseArgs (cyclomatic 15, cognitive 23): parseArgs has cyclomatic complexity 15 and cognitive complexity 23; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"198c9fe34c56ad675d7ee150c8345a7db7ff6273619e61743b1e34111c326a28"}},{"ruleId":"R4","level":"warning","message":{"text":"No test rig can mount a component in this workspace: vitest.config.ts declares environment \u0022node\u0022, and no package here declares a DOM implementation (jsdom / happy-dom), a component testing library or a browser runner \u2014 so none of the 57 unreached component module(s) can be tested as written, however the suite is authored: js-plugins/visualizer/src/client/src/pages/analysis/Compilation.vue, js-plugins/visualizer/src/client/src/pages/analysis/Plugin.vue, js-plugins/visualizer/src/client/src/pages/analysis/Bundle.vue, js-plugins/visualizer/src/client/src/components/NavBar.vue, js-plugins/visualizer/src/client/src/components/AnalyzeDepsRecord.vue, js-plugins/visualizer/src/client/src/components/ResourcePots.vue and 51 more. Add a DOM environment and a component testing library (for example jsdom \u002B @testing-library, or the runner\u0027s browser mode), then test the components. Reported once because these files share one cause, not one omission each."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"vitest.config.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"95504dc9cfe5c9a7937c4ccb142c4079f1dede3054f84efe1f3e15a20ec5aa10"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/types/ws.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe2f8c45a3a072653ddcc270df7a7136844c4f8af7fca4c5abdecc7fb9d98da3"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8b61b2e1c85a0a1e43142addf6e263430ae7884e9cf1b94bdf300131c116879"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/build.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26c42007289d1a32b554ac80641801ce3890fda49262bde19f5c5632dc09130"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaafe72e914d9f85b3ae0639b443eb3b1bc1f5f94484b54e2dc1f441c17c6978"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/tailwindcss/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c53f1792ecfc5f500ca4fe6d0b2b099908e8393d67d1bd17f0c19838d408dff"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3cb7c058d1ed7c99ae771f061eebf01be78870f20bbf6a6ffdf20d0ed6ca58"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/modules/dynamic-import.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"163252bd6afcd03500d62184c40374b220f80d599b397f1a548426ae768e96d0"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/context.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"069d803ff25985209b9ce9f5a5d5063a23bdc024f8565d892228c5fa50e0e7f5"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/react-compiler/src/types.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf06986abfa49692ef443d849906e41af68328717466063c4e8545c962a930ad"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/cli/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f301efcf63782a18a370737eb1d02bb4f262d7011711a8bb22acc47d457ec03"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/binding/resolve-binding.cjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ee4c8fc9794539350cf83a8049278db77ae1b2caf529d154b731de9d38dfda"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/module-system.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c913a09e4ec1961a4b75788c727568224f63dd4cf3b2f537678e0304219e79c0"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/test-e2e-worker.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"227b2e1ab64e4a9cf829814bb2e8fc78b01f22fc71df3e1b861ce77c33020246"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/create-farm-plugin/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c89a309962c434f18a2214b0a677ec6c18fbf235815819aaed5500126aebb05d"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/copy/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc55fe3d998eb8bf8ae43292e821688b48c0b25918933e6b4a88f710a77c58fa"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/electron/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f13a4cede3b43c6e8727a26312f99329f02918ecf396f0900ad4f96874d8e27e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/plugin_lazy_compilation/src/dynamic_module.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"188f8b50b4d3cdbe0c95a7c17b4917f457a98291fd5c42487e2ec0e1a0bb3fd2"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/postcss/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e2d472b2ba73b8a4805557af3a6645610da7ab78f6b1c1dd2476901054b472d"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/less/src/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e9222ed05251653d87031957352a6a4c6d5c37d0bbc192008a358a4d8e3774"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime/src/modules/module-helper.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd790b17abbffb416336cfa7848342e9918150528a945765817e66ead352449"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/cli/src/utils.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a54d6c70fe46e0568ca6dbbc152869c5b008cfd061c77dd9cc8f652777910f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/dts/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"397472a68fff8126071ae65fc1d81d3c98ecf741449073708513ca0e60e97073"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/tailwindcss/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc6348c5ec6de7bb9c8b6c03393272707d972349127f4dbd6dd9852051a32f5"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/utils/file.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"917d548cea9915879093bc4a816fdeedcf5c9370fba44d2a537a4607af6231b6"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/svgr/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3843ccdabae0c045a9f84aa55466c90e4e8e8665b169f7164346dbd10028ed98"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/vue-jsx/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"13cdaf91316a9d51de2f960f020b46bb1e36a265c7fdf08a168a31c1227d4c65"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/create-farm-plugin/templates/rust/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b533bd64f53c1a5220f9277716da6a7fb809e02a0be08f8acbad458496da50f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc882850eae22c5000da2e8d71b79e7a807b73ecc3491cdb564cec17d3bc382c"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/compress/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f8116d2adc078f4cd1b4168dd053adc29d8c3214f1955d1a5e653bccc49147d"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/dsv/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf1ad7061edfd28113c78aa4f5c306b87ee496958b6db8635cb0d6544acf9ad"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d304ede7002163d8ff61293707ba7032df8cd4f726416aba6bc4179d72a7db9"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/image/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3cf3630b3341880ab045f342aae996d5420882ed9b8b023494a2f4fce382d30"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/mdx/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d98e40a34cd376a20e9240a0ea9464228692abf4b75c438cd1ff8a6c851c6f62"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/modular-import/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1214c478fb579e1e6b1465a1f67439a589c81b06b896b2417de935dc2236060"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/sass/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67f33865db29cb1df422f4932228def5c955830def4eb738f6760e50b9ebe16"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/strip/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe30175cb228914edefade6f583c7d6a0f27be8609615f18e85d89d1ae642054"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/url/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4b9da0690898d199c0bf3ed6ad696b39512f1bd327a791e8c164f2ac2b7378c"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/virtual/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74273b39cba5865f0ee43cacf6e0c3617a749ac5969cdafc449592f212860d1a"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/wasm/scripts/index.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eec064cc15f2e69c52e6128a7d58e6f2e381bcf3728cd0d3c656cd900e29bbab"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~258 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/binding/resolve-binding.cjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"286a010bb05654329f4240f1707f48e4ca01e5f31c64d7657ba702eabe140143"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~85 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/error.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"026aa3c1d58e8a645279fb9ce39a26f8918a29ccbc71f049c3f2ad9e868ad671"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~75 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/AnalyzeDepsRecord.vue"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"806ce7af82bf9cd254efebb32930cac65bc5a41b67debb5fb0a51ec13e24faf9"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~60 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), but 1 in-repo import(s) from 1 other file(s) do name it (js-plugins/visualizer/src/client/src/pages/analysis/Module.vue) \u2014 every one of those referrers is itself unreachable, so this file is dead only as a member of that cluster: if any referrer is in fact alive, this row falls with it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/ModuleList.vue"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7183562b4441ec8575eacab18ef1be2f209c0bce3749926680c42f2eae2e6ea6"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/electron/main.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2551ee9265b551eae76e6789628566116c932026ef552c609c9499ccc17303"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/react/electron/main.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"460a263a99663d9e06d1dea874c3bb956ce2c4f1f5874c45d8866e9259040084"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/solid/electron/main.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8a429beec7d636aa9a7cbb72b78e3090d99b448db27659f64df85feb9e753f"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/svelte/electron/main.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"afcfd77bf558cd7f45e88d91d657db5399719d65654d6be18fec3ef7a28850dc"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/vanilla/electron/main.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a99c29458be1fd8d288e0ef3511eaaf9f6c839b2da0472ab88f92873d55d6a"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/vue/electron/main.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8907466175e6b2dd1ed9bfebf64094f5649ece13af40c71b235476593e62b20f"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~48 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/components/ProcessRecord.vue"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"77ee50bfc9434c7c31a110fa437341fc8ee2f59268788276cb2402c5453b2cf1"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~32 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/github-matrix.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"72bbcd9e5a8db65ff430825972711312386b72491f23c2a5d728492d5435c552"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~26 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/client/src/pages/analysis/Module.vue"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ac1c68da5a49c6b2504e66f6f40eab3f59ac9d532a59575a7f1677c796d428"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~24 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/preact/electron/preload.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b370e3689428b4c3fccad1a54ed718a0a41e545937c29d0029a85e5f2336a00a"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~24 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/react/electron/preload.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ed7a320115ff69afc3adc20c87a49c4e1832e2936b04aefd5ea93e0d572b18"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~24 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/solid/electron/preload.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4491c635a1f86e043118ac114e2cfd2825a7ef1b09a4798112c3436e39ff0a08"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~24 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/svelte/electron/preload.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3275a3ebccc7b4d984d19086bded9ce2df62c54072c12d6d4cd115d5199774"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~24 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/vanilla/electron/preload.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5405e738f6da6020ed4c418777a06279e462194d8f8b9d9fc4b1f24c6eb5507"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~24 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/vue/electron/preload.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafaffdf48460fc3f139115a6937e247c9f249849b772029abc9d5ddcbf69178"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~20 LoC): no import path from any entry point (191 application, 163 tooling, 230 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/clear-cache.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9846c0064707e6cbeeb2cbf7ad83405a212a9543c9053c3de7c867ac5a90c01"}},{"ruleId":"R7","level":"warning","message":{"text":"Benchmark script nothing runs (~223 LoC): This script imports the product (\u0027../Card\u0027), so it is an authored benchmark, not measurement input \u2014 but nothing invokes it: no package.json script, no CI workflow or build recipe, no Dockerfile, no other file under website/src/components/Benchmark/, and no in-repo reference to its name at all. It runs only if someone remembers to type \u0060node website/src/components/Benchmark/index.tsx\u0060, and it silently rots against the API it measures. Wire it into a script or workflow the way its wired siblings are, or delete it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"website/src/components/Benchmark/index.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"839fe1904b2dfdbc49d6f33fca6470200288850873c15f6eeb5ef6828ec23a01"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027warn\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"091a5461c204c0eec3dfb23aac189ec3cf3abc96ddf0172eb01da103a2fcc61b"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027error\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"686ab86c6daead29d8d4a93fc0d4d5d779ba816f80fa33be4651d2526878a191"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027parsePath\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9cb04ece741384aca61cc73ece6803fc3fcfdd21576b922a6e76a63cca28a5c"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027getHash\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a3673db6f6a34afb79414bf901b3c94b43800f1e153c7644ac1fbd7848e409"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027callWithErrorHandle\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d8e37f054a049eeb8b054f05dcb7be02a84eec53fbf05e0e8513fbe9273b57"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027isNativeObj\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"f47c8d5c3a039c3c6039452fccb3c38134a8e66c258fd09cb84fdf9474542f9e"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027getResolvedOptions\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"27156a794006be80956a83a5b3336f4cc2001a2c6376d25e6c9c33f8a02fc504"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027handleInclude\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d231c401dee27fa2ff0dc65314be7c96ecade9bddfec522211240425a91b98a"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027handleExclude\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"0439033e6a72bf76bfacab3a5ab0249f31deca3c2bd8d86c93611d4d3231d07e"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027tryRead\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/dts/src/utils.ts"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"0176adf8f2c97ec2f22ff1d1e363896a457ad9d4b6fd7dcde6511a6c7a693744"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027cleanScssBugUrl\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/sass/src/options.ts"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e188c97aae528e3450867ea2db7a201ba36013820d67991802ec76dda0c1174"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027createModuleGraph\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/plugin/js/vite-server-adapter.ts"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2dd1970d8520170601aa4b77a2a36eec7c3e38480fb067aa936aadd23ba4943"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027ERR_SYMLINK_IN_RECURSIVE_READDIR\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/publicDir.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d507a2858e80e4432d0bd594e24b406af0e90349cfa8be086f274718ac5653"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027initPublicFiles\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/publicDir.ts"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa14500046534da1aba11ed147db28281f2b5184eaea10fb477e7435f315518"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027getPublicFiles\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/publicDir.ts"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f416103d20f02b31ed81903b43fa1ecc29152ccf0350ebf28cd44737e173888"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027loopbackHosts\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/http.ts"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"3497bdb018ca9fcdf0912a05d2475909991cfa7e4cb05263b7fdcab7c60afac1"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027handleErrorSync\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/utils.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed1f9702b2a3bfb000c36606a08e129856ccb5d87ab93f719c9a957ee567c0a"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027prepareError\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/runtime-plugin-hmr/src/utils.ts"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"6123ffe339ac0dc07649399c655b1f38115b64cea89715a5e8428bcffdd453a5"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027@sveltejs/vite-plugin-svelte\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/solid/svelte.config.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aa49e54474c8c18580c7dd21820aeb5d39d174879b58d19ea77f321325dc7ba"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027@sveltejs/vite-plugin-svelte\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/create-farm-rs/templates/electron/vanilla/svelte.config.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d87d0da6de1e4393202a5117f569ce1900d1339f7be4a020f64ec98a47a66de8"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027react\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/tests/test.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"31199f5a3866abdd46f80eb98e35f5ed94112a786fe07e0a27071aea5cc2d4f2"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027react-router\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/playground-vue/src/types/auto_import.d.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d23d22dc45d7ea5e25e4a70a6cc4db097c306da49ad7e7ddf4c7b8ea90ec829"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027vue\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/auto-import/tests/test.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"312752f61b361444a485fd5fb47e88e6ce3fde71c15901e417a0de660a08ffe7"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027preact\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/types/preact.d.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d61fc00e5208ccaa267e66859487c5348b516a4bfa13b1bb6e40e416af455db"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027react\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/types/react.d.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b19abe14125b056956b23522f927c37acdc0337d1ef54480b3d9e931b3b9f3"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027solid-js\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/types/solid.d.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dc430de2c1f0e1af4fe4ddcbf71d78f38e6dcdbd1bb8e0f24683ee817ca5833"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027svelte\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/types/svelte3.d.ts"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"22cec627c133c41c8f64a28e5bfa288c71c9cfeca3162c7892c64b3fcf6b2c3e"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027vue\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/icons/types/vue3.d.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb479b375ef431b4b7428cb524c371b42f67d8c8ce752542c43aa52053c4844"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027react-refresh\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/react/src/is_react_refresh_boundary.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ae381db2532579233aefeefe8547b84cf497c006f72e00212736865e45c1916"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027@codspeed/vitest-plugin\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8495e2628b4de2af6eadfe65a0ae2fe26125a10f8486d2f70e1482d4b7526bce"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027node-emoji\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ebcd3b48d28e3e4d381ff33879d5b345eb00f208d02a0e6deee9e64c286389e4"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027source-map-support\u0027: Declared in crates/create-farm-rs/templates/nestjs/package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3e2948512562b806330fa6a4cf0eebd2d7e43326a9f0d9fe4f838217e8d64a3b"}},{"ruleId":"R8","level":"note","message":{"text":"Type-only dependency \u0027connect\u0027 in production deps: Every import is type-only \u2014 move it to devDependencies."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"js-plugins/visualizer/src/dev.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a4529b3f55e0a0bdb40d342fe69149db6d34e1d1179bb5597223e40275e0e9d"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (4 files): packages/core/src/utils/index.ts \u2192 packages/core/src/utils/fsUtils.ts \u2192 packages/core/src/config/index.ts \u2192 packages/core/src/config/env.ts \u2192 packages/core/src/utils/index.ts (one verified cycle inside a mutually-dependent group of 37 files)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/utils/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6730039689ce9706fc3b1101b4c40c180524f4d577435b6025699a67f44a9a"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!filename || !filename.endsWith(\u0027.html\u0027)\u0060 appears character-identically in 2 files \u2014 .agents/skills/brainstorming/scripts/server.cjs, .claude/skills/brainstorming/scripts/server.cjs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/server.cjs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db54e057f9c57d8631cae9fd16056f10abdfb291a64fe16819123c2af60da32"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060el.closest(\u0027.options\u0027) || el.closest(\u0027.cards\u0027)\u0060 appears character-identically in 2 files \u2014 .agents/skills/brainstorming/scripts/helper.js, .claude/skills/brainstorming/scripts/helper.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/helper.js"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b6f5093c9413853d4a02b34d6ac2d30859a7c12e1c6e2c964e2f6ac53003cd"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060isObject(middlewareMode) \u0026\u0026 \u0027server\u0027 in middlewareMode\u0060 appears character-identically in 2 files \u2014 packages/core/src/server/index.ts, packages/core/src/server/preview.ts. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/core/src/server/index.ts"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e937f5eae3ea77cb024303d902e9f4fab20257781dd025f19bc409b37139de2"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060req.method === \u0027GET\u0027 \u0026\u0026 req.url.startsWith(\u0027/files/\u0027)\u0060 appears character-identically in 2 files \u2014 .agents/skills/brainstorming/scripts/server.cjs, .claude/skills/brainstorming/scripts/server.cjs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/server.cjs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"6441833fa66746309c5c93358fb6deba5b9577387fe62b6e32dff2e85330645f"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060selected[0].querySelector(\u0027h3, .content h3, .card-body h3\u0027)?.textContent?.trim() || selected[0].dataset.choice\u0060 appears character-identically in 2 files \u2014 .agents/skills/brainstorming/scripts/helper.js, .claude/skills/brainstorming/scripts/helper.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/helper.js"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"134bd12d5d4c8d9804bd7a573e6107144e9601fd2f347f99e5b819b598643cc1"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060target.closest(\u0027.options\u0027) || target.closest(\u0027.cards\u0027)\u0060 appears character-identically in 2 files \u2014 .agents/skills/brainstorming/scripts/helper.js, .claude/skills/brainstorming/scripts/helper.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/helper.js"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5466a571bed278fb884ca0054f6d7d1abd86a2a5fcabcd82f50a67f9034554b"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060trimmed.startsWith(\u0027\u003C!doctype\u0027) || trimmed.startsWith(\u0027\u003Chtml\u0027)\u0060 appears character-identically in 2 files \u2014 .agents/skills/brainstorming/scripts/server.cjs, .claude/skills/brainstorming/scripts/server.cjs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/brainstorming/scripts/server.cjs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"a79771a48dcc4e927a27380f1bbd872b1d6176e70df79b4a9e93fc931dab3fa0"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060get_file_size\u0060 turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-plugins/url/src/lib.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a65d5d502e2484f3b6f76b1ee0356a34ea0c6d3ae20e4b76893ec07193f8123"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060trimmed.starts_with(\u0022url(\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060trimmed.starts_with(\u0022url(\u0022)\u0060 also satisfies \u0060trimmed.contains(\u0022url(\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/src/urls.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf50f709682245f00636230e1cc23cd85f1c8eb832ef62c26fdf5eb7d1a04653"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060trimmed.starts_with(\u0022url(\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060trimmed.starts_with(\u0022url(\u0022)\u0060 also satisfies \u0060trimmed.contains(\u0022url(\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust-ecosystem/tailwindcss-node/tests/support/generated/urls.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec16978a81bf9d2d51326dd36b8c09a2dea0207d98151584068ac8b104ce786"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1104","guid":"4c918cb5-b2a6-6c55-9963-a44ee464305e","name":"CWE-1104","shortDescription":{"text":"CWE-1104"},"helpUri":"https://cwe.mitre.org/data/definitions/1104.html"},{"id":"CWE-125","guid":"98717707-96bf-ca5b-9568-8d1d257574c1","name":"CWE-125","shortDescription":{"text":"CWE-125"},"helpUri":"https://cwe.mitre.org/data/definitions/125.html"},{"id":"CWE-1329","guid":"f70f1c3f-4ccf-cb5e-bdd3-03ba4868d36d","name":"CWE-1329","shortDescription":{"text":"CWE-1329"},"helpUri":"https://cwe.mitre.org/data/definitions/1329.html"},{"id":"CWE-1352","guid":"5257f322-5cfc-6b52-bedd-0b9a526b4c7d","name":"CWE-1352","shortDescription":{"text":"CWE-1352"},"helpUri":"https://cwe.mitre.org/data/definitions/1352.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-250","guid":"52ee12e8-390a-7351-b1e6-388afa694e54","name":"CWE-250","shortDescription":{"text":"CWE-250"},"helpUri":"https://cwe.mitre.org/data/definitions/250.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-457","guid":"b62874fe-6222-8b5b-8ade-9527ad1cbb4a","name":"CWE-457","shortDescription":{"text":"CWE-457"},"helpUri":"https://cwe.mitre.org/data/definitions/457.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"CWE-506","shortDescription":{"text":"CWE-506"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-522","guid":"71fb233e-ce6a-ae57-9419-ef8373540b09","name":"CWE-522","shortDescription":{"text":"CWE-522"},"helpUri":"https://cwe.mitre.org/data/definitions/522.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-835","guid":"4d510828-22d0-5353-ad86-51ed0cae0b37","name":"CWE-835","shortDescription":{"text":"CWE-835"},"helpUri":"https://cwe.mitre.org/data/definitions/835.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":424,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}