codesift-mcp 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +215 -23
- package/dist/cache/hono-cache.d.ts +50 -0
- package/dist/cache/hono-cache.d.ts.map +1 -0
- package/dist/cache/hono-cache.js +132 -0
- package/dist/cache/hono-cache.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +8 -6
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/platform.d.ts.map +1 -1
- package/dist/cli/platform.js +12 -14
- package/dist/cli/platform.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +27 -3
- package/dist/cli/setup.js.map +1 -1
- package/dist/formatters-shortening.d.ts +13 -0
- package/dist/formatters-shortening.d.ts.map +1 -1
- package/dist/formatters-shortening.js +131 -0
- package/dist/formatters-shortening.js.map +1 -1
- package/dist/formatters.d.ts +38 -0
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +521 -0
- package/dist/formatters.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +39 -38
- package/dist/instructions.js.map +1 -1
- package/dist/lsp/lsp-servers.d.ts.map +1 -1
- package/dist/lsp/lsp-servers.js +5 -0
- package/dist/lsp/lsp-servers.js.map +1 -1
- package/dist/lsp/lsp-tools.d.ts.map +1 -1
- package/dist/lsp/lsp-tools.js +1 -0
- package/dist/lsp/lsp-tools.js.map +1 -1
- package/dist/parser/astro-template.d.ts +47 -0
- package/dist/parser/astro-template.d.ts.map +1 -0
- package/dist/parser/astro-template.js +171 -0
- package/dist/parser/astro-template.js.map +1 -0
- package/dist/parser/extractors/_shared.d.ts +4 -0
- package/dist/parser/extractors/_shared.d.ts.map +1 -1
- package/dist/parser/extractors/_shared.js +8 -0
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/astro.d.ts +4 -5
- package/dist/parser/extractors/astro.d.ts.map +1 -1
- package/dist/parser/extractors/astro.js +102 -26
- package/dist/parser/extractors/astro.js.map +1 -1
- package/dist/parser/extractors/gradle-kts.d.ts +4 -0
- package/dist/parser/extractors/gradle-kts.d.ts.map +1 -0
- package/dist/parser/extractors/gradle-kts.js +246 -0
- package/dist/parser/extractors/gradle-kts.js.map +1 -0
- package/dist/parser/extractors/hono-inline-analyzer.d.ts +34 -0
- package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -0
- package/dist/parser/extractors/hono-inline-analyzer.js +465 -0
- package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -0
- package/dist/parser/extractors/hono-model.d.ts +196 -0
- package/dist/parser/extractors/hono-model.d.ts.map +1 -0
- package/dist/parser/extractors/hono-model.js +10 -0
- package/dist/parser/extractors/hono-model.js.map +1 -0
- package/dist/parser/extractors/hono.d.ts +118 -0
- package/dist/parser/extractors/hono.d.ts.map +1 -0
- package/dist/parser/extractors/hono.js +1527 -0
- package/dist/parser/extractors/hono.js.map +1 -0
- package/dist/parser/extractors/kotlin.d.ts +4 -0
- package/dist/parser/extractors/kotlin.d.ts.map +1 -0
- package/dist/parser/extractors/kotlin.js +521 -0
- package/dist/parser/extractors/kotlin.js.map +1 -0
- package/dist/parser/extractors/php.d.ts +22 -0
- package/dist/parser/extractors/php.d.ts.map +1 -0
- package/dist/parser/extractors/php.js +334 -0
- package/dist/parser/extractors/php.js.map +1 -0
- package/dist/parser/extractors/python.d.ts.map +1 -1
- package/dist/parser/extractors/python.js +234 -11
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/sql.d.ts +33 -0
- package/dist/parser/extractors/sql.d.ts.map +1 -0
- package/dist/parser/extractors/sql.js +506 -0
- package/dist/parser/extractors/sql.js.map +1 -0
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +209 -3
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
- package/dist/parser/languages/tree-sitter-kotlin.wasm +0 -0
- package/dist/parser/languages/tree-sitter-php.wasm +0 -0
- package/dist/parser/languages/tree-sitter-php_only.wasm +0 -0
- package/dist/parser/languages/tree-sitter-python.wasm +0 -0
- package/dist/parser/parse-cache.d.ts +39 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +87 -0
- package/dist/parser/parse-cache.js.map +1 -0
- package/dist/parser/parser-manager.d.ts +32 -0
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +93 -3
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js +16 -0
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/register-tools.d.ts +38 -2
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +2444 -195
- package/dist/register-tools.js.map +1 -1
- package/dist/search/reranker.js +1 -1
- package/dist/search/reranker.js.map +1 -1
- package/dist/search/tool-ranker.d.ts +90 -0
- package/dist/search/tool-ranker.d.ts.map +1 -0
- package/dist/search/tool-ranker.js +420 -0
- package/dist/search/tool-ranker.js.map +1 -0
- package/dist/server-helpers.d.ts.map +1 -1
- package/dist/server-helpers.js +11 -0
- package/dist/server-helpers.js.map +1 -1
- package/dist/server.js +47 -14
- package/dist/server.js.map +1 -1
- package/dist/storage/index-store.d.ts +15 -1
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +27 -1
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/session-state.d.ts +1 -1
- package/dist/storage/session-state.d.ts.map +1 -1
- package/dist/storage/session-state.js +6 -4
- package/dist/storage/session-state.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +4 -1
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/tools/agent-config-tools.d.ts +24 -0
- package/dist/tools/agent-config-tools.d.ts.map +1 -0
- package/dist/tools/agent-config-tools.js +119 -0
- package/dist/tools/agent-config-tools.js.map +1 -0
- package/dist/tools/architecture-tools.d.ts +23 -0
- package/dist/tools/architecture-tools.d.ts.map +1 -0
- package/dist/tools/architecture-tools.js +140 -0
- package/dist/tools/architecture-tools.js.map +1 -0
- package/dist/tools/astro-actions.d.ts +54 -0
- package/dist/tools/astro-actions.d.ts.map +1 -0
- package/dist/tools/astro-actions.js +561 -0
- package/dist/tools/astro-actions.js.map +1 -0
- package/dist/tools/astro-audit.d.ts +87 -0
- package/dist/tools/astro-audit.d.ts.map +1 -0
- package/dist/tools/astro-audit.js +345 -0
- package/dist/tools/astro-audit.js.map +1 -0
- package/dist/tools/astro-config.d.ts +33 -0
- package/dist/tools/astro-config.d.ts.map +1 -0
- package/dist/tools/astro-config.js +260 -0
- package/dist/tools/astro-config.js.map +1 -0
- package/dist/tools/astro-content-collections.d.ts +44 -0
- package/dist/tools/astro-content-collections.d.ts.map +1 -0
- package/dist/tools/astro-content-collections.js +630 -0
- package/dist/tools/astro-content-collections.js.map +1 -0
- package/dist/tools/astro-islands.d.ts +63 -0
- package/dist/tools/astro-islands.d.ts.map +1 -0
- package/dist/tools/astro-islands.js +255 -0
- package/dist/tools/astro-islands.js.map +1 -0
- package/dist/tools/astro-migration.d.ts +31 -0
- package/dist/tools/astro-migration.d.ts.map +1 -0
- package/dist/tools/astro-migration.js +378 -0
- package/dist/tools/astro-migration.js.map +1 -0
- package/dist/tools/astro-routes.d.ts +49 -0
- package/dist/tools/astro-routes.d.ts.map +1 -0
- package/dist/tools/astro-routes.js +119 -0
- package/dist/tools/astro-routes.js.map +1 -0
- package/dist/tools/async-correctness.d.ts +26 -0
- package/dist/tools/async-correctness.d.ts.map +1 -0
- package/dist/tools/async-correctness.js +166 -0
- package/dist/tools/async-correctness.js.map +1 -0
- package/dist/tools/audit-tools.d.ts +38 -0
- package/dist/tools/audit-tools.d.ts.map +1 -0
- package/dist/tools/audit-tools.js +248 -0
- package/dist/tools/audit-tools.js.map +1 -0
- package/dist/tools/celery-tools.d.ts +38 -0
- package/dist/tools/celery-tools.d.ts.map +1 -0
- package/dist/tools/celery-tools.js +154 -0
- package/dist/tools/celery-tools.js.map +1 -0
- package/dist/tools/clone-tools.js +1 -1
- package/dist/tools/clone-tools.js.map +1 -1
- package/dist/tools/complexity-tools.d.ts +4 -0
- package/dist/tools/complexity-tools.d.ts.map +1 -1
- package/dist/tools/complexity-tools.js +78 -4
- package/dist/tools/complexity-tools.js.map +1 -1
- package/dist/tools/compose-tools.d.ts +60 -0
- package/dist/tools/compose-tools.d.ts.map +1 -0
- package/dist/tools/compose-tools.js +203 -0
- package/dist/tools/compose-tools.js.map +1 -0
- package/dist/tools/coupling-tools.d.ts +50 -0
- package/dist/tools/coupling-tools.d.ts.map +1 -0
- package/dist/tools/coupling-tools.js +262 -0
- package/dist/tools/coupling-tools.js.map +1 -0
- package/dist/tools/dependency-audit-tools.d.ts +65 -0
- package/dist/tools/dependency-audit-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-tools.js +553 -0
- package/dist/tools/dependency-audit-tools.js.map +1 -0
- package/dist/tools/django-settings.d.ts +22 -0
- package/dist/tools/django-settings.d.ts.map +1 -0
- package/dist/tools/django-settings.js +301 -0
- package/dist/tools/django-settings.js.map +1 -0
- package/dist/tools/django-view-security-tools.d.ts +32 -0
- package/dist/tools/django-view-security-tools.d.ts.map +1 -0
- package/dist/tools/django-view-security-tools.js +184 -0
- package/dist/tools/django-view-security-tools.js.map +1 -0
- package/dist/tools/fastapi-depends.d.ts +63 -0
- package/dist/tools/fastapi-depends.d.ts.map +1 -0
- package/dist/tools/fastapi-depends.js +191 -0
- package/dist/tools/fastapi-depends.js.map +1 -0
- package/dist/tools/frequency-tools.js +1 -1
- package/dist/tools/frequency-tools.js.map +1 -1
- package/dist/tools/graph-tools.d.ts +8 -2
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +44 -3
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hilt-tools.d.ts +55 -0
- package/dist/tools/hilt-tools.d.ts.map +1 -0
- package/dist/tools/hilt-tools.js +258 -0
- package/dist/tools/hilt-tools.js.map +1 -0
- package/dist/tools/hono-analyze-app.d.ts +48 -0
- package/dist/tools/hono-analyze-app.d.ts.map +1 -0
- package/dist/tools/hono-analyze-app.js +94 -0
- package/dist/tools/hono-analyze-app.js.map +1 -0
- package/dist/tools/hono-api-contract.d.ts +22 -0
- package/dist/tools/hono-api-contract.d.ts.map +1 -0
- package/dist/tools/hono-api-contract.js +112 -0
- package/dist/tools/hono-api-contract.js.map +1 -0
- package/dist/tools/hono-conditional-middleware.d.ts +27 -0
- package/dist/tools/hono-conditional-middleware.d.ts.map +1 -0
- package/dist/tools/hono-conditional-middleware.js +62 -0
- package/dist/tools/hono-conditional-middleware.js.map +1 -0
- package/dist/tools/hono-context-flow.d.ts +24 -0
- package/dist/tools/hono-context-flow.d.ts.map +1 -0
- package/dist/tools/hono-context-flow.js +70 -0
- package/dist/tools/hono-context-flow.js.map +1 -0
- package/dist/tools/hono-dead-routes.d.ts +26 -0
- package/dist/tools/hono-dead-routes.d.ts.map +1 -0
- package/dist/tools/hono-dead-routes.js +102 -0
- package/dist/tools/hono-dead-routes.js.map +1 -0
- package/dist/tools/hono-entry-resolver.d.ts +27 -0
- package/dist/tools/hono-entry-resolver.d.ts.map +1 -0
- package/dist/tools/hono-entry-resolver.js +31 -0
- package/dist/tools/hono-entry-resolver.js.map +1 -0
- package/dist/tools/hono-env-regression.d.ts +29 -0
- package/dist/tools/hono-env-regression.d.ts.map +1 -0
- package/dist/tools/hono-env-regression.js +157 -0
- package/dist/tools/hono-env-regression.js.map +1 -0
- package/dist/tools/hono-inline-analyze.d.ts +31 -0
- package/dist/tools/hono-inline-analyze.d.ts.map +1 -0
- package/dist/tools/hono-inline-analyze.js +59 -0
- package/dist/tools/hono-inline-analyze.js.map +1 -0
- package/dist/tools/hono-middleware-chain.d.ts +40 -0
- package/dist/tools/hono-middleware-chain.d.ts.map +1 -0
- package/dist/tools/hono-middleware-chain.js +121 -0
- package/dist/tools/hono-middleware-chain.js.map +1 -0
- package/dist/tools/hono-modules.d.ts +22 -0
- package/dist/tools/hono-modules.d.ts.map +1 -0
- package/dist/tools/hono-modules.js +118 -0
- package/dist/tools/hono-modules.js.map +1 -0
- package/dist/tools/hono-response-types.d.ts +37 -0
- package/dist/tools/hono-response-types.d.ts.map +1 -0
- package/dist/tools/hono-response-types.js +76 -0
- package/dist/tools/hono-response-types.js.map +1 -0
- package/dist/tools/hono-rpc-types.d.ts +21 -0
- package/dist/tools/hono-rpc-types.d.ts.map +1 -0
- package/dist/tools/hono-rpc-types.js +49 -0
- package/dist/tools/hono-rpc-types.js.map +1 -0
- package/dist/tools/hono-security.d.ts +31 -0
- package/dist/tools/hono-security.d.ts.map +1 -0
- package/dist/tools/hono-security.js +269 -0
- package/dist/tools/hono-security.js.map +1 -0
- package/dist/tools/hono-visualize.d.ts +13 -0
- package/dist/tools/hono-visualize.d.ts.map +1 -0
- package/dist/tools/hono-visualize.js +64 -0
- package/dist/tools/hono-visualize.js.map +1 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -1
- package/dist/tools/hotspot-tools.js +9 -7
- package/dist/tools/hotspot-tools.js.map +1 -1
- package/dist/tools/index-tools.d.ts +17 -0
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +210 -10
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/kotlin-tools.d.ts +142 -0
- package/dist/tools/kotlin-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-tools.js +572 -0
- package/dist/tools/kotlin-tools.js.map +1 -0
- package/dist/tools/legacy-hono-conventions.d.ts +14 -0
- package/dist/tools/legacy-hono-conventions.d.ts.map +1 -0
- package/dist/tools/legacy-hono-conventions.js +152 -0
- package/dist/tools/legacy-hono-conventions.js.map +1 -0
- package/dist/tools/migration-lint-tools.d.ts +26 -0
- package/dist/tools/migration-lint-tools.d.ts.map +1 -0
- package/dist/tools/migration-lint-tools.js +247 -0
- package/dist/tools/migration-lint-tools.js.map +1 -0
- package/dist/tools/model-tools.d.ts +30 -0
- package/dist/tools/model-tools.d.ts.map +1 -0
- package/dist/tools/model-tools.js +145 -0
- package/dist/tools/model-tools.js.map +1 -0
- package/dist/tools/nest-ext-tools.d.ts +207 -0
- package/dist/tools/nest-ext-tools.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools.js +752 -0
- package/dist/tools/nest-ext-tools.js.map +1 -0
- package/dist/tools/nest-tools.d.ts +198 -0
- package/dist/tools/nest-tools.d.ts.map +1 -0
- package/dist/tools/nest-tools.js +1142 -0
- package/dist/tools/nest-tools.js.map +1 -0
- package/dist/tools/nextjs-api-contract-readers.d.ts +14 -0
- package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-api-contract-readers.js +204 -0
- package/dist/tools/nextjs-api-contract-readers.js.map +1 -0
- package/dist/tools/nextjs-api-contract-tools.d.ts +57 -0
- package/dist/tools/nextjs-api-contract-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-api-contract-tools.js +144 -0
- package/dist/tools/nextjs-api-contract-tools.js.map +1 -0
- package/dist/tools/nextjs-boundary-tools.d.ts +39 -0
- package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-boundary-tools.js +152 -0
- package/dist/tools/nextjs-boundary-tools.js.map +1 -0
- package/dist/tools/nextjs-component-readers.d.ts +101 -0
- package/dist/tools/nextjs-component-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-component-readers.js +287 -0
- package/dist/tools/nextjs-component-readers.js.map +1 -0
- package/dist/tools/nextjs-component-tools.d.ts +51 -0
- package/dist/tools/nextjs-component-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-component-tools.js +212 -0
- package/dist/tools/nextjs-component-tools.js.map +1 -0
- package/dist/tools/nextjs-data-flow-tools.d.ts +42 -0
- package/dist/tools/nextjs-data-flow-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-data-flow-tools.js +158 -0
- package/dist/tools/nextjs-data-flow-tools.js.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts +60 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.js +394 -0
- package/dist/tools/nextjs-framework-audit-tools.js.map +1 -0
- package/dist/tools/nextjs-link-tools.d.ts +41 -0
- package/dist/tools/nextjs-link-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-link-tools.js +157 -0
- package/dist/tools/nextjs-link-tools.js.map +1 -0
- package/dist/tools/nextjs-metadata-tools.d.ts +74 -0
- package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-metadata-tools.js +252 -0
- package/dist/tools/nextjs-metadata-tools.js.map +1 -0
- package/dist/tools/nextjs-middleware-coverage-tools.d.ts +41 -0
- package/dist/tools/nextjs-middleware-coverage-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-middleware-coverage-tools.js +88 -0
- package/dist/tools/nextjs-middleware-coverage-tools.js.map +1 -0
- package/dist/tools/nextjs-route-readers.d.ts +81 -0
- package/dist/tools/nextjs-route-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-route-readers.js +340 -0
- package/dist/tools/nextjs-route-readers.js.map +1 -0
- package/dist/tools/nextjs-route-tools.d.ts +36 -0
- package/dist/tools/nextjs-route-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-route-tools.js +175 -0
- package/dist/tools/nextjs-route-tools.js.map +1 -0
- package/dist/tools/nextjs-security-readers.d.ts +22 -0
- package/dist/tools/nextjs-security-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-security-readers.js +318 -0
- package/dist/tools/nextjs-security-readers.js.map +1 -0
- package/dist/tools/nextjs-security-scoring.d.ts +15 -0
- package/dist/tools/nextjs-security-scoring.d.ts.map +1 -0
- package/dist/tools/nextjs-security-scoring.js +65 -0
- package/dist/tools/nextjs-security-scoring.js.map +1 -0
- package/dist/tools/nextjs-security-tools.d.ts +75 -0
- package/dist/tools/nextjs-security-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-security-tools.js +153 -0
- package/dist/tools/nextjs-security-tools.js.map +1 -0
- package/dist/tools/nextjs-tools.d.ts +15 -0
- package/dist/tools/nextjs-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-tools.js +15 -0
- package/dist/tools/nextjs-tools.js.map +1 -0
- package/dist/tools/outline-tools.d.ts.map +1 -1
- package/dist/tools/outline-tools.js +20 -0
- package/dist/tools/outline-tools.js.map +1 -1
- package/dist/tools/pattern-tools.d.ts +8 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +651 -3
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/perf-tools.d.ts +32 -0
- package/dist/tools/perf-tools.d.ts.map +1 -0
- package/dist/tools/perf-tools.js +227 -0
- package/dist/tools/perf-tools.js.map +1 -0
- package/dist/tools/php-tools.d.ts +185 -0
- package/dist/tools/php-tools.d.ts.map +1 -0
- package/dist/tools/php-tools.js +645 -0
- package/dist/tools/php-tools.js.map +1 -0
- package/dist/tools/plan-turn-tools.d.ts +89 -0
- package/dist/tools/plan-turn-tools.d.ts.map +1 -0
- package/dist/tools/plan-turn-tools.js +508 -0
- package/dist/tools/plan-turn-tools.js.map +1 -0
- package/dist/tools/prisma-schema-tools.d.ts +44 -0
- package/dist/tools/prisma-schema-tools.d.ts.map +1 -0
- package/dist/tools/prisma-schema-tools.js +358 -0
- package/dist/tools/prisma-schema-tools.js.map +1 -0
- package/dist/tools/project-tools.d.ts +116 -7
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +595 -218
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/pydantic-models.d.ts +46 -0
- package/dist/tools/pydantic-models.d.ts.map +1 -0
- package/dist/tools/pydantic-models.js +249 -0
- package/dist/tools/pydantic-models.js.map +1 -0
- package/dist/tools/pyproject-tools.d.ts +23 -0
- package/dist/tools/pyproject-tools.d.ts.map +1 -0
- package/dist/tools/pyproject-tools.js +133 -0
- package/dist/tools/pyproject-tools.js.map +1 -0
- package/dist/tools/pytest-tools.d.ts +20 -0
- package/dist/tools/pytest-tools.d.ts.map +1 -0
- package/dist/tools/pytest-tools.js +106 -0
- package/dist/tools/pytest-tools.js.map +1 -0
- package/dist/tools/python-audit.d.ts +40 -0
- package/dist/tools/python-audit.d.ts.map +1 -0
- package/dist/tools/python-audit.js +244 -0
- package/dist/tools/python-audit.js.map +1 -0
- package/dist/tools/python-callers.d.ts +28 -0
- package/dist/tools/python-callers.d.ts.map +1 -0
- package/dist/tools/python-callers.js +110 -0
- package/dist/tools/python-callers.js.map +1 -0
- package/dist/tools/python-circular-imports.d.ts +19 -0
- package/dist/tools/python-circular-imports.d.ts.map +1 -0
- package/dist/tools/python-circular-imports.js +126 -0
- package/dist/tools/python-circular-imports.js.map +1 -0
- package/dist/tools/python-constants-tools.d.ts +44 -0
- package/dist/tools/python-constants-tools.d.ts.map +1 -0
- package/dist/tools/python-constants-tools.js +525 -0
- package/dist/tools/python-constants-tools.js.map +1 -0
- package/dist/tools/python-deps-analyzer.d.ts +46 -0
- package/dist/tools/python-deps-analyzer.d.ts.map +1 -0
- package/dist/tools/python-deps-analyzer.js +227 -0
- package/dist/tools/python-deps-analyzer.js.map +1 -0
- package/dist/tools/query-tools.d.ts +23 -0
- package/dist/tools/query-tools.d.ts.map +1 -0
- package/dist/tools/query-tools.js +256 -0
- package/dist/tools/query-tools.js.map +1 -0
- package/dist/tools/react-tools.d.ts +263 -0
- package/dist/tools/react-tools.d.ts.map +1 -0
- package/dist/tools/react-tools.js +839 -0
- package/dist/tools/react-tools.js.map +1 -0
- package/dist/tools/report-tools.js +47 -0
- package/dist/tools/report-tools.js.map +1 -1
- package/dist/tools/review-diff-tools.d.ts +5 -4
- package/dist/tools/review-diff-tools.d.ts.map +1 -1
- package/dist/tools/review-diff-tools.js +157 -66
- package/dist/tools/review-diff-tools.js.map +1 -1
- package/dist/tools/room-tools.d.ts +36 -0
- package/dist/tools/room-tools.d.ts.map +1 -0
- package/dist/tools/room-tools.js +147 -0
- package/dist/tools/room-tools.js.map +1 -0
- package/dist/tools/route-tools.d.ts +27 -1
- package/dist/tools/route-tools.d.ts.map +1 -1
- package/dist/tools/route-tools.js +744 -18
- package/dist/tools/route-tools.js.map +1 -1
- package/dist/tools/ruff-tools.d.ts +32 -0
- package/dist/tools/ruff-tools.d.ts.map +1 -0
- package/dist/tools/ruff-tools.js +114 -0
- package/dist/tools/ruff-tools.js.map +1 -0
- package/dist/tools/search-ranker.d.ts.map +1 -1
- package/dist/tools/search-ranker.js +7 -0
- package/dist/tools/search-ranker.js.map +1 -1
- package/dist/tools/search-tools.d.ts +3 -2
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +16 -3
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/serialization-tools.d.ts +24 -0
- package/dist/tools/serialization-tools.d.ts.map +1 -0
- package/dist/tools/serialization-tools.js +156 -0
- package/dist/tools/serialization-tools.js.map +1 -0
- package/dist/tools/sql-tools.d.ts +274 -0
- package/dist/tools/sql-tools.d.ts.map +1 -0
- package/dist/tools/sql-tools.js +1160 -0
- package/dist/tools/sql-tools.js.map +1 -0
- package/dist/tools/status-tools.d.ts +10 -0
- package/dist/tools/status-tools.d.ts.map +1 -0
- package/dist/tools/status-tools.js +32 -0
- package/dist/tools/status-tools.js.map +1 -0
- package/dist/tools/symbol-tools.d.ts +19 -0
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +75 -4
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/taint-tools.d.ts +43 -0
- package/dist/tools/taint-tools.d.ts.map +1 -0
- package/dist/tools/taint-tools.js +922 -0
- package/dist/tools/taint-tools.js.map +1 -0
- package/dist/tools/test-impact-tools.d.ts +29 -0
- package/dist/tools/test-impact-tools.d.ts.map +1 -0
- package/dist/tools/test-impact-tools.js +156 -0
- package/dist/tools/test-impact-tools.js.map +1 -0
- package/dist/tools/typecheck-tools.d.ts +39 -0
- package/dist/tools/typecheck-tools.d.ts.map +1 -0
- package/dist/tools/typecheck-tools.js +191 -0
- package/dist/tools/typecheck-tools.js.map +1 -0
- package/dist/tools/wiring-tools.d.ts +19 -0
- package/dist/tools/wiring-tools.d.ts.map +1 -0
- package/dist/tools/wiring-tools.js +147 -0
- package/dist/tools/wiring-tools.js.map +1 -0
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/framework-detect.d.ts +18 -2
- package/dist/utils/framework-detect.d.ts.map +1 -1
- package/dist/utils/framework-detect.js +150 -3
- package/dist/utils/framework-detect.js.map +1 -1
- package/dist/utils/import-graph.d.ts +42 -0
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +248 -9
- package/dist/utils/import-graph.js.map +1 -1
- package/dist/utils/language-detect.d.ts +21 -0
- package/dist/utils/language-detect.d.ts.map +1 -0
- package/dist/utils/language-detect.js +183 -0
- package/dist/utils/language-detect.js.map +1 -0
- package/dist/utils/nextjs-ast-readers.d.ts +44 -0
- package/dist/utils/nextjs-ast-readers.d.ts.map +1 -0
- package/dist/utils/nextjs-ast-readers.js +341 -0
- package/dist/utils/nextjs-ast-readers.js.map +1 -0
- package/dist/utils/nextjs-audit-cache.d.ts +51 -0
- package/dist/utils/nextjs-audit-cache.d.ts.map +1 -0
- package/dist/utils/nextjs-audit-cache.js +116 -0
- package/dist/utils/nextjs-audit-cache.js.map +1 -0
- package/dist/utils/nextjs-metadata-readers.d.ts +65 -0
- package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -0
- package/dist/utils/nextjs-metadata-readers.js +447 -0
- package/dist/utils/nextjs-metadata-readers.js.map +1 -0
- package/dist/utils/nextjs.d.ts +42 -0
- package/dist/utils/nextjs.d.ts.map +1 -0
- package/dist/utils/nextjs.js +284 -0
- package/dist/utils/nextjs.js.map +1 -0
- package/dist/utils/python-import-resolver.d.ts +42 -0
- package/dist/utils/python-import-resolver.d.ts.map +1 -0
- package/dist/utils/python-import-resolver.js +101 -0
- package/dist/utils/python-import-resolver.js.map +1 -0
- package/dist/utils/python-imports.d.ts +28 -0
- package/dist/utils/python-imports.d.ts.map +1 -0
- package/dist/utils/python-imports.js +117 -0
- package/dist/utils/python-imports.js.map +1 -0
- package/dist/utils/react-alias.d.ts +15 -0
- package/dist/utils/react-alias.d.ts.map +1 -0
- package/dist/utils/react-alias.js +31 -0
- package/dist/utils/react-alias.js.map +1 -0
- package/dist/utils/test-file.d.ts.map +1 -1
- package/dist/utils/test-file.js +7 -0
- package/dist/utils/test-file.js.map +1 -1
- package/dist/utils/walk.d.ts +22 -0
- package/dist/utils/walk.d.ts.map +1 -1
- package/dist/utils/walk.js +70 -2
- package/dist/utils/walk.js.map +1 -1
- package/package.json +4 -3
- package/rules/codesift.md +71 -5
- package/rules/codesift.mdc +71 -5
- package/rules/codex.md +71 -5
- package/rules/gemini.md +71 -5
- package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
- package/src/parser/languages/tree-sitter-kotlin.wasm +0 -0
- package/src/parser/languages/tree-sitter-php.wasm +0 -0
- package/src/parser/languages/tree-sitter-php_only.wasm +0 -0
- package/src/parser/languages/tree-sitter-python.wasm +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework wiring discovery — find implicit control flow connections.
|
|
3
|
+
* Django signals, Celery tasks, middleware chains, management commands,
|
|
4
|
+
* Flask extensions, FastAPI event handlers.
|
|
5
|
+
*/
|
|
6
|
+
import { getCodeIndex } from "./index-tools.js";
|
|
7
|
+
// --- Detection patterns ---
|
|
8
|
+
// Django signals: @receiver(post_save, sender=Model)
|
|
9
|
+
const DJANGO_RECEIVER_RE = /@receiver\s*\(\s*(\w+)(?:\s*,\s*sender\s*=\s*(\w+))?\)/;
|
|
10
|
+
const SIGNAL_CONNECT_RE = /(\w+)\.connect\s*\(\s*(\w+)/;
|
|
11
|
+
// Celery tasks: @app.task, @shared_task, @celery.task
|
|
12
|
+
const CELERY_TASK_DECORATOR_RE = /@(?:\w+\.)?(?:task|shared_task)\b/;
|
|
13
|
+
// Celery task calls: .delay(), .apply_async()
|
|
14
|
+
const CELERY_CALL_RE = /(\w+)\.(delay|apply_async|s|si|signature)\s*\(/;
|
|
15
|
+
// Django middleware: MIDDLEWARE list in settings
|
|
16
|
+
const MIDDLEWARE_RE = /MIDDLEWARE\s*=\s*\[([^\]]*)\]/s;
|
|
17
|
+
// Django management commands: class Command(BaseCommand)
|
|
18
|
+
const MANAGEMENT_CMD_RE = /class\s+Command\s*\(\s*(?:\w+\.)?BaseCommand\s*\)/;
|
|
19
|
+
// Flask extensions: .init_app()
|
|
20
|
+
const FLASK_INIT_APP_RE = /(\w+)\.init_app\s*\(\s*(\w+)\s*\)/;
|
|
21
|
+
// FastAPI event handlers: @app.on_event("startup")
|
|
22
|
+
const FASTAPI_EVENT_RE = /@\w+\.on_event\s*\(\s*['"](\w+)['"]\s*\)/;
|
|
23
|
+
/**
|
|
24
|
+
* Discover implicit framework wiring across a Python codebase.
|
|
25
|
+
*/
|
|
26
|
+
export async function findFrameworkWiring(repo, options) {
|
|
27
|
+
const index = await getCodeIndex(repo);
|
|
28
|
+
if (!index)
|
|
29
|
+
throw new Error(`Repository "${repo}" not found.`);
|
|
30
|
+
const filePattern = options?.file_pattern;
|
|
31
|
+
const entries = [];
|
|
32
|
+
for (const sym of index.symbols) {
|
|
33
|
+
if (!sym.file.endsWith(".py"))
|
|
34
|
+
continue;
|
|
35
|
+
if (filePattern && !sym.file.includes(filePattern))
|
|
36
|
+
continue;
|
|
37
|
+
const source = sym.source ?? "";
|
|
38
|
+
const decorators = sym.decorators ?? [];
|
|
39
|
+
// Django signals
|
|
40
|
+
for (const dec of decorators) {
|
|
41
|
+
const sigMatch = DJANGO_RECEIVER_RE.exec(dec);
|
|
42
|
+
if (sigMatch) {
|
|
43
|
+
entries.push({
|
|
44
|
+
type: "signal",
|
|
45
|
+
name: sym.name,
|
|
46
|
+
file: sym.file,
|
|
47
|
+
line: sym.start_line,
|
|
48
|
+
detail: `@receiver(${sigMatch[1]}${sigMatch[2] ? `, sender=${sigMatch[2]}` : ""})`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Signal.connect()
|
|
53
|
+
const connectMatch = SIGNAL_CONNECT_RE.exec(source);
|
|
54
|
+
if (connectMatch) {
|
|
55
|
+
entries.push({
|
|
56
|
+
type: "signal",
|
|
57
|
+
name: connectMatch[2],
|
|
58
|
+
file: sym.file,
|
|
59
|
+
line: sym.start_line,
|
|
60
|
+
detail: `${connectMatch[1]}.connect(${connectMatch[2]})`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// Celery tasks
|
|
64
|
+
for (const dec of decorators) {
|
|
65
|
+
if (CELERY_TASK_DECORATOR_RE.test(dec)) {
|
|
66
|
+
entries.push({
|
|
67
|
+
type: "task",
|
|
68
|
+
name: sym.name,
|
|
69
|
+
file: sym.file,
|
|
70
|
+
line: sym.start_line,
|
|
71
|
+
detail: dec,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Celery task calls
|
|
76
|
+
const callMatch = CELERY_CALL_RE.exec(source);
|
|
77
|
+
if (callMatch) {
|
|
78
|
+
entries.push({
|
|
79
|
+
type: "task_call",
|
|
80
|
+
name: callMatch[1],
|
|
81
|
+
file: sym.file,
|
|
82
|
+
line: sym.start_line,
|
|
83
|
+
detail: `${callMatch[1]}.${callMatch[2]}()`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// Management commands
|
|
87
|
+
if (MANAGEMENT_CMD_RE.test(source) && sym.file.includes("management/commands/")) {
|
|
88
|
+
const cmdName = sym.file.split("/").pop()?.replace(".py", "") ?? sym.name;
|
|
89
|
+
entries.push({
|
|
90
|
+
type: "command",
|
|
91
|
+
name: cmdName,
|
|
92
|
+
file: sym.file,
|
|
93
|
+
line: sym.start_line,
|
|
94
|
+
detail: `manage.py ${cmdName}`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Flask init_app
|
|
98
|
+
const initMatch = FLASK_INIT_APP_RE.exec(source);
|
|
99
|
+
if (initMatch) {
|
|
100
|
+
entries.push({
|
|
101
|
+
type: "extension",
|
|
102
|
+
name: initMatch[1],
|
|
103
|
+
file: sym.file,
|
|
104
|
+
line: sym.start_line,
|
|
105
|
+
detail: `${initMatch[1]}.init_app(${initMatch[2]})`,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// FastAPI event handlers
|
|
109
|
+
for (const dec of decorators) {
|
|
110
|
+
const eventMatch = FASTAPI_EVENT_RE.exec(dec);
|
|
111
|
+
if (eventMatch) {
|
|
112
|
+
entries.push({
|
|
113
|
+
type: "event_handler",
|
|
114
|
+
name: sym.name,
|
|
115
|
+
file: sym.file,
|
|
116
|
+
line: sym.start_line,
|
|
117
|
+
detail: `on_event("${eventMatch[1]}")`,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Django middleware (from settings)
|
|
122
|
+
if (sym.name === "MIDDLEWARE" || sym.kind === "constant") {
|
|
123
|
+
const mwMatch = MIDDLEWARE_RE.exec(source);
|
|
124
|
+
if (mwMatch) {
|
|
125
|
+
const middlewares = mwMatch[1]
|
|
126
|
+
.split(",")
|
|
127
|
+
.map((m) => m.trim().replace(/['"]/g, ""))
|
|
128
|
+
.filter((m) => m.length > 0);
|
|
129
|
+
for (const mw of middlewares) {
|
|
130
|
+
entries.push({
|
|
131
|
+
type: "middleware",
|
|
132
|
+
name: mw.split(".").pop() ?? mw,
|
|
133
|
+
file: sym.file,
|
|
134
|
+
line: sym.start_line,
|
|
135
|
+
detail: mw,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const by_type = {};
|
|
142
|
+
for (const e of entries) {
|
|
143
|
+
by_type[e.type] = (by_type[e.type] ?? 0) + 1;
|
|
144
|
+
}
|
|
145
|
+
return { entries, total: entries.length, by_type };
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=wiring-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiring-tools.js","sourceRoot":"","sources":["../../src/tools/wiring-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type SymbolKind = "function" | "method" | "class" | "interface" | "type" | "variable" | "constant" | "field" | "enum" | "namespace" | "module" | "section" | "metadata" | "test_suite" | "test_case" | "test_hook" | "default_export" | "conversation_turn" | "conversation_summary" | "unknown";
|
|
1
|
+
export type SymbolKind = "function" | "method" | "class" | "interface" | "type" | "variable" | "constant" | "field" | "enum" | "namespace" | "module" | "section" | "metadata" | "test_suite" | "test_case" | "test_hook" | "component" | "hook" | "table" | "view" | "index" | "trigger" | "procedure" | "default_export" | "conversation_turn" | "conversation_summary" | "unknown";
|
|
2
2
|
export interface FileLocation {
|
|
3
3
|
file: string;
|
|
4
4
|
start_line: number;
|
|
@@ -18,6 +18,10 @@ export interface CodeSymbol extends FileLocation {
|
|
|
18
18
|
source?: string;
|
|
19
19
|
parent?: string;
|
|
20
20
|
tokens?: string[];
|
|
21
|
+
decorators?: string[];
|
|
22
|
+
extends?: string[];
|
|
23
|
+
is_async?: boolean;
|
|
24
|
+
meta?: Record<string, unknown>;
|
|
21
25
|
}
|
|
22
26
|
export interface FileEntry {
|
|
23
27
|
path: string;
|
|
@@ -36,6 +40,9 @@ export interface CodeIndex {
|
|
|
36
40
|
updated_at: number;
|
|
37
41
|
symbol_count: number;
|
|
38
42
|
file_count: number;
|
|
43
|
+
/** Snapshot of EXTRACTOR_VERSIONS at index creation time — used to detect
|
|
44
|
+
* schema changes and trigger full reindex when any language version bumps. */
|
|
45
|
+
extractor_version?: Record<string, string>;
|
|
39
46
|
}
|
|
40
47
|
export interface RepoMeta {
|
|
41
48
|
name: string;
|
|
@@ -83,6 +90,7 @@ export interface TextMatchGroup {
|
|
|
83
90
|
first_match: string;
|
|
84
91
|
}
|
|
85
92
|
export type Direction = "callers" | "callees";
|
|
93
|
+
export type RouteFramework = "nestjs" | "nextjs" | "express" | "hono" | "yii2" | "laravel" | "ktor" | "spring-kotlin" | "astro" | "flask" | "fastapi" | "django" | "unknown";
|
|
86
94
|
export interface CallNode {
|
|
87
95
|
symbol: CodeSymbol;
|
|
88
96
|
children: CallNode[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,QAAQ,GACR,OAAO,GACP,WAAW,GACX,MAAM,GACN,UAAU,GACV,UAAU,GACV,OAAO,GACP,MAAM,GACN,WAAW,GACX,QAAQ,GACR,SAAS,GACT,UAAU,GACV,YAAY,GACZ,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,mBAAmB,GACnB,sBAAsB,GACtB,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import type { CodeIndex, CodeSymbol } from "../types.js";
|
|
2
|
-
|
|
2
|
+
import type { HonoAppModel } from "../parser/extractors/hono-model.js";
|
|
3
|
+
export type Framework = "react" | "nestjs" | "nextjs" | "express" | "astro" | "hono" | "test" | "kotlin-android";
|
|
4
|
+
/**
|
|
5
|
+
* Kotlin/Android annotations that mark a symbol as referenced by the runtime
|
|
6
|
+
* rather than by static imports. `find_dead_code` must treat these as live
|
|
7
|
+
* because Hilt (reflection), Compose (tooling), Room (KSP), kotlinx.serialization
|
|
8
|
+
* (JSON), and JUnit/Kotest (runner) all instantiate or invoke symbols outside
|
|
9
|
+
* the normal call graph.
|
|
10
|
+
*/
|
|
11
|
+
export declare const KOTLIN_FRAMEWORK_ANNOTATIONS: ReadonlySet<string>;
|
|
12
|
+
/** Exported for testing — matches next.config.{js,mjs,cjs,ts} at root or src/ */
|
|
13
|
+
export declare const NEXT_CONFIG_FILE: RegExp;
|
|
14
|
+
/** Exported for testing — App Router convention files */
|
|
15
|
+
export declare const NEXT_APP_CONVENTION_FILE: RegExp;
|
|
3
16
|
export declare function detectFrameworks(index: CodeIndex): Set<Framework>;
|
|
4
|
-
export declare function isFrameworkEntryPoint(symbol: Pick<CodeSymbol, "name" | "file"
|
|
17
|
+
export declare function isFrameworkEntryPoint(symbol: Pick<CodeSymbol, "name" | "file"> & {
|
|
18
|
+
source?: string;
|
|
19
|
+
decorators?: string[] | undefined;
|
|
20
|
+
}, frameworks: Set<Framework>, honoModel?: HonoAppModel | null): boolean;
|
|
5
21
|
//# sourceMappingURL=framework-detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-detect.d.ts","sourceRoot":"","sources":["../../src/utils/framework-detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"framework-detect.d.ts","sourceRoot":"","sources":["../../src/utils/framework-detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAEjH;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAmB3D,CAAC;AA8BH,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AACrE,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,QAA0G,CAAC;AAEhJ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CA0CjE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAAE,EAClG,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,EAC1B,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,GAC9B,OAAO,CA0ET"}
|
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kotlin/Android annotations that mark a symbol as referenced by the runtime
|
|
3
|
+
* rather than by static imports. `find_dead_code` must treat these as live
|
|
4
|
+
* because Hilt (reflection), Compose (tooling), Room (KSP), kotlinx.serialization
|
|
5
|
+
* (JSON), and JUnit/Kotest (runner) all instantiate or invoke symbols outside
|
|
6
|
+
* the normal call graph.
|
|
7
|
+
*/
|
|
8
|
+
export const KOTLIN_FRAMEWORK_ANNOTATIONS = new Set([
|
|
9
|
+
// Hilt / Dagger DI
|
|
10
|
+
"HiltViewModel", "HiltAndroidApp", "AndroidEntryPoint",
|
|
11
|
+
"Inject", "Module", "Provides", "Binds", "InstallIn", "Singleton",
|
|
12
|
+
// Jetpack Compose + Compose tooling
|
|
13
|
+
"Composable", "Preview", "PreviewParameter",
|
|
14
|
+
// kotlinx.serialization
|
|
15
|
+
"Serializable", "SerialName", "Transient",
|
|
16
|
+
// Room persistence
|
|
17
|
+
"Entity", "Dao", "Database", "Query", "Insert", "Update", "Delete",
|
|
18
|
+
"TypeConverter", "TypeConverters", "PrimaryKey", "Embedded", "Relation",
|
|
19
|
+
// Android framework entry points
|
|
20
|
+
"Keep", "JvmStatic", "JvmOverloads", "JvmName", "JvmField",
|
|
21
|
+
// Test runners (JUnit4/5 + Kotest)
|
|
22
|
+
"Test", "BeforeEach", "AfterEach", "BeforeAll", "AfterAll",
|
|
23
|
+
"Before", "After", "BeforeClass", "AfterClass",
|
|
24
|
+
"ParameterizedTest", "RepeatedTest",
|
|
25
|
+
// Kotlin Multiplatform
|
|
26
|
+
"JsExport", "ObjCName", "Throws",
|
|
27
|
+
]);
|
|
1
28
|
const NEXT_ROUTE_FILE = /(^|\/)app\/.*\/route\.[jt]sx?$/;
|
|
2
29
|
const NEXT_APP_FILE = /(^|\/)app\/.+\.[jt]sx?$/;
|
|
3
30
|
const NEXT_PAGES_FILE = /(^|\/)pages\/.+\.[jt]sx?$/;
|
|
@@ -5,6 +32,26 @@ const NEXT_MIDDLEWARE_FILE = /(^|\/)middleware\.[jt]sx?$/;
|
|
|
5
32
|
const NEXT_ROUTE_METHODS = /^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)$/;
|
|
6
33
|
const NEXT_PAGES_DATA_FUNCTIONS = /^(getServerSideProps|getStaticProps|getStaticPaths)$/;
|
|
7
34
|
const NEXT_APP_METADATA_FUNCTIONS = /^(generateMetadata|generateStaticParams)$/;
|
|
35
|
+
/** Next.js config exports that are framework entry points (not dead code) */
|
|
36
|
+
const NEXT_CONFIG_EXPORTS = /^(metadata|viewport|dynamic|revalidate|runtime|preferredRegion|maxDuration|fetchCache|dynamicParams)$/;
|
|
37
|
+
/** NestJS lifecycle hooks + decorator-based entry points */
|
|
38
|
+
const NESTJS_LIFECYCLE = /^(onModuleInit|onModuleDestroy|onApplicationBootstrap|onApplicationShutdown|beforeApplicationShutdown|handleCron|handleInterval|handleTimeout|handleEvent)$/;
|
|
39
|
+
const NESTJS_ENTRY_FILE = /\.(controller|resolver|gateway|guard|interceptor|pipe|filter)\.[jt]sx?$/;
|
|
40
|
+
const NESTJS_MAIN_FILE = /(^|\/)main\.[jt]sx?$/;
|
|
41
|
+
/** Astro file-based routing — pages/ directory with .astro, .ts, or .js files */
|
|
42
|
+
const ASTRO_PAGES_FILE = /(^|\/)src\/pages\/.+\.(astro|[jt]sx?)$/;
|
|
43
|
+
/** Astro special exports that the framework consumes implicitly */
|
|
44
|
+
const ASTRO_ENTRY_SYMBOLS = /^(getStaticPaths|prerender|GET|POST|PUT|DELETE|PATCH)$/;
|
|
45
|
+
/** React/Next.js app router file conventions — these are route entry points */
|
|
46
|
+
const REACT_ROUTE_FILE = /(^|\/)(pages|app)\/.*\.(tsx|jsx)$/;
|
|
47
|
+
/** Special Next.js/Remix file names that are always entry points regardless of export name */
|
|
48
|
+
const REACT_SPECIAL_FILE = /(^|\/)(page|layout|loading|error|not-found|global-error|default|template|head)\.(tsx|jsx)$/;
|
|
49
|
+
/** Remix convention: routes/ directory with file-based routing */
|
|
50
|
+
const REMIX_ROUTE_FILE = /(^|\/)routes\/.*\.(tsx|jsx)$/;
|
|
51
|
+
/** Exported for testing — matches next.config.{js,mjs,cjs,ts} at root or src/ */
|
|
52
|
+
export const NEXT_CONFIG_FILE = /^(src\/)?next\.config\.[mc]?[jt]s$/;
|
|
53
|
+
/** Exported for testing — App Router convention files */
|
|
54
|
+
export const NEXT_APP_CONVENTION_FILE = /(^|\/)app\/(.*\/)?(page|layout|loading|error|not-found|global-error|default|template|route)\.[jt]sx?$/;
|
|
8
55
|
export function detectFrameworks(index) {
|
|
9
56
|
const frameworks = new Set();
|
|
10
57
|
// Sample first 200 symbols' source for framework indicators
|
|
@@ -13,14 +60,80 @@ export function detectFrameworks(index) {
|
|
|
13
60
|
frameworks.add("nestjs");
|
|
14
61
|
if (sources.includes("from 'react'") || sources.includes('from "react"') || sources.includes("useState"))
|
|
15
62
|
frameworks.add("react");
|
|
16
|
-
if (index.files.some((f) => f.path.includes("app/api/") && f.path.endsWith("route.ts")))
|
|
17
|
-
frameworks.add("nextjs");
|
|
18
63
|
if (sources.includes("express()") || sources.includes("Router()"))
|
|
19
64
|
frameworks.add("express");
|
|
65
|
+
// Hono detection: check symbol sources for new Hono() / new OpenAPIHono() instantiation,
|
|
66
|
+
// or import statements (captured in some extractor flows), or hono/factory createApp
|
|
67
|
+
if (/new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sources) ||
|
|
68
|
+
sources.includes("from 'hono'") ||
|
|
69
|
+
sources.includes('from "hono"') ||
|
|
70
|
+
sources.includes("from '@hono/zod-openapi'") ||
|
|
71
|
+
sources.includes('from "@hono/zod-openapi"') ||
|
|
72
|
+
sources.includes("factory.createApp")) {
|
|
73
|
+
frameworks.add("hono");
|
|
74
|
+
}
|
|
75
|
+
if (sources.includes("from 'astro'") || sources.includes('from "astro"') || sources.includes("from 'astro:") || sources.includes('from "astro:') || index.files.some((f) => f.path.endsWith(".astro")))
|
|
76
|
+
frameworks.add("astro");
|
|
77
|
+
// Kotlin/Android detection: any .kt file is a signal. The annotation
|
|
78
|
+
// whitelist kicks in across all Kotlin symbols regardless of whether Hilt
|
|
79
|
+
// is actually in use — the cost of a false negative (flagging @HiltViewModel
|
|
80
|
+
// as dead code) is much higher than the cost of a false positive (allowing
|
|
81
|
+
// a few annotated symbols through when the project isn't Android).
|
|
82
|
+
if (index.files.some((f) => f.path.endsWith(".kt") || f.path.endsWith(".kts"))) {
|
|
83
|
+
frameworks.add("kotlin-android");
|
|
84
|
+
}
|
|
85
|
+
// Next.js detection: broadened to cover config file, pages/ dir, and App Router conventions
|
|
86
|
+
const hasNextConfig = index.files.some((f) => NEXT_CONFIG_FILE.test(f.path));
|
|
87
|
+
const hasPagesDir = index.files.some((f) => NEXT_PAGES_FILE.test(f.path) && /\.[jt]sx?$/.test(f.path));
|
|
88
|
+
const hasAppConvention = index.files.some((f) => NEXT_APP_CONVENTION_FILE.test(f.path));
|
|
89
|
+
if (hasNextConfig || hasPagesDir || hasAppConvention) {
|
|
90
|
+
frameworks.add("nextjs");
|
|
91
|
+
}
|
|
20
92
|
frameworks.add("test"); // always include test patterns
|
|
21
93
|
return frameworks;
|
|
22
94
|
}
|
|
23
|
-
export function isFrameworkEntryPoint(symbol, frameworks) {
|
|
95
|
+
export function isFrameworkEntryPoint(symbol, frameworks, honoModel) {
|
|
96
|
+
// Kotlin/Android: whitelisted annotations mark a symbol as runtime-referenced
|
|
97
|
+
// (Hilt, Compose, Room, serialization, Android entry points, JUnit).
|
|
98
|
+
if (frameworks.has("kotlin-android") && (symbol.file.endsWith(".kt") || symbol.file.endsWith(".kts"))) {
|
|
99
|
+
const decorators = symbol.decorators;
|
|
100
|
+
if (decorators && decorators.length > 0) {
|
|
101
|
+
for (const decorator of decorators) {
|
|
102
|
+
if (KOTLIN_FRAMEWORK_ANNOTATIONS.has(decorator))
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Fallback for symbols where the extractor didn't surface decorators yet:
|
|
107
|
+
// scan the first 400 chars of source for any whitelisted @Annotation.
|
|
108
|
+
// Cheaper than re-parsing and keeps correctness as the extractor evolves.
|
|
109
|
+
const head = symbol.source?.slice(0, 400);
|
|
110
|
+
if (head) {
|
|
111
|
+
for (const annotation of KOTLIN_FRAMEWORK_ANNOTATIONS) {
|
|
112
|
+
// Word-boundary match against "@Annotation" to avoid false matches on
|
|
113
|
+
// @HiltViewModelInternal or similar.
|
|
114
|
+
const re = new RegExp(`@${annotation}\\b`);
|
|
115
|
+
if (re.test(head))
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (frameworks.has("hono") && honoModel) {
|
|
121
|
+
// Symbol is in a file that the HonoExtractor reached
|
|
122
|
+
if (honoModel.files_used.includes(symbol.file)) {
|
|
123
|
+
// Handler function referenced by a route
|
|
124
|
+
if (honoModel.routes.some((r) => r.handler.name === symbol.name))
|
|
125
|
+
return true;
|
|
126
|
+
// Middleware referenced in any chain
|
|
127
|
+
if (honoModel.middleware_chains.some((mc) => mc.entries.some((e) => e.name === symbol.name)))
|
|
128
|
+
return true;
|
|
129
|
+
// Sub-app variable mounted via app.route()
|
|
130
|
+
if (honoModel.mounts.some((m) => m.child_var === symbol.name))
|
|
131
|
+
return true;
|
|
132
|
+
// The root Hono app variable itself
|
|
133
|
+
if (honoModel.app_variables[symbol.name])
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
24
137
|
if (frameworks.has("nextjs")) {
|
|
25
138
|
if (NEXT_ROUTE_FILE.test(symbol.file) && NEXT_ROUTE_METHODS.test(symbol.name))
|
|
26
139
|
return true;
|
|
@@ -30,6 +143,40 @@ export function isFrameworkEntryPoint(symbol, frameworks) {
|
|
|
30
143
|
return true;
|
|
31
144
|
if (NEXT_APP_FILE.test(symbol.file) && NEXT_APP_METADATA_FUNCTIONS.test(symbol.name))
|
|
32
145
|
return true;
|
|
146
|
+
if (NEXT_APP_FILE.test(symbol.file) && NEXT_CONFIG_EXPORTS.test(symbol.name))
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
if (frameworks.has("nestjs")) {
|
|
150
|
+
if (NESTJS_LIFECYCLE.test(symbol.name))
|
|
151
|
+
return true;
|
|
152
|
+
if (NESTJS_ENTRY_FILE.test(symbol.file))
|
|
153
|
+
return true;
|
|
154
|
+
if (NESTJS_MAIN_FILE.test(symbol.file) && symbol.name === "bootstrap")
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
if (frameworks.has("astro")) {
|
|
158
|
+
if (ASTRO_PAGES_FILE.test(symbol.file))
|
|
159
|
+
return true;
|
|
160
|
+
if (ASTRO_ENTRY_SYMBOLS.test(symbol.name))
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
// React route/layout components: any default export from a routed file
|
|
164
|
+
// (pages/, app/, or routes/) is an entry point — the framework renders it
|
|
165
|
+
// based on file path, not via explicit import. Without this, find_dead_code
|
|
166
|
+
// flags them as unused.
|
|
167
|
+
if (frameworks.has("react") || frameworks.has("nextjs")) {
|
|
168
|
+
if (REACT_SPECIAL_FILE.test(symbol.file))
|
|
169
|
+
return true;
|
|
170
|
+
if (REACT_ROUTE_FILE.test(symbol.file))
|
|
171
|
+
return true;
|
|
172
|
+
if (REMIX_ROUTE_FILE.test(symbol.file))
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
// RSC boundary: "use client" / "use server" directive → framework entry point
|
|
176
|
+
if (symbol.source && (frameworks.has("react") || frameworks.has("nextjs"))) {
|
|
177
|
+
const head = symbol.source.slice(0, 200);
|
|
178
|
+
if (/['"]use client['"]/.test(head) || /['"]use server['"]/.test(head))
|
|
179
|
+
return true;
|
|
33
180
|
}
|
|
34
181
|
return false;
|
|
35
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-detect.js","sourceRoot":"","sources":["../../src/utils/framework-detect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"framework-detect.js","sourceRoot":"","sources":["../../src/utils/framework-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,9 @@ import type { CodeIndex } from "../types.js";
|
|
|
2
2
|
export interface ImportEdge {
|
|
3
3
|
from: string;
|
|
4
4
|
to: string;
|
|
5
|
+
type_only?: boolean;
|
|
6
|
+
star_import?: boolean;
|
|
7
|
+
raw?: string;
|
|
5
8
|
}
|
|
6
9
|
/**
|
|
7
10
|
* Extract import paths from a source string.
|
|
@@ -13,6 +16,43 @@ export declare function extractImports(source: string): string[];
|
|
|
13
16
|
* Resolves "./foo" and "../bar" relative to the importer's directory.
|
|
14
17
|
*/
|
|
15
18
|
export declare function resolveImportPath(importerFile: string, importPath: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Extract PHP `use` statements (FQCN imports).
|
|
21
|
+
* Returns fully-qualified class/namespace names without the leading backslash.
|
|
22
|
+
* These are NOT file paths — they require PSR-4 resolution against composer.json.
|
|
23
|
+
*
|
|
24
|
+
* Handles both single-FQCN and grouped forms:
|
|
25
|
+
* `use App\Models\User;`
|
|
26
|
+
* `use App\Models\User as U;`
|
|
27
|
+
* `use App\Models\{User, Post, Comment};`
|
|
28
|
+
* `use App\{Models\User, Services\Auth as A};`
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractPhpUseStatements(source: string): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Extract Kotlin `import` statements (fully-qualified names).
|
|
33
|
+
* Returns dot-separated package + class names. Wildcards (`com.example.*`) are
|
|
34
|
+
* preserved as-is. These are NOT file paths — they require heuristic resolution
|
|
35
|
+
* against the source root (usually `src/main/kotlin`, `src/commonMain/kotlin`, etc.).
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractKotlinImports(source: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Heuristically resolve a Kotlin fully-qualified import to an indexed file.
|
|
40
|
+
* Strategy: match the last segment of the FQN (the simple class name) against
|
|
41
|
+
* file basenames. For `com.example.service.UserService`, tries to find a file
|
|
42
|
+
* whose basename (without .kt/.kts) is `UserService` AND whose path contains
|
|
43
|
+
* the package path `com/example/service`.
|
|
44
|
+
*
|
|
45
|
+
* Returns the matched file path or null if no match.
|
|
46
|
+
*
|
|
47
|
+
* Limitations: single-repo heuristic. Doesn't handle wildcard imports
|
|
48
|
+
* (`com.example.*`) or multi-module setups with complex source roots.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveKotlinImport(fqName: string, kotlinFilesByBasename: Map<string, string[]>): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Build a lookup map from Kotlin file basenames (without extension) to file paths.
|
|
53
|
+
* Used by resolveKotlinImport for heuristic FQN resolution.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildKotlinFilesByBasename(index: CodeIndex): Map<string, string[]>;
|
|
16
56
|
/**
|
|
17
57
|
* Build normalized path map for matching imports to indexed files.
|
|
18
58
|
*/
|
|
@@ -20,6 +60,8 @@ export declare function buildNormalizedPathMap(index: CodeIndex): Map<string, st
|
|
|
20
60
|
/**
|
|
21
61
|
* Collect all import edges between files in the index.
|
|
22
62
|
* Reads file source from disk to extract import statements.
|
|
63
|
+
* Handles JS/TS/PHP relative imports AND Kotlin fully-qualified imports
|
|
64
|
+
* (via heuristic basename + package-path matching).
|
|
23
65
|
*/
|
|
24
66
|
export declare function collectImportEdges(index: CodeIndex, fileFilter?: Set<string>): Promise<ImportEdge[]>;
|
|
25
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-graph.d.ts","sourceRoot":"","sources":["../../src/utils/import-graph.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"import-graph.d.ts","sourceRoot":"","sources":["../../src/utils/import-graph.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAkCD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAevD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAoBlF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BhE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC3C,MAAM,GAAG,IAAI,CA8Bf;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAelF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc5E;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC,CAoIvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAYlF"}
|