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,447 @@
|
|
|
1
|
+
/** Unwrap a tree-sitter string node (e.g. `"foo"`, `'foo'`, `` `foo` ``) to its literal content, or null. */
|
|
2
|
+
export function readStringLiteral(node) {
|
|
3
|
+
if (!node)
|
|
4
|
+
return null;
|
|
5
|
+
if (node.type === "string") {
|
|
6
|
+
// Look for string_fragment child first (quoted string)
|
|
7
|
+
const frag = node.namedChildren.find((c) => c.type === "string_fragment");
|
|
8
|
+
if (frag)
|
|
9
|
+
return frag.text;
|
|
10
|
+
const raw = node.text;
|
|
11
|
+
if (raw.length >= 2)
|
|
12
|
+
return raw.slice(1, -1);
|
|
13
|
+
return raw;
|
|
14
|
+
}
|
|
15
|
+
if (node.type === "template_string") {
|
|
16
|
+
// Only accept fully-literal template strings (no substitutions)
|
|
17
|
+
const hasSubs = node.namedChildren.some((c) => c.type === "template_substitution");
|
|
18
|
+
if (hasSubs)
|
|
19
|
+
return null;
|
|
20
|
+
const raw = node.text;
|
|
21
|
+
if (raw.length >= 2)
|
|
22
|
+
return raw.slice(1, -1);
|
|
23
|
+
return raw;
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
/** Extract a string-literal array (e.g. `["a","b"]`) into a string[]. Returns null if any element is non-literal. */
|
|
28
|
+
function readStringArray(node) {
|
|
29
|
+
if (!node || node.type !== "array")
|
|
30
|
+
return null;
|
|
31
|
+
const out = [];
|
|
32
|
+
for (const el of node.namedChildren) {
|
|
33
|
+
const s = readStringLiteral(el);
|
|
34
|
+
if (s === null)
|
|
35
|
+
return null;
|
|
36
|
+
out.push(s);
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/** Walk an object literal node and return a map of literal key -> child value node. */
|
|
41
|
+
function readObjectPairs(node) {
|
|
42
|
+
const map = new Map();
|
|
43
|
+
if (node.type !== "object")
|
|
44
|
+
return map;
|
|
45
|
+
for (const pair of node.namedChildren) {
|
|
46
|
+
if (pair.type !== "pair")
|
|
47
|
+
continue;
|
|
48
|
+
const key = pair.childForFieldName("key") ?? pair.namedChild(0);
|
|
49
|
+
if (!key)
|
|
50
|
+
continue;
|
|
51
|
+
let keyText = null;
|
|
52
|
+
if (key.type === "property_identifier" || key.type === "identifier") {
|
|
53
|
+
keyText = key.text;
|
|
54
|
+
}
|
|
55
|
+
else if (key.type === "string") {
|
|
56
|
+
keyText = readStringLiteral(key);
|
|
57
|
+
}
|
|
58
|
+
if (!keyText)
|
|
59
|
+
continue;
|
|
60
|
+
const value = pair.childForFieldName("value") ?? pair.namedChild(1);
|
|
61
|
+
if (value)
|
|
62
|
+
map.set(keyText, value);
|
|
63
|
+
}
|
|
64
|
+
return map;
|
|
65
|
+
}
|
|
66
|
+
/** Read known metadata fields off an object-literal node into the MetadataFields shape. */
|
|
67
|
+
function readMetadataObject(obj) {
|
|
68
|
+
const out = {};
|
|
69
|
+
if (obj.type !== "object")
|
|
70
|
+
return out;
|
|
71
|
+
const pairs = readObjectPairs(obj);
|
|
72
|
+
const title = pairs.get("title");
|
|
73
|
+
if (title) {
|
|
74
|
+
const s = readStringLiteral(title);
|
|
75
|
+
if (s !== null)
|
|
76
|
+
out.title = s;
|
|
77
|
+
}
|
|
78
|
+
const description = pairs.get("description");
|
|
79
|
+
if (description) {
|
|
80
|
+
const s = readStringLiteral(description);
|
|
81
|
+
if (s !== null)
|
|
82
|
+
out.description = s;
|
|
83
|
+
}
|
|
84
|
+
const robots = pairs.get("robots");
|
|
85
|
+
if (robots) {
|
|
86
|
+
const s = readStringLiteral(robots);
|
|
87
|
+
if (s !== null)
|
|
88
|
+
out.robots = s;
|
|
89
|
+
}
|
|
90
|
+
const openGraph = pairs.get("openGraph");
|
|
91
|
+
if (openGraph && openGraph.type === "object") {
|
|
92
|
+
const ogPairs = readObjectPairs(openGraph);
|
|
93
|
+
const og = {};
|
|
94
|
+
const ogTitle = ogPairs.get("title");
|
|
95
|
+
if (ogTitle) {
|
|
96
|
+
const s = readStringLiteral(ogTitle);
|
|
97
|
+
if (s !== null)
|
|
98
|
+
og.title = s;
|
|
99
|
+
}
|
|
100
|
+
const ogDesc = ogPairs.get("description");
|
|
101
|
+
if (ogDesc) {
|
|
102
|
+
const s = readStringLiteral(ogDesc);
|
|
103
|
+
if (s !== null)
|
|
104
|
+
og.description = s;
|
|
105
|
+
}
|
|
106
|
+
const ogImages = ogPairs.get("images");
|
|
107
|
+
if (ogImages) {
|
|
108
|
+
const arr = readStringArray(ogImages);
|
|
109
|
+
if (arr)
|
|
110
|
+
og.images = arr;
|
|
111
|
+
}
|
|
112
|
+
out.openGraph = og;
|
|
113
|
+
}
|
|
114
|
+
const twitter = pairs.get("twitter");
|
|
115
|
+
if (twitter && twitter.type === "object") {
|
|
116
|
+
const tPairs = readObjectPairs(twitter);
|
|
117
|
+
const tw = {};
|
|
118
|
+
const tCard = tPairs.get("card");
|
|
119
|
+
if (tCard) {
|
|
120
|
+
const s = readStringLiteral(tCard);
|
|
121
|
+
if (s !== null)
|
|
122
|
+
tw.card = s;
|
|
123
|
+
}
|
|
124
|
+
const tTitle = tPairs.get("title");
|
|
125
|
+
if (tTitle) {
|
|
126
|
+
const s = readStringLiteral(tTitle);
|
|
127
|
+
if (s !== null)
|
|
128
|
+
tw.title = s;
|
|
129
|
+
}
|
|
130
|
+
const tDesc = tPairs.get("description");
|
|
131
|
+
if (tDesc) {
|
|
132
|
+
const s = readStringLiteral(tDesc);
|
|
133
|
+
if (s !== null)
|
|
134
|
+
tw.description = s;
|
|
135
|
+
}
|
|
136
|
+
out.twitter = tw;
|
|
137
|
+
}
|
|
138
|
+
const alternates = pairs.get("alternates");
|
|
139
|
+
if (alternates && alternates.type === "object") {
|
|
140
|
+
const aPairs = readObjectPairs(alternates);
|
|
141
|
+
const alt = {};
|
|
142
|
+
const canonical = aPairs.get("canonical");
|
|
143
|
+
if (canonical) {
|
|
144
|
+
const s = readStringLiteral(canonical);
|
|
145
|
+
if (s !== null)
|
|
146
|
+
alt.canonical = s;
|
|
147
|
+
}
|
|
148
|
+
out.alternates = alt;
|
|
149
|
+
}
|
|
150
|
+
const other = pairs.get("other");
|
|
151
|
+
if (other && other.type === "object") {
|
|
152
|
+
// Store the raw text; callers treat this as opaque "any custom fields exist" marker.
|
|
153
|
+
out.other = { _raw: other.text };
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Parse a Next.js page/layout for `metadata` or `generateMetadata` exports.
|
|
159
|
+
*
|
|
160
|
+
* Supports two shapes:
|
|
161
|
+
* - `export const metadata = { title: "...", ... }`
|
|
162
|
+
* - `export async function generateMetadata() { return { ... }; }`
|
|
163
|
+
*
|
|
164
|
+
* Returns an empty object when no metadata export is present, and sets
|
|
165
|
+
* `_non_literal: true` when the export exists but is not a parseable object
|
|
166
|
+
* literal (e.g. `export const metadata = someExternal`).
|
|
167
|
+
*/
|
|
168
|
+
export function parseMetadataExport(tree, _source) {
|
|
169
|
+
const root = tree.rootNode;
|
|
170
|
+
const exportStatements = root.descendantsOfType("export_statement");
|
|
171
|
+
// Pass 1: look for `export const metadata = ...`
|
|
172
|
+
for (const exp of exportStatements) {
|
|
173
|
+
for (const decl of exp.descendantsOfType("variable_declarator")) {
|
|
174
|
+
const name = decl.childForFieldName("name");
|
|
175
|
+
if (name?.text !== "metadata")
|
|
176
|
+
continue;
|
|
177
|
+
const value = decl.childForFieldName("value");
|
|
178
|
+
if (!value)
|
|
179
|
+
return { _non_literal: true };
|
|
180
|
+
if (value.type !== "object")
|
|
181
|
+
return { _non_literal: true };
|
|
182
|
+
return readMetadataObject(value);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Pass 2: look for `export async function generateMetadata` (or variant).
|
|
186
|
+
for (const exp of exportStatements) {
|
|
187
|
+
const fnDecl = exp.descendantsOfType("function_declaration")[0];
|
|
188
|
+
if (!fnDecl)
|
|
189
|
+
continue;
|
|
190
|
+
const fnName = fnDecl.childForFieldName("name");
|
|
191
|
+
if (fnName?.text !== "generateMetadata")
|
|
192
|
+
continue;
|
|
193
|
+
// Walk the body for a `return <object>` statement.
|
|
194
|
+
const body = fnDecl.childForFieldName("body");
|
|
195
|
+
if (!body)
|
|
196
|
+
continue;
|
|
197
|
+
const returns = body.descendantsOfType("return_statement");
|
|
198
|
+
for (const ret of returns) {
|
|
199
|
+
// Skip nested return statements belonging to inner functions.
|
|
200
|
+
// Compare by node.id because tree-sitter wrappers are not reference-stable.
|
|
201
|
+
let parent = ret.parent;
|
|
202
|
+
let inInnerFn = false;
|
|
203
|
+
while (parent && parent.id !== fnDecl.id) {
|
|
204
|
+
if (parent.type === "function_declaration" ||
|
|
205
|
+
parent.type === "arrow_function" ||
|
|
206
|
+
parent.type === "function_expression" ||
|
|
207
|
+
parent.type === "method_definition") {
|
|
208
|
+
inInnerFn = true;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
parent = parent.parent;
|
|
212
|
+
}
|
|
213
|
+
if (inInnerFn)
|
|
214
|
+
continue;
|
|
215
|
+
const retValue = ret.namedChildren[0];
|
|
216
|
+
if (!retValue)
|
|
217
|
+
continue;
|
|
218
|
+
// The returned expression may be wrapped in parentheses: `return ({ ... })`
|
|
219
|
+
const unwrap = retValue.type === "parenthesized_expression"
|
|
220
|
+
? retValue.namedChildren[0]
|
|
221
|
+
: retValue;
|
|
222
|
+
if (!unwrap)
|
|
223
|
+
continue;
|
|
224
|
+
if (unwrap.type === "object") {
|
|
225
|
+
return readMetadataObject(unwrap);
|
|
226
|
+
}
|
|
227
|
+
// Non-literal return → flag
|
|
228
|
+
return { _non_literal: true };
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return {};
|
|
232
|
+
}
|
|
233
|
+
/** Extract the string-literal or number-literal value of a single pair inside an object node. */
|
|
234
|
+
function readPairValue(obj, key) {
|
|
235
|
+
if (obj.type !== "object")
|
|
236
|
+
return null;
|
|
237
|
+
const pairs = readObjectPairs(obj);
|
|
238
|
+
return pairs.get(key) ?? null;
|
|
239
|
+
}
|
|
240
|
+
function parseCacheOption(optsNode) {
|
|
241
|
+
if (!optsNode || optsNode.type !== "object")
|
|
242
|
+
return null;
|
|
243
|
+
// cache: 'no-store' | 'force-cache' | 'default' | ...
|
|
244
|
+
const cacheVal = readPairValue(optsNode, "cache");
|
|
245
|
+
if (cacheVal) {
|
|
246
|
+
const s = readStringLiteral(cacheVal);
|
|
247
|
+
if (s)
|
|
248
|
+
return s;
|
|
249
|
+
}
|
|
250
|
+
// next: { revalidate: <number> }
|
|
251
|
+
const nextVal = readPairValue(optsNode, "next");
|
|
252
|
+
if (nextVal && nextVal.type === "object") {
|
|
253
|
+
const rev = readPairValue(nextVal, "revalidate");
|
|
254
|
+
if (rev) {
|
|
255
|
+
if (rev.type === "number")
|
|
256
|
+
return `isr-${rev.text}`;
|
|
257
|
+
// Fallback: accept negative/parenthesized numeric text
|
|
258
|
+
const text = rev.text;
|
|
259
|
+
if (/^-?\d+$/.test(text))
|
|
260
|
+
return `isr-${text}`;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Collect the enclosing `statement_block` id of a node (for grouping awaits by scope).
|
|
267
|
+
*/
|
|
268
|
+
function enclosingBlockId(node) {
|
|
269
|
+
let cur = node.parent;
|
|
270
|
+
while (cur) {
|
|
271
|
+
if (cur.type === "statement_block")
|
|
272
|
+
return cur.id;
|
|
273
|
+
cur = cur.parent;
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Walk upward from `node` to find the containing `await_expression`, or null.
|
|
279
|
+
*/
|
|
280
|
+
function enclosingAwait(node) {
|
|
281
|
+
let cur = node.parent;
|
|
282
|
+
while (cur) {
|
|
283
|
+
if (cur.type === "await_expression")
|
|
284
|
+
return cur;
|
|
285
|
+
if (cur.type === "statement_block" ||
|
|
286
|
+
cur.type === "program" ||
|
|
287
|
+
cur.type === "function_declaration" ||
|
|
288
|
+
cur.type === "arrow_function" ||
|
|
289
|
+
cur.type === "function_expression") {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
cur = cur.parent;
|
|
293
|
+
}
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Collect the identifiers bound by a single statement (`const x = …`, `const {a,b} = …`).
|
|
298
|
+
* Returns an empty set for non-declarations.
|
|
299
|
+
*/
|
|
300
|
+
function identifiersBoundByStatement(stmt) {
|
|
301
|
+
const out = new Set();
|
|
302
|
+
if (stmt.type !== "lexical_declaration" && stmt.type !== "variable_declaration") {
|
|
303
|
+
return out;
|
|
304
|
+
}
|
|
305
|
+
for (const decl of stmt.namedChildren) {
|
|
306
|
+
if (decl.type !== "variable_declarator")
|
|
307
|
+
continue;
|
|
308
|
+
const name = decl.childForFieldName("name");
|
|
309
|
+
if (!name)
|
|
310
|
+
continue;
|
|
311
|
+
if (name.type === "identifier") {
|
|
312
|
+
out.add(name.text);
|
|
313
|
+
}
|
|
314
|
+
else if (name.type === "object_pattern" || name.type === "array_pattern") {
|
|
315
|
+
for (const id of name.descendantsOfType("identifier")) {
|
|
316
|
+
out.add(id.text);
|
|
317
|
+
}
|
|
318
|
+
for (const id of name.descendantsOfType("shorthand_property_identifier_pattern")) {
|
|
319
|
+
out.add(id.text);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return out;
|
|
324
|
+
}
|
|
325
|
+
/** Collect all identifier references inside a subtree. */
|
|
326
|
+
function collectIdentifierRefs(node) {
|
|
327
|
+
const out = new Set();
|
|
328
|
+
for (const id of node.descendantsOfType("identifier")) {
|
|
329
|
+
out.add(id.text);
|
|
330
|
+
}
|
|
331
|
+
return out;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Read all fetch/cookies/headers/unstable_noStore calls out of a tree.
|
|
335
|
+
*
|
|
336
|
+
* `isSequential` is set when two awaited fetches live in the same statement_block
|
|
337
|
+
* with no identifier overlap between the earlier statement's bindings and the
|
|
338
|
+
* later statement's argument expression. Callers wanting waterfall detection
|
|
339
|
+
* use this flag directly.
|
|
340
|
+
*
|
|
341
|
+
* `// sequential intentional` comments on the line preceding an await suppress
|
|
342
|
+
* the flag for that await.
|
|
343
|
+
*/
|
|
344
|
+
export function extractFetchCalls(tree, source) {
|
|
345
|
+
const root = tree.rootNode;
|
|
346
|
+
const out = [];
|
|
347
|
+
// Lines with `// sequential intentional` opt-out comment
|
|
348
|
+
const optOutLines = new Set();
|
|
349
|
+
const lines = source.split("\n");
|
|
350
|
+
for (let i = 0; i < lines.length; i++) {
|
|
351
|
+
if (/\/\/\s*sequential intentional/i.test(lines[i])) {
|
|
352
|
+
// The opt-out comment applies to the NEXT line
|
|
353
|
+
optOutLines.add(i + 2); // next source line (1-indexed)
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
const raws = [];
|
|
357
|
+
for (const call of root.descendantsOfType("call_expression")) {
|
|
358
|
+
const fn = call.childForFieldName("function") ?? call.namedChild(0);
|
|
359
|
+
if (!fn || fn.type !== "identifier")
|
|
360
|
+
continue;
|
|
361
|
+
const name = fn.text;
|
|
362
|
+
if (name !== "fetch" &&
|
|
363
|
+
name !== "cookies" &&
|
|
364
|
+
name !== "headers" &&
|
|
365
|
+
name !== "unstable_noStore") {
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
const args = call.childForFieldName("arguments") ?? call.namedChild(1);
|
|
369
|
+
let cacheOption = null;
|
|
370
|
+
if (name === "fetch" && args) {
|
|
371
|
+
const argChildren = args.namedChildren;
|
|
372
|
+
if (argChildren.length >= 2) {
|
|
373
|
+
cacheOption = parseCacheOption(argChildren[1] ?? null);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
// Find the enclosing top-level statement (a direct child of the block)
|
|
377
|
+
let containingStmt = null;
|
|
378
|
+
const blockId = enclosingBlockId(call);
|
|
379
|
+
if (blockId !== null) {
|
|
380
|
+
let p = call;
|
|
381
|
+
while (p && p.parent && p.parent.type !== "statement_block") {
|
|
382
|
+
p = p.parent;
|
|
383
|
+
}
|
|
384
|
+
containingStmt = p;
|
|
385
|
+
}
|
|
386
|
+
raws.push({
|
|
387
|
+
callee: name,
|
|
388
|
+
call,
|
|
389
|
+
line: call.startPosition.row + 1,
|
|
390
|
+
blockId,
|
|
391
|
+
containingStmt,
|
|
392
|
+
awaitNode: enclosingAwait(call),
|
|
393
|
+
cacheOption,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
// Pass 2: compute isSequential per raw call
|
|
397
|
+
for (let i = 0; i < raws.length; i++) {
|
|
398
|
+
const cur = raws[i];
|
|
399
|
+
let isSequential = false;
|
|
400
|
+
if (cur.awaitNode && cur.blockId !== null && cur.containingStmt) {
|
|
401
|
+
// Find any earlier raw in same block, earlier position, also awaited
|
|
402
|
+
for (let j = 0; j < i; j++) {
|
|
403
|
+
const prev = raws[j];
|
|
404
|
+
if (prev.blockId !== cur.blockId)
|
|
405
|
+
continue;
|
|
406
|
+
if (!prev.awaitNode || !prev.containingStmt)
|
|
407
|
+
continue;
|
|
408
|
+
if (prev.containingStmt.endIndex >= cur.containingStmt.startIndex)
|
|
409
|
+
continue;
|
|
410
|
+
// Dependent check: do cur's argument refs overlap prev's bound identifiers?
|
|
411
|
+
const prevBindings = identifiersBoundByStatement(prev.containingStmt);
|
|
412
|
+
if (prevBindings.size > 0) {
|
|
413
|
+
const curArgs = cur.call.childForFieldName("arguments") ?? cur.call.namedChild(1);
|
|
414
|
+
if (curArgs) {
|
|
415
|
+
const refs = collectIdentifierRefs(curArgs);
|
|
416
|
+
let shared = false;
|
|
417
|
+
for (const r of refs) {
|
|
418
|
+
if (prevBindings.has(r)) {
|
|
419
|
+
shared = true;
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if (shared)
|
|
424
|
+
continue; // dependent → not sequential
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
isSequential = true;
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
if (optOutLines.has(cur.line))
|
|
432
|
+
isSequential = false;
|
|
433
|
+
const isSsrTrigger = cur.callee === "cookies" ||
|
|
434
|
+
cur.callee === "headers" ||
|
|
435
|
+
cur.callee === "unstable_noStore" ||
|
|
436
|
+
(cur.callee === "fetch" && cur.cacheOption === "no-store");
|
|
437
|
+
out.push({
|
|
438
|
+
callee: cur.callee,
|
|
439
|
+
line: cur.line,
|
|
440
|
+
cacheOption: cur.cacheOption,
|
|
441
|
+
isSequential,
|
|
442
|
+
isSsrTrigger,
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
return out;
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=nextjs-metadata-readers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-metadata-readers.js","sourceRoot":"","sources":["../../src/utils/nextjs-metadata-readers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Maximum bytes to read when scanning for a directive. */
|
|
2
|
+
export declare const DIRECTIVE_WINDOW = 512;
|
|
3
|
+
/**
|
|
4
|
+
* Scan a file's first 512 bytes for a `"use client"` or `"use server"` directive.
|
|
5
|
+
* Returns the directive string or `null` if not found.
|
|
6
|
+
*/
|
|
7
|
+
export declare function scanDirective(filePath: string): Promise<"use client" | "use server" | null>;
|
|
8
|
+
/**
|
|
9
|
+
* Derive a URL path from a file path relative to the repo root.
|
|
10
|
+
* Handles App Router route groups, dynamic segments, and Pages Router conventions.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deriveUrlPath(filePath: string, router: "app" | "pages"): string;
|
|
13
|
+
/**
|
|
14
|
+
* Discover Next.js workspaces in a monorepo by finding `next.config.*` files.
|
|
15
|
+
* Returns empty array for single-app projects (config at root only) or no config.
|
|
16
|
+
*/
|
|
17
|
+
export declare function discoverWorkspaces(repoRoot: string): Promise<{
|
|
18
|
+
root: string;
|
|
19
|
+
configFile: string;
|
|
20
|
+
}[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Walk up from `filePath` through ancestor directories collecting layout files.
|
|
23
|
+
* Returns relative paths from root to leaf order. Stops at the `app/` boundary.
|
|
24
|
+
* If `filePath` is itself a layout, it is excluded from the chain.
|
|
25
|
+
*/
|
|
26
|
+
export declare function computeLayoutChain(filePath: string, repoRoot: string): Promise<string[]>;
|
|
27
|
+
export interface MiddlewareTraceResult {
|
|
28
|
+
file: string;
|
|
29
|
+
matchers: string[];
|
|
30
|
+
applies: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Find and analyze middleware.ts for the given repo root.
|
|
34
|
+
* Returns null if no middleware file exists.
|
|
35
|
+
* Uses tree-sitter AST to extract matcher config.
|
|
36
|
+
*/
|
|
37
|
+
export declare function traceMiddleware(repoRoot: string, urlPath: string): Promise<MiddlewareTraceResult | null>;
|
|
38
|
+
export { parseMetadataExport, extractFetchCalls } from "./nextjs-metadata-readers.js";
|
|
39
|
+
export type { MetadataFields, FetchCall, FetchCallee } from "./nextjs-metadata-readers.js";
|
|
40
|
+
export { extractZodSchema, extractLinkHrefs } from "./nextjs-ast-readers.js";
|
|
41
|
+
export type { ZodShape, ZodFieldType, LinkRef, LinkRefKind } from "./nextjs-ast-readers.js";
|
|
42
|
+
//# sourceMappingURL=nextjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/utils/nextjs.ts"],"names":[],"mappings":"AAKA,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAmCpC;;;GAGG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,CAU7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CA0B/E;AAKD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAgCjD;AAID;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCnB;AA2BD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAsFvC;AAGD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtF,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
|