kirograph 0.19.0 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -8
- package/dist/architecture/layers/dart.d.ts +10 -0
- package/dist/architecture/layers/dart.d.ts.map +1 -0
- package/dist/architecture/layers/elixir.d.ts +6 -0
- package/dist/architecture/layers/elixir.d.ts.map +1 -0
- package/dist/architecture/layers/index.d.ts.map +1 -1
- package/dist/architecture/layers/ocaml.d.ts +6 -0
- package/dist/architecture/layers/ocaml.d.ts.map +1 -0
- package/dist/architecture/layers/scala.d.ts +6 -0
- package/dist/architecture/layers/scala.d.ts.map +1 -0
- package/dist/architecture/layers/solidity.d.ts +6 -0
- package/dist/architecture/layers/solidity.d.ts.map +1 -0
- package/dist/architecture/layers/vue.d.ts +6 -0
- package/dist/architecture/layers/vue.d.ts.map +1 -0
- package/dist/architecture/manifest/elm.d.ts +3 -0
- package/dist/architecture/manifest/elm.d.ts.map +1 -0
- package/dist/architecture/manifest/index.d.ts.map +1 -1
- package/dist/architecture/manifest/ocaml.d.ts +3 -0
- package/dist/architecture/manifest/ocaml.d.ts.map +1 -0
- package/dist/architecture/manifest/scala.d.ts +3 -0
- package/dist/architecture/manifest/scala.d.ts.map +1 -0
- package/dist/bin/banner.d.ts.map +1 -1
- package/dist/bin/commands/affected.d.ts.map +1 -1
- package/dist/bin/commands/attack-surface.d.ts +3 -0
- package/dist/bin/commands/attack-surface.d.ts.map +1 -0
- package/dist/bin/commands/attack-surface.js +7 -0
- package/dist/bin/commands/attack-surface.js.map +2 -2
- package/dist/bin/commands/benchmark.d.ts +9 -0
- package/dist/bin/commands/benchmark.d.ts.map +1 -0
- package/dist/bin/commands/budget.d.ts +6 -0
- package/dist/bin/commands/budget.d.ts.map +1 -0
- package/dist/bin/commands/caveman.d.ts +7 -0
- package/dist/bin/commands/caveman.d.ts.map +1 -0
- package/dist/bin/commands/communities.d.ts +3 -0
- package/dist/bin/commands/communities.d.ts.map +1 -0
- package/dist/bin/commands/compression.d.ts +7 -0
- package/dist/bin/commands/compression.d.ts.map +1 -0
- package/dist/bin/commands/context.d.ts.map +1 -1
- package/dist/bin/commands/data.d.ts +3 -0
- package/dist/bin/commands/data.d.ts.map +1 -0
- package/dist/bin/commands/dead-code.d.ts +3 -0
- package/dist/bin/commands/dead-code.d.ts.map +1 -0
- package/dist/bin/commands/dep-confusion.d.ts +3 -0
- package/dist/bin/commands/dep-confusion.d.ts.map +1 -0
- package/dist/bin/commands/docs.d.ts +3 -0
- package/dist/bin/commands/docs.d.ts.map +1 -0
- package/dist/bin/commands/exec.d.ts +11 -0
- package/dist/bin/commands/exec.d.ts.map +1 -0
- package/dist/bin/commands/export.d.ts +3 -0
- package/dist/bin/commands/export.d.ts.map +1 -0
- package/dist/bin/commands/flows.d.ts +3 -0
- package/dist/bin/commands/flows.d.ts.map +1 -0
- package/dist/bin/commands/gain.d.ts +6 -0
- package/dist/bin/commands/gain.d.ts.map +1 -0
- package/dist/bin/commands/help.d.ts +7 -0
- package/dist/bin/commands/help.d.ts.map +1 -1
- package/dist/bin/commands/help.js +20 -3
- package/dist/bin/commands/help.js.map +2 -2
- package/dist/bin/commands/hotspots.d.ts +3 -0
- package/dist/bin/commands/hotspots.d.ts.map +1 -0
- package/dist/bin/commands/hotspots.js +94 -1
- package/dist/bin/commands/hotspots.js.map +3 -3
- package/dist/bin/commands/install.d.ts.map +1 -1
- package/dist/bin/commands/install.js +3 -3
- package/dist/bin/commands/install.js.map +2 -2
- package/dist/bin/commands/licenses.d.ts +3 -0
- package/dist/bin/commands/licenses.d.ts.map +1 -0
- package/dist/bin/commands/memory.d.ts +16 -0
- package/dist/bin/commands/memory.d.ts.map +1 -0
- package/dist/bin/commands/memory.js +151 -4
- package/dist/bin/commands/memory.js.map +2 -2
- package/dist/bin/commands/path.d.ts +3 -0
- package/dist/bin/commands/path.d.ts.map +1 -0
- package/dist/bin/commands/pattern.d.ts +3 -0
- package/dist/bin/commands/pattern.d.ts.map +1 -0
- package/dist/bin/commands/pattern.js +592 -0
- package/dist/bin/commands/pattern.js.map +7 -0
- package/dist/bin/commands/query.d.ts.map +1 -1
- package/dist/bin/commands/reachability.d.ts +3 -0
- package/dist/bin/commands/reachability.d.ts.map +1 -0
- package/dist/bin/commands/read.d.ts +6 -0
- package/dist/bin/commands/read.d.ts.map +1 -0
- package/dist/bin/commands/refactor.d.ts +3 -0
- package/dist/bin/commands/refactor.d.ts.map +1 -0
- package/dist/bin/commands/remediation.d.ts +3 -0
- package/dist/bin/commands/remediation.d.ts.map +1 -0
- package/dist/bin/commands/sbom.d.ts +3 -0
- package/dist/bin/commands/sbom.d.ts.map +1 -0
- package/dist/bin/commands/security-ci-report.d.ts +9 -0
- package/dist/bin/commands/security-ci-report.d.ts.map +1 -0
- package/dist/bin/commands/security-export.d.ts +2 -0
- package/dist/bin/commands/security-export.d.ts.map +1 -0
- package/dist/bin/commands/security-flows.d.ts +3 -0
- package/dist/bin/commands/security-flows.d.ts.map +1 -0
- package/dist/bin/commands/security-secrets.d.ts +3 -0
- package/dist/bin/commands/security-secrets.d.ts.map +1 -0
- package/dist/bin/commands/security.d.ts +3 -0
- package/dist/bin/commands/security.d.ts.map +1 -0
- package/dist/bin/commands/security.js +15 -0
- package/dist/bin/commands/security.js.map +2 -2
- package/dist/bin/commands/snapshot.d.ts +3 -0
- package/dist/bin/commands/snapshot.d.ts.map +1 -0
- package/dist/bin/commands/staleness.d.ts +3 -0
- package/dist/bin/commands/staleness.d.ts.map +1 -0
- package/dist/bin/commands/status.d.ts.map +1 -1
- package/dist/bin/commands/status.js +27 -0
- package/dist/bin/commands/status.js.map +2 -2
- package/dist/bin/commands/supply-chain.d.ts +3 -0
- package/dist/bin/commands/supply-chain.d.ts.map +1 -0
- package/dist/bin/commands/surprising.d.ts +3 -0
- package/dist/bin/commands/surprising.d.ts.map +1 -0
- package/dist/bin/commands/sync.d.ts.map +1 -1
- package/dist/bin/commands/uninit.d.ts.map +1 -1
- package/dist/bin/commands/utils.d.ts +5 -0
- package/dist/bin/commands/utils.d.ts.map +1 -1
- package/dist/bin/commands/vex.d.ts +3 -0
- package/dist/bin/commands/vex.d.ts.map +1 -0
- package/dist/bin/commands/vuln-suppress.d.ts +3 -0
- package/dist/bin/commands/vuln-suppress.d.ts.map +1 -0
- package/dist/bin/commands/vulns.d.ts +3 -0
- package/dist/bin/commands/vulns.d.ts.map +1 -0
- package/dist/bin/installer/archive.d.ts +47 -0
- package/dist/bin/installer/archive.d.ts.map +1 -0
- package/dist/bin/installer/auto-detect.d.ts +16 -0
- package/dist/bin/installer/auto-detect.d.ts.map +1 -0
- package/dist/bin/installer/caveman.d.ts +12 -0
- package/dist/bin/installer/caveman.d.ts.map +1 -0
- package/dist/bin/installer/cli-agent.d.ts +7 -2
- package/dist/bin/installer/cli-agent.d.ts.map +1 -1
- package/dist/bin/installer/cli-agent.js +6 -2
- package/dist/bin/installer/cli-agent.js.map +2 -2
- package/dist/bin/installer/common.d.ts +36 -0
- package/dist/bin/installer/common.d.ts.map +1 -0
- package/dist/bin/installer/common.js +2 -1
- package/dist/bin/installer/common.js.map +2 -2
- package/dist/bin/installer/config-prompt.d.ts +1 -1
- package/dist/bin/installer/config-prompt.d.ts.map +1 -1
- package/dist/bin/installer/config-prompt.js +74 -2
- package/dist/bin/installer/config-prompt.js.map +2 -2
- package/dist/bin/installer/dashboard.d.ts.map +1 -1
- package/dist/bin/installer/detect.d.ts +30 -0
- package/dist/bin/installer/detect.d.ts.map +1 -0
- package/dist/bin/installer/hooks.d.ts +4 -1
- package/dist/bin/installer/hooks.d.ts.map +1 -1
- package/dist/bin/installer/hooks.js +34 -0
- package/dist/bin/installer/hooks.js.map +2 -2
- package/dist/bin/installer/index.d.ts +5 -4
- package/dist/bin/installer/index.d.ts.map +1 -1
- package/dist/bin/installer/index.js +67 -8
- package/dist/bin/installer/index.js.map +2 -2
- package/dist/bin/installer/instructions.d.ts +14 -0
- package/dist/bin/installer/instructions.d.ts.map +1 -0
- package/dist/bin/installer/instructions.js +15 -1
- package/dist/bin/installer/instructions.js.map +2 -2
- package/dist/bin/installer/mcp.d.ts.map +1 -1
- package/dist/bin/installer/prompts.d.ts +17 -0
- package/dist/bin/installer/prompts.d.ts.map +1 -1
- package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -1
- package/dist/bin/installer/steering.d.ts +14 -2
- package/dist/bin/installer/steering.d.ts.map +1 -1
- package/dist/bin/installer/steering.js +81 -0
- package/dist/bin/installer/steering.js.map +2 -2
- package/dist/bin/installer/targets/aider.d.ts +6 -0
- package/dist/bin/installer/targets/aider.d.ts.map +1 -0
- package/dist/bin/installer/targets/aider.js +3 -3
- package/dist/bin/installer/targets/aider.js.map +2 -2
- package/dist/bin/installer/targets/amp.d.ts +6 -0
- package/dist/bin/installer/targets/amp.d.ts.map +1 -0
- package/dist/bin/installer/targets/amp.js +3 -3
- package/dist/bin/installer/targets/amp.js.map +2 -2
- package/dist/bin/installer/targets/antigravity.d.ts +13 -0
- package/dist/bin/installer/targets/antigravity.d.ts.map +1 -0
- package/dist/bin/installer/targets/antigravity.js +2 -2
- package/dist/bin/installer/targets/antigravity.js.map +2 -2
- package/dist/bin/installer/targets/augment.d.ts +6 -0
- package/dist/bin/installer/targets/augment.d.ts.map +1 -0
- package/dist/bin/installer/targets/augment.js +3 -3
- package/dist/bin/installer/targets/augment.js.map +2 -2
- package/dist/bin/installer/targets/claude.d.ts +6 -0
- package/dist/bin/installer/targets/claude.d.ts.map +1 -0
- package/dist/bin/installer/targets/claude.js +2 -2
- package/dist/bin/installer/targets/claude.js.map +2 -2
- package/dist/bin/installer/targets/cline.d.ts +13 -0
- package/dist/bin/installer/targets/cline.d.ts.map +1 -0
- package/dist/bin/installer/targets/cline.js +2 -2
- package/dist/bin/installer/targets/cline.js.map +2 -2
- package/dist/bin/installer/targets/codex.d.ts +6 -0
- package/dist/bin/installer/targets/codex.d.ts.map +1 -0
- package/dist/bin/installer/targets/codex.js +2 -2
- package/dist/bin/installer/targets/codex.js.map +2 -2
- package/dist/bin/installer/targets/continue.d.ts +12 -0
- package/dist/bin/installer/targets/continue.d.ts.map +1 -0
- package/dist/bin/installer/targets/continue.js +2 -2
- package/dist/bin/installer/targets/continue.js.map +2 -2
- package/dist/bin/installer/targets/copilot-cli.d.ts +12 -0
- package/dist/bin/installer/targets/copilot-cli.d.ts.map +1 -0
- package/dist/bin/installer/targets/copilot-cli.js +2 -2
- package/dist/bin/installer/targets/copilot-cli.js.map +2 -2
- package/dist/bin/installer/targets/copilot.d.ts +6 -0
- package/dist/bin/installer/targets/copilot.d.ts.map +1 -0
- package/dist/bin/installer/targets/copilot.js +2 -2
- package/dist/bin/installer/targets/copilot.js.map +2 -2
- package/dist/bin/installer/targets/cursor.d.ts +6 -0
- package/dist/bin/installer/targets/cursor.d.ts.map +1 -0
- package/dist/bin/installer/targets/cursor.js +2 -2
- package/dist/bin/installer/targets/cursor.js.map +2 -2
- package/dist/bin/installer/targets/devin.d.ts +13 -0
- package/dist/bin/installer/targets/devin.d.ts.map +1 -0
- package/dist/bin/installer/targets/devin.js +2 -2
- package/dist/bin/installer/targets/devin.js.map +2 -2
- package/dist/bin/installer/targets/gemini-cli.d.ts +16 -0
- package/dist/bin/installer/targets/gemini-cli.d.ts.map +1 -0
- package/dist/bin/installer/targets/gemini-cli.js +2 -2
- package/dist/bin/installer/targets/gemini-cli.js.map +2 -2
- package/dist/bin/installer/targets/generic.d.ts +59 -0
- package/dist/bin/installer/targets/generic.d.ts.map +1 -0
- package/dist/bin/installer/targets/generic.js +2 -2
- package/dist/bin/installer/targets/generic.js.map +2 -2
- package/dist/bin/installer/targets/goose.d.ts +6 -0
- package/dist/bin/installer/targets/goose.d.ts.map +1 -0
- package/dist/bin/installer/targets/goose.js +3 -3
- package/dist/bin/installer/targets/goose.js.map +2 -2
- package/dist/bin/installer/targets/index.d.ts +11 -0
- package/dist/bin/installer/targets/index.d.ts.map +1 -0
- package/dist/bin/installer/targets/index.js.map +1 -1
- package/dist/bin/installer/targets/junie.d.ts +13 -0
- package/dist/bin/installer/targets/junie.d.ts.map +1 -0
- package/dist/bin/installer/targets/junie.js +2 -2
- package/dist/bin/installer/targets/junie.js.map +2 -2
- package/dist/bin/installer/targets/kilo.d.ts +12 -0
- package/dist/bin/installer/targets/kilo.d.ts.map +1 -0
- package/dist/bin/installer/targets/kilo.js +2 -2
- package/dist/bin/installer/targets/kilo.js.map +2 -2
- package/dist/bin/installer/targets/kiro.d.ts +5 -0
- package/dist/bin/installer/targets/kiro.d.ts.map +1 -0
- package/dist/bin/installer/targets/kiro.js +4 -4
- package/dist/bin/installer/targets/kiro.js.map +2 -2
- package/dist/bin/installer/targets/opencode.d.ts +13 -0
- package/dist/bin/installer/targets/opencode.d.ts.map +1 -0
- package/dist/bin/installer/targets/opencode.js +2 -2
- package/dist/bin/installer/targets/opencode.js.map +2 -2
- package/dist/bin/installer/targets/openhands.d.ts +6 -0
- package/dist/bin/installer/targets/openhands.d.ts.map +1 -0
- package/dist/bin/installer/targets/openhands.js +3 -3
- package/dist/bin/installer/targets/openhands.js.map +2 -2
- package/dist/bin/installer/targets/qoder.d.ts +12 -0
- package/dist/bin/installer/targets/qoder.d.ts.map +1 -0
- package/dist/bin/installer/targets/qoder.js +2 -2
- package/dist/bin/installer/targets/qoder.js.map +2 -2
- package/dist/bin/installer/targets/qwen.d.ts +12 -0
- package/dist/bin/installer/targets/qwen.d.ts.map +1 -0
- package/dist/bin/installer/targets/qwen.js +2 -2
- package/dist/bin/installer/targets/qwen.js.map +2 -2
- package/dist/bin/installer/targets/replit.d.ts +6 -0
- package/dist/bin/installer/targets/replit.d.ts.map +1 -0
- package/dist/bin/installer/targets/replit.js +3 -3
- package/dist/bin/installer/targets/replit.js.map +2 -2
- package/dist/bin/installer/targets/roo.d.ts +13 -0
- package/dist/bin/installer/targets/roo.d.ts.map +1 -0
- package/dist/bin/installer/targets/roo.js +2 -2
- package/dist/bin/installer/targets/roo.js.map +2 -2
- package/dist/bin/installer/targets/tabnine.d.ts +6 -0
- package/dist/bin/installer/targets/tabnine.d.ts.map +1 -0
- package/dist/bin/installer/targets/tabnine.js +3 -3
- package/dist/bin/installer/targets/tabnine.js.map +2 -2
- package/dist/bin/installer/targets/trae.d.ts +6 -0
- package/dist/bin/installer/targets/trae.d.ts.map +1 -0
- package/dist/bin/installer/targets/trae.js +3 -3
- package/dist/bin/installer/targets/trae.js.map +2 -2
- package/dist/bin/installer/targets/warp.d.ts +12 -0
- package/dist/bin/installer/targets/warp.d.ts.map +1 -0
- package/dist/bin/installer/targets/warp.js +2 -2
- package/dist/bin/installer/targets/warp.js.map +2 -2
- package/dist/bin/installer/targets/windsurf.d.ts +13 -0
- package/dist/bin/installer/targets/windsurf.d.ts.map +1 -0
- package/dist/bin/installer/targets/windsurf.js +2 -2
- package/dist/bin/installer/targets/windsurf.js.map +2 -2
- package/dist/bin/kirograph.js +3 -1
- package/dist/bin/kirograph.js.map +3 -3
- package/dist/bin/progress.d.ts +16 -1
- package/dist/bin/progress.d.ts.map +1 -1
- package/dist/compression/filters/aws.d.ts +9 -0
- package/dist/compression/filters/aws.d.ts.map +1 -0
- package/dist/compression/filters/docker.d.ts +6 -0
- package/dist/compression/filters/docker.d.ts.map +1 -0
- package/dist/compression/filters/files.d.ts +6 -0
- package/dist/compression/filters/files.d.ts.map +1 -0
- package/dist/compression/filters/generic.d.ts +7 -0
- package/dist/compression/filters/generic.d.ts.map +1 -0
- package/dist/compression/filters/git.d.ts +6 -0
- package/dist/compression/filters/git.d.ts.map +1 -0
- package/dist/compression/filters/github.d.ts +6 -0
- package/dist/compression/filters/github.d.ts.map +1 -0
- package/dist/compression/filters/lint.d.ts +6 -0
- package/dist/compression/filters/lint.d.ts.map +1 -0
- package/dist/compression/filters/misc.d.ts +6 -0
- package/dist/compression/filters/misc.d.ts.map +1 -0
- package/dist/compression/filters/package.d.ts +6 -0
- package/dist/compression/filters/package.d.ts.map +1 -0
- package/dist/compression/filters/test.d.ts +6 -0
- package/dist/compression/filters/test.d.ts.map +1 -0
- package/dist/compression/index.d.ts +29 -0
- package/dist/compression/index.d.ts.map +1 -0
- package/dist/compression/naive-cost.d.ts +26 -0
- package/dist/compression/naive-cost.d.ts.map +1 -0
- package/dist/compression/tracker.d.ts +155 -0
- package/dist/compression/tracker.d.ts.map +1 -0
- package/dist/compression/types.d.ts +49 -0
- package/dist/compression/types.d.ts.map +1 -0
- package/dist/config.d.ts +90 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +55 -1
- package/dist/config.js.map +2 -2
- package/dist/core/lock-manager.d.ts +2 -0
- package/dist/core/lock-manager.d.ts.map +1 -1
- package/dist/core/pipeline.d.ts +4 -1
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +42 -0
- package/dist/core/pipeline.js.map +2 -2
- package/dist/core/snapshot.d.ts +58 -0
- package/dist/core/snapshot.d.ts.map +1 -0
- package/dist/data/filters.d.ts +23 -0
- package/dist/data/filters.d.ts.map +1 -0
- package/dist/data/indexer.d.ts +25 -0
- package/dist/data/indexer.d.ts.map +1 -0
- package/dist/data/linker.d.ts +37 -0
- package/dist/data/linker.d.ts.map +1 -0
- package/dist/data/lint.d.ts +27 -0
- package/dist/data/lint.d.ts.map +1 -0
- package/dist/data/parsers/csv.d.ts +11 -0
- package/dist/data/parsers/csv.d.ts.map +1 -0
- package/dist/data/parsers/excel.d.ts +10 -0
- package/dist/data/parsers/excel.d.ts.map +1 -0
- package/dist/data/parsers/index.d.ts +28 -0
- package/dist/data/parsers/index.d.ts.map +1 -0
- package/dist/data/parsers/json-array.d.ts +9 -0
- package/dist/data/parsers/json-array.d.ts.map +1 -0
- package/dist/data/parsers/jsonl.d.ts +9 -0
- package/dist/data/parsers/jsonl.d.ts.map +1 -0
- package/dist/data/parsers/parquet.d.ts +10 -0
- package/dist/data/parsers/parquet.d.ts.map +1 -0
- package/dist/data/profiler.d.ts +29 -0
- package/dist/data/profiler.d.ts.map +1 -0
- package/dist/data/queries.d.ts +95 -0
- package/dist/data/queries.d.ts.map +1 -0
- package/dist/data/types.d.ts +103 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/db/database.d.ts +57 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +19 -0
- package/dist/db/database.js.map +2 -2
- package/dist/db/patterns-schema.sql +23 -0
- package/dist/docs/formats/asciidoc.d.ts +9 -0
- package/dist/docs/formats/asciidoc.d.ts.map +1 -0
- package/dist/docs/formats/html.d.ts +10 -0
- package/dist/docs/formats/html.d.ts.map +1 -0
- package/dist/docs/formats/index.d.ts +31 -0
- package/dist/docs/formats/index.d.ts.map +1 -0
- package/dist/docs/formats/markdown.d.ts +11 -0
- package/dist/docs/formats/markdown.d.ts.map +1 -0
- package/dist/docs/formats/openapi.d.ts +17 -0
- package/dist/docs/formats/openapi.d.ts.map +1 -0
- package/dist/docs/formats/org.d.ts +9 -0
- package/dist/docs/formats/org.d.ts.map +1 -0
- package/dist/docs/formats/plaintext.d.ts +11 -0
- package/dist/docs/formats/plaintext.d.ts.map +1 -0
- package/dist/docs/formats/rdoc.d.ts +10 -0
- package/dist/docs/formats/rdoc.d.ts.map +1 -0
- package/dist/docs/formats/rst.d.ts +11 -0
- package/dist/docs/formats/rst.d.ts.map +1 -0
- package/dist/docs/indexer.d.ts +49 -0
- package/dist/docs/indexer.d.ts.map +1 -0
- package/dist/docs/linker.d.ts +30 -0
- package/dist/docs/linker.d.ts.map +1 -0
- package/dist/docs/lint.d.ts +27 -0
- package/dist/docs/lint.d.ts.map +1 -0
- package/dist/docs/queries.d.ts +78 -0
- package/dist/docs/queries.d.ts.map +1 -0
- package/dist/docs/section-id.d.ts +48 -0
- package/dist/docs/section-id.d.ts.map +1 -0
- package/dist/docs/summarizer.d.ts +13 -0
- package/dist/docs/summarizer.d.ts.map +1 -0
- package/dist/docs/types.d.ts +71 -0
- package/dist/docs/types.d.ts.map +1 -0
- package/dist/docs/vectors.d.ts +54 -0
- package/dist/docs/vectors.d.ts.map +1 -0
- package/dist/extraction/extractor.d.ts +1 -1
- package/dist/extraction/extractor.d.ts.map +1 -1
- package/dist/extraction/extractor.js +26 -3
- package/dist/extraction/extractor.js.map +2 -2
- package/dist/extraction/grammars.d.ts +6 -0
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +1 -0
- package/dist/extraction/grammars.js.map +2 -2
- package/dist/extraction/languages.d.ts.map +1 -1
- package/dist/extraction/languages.js +5 -1
- package/dist/extraction/languages.js.map +2 -2
- package/dist/extraction/notebook.d.ts +14 -0
- package/dist/extraction/notebook.d.ts.map +1 -0
- package/dist/frameworks/amplify.d.ts +9 -0
- package/dist/frameworks/amplify.d.ts.map +1 -0
- package/dist/frameworks/angular.d.ts +9 -0
- package/dist/frameworks/angular.d.ts.map +1 -0
- package/dist/frameworks/ansible.d.ts +8 -0
- package/dist/frameworks/ansible.d.ts.map +1 -0
- package/dist/frameworks/cloudformation.d.ts +9 -0
- package/dist/frameworks/cloudformation.d.ts.map +1 -0
- package/dist/frameworks/docker.d.ts +9 -0
- package/dist/frameworks/docker.d.ts.map +1 -0
- package/dist/frameworks/elixir.d.ts +6 -0
- package/dist/frameworks/elixir.d.ts.map +1 -0
- package/dist/frameworks/flutter.d.ts +12 -0
- package/dist/frameworks/flutter.d.ts.map +1 -0
- package/dist/frameworks/iac.d.ts +10 -0
- package/dist/frameworks/iac.d.ts.map +1 -0
- package/dist/frameworks/index.d.ts +14 -0
- package/dist/frameworks/index.d.ts.map +1 -1
- package/dist/frameworks/kubernetes.d.ts +9 -0
- package/dist/frameworks/kubernetes.d.ts.map +1 -0
- package/dist/frameworks/pulumi.d.ts +9 -0
- package/dist/frameworks/pulumi.d.ts.map +1 -0
- package/dist/frameworks/scala.d.ts +6 -0
- package/dist/frameworks/scala.d.ts.map +1 -0
- package/dist/frameworks/solidity.d.ts +6 -0
- package/dist/frameworks/solidity.d.ts.map +1 -0
- package/dist/frameworks/terraform.d.ts +14 -0
- package/dist/frameworks/terraform.d.ts.map +1 -0
- package/dist/frameworks/vue.d.ts +7 -0
- package/dist/frameworks/vue.d.ts.map +1 -0
- package/dist/graph/communities.d.ts +43 -0
- package/dist/graph/communities.d.ts.map +1 -0
- package/dist/graph/flows.d.ts +55 -0
- package/dist/graph/flows.d.ts.map +1 -0
- package/dist/graph/refactor.d.ts +43 -0
- package/dist/graph/refactor.d.ts.map +1 -0
- package/dist/index.d.ts +36 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/mcp/cache.d.ts +69 -0
- package/dist/mcp/cache.d.ts.map +1 -0
- package/dist/mcp/read-modes.d.ts +31 -0
- package/dist/mcp/read-modes.d.ts.map +1 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -2
- package/dist/mcp/server.js.map +2 -2
- package/dist/mcp/tool-names.d.ts +2 -0
- package/dist/mcp/tool-names.d.ts.map +1 -0
- package/dist/mcp/tool-names.js +4 -1
- package/dist/mcp/tool-names.js.map +2 -2
- package/dist/mcp/tools.d.ts +12 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +397 -0
- package/dist/mcp/tools.js.map +2 -2
- package/dist/memory/compress.d.ts +19 -0
- package/dist/memory/compress.d.ts.map +1 -0
- package/dist/memory/database.d.ts +92 -0
- package/dist/memory/database.d.ts.map +1 -0
- package/dist/memory/database.js +38 -0
- package/dist/memory/database.js.map +2 -2
- package/dist/memory/index.d.ts +71 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +12 -2
- package/dist/memory/index.js.map +2 -2
- package/dist/memory/symbols.d.ts +21 -0
- package/dist/memory/symbols.d.ts.map +1 -0
- package/dist/memory/types.d.ts +78 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/vectors.d.ts +43 -0
- package/dist/memory/vectors.d.ts.map +1 -0
- package/dist/patterns/graph.d.ts +16 -0
- package/dist/patterns/graph.d.ts.map +1 -0
- package/dist/patterns/graph.js +45 -0
- package/dist/patterns/graph.js.map +7 -0
- package/dist/patterns/index.d.ts +4 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +39 -0
- package/dist/patterns/index.js.map +7 -0
- package/dist/patterns/indexer.d.ts +15 -0
- package/dist/patterns/indexer.d.ts.map +1 -0
- package/dist/patterns/indexer.js +97 -0
- package/dist/patterns/indexer.js.map +7 -0
- package/dist/patterns/library/code-eval-elixir.yaml +11 -0
- package/dist/patterns/library/command-injection-c.yaml +11 -0
- package/dist/patterns/library/command-injection-go.yaml +29 -0
- package/dist/patterns/library/command-injection-kotlin.yaml +10 -0
- package/dist/patterns/library/command-injection-php.yaml +11 -0
- package/dist/patterns/library/command-injection-ruby.yaml +11 -0
- package/dist/patterns/library/command-injection-rust.yaml +11 -0
- package/dist/patterns/library/dangerous-eval-bash.yaml +11 -0
- package/dist/patterns/library/dangerous-eval-js.yaml +14 -0
- package/dist/patterns/library/dangerous-eval-php.yaml +11 -0
- package/dist/patterns/library/dangerous-eval-ruby.yaml +11 -0
- package/dist/patterns/library/dangerous-exec-py.yaml +13 -0
- package/dist/patterns/library/dangerous-reflection-java.yaml +8 -0
- package/dist/patterns/library/dynamic-load-lua.yaml +10 -0
- package/dist/patterns/library/os-cmd-elixir.yaml +16 -0
- package/dist/patterns/library/os-execute-lua.yaml +10 -0
- package/dist/patterns/library/path-traversal-go.yaml +11 -0
- package/dist/patterns/library/path-traversal-py.yaml +12 -0
- package/dist/patterns/library/path-traversal-readfile-js.yaml +14 -0
- package/dist/patterns/library/process-launch-swift.yaml +11 -0
- package/dist/patterns/library/process-run-dart.yaml +15 -0
- package/dist/patterns/library/prototype-pollution-js.yaml +12 -0
- package/dist/patterns/library/source-injection-bash.yaml +11 -0
- package/dist/patterns/library/sql-injection-concat-js.yaml +12 -0
- package/dist/patterns/library/sql-injection-dart.yaml +9 -0
- package/dist/patterns/library/sql-injection-java.yaml +13 -0
- package/dist/patterns/library/sql-injection-kotlin.yaml +11 -0
- package/dist/patterns/library/sql-injection-php.yaml +9 -0
- package/dist/patterns/library/sql-injection-py.yaml +12 -0
- package/dist/patterns/library/sql-injection-swift.yaml +11 -0
- package/dist/patterns/library/sql-injection-template-js.yaml +13 -0
- package/dist/patterns/library/subshell-injection-ruby.yaml +8 -0
- package/dist/patterns/library/unsafe-block-rust.yaml +8 -0
- package/dist/patterns/library/unsafe-string-c.yaml +11 -0
- package/dist/patterns/library/weak-crypto-md5-js.yaml +13 -0
- package/dist/patterns/library/weak-crypto-py.yaml +13 -0
- package/dist/patterns/loader.d.ts +18 -0
- package/dist/patterns/loader.d.ts.map +1 -0
- package/dist/patterns/loader.js +277 -0
- package/dist/patterns/loader.js.map +7 -0
- package/dist/patterns/runner.d.ts +42 -0
- package/dist/patterns/runner.d.ts.map +1 -0
- package/dist/patterns/runner.js +295 -0
- package/dist/patterns/runner.js.map +7 -0
- package/dist/patterns/types.d.ts +27 -0
- package/dist/patterns/types.d.ts.map +1 -0
- package/dist/patterns/types.js +34 -0
- package/dist/patterns/types.js.map +7 -0
- package/dist/resolution/bridges/android-rn.d.ts +13 -0
- package/dist/resolution/bridges/android-rn.d.ts.map +1 -0
- package/dist/resolution/bridges/expo-modules.d.ts +10 -0
- package/dist/resolution/bridges/expo-modules.d.ts.map +1 -0
- package/dist/resolution/bridges/flutter-channel.d.ts +14 -0
- package/dist/resolution/bridges/flutter-channel.d.ts.map +1 -0
- package/dist/resolution/bridges/index.d.ts +40 -0
- package/dist/resolution/bridges/index.d.ts.map +1 -0
- package/dist/resolution/bridges/native-events.d.ts +10 -0
- package/dist/resolution/bridges/native-events.d.ts.map +1 -0
- package/dist/resolution/bridges/native-views.d.ts +13 -0
- package/dist/resolution/bridges/native-views.d.ts.map +1 -0
- package/dist/resolution/bridges/react-native.d.ts +9 -0
- package/dist/resolution/bridges/react-native.d.ts.map +1 -0
- package/dist/resolution/bridges/swift-objc.d.ts +14 -0
- package/dist/resolution/bridges/swift-objc.d.ts.map +1 -0
- package/dist/resolution/bridges/turbomodules.d.ts +10 -0
- package/dist/resolution/bridges/turbomodules.d.ts.map +1 -0
- package/dist/resolution/index.d.ts +28 -3
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/security/attack-surface.d.ts +46 -0
- package/dist/security/attack-surface.d.ts.map +1 -0
- package/dist/security/attack-surface.js +43 -1
- package/dist/security/attack-surface.js.map +2 -2
- package/dist/security/context-warnings.d.ts +40 -0
- package/dist/security/context-warnings.d.ts.map +1 -0
- package/dist/security/data-flows.d.ts +33 -0
- package/dist/security/data-flows.d.ts.map +1 -0
- package/dist/security/data-flows.js +65 -7
- package/dist/security/data-flows.js.map +2 -2
- package/dist/security/dep-confusion.d.ts +23 -0
- package/dist/security/dep-confusion.d.ts.map +1 -0
- package/dist/security/errors.d.ts +16 -0
- package/dist/security/errors.d.ts.map +1 -0
- package/dist/security/export/fix-suggestions.d.ts +21 -0
- package/dist/security/export/fix-suggestions.d.ts.map +1 -0
- package/dist/security/export/sbom.d.ts +33 -0
- package/dist/security/export/sbom.d.ts.map +1 -0
- package/dist/security/export/serialization.d.ts +62 -0
- package/dist/security/export/serialization.d.ts.map +1 -0
- package/dist/security/export/vex.d.ts +58 -0
- package/dist/security/export/vex.d.ts.map +1 -0
- package/dist/security/index.d.ts +21 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/integrator.d.ts +63 -0
- package/dist/security/integrator.d.ts.map +1 -0
- package/dist/security/integrator.js +8 -8
- package/dist/security/integrator.js.map +2 -2
- package/dist/security/license.d.ts +33 -0
- package/dist/security/license.d.ts.map +1 -0
- package/dist/security/manifest/adapter.d.ts +92 -0
- package/dist/security/manifest/adapter.d.ts.map +1 -0
- package/dist/security/manifest/parser.d.ts +73 -0
- package/dist/security/manifest/parser.d.ts.map +1 -0
- package/dist/security/manifest/plugins/cargo.d.ts +11 -0
- package/dist/security/manifest/plugins/cargo.d.ts.map +1 -0
- package/dist/security/manifest/plugins/composer.d.ts +11 -0
- package/dist/security/manifest/plugins/composer.d.ts.map +1 -0
- package/dist/security/manifest/plugins/go.d.ts +12 -0
- package/dist/security/manifest/plugins/go.d.ts.map +1 -0
- package/dist/security/manifest/plugins/gradle.d.ts +12 -0
- package/dist/security/manifest/plugins/gradle.d.ts.map +1 -0
- package/dist/security/manifest/plugins/hex.d.ts +11 -0
- package/dist/security/manifest/plugins/hex.d.ts.map +1 -0
- package/dist/security/manifest/plugins/maven.d.ts +11 -0
- package/dist/security/manifest/plugins/maven.d.ts.map +1 -0
- package/dist/security/manifest/plugins/npm.d.ts +11 -0
- package/dist/security/manifest/plugins/npm.d.ts.map +1 -0
- package/dist/security/manifest/plugins/nuget.d.ts +12 -0
- package/dist/security/manifest/plugins/nuget.d.ts.map +1 -0
- package/dist/security/manifest/plugins/pip.d.ts +11 -0
- package/dist/security/manifest/plugins/pip.d.ts.map +1 -0
- package/dist/security/manifest/plugins/pubspec.d.ts +11 -0
- package/dist/security/manifest/plugins/pubspec.d.ts.map +1 -0
- package/dist/security/manifest/plugins/pyproject.d.ts +3 -0
- package/dist/security/manifest/plugins/pyproject.d.ts.map +1 -0
- package/dist/security/manifest/plugins/rubygems.d.ts +11 -0
- package/dist/security/manifest/plugins/rubygems.d.ts.map +1 -0
- package/dist/security/manifest/plugins/swift.d.ts +11 -0
- package/dist/security/manifest/plugins/swift.d.ts.map +1 -0
- package/dist/security/owasp.d.ts +16 -0
- package/dist/security/owasp.d.ts.map +1 -0
- package/dist/security/pipeline.d.ts +37 -0
- package/dist/security/pipeline.d.ts.map +1 -0
- package/dist/security/reachability.d.ts +67 -0
- package/dist/security/reachability.d.ts.map +1 -0
- package/dist/security/remediation.d.ts +51 -0
- package/dist/security/remediation.d.ts.map +1 -0
- package/dist/security/secrets.d.ts +38 -0
- package/dist/security/secrets.d.ts.map +1 -0
- package/dist/security/staleness.d.ts +43 -0
- package/dist/security/staleness.d.ts.map +1 -0
- package/dist/security/supply-chain.d.ts +34 -0
- package/dist/security/supply-chain.d.ts.map +1 -0
- package/dist/security/suppressions.d.ts +18 -0
- package/dist/security/suppressions.d.ts.map +1 -0
- package/dist/security/types.d.ts +144 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security/vuln/client.d.ts +90 -0
- package/dist/security/vuln/client.d.ts.map +1 -0
- package/dist/security/vuln/client.js.map +2 -2
- package/dist/security/vuln/epss-client.d.ts +26 -0
- package/dist/security/vuln/epss-client.d.ts.map +1 -0
- package/dist/security/vuln/index.d.ts +6 -0
- package/dist/security/vuln/index.d.ts.map +1 -0
- package/dist/security/vuln/osv-adapter.d.ts +58 -0
- package/dist/security/vuln/osv-adapter.d.ts.map +1 -0
- package/dist/security/vuln/types.d.ts +29 -0
- package/dist/security/vuln/types.d.ts.map +1 -0
- package/dist/sync/index.d.ts +4 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/types.d.ts +10 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +2 -2
- package/dist/vectors/index.d.ts +11 -3
- package/dist/vectors/index.d.ts.map +1 -1
- package/dist/vectors/qdrant-index.d.ts +10 -3
- package/dist/vectors/qdrant-index.d.ts.map +1 -1
- package/dist/vectors/turboquant-index.js +261 -0
- package/dist/vectors/turboquant-index.js.map +7 -0
- package/dist/vectors/typesense-index.d.ts.map +1 -1
- package/dist/watchmen/index.js +83 -0
- package/dist/watchmen/index.js.map +7 -0
- package/dist/watchmen/synthesize.js +475 -0
- package/dist/watchmen/synthesize.js.map +7 -0
- package/package.json +24 -2
- package/dist/security/context-warnings.test.js +0 -300
- package/dist/security/context-warnings.test.js.map +0 -7
- package/dist/security/export/fix-suggestions.test.js +0 -74
- package/dist/security/export/fix-suggestions.test.js.map +0 -7
- package/dist/security/export/sbom.test.js +0 -288
- package/dist/security/export/sbom.test.js.map +0 -7
- package/dist/security/export/serialization.test.js +0 -310
- package/dist/security/export/serialization.test.js.map +0 -7
- package/dist/security/export/vex.test.js +0 -278
- package/dist/security/export/vex.test.js.map +0 -7
- package/dist/security/integrator-transitives.test.js +0 -359
- package/dist/security/integrator-transitives.test.js.map +0 -7
- package/dist/security/integrator.test.js +0 -237
- package/dist/security/integrator.test.js.map +0 -7
- package/dist/security/manifest/adapter.test.js +0 -272
- package/dist/security/manifest/adapter.test.js.map +0 -7
- package/dist/security/manifest/parser.test.js +0 -110
- package/dist/security/manifest/parser.test.js.map +0 -7
- package/dist/security/manifest/plugins/cargo.test.js +0 -304
- package/dist/security/manifest/plugins/cargo.test.js.map +0 -7
- package/dist/security/manifest/plugins/go.test.js +0 -341
- package/dist/security/manifest/plugins/go.test.js.map +0 -7
- package/dist/security/manifest/plugins/maven.test.js +0 -389
- package/dist/security/manifest/plugins/maven.test.js.map +0 -7
- package/dist/security/manifest/plugins/npm.test.js +0 -298
- package/dist/security/manifest/plugins/npm.test.js.map +0 -7
- package/dist/security/manifest/plugins/pip.test.js +0 -208
- package/dist/security/manifest/plugins/pip.test.js.map +0 -7
- package/dist/security/reachability.test.js +0 -394
- package/dist/security/reachability.test.js.map +0 -7
- package/dist/security/vuln/client.test.js +0 -288
- package/dist/security/vuln/client.test.js.map +0 -7
- package/dist/security/vuln/osv-adapter.test.js +0 -391
- package/dist/security/vuln/osv-adapter.test.js.map +0 -7
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var runner_exports = {};
|
|
30
|
+
__export(runner_exports, {
|
|
31
|
+
PatternRunner: () => PatternRunner
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(runner_exports);
|
|
34
|
+
var import_types = require("./types");
|
|
35
|
+
var import_errors = require("../errors");
|
|
36
|
+
const NAPI_BUILTIN_LANGUAGES = /* @__PURE__ */ new Set([
|
|
37
|
+
"html",
|
|
38
|
+
"javascript",
|
|
39
|
+
"jsx",
|
|
40
|
+
"typescript",
|
|
41
|
+
"tsx",
|
|
42
|
+
"css"
|
|
43
|
+
]);
|
|
44
|
+
let _napi = void 0;
|
|
45
|
+
let _napiWarnLogged = false;
|
|
46
|
+
let _napiRuntimeLangs = null;
|
|
47
|
+
const DYNAMIC_LANG_PACKAGES = {
|
|
48
|
+
go: "@ast-grep/lang-go",
|
|
49
|
+
python: "@ast-grep/lang-python",
|
|
50
|
+
java: "@ast-grep/lang-java",
|
|
51
|
+
rust: "@ast-grep/lang-rust",
|
|
52
|
+
c: "@ast-grep/lang-c",
|
|
53
|
+
cpp: "@ast-grep/lang-cpp",
|
|
54
|
+
cs: "@ast-grep/lang-csharp",
|
|
55
|
+
kotlin: "@ast-grep/lang-kotlin",
|
|
56
|
+
swift: "@ast-grep/lang-swift",
|
|
57
|
+
ruby: "@ast-grep/lang-ruby",
|
|
58
|
+
php: "@ast-grep/lang-php",
|
|
59
|
+
bash: "@ast-grep/lang-bash",
|
|
60
|
+
scala: "@ast-grep/lang-scala",
|
|
61
|
+
dart: "@ast-grep/lang-dart",
|
|
62
|
+
lua: "@ast-grep/lang-lua",
|
|
63
|
+
elixir: "@ast-grep/lang-elixir",
|
|
64
|
+
haskell: "@ast-grep/lang-haskell"
|
|
65
|
+
};
|
|
66
|
+
async function getNapi() {
|
|
67
|
+
if (_napi !== void 0) return _napi;
|
|
68
|
+
try {
|
|
69
|
+
require.resolve("@ast-grep/napi");
|
|
70
|
+
_napi = require("@ast-grep/napi");
|
|
71
|
+
const registrations = {};
|
|
72
|
+
for (const [langName, pkgName] of Object.entries(DYNAMIC_LANG_PACKAGES)) {
|
|
73
|
+
try {
|
|
74
|
+
require.resolve(pkgName);
|
|
75
|
+
registrations[langName] = require(pkgName);
|
|
76
|
+
} catch {
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (Object.keys(registrations).length > 0 && typeof _napi.registerDynamicLanguage === "function") {
|
|
80
|
+
_napi.registerDynamicLanguage(registrations);
|
|
81
|
+
}
|
|
82
|
+
_napiRuntimeLangs = /* @__PURE__ */ new Set([
|
|
83
|
+
...NAPI_BUILTIN_LANGUAGES,
|
|
84
|
+
...Object.keys(registrations)
|
|
85
|
+
]);
|
|
86
|
+
return _napi;
|
|
87
|
+
} catch {
|
|
88
|
+
_napi = null;
|
|
89
|
+
if (!_napiWarnLogged) {
|
|
90
|
+
(0, import_errors.logWarn)("PatternRunner: @ast-grep/napi is not installed. Pattern matching is disabled. Run: npm install @ast-grep/napi");
|
|
91
|
+
_napiWarnLogged = true;
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function renderFix(fixTemplate, node) {
|
|
97
|
+
if (!fixTemplate) return void 0;
|
|
98
|
+
return fixTemplate.replace(/\$([A-Z_]+)/g, (_, varName) => {
|
|
99
|
+
try {
|
|
100
|
+
return node.getMatch(varName)?.text() ?? `$${varName}`;
|
|
101
|
+
} catch {
|
|
102
|
+
return `$${varName}`;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
class PatternRunner {
|
|
107
|
+
/**
|
|
108
|
+
* Synchronously check whether @ast-grep/napi is available.
|
|
109
|
+
*/
|
|
110
|
+
isAvailable() {
|
|
111
|
+
try {
|
|
112
|
+
require.resolve("@ast-grep/napi");
|
|
113
|
+
return true;
|
|
114
|
+
} catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns true if the language is supported by @ast-grep/napi.
|
|
120
|
+
* Unsupported languages must be skipped — calling parse() on them throws a
|
|
121
|
+
* native C++ exception that bypasses JS try/catch and corrupts internal mutexes.
|
|
122
|
+
*/
|
|
123
|
+
isSupportedLanguage(language) {
|
|
124
|
+
const lang = language.toLowerCase();
|
|
125
|
+
if (_napiRuntimeLangs !== null) return _napiRuntimeLangs.has(lang);
|
|
126
|
+
return NAPI_BUILTIN_LANGUAGES.has(lang);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Lazy async loader — returns the napi module or null if missing.
|
|
130
|
+
*/
|
|
131
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
132
|
+
async getNapi() {
|
|
133
|
+
return getNapi();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Run a single library rule against a file's content.
|
|
137
|
+
* Returns an empty array and logs a warning on per-file errors.
|
|
138
|
+
*/
|
|
139
|
+
async runRule(rule, fileContent, language) {
|
|
140
|
+
if (!this.isSupportedLanguage(language)) return [];
|
|
141
|
+
const napi = await getNapi();
|
|
142
|
+
if (!napi) return [];
|
|
143
|
+
if (!this.isSupportedLanguage(language)) return [];
|
|
144
|
+
try {
|
|
145
|
+
const { parse } = napi;
|
|
146
|
+
const root = parse(language, fileContent);
|
|
147
|
+
const nodes = root.root().findAll({ rule: rule.rule });
|
|
148
|
+
const lines = fileContent.split("\n");
|
|
149
|
+
return nodes.map((node) => {
|
|
150
|
+
const range = node.range();
|
|
151
|
+
const line = range.start.line + 1;
|
|
152
|
+
const col = range.start.column;
|
|
153
|
+
const matchText = node.text().slice(0, 500);
|
|
154
|
+
const context = _buildContext(lines, range.start.line);
|
|
155
|
+
const fixSuggestion = rule.fix ? renderFix(rule.fix, node) : void 0;
|
|
156
|
+
return {
|
|
157
|
+
patternId: rule.id,
|
|
158
|
+
filePath: "",
|
|
159
|
+
line,
|
|
160
|
+
col,
|
|
161
|
+
matchText,
|
|
162
|
+
context,
|
|
163
|
+
severity: rule.severity,
|
|
164
|
+
owaspCategory: rule.owaspCategory,
|
|
165
|
+
language,
|
|
166
|
+
...fixSuggestion !== void 0 ? { fixSuggestion } : {}
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
} catch (err) {
|
|
170
|
+
(0, import_errors.logWarn)(`PatternRunner: error running rule "${rule.id}" on file (language: ${language}): ${err instanceof Error ? err.message : String(err)}`);
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Run an inline pattern expression (not from library) against file content.
|
|
176
|
+
* Returns an empty array and logs a warning on per-file errors.
|
|
177
|
+
*/
|
|
178
|
+
async runInline(pattern, language, fileContent) {
|
|
179
|
+
if (!this.isSupportedLanguage(language)) return [];
|
|
180
|
+
const napi = await getNapi();
|
|
181
|
+
if (!napi) return [];
|
|
182
|
+
if (!this.isSupportedLanguage(language)) return [];
|
|
183
|
+
try {
|
|
184
|
+
const { parse } = napi;
|
|
185
|
+
const root = parse(language, fileContent);
|
|
186
|
+
const nodes = root.root().findAll(pattern);
|
|
187
|
+
const lines = fileContent.split("\n");
|
|
188
|
+
return nodes.map((node) => {
|
|
189
|
+
const range = node.range();
|
|
190
|
+
const line = range.start.line + 1;
|
|
191
|
+
const col = range.start.column;
|
|
192
|
+
const matchText = node.text().slice(0, 500);
|
|
193
|
+
const context = _buildContext(lines, range.start.line);
|
|
194
|
+
return {
|
|
195
|
+
patternId: "",
|
|
196
|
+
filePath: "",
|
|
197
|
+
line,
|
|
198
|
+
col,
|
|
199
|
+
matchText,
|
|
200
|
+
context,
|
|
201
|
+
severity: "low",
|
|
202
|
+
owaspCategory: "",
|
|
203
|
+
language
|
|
204
|
+
};
|
|
205
|
+
});
|
|
206
|
+
} catch (err) {
|
|
207
|
+
(0, import_errors.logWarn)(`PatternRunner: error running inline pattern on file (language: ${language}): ${err instanceof Error ? err.message : String(err)}`);
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Run all rules against a file's content, filtered by severity threshold.
|
|
213
|
+
*/
|
|
214
|
+
async runAllRules(rules, fileContent, language, threshold) {
|
|
215
|
+
const napi = await getNapi();
|
|
216
|
+
if (!napi) return [];
|
|
217
|
+
const thresholdOrder = import_types.SEVERITY_ORDER[threshold];
|
|
218
|
+
const applicableRules = rules.filter((r) => {
|
|
219
|
+
const langs = Array.isArray(r.language) ? r.language : [r.language];
|
|
220
|
+
return langs.includes(language) && import_types.SEVERITY_ORDER[r.severity] >= thresholdOrder;
|
|
221
|
+
});
|
|
222
|
+
const results = [];
|
|
223
|
+
for (const rule of applicableRules) {
|
|
224
|
+
const matches = await this.runRule(rule, fileContent, language);
|
|
225
|
+
results.push(...matches);
|
|
226
|
+
}
|
|
227
|
+
return results;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Apply the rule's fix template to all matches in the file content.
|
|
231
|
+
* Returns the transformed source string, or null if no fix was applied.
|
|
232
|
+
* Uses a range-based text substitution approach since commitEdits may not
|
|
233
|
+
* be available in all versions of @ast-grep/napi.
|
|
234
|
+
*/
|
|
235
|
+
async applyFix(filePath, fileContent, language, rule) {
|
|
236
|
+
const napi = await this.getNapi();
|
|
237
|
+
if (!napi || !rule.fix) return null;
|
|
238
|
+
if (!this.isSupportedLanguage(language)) return null;
|
|
239
|
+
try {
|
|
240
|
+
const { parse } = napi;
|
|
241
|
+
const root = parse(language, fileContent);
|
|
242
|
+
const nodes = root.root().findAll({ rule: rule.rule });
|
|
243
|
+
if (nodes.length === 0) return null;
|
|
244
|
+
try {
|
|
245
|
+
for (const node of nodes) {
|
|
246
|
+
const fixText = renderFix(rule.fix, node);
|
|
247
|
+
if (fixText) node.replace(fixText);
|
|
248
|
+
}
|
|
249
|
+
const edited = root.root().commitEdits?.();
|
|
250
|
+
if (typeof edited === "string") return edited;
|
|
251
|
+
} catch {
|
|
252
|
+
}
|
|
253
|
+
const edits = [];
|
|
254
|
+
for (const node of nodes) {
|
|
255
|
+
const fixText = renderFix(rule.fix, node);
|
|
256
|
+
if (fixText === void 0) continue;
|
|
257
|
+
const range = node.range();
|
|
258
|
+
const lines = fileContent.split("\n");
|
|
259
|
+
let startOffset = 0;
|
|
260
|
+
for (let i = 0; i < range.start.line; i++) {
|
|
261
|
+
startOffset += (lines[i]?.length ?? 0) + 1;
|
|
262
|
+
}
|
|
263
|
+
startOffset += range.start.column;
|
|
264
|
+
let endOffset = 0;
|
|
265
|
+
for (let i = 0; i < range.end.line; i++) {
|
|
266
|
+
endOffset += (lines[i]?.length ?? 0) + 1;
|
|
267
|
+
}
|
|
268
|
+
endOffset += range.end.column;
|
|
269
|
+
edits.push({ start: startOffset, end: endOffset, replacement: fixText });
|
|
270
|
+
}
|
|
271
|
+
if (edits.length === 0) return null;
|
|
272
|
+
edits.sort((a, b) => b.start - a.start);
|
|
273
|
+
let result = fileContent;
|
|
274
|
+
for (const edit of edits) {
|
|
275
|
+
result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);
|
|
276
|
+
}
|
|
277
|
+
return result !== fileContent ? result : null;
|
|
278
|
+
} catch (err) {
|
|
279
|
+
(0, import_errors.logWarn)(`PatternRunner.applyFix: error applying fix for rule "${rule.id}" on "${filePath}": ${err instanceof Error ? err.message : String(err)}`);
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function _buildContext(lines, zeroBasedLine) {
|
|
285
|
+
const contextLines = [];
|
|
286
|
+
if (zeroBasedLine > 0) contextLines.push(lines[zeroBasedLine - 1] ?? "");
|
|
287
|
+
contextLines.push(lines[zeroBasedLine] ?? "");
|
|
288
|
+
if (zeroBasedLine + 1 < lines.length) contextLines.push(lines[zeroBasedLine + 1] ?? "");
|
|
289
|
+
return contextLines.join("\n");
|
|
290
|
+
}
|
|
291
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
292
|
+
0 && (module.exports = {
|
|
293
|
+
PatternRunner
|
|
294
|
+
});
|
|
295
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/patterns/runner.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * KiroGraph PatternRunner \u2014 lazy-loads @ast-grep/napi and executes pattern rules.\n */\n\nimport { PatternRule, PatternMatch, SEVERITY_ORDER } from './types';\nimport { logWarn } from '../errors';\n\n// Languages the @ast-grep/napi binary bundles natively (its built-in Lang enum).\n// napi.Lang is an empty object at runtime (values are type-only), so we enumerate\n// these explicitly rather than reading from the export.\nconst NAPI_BUILTIN_LANGUAGES = new Set([\n 'html', 'javascript', 'jsx', 'typescript', 'tsx', 'css',\n]);\n\n// Module-level cache: undefined = not yet attempted, null = missing, module = loaded\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _napi: any | null | undefined = undefined;\nlet _napiWarnLogged = false;\n// Runtime-detected set of languages the installed @ast-grep/napi actually supports,\n// derived from its Lang enum on first load. Null until napi has been loaded.\nlet _napiRuntimeLangs: Set<string> | null = null;\n\n// Optional language packages that extend napi beyond its built-in JS/TS/HTML/CSS set.\n// registerDynamicLanguage() loads a tree-sitter grammar .so for each entry.\n// Keys must match the language strings used in pattern rule files and the files table.\nconst DYNAMIC_LANG_PACKAGES: Record<string, string> = {\n go: '@ast-grep/lang-go',\n python: '@ast-grep/lang-python',\n java: '@ast-grep/lang-java',\n rust: '@ast-grep/lang-rust',\n c: '@ast-grep/lang-c',\n cpp: '@ast-grep/lang-cpp',\n cs: '@ast-grep/lang-csharp',\n kotlin: '@ast-grep/lang-kotlin',\n swift: '@ast-grep/lang-swift',\n ruby: '@ast-grep/lang-ruby',\n php: '@ast-grep/lang-php',\n bash: '@ast-grep/lang-bash',\n scala: '@ast-grep/lang-scala',\n dart: '@ast-grep/lang-dart',\n lua: '@ast-grep/lang-lua',\n elixir: '@ast-grep/lang-elixir',\n haskell:'@ast-grep/lang-haskell',\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function getNapi(): Promise<any | null> {\n if (_napi !== undefined) return _napi;\n try {\n // Verify it can be resolved synchronously before async import\n require.resolve('@ast-grep/napi');\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n _napi = require('@ast-grep/napi');\n\n // Register any installed dynamic language grammars. Must happen before the\n // first parse() call and exactly once per process.\n const registrations: Record<string, unknown> = {};\n for (const [langName, pkgName] of Object.entries(DYNAMIC_LANG_PACKAGES)) {\n try {\n require.resolve(pkgName);\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n registrations[langName] = require(pkgName);\n } catch {\n // Package not installed \u2014 skip silently; language simply won't be supported.\n }\n }\n if (Object.keys(registrations).length > 0 && typeof _napi.registerDynamicLanguage === 'function') {\n _napi.registerDynamicLanguage(registrations);\n }\n\n // Build the runtime language set: built-in grammars + successfully registered\n // dynamic ones. napi.Lang is {} at runtime (type-only enum), so we use the\n // explicit NAPI_BUILTIN_LANGUAGES constant as the base.\n _napiRuntimeLangs = new Set([\n ...NAPI_BUILTIN_LANGUAGES,\n ...Object.keys(registrations),\n ]);\n return _napi;\n } catch {\n _napi = null;\n if (!_napiWarnLogged) {\n logWarn('PatternRunner: @ast-grep/napi is not installed. Pattern matching is disabled. Run: npm install @ast-grep/napi');\n _napiWarnLogged = true;\n }\n return null;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction renderFix(fixTemplate: string, node: any): string | undefined {\n if (!fixTemplate) return undefined;\n // Replace $VAR metavariables with matched text\n return fixTemplate.replace(/\\$([A-Z_]+)/g, (_, varName) => {\n try {\n return node.getMatch(varName)?.text() ?? `$${varName}`;\n } catch {\n return `$${varName}`;\n }\n });\n}\n\nexport class PatternRunner {\n /**\n * Synchronously check whether @ast-grep/napi is available.\n */\n isAvailable(): boolean {\n try {\n require.resolve('@ast-grep/napi');\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Returns true if the language is supported by @ast-grep/napi.\n * Unsupported languages must be skipped \u2014 calling parse() on them throws a\n * native C++ exception that bypasses JS try/catch and corrupts internal mutexes.\n */\n isSupportedLanguage(language: string): boolean {\n const lang = language.toLowerCase();\n // After napi loads, _napiRuntimeLangs reflects exactly what this binary\n // supports (built-ins + registered dynamic langs). Before that, we conservatively\n // allow only the known built-in set so we don't accidentally call parse() on an\n // unsupported language before registration has happened.\n if (_napiRuntimeLangs !== null) return _napiRuntimeLangs.has(lang);\n return NAPI_BUILTIN_LANGUAGES.has(lang);\n }\n\n /**\n * Lazy async loader \u2014 returns the napi module or null if missing.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async getNapi(): Promise<any | null> {\n return getNapi();\n }\n\n /**\n * Run a single library rule against a file's content.\n * Returns an empty array and logs a warning on per-file errors.\n */\n async runRule(rule: PatternRule, fileContent: string, language: string): Promise<PatternMatch[]> {\n if (!this.isSupportedLanguage(language)) return [];\n const napi = await getNapi();\n if (!napi) return [];\n // Re-check after napi loads \u2014 _napiRuntimeLangs is now populated and may\n // exclude languages the static list includes (e.g. Go in a JS-only build).\n if (!this.isSupportedLanguage(language)) return [];\n\n try {\n const { parse } = napi;\n const root = parse(language as any, fileContent);\n const nodes = root.root().findAll({ rule: rule.rule as any });\n const lines = fileContent.split('\\n');\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return nodes.map((node: any) => {\n const range = node.range();\n const line = range.start.line + 1; // 1-based\n const col = range.start.column; // 0-based\n const matchText = node.text().slice(0, 500);\n const context = _buildContext(lines, range.start.line);\n const fixSuggestion = rule.fix ? renderFix(rule.fix, node) : undefined;\n\n return {\n patternId: rule.id,\n filePath: '',\n line,\n col,\n matchText,\n context,\n severity: rule.severity,\n owaspCategory: rule.owaspCategory,\n language,\n ...(fixSuggestion !== undefined ? { fixSuggestion } : {}),\n };\n });\n } catch (err) {\n logWarn(`PatternRunner: error running rule \"${rule.id}\" on file (language: ${language}): ${err instanceof Error ? err.message : String(err)}`);\n return [];\n }\n }\n\n /**\n * Run an inline pattern expression (not from library) against file content.\n * Returns an empty array and logs a warning on per-file errors.\n */\n async runInline(pattern: string, language: string, fileContent: string): Promise<PatternMatch[]> {\n if (!this.isSupportedLanguage(language)) return [];\n const napi = await getNapi();\n if (!napi) return [];\n if (!this.isSupportedLanguage(language)) return [];\n\n try {\n const { parse } = napi;\n const root = parse(language as any, fileContent);\n const nodes = root.root().findAll(pattern);\n const lines = fileContent.split('\\n');\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return nodes.map((node: any) => {\n const range = node.range();\n const line = range.start.line + 1;\n const col = range.start.column;\n const matchText = node.text().slice(0, 500);\n const context = _buildContext(lines, range.start.line);\n\n return {\n patternId: '',\n filePath: '',\n line,\n col,\n matchText,\n context,\n severity: 'low' as const,\n owaspCategory: '',\n language,\n };\n });\n } catch (err) {\n logWarn(`PatternRunner: error running inline pattern on file (language: ${language}): ${err instanceof Error ? err.message : String(err)}`);\n return [];\n }\n }\n\n /**\n * Run all rules against a file's content, filtered by severity threshold.\n */\n async runAllRules(\n rules: PatternRule[],\n fileContent: string,\n language: string,\n threshold: PatternRule['severity'],\n ): Promise<PatternMatch[]> {\n const napi = await getNapi();\n if (!napi) return [];\n\n const thresholdOrder = SEVERITY_ORDER[threshold];\n const applicableRules = rules.filter(r => {\n const langs = Array.isArray(r.language) ? r.language : [r.language];\n return langs.includes(language) && SEVERITY_ORDER[r.severity] >= thresholdOrder;\n });\n\n const results: PatternMatch[] = [];\n for (const rule of applicableRules) {\n const matches = await this.runRule(rule, fileContent, language);\n results.push(...matches);\n }\n return results;\n }\n\n /**\n * Apply the rule's fix template to all matches in the file content.\n * Returns the transformed source string, or null if no fix was applied.\n * Uses a range-based text substitution approach since commitEdits may not\n * be available in all versions of @ast-grep/napi.\n */\n async applyFix(filePath: string, fileContent: string, language: string, rule: PatternRule): Promise<string | null> {\n const napi = await this.getNapi();\n if (!napi || !rule.fix) return null;\n if (!this.isSupportedLanguage(language)) return null;\n try {\n const { parse } = napi;\n const root = parse(language as any, fileContent);\n const nodes = root.root().findAll({ rule: rule.rule as any });\n if (nodes.length === 0) return null;\n\n // Try the native commitEdits API first\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const node of nodes as any[]) {\n const fixText = renderFix(rule.fix, node);\n if (fixText) node.replace(fixText);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const edited: string | null | undefined = (root.root() as any).commitEdits?.();\n if (typeof edited === 'string') return edited;\n } catch {\n // commitEdits not available \u2014 fall through to text substitution\n }\n\n // Fallback: apply replacements using byte offsets, processing from end to start\n // so earlier replacements don't shift the offsets of later ones.\n interface Edit { start: number; end: number; replacement: string }\n const edits: Edit[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const node of nodes as any[]) {\n const fixText = renderFix(rule.fix, node);\n if (fixText === undefined) continue;\n const range = node.range();\n // Convert line/col to byte offset\n const lines = fileContent.split('\\n');\n let startOffset = 0;\n for (let i = 0; i < range.start.line; i++) {\n startOffset += (lines[i]?.length ?? 0) + 1; // +1 for \\n\n }\n startOffset += range.start.column;\n\n let endOffset = 0;\n for (let i = 0; i < range.end.line; i++) {\n endOffset += (lines[i]?.length ?? 0) + 1;\n }\n endOffset += range.end.column;\n\n edits.push({ start: startOffset, end: endOffset, replacement: fixText });\n }\n\n if (edits.length === 0) return null;\n\n // Sort descending by start offset so we can splice without re-indexing\n edits.sort((a, b) => b.start - a.start);\n\n let result = fileContent;\n for (const edit of edits) {\n result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);\n }\n\n return result !== fileContent ? result : null;\n } catch (err) {\n logWarn(`PatternRunner.applyFix: error applying fix for rule \"${rule.id}\" on \"${filePath}\": ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n }\n}\n\nfunction _buildContext(lines: string[], zeroBasedLine: number): string {\n const contextLines: string[] = [];\n if (zeroBasedLine > 0) contextLines.push(lines[zeroBasedLine - 1] ?? '');\n contextLines.push(lines[zeroBasedLine] ?? '');\n if (zeroBasedLine + 1 < lines.length) contextLines.push(lines[zeroBasedLine + 1] ?? '');\n return contextLines.join('\\n');\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KiroGraph Patterns — shared types for pattern rules, matches, and results.
|
|
3
|
+
*/
|
|
4
|
+
export interface PatternRule {
|
|
5
|
+
id: string;
|
|
6
|
+
language: string | string[];
|
|
7
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
8
|
+
owaspCategory: string;
|
|
9
|
+
description: string;
|
|
10
|
+
fixHint: string;
|
|
11
|
+
fix?: string;
|
|
12
|
+
rule: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface PatternMatch {
|
|
15
|
+
patternId: string;
|
|
16
|
+
filePath: string;
|
|
17
|
+
line: number;
|
|
18
|
+
col: number;
|
|
19
|
+
matchText: string;
|
|
20
|
+
context: string;
|
|
21
|
+
severity: PatternRule['severity'];
|
|
22
|
+
owaspCategory: string;
|
|
23
|
+
language: string;
|
|
24
|
+
fixSuggestion?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const SEVERITY_ORDER: Record<PatternRule['severity'], number>;
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/patterns/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,CAElE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var types_exports = {};
|
|
20
|
+
__export(types_exports, {
|
|
21
|
+
SEVERITY_ORDER: () => SEVERITY_ORDER
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(types_exports);
|
|
24
|
+
const SEVERITY_ORDER = {
|
|
25
|
+
low: 0,
|
|
26
|
+
medium: 1,
|
|
27
|
+
high: 2,
|
|
28
|
+
critical: 3
|
|
29
|
+
};
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
SEVERITY_ORDER
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/patterns/types.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * KiroGraph Patterns \u2014 shared types for pattern rules, matches, and results.\n */\n\nexport interface PatternRule {\n id: string;\n language: string | string[];\n severity: 'critical' | 'high' | 'medium' | 'low';\n owaspCategory: string;\n description: string;\n fixHint: string;\n fix?: string; // ast-grep fix template using metavariables\n rule: Record<string, unknown>;\n}\n\nexport interface PatternMatch {\n patternId: string;\n filePath: string;\n line: number; // 1-based\n col: number; // 0-based\n matchText: string; // truncated to 500 chars\n context: string; // line before + matched + line after\n severity: PatternRule['severity'];\n owaspCategory: string;\n language: string;\n fixSuggestion?: string; // populated when the rule has a fix: field\n}\n\nexport const SEVERITY_ORDER: Record<PatternRule['severity'], number> = {\n low: 0, medium: 1, high: 2, critical: 3,\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BO,MAAM,iBAA0D;AAAA,EACrE,KAAK;AAAA,EAAG,QAAQ;AAAA,EAAG,MAAM;AAAA,EAAG,UAAU;AACxC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Android React Native Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between JavaScript/TypeScript calls to NativeModules.X.method()
|
|
5
|
+
* (and NativeEventEmitter) and their Kotlin/Java implementations declared via
|
|
6
|
+
* @ReactMethod or @ReactProp in classes extending ReactContextBaseJavaModule.
|
|
7
|
+
*
|
|
8
|
+
* Covers the Android/Kotlin/Java side of the React Native bridge, closing the
|
|
9
|
+
* gap with the iOS/ObjC coverage provided by react-native-legacy-bridge.
|
|
10
|
+
*/
|
|
11
|
+
import type { BridgeResolver } from './index';
|
|
12
|
+
export declare const androidRnBridge: BridgeResolver;
|
|
13
|
+
//# sourceMappingURL=android-rn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"android-rn.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/android-rn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAqV/D,eAAO,MAAM,eAAe,EAAE,cA+G7B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expo Modules Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between JavaScript calls to requireNativeModule('X').fn()
|
|
5
|
+
* and Swift/Kotlin module definitions using the Expo Modules DSL:
|
|
6
|
+
* Module { Name("X"); AsyncFunction("fn") { ... } }
|
|
7
|
+
*/
|
|
8
|
+
import type { BridgeResolver } from './index';
|
|
9
|
+
export declare const expoModulesBridge: BridgeResolver;
|
|
10
|
+
//# sourceMappingURL=expo-modules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo-modules.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/expo-modules.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAuJ/D,eAAO,MAAM,iBAAiB,EAAE,cAwD/B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flutter Method Channel Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between Dart callers using MethodChannel.invokeMethod() /
|
|
5
|
+
* EventChannel.receiveBroadcastStream() and their native handler implementations
|
|
6
|
+
* in Kotlin/Java (setMethodCallHandler / setStreamHandler) or Swift/ObjC
|
|
7
|
+
* (FlutterMethodChannel.setMethodCallHandler).
|
|
8
|
+
*
|
|
9
|
+
* The channel name string (e.g. "com.example/camera") is the linking key between
|
|
10
|
+
* the Dart side and each native platform side.
|
|
11
|
+
*/
|
|
12
|
+
import type { BridgeResolver } from './index';
|
|
13
|
+
export declare const flutterChannelBridge: BridgeResolver;
|
|
14
|
+
//# sourceMappingURL=flutter-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flutter-channel.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/flutter-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAse/D,eAAO,MAAM,oBAAoB,EAAE,cAkElC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge Resolver Registry
|
|
3
|
+
*
|
|
4
|
+
* Manages cross-language bridge resolvers that synthesize edges between
|
|
5
|
+
* symbols in different languages (Swift ↔ ObjC, JS ↔ Native, etc.).
|
|
6
|
+
* Bridges run after standard resolution and emit heuristic-based edges.
|
|
7
|
+
*/
|
|
8
|
+
import type { EdgeKind } from '../../types';
|
|
9
|
+
import type { ResolutionContext } from '../../frameworks/types';
|
|
10
|
+
import type { GraphDatabase } from '../../db/database';
|
|
11
|
+
export interface SynthesizedEdge {
|
|
12
|
+
source: string;
|
|
13
|
+
target: string;
|
|
14
|
+
kind: EdgeKind;
|
|
15
|
+
confidence: 'inferred';
|
|
16
|
+
confidenceScore: number;
|
|
17
|
+
metadata: {
|
|
18
|
+
synthesizedBy: string;
|
|
19
|
+
provenance: 'heuristic';
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface BridgeResolver {
|
|
24
|
+
name: string;
|
|
25
|
+
/** Detect if this bridge is relevant for the project */
|
|
26
|
+
detect(context: ResolutionContext): boolean;
|
|
27
|
+
/** Synthesize cross-language edges */
|
|
28
|
+
resolve(context: ResolutionContext): SynthesizedEdge[];
|
|
29
|
+
}
|
|
30
|
+
export interface BridgeResolutionResult {
|
|
31
|
+
totalEdges: number;
|
|
32
|
+
bridgesRun: string[];
|
|
33
|
+
durationMs: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Run all applicable bridge resolvers and insert synthesized edges into the database.
|
|
37
|
+
* Bridges that are not relevant for the project are skipped via detect().
|
|
38
|
+
*/
|
|
39
|
+
export declare function runBridgeResolvers(context: ResolutionContext, db: GraphDatabase): BridgeResolutionResult;
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAc,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,WAAW,CAAC;QACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAC5C,sCAAsC;IACtC,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAAC;CACxD;AA0BD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,EAC1B,EAAE,EAAE,aAAa,GAChB,sBAAsB,CAsCxB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native → JS Events Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between native event emitters (sendEventWithName: in ObjC,
|
|
5
|
+
* .emit() in Java/Kotlin) and JavaScript event listeners (NativeEventEmitter.addListener).
|
|
6
|
+
* Matches by literal event name string.
|
|
7
|
+
*/
|
|
8
|
+
import type { BridgeResolver } from './index';
|
|
9
|
+
export declare const nativeEventsBridge: BridgeResolver;
|
|
10
|
+
//# sourceMappingURL=native-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-events.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/native-events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAqM/D,eAAO,MAAM,kBAAkB,EAAE,cAsDhC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fabric/Paper Native Views Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between JSX usage of native components (<MyView />)
|
|
5
|
+
* and their native view manager implementations. Uses convention-based
|
|
6
|
+
* name + suffix lookup to match components to their native counterparts.
|
|
7
|
+
*
|
|
8
|
+
* Conventions:
|
|
9
|
+
* <MyView /> → MyViewManager, MyViewComponentView, RCTMyViewManager
|
|
10
|
+
*/
|
|
11
|
+
import type { BridgeResolver } from './index';
|
|
12
|
+
export declare const nativeViewsBridge: BridgeResolver;
|
|
13
|
+
//# sourceMappingURL=native-views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-views.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/native-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAuP/D,eAAO,MAAM,iBAAiB,EAAE,cA+E/B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native Legacy Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between JavaScript/TypeScript calls to NativeModules.X.method()
|
|
5
|
+
* and native implementations declared via RCT_EXPORT_METHOD (ObjC) or @ReactMethod (Java/Kotlin).
|
|
6
|
+
*/
|
|
7
|
+
import type { BridgeResolver } from './index';
|
|
8
|
+
export declare const reactNativeLegacyBridge: BridgeResolver;
|
|
9
|
+
//# sourceMappingURL=react-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/react-native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAuK/D,eAAO,MAAM,uBAAuB,EAAE,cA+CrC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swift ↔ ObjC Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between Swift functions with @objc attributes and
|
|
5
|
+
* Objective-C message sends that match the mangled selector.
|
|
6
|
+
*
|
|
7
|
+
* Name mangling rules:
|
|
8
|
+
* - func foo(bar: Int) → -fooWithBar:
|
|
9
|
+
* - init(name:) → -initWithName:
|
|
10
|
+
* - var x → -x / -setX:
|
|
11
|
+
*/
|
|
12
|
+
import type { BridgeResolver } from './index';
|
|
13
|
+
export declare const swiftObjcBridge: BridgeResolver;
|
|
14
|
+
//# sourceMappingURL=swift-objc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift-objc.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/swift-objc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AA0F/D,eAAO,MAAM,eAAe,EAAE,cAoL7B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native TurboModules Bridge
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes edges between TypeScript TurboModule spec interfaces and their
|
|
5
|
+
* native implementations. TurboModules use codegen specs (Native*.ts files)
|
|
6
|
+
* as the source of truth for the JS ↔ Native contract.
|
|
7
|
+
*/
|
|
8
|
+
import type { BridgeResolver } from './index';
|
|
9
|
+
export declare const turboModulesBridge: BridgeResolver;
|
|
10
|
+
//# sourceMappingURL=turbomodules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turbomodules.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/turbomodules.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AA6J/D,eAAO,MAAM,kBAAkB,EAAE,cA8EhC,CAAC"}
|