mnehmos.trace.mcp 1.0.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/LICENSE +21 -0
- package/README.md +1662 -0
- package/dist/adapters/bootstrap.d.ts +29 -0
- package/dist/adapters/bootstrap.d.ts.map +1 -0
- package/dist/adapters/bootstrap.js +46 -0
- package/dist/adapters/bootstrap.js.map +1 -0
- package/dist/adapters/errors.d.ts +94 -0
- package/dist/adapters/errors.d.ts.map +1 -0
- package/dist/adapters/errors.js +107 -0
- package/dist/adapters/errors.js.map +1 -0
- package/dist/adapters/graphql/index.d.ts +9 -0
- package/dist/adapters/graphql/index.d.ts.map +1 -0
- package/dist/adapters/graphql/index.js +9 -0
- package/dist/adapters/graphql/index.js.map +1 -0
- package/dist/adapters/graphql/sdl-parser.d.ts +74 -0
- package/dist/adapters/graphql/sdl-parser.d.ts.map +1 -0
- package/dist/adapters/graphql/sdl-parser.js +559 -0
- package/dist/adapters/graphql/sdl-parser.js.map +1 -0
- package/dist/adapters/grpc/adapter.d.ts +76 -0
- package/dist/adapters/grpc/adapter.d.ts.map +1 -0
- package/dist/adapters/grpc/adapter.js +362 -0
- package/dist/adapters/grpc/adapter.js.map +1 -0
- package/dist/adapters/grpc/index.d.ts +10 -0
- package/dist/adapters/grpc/index.d.ts.map +1 -0
- package/dist/adapters/grpc/index.js +12 -0
- package/dist/adapters/grpc/index.js.map +1 -0
- package/dist/adapters/grpc/proto-parser.d.ts +76 -0
- package/dist/adapters/grpc/proto-parser.d.ts.map +1 -0
- package/dist/adapters/grpc/proto-parser.js +523 -0
- package/dist/adapters/grpc/proto-parser.js.map +1 -0
- package/dist/adapters/grpc/type-converter.d.ts +43 -0
- package/dist/adapters/grpc/type-converter.d.ts.map +1 -0
- package/dist/adapters/grpc/type-converter.js +270 -0
- package/dist/adapters/grpc/type-converter.js.map +1 -0
- package/dist/adapters/grpc/types.d.ts +85 -0
- package/dist/adapters/grpc/types.d.ts.map +1 -0
- package/dist/adapters/grpc/types.js +7 -0
- package/dist/adapters/grpc/types.js.map +1 -0
- package/dist/adapters/index.d.ts +39 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +50 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mcp.d.ts +23 -0
- package/dist/adapters/mcp.d.ts.map +1 -0
- package/dist/adapters/mcp.js +293 -0
- package/dist/adapters/mcp.js.map +1 -0
- package/dist/adapters/openapi/adapter.d.ts +213 -0
- package/dist/adapters/openapi/adapter.d.ts.map +1 -0
- package/dist/adapters/openapi/adapter.js +557 -0
- package/dist/adapters/openapi/adapter.js.map +1 -0
- package/dist/adapters/openapi/convert.d.ts +120 -0
- package/dist/adapters/openapi/convert.d.ts.map +1 -0
- package/dist/adapters/openapi/convert.js +363 -0
- package/dist/adapters/openapi/convert.js.map +1 -0
- package/dist/adapters/openapi/index.d.ts +39 -0
- package/dist/adapters/openapi/index.d.ts.map +1 -0
- package/dist/adapters/openapi/index.js +48 -0
- package/dist/adapters/openapi/index.js.map +1 -0
- package/dist/adapters/openapi/parser.d.ts +95 -0
- package/dist/adapters/openapi/parser.d.ts.map +1 -0
- package/dist/adapters/openapi/parser.js +171 -0
- package/dist/adapters/openapi/parser.js.map +1 -0
- package/dist/adapters/registry.d.ts +116 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +246 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/trpc/adapter.d.ts +159 -0
- package/dist/adapters/trpc/adapter.d.ts.map +1 -0
- package/dist/adapters/trpc/adapter.js +223 -0
- package/dist/adapters/trpc/adapter.js.map +1 -0
- package/dist/adapters/trpc/extractor.d.ts +218 -0
- package/dist/adapters/trpc/extractor.d.ts.map +1 -0
- package/dist/adapters/trpc/extractor.js +708 -0
- package/dist/adapters/trpc/extractor.js.map +1 -0
- package/dist/adapters/trpc/index.d.ts +31 -0
- package/dist/adapters/trpc/index.d.ts.map +1 -0
- package/dist/adapters/trpc/index.js +40 -0
- package/dist/adapters/trpc/index.js.map +1 -0
- package/dist/adapters/trpc/parser.d.ts +119 -0
- package/dist/adapters/trpc/parser.d.ts.map +1 -0
- package/dist/adapters/trpc/parser.js +128 -0
- package/dist/adapters/trpc/parser.js.map +1 -0
- package/dist/compare/index.d.ts +33 -0
- package/dist/compare/index.d.ts.map +1 -0
- package/dist/compare/index.js +261 -0
- package/dist/compare/index.js.map +1 -0
- package/dist/core/types.d.ts +188 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -0
- package/dist/extract/index.d.ts +26 -0
- package/dist/extract/index.d.ts.map +1 -0
- package/dist/extract/index.js +44 -0
- package/dist/extract/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +674 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/base.d.ts +57 -0
- package/dist/languages/base.d.ts.map +1 -0
- package/dist/languages/base.js +6 -0
- package/dist/languages/base.js.map +1 -0
- package/dist/languages/bootstrap.d.ts +10 -0
- package/dist/languages/bootstrap.d.ts.map +1 -0
- package/dist/languages/bootstrap.js +25 -0
- package/dist/languages/bootstrap.js.map +1 -0
- package/dist/languages/go/handlers/chi.d.ts +24 -0
- package/dist/languages/go/handlers/chi.d.ts.map +1 -0
- package/dist/languages/go/handlers/chi.js +205 -0
- package/dist/languages/go/handlers/chi.js.map +1 -0
- package/dist/languages/go/handlers/gin.d.ts +24 -0
- package/dist/languages/go/handlers/gin.d.ts.map +1 -0
- package/dist/languages/go/handlers/gin.js +156 -0
- package/dist/languages/go/handlers/gin.js.map +1 -0
- package/dist/languages/go/handlers/stdlib.d.ts +19 -0
- package/dist/languages/go/handlers/stdlib.d.ts.map +1 -0
- package/dist/languages/go/handlers/stdlib.js +112 -0
- package/dist/languages/go/handlers/stdlib.js.map +1 -0
- package/dist/languages/go/index.d.ts +18 -0
- package/dist/languages/go/index.d.ts.map +1 -0
- package/dist/languages/go/index.js +20 -0
- package/dist/languages/go/index.js.map +1 -0
- package/dist/languages/go/parser.d.ts +33 -0
- package/dist/languages/go/parser.d.ts.map +1 -0
- package/dist/languages/go/parser.js +95 -0
- package/dist/languages/go/parser.js.map +1 -0
- package/dist/languages/go/struct-extractor.d.ts +59 -0
- package/dist/languages/go/struct-extractor.d.ts.map +1 -0
- package/dist/languages/go/struct-extractor.js +483 -0
- package/dist/languages/go/struct-extractor.js.map +1 -0
- package/dist/languages/go/tag-parser.d.ts +62 -0
- package/dist/languages/go/tag-parser.d.ts.map +1 -0
- package/dist/languages/go/tag-parser.js +108 -0
- package/dist/languages/go/tag-parser.js.map +1 -0
- package/dist/languages/go/type-converter.d.ts +32 -0
- package/dist/languages/go/type-converter.d.ts.map +1 -0
- package/dist/languages/go/type-converter.js +226 -0
- package/dist/languages/go/type-converter.js.map +1 -0
- package/dist/languages/go/types.d.ts +153 -0
- package/dist/languages/go/types.d.ts.map +1 -0
- package/dist/languages/go/types.js +6 -0
- package/dist/languages/go/types.js.map +1 -0
- package/dist/languages/import-resolver.d.ts +645 -0
- package/dist/languages/import-resolver.d.ts.map +1 -0
- package/dist/languages/import-resolver.js +1278 -0
- package/dist/languages/import-resolver.js.map +1 -0
- package/dist/languages/index.d.ts +34 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +93 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/languages/json-schema.d.ts +40 -0
- package/dist/languages/json-schema.d.ts.map +1 -0
- package/dist/languages/json-schema.js +188 -0
- package/dist/languages/json-schema.js.map +1 -0
- package/dist/languages/python-ast/index.d.ts +8 -0
- package/dist/languages/python-ast/index.d.ts.map +1 -0
- package/dist/languages/python-ast/index.js +7 -0
- package/dist/languages/python-ast/index.js.map +1 -0
- package/dist/languages/python-ast/parser.d.ts +174 -0
- package/dist/languages/python-ast/parser.d.ts.map +1 -0
- package/dist/languages/python-ast/parser.js +1205 -0
- package/dist/languages/python-ast/parser.js.map +1 -0
- package/dist/languages/python-ast/type-resolver.d.ts +75 -0
- package/dist/languages/python-ast/type-resolver.d.ts.map +1 -0
- package/dist/languages/python-ast/type-resolver.js +421 -0
- package/dist/languages/python-ast/type-resolver.js.map +1 -0
- package/dist/languages/python-ast/types.d.ts +216 -0
- package/dist/languages/python-ast/types.d.ts.map +1 -0
- package/dist/languages/python-ast/types.js +6 -0
- package/dist/languages/python-ast/types.js.map +1 -0
- package/dist/languages/python.d.ts +55 -0
- package/dist/languages/python.d.ts.map +1 -0
- package/dist/languages/python.js +311 -0
- package/dist/languages/python.js.map +1 -0
- package/dist/languages/typescript.d.ts +272 -0
- package/dist/languages/typescript.d.ts.map +1 -0
- package/dist/languages/typescript.js +1381 -0
- package/dist/languages/typescript.js.map +1 -0
- package/dist/patterns/base.d.ts +146 -0
- package/dist/patterns/base.d.ts.map +1 -0
- package/dist/patterns/base.js +89 -0
- package/dist/patterns/base.js.map +1 -0
- package/dist/patterns/errors.d.ts +172 -0
- package/dist/patterns/errors.d.ts.map +1 -0
- package/dist/patterns/errors.js +185 -0
- package/dist/patterns/errors.js.map +1 -0
- package/dist/patterns/extractors.d.ts +170 -0
- package/dist/patterns/extractors.d.ts.map +1 -0
- package/dist/patterns/extractors.js +305 -0
- package/dist/patterns/extractors.js.map +1 -0
- package/dist/patterns/graphql/apollo-client.d.ts +80 -0
- package/dist/patterns/graphql/apollo-client.d.ts.map +1 -0
- package/dist/patterns/graphql/apollo-client.js +800 -0
- package/dist/patterns/graphql/apollo-client.js.map +1 -0
- package/dist/patterns/graphql/apollo-server.d.ts +55 -0
- package/dist/patterns/graphql/apollo-server.d.ts.map +1 -0
- package/dist/patterns/graphql/apollo-server.js +523 -0
- package/dist/patterns/graphql/apollo-server.js.map +1 -0
- package/dist/patterns/graphql/index.d.ts +11 -0
- package/dist/patterns/graphql/index.d.ts.map +1 -0
- package/dist/patterns/graphql/index.js +12 -0
- package/dist/patterns/graphql/index.js.map +1 -0
- package/dist/patterns/graphql/types.d.ts +213 -0
- package/dist/patterns/graphql/types.d.ts.map +1 -0
- package/dist/patterns/graphql/types.js +16 -0
- package/dist/patterns/graphql/types.js.map +1 -0
- package/dist/patterns/http-clients/axios.d.ts +148 -0
- package/dist/patterns/http-clients/axios.d.ts.map +1 -0
- package/dist/patterns/http-clients/axios.js +652 -0
- package/dist/patterns/http-clients/axios.js.map +1 -0
- package/dist/patterns/http-clients/fetch.d.ts +88 -0
- package/dist/patterns/http-clients/fetch.d.ts.map +1 -0
- package/dist/patterns/http-clients/fetch.js +364 -0
- package/dist/patterns/http-clients/fetch.js.map +1 -0
- package/dist/patterns/http-clients/index.d.ts +36 -0
- package/dist/patterns/http-clients/index.d.ts.map +1 -0
- package/dist/patterns/http-clients/index.js +50 -0
- package/dist/patterns/http-clients/index.js.map +1 -0
- package/dist/patterns/http-clients/property-access.d.ts +46 -0
- package/dist/patterns/http-clients/property-access.d.ts.map +1 -0
- package/dist/patterns/http-clients/property-access.js +818 -0
- package/dist/patterns/http-clients/property-access.js.map +1 -0
- package/dist/patterns/http-clients/type-inference.d.ts +48 -0
- package/dist/patterns/http-clients/type-inference.d.ts.map +1 -0
- package/dist/patterns/http-clients/type-inference.js +293 -0
- package/dist/patterns/http-clients/type-inference.js.map +1 -0
- package/dist/patterns/http-clients/types.d.ts +168 -0
- package/dist/patterns/http-clients/types.d.ts.map +1 -0
- package/dist/patterns/http-clients/types.js +10 -0
- package/dist/patterns/http-clients/types.js.map +1 -0
- package/dist/patterns/http-clients/url-extractor.d.ts +53 -0
- package/dist/patterns/http-clients/url-extractor.d.ts.map +1 -0
- package/dist/patterns/http-clients/url-extractor.js +338 -0
- package/dist/patterns/http-clients/url-extractor.js.map +1 -0
- package/dist/patterns/index.d.ts +44 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +49 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/python/aiohttp.d.ts +21 -0
- package/dist/patterns/python/aiohttp.d.ts.map +1 -0
- package/dist/patterns/python/aiohttp.js +188 -0
- package/dist/patterns/python/aiohttp.js.map +1 -0
- package/dist/patterns/python/httpx.d.ts +20 -0
- package/dist/patterns/python/httpx.d.ts.map +1 -0
- package/dist/patterns/python/httpx.js +183 -0
- package/dist/patterns/python/httpx.js.map +1 -0
- package/dist/patterns/python/index.d.ts +32 -0
- package/dist/patterns/python/index.d.ts.map +1 -0
- package/dist/patterns/python/index.js +63 -0
- package/dist/patterns/python/index.js.map +1 -0
- package/dist/patterns/python/property-access.d.ts +27 -0
- package/dist/patterns/python/property-access.d.ts.map +1 -0
- package/dist/patterns/python/property-access.js +132 -0
- package/dist/patterns/python/property-access.js.map +1 -0
- package/dist/patterns/python/requests.d.ts +19 -0
- package/dist/patterns/python/requests.d.ts.map +1 -0
- package/dist/patterns/python/requests.js +239 -0
- package/dist/patterns/python/requests.js.map +1 -0
- package/dist/patterns/python/types.d.ts +95 -0
- package/dist/patterns/python/types.d.ts.map +1 -0
- package/dist/patterns/python/types.js +43 -0
- package/dist/patterns/python/types.js.map +1 -0
- package/dist/patterns/registry.d.ts +181 -0
- package/dist/patterns/registry.d.ts.map +1 -0
- package/dist/patterns/registry.js +304 -0
- package/dist/patterns/registry.js.map +1 -0
- package/dist/patterns/rest/express.d.ts +78 -0
- package/dist/patterns/rest/express.d.ts.map +1 -0
- package/dist/patterns/rest/express.js +289 -0
- package/dist/patterns/rest/express.js.map +1 -0
- package/dist/patterns/rest/fastify.d.ts +93 -0
- package/dist/patterns/rest/fastify.d.ts.map +1 -0
- package/dist/patterns/rest/fastify.js +420 -0
- package/dist/patterns/rest/fastify.js.map +1 -0
- package/dist/patterns/rest/index.d.ts +31 -0
- package/dist/patterns/rest/index.d.ts.map +1 -0
- package/dist/patterns/rest/index.js +45 -0
- package/dist/patterns/rest/index.js.map +1 -0
- package/dist/patterns/rest/middleware.d.ts +25 -0
- package/dist/patterns/rest/middleware.d.ts.map +1 -0
- package/dist/patterns/rest/middleware.js +219 -0
- package/dist/patterns/rest/middleware.js.map +1 -0
- package/dist/patterns/rest/path-parser.d.ts +50 -0
- package/dist/patterns/rest/path-parser.d.ts.map +1 -0
- package/dist/patterns/rest/path-parser.js +137 -0
- package/dist/patterns/rest/path-parser.js.map +1 -0
- package/dist/patterns/rest/response-inference.d.ts +44 -0
- package/dist/patterns/rest/response-inference.d.ts.map +1 -0
- package/dist/patterns/rest/response-inference.js +218 -0
- package/dist/patterns/rest/response-inference.js.map +1 -0
- package/dist/patterns/rest/types.d.ts +102 -0
- package/dist/patterns/rest/types.d.ts.map +1 -0
- package/dist/patterns/rest/types.js +10 -0
- package/dist/patterns/rest/types.js.map +1 -0
- package/dist/patterns/types.d.ts +105 -0
- package/dist/patterns/types.d.ts.map +1 -0
- package/dist/patterns/types.js +11 -0
- package/dist/patterns/types.js.map +1 -0
- package/dist/report/index.d.ts +11 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/index.js +55 -0
- package/dist/report/index.js.map +1 -0
- package/dist/tools/contract-comments.d.ts +48 -0
- package/dist/tools/contract-comments.d.ts.map +1 -0
- package/dist/tools/contract-comments.js +130 -0
- package/dist/tools/contract-comments.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/scaffold.d.ts +38 -0
- package/dist/tools/scaffold.d.ts.map +1 -0
- package/dist/tools/scaffold.js +373 -0
- package/dist/tools/scaffold.js.map +1 -0
- package/dist/trace/index.d.ts +28 -0
- package/dist/trace/index.d.ts.map +1 -0
- package/dist/trace/index.js +45 -0
- package/dist/trace/index.js.map +1 -0
- package/dist/types.d.ts +135 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/dist/watch/cache.d.ts +41 -0
- package/dist/watch/cache.d.ts.map +1 -0
- package/dist/watch/cache.js +230 -0
- package/dist/watch/cache.js.map +1 -0
- package/dist/watch/index.d.ts +9 -0
- package/dist/watch/index.d.ts.map +1 -0
- package/dist/watch/index.js +7 -0
- package/dist/watch/index.js.map +1 -0
- package/dist/watch/project.d.ts +128 -0
- package/dist/watch/project.d.ts.map +1 -0
- package/dist/watch/project.js +152 -0
- package/dist/watch/project.js.map +1 -0
- package/dist/watch/watcher.d.ts +76 -0
- package/dist/watch/watcher.d.ts.map +1 -0
- package/dist/watch/watcher.js +235 -0
- package/dist/watch/watcher.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔷 TypeScript Language Parser
|
|
3
|
+
*
|
|
4
|
+
* Extracts MCP schemas from TypeScript source files using ts-morph.
|
|
5
|
+
* This is an enhanced parser that supports multiple extraction patterns
|
|
6
|
+
* for both producer schemas (tool definitions) and type definitions.
|
|
7
|
+
*
|
|
8
|
+
* Supported extraction patterns:
|
|
9
|
+
* 1. **server.tool()** - FastMCP / MCP SDK pattern
|
|
10
|
+
* 2. **Registry Pattern** - Object literal with ToolDefinition entries (ChatRPG)
|
|
11
|
+
* 3. **Exported Zod Schemas** - Named *Schema exports for tracing
|
|
12
|
+
* 4. **TypeScript Interfaces** - Exported interface declarations
|
|
13
|
+
* 5. **Type Aliases** - Exported type definitions
|
|
14
|
+
* 6. **Enums** - Exported enum declarations
|
|
15
|
+
*
|
|
16
|
+
* @module languages/typescript
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { TypeScriptParser } from './languages/typescript.js';
|
|
21
|
+
*
|
|
22
|
+
* const parser = new TypeScriptParser();
|
|
23
|
+
*
|
|
24
|
+
* // Extract tool definitions (Zod schemas)
|
|
25
|
+
* const producers = await parser.extractSchemas({ rootDir: './src' });
|
|
26
|
+
*
|
|
27
|
+
* // Extract interfaces and types
|
|
28
|
+
* const interfaces = await parser.extractInterfaces({ rootDir: './src' });
|
|
29
|
+
*
|
|
30
|
+
* // Extract all schemas
|
|
31
|
+
* const all = await parser.extractAll({ rootDir: './src' });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
import type { LanguageParser, ExtractOptions, TraceOptions } from './base.js';
|
|
35
|
+
import type { ProducerSchema, ConsumerSchema } from '../types.js';
|
|
36
|
+
import type { NormalizedSchema } from '../core/types.js';
|
|
37
|
+
export declare class TypeScriptParser implements LanguageParser {
|
|
38
|
+
readonly name = "typescript";
|
|
39
|
+
readonly filePatterns: string[];
|
|
40
|
+
private zodSchemaCache;
|
|
41
|
+
extractSchemas(options: ExtractOptions): Promise<ProducerSchema[]>;
|
|
42
|
+
private findToolCalls;
|
|
43
|
+
private parseToolCall;
|
|
44
|
+
private extractFromRegistry;
|
|
45
|
+
private parseRegistryObject;
|
|
46
|
+
private parseToolDefinition;
|
|
47
|
+
/**
|
|
48
|
+
* Infer registry pattern from object shape
|
|
49
|
+
* Checks if object entries look like tool definitions
|
|
50
|
+
*/
|
|
51
|
+
private inferRegistryFromShape;
|
|
52
|
+
/**
|
|
53
|
+
* Detect the shape of a tool definition from an object literal
|
|
54
|
+
*/
|
|
55
|
+
private detectToolDefinitionShape;
|
|
56
|
+
/**
|
|
57
|
+
* Extract input schema from various formats
|
|
58
|
+
*/
|
|
59
|
+
private extractInputSchema;
|
|
60
|
+
/**
|
|
61
|
+
* Parse a JSON Schema object literal
|
|
62
|
+
*/
|
|
63
|
+
private parseJsonSchemaLiteral;
|
|
64
|
+
/**
|
|
65
|
+
* Collect all exported Zod schemas for cross-reference
|
|
66
|
+
*/
|
|
67
|
+
private collectZodSchemas;
|
|
68
|
+
/**
|
|
69
|
+
* Extract tool definitions from exports
|
|
70
|
+
*/
|
|
71
|
+
private extractFromExports;
|
|
72
|
+
private parseZodSchema;
|
|
73
|
+
private parseZodObjectContent;
|
|
74
|
+
private parseZodUnion;
|
|
75
|
+
private parseZodType;
|
|
76
|
+
/**
|
|
77
|
+
* Standard MCP tool output schema
|
|
78
|
+
*/
|
|
79
|
+
private getMcpOutputSchema;
|
|
80
|
+
traceUsage(options: TraceOptions): Promise<ConsumerSchema[]>;
|
|
81
|
+
private traceFile;
|
|
82
|
+
private parseCallToolExpression;
|
|
83
|
+
private parseObjectLiteral;
|
|
84
|
+
private traceResultUsage;
|
|
85
|
+
private getPropertyChain;
|
|
86
|
+
/**
|
|
87
|
+
* Extract interfaces, type aliases, and enums from TypeScript files.
|
|
88
|
+
*
|
|
89
|
+
* Scans TypeScript source files and extracts all exported type definitions,
|
|
90
|
+
* converting them to NormalizedSchema format for schema comparison.
|
|
91
|
+
*
|
|
92
|
+
* Supports extraction of:
|
|
93
|
+
* - **Interfaces** - Including inherited properties from extends
|
|
94
|
+
* - **Type Aliases** - Object types, unions, intersections, Records
|
|
95
|
+
* - **Enums** - Both const and regular enums
|
|
96
|
+
*
|
|
97
|
+
* @param options - Extraction options specifying root directory and file patterns
|
|
98
|
+
* @param options.rootDir - Root directory to search for TypeScript files
|
|
99
|
+
* @param options.include - Optional glob patterns to include (default: `['*.ts', '*.tsx']`)
|
|
100
|
+
* @param options.exclude - Optional glob patterns to exclude (default: excludes node_modules and dist)
|
|
101
|
+
* @returns Promise resolving to array of NormalizedSchema for all exported declarations
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const parser = new TypeScriptParser();
|
|
106
|
+
* const schemas = await parser.extractInterfaces({
|
|
107
|
+
* rootDir: './src/types',
|
|
108
|
+
* include: ['*.ts'],
|
|
109
|
+
* exclude: ['*.test.ts']
|
|
110
|
+
* });
|
|
111
|
+
*
|
|
112
|
+
* // schemas[0] = {
|
|
113
|
+
* // name: 'UserProfile',
|
|
114
|
+
* // properties: { id: {...}, name: {...} },
|
|
115
|
+
* // required: ['id', 'name'],
|
|
116
|
+
* // source: { source: 'typescript', id: 'interface:UserProfile@...' },
|
|
117
|
+
* // location: { file: '...', line: 10 }
|
|
118
|
+
* // }
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
extractInterfaces(options: ExtractOptions): Promise<NormalizedSchema[]>;
|
|
122
|
+
/**
|
|
123
|
+
* Extract all schemas from TypeScript files.
|
|
124
|
+
*
|
|
125
|
+
* Comprehensive extraction that combines interface/type extraction.
|
|
126
|
+
* This is the recommended entry point for extracting TypeScript type
|
|
127
|
+
* definitions for schema comparison workflows.
|
|
128
|
+
*
|
|
129
|
+
* @param options - Extraction options specifying root directory and file patterns
|
|
130
|
+
* @param options.rootDir - Root directory to search for TypeScript files
|
|
131
|
+
* @param options.include - Optional glob patterns to include
|
|
132
|
+
* @param options.exclude - Optional glob patterns to exclude
|
|
133
|
+
* @returns Promise resolving to array of NormalizedSchema
|
|
134
|
+
*
|
|
135
|
+
* @remarks
|
|
136
|
+
* Currently returns interface/type/enum schemas only.
|
|
137
|
+
* Future enhancement: Convert ProducerSchema to NormalizedSchema
|
|
138
|
+
* for Zod schema inclusion.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* const parser = new TypeScriptParser();
|
|
143
|
+
* const schemas = await parser.extractAll({ rootDir: './src' });
|
|
144
|
+
*
|
|
145
|
+
* // Returns all exported interfaces, type aliases, and enums
|
|
146
|
+
* console.log(`Found ${schemas.length} type definitions`);
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
extractAll(options: ExtractOptions): Promise<NormalizedSchema[]>;
|
|
150
|
+
/**
|
|
151
|
+
* Convert a TypeScript interface declaration to NormalizedSchema.
|
|
152
|
+
*
|
|
153
|
+
* Handles all interface features:
|
|
154
|
+
* - Direct properties with type annotations
|
|
155
|
+
* - Inherited properties from extends clauses
|
|
156
|
+
* - Optional properties (marked with ?)
|
|
157
|
+
* - Readonly properties
|
|
158
|
+
* - Nullable types (T | null)
|
|
159
|
+
* - JSDoc descriptions and @deprecated tags
|
|
160
|
+
*
|
|
161
|
+
* @param iface - The ts-morph InterfaceDeclaration to convert
|
|
162
|
+
* @param filePath - Path to the source file for location tracking
|
|
163
|
+
* @returns NormalizedSchema representation of the interface
|
|
164
|
+
*/
|
|
165
|
+
private convertInterfaceToSchema;
|
|
166
|
+
/**
|
|
167
|
+
* Get all properties from an interface, including inherited ones.
|
|
168
|
+
*
|
|
169
|
+
* Uses ts-morph's type resolution to flatten the property list,
|
|
170
|
+
* ensuring all properties from extended interfaces are included.
|
|
171
|
+
*
|
|
172
|
+
* @param iface - The interface declaration
|
|
173
|
+
* @returns Array of ts-morph Symbol objects representing all properties
|
|
174
|
+
*/
|
|
175
|
+
private getInterfaceProperties;
|
|
176
|
+
/**
|
|
177
|
+
* Convert a TypeScript type alias to NormalizedSchema.
|
|
178
|
+
*
|
|
179
|
+
* Handles various type alias patterns:
|
|
180
|
+
* - Object types: `type Foo = { bar: string }`
|
|
181
|
+
* - Intersection types: `type Foo = A & B`
|
|
182
|
+
* - Record types: `type Dict = Record<string, T>`
|
|
183
|
+
* - Union types: `type Status = 'active' | 'inactive'`
|
|
184
|
+
*
|
|
185
|
+
* @param typeAlias - The ts-morph TypeAliasDeclaration to convert
|
|
186
|
+
* @param filePath - Path to the source file for location tracking
|
|
187
|
+
* @returns NormalizedSchema representation of the type alias
|
|
188
|
+
*/
|
|
189
|
+
private convertTypeAliasToSchema;
|
|
190
|
+
/**
|
|
191
|
+
* Extract properties from a ts-morph Type object.
|
|
192
|
+
*
|
|
193
|
+
* Helper method for extracting property definitions from resolved types.
|
|
194
|
+
* Used by both interface and type alias conversion to handle object types.
|
|
195
|
+
*
|
|
196
|
+
* @param type - The ts-morph Type to extract properties from
|
|
197
|
+
* @param properties - Output record to populate with PropertyDef entries
|
|
198
|
+
* @param required - Output array to populate with required property names
|
|
199
|
+
*/
|
|
200
|
+
private extractPropertiesFromType;
|
|
201
|
+
/**
|
|
202
|
+
* Convert a TypeScript enum to NormalizedSchema.
|
|
203
|
+
*
|
|
204
|
+
* Enums are represented as schemas with empty properties,
|
|
205
|
+
* since they don't have traditional object properties.
|
|
206
|
+
* The enum values are not currently extracted to the schema.
|
|
207
|
+
*
|
|
208
|
+
* @param enumDecl - The ts-morph EnumDeclaration to convert
|
|
209
|
+
* @param filePath - Path to the source file for location tracking
|
|
210
|
+
* @returns NormalizedSchema representation of the enum
|
|
211
|
+
*
|
|
212
|
+
* @remarks
|
|
213
|
+
* Future enhancement: Include enum members as values or properties.
|
|
214
|
+
*/
|
|
215
|
+
private convertEnumToSchema;
|
|
216
|
+
/**
|
|
217
|
+
* Analyze nullability of a TypeScript type.
|
|
218
|
+
*
|
|
219
|
+
* Examines union types to determine if they include null or undefined,
|
|
220
|
+
* and extracts the "base" type after removing null/undefined.
|
|
221
|
+
*
|
|
222
|
+
* @param type - The ts-morph Type to analyze
|
|
223
|
+
* @returns Object containing:
|
|
224
|
+
* - `baseType`: The type with null/undefined removed
|
|
225
|
+
* - `isNullable`: True if type includes `| null`
|
|
226
|
+
* - `hasUndefined`: True if type includes `| undefined`
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* // For type: string | null | undefined
|
|
231
|
+
* // Returns: { baseType: string, isNullable: true, hasUndefined: true }
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
private analyzeNullability;
|
|
235
|
+
/**
|
|
236
|
+
* Convert a ts-morph Type to NormalizedType.
|
|
237
|
+
*
|
|
238
|
+
* Recursively converts TypeScript types to the normalized type system:
|
|
239
|
+
* - Primitives: string, number, boolean, null
|
|
240
|
+
* - Literals: 'active', 42, true
|
|
241
|
+
* - Arrays: `string[]`, `Array<T>`
|
|
242
|
+
* - Tuples: `[string, number]`
|
|
243
|
+
* - Unions: `string | number`
|
|
244
|
+
* - Intersections: `A & B`
|
|
245
|
+
* - Objects: `{ foo: string }`
|
|
246
|
+
* - References: named interfaces
|
|
247
|
+
*
|
|
248
|
+
* @param type - The ts-morph Type to convert
|
|
249
|
+
* @param visitingTypes - Set of type names currently being visited (for cycle detection)
|
|
250
|
+
* @returns NormalizedType representation
|
|
251
|
+
*/
|
|
252
|
+
private convertTypeToNormalized;
|
|
253
|
+
/**
|
|
254
|
+
* Check if a property declaration is readonly.
|
|
255
|
+
*
|
|
256
|
+
* @param decl - The property declaration node
|
|
257
|
+
* @returns True if the property has the readonly modifier
|
|
258
|
+
*/
|
|
259
|
+
private isPropertyReadonly;
|
|
260
|
+
/**
|
|
261
|
+
* Extract JSDoc information from a declaration.
|
|
262
|
+
*
|
|
263
|
+
* Parses JSDoc comments to extract:
|
|
264
|
+
* - Description text
|
|
265
|
+
* - @deprecated tag presence
|
|
266
|
+
*
|
|
267
|
+
* @param decl - The declaration node to extract JSDoc from
|
|
268
|
+
* @returns Object with description and deprecated flag
|
|
269
|
+
*/
|
|
270
|
+
private getJSDocInfo;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAA0C,MAAM,kBAAkB,CAAC;AA0DjG,qBAAa,gBAAiB,YAAW,cAAc;IACrD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,YAAY,WAA2B;IAGhD,OAAO,CAAC,cAAc,CAA4E;IAM5F,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgExE,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,mBAAmB;IAkD3B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA+C9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkD1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoD9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,YAAY;IA+EpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsBpB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmClE,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,uBAAuB;IAoD/B,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,gBAAgB;IAgBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuD7E;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAetE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;IAkDhC;;;;;;;;;OASG;IACH,OAAO,CAAC,yBAAyB;IAyCjC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,uBAAuB;IAiK/B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;CA0BrB"}
|