{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:05.300859Z","repo":{"ref":{"host":"github.com","owner":"jamesleoreyes","name":"exposed"},"default_branch":"main","clone_url":"https://github.com/jamesleoreyes/exposed.git","html_url":"https://github.com/jamesleoreyes/exposed","description":"See what a single webpage knows about you. An educational browser fingerprinting tool that reveals your digital identity in plain English.","stars":1,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":472,"primary_language":"TypeScript","license_spdx":"MIT","created_at":"2026-02-23T21:01:17Z","pushed_at":"2026-02-24T19:30:18Z","security_policy_url":null,"distribution":{"owner_created_at":"2022-05-14T02:06:48Z","owner_type":"User","release_assets":[]}},"commit_sha":"4d24875661a53902f28043cf5137087dbca29502","profile":{"lines_by_language":{"TypeScript":4719,"JavaScript":25},"files_by_category":{"source":66,"config":5,"docs":2,"other":2,"binary":1,"generated":1},"source_lines":4744,"test_lines":0},"pillars":{"ai_provenance":{"score":0.1,"confidence":0.48,"coverage":1.0,"label":"possible","breakdown":{"attributed_share":0.0006,"suspected_share":0.9994,"estimated_share":0.0006,"ai_artifacts":0.0,"flagged_work_units":1.0,"flagged_releases":null,"style_index":0.0},"summary":"Weak signals consistent with AI-assisted development. 1 commit(s) carry explicit AI attribution, too few to characterize the codebase."},"quality":{"score":43.8,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":67.5,"duplication":59.4,"lint":36.7,"testing":0.0,"docs":65.0,"type_safety":100.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 13% of function code in complex or long functions; 9% duplicated lines. Weakest area: testing."},"security":{"score":60.5,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":100.0,"dependencies":1.8,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 171 known vulnerabilities in 33 dependencies. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":20.0,"checked":20.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":30.0,"attributed_commits":1.0,"attributed_commit_share":0.03333333333333333,"effective_loc":5087.0,"attributed_loc":3.0,"attributed_loc_share":0.0005897385492431689,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 1 attributed commits, 3 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"2df77199b3212045a5a8f01491b0c499df4b7187","url":"https://github.com/jamesleoreyes/exposed/commit/2df77199b3212045a5a8f01491b0c499df4b7187","weight":0.9}],"data":{"attributed_loc_by_commit":{"2df77199b3212045a5a8f01491b0c499df4b7187":3},"tools":{"claude-code":{"name":"Claude Code","commits":1,"loc":3,"first_seen":1771960675,"last_seen":1771960675}},"monthly":{"2026-02":{"loc":5087,"attributed_loc":3}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":2.0,"flagged_units":1.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":5087.0,"flagged_loc":5084.0,"flagged_loc_share":0.9994102614507568,"max_loc_per_hour":640.7954625026258,"median_loc_per_hour":640.7954625026258,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"5,084 lines of first-party code in ~7.9h (641 lines/hour, 26 commit session)","ref":"45c73b32dd71a24c771f406a94f8ac8d2f7b2da0","url":"https://github.com/jamesleoreyes/exposed/commit/45c73b32dd71a24c771f406a94f8ac8d2f7b2da0","weight":0.19223863875078773}],"data":{"flagged_loc_by_commit":{"9715d073dd64e072e7e865810b58fceb6c09d836":32,"1bb0c58bd2492ce2e8935e68e0f3fbc90794195f":47,"dbda118e8377f2a41e64be1b582f3a2900705ac2":341,"0b90ee5ec0032e8b8855a44221a1a99132670b4b":440,"3be2bcb26313845976470b27a85b1b6fcdd4253e":818,"ac26059a637c666908e097454954face0ca1b737":175,"77bdfea07fa27a6cc7735c54e0a7aaaf0e277988":215,"643fa05de9a413534447722e415934bb27cfc08a":1064,"6836e28610408d8de5be20d921009f45f2b454a5":483,"fd76241e1414e0ce53f737247a9f2a4be50bbb42":13,"7830309ebcd5f237cd3540c3ec27fe56a1f7634f":6,"32b5ba1f174fdb09fb6bdb01ddbc9f84bacb9214":27,"f6b9a43f56ab716aec2eb02960bc291cd442cbfa":224,"fa4a48b92041f88b9085dc574c16e6780f6a6156":131,"fd882d3cd5759cf6218350d91f2263fca7b41953":30,"75df5028132cb76893291869fc054974482f1132":262,"16df939c10aaf09720160635541a2a700a3eb473":10,"661e1c8cbd56c5ee4a6fc22f7f97d44f1471a230":57,"9cb7623be1288725d819cb2f0778b6ff7069d2d4":73,"a5669af73418df090750e35428497fff53710689":22,"125339636052d23879e510496c9c30d9e34239ba":232,"2c034b59961d54dd976c75488af65ee4df08622a":43,"1d88bfc5bfe78a9735f385a9cbc0736b8ef8bd17":2,"bad138aa9f4c11bba7a605fd6231547471c1719e":123,"650d0b518a0cf09e9577c00181909c70a5b5cc66":213,"45c73b32dd71a24c771f406a94f8ac8d2f7b2da0":1},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":4744.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":0.0,"findings_high":0.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":0.0,"scanned_lines":4744.0,"parse_errors":0.0},"findings":[],"evidence":[],"data":{"rulesets":["typescript","javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":33.0,"vulnerabilities":171.0,"vulns_critical":5.0,"vulns_high":68.0,"vulns_medium":88.0,"vulns_low":10.0,"vulns_unknown":0.0,"penalty":241.0},"findings":[{"rule_id":"osv/GHSA-2464-fhr4-w9xw","severity":"critical","message":"next@16.1.6 (npm) is affected by GHSA-2464-fhr4-w9xw","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-2464-fhr4-w9xw"},{"rule_id":"osv/GHSA-2xp9-vwfh-vxw4","severity":"critical","message":"next@16.1.6 (npm) is affected by GHSA-2xp9-vwfh-vxw4","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-2xp9-vwfh-vxw4"},{"rule_id":"osv/GHSA-673q-mjm6-r5xr","severity":"critical","message":"next@16.1.6 (npm) is affected by GHSA-673q-mjm6-r5xr","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-673q-mjm6-r5xr"},{"rule_id":"osv/GHSA-p293-qw3h-jr36","severity":"critical","message":"next@16.1.6 (npm) is affected by GHSA-p293-qw3h-jr36","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-p293-qw3h-jr36"},{"rule_id":"osv/GHSA-jqcg-44mw-7w3h","severity":"critical","message":"proxy-addr@2.0.7 (npm) is affected by GHSA-jqcg-44mw-7w3h","path":"pnpm-lock.yaml","line":null,"fingerprint":"proxy-addr@2.0.7 (npm):GHSA-jqcg-44mw-7w3h"},{"rule_id":"osv/GHSA-wc8c-qw6v-h7f6","severity":"high","message":"@hono/node-server@1.19.9 (npm) is affected by GHSA-wc8c-qw6v-h7f6","path":"pnpm-lock.yaml","line":null,"fingerprint":"@hono/node-server@1.19.9 (npm):GHSA-wc8c-qw6v-h7f6"},{"rule_id":"osv/GHSA-22jm-h49p-29qw","severity":"high","message":"@modelcontextprotocol/sdk@1.26.0 (npm) is affected by GHSA-22jm-h49p-29qw","path":"pnpm-lock.yaml","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.26.0 (npm):GHSA-22jm-h49p-29qw"},{"rule_id":"osv/GHSA-46jr-4wx8-v453","severity":"high","message":"@modelcontextprotocol/sdk@1.26.0 (npm) is affected by GHSA-46jr-4wx8-v453","path":"pnpm-lock.yaml","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.26.0 (npm):GHSA-46jr-4wx8-v453"},{"rule_id":"osv/GHSA-6qxp-vccf-f47h","severity":"high","message":"@modelcontextprotocol/sdk@1.26.0 (npm) is affected by GHSA-6qxp-vccf-f47h","path":"pnpm-lock.yaml","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.26.0 (npm):GHSA-6qxp-vccf-f47h"},{"rule_id":"osv/GHSA-f897-62hf-6gxq","severity":"high","message":"@modelcontextprotocol/sdk@1.26.0 (npm) is affected by GHSA-f897-62hf-6gxq","path":"pnpm-lock.yaml","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.26.0 (npm):GHSA-f897-62hf-6gxq"},{"rule_id":"osv/GHSA-27r3-jxmh-p828","severity":"high","message":"body-parser@2.2.2 (npm) is affected by GHSA-27r3-jxmh-p828","path":"pnpm-lock.yaml","line":null,"fingerprint":"body-parser@2.2.2 (npm):GHSA-27r3-jxmh-p828"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"pnpm-lock.yaml","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"pnpm-lock.yaml","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-46wh-pxpv-q5gq","severity":"high","message":"express-rate-limit@8.2.1 (npm) is affected by GHSA-46wh-pxpv-q5gq","path":"pnpm-lock.yaml","line":null,"fingerprint":"express-rate-limit@8.2.1 (npm):GHSA-46wh-pxpv-q5gq"},{"rule_id":"osv/GHSA-4c8g-83qw-93j6","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-4c8g-83qw-93j6","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-4c8g-83qw-93j6"},{"rule_id":"osv/GHSA-7p8r-x3mc-p8w7","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-7p8r-x3mc-p8w7","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-7p8r-x3mc-p8w7"},{"rule_id":"osv/GHSA-f65p-4m7j-42xc","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-f65p-4m7j-42xc","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-f65p-4m7j-42xc"},{"rule_id":"osv/GHSA-jqff-g426-hqxp","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-jqff-g426-hqxp","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-jqff-g426-hqxp"},{"rule_id":"osv/GHSA-q3j6-qgpj-74h6","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-q3j6-qgpj-74h6","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-q3j6-qgpj-74h6"},{"rule_id":"osv/GHSA-qw65-cvwx-89v3","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-qw65-cvwx-89v3","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-qw65-cvwx-89v3"},{"rule_id":"osv/GHSA-v2hh-gcrm-f6hx","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-v2hh-gcrm-f6hx","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-v2hh-gcrm-f6hx"},{"rule_id":"osv/GHSA-v39h-62p7-jpjc","severity":"high","message":"fast-uri@3.1.0 (npm) is affected by GHSA-v39h-62p7-jpjc","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-v39h-62p7-jpjc"},{"rule_id":"osv/GHSA-25h7-pfq9-p65f","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-25h7-pfq9-p65f","path":"pnpm-lock.yaml","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-25h7-pfq9-p65f"},{"rule_id":"osv/GHSA-rf6f-7fwh-wjgh","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-rf6f-7fwh-wjgh","path":"pnpm-lock.yaml","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-rf6f-7fwh-wjgh"},{"rule_id":"osv/GHSA-88fw-hqm2-52qc","severity":"high","message":"hono@4.12.2 (npm) is affected by GHSA-88fw-hqm2-52qc","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-88fw-hqm2-52qc"},{"rule_id":"osv/GHSA-q5qw-h33p-qvwr","severity":"high","message":"hono@4.12.2 (npm) is affected by GHSA-q5qw-h33p-qvwr","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-q5qw-h33p-qvwr"},{"rule_id":"osv/GHSA-mwp4-54f8-5fhr","severity":"high","message":"ip-address@10.0.1 (npm) is affected by GHSA-mwp4-54f8-5fhr","path":"pnpm-lock.yaml","line":null,"fingerprint":"ip-address@10.0.1 (npm):GHSA-mwp4-54f8-5fhr"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"pnpm-lock.yaml","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-52cp-r559-cp3m","path":"pnpm-lock.yaml","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"pnpm-lock.yaml","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@10.2.2 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"pnpm-lock.yaml","line":null,"fingerprint":"minimatch@10.2.2 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@10.2.2 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"pnpm-lock.yaml","line":null,"fingerprint":"minimatch@10.2.2 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@3.1.3 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"pnpm-lock.yaml","line":null,"fingerprint":"minimatch@3.1.3 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"pnpm-lock.yaml","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"pnpm-lock.yaml","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"pnpm-lock.yaml","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-267c-6grr-h53f","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-267c-6grr-h53f","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-267c-6grr-h53f"},{"rule_id":"osv/GHSA-26hh-7cqf-hhc6","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-26hh-7cqf-hhc6","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-26hh-7cqf-hhc6"},{"rule_id":"osv/GHSA-36qx-fr4f-26g5","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-36qx-fr4f-26g5","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-36qx-fr4f-26g5"},{"rule_id":"osv/GHSA-492v-c6pp-mqqv","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-492v-c6pp-mqqv","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-492v-c6pp-mqqv"},{"rule_id":"osv/GHSA-6gpp-xcg3-4w24","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-6gpp-xcg3-4w24","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-6gpp-xcg3-4w24"},{"rule_id":"osv/GHSA-89xv-2m56-2m9x","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-89xv-2m56-2m9x","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-89xv-2m56-2m9x"},{"rule_id":"osv/GHSA-8h8q-6873-q5fj","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-8h8q-6873-q5fj","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-8h8q-6873-q5fj"},{"rule_id":"osv/GHSA-c4j6-fc7j-m34r","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-c4j6-fc7j-m34r","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-c4j6-fc7j-m34r"},{"rule_id":"osv/GHSA-cjq9-62q9-8jv4","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-cjq9-62q9-8jv4","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-cjq9-62q9-8jv4"},{"rule_id":"osv/GHSA-m99w-x7hq-7vfj","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-m99w-x7hq-7vfj","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-m99w-x7hq-7vfj"},{"rule_id":"osv/GHSA-mg66-mrh9-m8jx","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-mg66-mrh9-m8jx","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-mg66-mrh9-m8jx"},{"rule_id":"osv/GHSA-p3m5-59mp-jv5r","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-p3m5-59mp-jv5r","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-p3m5-59mp-jv5r"},{"rule_id":"osv/GHSA-p9j2-gv94-2wf4","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-p9j2-gv94-2wf4","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-p9j2-gv94-2wf4"},{"rule_id":"osv/GHSA-q4gf-8mx6-v5v3","severity":"high","message":"next@16.1.6 (npm) is affected by GHSA-q4gf-8mx6-v5v3","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-q4gf-8mx6-v5v3"},{"rule_id":"osv/GHSA-j3q9-mxjg-w52f","severity":"high","message":"path-to-regexp@8.3.0 (npm) is affected by GHSA-j3q9-mxjg-w52f","path":"pnpm-lock.yaml","line":null,"fingerprint":"path-to-regexp@8.3.0 (npm):GHSA-j3q9-mxjg-w52f"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"pnpm-lock.yaml","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@4.0.3 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"pnpm-lock.yaml","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-6g55-p6wh-862q","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-r28c-9q8g-f849","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-6g55-p6wh-862q","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-r28c-9q8g-f849","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-f88m-g3jw-g9cj","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-f88m-g3jw-g9cj","path":"pnpm-lock.yaml","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-f88m-g3jw-g9cj"},{"rule_id":"osv/GHSA-rgj7-g3m4-5g8c","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-rgj7-g3m4-5g8c","path":"pnpm-lock.yaml","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-rgj7-g3m4-5g8c"},{"rule_id":"osv/GHSA-wq5f-xc86-pv6w","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-wq5f-xc86-pv6w","path":"pnpm-lock.yaml","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-wq5f-xc86-pv6w"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"pnpm-lock.yaml","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@3.25.76 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"pnpm-lock.yaml","line":null,"fingerprint":"zod@3.25.76 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@4.3.6 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"pnpm-lock.yaml","line":null,"fingerprint":"zod@4.3.6 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-92pp-h63x-v22m","severity":"medium","message":"@hono/node-server@1.19.9 (npm) is affected by GHSA-92pp-h63x-v22m","path":"pnpm-lock.yaml","line":null,"fingerprint":"@hono/node-server@1.19.9 (npm):GHSA-92pp-h63x-v22m"},{"rule_id":"osv/GHSA-frvp-7c67-39w9","severity":"medium","message":"@hono/node-server@1.19.9 (npm) is affected by GHSA-frvp-7c67-39w9","path":"pnpm-lock.yaml","line":null,"fingerprint":"@hono/node-server@1.19.9 (npm):GHSA-frvp-7c67-39w9"},{"rule_id":"osv/GHSA-jpvv-r467-5p4w","severity":"medium","message":"@hono/node-server@1.19.9 (npm) is affected by GHSA-jpvv-r467-5p4w","path":"pnpm-lock.yaml","line":null,"fingerprint":"@hono/node-server@1.19.9 (npm):GHSA-jpvv-r467-5p4w"},{"rule_id":"osv/GHSA-p498-v437-472g","severity":"medium","message":"@humanfs/node@0.16.7 (npm) is affected by GHSA-p498-v437-472g","path":"pnpm-lock.yaml","line":null,"fingerprint":"@humanfs/node@0.16.7 (npm):GHSA-p498-v437-472g"},{"rule_id":"osv/GHSA-6prh-2h8m-c8cw","severity":"medium","message":"@modelcontextprotocol/sdk@1.26.0 (npm) is affected by GHSA-6prh-2h8m-c8cw","path":"pnpm-lock.yaml","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.26.0 (npm):GHSA-6prh-2h8m-c8cw"},{"rule_id":"osv/GHSA-rvq5-wwqv-78pq","severity":"medium","message":"@modelcontextprotocol/sdk@1.26.0 (npm) is affected by GHSA-rvq5-wwqv-78pq","path":"pnpm-lock.yaml","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.26.0 (npm):GHSA-rvq5-wwqv-78pq"},{"rule_id":"osv/GHSA-w5vr-8v7q-w6rv","severity":"medium","message":"baseline-browser-mapping@2.10.0 (npm) is affected by GHSA-w5vr-8v7q-w6rv","path":"pnpm-lock.yaml","line":null,"fingerprint":"baseline-browser-mapping@2.10.0 (npm):GHSA-w5vr-8v7q-w6rv"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-jxxr-4gwj-5jf2","severity":"medium","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-jxxr-4gwj-5jf2","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-jxxr-4gwj-5jf2"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@5.0.3 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"pnpm-lock.yaml","line":null,"fingerprint":"brace-expansion@5.0.3 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-gcqx-w48m-w2h4","severity":"medium","message":"deepmerge@4.3.1 (npm) is affected by GHSA-gcqx-w48m-w2h4","path":"pnpm-lock.yaml","line":null,"fingerprint":"deepmerge@4.3.1 (npm):GHSA-gcqx-w48m-w2h4"},{"rule_id":"osv/GHSA-hrr3-gc8f-f4qj","severity":"medium","message":"fast-uri@3.1.0 (npm) is affected by GHSA-hrr3-gc8f-f4qj","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-hrr3-gc8f-f4qj"},{"rule_id":"osv/GHSA-w74x-v6f9-j3xg","severity":"medium","message":"fast-uri@3.1.0 (npm) is affected by GHSA-w74x-v6f9-j3xg","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-w74x-v6f9-j3xg"},{"rule_id":"osv/GHSA-26pp-8wgv-hjvm","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-26pp-8wgv-hjvm","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-26pp-8wgv-hjvm"},{"rule_id":"osv/GHSA-2gcr-mfcq-wcc3","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-2gcr-mfcq-wcc3","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-2gcr-mfcq-wcc3"},{"rule_id":"osv/GHSA-3hrh-pfw6-9m5x","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-3hrh-pfw6-9m5x","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-3hrh-pfw6-9m5x"},{"rule_id":"osv/GHSA-458j-xx4x-4375","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-458j-xx4x-4375","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-458j-xx4x-4375"},{"rule_id":"osv/GHSA-46wx-v44x-9hh2","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-46wx-v44x-9hh2","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-46wx-v44x-9hh2"},{"rule_id":"osv/GHSA-4h7h-rv7c-7m2v","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-4h7h-rv7c-7m2v","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-4h7h-rv7c-7m2v"},{"rule_id":"osv/GHSA-4m76-xfj5-7975","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-4m76-xfj5-7975","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-4m76-xfj5-7975"},{"rule_id":"osv/GHSA-54fx-42gc-7vw4","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-54fx-42gc-7vw4","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-54fx-42gc-7vw4"},{"rule_id":"osv/GHSA-5pq2-9x2x-5p6w","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-5pq2-9x2x-5p6w","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-5pq2-9x2x-5p6w"},{"rule_id":"osv/GHSA-69xw-7hcm-h432","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-69xw-7hcm-h432","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-69xw-7hcm-h432"},{"rule_id":"osv/GHSA-8j4g-w8fx-2239","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-8j4g-w8fx-2239","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-8j4g-w8fx-2239"},{"rule_id":"osv/GHSA-9vqf-7f2p-gf9v","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-9vqf-7f2p-gf9v","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-9vqf-7f2p-gf9v"},{"rule_id":"osv/GHSA-crvj-82cr-hjcx","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-crvj-82cr-hjcx","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-crvj-82cr-hjcx"},{"rule_id":"osv/GHSA-f23p-vx2j-j53r","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-f23p-vx2j-j53r","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-f23p-vx2j-j53r"},{"rule_id":"osv/GHSA-f577-qrjj-4474","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-f577-qrjj-4474","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-f577-qrjj-4474"},{"rule_id":"osv/GHSA-g6gw-c38x-mqfc","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-g6gw-c38x-mqfc","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-g6gw-c38x-mqfc"},{"rule_id":"osv/GHSA-gqvv-2mrq-wpjv","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-gqvv-2mrq-wpjv","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-gqvv-2mrq-wpjv"},{"rule_id":"osv/GHSA-h7mg-cq63-vhpq","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-h7mg-cq63-vhpq","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-h7mg-cq63-vhpq"},{"rule_id":"osv/GHSA-hvrm-45r6-mjfj","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-hvrm-45r6-mjfj","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-hvrm-45r6-mjfj"},{"rule_id":"osv/GHSA-hxh3-vqpv-xpqv","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-hxh3-vqpv-xpqv","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-hxh3-vqpv-xpqv"},{"rule_id":"osv/GHSA-j6c9-x7qj-28xf","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-j6c9-x7qj-28xf","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-j6c9-x7qj-28xf"},{"rule_id":"osv/GHSA-p6xx-57qc-3wxr","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-p6xx-57qc-3wxr","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-p6xx-57qc-3wxr"},{"rule_id":"osv/GHSA-p77w-8qqv-26rm","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-p77w-8qqv-26rm","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-p77w-8qqv-26rm"},{"rule_id":"osv/GHSA-qp7p-654g-cw7p","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-qp7p-654g-cw7p","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-qp7p-654g-cw7p"},{"rule_id":"osv/GHSA-r5rp-j6wh-rvv4","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-r5rp-j6wh-rvv4","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-r5rp-j6wh-rvv4"},{"rule_id":"osv/GHSA-rv63-4mwf-qqc2","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-rv63-4mwf-qqc2","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-rv63-4mwf-qqc2"},{"rule_id":"osv/GHSA-v8w9-8mx6-g223","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-v8w9-8mx6-g223","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-v8w9-8mx6-g223"},{"rule_id":"osv/GHSA-w62v-xxxg-mg59","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-w62v-xxxg-mg59","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-w62v-xxxg-mg59"},{"rule_id":"osv/GHSA-wgpf-jwqj-8h8p","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-wgpf-jwqj-8h8p","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-wgpf-jwqj-8h8p"},{"rule_id":"osv/GHSA-wmmm-f939-6g9c","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-wmmm-f939-6g9c","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-wmmm-f939-6g9c"},{"rule_id":"osv/GHSA-wwfh-h76j-fc44","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-wwfh-h76j-fc44","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-wwfh-h76j-fc44"},{"rule_id":"osv/GHSA-xf4j-xp2r-rqqx","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-xf4j-xp2r-rqqx","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-xf4j-xp2r-rqqx"},{"rule_id":"osv/GHSA-xgm2-5f3f-mvvc","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-xgm2-5f3f-mvvc","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-xgm2-5f3f-mvvc"},{"rule_id":"osv/GHSA-xpcf-pg52-r92g","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-xpcf-pg52-r92g","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-xpcf-pg52-r92g"},{"rule_id":"osv/GHSA-xrhx-7g5j-rcj5","severity":"medium","message":"hono@4.12.2 (npm) is affected by GHSA-xrhx-7g5j-rcj5","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-xrhx-7g5j-rcj5"},{"rule_id":"osv/GHSA-h3mg-xc3c-68pw","severity":"medium","message":"ip-address@10.0.1 (npm) is affected by GHSA-h3mg-xc3c-68pw","path":"pnpm-lock.yaml","line":null,"fingerprint":"ip-address@10.0.1 (npm):GHSA-h3mg-xc3c-68pw"},{"rule_id":"osv/GHSA-j6r3-76f7-8jcv","severity":"medium","message":"ip-address@10.0.1 (npm) is affected by GHSA-j6r3-76f7-8jcv","path":"pnpm-lock.yaml","line":null,"fingerprint":"ip-address@10.0.1 (npm):GHSA-j6r3-76f7-8jcv"},{"rule_id":"osv/GHSA-rpw4-54j3-4h4q","severity":"medium","message":"ip-address@10.0.1 (npm) is affected by GHSA-rpw4-54j3-4h4q","path":"pnpm-lock.yaml","line":null,"fingerprint":"ip-address@10.0.1 (npm):GHSA-rpw4-54j3-4h4q"},{"rule_id":"osv/GHSA-rxp7-6hxx-x8q5","severity":"medium","message":"ip-address@10.0.1 (npm) is affected by GHSA-rxp7-6hxx-x8q5","path":"pnpm-lock.yaml","line":null,"fingerprint":"ip-address@10.0.1 (npm):GHSA-rxp7-6hxx-x8q5"},{"rule_id":"osv/GHSA-v2v4-37r5-5v8g","severity":"medium","message":"ip-address@10.0.1 (npm) is affected by GHSA-v2v4-37r5-5v8g","path":"pnpm-lock.yaml","line":null,"fingerprint":"ip-address@10.0.1 (npm):GHSA-v2v4-37r5-5v8g"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@4.1.1 (npm) is affected by GHSA-h67p-54hq-rp68","path":"pnpm-lock.yaml","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@10.2.2 (npm) is affected by GHSA-g3hv-75wg-m249","path":"pnpm-lock.yaml","line":null,"fingerprint":"minimatch@10.2.2 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-39w2-rjm5-chcv","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-39w2-rjm5-chcv","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-39w2-rjm5-chcv"},{"rule_id":"osv/GHSA-3x4c-7xq6-9pq8","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-3x4c-7xq6-9pq8","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-3x4c-7xq6-9pq8"},{"rule_id":"osv/GHSA-4633-3j49-mh5q","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-4633-3j49-mh5q","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-4633-3j49-mh5q"},{"rule_id":"osv/GHSA-4c39-4ccg-62r3","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-4c39-4ccg-62r3","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-4c39-4ccg-62r3"},{"rule_id":"osv/GHSA-4jqv-mc3x-m676","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-4jqv-mc3x-m676","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-4jqv-mc3x-m676"},{"rule_id":"osv/GHSA-68g3-v927-f742","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-68g3-v927-f742","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-68g3-v927-f742"},{"rule_id":"osv/GHSA-955p-x3mx-jcvp","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-955p-x3mx-jcvp","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-955p-x3mx-jcvp"},{"rule_id":"osv/GHSA-f87g-xv8r-7p7x","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-f87g-xv8r-7p7x","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-f87g-xv8r-7p7x"},{"rule_id":"osv/GHSA-ffhc-5mcf-pf4q","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-ffhc-5mcf-pf4q","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-ffhc-5mcf-pf4q"},{"rule_id":"osv/GHSA-ggv3-7p47-pfv8","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-ggv3-7p47-pfv8","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-ggv3-7p47-pfv8"},{"rule_id":"osv/GHSA-gx5p-jg67-6x7h","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-gx5p-jg67-6x7h","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-gx5p-jg67-6x7h"},{"rule_id":"osv/GHSA-h27x-g6w4-24gq","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-h27x-g6w4-24gq","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-h27x-g6w4-24gq"},{"rule_id":"osv/GHSA-h64f-5h5j-jqjh","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-h64f-5h5j-jqjh","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-h64f-5h5j-jqjh"},{"rule_id":"osv/GHSA-mcj8-r9mp-w47p","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-mcj8-r9mp-w47p","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-mcj8-r9mp-w47p"},{"rule_id":"osv/GHSA-mq59-m269-xvcx","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-mq59-m269-xvcx","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-mq59-m269-xvcx"},{"rule_id":"osv/GHSA-q8wf-6r8g-63ch","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-q8wf-6r8g-63ch","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-q8wf-6r8g-63ch"},{"rule_id":"osv/GHSA-wfc6-r584-vfw7","severity":"medium","message":"next@16.1.6 (npm) is affected by GHSA-wfc6-r584-vfw7","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-wfc6-r584-vfw7"},{"rule_id":"osv/GHSA-27v5-c462-wpq7","severity":"medium","message":"path-to-regexp@8.3.0 (npm) is affected by GHSA-27v5-c462-wpq7","path":"pnpm-lock.yaml","line":null,"fingerprint":"path-to-regexp@8.3.0 (npm):GHSA-27v5-c462-wpq7"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@2.3.1 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"pnpm-lock.yaml","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@4.0.3 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"pnpm-lock.yaml","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-rj75-hqrm-r3gf","severity":"medium","message":"postcss-selector-parser@7.1.1 (npm) is affected by GHSA-rj75-hqrm-r3gf","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss-selector-parser@7.1.1 (npm):GHSA-rj75-hqrm-r3gf"},{"rule_id":"osv/GHSA-w9m9-85wc-3x92","severity":"medium","message":"postcss-selector-parser@7.1.1 (npm) is affected by GHSA-w9m9-85wc-3x92","path":"pnpm-lock.yaml","line":null,"fingerprint":"postcss-selector-parser@7.1.1 (npm):GHSA-w9m9-85wc-3x92"},{"rule_id":"osv/GHSA-4mjr-xmp4-gh2g","severity":"medium","message":"qs@6.15.0 (npm) is affected by GHSA-4mjr-xmp4-gh2g","path":"pnpm-lock.yaml","line":null,"fingerprint":"qs@6.15.0 (npm):GHSA-4mjr-xmp4-gh2g"},{"rule_id":"osv/GHSA-6pq8-jhm2-2vcw","severity":"medium","message":"qs@6.15.0 (npm) is affected by GHSA-6pq8-jhm2-2vcw","path":"pnpm-lock.yaml","line":null,"fingerprint":"qs@6.15.0 (npm):GHSA-6pq8-jhm2-2vcw"},{"rule_id":"osv/GHSA-q8mj-m7cp-5q26","severity":"medium","message":"qs@6.15.0 (npm) is affected by GHSA-q8mj-m7cp-5q26","path":"pnpm-lock.yaml","line":null,"fingerprint":"qs@6.15.0 (npm):GHSA-q8mj-m7cp-5q26"},{"rule_id":"osv/GHSA-x5fp-wj9c-mxmx","severity":"medium","message":"qs@6.15.0 (npm) is affected by GHSA-x5fp-wj9c-mxmx","path":"pnpm-lock.yaml","line":null,"fingerprint":"qs@6.15.0 (npm):GHSA-x5fp-wj9c-mxmx"},{"rule_id":"osv/GHSA-9h5v-pfqq-x599","severity":"medium","message":"ua-parser-js@2.0.9 (npm) is affected by GHSA-9h5v-pfqq-x599","path":"pnpm-lock.yaml","line":null,"fingerprint":"ua-parser-js@2.0.9 (npm):GHSA-9h5v-pfqq-x599"},{"rule_id":"osv/GHSA-4x5r-pxfx-6jf8","severity":"low","message":"@babel/core@7.29.0 (npm) is affected by GHSA-4x5r-pxfx-6jf8","path":"pnpm-lock.yaml","line":null,"fingerprint":"@babel/core@7.29.0 (npm):GHSA-4x5r-pxfx-6jf8"},{"rule_id":"osv/GHSA-v422-hmwv-36x6","severity":"low","message":"body-parser@2.2.2 (npm) is affected by GHSA-v422-hmwv-36x6","path":"pnpm-lock.yaml","line":null,"fingerprint":"body-parser@2.2.2 (npm):GHSA-v422-hmwv-36x6"},{"rule_id":"osv/GHSA-333x-w4r6-6crp","severity":"low","message":"fast-uri@3.1.0 (npm) is affected by GHSA-333x-w4r6-6crp","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-333x-w4r6-6crp"},{"rule_id":"osv/GHSA-xhq7-xmqj-769h","severity":"low","message":"fast-uri@3.1.0 (npm) is affected by GHSA-xhq7-xmqj-769h","path":"pnpm-lock.yaml","line":null,"fingerprint":"fast-uri@3.1.0 (npm):GHSA-xhq7-xmqj-769h"},{"rule_id":"osv/GHSA-3gg2-335m-rxc6","severity":"low","message":"hono@4.12.2 (npm) is affected by GHSA-3gg2-335m-rxc6","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-3gg2-335m-rxc6"},{"rule_id":"osv/GHSA-79qm-7rj5-m7r9","severity":"low","message":"hono@4.12.2 (npm) is affected by GHSA-79qm-7rj5-m7r9","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-79qm-7rj5-m7r9"},{"rule_id":"osv/GHSA-hm8q-7f3q-5f36","severity":"low","message":"hono@4.12.2 (npm) is affected by GHSA-hm8q-7f3q-5f36","path":"pnpm-lock.yaml","line":null,"fingerprint":"hono@4.12.2 (npm):GHSA-hm8q-7f3q-5f36"},{"rule_id":"osv/GHSA-3g8h-86w9-wvmq","severity":"low","message":"next@16.1.6 (npm) is affected by GHSA-3g8h-86w9-wvmq","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-3g8h-86w9-wvmq"},{"rule_id":"osv/GHSA-jcc7-9wpm-mj36","severity":"low","message":"next@16.1.6 (npm) is affected by GHSA-jcc7-9wpm-mj36","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-jcc7-9wpm-mj36"},{"rule_id":"osv/GHSA-vfv6-92ff-j949","severity":"low","message":"next@16.1.6 (npm) is affected by GHSA-vfv6-92ff-j949","path":"pnpm-lock.yaml","line":null,"fingerprint":"next@16.1.6 (npm):GHSA-vfv6-92ff-j949"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.0333,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":163.0,"function_nloc":2805.0,"mean_ccn":3.12,"p90_ccn":8.0,"complex_functions":3.0,"long_functions":2.0,"many_param_functions":0.0,"risky_nloc_share":0.1312},"findings":[],"evidence":[{"kind":"complex-function","description":"NetworkLocation in components/categories/network-location.tsx: complexity 21, 112 lines","ref":"components/categories/network-location.tsx","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/components/categories/network-location.tsx#L17","weight":0.35},{"kind":"complex-function","description":"useVpnDetection in hooks/use-vpn-detection.ts: complexity 20, 54 lines","ref":"hooks/use-vpn-detection.ts","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/hooks/use-vpn-detection.ts#L39","weight":0.3333333333333333},{"kind":"complex-function","description":"GET in app/api/ip/enrich/route.ts: complexity 19, 66 lines","ref":"app/api/ip/enrich/route.ts","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/app/api/ip/enrich/route.ts#L3","weight":0.31666666666666665},{"kind":"complex-function","description":"HomePage in components/home-page.tsx: complexity 7, 136 lines","ref":"components/home-page.tsx","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/components/home-page.tsx#L20","weight":0.11666666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":3368.0,"duplicated_lines":292.0,"duplicated_share":0.0867,"files":66.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/ip/enrich/route.ts:3 and app/api/ip/route.ts:3","ref":"app/api/ip/enrich/route.ts","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/app/api/ip/enrich/route.ts#L3","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/ip/enrich/route.ts:42 and app/api/ip/enrich/route.ts:65","ref":"app/api/ip/enrich/route.ts","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/app/api/ip/enrich/route.ts#L42","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/opengraph-image.tsx:9 and app/twitter-image.tsx:9","ref":"app/opengraph-image.tsx","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/app/opengraph-image.tsx#L9","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: components/categories/risk-badge.tsx:4 and components/categories/threat-badge.tsx:4","ref":"components/categories/risk-badge.tsx","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/components/categories/risk-badge.tsx#L4","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: components/home-page.tsx:22 and hooks/use-fingerprint.ts:109","ref":"components/home-page.tsx","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/components/home-page.tsx#L22","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: hooks/use-canvas-fingerprint.ts:9 and hooks/use-webgl-fingerprint.ts:9","ref":"hooks/use-canvas-fingerprint.ts","url":"https://github.com/jamesleoreyes/exposed/blob/4d24875661a53902f28043cf5137087dbca29502/hooks/use-canvas-fingerprint.ts#L9","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":19.0,"weighted_findings":19.0,"scanned_lines":4744.0,"category:best-practice":19.0},"findings":[{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/accordion.tsx","line":12,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/accordion.tsx:12"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/accordion.tsx","line":23,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/accordion.tsx:23"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/accordion.tsx","line":42,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/accordion.tsx:42"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/accordion.tsx","line":61,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/accordion.tsx:61"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/badge.tsx","line":43,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/badge.tsx:43"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":13,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:13"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":26,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:26"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":36,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:36"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":46,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:46"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":59,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:59"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":69,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:69"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/card.tsx","line":79,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/card.tsx:79"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/progress.tsx","line":20,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/progress.tsx:20"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/separator.tsx","line":23,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/separator.tsx:23"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/skeleton.tsx","line":8,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/skeleton.tsx:8"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/tooltip.tsx","line":16,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/tooltip.tsx:16"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/tooltip.tsx","line":24,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/tooltip.tsx:24"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/tooltip.tsx","line":30,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/tooltip.tsx:30"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"components/ui/tooltip.tsx","line":48,"fingerprint":"typescript.react.best-practice.react-props-spreading:components/ui/tooltip.tsx:48"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":4744.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":27.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":42.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":1.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: tsconfig.json","ref":"tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":3.0,"other_lines":4741.0,"files_blamed":66.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":19.0,"quality:other_per_kloc":4.008,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":[]}