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,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔄 OpenAPI Type Converter
|
|
3
|
+
* Converts OpenAPI schemas to NormalizedSchema/NormalizedType
|
|
4
|
+
*
|
|
5
|
+
* This module handles the transformation of OpenAPI 3.x schema objects
|
|
6
|
+
* into the trace-mcp normalized schema format. It supports:
|
|
7
|
+
* - Primitive types (string, number, boolean, integer)
|
|
8
|
+
* - Complex types (object, array)
|
|
9
|
+
* - Composition keywords (allOf, anyOf, oneOf)
|
|
10
|
+
* - Enums and const values
|
|
11
|
+
* - Constraint extraction (min/max, patterns, formats)
|
|
12
|
+
*
|
|
13
|
+
* @module adapters/openapi/convert
|
|
14
|
+
*/
|
|
15
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
16
|
+
import type { NormalizedSchema, NormalizedType, Constraints, SchemaRef } from '../../core/types.js';
|
|
17
|
+
/** Union type for OpenAPI schemas (either concrete or reference) */
|
|
18
|
+
type OpenAPISchema = OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
|
|
19
|
+
/**
|
|
20
|
+
* Convert an OpenAPI schema to a NormalizedType.
|
|
21
|
+
*
|
|
22
|
+
* Handles all OpenAPI type constructs:
|
|
23
|
+
* - `$ref` → ref kind
|
|
24
|
+
* - `oneOf`/`anyOf` → union kind
|
|
25
|
+
* - `allOf` → intersection kind
|
|
26
|
+
* - `enum` → union of literals
|
|
27
|
+
* - `const` → literal kind
|
|
28
|
+
* - Primitives → primitive kind
|
|
29
|
+
* - `array` → array kind
|
|
30
|
+
* - `object` → object kind
|
|
31
|
+
*
|
|
32
|
+
* @param schema - The OpenAPI schema to convert
|
|
33
|
+
* @returns The normalized type representation
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Convert a string type
|
|
38
|
+
* const type = convertToNormalizedType({ type: 'string' });
|
|
39
|
+
* // { kind: 'primitive', value: 'string' }
|
|
40
|
+
*
|
|
41
|
+
* // Convert an enum
|
|
42
|
+
* const type = convertToNormalizedType({ enum: ['active', 'inactive'] });
|
|
43
|
+
* // { kind: 'union', variants: [{ kind: 'literal', value: 'active' }, ...] }
|
|
44
|
+
*
|
|
45
|
+
* // Convert an array
|
|
46
|
+
* const type = convertToNormalizedType({ type: 'array', items: { type: 'string' } });
|
|
47
|
+
* // { kind: 'array', element: { kind: 'primitive', value: 'string' } }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function convertToNormalizedType(schema: OpenAPISchema): NormalizedType;
|
|
51
|
+
/**
|
|
52
|
+
* Extract validation constraints from an OpenAPI schema.
|
|
53
|
+
*
|
|
54
|
+
* Supports the following constraint types:
|
|
55
|
+
* - String: minLength, maxLength, pattern, format
|
|
56
|
+
* - Number: minimum, maximum
|
|
57
|
+
* - Enum: allowed values
|
|
58
|
+
*
|
|
59
|
+
* @param schema - The OpenAPI schema object to extract constraints from
|
|
60
|
+
* @returns Constraints object if any constraints found, undefined otherwise
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const constraints = extractConstraints({
|
|
65
|
+
* type: 'string',
|
|
66
|
+
* minLength: 1,
|
|
67
|
+
* maxLength: 100,
|
|
68
|
+
* pattern: '^[a-z]+$'
|
|
69
|
+
* });
|
|
70
|
+
* // { minLength: 1, maxLength: 100, pattern: '^[a-z]+$' }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function extractConstraints(schema: OpenAPIV3.SchemaObject): Constraints | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Convert an OpenAPI schema object to a NormalizedSchema.
|
|
76
|
+
*
|
|
77
|
+
* This is the main conversion function for object-like schemas.
|
|
78
|
+
* It extracts properties, required fields, and handles allOf merging.
|
|
79
|
+
*
|
|
80
|
+
* @param schema - The OpenAPI schema object to convert
|
|
81
|
+
* @param source - The SchemaRef identifying the source
|
|
82
|
+
* @param name - Optional name for the schema
|
|
83
|
+
* @returns The normalized schema representation
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const schema = convertToNormalizedSchema({
|
|
88
|
+
* type: 'object',
|
|
89
|
+
* required: ['id', 'name'],
|
|
90
|
+
* properties: {
|
|
91
|
+
* id: { type: 'integer' },
|
|
92
|
+
* name: { type: 'string' },
|
|
93
|
+
* email: { type: 'string', format: 'email' }
|
|
94
|
+
* }
|
|
95
|
+
* }, { source: 'openapi', id: 'schema:User@./api.yaml' }, 'User');
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function convertToNormalizedSchema(schema: OpenAPIV3.SchemaObject, source: SchemaRef, name?: string): NormalizedSchema;
|
|
99
|
+
/**
|
|
100
|
+
* Convert an array of OpenAPI parameters to a NormalizedSchema.
|
|
101
|
+
*
|
|
102
|
+
* This handles path, query, and header parameters, converting
|
|
103
|
+
* each to a property in the resulting schema.
|
|
104
|
+
*
|
|
105
|
+
* @param parameters - Array of OpenAPI parameter objects
|
|
106
|
+
* @param source - The SchemaRef identifying the source
|
|
107
|
+
* @returns A normalized schema with parameters as properties
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const schema = convertParametersToSchema([
|
|
112
|
+
* { name: 'id', in: 'path', required: true, schema: { type: 'integer' } },
|
|
113
|
+
* { name: 'limit', in: 'query', required: false, schema: { type: 'integer' } }
|
|
114
|
+
* ], ref);
|
|
115
|
+
* // Properties: { id: { type: number, optional: false }, limit: { type: number, optional: true } }
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare function convertParametersToSchema(parameters: OpenAPIV3.ParameterObject[], source: SchemaRef): NormalizedSchema;
|
|
119
|
+
export {};
|
|
120
|
+
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/adapters/openapi/convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EAEd,WAAW,EACX,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,oEAAoE;AACpE,KAAK,aAAa,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC;AAYxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAuE7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,GAAG,WAAW,GAAG,SAAS,CA2C1F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,CAAC,YAAY,EAC9B,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,gBAAgB,CAmElB;AAwCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,SAAS,CAAC,eAAe,EAAE,EACvC,MAAM,EAAE,SAAS,GAChB,gBAAgB,CAsDlB"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔄 OpenAPI Type Converter
|
|
3
|
+
* Converts OpenAPI schemas to NormalizedSchema/NormalizedType
|
|
4
|
+
*
|
|
5
|
+
* This module handles the transformation of OpenAPI 3.x schema objects
|
|
6
|
+
* into the trace-mcp normalized schema format. It supports:
|
|
7
|
+
* - Primitive types (string, number, boolean, integer)
|
|
8
|
+
* - Complex types (object, array)
|
|
9
|
+
* - Composition keywords (allOf, anyOf, oneOf)
|
|
10
|
+
* - Enums and const values
|
|
11
|
+
* - Constraint extraction (min/max, patterns, formats)
|
|
12
|
+
*
|
|
13
|
+
* @module adapters/openapi/convert
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Type guard to check if a schema is a $ref reference object.
|
|
17
|
+
*
|
|
18
|
+
* @param schema - The schema to check
|
|
19
|
+
* @returns True if the schema is a reference object
|
|
20
|
+
*/
|
|
21
|
+
function isRefObject(schema) {
|
|
22
|
+
return '$ref' in schema;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Convert an OpenAPI schema to a NormalizedType.
|
|
26
|
+
*
|
|
27
|
+
* Handles all OpenAPI type constructs:
|
|
28
|
+
* - `$ref` → ref kind
|
|
29
|
+
* - `oneOf`/`anyOf` → union kind
|
|
30
|
+
* - `allOf` → intersection kind
|
|
31
|
+
* - `enum` → union of literals
|
|
32
|
+
* - `const` → literal kind
|
|
33
|
+
* - Primitives → primitive kind
|
|
34
|
+
* - `array` → array kind
|
|
35
|
+
* - `object` → object kind
|
|
36
|
+
*
|
|
37
|
+
* @param schema - The OpenAPI schema to convert
|
|
38
|
+
* @returns The normalized type representation
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Convert a string type
|
|
43
|
+
* const type = convertToNormalizedType({ type: 'string' });
|
|
44
|
+
* // { kind: 'primitive', value: 'string' }
|
|
45
|
+
*
|
|
46
|
+
* // Convert an enum
|
|
47
|
+
* const type = convertToNormalizedType({ enum: ['active', 'inactive'] });
|
|
48
|
+
* // { kind: 'union', variants: [{ kind: 'literal', value: 'active' }, ...] }
|
|
49
|
+
*
|
|
50
|
+
* // Convert an array
|
|
51
|
+
* const type = convertToNormalizedType({ type: 'array', items: { type: 'string' } });
|
|
52
|
+
* // { kind: 'array', element: { kind: 'primitive', value: 'string' } }
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function convertToNormalizedType(schema) {
|
|
56
|
+
// Handle $ref (circular references that weren't dereferenced)
|
|
57
|
+
if (isRefObject(schema)) {
|
|
58
|
+
const name = schema.$ref.split('/').pop() || 'Unknown';
|
|
59
|
+
return { kind: 'ref', name };
|
|
60
|
+
}
|
|
61
|
+
// Handle composition keywords first (oneOf, anyOf, allOf)
|
|
62
|
+
if (schema.oneOf) {
|
|
63
|
+
const variants = schema.oneOf.map(s => convertToNormalizedType(s));
|
|
64
|
+
return { kind: 'union', variants };
|
|
65
|
+
}
|
|
66
|
+
if (schema.anyOf) {
|
|
67
|
+
const variants = schema.anyOf.map(s => convertToNormalizedType(s));
|
|
68
|
+
return { kind: 'union', variants };
|
|
69
|
+
}
|
|
70
|
+
if (schema.allOf) {
|
|
71
|
+
const members = schema.allOf.map(s => convertToNormalizedType(s));
|
|
72
|
+
return { kind: 'intersection', members };
|
|
73
|
+
}
|
|
74
|
+
// Handle enum (before primitive types)
|
|
75
|
+
if (schema.enum && Array.isArray(schema.enum)) {
|
|
76
|
+
return {
|
|
77
|
+
kind: 'union',
|
|
78
|
+
variants: schema.enum.map(v => ({
|
|
79
|
+
kind: 'literal',
|
|
80
|
+
value: v,
|
|
81
|
+
})),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Handle const
|
|
85
|
+
if ('const' in schema && schema.const !== undefined) {
|
|
86
|
+
return { kind: 'literal', value: schema.const };
|
|
87
|
+
}
|
|
88
|
+
// Handle by OpenAPI type keyword
|
|
89
|
+
switch (schema.type) {
|
|
90
|
+
case 'string':
|
|
91
|
+
return { kind: 'primitive', value: 'string' };
|
|
92
|
+
case 'boolean':
|
|
93
|
+
return { kind: 'primitive', value: 'boolean' };
|
|
94
|
+
case 'integer':
|
|
95
|
+
case 'number':
|
|
96
|
+
return { kind: 'primitive', value: 'number' };
|
|
97
|
+
case 'array': {
|
|
98
|
+
const element = schema.items
|
|
99
|
+
? convertToNormalizedType(schema.items)
|
|
100
|
+
: { kind: 'unknown' };
|
|
101
|
+
return { kind: 'array', element };
|
|
102
|
+
}
|
|
103
|
+
case 'object': {
|
|
104
|
+
const nestedSchema = convertToNormalizedSchema(schema, { source: 'openapi', id: '' });
|
|
105
|
+
return { kind: 'object', schema: nestedSchema };
|
|
106
|
+
}
|
|
107
|
+
default:
|
|
108
|
+
// No type specified - check if has properties (implicit object)
|
|
109
|
+
if (schema.properties) {
|
|
110
|
+
const nestedSchema = convertToNormalizedSchema(schema, { source: 'openapi', id: '' });
|
|
111
|
+
return { kind: 'object', schema: nestedSchema };
|
|
112
|
+
}
|
|
113
|
+
return { kind: 'any' };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Extract validation constraints from an OpenAPI schema.
|
|
118
|
+
*
|
|
119
|
+
* Supports the following constraint types:
|
|
120
|
+
* - String: minLength, maxLength, pattern, format
|
|
121
|
+
* - Number: minimum, maximum
|
|
122
|
+
* - Enum: allowed values
|
|
123
|
+
*
|
|
124
|
+
* @param schema - The OpenAPI schema object to extract constraints from
|
|
125
|
+
* @returns Constraints object if any constraints found, undefined otherwise
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const constraints = extractConstraints({
|
|
130
|
+
* type: 'string',
|
|
131
|
+
* minLength: 1,
|
|
132
|
+
* maxLength: 100,
|
|
133
|
+
* pattern: '^[a-z]+$'
|
|
134
|
+
* });
|
|
135
|
+
* // { minLength: 1, maxLength: 100, pattern: '^[a-z]+$' }
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export function extractConstraints(schema) {
|
|
139
|
+
const constraints = {};
|
|
140
|
+
let hasConstraints = false;
|
|
141
|
+
// String constraints
|
|
142
|
+
if (schema.minLength !== undefined) {
|
|
143
|
+
constraints.minLength = schema.minLength;
|
|
144
|
+
hasConstraints = true;
|
|
145
|
+
}
|
|
146
|
+
if (schema.maxLength !== undefined) {
|
|
147
|
+
constraints.maxLength = schema.maxLength;
|
|
148
|
+
hasConstraints = true;
|
|
149
|
+
}
|
|
150
|
+
if (schema.pattern !== undefined) {
|
|
151
|
+
constraints.pattern = schema.pattern;
|
|
152
|
+
hasConstraints = true;
|
|
153
|
+
}
|
|
154
|
+
if (schema.format !== undefined) {
|
|
155
|
+
constraints.format = schema.format;
|
|
156
|
+
hasConstraints = true;
|
|
157
|
+
}
|
|
158
|
+
// Number constraints
|
|
159
|
+
if (schema.minimum !== undefined) {
|
|
160
|
+
constraints.minimum = schema.minimum;
|
|
161
|
+
hasConstraints = true;
|
|
162
|
+
}
|
|
163
|
+
if (schema.maximum !== undefined) {
|
|
164
|
+
constraints.maximum = schema.maximum;
|
|
165
|
+
hasConstraints = true;
|
|
166
|
+
}
|
|
167
|
+
// Enum constraint
|
|
168
|
+
if (schema.enum !== undefined) {
|
|
169
|
+
constraints.enum = schema.enum;
|
|
170
|
+
hasConstraints = true;
|
|
171
|
+
}
|
|
172
|
+
return hasConstraints ? constraints : undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Convert an OpenAPI schema object to a NormalizedSchema.
|
|
176
|
+
*
|
|
177
|
+
* This is the main conversion function for object-like schemas.
|
|
178
|
+
* It extracts properties, required fields, and handles allOf merging.
|
|
179
|
+
*
|
|
180
|
+
* @param schema - The OpenAPI schema object to convert
|
|
181
|
+
* @param source - The SchemaRef identifying the source
|
|
182
|
+
* @param name - Optional name for the schema
|
|
183
|
+
* @returns The normalized schema representation
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const schema = convertToNormalizedSchema({
|
|
188
|
+
* type: 'object',
|
|
189
|
+
* required: ['id', 'name'],
|
|
190
|
+
* properties: {
|
|
191
|
+
* id: { type: 'integer' },
|
|
192
|
+
* name: { type: 'string' },
|
|
193
|
+
* email: { type: 'string', format: 'email' }
|
|
194
|
+
* }
|
|
195
|
+
* }, { source: 'openapi', id: 'schema:User@./api.yaml' }, 'User');
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export function convertToNormalizedSchema(schema, source, name) {
|
|
199
|
+
const properties = {};
|
|
200
|
+
const required = schema.required || [];
|
|
201
|
+
// Handle allOf by merging all constituent schemas
|
|
202
|
+
if (schema.allOf) {
|
|
203
|
+
const merged = mergeAllOfSchemas(schema.allOf);
|
|
204
|
+
return convertToNormalizedSchema(merged, source, name);
|
|
205
|
+
}
|
|
206
|
+
// Extract and convert properties
|
|
207
|
+
if (schema.properties) {
|
|
208
|
+
for (const [propName, propSchema] of Object.entries(schema.properties)) {
|
|
209
|
+
const prop = propSchema;
|
|
210
|
+
const isRequired = required.includes(propName);
|
|
211
|
+
if (isRefObject(prop)) {
|
|
212
|
+
// Handle $ref properties
|
|
213
|
+
const refName = prop.$ref.split('/').pop() || 'Unknown';
|
|
214
|
+
properties[propName] = {
|
|
215
|
+
type: { kind: 'ref', name: refName },
|
|
216
|
+
optional: !isRequired,
|
|
217
|
+
nullable: false,
|
|
218
|
+
readonly: false,
|
|
219
|
+
deprecated: false,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// Handle concrete schema properties
|
|
224
|
+
const isNullable = prop.nullable === true;
|
|
225
|
+
const isDeprecated = prop.deprecated === true;
|
|
226
|
+
const isReadonly = prop.readOnly === true;
|
|
227
|
+
const description = prop.description;
|
|
228
|
+
const constraints = extractConstraints(prop);
|
|
229
|
+
properties[propName] = {
|
|
230
|
+
type: convertToNormalizedType(prop),
|
|
231
|
+
optional: !isRequired,
|
|
232
|
+
nullable: isNullable,
|
|
233
|
+
readonly: isReadonly,
|
|
234
|
+
deprecated: isDeprecated,
|
|
235
|
+
description,
|
|
236
|
+
constraints,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
const result = {
|
|
242
|
+
properties,
|
|
243
|
+
required,
|
|
244
|
+
source,
|
|
245
|
+
};
|
|
246
|
+
if (name) {
|
|
247
|
+
result.name = name;
|
|
248
|
+
}
|
|
249
|
+
// Handle additionalProperties
|
|
250
|
+
if (schema.additionalProperties !== undefined) {
|
|
251
|
+
if (typeof schema.additionalProperties === 'boolean') {
|
|
252
|
+
result.additionalProperties = schema.additionalProperties;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
result.additionalProperties = convertToNormalizedType(schema.additionalProperties);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Merge allOf schemas into a single combined schema object.
|
|
262
|
+
*
|
|
263
|
+
* This function flattens allOf arrays by combining properties
|
|
264
|
+
* and required arrays from all constituent schemas.
|
|
265
|
+
*
|
|
266
|
+
* @param allOf - Array of schemas to merge
|
|
267
|
+
* @returns A single merged schema object
|
|
268
|
+
*
|
|
269
|
+
* @internal
|
|
270
|
+
*/
|
|
271
|
+
function mergeAllOfSchemas(allOf) {
|
|
272
|
+
const merged = {
|
|
273
|
+
type: 'object',
|
|
274
|
+
properties: {},
|
|
275
|
+
required: [],
|
|
276
|
+
};
|
|
277
|
+
for (const schema of allOf) {
|
|
278
|
+
if (isRefObject(schema)) {
|
|
279
|
+
// Skip refs in merge - they should be dereferenced already
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
// Merge properties
|
|
283
|
+
if (schema.properties) {
|
|
284
|
+
merged.properties = { ...merged.properties, ...schema.properties };
|
|
285
|
+
}
|
|
286
|
+
// Merge required arrays
|
|
287
|
+
if (schema.required) {
|
|
288
|
+
merged.required = [...(merged.required || []), ...schema.required];
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return merged;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Convert an array of OpenAPI parameters to a NormalizedSchema.
|
|
295
|
+
*
|
|
296
|
+
* This handles path, query, and header parameters, converting
|
|
297
|
+
* each to a property in the resulting schema.
|
|
298
|
+
*
|
|
299
|
+
* @param parameters - Array of OpenAPI parameter objects
|
|
300
|
+
* @param source - The SchemaRef identifying the source
|
|
301
|
+
* @returns A normalized schema with parameters as properties
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const schema = convertParametersToSchema([
|
|
306
|
+
* { name: 'id', in: 'path', required: true, schema: { type: 'integer' } },
|
|
307
|
+
* { name: 'limit', in: 'query', required: false, schema: { type: 'integer' } }
|
|
308
|
+
* ], ref);
|
|
309
|
+
* // Properties: { id: { type: number, optional: false }, limit: { type: number, optional: true } }
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
export function convertParametersToSchema(parameters, source) {
|
|
313
|
+
const properties = {};
|
|
314
|
+
const required = [];
|
|
315
|
+
for (const param of parameters) {
|
|
316
|
+
const paramSchema = param.schema;
|
|
317
|
+
if (!paramSchema) {
|
|
318
|
+
// Parameter without schema - treat as any
|
|
319
|
+
properties[param.name] = {
|
|
320
|
+
type: { kind: 'any' },
|
|
321
|
+
optional: !param.required,
|
|
322
|
+
nullable: false,
|
|
323
|
+
readonly: false,
|
|
324
|
+
deprecated: param.deprecated || false,
|
|
325
|
+
description: param.description,
|
|
326
|
+
};
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
if (isRefObject(paramSchema)) {
|
|
330
|
+
// Handle $ref parameters
|
|
331
|
+
const refName = paramSchema.$ref.split('/').pop() || 'Unknown';
|
|
332
|
+
properties[param.name] = {
|
|
333
|
+
type: { kind: 'ref', name: refName },
|
|
334
|
+
optional: !param.required,
|
|
335
|
+
nullable: false,
|
|
336
|
+
readonly: false,
|
|
337
|
+
deprecated: param.deprecated || false,
|
|
338
|
+
description: param.description,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// Handle concrete schema parameters
|
|
343
|
+
properties[param.name] = {
|
|
344
|
+
type: convertToNormalizedType(paramSchema),
|
|
345
|
+
optional: !param.required,
|
|
346
|
+
nullable: paramSchema.nullable || false,
|
|
347
|
+
readonly: paramSchema.readOnly || false,
|
|
348
|
+
deprecated: param.deprecated || false,
|
|
349
|
+
description: param.description,
|
|
350
|
+
constraints: extractConstraints(paramSchema),
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
if (param.required) {
|
|
354
|
+
required.push(param.name);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
properties,
|
|
359
|
+
required,
|
|
360
|
+
source,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/adapters/openapi/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 📋 OpenAPI Schema Adapter
|
|
3
|
+
* Extracts schemas from OpenAPI 3.x / Swagger specifications
|
|
4
|
+
*
|
|
5
|
+
* This module provides a complete adapter for working with OpenAPI
|
|
6
|
+
* specifications in the trace-mcp schema extraction framework.
|
|
7
|
+
*
|
|
8
|
+
* ## Features
|
|
9
|
+
* - 📄 Parse OpenAPI 3.x specifications
|
|
10
|
+
* - 🔗 Reference ID parsing and building
|
|
11
|
+
* - 🔄 Type conversion to normalized format
|
|
12
|
+
* - 📊 Constraint extraction (validation rules)
|
|
13
|
+
* - 🗂️ Endpoint and component schema extraction
|
|
14
|
+
*
|
|
15
|
+
* ## Usage
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { OpenAPIAdapter, parseOpenAPIRef } from '@trace-mcp/adapters/openapi';
|
|
18
|
+
* import { registerAdapter } from '@trace-mcp/adapters/registry';
|
|
19
|
+
*
|
|
20
|
+
* // Register the adapter
|
|
21
|
+
* registerAdapter(new OpenAPIAdapter());
|
|
22
|
+
*
|
|
23
|
+
* // Parse a ref ID
|
|
24
|
+
* const ref = parseOpenAPIRef('endpoint:GET:/users@./api.yaml');
|
|
25
|
+
*
|
|
26
|
+
* // Extract a schema
|
|
27
|
+
* const adapter = new OpenAPIAdapter();
|
|
28
|
+
* const schema = await adapter.extract({
|
|
29
|
+
* source: 'openapi',
|
|
30
|
+
* id: 'schema:User@./api.yaml'
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @module adapters/openapi
|
|
35
|
+
*/
|
|
36
|
+
export { OpenAPIAdapter } from './adapter.js';
|
|
37
|
+
export { parseOpenAPIRef, buildOpenAPIRefId, type OpenAPIRef } from './parser.js';
|
|
38
|
+
export { convertToNormalizedSchema, convertToNormalizedType, convertParametersToSchema, extractConstraints, } from './convert.js';
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/openapi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAMlF,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 📋 OpenAPI Schema Adapter
|
|
3
|
+
* Extracts schemas from OpenAPI 3.x / Swagger specifications
|
|
4
|
+
*
|
|
5
|
+
* This module provides a complete adapter for working with OpenAPI
|
|
6
|
+
* specifications in the trace-mcp schema extraction framework.
|
|
7
|
+
*
|
|
8
|
+
* ## Features
|
|
9
|
+
* - 📄 Parse OpenAPI 3.x specifications
|
|
10
|
+
* - 🔗 Reference ID parsing and building
|
|
11
|
+
* - 🔄 Type conversion to normalized format
|
|
12
|
+
* - 📊 Constraint extraction (validation rules)
|
|
13
|
+
* - 🗂️ Endpoint and component schema extraction
|
|
14
|
+
*
|
|
15
|
+
* ## Usage
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { OpenAPIAdapter, parseOpenAPIRef } from '@trace-mcp/adapters/openapi';
|
|
18
|
+
* import { registerAdapter } from '@trace-mcp/adapters/registry';
|
|
19
|
+
*
|
|
20
|
+
* // Register the adapter
|
|
21
|
+
* registerAdapter(new OpenAPIAdapter());
|
|
22
|
+
*
|
|
23
|
+
* // Parse a ref ID
|
|
24
|
+
* const ref = parseOpenAPIRef('endpoint:GET:/users@./api.yaml');
|
|
25
|
+
*
|
|
26
|
+
* // Extract a schema
|
|
27
|
+
* const adapter = new OpenAPIAdapter();
|
|
28
|
+
* const schema = await adapter.extract({
|
|
29
|
+
* source: 'openapi',
|
|
30
|
+
* id: 'schema:User@./api.yaml'
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @module adapters/openapi
|
|
35
|
+
*/
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Main Adapter
|
|
38
|
+
// ============================================================================
|
|
39
|
+
export { OpenAPIAdapter } from './adapter.js';
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// Parser Utilities
|
|
42
|
+
// ============================================================================
|
|
43
|
+
export { parseOpenAPIRef, buildOpenAPIRefId } from './parser.js';
|
|
44
|
+
// ============================================================================
|
|
45
|
+
// Conversion Utilities
|
|
46
|
+
// ============================================================================
|
|
47
|
+
export { convertToNormalizedSchema, convertToNormalizedType, convertParametersToSchema, extractConstraints, } from './convert.js';
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/openapi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAElF,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
|