codesift-mcp 0.4.0 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -25
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +8 -6
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/platform.d.ts.map +1 -1
- package/dist/cli/platform.js +12 -14
- package/dist/cli/platform.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +30 -6
- package/dist/cli/setup.js.map +1 -1
- package/dist/formatters.d.ts +2 -2
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +23 -0
- package/dist/formatters.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +21 -21
- package/dist/parser/extractors/php.d.ts.map +1 -1
- package/dist/parser/extractors/php.js +37 -29
- package/dist/parser/extractors/php.js.map +1 -1
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +43 -0
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/parse-cache.d.ts +39 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +87 -0
- package/dist/parser/parse-cache.js.map +1 -0
- package/dist/parser/parser-manager.d.ts +1 -1
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +14 -5
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/stub-languages.d.ts +2 -0
- package/dist/parser/stub-languages.d.ts.map +1 -0
- package/dist/parser/stub-languages.js +5 -0
- package/dist/parser/stub-languages.js.map +1 -0
- package/dist/register-tool-loaders.d.ts +130 -0
- package/dist/register-tool-loaders.d.ts.map +1 -0
- package/dist/register-tool-loaders.js +212 -0
- package/dist/register-tool-loaders.js.map +1 -0
- package/dist/register-tools.d.ts +2 -2
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +355 -634
- package/dist/register-tools.js.map +1 -1
- package/dist/search/tool-ranker.d.ts +90 -0
- package/dist/search/tool-ranker.d.ts.map +1 -0
- package/dist/search/tool-ranker.js +420 -0
- package/dist/search/tool-ranker.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +23 -14
- package/dist/server.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +4 -1
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/tools/astro-actions.d.ts +54 -0
- package/dist/tools/astro-actions.d.ts.map +1 -0
- package/dist/tools/astro-actions.js +561 -0
- package/dist/tools/astro-actions.js.map +1 -0
- package/dist/tools/astro-audit.d.ts +87 -0
- package/dist/tools/astro-audit.d.ts.map +1 -0
- package/dist/tools/astro-audit.js +345 -0
- package/dist/tools/astro-audit.js.map +1 -0
- package/dist/tools/astro-content-collections.d.ts +44 -0
- package/dist/tools/astro-content-collections.d.ts.map +1 -0
- package/dist/tools/astro-content-collections.js +630 -0
- package/dist/tools/astro-content-collections.js.map +1 -0
- package/dist/tools/astro-islands.d.ts +3 -1
- package/dist/tools/astro-islands.d.ts.map +1 -1
- package/dist/tools/astro-islands.js +19 -4
- package/dist/tools/astro-islands.js.map +1 -1
- package/dist/tools/astro-migration.d.ts +31 -0
- package/dist/tools/astro-migration.d.ts.map +1 -0
- package/dist/tools/astro-migration.js +378 -0
- package/dist/tools/astro-migration.js.map +1 -0
- package/dist/tools/async-correctness.d.ts +26 -0
- package/dist/tools/async-correctness.d.ts.map +1 -0
- package/dist/tools/async-correctness.js +166 -0
- package/dist/tools/async-correctness.js.map +1 -0
- package/dist/tools/django-view-security-tools.d.ts +32 -0
- package/dist/tools/django-view-security-tools.d.ts.map +1 -0
- package/dist/tools/django-view-security-tools.js +184 -0
- package/dist/tools/django-view-security-tools.js.map +1 -0
- package/dist/tools/fastapi-depends.d.ts +63 -0
- package/dist/tools/fastapi-depends.d.ts.map +1 -0
- package/dist/tools/fastapi-depends.js +191 -0
- package/dist/tools/fastapi-depends.js.map +1 -0
- package/dist/tools/hono-analyze-app.js +1 -9
- package/dist/tools/hono-analyze-app.js.map +1 -1
- package/dist/tools/hono-api-contract.d.ts.map +1 -1
- package/dist/tools/hono-api-contract.js +41 -9
- package/dist/tools/hono-api-contract.js.map +1 -1
- package/dist/tools/hono-context-flow.js +1 -9
- package/dist/tools/hono-context-flow.js.map +1 -1
- package/dist/tools/hono-dead-routes.d.ts.map +1 -1
- package/dist/tools/hono-dead-routes.js +2 -9
- package/dist/tools/hono-dead-routes.js.map +1 -1
- package/dist/tools/hono-entry-resolver.d.ts +27 -0
- package/dist/tools/hono-entry-resolver.d.ts.map +1 -0
- package/dist/tools/hono-entry-resolver.js +31 -0
- package/dist/tools/hono-entry-resolver.js.map +1 -0
- package/dist/tools/hono-inline-analyze.js +1 -9
- package/dist/tools/hono-inline-analyze.js.map +1 -1
- package/dist/tools/hono-middleware-chain.d.ts +24 -6
- package/dist/tools/hono-middleware-chain.d.ts.map +1 -1
- package/dist/tools/hono-middleware-chain.js +77 -40
- package/dist/tools/hono-middleware-chain.js.map +1 -1
- package/dist/tools/hono-modules.js +1 -9
- package/dist/tools/hono-modules.js.map +1 -1
- package/dist/tools/hono-response-types.js +1 -9
- package/dist/tools/hono-response-types.js.map +1 -1
- package/dist/tools/hono-rpc-types.js +1 -9
- package/dist/tools/hono-rpc-types.js.map +1 -1
- package/dist/tools/hono-security.d.ts +14 -4
- package/dist/tools/hono-security.d.ts.map +1 -1
- package/dist/tools/hono-security.js +185 -14
- package/dist/tools/hono-security.js.map +1 -1
- package/dist/tools/hono-visualize.js +1 -9
- package/dist/tools/hono-visualize.js.map +1 -1
- package/dist/tools/nest-ext-tools.d.ts +115 -0
- package/dist/tools/nest-ext-tools.d.ts.map +1 -1
- package/dist/tools/nest-ext-tools.js +393 -0
- package/dist/tools/nest-ext-tools.js.map +1 -1
- package/dist/tools/nest-tools.d.ts +27 -0
- package/dist/tools/nest-tools.d.ts.map +1 -1
- package/dist/tools/nest-tools.js +137 -37
- package/dist/tools/nest-tools.js.map +1 -1
- package/dist/tools/nextjs-component-readers.d.ts +101 -0
- package/dist/tools/nextjs-component-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-component-readers.js +287 -0
- package/dist/tools/nextjs-component-readers.js.map +1 -0
- package/dist/tools/nextjs-component-tools.d.ts +8 -78
- package/dist/tools/nextjs-component-tools.d.ts.map +1 -1
- package/dist/tools/nextjs-component-tools.js +9 -257
- package/dist/tools/nextjs-component-tools.js.map +1 -1
- package/dist/tools/nextjs-framework-audit-tools.d.ts +24 -1
- package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -1
- package/dist/tools/nextjs-framework-audit-tools.js +184 -1
- package/dist/tools/nextjs-framework-audit-tools.js.map +1 -1
- package/dist/tools/nextjs-route-readers.d.ts +81 -0
- package/dist/tools/nextjs-route-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-route-readers.js +340 -0
- package/dist/tools/nextjs-route-readers.js.map +1 -0
- package/dist/tools/nextjs-route-tools.d.ts +7 -71
- package/dist/tools/nextjs-route-tools.d.ts.map +1 -1
- package/dist/tools/nextjs-route-tools.js +9 -327
- package/dist/tools/nextjs-route-tools.js.map +1 -1
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +92 -2
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/php-tools.d.ts +14 -5
- package/dist/tools/php-tools.d.ts.map +1 -1
- package/dist/tools/php-tools.js +166 -64
- package/dist/tools/php-tools.js.map +1 -1
- package/dist/tools/plan-turn-tools.d.ts +89 -0
- package/dist/tools/plan-turn-tools.d.ts.map +1 -0
- package/dist/tools/plan-turn-tools.js +508 -0
- package/dist/tools/plan-turn-tools.js.map +1 -0
- package/dist/tools/project-tools.d.ts +1 -1
- package/dist/tools/project-tools.js +1 -1
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/pydantic-models.d.ts +46 -0
- package/dist/tools/pydantic-models.d.ts.map +1 -0
- package/dist/tools/pydantic-models.js +249 -0
- package/dist/tools/pydantic-models.js.map +1 -0
- package/dist/tools/python-audit.d.ts +40 -0
- package/dist/tools/python-audit.d.ts.map +1 -0
- package/dist/tools/python-audit.js +244 -0
- package/dist/tools/python-audit.js.map +1 -0
- package/dist/tools/python-constants-tools.d.ts +44 -0
- package/dist/tools/python-constants-tools.d.ts.map +1 -0
- package/dist/tools/python-constants-tools.js +525 -0
- package/dist/tools/python-constants-tools.js.map +1 -0
- package/dist/tools/react-tools.d.ts +46 -1
- package/dist/tools/react-tools.d.ts.map +1 -1
- package/dist/tools/react-tools.js +126 -1
- package/dist/tools/react-tools.js.map +1 -1
- package/dist/tools/review-diff-tools.d.ts +5 -0
- package/dist/tools/review-diff-tools.d.ts.map +1 -1
- package/dist/tools/review-diff-tools.js +109 -3
- package/dist/tools/review-diff-tools.js.map +1 -1
- package/dist/tools/search-tools.d.ts +3 -2
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +16 -3
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/sql-tools.d.ts +40 -0
- package/dist/tools/sql-tools.d.ts.map +1 -1
- package/dist/tools/sql-tools.js +123 -0
- package/dist/tools/sql-tools.js.map +1 -1
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +7 -10
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/taint-tools.d.ts +43 -0
- package/dist/tools/taint-tools.d.ts.map +1 -0
- package/dist/tools/taint-tools.js +922 -0
- package/dist/tools/taint-tools.js.map +1 -0
- package/dist/utils/import-graph.d.ts +6 -0
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +43 -7
- package/dist/utils/import-graph.js.map +1 -1
- package/package.json +3 -3
- package/rules/codesift.md +51 -13
- package/rules/codesift.mdc +51 -13
- package/rules/codex.md +51 -13
- package/rules/gemini.md +51 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastapi-depends.js","sourceRoot":"","sources":["../../src/tools/fastapi-depends.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
import { getCodeIndex } from "./index-tools.js";
|
|
11
11
|
import { honoCache } from "../cache/hono-cache.js";
|
|
12
12
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
13
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
13
14
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
14
|
-
import { join } from "node:path";
|
|
15
15
|
export async function analyzeHonoApp(repo, entryFile, forceRefresh) {
|
|
16
16
|
const index = await getCodeIndex(repo);
|
|
17
17
|
if (!index) {
|
|
@@ -91,12 +91,4 @@ export async function analyzeHonoApp(repo, entryFile, forceRefresh) {
|
|
|
91
91
|
files_used_count: model.files_used.length,
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
|
-
function resolveHonoEntryFile(index) {
|
|
95
|
-
for (const sym of index.symbols) {
|
|
96
|
-
if (sym.source && /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sym.source)) {
|
|
97
|
-
return join(index.root, sym.file);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
94
|
//# sourceMappingURL=hono-analyze-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-analyze-app.js","sourceRoot":"","sources":["../../src/tools/hono-analyze-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hono-analyze-app.js","sourceRoot":"","sources":["../../src/tools/hono-analyze-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-api-contract.d.ts","sourceRoot":"","sources":["../../src/tools/hono-api-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,GAAE,cAA0B,GACjC,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"hono-api-contract.d.ts","sourceRoot":"","sources":["../../src/tools/hono-api-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,GAAE,cAA0B,GACjC,OAAO,CAAC,iBAAiB,CAAC,CA4D5B"}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
import { getCodeIndex } from "./index-tools.js";
|
|
10
10
|
import { honoCache } from "../cache/hono-cache.js";
|
|
11
11
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
12
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
12
13
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
13
|
-
import { join } from "node:path";
|
|
14
14
|
export async function extractApiContract(repo, entryFile, format = "openapi") {
|
|
15
15
|
const index = await getCodeIndex(repo);
|
|
16
16
|
if (!index)
|
|
@@ -54,7 +54,9 @@ export async function extractApiContract(repo, entryFile, format = "openapi") {
|
|
|
54
54
|
"x-hono-source": "createRoute",
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
// Inferred from regular routes
|
|
57
|
+
// Inferred from regular routes. When Phase 2 inline_analysis is available,
|
|
58
|
+
// build a real responses object from the extracted c.json/text/html/error
|
|
59
|
+
// emissions instead of a generic "200 Success" stub.
|
|
58
60
|
for (const route of model.routes) {
|
|
59
61
|
if (route.openapi_route_id)
|
|
60
62
|
continue; // already covered above
|
|
@@ -62,19 +64,49 @@ export async function extractApiContract(repo, entryFile, format = "openapi") {
|
|
|
62
64
|
if (!paths[pathKey])
|
|
63
65
|
paths[pathKey] = {};
|
|
64
66
|
paths[pathKey][route.method.toLowerCase()] = {
|
|
65
|
-
responses:
|
|
66
|
-
"x-hono-source": "inferred",
|
|
67
|
+
responses: buildInferredResponses(route),
|
|
68
|
+
"x-hono-source": route.inline_analysis ? "inline_analysis" : "inferred",
|
|
67
69
|
"x-hono-file": route.file,
|
|
68
70
|
};
|
|
69
71
|
}
|
|
70
72
|
return { format, paths };
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Build an OpenAPI-style `responses` object from a route's inline_analysis.
|
|
76
|
+
* When inline_analysis is absent (e.g. named-handler routes), falls back to
|
|
77
|
+
* the generic "200 Success" stub to preserve Phase 1 behavior.
|
|
78
|
+
*/
|
|
79
|
+
function buildInferredResponses(route) {
|
|
80
|
+
if (!route.inline_analysis) {
|
|
81
|
+
return { "200": { description: "Success (inferred)" } };
|
|
82
|
+
}
|
|
83
|
+
const bucket = new Map();
|
|
84
|
+
for (const resp of route.inline_analysis.responses) {
|
|
85
|
+
if (!bucket.has(resp.status)) {
|
|
86
|
+
const desc = resp.shape_hint
|
|
87
|
+
? `${resp.kind} response — ${resp.shape_hint.slice(0, 80)}`
|
|
88
|
+
: `${resp.kind} response`;
|
|
89
|
+
bucket.set(resp.status, { description: desc, source: "c." + resp.kind });
|
|
76
90
|
}
|
|
77
91
|
}
|
|
78
|
-
|
|
92
|
+
for (const err of route.inline_analysis.errors) {
|
|
93
|
+
if (!bucket.has(err.status)) {
|
|
94
|
+
bucket.set(err.status, {
|
|
95
|
+
description: `${err.exception_class} thrown${err.message_hint ? ` — ${err.message_hint.slice(0, 80)}` : ""}`,
|
|
96
|
+
source: "throw " + err.exception_class,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (bucket.size === 0) {
|
|
101
|
+
return { "200": { description: "Success (inferred)" } };
|
|
102
|
+
}
|
|
103
|
+
const result = {};
|
|
104
|
+
for (const [status, info] of [...bucket.entries()].sort((a, b) => a[0] - b[0])) {
|
|
105
|
+
result[String(status)] = {
|
|
106
|
+
description: info.description,
|
|
107
|
+
"x-hono-emission-source": info.source,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
79
111
|
}
|
|
80
112
|
//# sourceMappingURL=hono-api-contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-api-contract.js","sourceRoot":"","sources":["../../src/tools/hono-api-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hono-api-contract.js","sourceRoot":"","sources":["../../src/tools/hono-api-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
import { getCodeIndex } from "./index-tools.js";
|
|
10
10
|
import { honoCache } from "../cache/hono-cache.js";
|
|
11
11
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
12
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
12
13
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
13
|
-
import { join } from "node:path";
|
|
14
14
|
export async function traceContextFlow(repo, variable) {
|
|
15
15
|
const index = await getCodeIndex(repo);
|
|
16
16
|
if (!index)
|
|
@@ -67,12 +67,4 @@ export async function traceContextFlow(repo, variable) {
|
|
|
67
67
|
}
|
|
68
68
|
return { context_vars: vars, findings };
|
|
69
69
|
}
|
|
70
|
-
function resolveHonoEntryFile(index) {
|
|
71
|
-
for (const sym of index.symbols) {
|
|
72
|
-
if (sym.source && /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sym.source)) {
|
|
73
|
-
return join(index.root, sym.file);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
70
|
//# sourceMappingURL=hono-context-flow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-context-flow.js","sourceRoot":"","sources":["../../src/tools/hono-context-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hono-context-flow.js","sourceRoot":"","sources":["../../src/tools/hono-context-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-dead-routes.d.ts","sourceRoot":"","sources":["../../src/tools/hono-dead-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"hono-dead-routes.d.ts","sourceRoot":"","sources":["../../src/tools/hono-dead-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,4BAA4B,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAiF3B"}
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
import { getCodeIndex } from "./index-tools.js";
|
|
14
14
|
import { honoCache } from "../cache/hono-cache.js";
|
|
15
15
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
16
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
16
17
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
17
|
-
import {
|
|
18
|
+
import { relative } from "node:path";
|
|
18
19
|
import { readFile } from "node:fs/promises";
|
|
19
20
|
import { realpathSync } from "node:fs";
|
|
20
21
|
import { walkDirectory } from "../utils/walk.js";
|
|
@@ -98,12 +99,4 @@ export async function findDeadHonoRoutes(repo) {
|
|
|
98
99
|
note: HEURISTIC_NOTE,
|
|
99
100
|
};
|
|
100
101
|
}
|
|
101
|
-
function resolveHonoEntryFile(index) {
|
|
102
|
-
for (const sym of index.symbols) {
|
|
103
|
-
if (sym.source && /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sym.source)) {
|
|
104
|
-
return join(index.root, sym.file);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
102
|
//# sourceMappingURL=hono-dead-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-dead-routes.js","sourceRoot":"","sources":["../../src/tools/hono-dead-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hono-dead-routes.js","sourceRoot":"","sources":["../../src/tools/hono-dead-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Hono entry-file resolution. Used by all 13 Hono tools to locate the
|
|
3
|
+
* `new Hono()` or `new OpenAPIHono()` instantiation in the indexed symbols.
|
|
4
|
+
*
|
|
5
|
+
* Previously this helper was copy-pasted into every tool file, violating DRY.
|
|
6
|
+
* A single bug in entry detection would have required 13 fixes; a single
|
|
7
|
+
* improvement required 13 edits.
|
|
8
|
+
*/
|
|
9
|
+
interface IndexSymbol {
|
|
10
|
+
source?: string | undefined;
|
|
11
|
+
file: string;
|
|
12
|
+
}
|
|
13
|
+
interface IndexLike {
|
|
14
|
+
symbols: IndexSymbol[];
|
|
15
|
+
root: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the entry file for a Hono app by scanning indexed symbol sources
|
|
19
|
+
* for `new Hono(...)` / `new OpenAPIHono(...)`. Returns the absolute path
|
|
20
|
+
* joined from index.root, or null if no such symbol exists.
|
|
21
|
+
*
|
|
22
|
+
* Uses first-match semantics. In a monorepo with multiple Hono apps, the
|
|
23
|
+
* caller is responsible for disambiguation (e.g. via workspace filter).
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveHonoEntryFile(index: IndexLike): string | null;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=hono-entry-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-entry-resolver.d.ts","sourceRoot":"","sources":["../../src/tools/hono-entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAQD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAOpE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Hono entry-file resolution. Used by all 13 Hono tools to locate the
|
|
3
|
+
* `new Hono()` or `new OpenAPIHono()` instantiation in the indexed symbols.
|
|
4
|
+
*
|
|
5
|
+
* Previously this helper was copy-pasted into every tool file, violating DRY.
|
|
6
|
+
* A single bug in entry detection would have required 13 fixes; a single
|
|
7
|
+
* improvement required 13 edits.
|
|
8
|
+
*/
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
/**
|
|
11
|
+
* Regex matches `new Hono()`, `new Hono<...>()`, `new OpenAPIHono()`, and
|
|
12
|
+
* `new OpenAPIHono<...>()` — all covered by an optional generic-arg block.
|
|
13
|
+
*/
|
|
14
|
+
const HONO_INSTANTIATION = /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the entry file for a Hono app by scanning indexed symbol sources
|
|
17
|
+
* for `new Hono(...)` / `new OpenAPIHono(...)`. Returns the absolute path
|
|
18
|
+
* joined from index.root, or null if no such symbol exists.
|
|
19
|
+
*
|
|
20
|
+
* Uses first-match semantics. In a monorepo with multiple Hono apps, the
|
|
21
|
+
* caller is responsible for disambiguation (e.g. via workspace filter).
|
|
22
|
+
*/
|
|
23
|
+
export function resolveHonoEntryFile(index) {
|
|
24
|
+
for (const sym of index.symbols) {
|
|
25
|
+
if (sym.source && HONO_INSTANTIATION.test(sym.source)) {
|
|
26
|
+
return join(index.root, sym.file);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=hono-entry-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-entry-resolver.js","sourceRoot":"","sources":["../../src/tools/hono-entry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC;;;GAGG;AACH,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgB;IACnD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
import { getCodeIndex } from "./index-tools.js";
|
|
14
14
|
import { honoCache } from "../cache/hono-cache.js";
|
|
15
15
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
16
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
16
17
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
17
|
-
import { join } from "node:path";
|
|
18
18
|
/**
|
|
19
19
|
* @param repo repository identifier
|
|
20
20
|
* @param method optional HTTP method filter (e.g. "GET"); case-insensitive
|
|
@@ -56,12 +56,4 @@ export async function analyzeInlineHandler(repo, method, routePath) {
|
|
|
56
56
|
}
|
|
57
57
|
return { reports, total: reports.length };
|
|
58
58
|
}
|
|
59
|
-
function resolveHonoEntryFile(index) {
|
|
60
|
-
for (const sym of index.symbols) {
|
|
61
|
-
if (sym.source && /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sym.source)) {
|
|
62
|
-
return join(index.root, sym.file);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
59
|
//# sourceMappingURL=hono-inline-analyze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-inline-analyze.js","sourceRoot":"","sources":["../../src/tools/hono-inline-analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hono-inline-analyze.js","sourceRoot":"","sources":["../../src/tools/hono-inline-analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgBhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,MAAe,EACf,SAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,eAAe,IAAI,aAAa,EAAE,CAAC;IAE/D,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAEtE,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IAEjE,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,oBAAoB,GAAG,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,eAAe;YAAE,SAAS;QACrC,IAAI,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY;YAAE,SAAS;QAC5D,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QACpD,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,eAAe;SAChC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -1,22 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* trace_middleware_chain —
|
|
2
|
+
* trace_middleware_chain — middleware chain introspection.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Three query modes (mutually exclusive):
|
|
5
|
+
* 1. Route mode — path + optional method → ordered chain effective for that route
|
|
6
|
+
* 2. Scope mode — scope literal (e.g. "/posts/*") → chain of that specific app.use
|
|
7
|
+
* 3. App-wide mode — no path, no scope → flattened entries from every chain
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
+
* Any mode supports `only_conditional: true` to filter entries down to those
|
|
10
|
+
* whose `applied_when` field is populated (Phase 2 T4 conditional middleware
|
|
11
|
+
* detection). This absorbs the former standalone `trace_conditional_middleware`
|
|
12
|
+
* tool — a scope-filtered or app-wide query with only_conditional=true is
|
|
13
|
+
* equivalent to the old tool's output.
|
|
14
|
+
*
|
|
15
|
+
* Spec: docs/specs/2026-04-10-hono-framework-intelligence-spec.md (Task 16) +
|
|
16
|
+
* docs/specs/2026-04-11-hono-phase-2-plan.md (T7 consolidation)
|
|
9
17
|
*/
|
|
10
18
|
import type { MiddlewareEntry } from "../parser/extractors/hono-model.js";
|
|
19
|
+
export interface MiddlewareChainOptions {
|
|
20
|
+
/** Filter to a specific middleware scope literal (e.g. "/posts/*"). */
|
|
21
|
+
scope?: string;
|
|
22
|
+
/** Return only entries whose applied_when field is populated. */
|
|
23
|
+
only_conditional?: boolean;
|
|
24
|
+
}
|
|
11
25
|
export interface MiddlewareChainResult {
|
|
26
|
+
/** Present only in route mode — describes the route that was looked up. */
|
|
12
27
|
route?: {
|
|
13
28
|
method: string;
|
|
14
29
|
path: string;
|
|
15
30
|
file: string;
|
|
16
31
|
line: number;
|
|
17
32
|
};
|
|
33
|
+
/** Present only in scope / app-wide modes — the middleware scope(s) walked. */
|
|
34
|
+
scopes?: string[];
|
|
18
35
|
chain: MiddlewareEntry[];
|
|
36
|
+
total: number;
|
|
19
37
|
error?: string;
|
|
20
38
|
}
|
|
21
|
-
export declare function traceMiddlewareChain(repo: string, path
|
|
39
|
+
export declare function traceMiddlewareChain(repo: string, path?: string, method?: string, options?: MiddlewareChainOptions): Promise<MiddlewareChainResult>;
|
|
22
40
|
//# sourceMappingURL=hono-middleware-chain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-middleware-chain.d.ts","sourceRoot":"","sources":["../../src/tools/hono-middleware-chain.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hono-middleware-chain.d.ts","sourceRoot":"","sources":["../../src/tools/hono-middleware-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,oCAAoC,CAAC;AAErF,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAiGhC"}
|
|
@@ -1,30 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* trace_middleware_chain —
|
|
2
|
+
* trace_middleware_chain — middleware chain introspection.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Three query modes (mutually exclusive):
|
|
5
|
+
* 1. Route mode — path + optional method → ordered chain effective for that route
|
|
6
|
+
* 2. Scope mode — scope literal (e.g. "/posts/*") → chain of that specific app.use
|
|
7
|
+
* 3. App-wide mode — no path, no scope → flattened entries from every chain
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
+
* Any mode supports `only_conditional: true` to filter entries down to those
|
|
10
|
+
* whose `applied_when` field is populated (Phase 2 T4 conditional middleware
|
|
11
|
+
* detection). This absorbs the former standalone `trace_conditional_middleware`
|
|
12
|
+
* tool — a scope-filtered or app-wide query with only_conditional=true is
|
|
13
|
+
* equivalent to the old tool's output.
|
|
14
|
+
*
|
|
15
|
+
* Spec: docs/specs/2026-04-10-hono-framework-intelligence-spec.md (Task 16) +
|
|
16
|
+
* docs/specs/2026-04-11-hono-phase-2-plan.md (T7 consolidation)
|
|
9
17
|
*/
|
|
10
18
|
import { getCodeIndex } from "./index-tools.js";
|
|
11
19
|
import { honoCache } from "../cache/hono-cache.js";
|
|
12
20
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
21
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
13
22
|
import { matchPath } from "./route-tools.js";
|
|
14
23
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
15
|
-
|
|
16
|
-
export async function traceMiddlewareChain(repo, path, method) {
|
|
24
|
+
export async function traceMiddlewareChain(repo, path, method, options) {
|
|
17
25
|
const index = await getCodeIndex(repo);
|
|
18
26
|
if (!index) {
|
|
19
|
-
return { chain: [], error: `Repository "${repo}" not found` };
|
|
27
|
+
return { chain: [], total: 0, error: `Repository "${repo}" not found` };
|
|
20
28
|
}
|
|
21
29
|
const frameworks = detectFrameworks(index);
|
|
22
30
|
if (!frameworks.has("hono")) {
|
|
23
|
-
return { chain: [], error: "No Hono app detected in this repo" };
|
|
31
|
+
return { chain: [], total: 0, error: "No Hono app detected in this repo" };
|
|
24
32
|
}
|
|
25
33
|
const entryFile = resolveHonoEntryFile(index);
|
|
26
34
|
if (!entryFile) {
|
|
27
|
-
return { chain: [], error: "No Hono app entry file found" };
|
|
35
|
+
return { chain: [], total: 0, error: "No Hono app entry file found" };
|
|
28
36
|
}
|
|
29
37
|
let model;
|
|
30
38
|
try {
|
|
@@ -32,45 +40,74 @@ export async function traceMiddlewareChain(repo, path, method) {
|
|
|
32
40
|
}
|
|
33
41
|
catch (err) {
|
|
34
42
|
const msg = err instanceof Error ? err.message : String(err);
|
|
35
|
-
return { chain: [], error: `Failed to parse Hono app: ${msg}` };
|
|
43
|
+
return { chain: [], total: 0, error: `Failed to parse Hono app: ${msg}` };
|
|
44
|
+
}
|
|
45
|
+
const onlyConditional = options?.only_conditional === true;
|
|
46
|
+
const scopeFilter = options?.scope;
|
|
47
|
+
// ── Route mode ──────────────────────────────────────────────────────────
|
|
48
|
+
if (path !== undefined) {
|
|
49
|
+
const upperMethod = method?.toUpperCase();
|
|
50
|
+
const matchingRoute = model.routes.find((r) => matchPath(r.path, path) && (!upperMethod || r.method === upperMethod));
|
|
51
|
+
if (!matchingRoute) {
|
|
52
|
+
return {
|
|
53
|
+
chain: [],
|
|
54
|
+
total: 0,
|
|
55
|
+
error: `No route matching ${method ?? "ANY"} ${path}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const entries = [];
|
|
59
|
+
for (const mc of model.middleware_chains) {
|
|
60
|
+
const pattern = compileScopePattern(mc.scope_pattern);
|
|
61
|
+
if (pattern.test(matchingRoute.path)) {
|
|
62
|
+
entries.push(...mc.entries);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
entries.sort((a, b) => a.order - b.order);
|
|
66
|
+
const filtered = onlyConditional
|
|
67
|
+
? entries.filter((e) => e.applied_when !== undefined)
|
|
68
|
+
: entries;
|
|
69
|
+
return {
|
|
70
|
+
route: {
|
|
71
|
+
method: matchingRoute.method,
|
|
72
|
+
path: matchingRoute.path,
|
|
73
|
+
file: matchingRoute.file,
|
|
74
|
+
line: matchingRoute.line,
|
|
75
|
+
},
|
|
76
|
+
chain: filtered,
|
|
77
|
+
total: filtered.length,
|
|
78
|
+
};
|
|
36
79
|
}
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
80
|
+
// ── Scope mode ──────────────────────────────────────────────────────────
|
|
81
|
+
if (scopeFilter !== undefined) {
|
|
82
|
+
const chains = model.middleware_chains.filter((mc) => mc.scope === scopeFilter);
|
|
83
|
+
const entries = chains.flatMap((mc) => mc.entries);
|
|
84
|
+
entries.sort((a, b) => a.order - b.order);
|
|
85
|
+
const filtered = onlyConditional
|
|
86
|
+
? entries.filter((e) => e.applied_when !== undefined)
|
|
87
|
+
: entries;
|
|
41
88
|
return {
|
|
42
|
-
|
|
43
|
-
|
|
89
|
+
scopes: chains.map((mc) => mc.scope),
|
|
90
|
+
chain: filtered,
|
|
91
|
+
total: filtered.length,
|
|
44
92
|
};
|
|
45
93
|
}
|
|
46
|
-
//
|
|
47
|
-
const
|
|
94
|
+
// ── App-wide mode ───────────────────────────────────────────────────────
|
|
95
|
+
const allEntries = [];
|
|
96
|
+
const allScopes = [];
|
|
48
97
|
for (const mc of model.middleware_chains) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
chain.push(...mc.entries);
|
|
52
|
-
}
|
|
98
|
+
allScopes.push(mc.scope);
|
|
99
|
+
allEntries.push(...mc.entries);
|
|
53
100
|
}
|
|
54
|
-
|
|
55
|
-
|
|
101
|
+
allEntries.sort((a, b) => a.order - b.order);
|
|
102
|
+
const filtered = onlyConditional
|
|
103
|
+
? allEntries.filter((e) => e.applied_when !== undefined)
|
|
104
|
+
: allEntries;
|
|
56
105
|
return {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
file: matchingRoute.file,
|
|
61
|
-
line: matchingRoute.line,
|
|
62
|
-
},
|
|
63
|
-
chain,
|
|
106
|
+
scopes: allScopes,
|
|
107
|
+
chain: filtered,
|
|
108
|
+
total: filtered.length,
|
|
64
109
|
};
|
|
65
110
|
}
|
|
66
|
-
function resolveHonoEntryFile(index) {
|
|
67
|
-
for (const sym of index.symbols) {
|
|
68
|
-
if (sym.source && /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sym.source)) {
|
|
69
|
-
return join(index.root, sym.file);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
111
|
function compileScopePattern(pattern) {
|
|
75
112
|
// Simple glob→regex: * matches anything (non-greedy-ish for path segments)
|
|
76
113
|
// Handle bare "*" as "match anything"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono-middleware-chain.js","sourceRoot":"","sources":["../../src/tools/hono-middleware-chain.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hono-middleware-chain.js","sourceRoot":"","sources":["../../src/tools/hono-middleware-chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
import { getCodeIndex } from "./index-tools.js";
|
|
16
16
|
import { honoCache } from "../cache/hono-cache.js";
|
|
17
17
|
import { HonoExtractor } from "../parser/extractors/hono.js";
|
|
18
|
+
import { resolveHonoEntryFile } from "./hono-entry-resolver.js";
|
|
18
19
|
import { detectFrameworks } from "../utils/framework-detect.js";
|
|
19
|
-
import { join } from "node:path";
|
|
20
20
|
export async function detectHonoModules(repo) {
|
|
21
21
|
const index = await getCodeIndex(repo);
|
|
22
22
|
if (!index)
|
|
@@ -115,12 +115,4 @@ function scopeToRegex(scope) {
|
|
|
115
115
|
.replace(/\*/g, "[^/]*");
|
|
116
116
|
return new RegExp(`^${escaped}$`);
|
|
117
117
|
}
|
|
118
|
-
function resolveHonoEntryFile(index) {
|
|
119
|
-
for (const sym of index.symbols) {
|
|
120
|
-
if (sym.source && /new\s+(?:Hono|OpenAPIHono)\s*(?:<[^>]*>)?\s*\(/.test(sym.source)) {
|
|
121
|
-
return join(index.root, sym.file);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
118
|
//# sourceMappingURL=hono-modules.js.map
|