distill-mcp 0.6.0-beta
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/bin/cli.js +133 -0
- package/dist/analytics/session-tracker.d.ts +74 -0
- package/dist/analytics/session-tracker.d.ts.map +1 -0
- package/dist/analytics/session-tracker.js +123 -0
- package/dist/ast/benchmark.test.d.ts +7 -0
- package/dist/ast/benchmark.test.d.ts.map +1 -0
- package/dist/ast/benchmark.test.js +175 -0
- package/dist/ast/go/index.d.ts +9 -0
- package/dist/ast/go/index.d.ts.map +1 -0
- package/dist/ast/go/index.js +8 -0
- package/dist/ast/go/parser.d.ts +31 -0
- package/dist/ast/go/parser.d.ts.map +1 -0
- package/dist/ast/go/parser.js +428 -0
- package/dist/ast/go/parser.test.d.ts +5 -0
- package/dist/ast/go/parser.test.d.ts.map +1 -0
- package/dist/ast/go/parser.test.js +241 -0
- package/dist/ast/go/queries.d.ts +51 -0
- package/dist/ast/go/queries.d.ts.map +1 -0
- package/dist/ast/go/queries.js +114 -0
- package/dist/ast/go/utils.d.ts +66 -0
- package/dist/ast/go/utils.d.ts.map +1 -0
- package/dist/ast/go/utils.js +140 -0
- package/dist/ast/index.d.ts +39 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +245 -0
- package/dist/ast/php/index.d.ts +9 -0
- package/dist/ast/php/index.d.ts.map +1 -0
- package/dist/ast/php/index.js +8 -0
- package/dist/ast/php/parser.d.ts +31 -0
- package/dist/ast/php/parser.d.ts.map +1 -0
- package/dist/ast/php/parser.js +388 -0
- package/dist/ast/php/parser.test.d.ts +5 -0
- package/dist/ast/php/parser.test.d.ts.map +1 -0
- package/dist/ast/php/parser.test.js +328 -0
- package/dist/ast/php/queries.d.ts +61 -0
- package/dist/ast/php/queries.d.ts.map +1 -0
- package/dist/ast/php/queries.js +117 -0
- package/dist/ast/php/utils.d.ts +83 -0
- package/dist/ast/php/utils.d.ts.map +1 -0
- package/dist/ast/php/utils.js +246 -0
- package/dist/ast/python/index.d.ts +9 -0
- package/dist/ast/python/index.d.ts.map +1 -0
- package/dist/ast/python/index.js +8 -0
- package/dist/ast/python/parser.d.ts +32 -0
- package/dist/ast/python/parser.d.ts.map +1 -0
- package/dist/ast/python/parser.js +422 -0
- package/dist/ast/python/parser.test.d.ts +5 -0
- package/dist/ast/python/parser.test.d.ts.map +1 -0
- package/dist/ast/python/parser.test.js +186 -0
- package/dist/ast/python/queries.d.ts +73 -0
- package/dist/ast/python/queries.d.ts.map +1 -0
- package/dist/ast/python/queries.js +137 -0
- package/dist/ast/python/utils.d.ts +63 -0
- package/dist/ast/python/utils.d.ts.map +1 -0
- package/dist/ast/python/utils.js +159 -0
- package/dist/ast/quick-scan.d.ts +40 -0
- package/dist/ast/quick-scan.d.ts.map +1 -0
- package/dist/ast/quick-scan.js +287 -0
- package/dist/ast/rust/index.d.ts +9 -0
- package/dist/ast/rust/index.d.ts.map +1 -0
- package/dist/ast/rust/index.js +8 -0
- package/dist/ast/rust/parser.d.ts +31 -0
- package/dist/ast/rust/parser.d.ts.map +1 -0
- package/dist/ast/rust/parser.js +416 -0
- package/dist/ast/rust/parser.test.d.ts +5 -0
- package/dist/ast/rust/parser.test.d.ts.map +1 -0
- package/dist/ast/rust/parser.test.js +329 -0
- package/dist/ast/rust/queries.d.ts +66 -0
- package/dist/ast/rust/queries.d.ts.map +1 -0
- package/dist/ast/rust/queries.js +132 -0
- package/dist/ast/rust/utils.d.ts +91 -0
- package/dist/ast/rust/utils.d.ts.map +1 -0
- package/dist/ast/rust/utils.js +254 -0
- package/dist/ast/swift/index.d.ts +10 -0
- package/dist/ast/swift/index.d.ts.map +1 -0
- package/dist/ast/swift/index.js +8 -0
- package/dist/ast/swift/parser.d.ts +31 -0
- package/dist/ast/swift/parser.d.ts.map +1 -0
- package/dist/ast/swift/parser.js +554 -0
- package/dist/ast/swift/parser.test.d.ts +5 -0
- package/dist/ast/swift/parser.test.d.ts.map +1 -0
- package/dist/ast/swift/parser.test.js +398 -0
- package/dist/ast/swift/queries.d.ts +71 -0
- package/dist/ast/swift/queries.d.ts.map +1 -0
- package/dist/ast/swift/queries.js +137 -0
- package/dist/ast/swift/utils.d.ts +94 -0
- package/dist/ast/swift/utils.d.ts.map +1 -0
- package/dist/ast/swift/utils.js +411 -0
- package/dist/ast/types.d.ts +96 -0
- package/dist/ast/types.d.ts.map +1 -0
- package/dist/ast/types.js +21 -0
- package/dist/ast/typescript.d.ts +24 -0
- package/dist/ast/typescript.d.ts.map +1 -0
- package/dist/ast/typescript.js +357 -0
- package/dist/cache/file-hash.d.ts +33 -0
- package/dist/cache/file-hash.d.ts.map +1 -0
- package/dist/cache/file-hash.js +59 -0
- package/dist/cache/index.d.ts +9 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +8 -0
- package/dist/cache/smart-cache.d.ts +68 -0
- package/dist/cache/smart-cache.d.ts.map +1 -0
- package/dist/cache/smart-cache.js +266 -0
- package/dist/cache/types.d.ts +102 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +6 -0
- package/dist/cli/analyze.d.ts +43 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +250 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +127 -0
- package/dist/cli/hooks.d.ts +14 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +229 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/setup.d.ts +10 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +117 -0
- package/dist/cli/utils.d.ts +30 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +116 -0
- package/dist/compressors/config.d.ts +9 -0
- package/dist/compressors/config.d.ts.map +1 -0
- package/dist/compressors/config.js +183 -0
- package/dist/compressors/conversation.d.ts +109 -0
- package/dist/compressors/conversation.d.ts.map +1 -0
- package/dist/compressors/conversation.js +404 -0
- package/dist/compressors/diff.d.ts +35 -0
- package/dist/compressors/diff.d.ts.map +1 -0
- package/dist/compressors/diff.js +389 -0
- package/dist/compressors/generic.d.ts +9 -0
- package/dist/compressors/generic.d.ts.map +1 -0
- package/dist/compressors/generic.js +188 -0
- package/dist/compressors/index.d.ts +31 -0
- package/dist/compressors/index.d.ts.map +1 -0
- package/dist/compressors/index.js +82 -0
- package/dist/compressors/logs.d.ts +9 -0
- package/dist/compressors/logs.d.ts.map +1 -0
- package/dist/compressors/logs.js +245 -0
- package/dist/compressors/multifile.d.ts +106 -0
- package/dist/compressors/multifile.d.ts.map +1 -0
- package/dist/compressors/multifile.js +498 -0
- package/dist/compressors/semantic.d.ts +33 -0
- package/dist/compressors/semantic.d.ts.map +1 -0
- package/dist/compressors/semantic.js +233 -0
- package/dist/compressors/stacktrace.d.ts +9 -0
- package/dist/compressors/stacktrace.d.ts.map +1 -0
- package/dist/compressors/stacktrace.js +259 -0
- package/dist/compressors/types.d.ts +146 -0
- package/dist/compressors/types.d.ts.map +1 -0
- package/dist/compressors/types.js +6 -0
- package/dist/config/output-config.d.ts +56 -0
- package/dist/config/output-config.d.ts.map +1 -0
- package/dist/config/output-config.js +78 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/middleware/chain.d.ts +49 -0
- package/dist/middleware/chain.d.ts.map +1 -0
- package/dist/middleware/chain.js +126 -0
- package/dist/middleware/index.d.ts +4 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +3 -0
- package/dist/middleware/logging.d.ts +8 -0
- package/dist/middleware/logging.d.ts.map +1 -0
- package/dist/middleware/logging.js +71 -0
- package/dist/middleware/types.d.ts +58 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +7 -0
- package/dist/parsers/eslint.d.ts +8 -0
- package/dist/parsers/eslint.d.ts.map +1 -0
- package/dist/parsers/eslint.js +132 -0
- package/dist/parsers/generic.d.ts +8 -0
- package/dist/parsers/generic.d.ts.map +1 -0
- package/dist/parsers/generic.js +234 -0
- package/dist/parsers/index.d.ts +34 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +216 -0
- package/dist/parsers/types.d.ts +84 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +6 -0
- package/dist/parsers/typescript.d.ts +8 -0
- package/dist/parsers/typescript.d.ts.map +1 -0
- package/dist/parsers/typescript.js +107 -0
- package/dist/pipelines/definitions.d.ts +50 -0
- package/dist/pipelines/definitions.d.ts.map +1 -0
- package/dist/pipelines/definitions.js +206 -0
- package/dist/sandbox/executor.d.ts +12 -0
- package/dist/sandbox/executor.d.ts.map +1 -0
- package/dist/sandbox/executor.js +191 -0
- package/dist/sandbox/index.d.ts +11 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +9 -0
- package/dist/sandbox/sandbox.test.d.ts +7 -0
- package/dist/sandbox/sandbox.test.d.ts.map +1 -0
- package/dist/sandbox/sandbox.test.js +202 -0
- package/dist/sandbox/sdk/analyze.d.ts +36 -0
- package/dist/sandbox/sdk/analyze.d.ts.map +1 -0
- package/dist/sandbox/sdk/analyze.js +413 -0
- package/dist/sandbox/sdk/analyze.test.d.ts +7 -0
- package/dist/sandbox/sdk/analyze.test.d.ts.map +1 -0
- package/dist/sandbox/sdk/analyze.test.js +191 -0
- package/dist/sandbox/sdk/code.d.ts +20 -0
- package/dist/sandbox/sdk/code.d.ts.map +1 -0
- package/dist/sandbox/sdk/code.js +104 -0
- package/dist/sandbox/sdk/compress.d.ts +23 -0
- package/dist/sandbox/sdk/compress.d.ts.map +1 -0
- package/dist/sandbox/sdk/compress.js +107 -0
- package/dist/sandbox/sdk/conversation.d.ts +148 -0
- package/dist/sandbox/sdk/conversation.d.ts.map +1 -0
- package/dist/sandbox/sdk/conversation.js +177 -0
- package/dist/sandbox/sdk/files.d.ts +29 -0
- package/dist/sandbox/sdk/files.d.ts.map +1 -0
- package/dist/sandbox/sdk/files.js +41 -0
- package/dist/sandbox/sdk/git.d.ts +37 -0
- package/dist/sandbox/sdk/git.d.ts.map +1 -0
- package/dist/sandbox/sdk/git.js +313 -0
- package/dist/sandbox/sdk/git.test.d.ts +8 -0
- package/dist/sandbox/sdk/git.test.d.ts.map +1 -0
- package/dist/sandbox/sdk/git.test.js +160 -0
- package/dist/sandbox/sdk/index.d.ts +16 -0
- package/dist/sandbox/sdk/index.d.ts.map +1 -0
- package/dist/sandbox/sdk/index.js +15 -0
- package/dist/sandbox/sdk/multifile.d.ts +63 -0
- package/dist/sandbox/sdk/multifile.d.ts.map +1 -0
- package/dist/sandbox/sdk/multifile.js +130 -0
- package/dist/sandbox/sdk/pipeline.d.ts +16 -0
- package/dist/sandbox/sdk/pipeline.d.ts.map +1 -0
- package/dist/sandbox/sdk/pipeline.js +454 -0
- package/dist/sandbox/sdk/pipeline.test.d.ts +7 -0
- package/dist/sandbox/sdk/pipeline.test.d.ts.map +1 -0
- package/dist/sandbox/sdk/pipeline.test.js +197 -0
- package/dist/sandbox/sdk/search.d.ts +36 -0
- package/dist/sandbox/sdk/search.d.ts.map +1 -0
- package/dist/sandbox/sdk/search.js +338 -0
- package/dist/sandbox/sdk/search.test.d.ts +7 -0
- package/dist/sandbox/sdk/search.test.d.ts.map +1 -0
- package/dist/sandbox/sdk/search.test.js +183 -0
- package/dist/sandbox/sdk/utils.d.ts +18 -0
- package/dist/sandbox/sdk/utils.d.ts.map +1 -0
- package/dist/sandbox/sdk/utils.js +24 -0
- package/dist/sandbox/security/code-analyzer.d.ts +15 -0
- package/dist/sandbox/security/code-analyzer.d.ts.map +1 -0
- package/dist/sandbox/security/code-analyzer.js +87 -0
- package/dist/sandbox/security/index.d.ts +6 -0
- package/dist/sandbox/security/index.d.ts.map +1 -0
- package/dist/sandbox/security/index.js +5 -0
- package/dist/sandbox/security/path-validator.d.ts +23 -0
- package/dist/sandbox/security/path-validator.d.ts.map +1 -0
- package/dist/sandbox/security/path-validator.js +113 -0
- package/dist/sandbox/types.d.ts +577 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +14 -0
- package/dist/server.d.ts +36 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +133 -0
- package/dist/summarizers/build-logs.d.ts +11 -0
- package/dist/summarizers/build-logs.d.ts.map +1 -0
- package/dist/summarizers/build-logs.js +234 -0
- package/dist/summarizers/generic.d.ts +11 -0
- package/dist/summarizers/generic.d.ts.map +1 -0
- package/dist/summarizers/generic.js +93 -0
- package/dist/summarizers/index.d.ts +20 -0
- package/dist/summarizers/index.d.ts.map +1 -0
- package/dist/summarizers/index.js +43 -0
- package/dist/summarizers/server-logs.d.ts +11 -0
- package/dist/summarizers/server-logs.d.ts.map +1 -0
- package/dist/summarizers/server-logs.js +215 -0
- package/dist/summarizers/test-logs.d.ts +11 -0
- package/dist/summarizers/test-logs.d.ts.map +1 -0
- package/dist/summarizers/test-logs.js +258 -0
- package/dist/summarizers/types.d.ts +146 -0
- package/dist/summarizers/types.d.ts.map +1 -0
- package/dist/summarizers/types.js +21 -0
- package/dist/tools/analyze-build-output.d.ts +30 -0
- package/dist/tools/analyze-build-output.d.ts.map +1 -0
- package/dist/tools/analyze-build-output.js +45 -0
- package/dist/tools/analyze-context.d.ts +23 -0
- package/dist/tools/analyze-context.d.ts.map +1 -0
- package/dist/tools/analyze-context.js +78 -0
- package/dist/tools/auto-optimize.d.ts +9 -0
- package/dist/tools/auto-optimize.d.ts.map +1 -0
- package/dist/tools/auto-optimize.js +191 -0
- package/dist/tools/code-execute.d.ts +9 -0
- package/dist/tools/code-execute.d.ts.map +1 -0
- package/dist/tools/code-execute.js +84 -0
- package/dist/tools/code-skeleton.d.ts +33 -0
- package/dist/tools/code-skeleton.d.ts.map +1 -0
- package/dist/tools/code-skeleton.js +206 -0
- package/dist/tools/compress-context.d.ts +33 -0
- package/dist/tools/compress-context.d.ts.map +1 -0
- package/dist/tools/compress-context.js +64 -0
- package/dist/tools/context-budget.d.ts +43 -0
- package/dist/tools/context-budget.d.ts.map +1 -0
- package/dist/tools/context-budget.js +260 -0
- package/dist/tools/context-budget.test.d.ts +5 -0
- package/dist/tools/context-budget.test.d.ts.map +1 -0
- package/dist/tools/context-budget.test.js +219 -0
- package/dist/tools/conversation-compress.d.ts +46 -0
- package/dist/tools/conversation-compress.d.ts.map +1 -0
- package/dist/tools/conversation-compress.js +78 -0
- package/dist/tools/conversation-memory.d.ts +75 -0
- package/dist/tools/conversation-memory.d.ts.map +1 -0
- package/dist/tools/conversation-memory.js +289 -0
- package/dist/tools/deduplicate-errors.d.ts +30 -0
- package/dist/tools/deduplicate-errors.d.ts.map +1 -0
- package/dist/tools/deduplicate-errors.js +72 -0
- package/dist/tools/detect-retry-loop.d.ts +40 -0
- package/dist/tools/detect-retry-loop.d.ts.map +1 -0
- package/dist/tools/detect-retry-loop.js +212 -0
- package/dist/tools/diff-compress.d.ts +40 -0
- package/dist/tools/diff-compress.d.ts.map +1 -0
- package/dist/tools/diff-compress.js +94 -0
- package/dist/tools/discover-tools.d.ts +11 -0
- package/dist/tools/discover-tools.d.ts.map +1 -0
- package/dist/tools/discover-tools.js +163 -0
- package/dist/tools/dynamic-loader.d.ts +131 -0
- package/dist/tools/dynamic-loader.d.ts.map +1 -0
- package/dist/tools/dynamic-loader.js +378 -0
- package/dist/tools/dynamic-loader.test.d.ts +10 -0
- package/dist/tools/dynamic-loader.test.d.ts.map +1 -0
- package/dist/tools/dynamic-loader.test.js +164 -0
- package/dist/tools/lazy-mcp.d.ts +31 -0
- package/dist/tools/lazy-mcp.d.ts.map +1 -0
- package/dist/tools/lazy-mcp.js +151 -0
- package/dist/tools/lazy-mcp.test.d.ts +10 -0
- package/dist/tools/lazy-mcp.test.d.ts.map +1 -0
- package/dist/tools/lazy-mcp.test.js +172 -0
- package/dist/tools/multifile-compress.d.ts +36 -0
- package/dist/tools/multifile-compress.d.ts.map +1 -0
- package/dist/tools/multifile-compress.js +223 -0
- package/dist/tools/optimization-tips.d.ts +18 -0
- package/dist/tools/optimization-tips.d.ts.map +1 -0
- package/dist/tools/optimization-tips.js +133 -0
- package/dist/tools/registry.d.ts +70 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +169 -0
- package/dist/tools/semantic-compress.d.ts +39 -0
- package/dist/tools/semantic-compress.d.ts.map +1 -0
- package/dist/tools/semantic-compress.js +113 -0
- package/dist/tools/semantic-compress.test.d.ts +5 -0
- package/dist/tools/semantic-compress.test.d.ts.map +1 -0
- package/dist/tools/semantic-compress.test.js +182 -0
- package/dist/tools/session-stats.d.ts +34 -0
- package/dist/tools/session-stats.d.ts.map +1 -0
- package/dist/tools/session-stats.js +194 -0
- package/dist/tools/set-output-config.d.ts +38 -0
- package/dist/tools/set-output-config.d.ts.map +1 -0
- package/dist/tools/set-output-config.js +122 -0
- package/dist/tools/smart-cache-tool.d.ts +38 -0
- package/dist/tools/smart-cache-tool.d.ts.map +1 -0
- package/dist/tools/smart-cache-tool.js +224 -0
- package/dist/tools/smart-file-read.d.ts +52 -0
- package/dist/tools/smart-file-read.d.ts.map +1 -0
- package/dist/tools/smart-file-read.js +481 -0
- package/dist/tools/smart-pipeline.d.ts +40 -0
- package/dist/tools/smart-pipeline.d.ts.map +1 -0
- package/dist/tools/smart-pipeline.js +295 -0
- package/dist/tools/summarize-logs.d.ts +36 -0
- package/dist/tools/summarize-logs.d.ts.map +1 -0
- package/dist/tools/summarize-logs.js +184 -0
- package/dist/tools/token-budget.test.d.ts +11 -0
- package/dist/tools/token-budget.test.d.ts.map +1 -0
- package/dist/tools/token-budget.test.js +275 -0
- package/dist/utils/bm25.d.ts +86 -0
- package/dist/utils/bm25.d.ts.map +1 -0
- package/dist/utils/bm25.js +153 -0
- package/dist/utils/bm25.test.d.ts +5 -0
- package/dist/utils/bm25.test.d.ts.map +1 -0
- package/dist/utils/bm25.test.js +156 -0
- package/dist/utils/command-normalizer.d.ts +39 -0
- package/dist/utils/command-normalizer.d.ts.map +1 -0
- package/dist/utils/command-normalizer.js +90 -0
- package/dist/utils/content-detector.d.ts +27 -0
- package/dist/utils/content-detector.d.ts.map +1 -0
- package/dist/utils/content-detector.js +127 -0
- package/dist/utils/embeddings.d.ts +54 -0
- package/dist/utils/embeddings.d.ts.map +1 -0
- package/dist/utils/embeddings.js +97 -0
- package/dist/utils/embeddings.test.d.ts +8 -0
- package/dist/utils/embeddings.test.d.ts.map +1 -0
- package/dist/utils/embeddings.test.js +96 -0
- package/dist/utils/error-normalizer.d.ts +39 -0
- package/dist/utils/error-normalizer.d.ts.map +1 -0
- package/dist/utils/error-normalizer.js +233 -0
- package/dist/utils/hybrid-search.d.ts +79 -0
- package/dist/utils/hybrid-search.d.ts.map +1 -0
- package/dist/utils/hybrid-search.js +146 -0
- package/dist/utils/hybrid-search.test.d.ts +5 -0
- package/dist/utils/hybrid-search.test.d.ts.map +1 -0
- package/dist/utils/hybrid-search.test.js +172 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/language-detector.d.ts +27 -0
- package/dist/utils/language-detector.d.ts.map +1 -0
- package/dist/utils/language-detector.js +94 -0
- package/dist/utils/log-parser.d.ts +46 -0
- package/dist/utils/log-parser.d.ts.map +1 -0
- package/dist/utils/log-parser.js +287 -0
- package/dist/utils/output-estimator.d.ts +54 -0
- package/dist/utils/output-estimator.d.ts.map +1 -0
- package/dist/utils/output-estimator.js +119 -0
- package/dist/utils/output-estimator.test.d.ts +5 -0
- package/dist/utils/output-estimator.test.d.ts.map +1 -0
- package/dist/utils/output-estimator.test.js +115 -0
- package/dist/utils/output-similarity.d.ts +48 -0
- package/dist/utils/output-similarity.d.ts.map +1 -0
- package/dist/utils/output-similarity.js +140 -0
- package/dist/utils/project-detector.d.ts +16 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +119 -0
- package/dist/utils/segment-scorer.d.ts +99 -0
- package/dist/utils/segment-scorer.d.ts.map +1 -0
- package/dist/utils/segment-scorer.js +148 -0
- package/dist/utils/signature-grouper.d.ts +58 -0
- package/dist/utils/signature-grouper.d.ts.map +1 -0
- package/dist/utils/signature-grouper.js +185 -0
- package/dist/utils/tfidf.d.ts +45 -0
- package/dist/utils/tfidf.d.ts.map +1 -0
- package/dist/utils/tfidf.js +204 -0
- package/dist/utils/tfidf.test.d.ts +5 -0
- package/dist/utils/tfidf.test.d.ts.map +1 -0
- package/dist/utils/tfidf.test.js +115 -0
- package/dist/utils/token-counter.d.ts +35 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/dist/utils/token-counter.js +83 -0
- package/dist/utils/toon-serializer.d.ts +120 -0
- package/dist/utils/toon-serializer.d.ts.map +1 -0
- package/dist/utils/toon-serializer.js +472 -0
- package/dist/utils/toon-serializer.test.d.ts +7 -0
- package/dist/utils/toon-serializer.test.d.ts.map +1 -0
- package/dist/utils/toon-serializer.test.js +290 -0
- package/package.json +63 -0
- package/scripts/install.ps1 +133 -0
- package/scripts/install.sh +183 -0
- package/scripts/pre-commit-hook.sh +86 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP Tree-sitter Parser Tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeAll } from "vitest";
|
|
5
|
+
import { phpTreeSitterParser, parsePhpAsync, initPhpParser, } from "./parser.js";
|
|
6
|
+
// Sample PHP code for testing
|
|
7
|
+
const SAMPLE_PHP = `<?php
|
|
8
|
+
|
|
9
|
+
namespace App\\Models;
|
|
10
|
+
|
|
11
|
+
use Illuminate\\Database\\Eloquent\\Model;
|
|
12
|
+
use App\\Traits\\HasTimestamps;
|
|
13
|
+
use App\\Contracts\\UserInterface;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of users allowed
|
|
17
|
+
*/
|
|
18
|
+
const MAX_USERS = 100;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Represents a user in the system
|
|
22
|
+
*/
|
|
23
|
+
class User extends Model implements UserInterface
|
|
24
|
+
{
|
|
25
|
+
use HasTimestamps;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The user's name
|
|
29
|
+
*/
|
|
30
|
+
public string $name;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The user's email
|
|
34
|
+
*/
|
|
35
|
+
protected string $email;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The user's password hash
|
|
39
|
+
*/
|
|
40
|
+
private string $password;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Create a new user instance
|
|
44
|
+
*/
|
|
45
|
+
public function __construct(string $name, string $email)
|
|
46
|
+
{
|
|
47
|
+
$this->name = $name;
|
|
48
|
+
$this->email = $email;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get the user's greeting
|
|
53
|
+
*/
|
|
54
|
+
public function greet(): string
|
|
55
|
+
{
|
|
56
|
+
return "Hello, " . $this->name;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Check if user is admin
|
|
61
|
+
*/
|
|
62
|
+
public static function isAdmin(): bool
|
|
63
|
+
{
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Internal helper method
|
|
69
|
+
*/
|
|
70
|
+
private function hashPassword(string $password): string
|
|
71
|
+
{
|
|
72
|
+
return password_hash($password, PASSWORD_DEFAULT);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Admin user with extra permissions
|
|
78
|
+
*/
|
|
79
|
+
class AdminUser extends User
|
|
80
|
+
{
|
|
81
|
+
/**
|
|
82
|
+
* The admin's permissions
|
|
83
|
+
*/
|
|
84
|
+
protected array $permissions = [];
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Check if admin has a permission
|
|
88
|
+
*/
|
|
89
|
+
public function hasPermission(string $perm): bool
|
|
90
|
+
{
|
|
91
|
+
return in_array($perm, $this->permissions);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Interface for user-related operations
|
|
97
|
+
*/
|
|
98
|
+
interface Authenticatable
|
|
99
|
+
{
|
|
100
|
+
/**
|
|
101
|
+
* Authenticate the user
|
|
102
|
+
*/
|
|
103
|
+
public function authenticate(string $password): bool;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get the user's ID
|
|
107
|
+
*/
|
|
108
|
+
public function getId(): int;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Trait for soft deletes
|
|
113
|
+
*/
|
|
114
|
+
trait SoftDeletes
|
|
115
|
+
{
|
|
116
|
+
/**
|
|
117
|
+
* Soft delete the model
|
|
118
|
+
*/
|
|
119
|
+
public function softDelete(): void
|
|
120
|
+
{
|
|
121
|
+
$this->deleted_at = new DateTime();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Calculate the sum of numbers
|
|
127
|
+
*/
|
|
128
|
+
function calculateSum(array $numbers): int
|
|
129
|
+
{
|
|
130
|
+
return array_sum($numbers);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Private helper function
|
|
135
|
+
*/
|
|
136
|
+
function privateHelper(): void
|
|
137
|
+
{
|
|
138
|
+
// internal function
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
describe("PHP Tree-sitter Parser", () => {
|
|
142
|
+
beforeAll(async () => {
|
|
143
|
+
await initPhpParser();
|
|
144
|
+
});
|
|
145
|
+
describe("parsePhpAsync", () => {
|
|
146
|
+
it("should parse use statements correctly", async () => {
|
|
147
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
148
|
+
expect(structure.language).toBe("php");
|
|
149
|
+
expect(structure.imports.length).toBeGreaterThanOrEqual(3);
|
|
150
|
+
const importNames = structure.imports.map((i) => i.name);
|
|
151
|
+
expect(importNames).toContain("Model");
|
|
152
|
+
expect(importNames).toContain("HasTimestamps");
|
|
153
|
+
expect(importNames).toContain("UserInterface");
|
|
154
|
+
});
|
|
155
|
+
it("should parse functions correctly", async () => {
|
|
156
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
157
|
+
const funcNames = structure.functions
|
|
158
|
+
.filter((f) => f.type === "function")
|
|
159
|
+
.map((f) => f.name);
|
|
160
|
+
expect(funcNames).toContain("calculateSum");
|
|
161
|
+
expect(funcNames).toContain("privateHelper");
|
|
162
|
+
});
|
|
163
|
+
it("should parse methods correctly", async () => {
|
|
164
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
165
|
+
const methods = structure.functions.filter((f) => f.type === "method");
|
|
166
|
+
expect(methods.length).toBeGreaterThanOrEqual(5);
|
|
167
|
+
const methodNames = methods.map((m) => m.name);
|
|
168
|
+
expect(methodNames).toContain("__construct");
|
|
169
|
+
expect(methodNames).toContain("greet");
|
|
170
|
+
expect(methodNames).toContain("isAdmin");
|
|
171
|
+
expect(methodNames).toContain("hashPassword");
|
|
172
|
+
});
|
|
173
|
+
it("should track parent class for methods", async () => {
|
|
174
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
175
|
+
const greet = structure.functions.find((f) => f.name === "greet");
|
|
176
|
+
expect(greet?.parent).toBe("User");
|
|
177
|
+
const hasPermission = structure.functions.find((f) => f.name === "hasPermission");
|
|
178
|
+
expect(hasPermission?.parent).toBe("AdminUser");
|
|
179
|
+
});
|
|
180
|
+
it("should parse classes correctly", async () => {
|
|
181
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
182
|
+
expect(structure.classes.length).toBeGreaterThanOrEqual(2);
|
|
183
|
+
const classNames = structure.classes.map((c) => c.name);
|
|
184
|
+
expect(classNames).toContain("User");
|
|
185
|
+
expect(classNames).toContain("AdminUser");
|
|
186
|
+
});
|
|
187
|
+
it("should parse traits as classes", async () => {
|
|
188
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
189
|
+
const classNames = structure.classes.map((c) => c.name);
|
|
190
|
+
expect(classNames).toContain("SoftDeletes");
|
|
191
|
+
});
|
|
192
|
+
it("should parse interfaces", async () => {
|
|
193
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
194
|
+
expect(structure.interfaces.length).toBeGreaterThanOrEqual(1);
|
|
195
|
+
const interfaceNames = structure.interfaces.map((i) => i.name);
|
|
196
|
+
expect(interfaceNames).toContain("Authenticatable");
|
|
197
|
+
});
|
|
198
|
+
it("should extract PHPDoc comments", async () => {
|
|
199
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
200
|
+
const userClass = structure.classes.find((c) => c.name === "User");
|
|
201
|
+
expect(userClass?.documentation).toContain("Represents a user");
|
|
202
|
+
const calcSum = structure.functions.find((f) => f.name === "calculateSum");
|
|
203
|
+
expect(calcSum?.documentation).toContain("Calculate the sum");
|
|
204
|
+
});
|
|
205
|
+
it("should parse constants", async () => {
|
|
206
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
207
|
+
const varNames = structure.variables.map((v) => v.name);
|
|
208
|
+
expect(varNames).toContain("MAX_USERS");
|
|
209
|
+
});
|
|
210
|
+
it("should return correct line numbers", async () => {
|
|
211
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
212
|
+
const userClass = structure.classes.find((c) => c.name === "User");
|
|
213
|
+
expect(userClass?.startLine).toBeGreaterThan(0);
|
|
214
|
+
expect(userClass?.endLine).toBeGreaterThan(userClass?.startLine ?? 0);
|
|
215
|
+
});
|
|
216
|
+
it("should detect visibility", async () => {
|
|
217
|
+
const structure = await parsePhpAsync(SAMPLE_PHP);
|
|
218
|
+
const greet = structure.functions.find((f) => f.name === "greet");
|
|
219
|
+
expect(greet?.isExported).toBe(true); // public
|
|
220
|
+
const hashPassword = structure.functions.find((f) => f.name === "hashPassword");
|
|
221
|
+
expect(hashPassword?.isExported).toBe(false); // private
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
describe("LanguageParser interface", () => {
|
|
225
|
+
it("should implement parse() method", () => {
|
|
226
|
+
const structure = phpTreeSitterParser.parse(SAMPLE_PHP);
|
|
227
|
+
expect(structure).toBeDefined();
|
|
228
|
+
expect(structure.language).toBe("php");
|
|
229
|
+
});
|
|
230
|
+
it("should implement extractElement() method for functions", async () => {
|
|
231
|
+
await initPhpParser();
|
|
232
|
+
const result = phpTreeSitterParser.extractElement(SAMPLE_PHP, { type: "function", name: "calculateSum" }, { includeImports: true, includeComments: true });
|
|
233
|
+
expect(result).not.toBeNull();
|
|
234
|
+
expect(result?.content).toContain("function calculateSum");
|
|
235
|
+
expect(result?.elements[0]?.name).toBe("calculateSum");
|
|
236
|
+
});
|
|
237
|
+
it("should extract methods by name", async () => {
|
|
238
|
+
await initPhpParser();
|
|
239
|
+
const result = phpTreeSitterParser.extractElement(SAMPLE_PHP, { type: "method", name: "greet" }, { includeImports: false, includeComments: true });
|
|
240
|
+
expect(result).not.toBeNull();
|
|
241
|
+
expect(result?.content).toContain("function greet");
|
|
242
|
+
});
|
|
243
|
+
it("should extract classes by name", async () => {
|
|
244
|
+
await initPhpParser();
|
|
245
|
+
const result = phpTreeSitterParser.extractElement(SAMPLE_PHP, { type: "class", name: "User" }, { includeImports: false, includeComments: true });
|
|
246
|
+
expect(result).not.toBeNull();
|
|
247
|
+
expect(result?.content).toContain("class User");
|
|
248
|
+
});
|
|
249
|
+
it("should implement searchElements() method", async () => {
|
|
250
|
+
await initPhpParser();
|
|
251
|
+
const results = phpTreeSitterParser.searchElements(SAMPLE_PHP, "user");
|
|
252
|
+
expect(results.length).toBeGreaterThan(0);
|
|
253
|
+
const names = results.map((r) => r.name.toLowerCase());
|
|
254
|
+
expect(names.some((n) => n.includes("user"))).toBe(true);
|
|
255
|
+
});
|
|
256
|
+
it("should return null for non-existent elements", async () => {
|
|
257
|
+
await initPhpParser();
|
|
258
|
+
const result = phpTreeSitterParser.extractElement(SAMPLE_PHP, { type: "function", name: "nonExistentFunc" }, { includeImports: false, includeComments: false });
|
|
259
|
+
expect(result).toBeNull();
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe("Edge cases", () => {
|
|
263
|
+
it("should handle empty content", async () => {
|
|
264
|
+
const structure = await parsePhpAsync("<?php");
|
|
265
|
+
expect(structure.language).toBe("php");
|
|
266
|
+
expect(structure.functions).toHaveLength(0);
|
|
267
|
+
});
|
|
268
|
+
it("should handle simple use statement", async () => {
|
|
269
|
+
const code = `<?php
|
|
270
|
+
use App\\Models\\User;
|
|
271
|
+
|
|
272
|
+
function test(): void {}
|
|
273
|
+
`;
|
|
274
|
+
const structure = await parsePhpAsync(code);
|
|
275
|
+
expect(structure.imports.length).toBeGreaterThanOrEqual(1);
|
|
276
|
+
});
|
|
277
|
+
it("should handle use with alias", async () => {
|
|
278
|
+
const code = `<?php
|
|
279
|
+
use App\\Models\\User as UserModel;
|
|
280
|
+
use App\\Services\\Auth as AuthService;
|
|
281
|
+
`;
|
|
282
|
+
const structure = await parsePhpAsync(code);
|
|
283
|
+
expect(structure.imports.length).toBeGreaterThanOrEqual(2);
|
|
284
|
+
});
|
|
285
|
+
it("should handle grouped use", async () => {
|
|
286
|
+
const code = `<?php
|
|
287
|
+
use App\\Models\\{User, Post, Comment};
|
|
288
|
+
`;
|
|
289
|
+
const structure = await parsePhpAsync(code);
|
|
290
|
+
expect(structure.imports.length).toBeGreaterThanOrEqual(1);
|
|
291
|
+
});
|
|
292
|
+
it("should handle abstract classes", async () => {
|
|
293
|
+
const code = `<?php
|
|
294
|
+
abstract class BaseModel
|
|
295
|
+
{
|
|
296
|
+
abstract public function save(): void;
|
|
297
|
+
}
|
|
298
|
+
`;
|
|
299
|
+
const structure = await parsePhpAsync(code);
|
|
300
|
+
expect(structure.classes.some((c) => c.name === "BaseModel")).toBe(true);
|
|
301
|
+
});
|
|
302
|
+
it("should handle final classes", async () => {
|
|
303
|
+
const code = `<?php
|
|
304
|
+
final class FinalClass
|
|
305
|
+
{
|
|
306
|
+
public function method(): void {}
|
|
307
|
+
}
|
|
308
|
+
`;
|
|
309
|
+
const structure = await parsePhpAsync(code);
|
|
310
|
+
expect(structure.classes.some((c) => c.name === "FinalClass")).toBe(true);
|
|
311
|
+
});
|
|
312
|
+
it("should handle static methods", async () => {
|
|
313
|
+
const code = `<?php
|
|
314
|
+
class Helper
|
|
315
|
+
{
|
|
316
|
+
public static function format(string $value): string
|
|
317
|
+
{
|
|
318
|
+
return trim($value);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
`;
|
|
322
|
+
const structure = await parsePhpAsync(code);
|
|
323
|
+
const format = structure.functions.find((f) => f.name === "format");
|
|
324
|
+
expect(format).toBeDefined();
|
|
325
|
+
expect(format?.signature).toContain("static");
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
});
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP Tree-sitter Queries
|
|
3
|
+
*
|
|
4
|
+
* S-expression queries for extracting PHP code elements.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Query to find all function definitions
|
|
8
|
+
*/
|
|
9
|
+
export declare const FUNCTION_QUERY = "\n(function_definition\n name: (name) @name) @function\n";
|
|
10
|
+
/**
|
|
11
|
+
* Query to find all class declarations
|
|
12
|
+
*/
|
|
13
|
+
export declare const CLASS_QUERY = "\n(class_declaration\n name: (name) @name) @class\n";
|
|
14
|
+
/**
|
|
15
|
+
* Query to find all interface declarations
|
|
16
|
+
*/
|
|
17
|
+
export declare const INTERFACE_QUERY = "\n(interface_declaration\n name: (name) @name) @interface\n";
|
|
18
|
+
/**
|
|
19
|
+
* Query to find all trait declarations
|
|
20
|
+
*/
|
|
21
|
+
export declare const TRAIT_QUERY = "\n(trait_declaration\n name: (name) @name) @trait\n";
|
|
22
|
+
/**
|
|
23
|
+
* Query to find all namespace definitions
|
|
24
|
+
*/
|
|
25
|
+
export declare const NAMESPACE_QUERY = "\n(namespace_definition\n name: (namespace_name) @name) @namespace\n";
|
|
26
|
+
/**
|
|
27
|
+
* Query to find all use declarations (imports)
|
|
28
|
+
*/
|
|
29
|
+
export declare const USE_QUERY = "\n(namespace_use_declaration) @use\n";
|
|
30
|
+
/**
|
|
31
|
+
* Query to find all method declarations
|
|
32
|
+
*/
|
|
33
|
+
export declare const METHOD_QUERY = "\n(method_declaration\n name: (name) @name) @method\n";
|
|
34
|
+
/**
|
|
35
|
+
* Query to find all property declarations
|
|
36
|
+
*/
|
|
37
|
+
export declare const PROPERTY_QUERY = "\n(property_declaration) @property\n";
|
|
38
|
+
/**
|
|
39
|
+
* Query to find const declarations
|
|
40
|
+
*/
|
|
41
|
+
export declare const CONST_QUERY = "\n(const_declaration) @const\n";
|
|
42
|
+
/**
|
|
43
|
+
* Combined query for all definitions
|
|
44
|
+
*/
|
|
45
|
+
export declare const ALL_DEFINITIONS_QUERY = "\n; Namespace definitions\n(namespace_definition\n name: (namespace_name) @namespace_name) @namespace\n\n; Use declarations (imports)\n(namespace_use_declaration) @use_decl\n\n; Function definitions\n(function_definition\n name: (name) @func_name) @function\n\n; Class declarations\n(class_declaration\n name: (name) @class_name) @class\n\n; Interface declarations\n(interface_declaration\n name: (name) @interface_name) @interface\n\n; Trait declarations\n(trait_declaration\n name: (name) @trait_name) @trait\n\n; Method declarations\n(method_declaration\n name: (name) @method_name) @method\n\n; Const declarations\n(const_declaration) @const\n\n; Property declarations\n(property_declaration) @property\n";
|
|
46
|
+
/**
|
|
47
|
+
* Query patterns as a single object for easy access
|
|
48
|
+
*/
|
|
49
|
+
export declare const QUERIES: {
|
|
50
|
+
readonly function: "\n(function_definition\n name: (name) @name) @function\n";
|
|
51
|
+
readonly class: "\n(class_declaration\n name: (name) @name) @class\n";
|
|
52
|
+
readonly interface: "\n(interface_declaration\n name: (name) @name) @interface\n";
|
|
53
|
+
readonly trait: "\n(trait_declaration\n name: (name) @name) @trait\n";
|
|
54
|
+
readonly namespace: "\n(namespace_definition\n name: (namespace_name) @name) @namespace\n";
|
|
55
|
+
readonly use: "\n(namespace_use_declaration) @use\n";
|
|
56
|
+
readonly method: "\n(method_declaration\n name: (name) @name) @method\n";
|
|
57
|
+
readonly property: "\n(property_declaration) @property\n";
|
|
58
|
+
readonly const: "\n(const_declaration) @const\n";
|
|
59
|
+
readonly all: "\n; Namespace definitions\n(namespace_definition\n name: (namespace_name) @namespace_name) @namespace\n\n; Use declarations (imports)\n(namespace_use_declaration) @use_decl\n\n; Function definitions\n(function_definition\n name: (name) @func_name) @function\n\n; Class declarations\n(class_declaration\n name: (name) @class_name) @class\n\n; Interface declarations\n(interface_declaration\n name: (name) @interface_name) @interface\n\n; Trait declarations\n(trait_declaration\n name: (name) @trait_name) @trait\n\n; Method declarations\n(method_declaration\n name: (name) @method_name) @method\n\n; Const declarations\n(const_declaration) @const\n\n; Property declarations\n(property_declaration) @property\n";
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/ast/php/queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,8DAG1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,yDAGvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,iEAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,yDAGvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,0EAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,yCAErB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,2DAGxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,yCAE1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,mCAEvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,+sBAiCjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;CAWV,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP Tree-sitter Queries
|
|
3
|
+
*
|
|
4
|
+
* S-expression queries for extracting PHP code elements.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Query to find all function definitions
|
|
8
|
+
*/
|
|
9
|
+
export const FUNCTION_QUERY = `
|
|
10
|
+
(function_definition
|
|
11
|
+
name: (name) @name) @function
|
|
12
|
+
`;
|
|
13
|
+
/**
|
|
14
|
+
* Query to find all class declarations
|
|
15
|
+
*/
|
|
16
|
+
export const CLASS_QUERY = `
|
|
17
|
+
(class_declaration
|
|
18
|
+
name: (name) @name) @class
|
|
19
|
+
`;
|
|
20
|
+
/**
|
|
21
|
+
* Query to find all interface declarations
|
|
22
|
+
*/
|
|
23
|
+
export const INTERFACE_QUERY = `
|
|
24
|
+
(interface_declaration
|
|
25
|
+
name: (name) @name) @interface
|
|
26
|
+
`;
|
|
27
|
+
/**
|
|
28
|
+
* Query to find all trait declarations
|
|
29
|
+
*/
|
|
30
|
+
export const TRAIT_QUERY = `
|
|
31
|
+
(trait_declaration
|
|
32
|
+
name: (name) @name) @trait
|
|
33
|
+
`;
|
|
34
|
+
/**
|
|
35
|
+
* Query to find all namespace definitions
|
|
36
|
+
*/
|
|
37
|
+
export const NAMESPACE_QUERY = `
|
|
38
|
+
(namespace_definition
|
|
39
|
+
name: (namespace_name) @name) @namespace
|
|
40
|
+
`;
|
|
41
|
+
/**
|
|
42
|
+
* Query to find all use declarations (imports)
|
|
43
|
+
*/
|
|
44
|
+
export const USE_QUERY = `
|
|
45
|
+
(namespace_use_declaration) @use
|
|
46
|
+
`;
|
|
47
|
+
/**
|
|
48
|
+
* Query to find all method declarations
|
|
49
|
+
*/
|
|
50
|
+
export const METHOD_QUERY = `
|
|
51
|
+
(method_declaration
|
|
52
|
+
name: (name) @name) @method
|
|
53
|
+
`;
|
|
54
|
+
/**
|
|
55
|
+
* Query to find all property declarations
|
|
56
|
+
*/
|
|
57
|
+
export const PROPERTY_QUERY = `
|
|
58
|
+
(property_declaration) @property
|
|
59
|
+
`;
|
|
60
|
+
/**
|
|
61
|
+
* Query to find const declarations
|
|
62
|
+
*/
|
|
63
|
+
export const CONST_QUERY = `
|
|
64
|
+
(const_declaration) @const
|
|
65
|
+
`;
|
|
66
|
+
/**
|
|
67
|
+
* Combined query for all definitions
|
|
68
|
+
*/
|
|
69
|
+
export const ALL_DEFINITIONS_QUERY = `
|
|
70
|
+
; Namespace definitions
|
|
71
|
+
(namespace_definition
|
|
72
|
+
name: (namespace_name) @namespace_name) @namespace
|
|
73
|
+
|
|
74
|
+
; Use declarations (imports)
|
|
75
|
+
(namespace_use_declaration) @use_decl
|
|
76
|
+
|
|
77
|
+
; Function definitions
|
|
78
|
+
(function_definition
|
|
79
|
+
name: (name) @func_name) @function
|
|
80
|
+
|
|
81
|
+
; Class declarations
|
|
82
|
+
(class_declaration
|
|
83
|
+
name: (name) @class_name) @class
|
|
84
|
+
|
|
85
|
+
; Interface declarations
|
|
86
|
+
(interface_declaration
|
|
87
|
+
name: (name) @interface_name) @interface
|
|
88
|
+
|
|
89
|
+
; Trait declarations
|
|
90
|
+
(trait_declaration
|
|
91
|
+
name: (name) @trait_name) @trait
|
|
92
|
+
|
|
93
|
+
; Method declarations
|
|
94
|
+
(method_declaration
|
|
95
|
+
name: (name) @method_name) @method
|
|
96
|
+
|
|
97
|
+
; Const declarations
|
|
98
|
+
(const_declaration) @const
|
|
99
|
+
|
|
100
|
+
; Property declarations
|
|
101
|
+
(property_declaration) @property
|
|
102
|
+
`;
|
|
103
|
+
/**
|
|
104
|
+
* Query patterns as a single object for easy access
|
|
105
|
+
*/
|
|
106
|
+
export const QUERIES = {
|
|
107
|
+
function: FUNCTION_QUERY,
|
|
108
|
+
class: CLASS_QUERY,
|
|
109
|
+
interface: INTERFACE_QUERY,
|
|
110
|
+
trait: TRAIT_QUERY,
|
|
111
|
+
namespace: NAMESPACE_QUERY,
|
|
112
|
+
use: USE_QUERY,
|
|
113
|
+
method: METHOD_QUERY,
|
|
114
|
+
property: PROPERTY_QUERY,
|
|
115
|
+
const: CONST_QUERY,
|
|
116
|
+
all: ALL_DEFINITIONS_QUERY,
|
|
117
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP Parser Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for converting Tree-sitter nodes to CodeElements
|
|
5
|
+
* and extracting PHP-specific constructs.
|
|
6
|
+
*/
|
|
7
|
+
import type Parser from "web-tree-sitter";
|
|
8
|
+
type Node = Parser.SyntaxNode;
|
|
9
|
+
import type { CodeElement, ElementType } from "../types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Get line number from a Tree-sitter node (1-indexed)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getLineNumber(node: Node): number;
|
|
14
|
+
/**
|
|
15
|
+
* Get end line number from a Tree-sitter node (1-indexed)
|
|
16
|
+
*/
|
|
17
|
+
export declare function getEndLineNumber(node: Node): number;
|
|
18
|
+
/**
|
|
19
|
+
* Extract PHPDoc comment from above a declaration
|
|
20
|
+
* PHP uses block doc comments starting with /**
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractPhpDoc(node: Node, lines: string[]): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Get visibility from a node (public, private, protected)
|
|
25
|
+
*/
|
|
26
|
+
export declare function getVisibility(node: Node): string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a node has public visibility (explicit or default)
|
|
29
|
+
*/
|
|
30
|
+
export declare function isPublic(node: Node): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Check if a function/method has static modifier
|
|
33
|
+
*/
|
|
34
|
+
export declare function isStatic(node: Node): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get function signature from a function_definition node
|
|
37
|
+
*/
|
|
38
|
+
export declare function getFunctionSignature(node: Node): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get method signature from a method_declaration node
|
|
41
|
+
*/
|
|
42
|
+
export declare function getMethodSignature(node: Node): string;
|
|
43
|
+
/**
|
|
44
|
+
* Get class signature
|
|
45
|
+
*/
|
|
46
|
+
export declare function getClassSignature(node: Node): string;
|
|
47
|
+
/**
|
|
48
|
+
* Get interface signature
|
|
49
|
+
*/
|
|
50
|
+
export declare function getInterfaceSignature(node: Node): string;
|
|
51
|
+
/**
|
|
52
|
+
* Get trait signature
|
|
53
|
+
*/
|
|
54
|
+
export declare function getTraitSignature(node: Node): string;
|
|
55
|
+
/**
|
|
56
|
+
* Extract the use path from a namespace_use_declaration
|
|
57
|
+
*/
|
|
58
|
+
export declare function getUsePath(node: Node): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get the short name from a use path
|
|
61
|
+
* e.g., "App\\Models\\User" -> "User"
|
|
62
|
+
*/
|
|
63
|
+
export declare function getUseShortName(usePath: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Get const declaration info
|
|
66
|
+
*/
|
|
67
|
+
export declare function getConstSignature(node: Node): string;
|
|
68
|
+
/**
|
|
69
|
+
* Get const name from declaration
|
|
70
|
+
*/
|
|
71
|
+
export declare function getConstName(node: Node): string;
|
|
72
|
+
/**
|
|
73
|
+
* Create a CodeElement from a Tree-sitter node
|
|
74
|
+
*/
|
|
75
|
+
export declare function createCodeElement(type: ElementType, name: string, node: Node, options?: {
|
|
76
|
+
signature?: string;
|
|
77
|
+
documentation?: string;
|
|
78
|
+
isAsync?: boolean;
|
|
79
|
+
isExported?: boolean;
|
|
80
|
+
parent?: string;
|
|
81
|
+
}): CodeElement;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ast/php/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,KAAK,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAyC7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAO5D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAG5C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAO5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAUvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAYrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAkBpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAIxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAY7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAYpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAW/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,WAAW,CAYb"}
|