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,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go stdlib HTTP Handler Detection
|
|
3
|
+
* Detects http.HandleFunc() and http.Handle() patterns
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Detect stdlib HTTP handler registrations
|
|
7
|
+
*/
|
|
8
|
+
export function detectStdlibHandlers(content) {
|
|
9
|
+
const routes = [];
|
|
10
|
+
const lines = content.split('\n');
|
|
11
|
+
for (let i = 0; i < lines.length; i++) {
|
|
12
|
+
const line = lines[i];
|
|
13
|
+
// Match http.HandleFunc("/path", handler)
|
|
14
|
+
const handleFuncMatch = line.match(/http\.HandleFunc\s*\(\s*"([^"]+)"\s*,\s*([^)]+)\)/);
|
|
15
|
+
if (handleFuncMatch) {
|
|
16
|
+
routes.push({
|
|
17
|
+
path: handleFuncMatch[1],
|
|
18
|
+
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
19
|
+
handler: extractHandlerName(handleFuncMatch[2]),
|
|
20
|
+
line: i + 1,
|
|
21
|
+
});
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
// Match http.Handle("/path", handler)
|
|
25
|
+
const handleMatch = line.match(/http\.Handle\s*\(\s*"([^"]+)"\s*,\s*([^)]+)\)/);
|
|
26
|
+
if (handleMatch) {
|
|
27
|
+
routes.push({
|
|
28
|
+
path: handleMatch[1],
|
|
29
|
+
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
30
|
+
handler: extractHandlerName(handleMatch[2]),
|
|
31
|
+
line: i + 1,
|
|
32
|
+
});
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
// Match mux.HandleFunc("/path", handler) - where mux is a *http.ServeMux
|
|
36
|
+
const muxHandleFuncMatch = line.match(/(\w+)\.HandleFunc\s*\(\s*"([^"]+)"\s*,\s*([^)]+)\)/);
|
|
37
|
+
if (muxHandleFuncMatch) {
|
|
38
|
+
const muxVar = muxHandleFuncMatch[1];
|
|
39
|
+
// Skip if it looks like a Chi router (will be handled by chi.ts)
|
|
40
|
+
if (muxVar === 'r' && content.includes('chi.NewRouter')) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
routes.push({
|
|
44
|
+
path: muxHandleFuncMatch[2],
|
|
45
|
+
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
46
|
+
handler: extractHandlerName(muxHandleFuncMatch[3]),
|
|
47
|
+
line: i + 1,
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Match mux.Handle("/path", handler)
|
|
52
|
+
const muxHandleMatch = line.match(/(\w+)\.Handle\s*\(\s*"([^"]+)"\s*,\s*([^)]+)\)/);
|
|
53
|
+
if (muxHandleMatch) {
|
|
54
|
+
const muxVar = muxHandleMatch[1];
|
|
55
|
+
// Skip if it looks like a Gin router (will be handled by gin.ts)
|
|
56
|
+
if (content.includes('gin.Default') || content.includes('gin.New')) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
routes.push({
|
|
60
|
+
path: muxHandleMatch[2],
|
|
61
|
+
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
62
|
+
handler: extractHandlerName(muxHandleMatch[3]),
|
|
63
|
+
line: i + 1,
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return routes;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Extract handler name from handler expression
|
|
72
|
+
*/
|
|
73
|
+
function extractHandlerName(handlerExpr) {
|
|
74
|
+
const trimmed = handlerExpr.trim();
|
|
75
|
+
// Anonymous function
|
|
76
|
+
if (trimmed.startsWith('func(')) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
// http.HandlerFunc wrapper
|
|
80
|
+
const handlerFuncMatch = trimmed.match(/http\.HandlerFunc\s*\(\s*([^)]+)\)/);
|
|
81
|
+
if (handlerFuncMatch) {
|
|
82
|
+
return handlerFuncMatch[1].trim();
|
|
83
|
+
}
|
|
84
|
+
// Struct instance like &healthHandler{}
|
|
85
|
+
const structMatch = trimmed.match(/&?(\w+)\{/);
|
|
86
|
+
if (structMatch) {
|
|
87
|
+
return structMatch[1];
|
|
88
|
+
}
|
|
89
|
+
// Method reference like s.handleUsers
|
|
90
|
+
const methodMatch = trimmed.match(/(\w+)\.(\w+)/);
|
|
91
|
+
if (methodMatch) {
|
|
92
|
+
return `${methodMatch[1]}.${methodMatch[2]}`;
|
|
93
|
+
}
|
|
94
|
+
// Simple function name
|
|
95
|
+
const nameMatch = trimmed.match(/^(\w+)$/);
|
|
96
|
+
if (nameMatch) {
|
|
97
|
+
return nameMatch[1];
|
|
98
|
+
}
|
|
99
|
+
return trimmed;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* StdlibHandler class for stateful route detection
|
|
103
|
+
*/
|
|
104
|
+
export class StdlibHandler {
|
|
105
|
+
/**
|
|
106
|
+
* Detect all stdlib routes in content
|
|
107
|
+
*/
|
|
108
|
+
static detect(content) {
|
|
109
|
+
return detectStdlibHandlers(content);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=stdlib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdlib.js","sourceRoot":"","sources":["../../../../src/languages/go/handlers/stdlib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go Language Parser - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Exports:
|
|
5
|
+
* - GoParser: Main parser class for Go source files
|
|
6
|
+
* - Types: GoSchema, GoRoute, GoStruct, etc.
|
|
7
|
+
* - Utilities: StructExtractor, TagParser, TypeConverter
|
|
8
|
+
* - Handlers: StdlibHandler, ChiHandler, GinHandler
|
|
9
|
+
*/
|
|
10
|
+
export { GoParser } from './parser.js';
|
|
11
|
+
export type { GoField, GoStruct, GoMethod, GoInterface, GoRoute, ParsedTag, GoParseOptions, GoSchema, GoProperty, GoTypeAlias, } from './types.js';
|
|
12
|
+
export { StructExtractor } from './struct-extractor.js';
|
|
13
|
+
export { TagParser, parseJsonTag, parseStructTags, extractTagString } from './tag-parser.js';
|
|
14
|
+
export { TypeConverter, convertGoType } from './type-converter.js';
|
|
15
|
+
export { StdlibHandler, detectStdlibHandlers } from './handlers/stdlib.js';
|
|
16
|
+
export { ChiHandler, detectChiRoutes, extractChiParams } from './handlers/chi.js';
|
|
17
|
+
export { GinHandler, detectGinRoutes, extractGinParams } from './handlers/gin.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/go/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,YAAY,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go Language Parser - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Exports:
|
|
5
|
+
* - GoParser: Main parser class for Go source files
|
|
6
|
+
* - Types: GoSchema, GoRoute, GoStruct, etc.
|
|
7
|
+
* - Utilities: StructExtractor, TagParser, TypeConverter
|
|
8
|
+
* - Handlers: StdlibHandler, ChiHandler, GinHandler
|
|
9
|
+
*/
|
|
10
|
+
// Main parser
|
|
11
|
+
export { GoParser } from './parser.js';
|
|
12
|
+
// Utilities
|
|
13
|
+
export { StructExtractor } from './struct-extractor.js';
|
|
14
|
+
export { TagParser, parseJsonTag, parseStructTags, extractTagString } from './tag-parser.js';
|
|
15
|
+
export { TypeConverter, convertGoType } from './type-converter.js';
|
|
16
|
+
// HTTP Handler detectors
|
|
17
|
+
export { StdlibHandler, detectStdlibHandlers } from './handlers/stdlib.js';
|
|
18
|
+
export { ChiHandler, detectChiRoutes, extractChiParams } from './handlers/chi.js';
|
|
19
|
+
export { GinHandler, detectGinRoutes, extractGinParams } from './handlers/gin.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/go/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgBvC,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go Language Parser
|
|
3
|
+
* Main parser class for Go struct/interface extraction and route detection
|
|
4
|
+
*/
|
|
5
|
+
import type { GoSchema, GoRoute, GoParseOptions } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* GoParser - Parses Go source code to extract schemas and routes
|
|
8
|
+
*
|
|
9
|
+
* Note: This parser is designed for Go-specific extraction and
|
|
10
|
+
* implements its own interface rather than the generic LanguageParser.
|
|
11
|
+
*/
|
|
12
|
+
export declare class GoParser {
|
|
13
|
+
readonly name = "go";
|
|
14
|
+
readonly filePatterns: string[];
|
|
15
|
+
readonly extensions: string[];
|
|
16
|
+
private structExtractor;
|
|
17
|
+
private typeConverter;
|
|
18
|
+
private tagParser;
|
|
19
|
+
constructor();
|
|
20
|
+
/**
|
|
21
|
+
* Check if this parser can handle the given file
|
|
22
|
+
*/
|
|
23
|
+
canParse(filePath: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Extract schemas (structs and interfaces) from Go source content
|
|
26
|
+
*/
|
|
27
|
+
extractSchemas(options: GoParseOptions): Promise<GoSchema[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Extract HTTP routes from Go source content
|
|
30
|
+
*/
|
|
31
|
+
extractRoutes(options: GoParseOptions): Promise<GoRoute[]>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/languages/go/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAY,MAAM,YAAY,CAAC;AAS9E;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,QAAQ;IACrB,QAAQ,CAAC,YAAY,WAAe;IACpC,QAAQ,CAAC,UAAU,WAAW;IAE9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;;IAQ7B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsClE;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA0BjE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go Language Parser
|
|
3
|
+
* Main parser class for Go struct/interface extraction and route detection
|
|
4
|
+
*/
|
|
5
|
+
import { StructExtractor } from './struct-extractor.js';
|
|
6
|
+
import { TagParser } from './tag-parser.js';
|
|
7
|
+
import { TypeConverter } from './type-converter.js';
|
|
8
|
+
import { StdlibHandler } from './handlers/stdlib.js';
|
|
9
|
+
import { ChiHandler } from './handlers/chi.js';
|
|
10
|
+
import { GinHandler } from './handlers/gin.js';
|
|
11
|
+
/**
|
|
12
|
+
* GoParser - Parses Go source code to extract schemas and routes
|
|
13
|
+
*
|
|
14
|
+
* Note: This parser is designed for Go-specific extraction and
|
|
15
|
+
* implements its own interface rather than the generic LanguageParser.
|
|
16
|
+
*/
|
|
17
|
+
export class GoParser {
|
|
18
|
+
name = 'go';
|
|
19
|
+
filePatterns = ['**/*.go'];
|
|
20
|
+
extensions = ['.go'];
|
|
21
|
+
structExtractor;
|
|
22
|
+
typeConverter;
|
|
23
|
+
tagParser;
|
|
24
|
+
constructor() {
|
|
25
|
+
this.tagParser = new TagParser();
|
|
26
|
+
this.structExtractor = new StructExtractor(this.tagParser);
|
|
27
|
+
this.typeConverter = new TypeConverter();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if this parser can handle the given file
|
|
31
|
+
*/
|
|
32
|
+
canParse(filePath) {
|
|
33
|
+
return filePath.endsWith('.go') && !filePath.endsWith('.go.bak');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Extract schemas (structs and interfaces) from Go source content
|
|
37
|
+
*/
|
|
38
|
+
async extractSchemas(options) {
|
|
39
|
+
const { content, filePath } = options;
|
|
40
|
+
const schemas = [];
|
|
41
|
+
// Handle empty or invalid content
|
|
42
|
+
if (!content || content.trim() === '') {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
// Extract type aliases first for type resolution
|
|
46
|
+
const typeAliases = this.structExtractor.extractTypeAliases(content);
|
|
47
|
+
this.typeConverter.registerAliases(typeAliases);
|
|
48
|
+
// Extract structs
|
|
49
|
+
const structs = this.structExtractor.extract(content, filePath);
|
|
50
|
+
const structMap = new Map(structs.map(s => [s.name, s]));
|
|
51
|
+
// Convert structs to schemas
|
|
52
|
+
for (const struct of structs) {
|
|
53
|
+
const schema = this.typeConverter.structToSchema(struct, structMap);
|
|
54
|
+
schemas.push(schema);
|
|
55
|
+
}
|
|
56
|
+
// Extract interfaces
|
|
57
|
+
const interfaces = this.structExtractor.extractInterfaces(content, filePath);
|
|
58
|
+
for (const iface of interfaces) {
|
|
59
|
+
schemas.push({
|
|
60
|
+
name: iface.name,
|
|
61
|
+
type: 'interface',
|
|
62
|
+
description: iface.description,
|
|
63
|
+
methods: iface.methods,
|
|
64
|
+
sourceLocation: iface.sourceLocation,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return schemas;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract HTTP routes from Go source content
|
|
71
|
+
*/
|
|
72
|
+
async extractRoutes(options) {
|
|
73
|
+
const { content } = options;
|
|
74
|
+
const routes = [];
|
|
75
|
+
if (!content || content.trim() === '') {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
// Detect stdlib routes
|
|
80
|
+
const stdlibRoutes = StdlibHandler.detect(content);
|
|
81
|
+
routes.push(...stdlibRoutes);
|
|
82
|
+
// Detect Chi routes
|
|
83
|
+
const chiRoutes = ChiHandler.detect(content);
|
|
84
|
+
routes.push(...chiRoutes);
|
|
85
|
+
// Detect Gin routes
|
|
86
|
+
const ginRoutes = GinHandler.detect(content);
|
|
87
|
+
routes.push(...ginRoutes);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Return partial results on error
|
|
91
|
+
}
|
|
92
|
+
return routes;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/languages/go/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go Struct Extractor
|
|
3
|
+
* Extracts struct and interface definitions from Go source code
|
|
4
|
+
* Updated: 2024-12-31 CRLF handling and pointer stripping
|
|
5
|
+
*/
|
|
6
|
+
import type { GoStruct, GoInterface, GoTypeAlias } from './types.js';
|
|
7
|
+
import { TagParser } from './tag-parser.js';
|
|
8
|
+
/**
|
|
9
|
+
* StructExtractor class for parsing Go structs from source code
|
|
10
|
+
*/
|
|
11
|
+
export declare class StructExtractor {
|
|
12
|
+
private tagParser;
|
|
13
|
+
constructor(tagParser?: TagParser);
|
|
14
|
+
/**
|
|
15
|
+
* Extract all structs from Go source code
|
|
16
|
+
*/
|
|
17
|
+
extract(content: string, filePath?: string): GoStruct[];
|
|
18
|
+
/**
|
|
19
|
+
* Extract all interfaces from Go source code
|
|
20
|
+
*/
|
|
21
|
+
extractInterfaces(content: string, filePath?: string): GoInterface[];
|
|
22
|
+
/**
|
|
23
|
+
* Extract type aliases from Go source code
|
|
24
|
+
*/
|
|
25
|
+
extractTypeAliases(content: string): GoTypeAlias[];
|
|
26
|
+
/**
|
|
27
|
+
* Parse struct fields from lines of struct body
|
|
28
|
+
*/
|
|
29
|
+
private parseStructFields;
|
|
30
|
+
/**
|
|
31
|
+
* Parse a single field line
|
|
32
|
+
*/
|
|
33
|
+
private parseFieldLine;
|
|
34
|
+
/**
|
|
35
|
+
* Parse embedded types from lines of struct body
|
|
36
|
+
*/
|
|
37
|
+
private parseEmbeddedTypes;
|
|
38
|
+
/**
|
|
39
|
+
* Parse interface methods from lines of interface body
|
|
40
|
+
*/
|
|
41
|
+
private parseInterfaceMethods;
|
|
42
|
+
/**
|
|
43
|
+
* Parse method parameters from parameter string
|
|
44
|
+
*/
|
|
45
|
+
private parseMethodParams;
|
|
46
|
+
/**
|
|
47
|
+
* Parse return types from return string
|
|
48
|
+
*/
|
|
49
|
+
private parseReturnTypes;
|
|
50
|
+
/**
|
|
51
|
+
* Extract comment above a struct/interface definition
|
|
52
|
+
*/
|
|
53
|
+
private extractComment;
|
|
54
|
+
/**
|
|
55
|
+
* Extract inline comment for a field
|
|
56
|
+
*/
|
|
57
|
+
private extractFieldComment;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=struct-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"struct-extractor.d.ts","sourceRoot":"","sources":["../../../src/languages/go/struct-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EAEX,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAY;gBAEjB,SAAS,CAAC,EAAE,SAAS;IAIjC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE;IAsFvD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IA2EpE;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE;IA6ClD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsGtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4C1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsD7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAqB5B"}
|