@vyuhlabs/dxkit 2.18.1 → 2.20.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/CHANGELOG.md +55 -0
- package/dist/analyzers/flow/csv.d.ts +17 -0
- package/dist/analyzers/flow/csv.d.ts.map +1 -0
- package/dist/analyzers/flow/csv.js +64 -0
- package/dist/analyzers/flow/csv.js.map +1 -0
- package/dist/analyzers/flow/extract.d.ts +64 -0
- package/dist/analyzers/flow/extract.d.ts.map +1 -0
- package/dist/analyzers/flow/extract.js +254 -0
- package/dist/analyzers/flow/extract.js.map +1 -0
- package/dist/analyzers/flow/gather.d.ts +24 -0
- package/dist/analyzers/flow/gather.d.ts.map +1 -0
- package/dist/analyzers/flow/gather.js +50 -0
- package/dist/analyzers/flow/gather.js.map +1 -0
- package/dist/analyzers/flow/model.d.ts +63 -0
- package/dist/analyzers/flow/model.d.ts.map +1 -0
- package/dist/analyzers/flow/model.js +78 -0
- package/dist/analyzers/flow/model.js.map +1 -0
- package/dist/analyzers/flow/normalize.d.ts +76 -0
- package/dist/analyzers/flow/normalize.d.ts.map +1 -0
- package/dist/analyzers/flow/normalize.js +133 -0
- package/dist/analyzers/flow/normalize.js.map +1 -0
- package/dist/analyzers/flow/spec-source.d.ts +44 -0
- package/dist/analyzers/flow/spec-source.d.ts.map +1 -0
- package/dist/analyzers/flow/spec-source.js +75 -0
- package/dist/analyzers/flow/spec-source.js.map +1 -0
- package/dist/ast/parse.d.ts +71 -0
- package/dist/ast/parse.d.ts.map +1 -0
- package/dist/ast/parse.js +220 -0
- package/dist/ast/parse.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -0
- package/dist/cli.js.map +1 -1
- package/dist/dashboard/graph-adapter.d.ts.map +1 -1
- package/dist/dashboard/graph-adapter.js +1 -4
- package/dist/dashboard/graph-adapter.js.map +1 -1
- package/dist/explore/flow-graph.d.ts +62 -0
- package/dist/explore/flow-graph.d.ts.map +1 -0
- package/dist/explore/flow-graph.js +202 -0
- package/dist/explore/flow-graph.js.map +1 -0
- package/dist/explore/flow-view.d.ts +33 -0
- package/dist/explore/flow-view.d.ts.map +1 -0
- package/dist/explore/flow-view.js +85 -0
- package/dist/explore/flow-view.js.map +1 -0
- package/dist/explore/load.d.ts.map +1 -1
- package/dist/explore/load.js +16 -3
- package/dist/explore/load.js.map +1 -1
- package/dist/explore/queries.d.ts +92 -1
- package/dist/explore/queries.d.ts.map +1 -1
- package/dist/explore/queries.js +142 -0
- package/dist/explore/queries.js.map +1 -1
- package/dist/explore/types.d.ts +56 -3
- package/dist/explore/types.d.ts.map +1 -1
- package/dist/explore/types.js +10 -2
- package/dist/explore/types.js.map +1 -1
- package/dist/flow-cli.d.ts +38 -0
- package/dist/flow-cli.d.ts.map +1 -0
- package/dist/flow-cli.js +200 -0
- package/dist/flow-cli.js.map +1 -0
- package/dist/languages/index.d.ts +15 -2
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +18 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/types.d.ts +106 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +32 -0
- package/dist/languages/typescript.js.map +1 -1
- package/package.json +4 -2
package/dist/flow-cli.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `vyuh-dxkit flow extract` — the flow-map CSV command. Thin CLI wrapper: it
|
|
4
|
+
* resolves roots + config, calls the gather engine, and writes the parity CSVs.
|
|
5
|
+
* All analysis lives in `src/analyzers/flow/`; this file only wires I/O.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.runFlowExtract = runFlowExtract;
|
|
42
|
+
exports.runFlowMap = runFlowMap;
|
|
43
|
+
exports.runFlowTrace = runFlowTrace;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const logger = __importStar(require("./logger"));
|
|
47
|
+
const gather_1 = require("./analyzers/flow/gather");
|
|
48
|
+
const csv_1 = require("./analyzers/flow/csv");
|
|
49
|
+
const model_1 = require("./analyzers/flow/model");
|
|
50
|
+
const flow_view_1 = require("./explore/flow-view");
|
|
51
|
+
/** Host-helper strip prefixes from `.dxkit/policy.json:flow.stripUrlPrefixes`. */
|
|
52
|
+
function readStripPrefixes(cwd) {
|
|
53
|
+
try {
|
|
54
|
+
const raw = fs.readFileSync(path.join(cwd, '.dxkit', 'policy.json'), 'utf8');
|
|
55
|
+
const prefixes = JSON.parse(raw)?.flow
|
|
56
|
+
?.stripUrlPrefixes;
|
|
57
|
+
return Array.isArray(prefixes)
|
|
58
|
+
? prefixes.filter((p) => typeof p === 'string')
|
|
59
|
+
: [];
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Emit a machine payload to stdout. In `--json` mode cli.ts routes all logger
|
|
67
|
+
* prose to stderr (`setJsonMode`), so the JSON contract requires writing the
|
|
68
|
+
* payload straight to stdout — never through the logger, which would land it on
|
|
69
|
+
* stderr and corrupt the contract. Mirrors the allowlist / reviewers CLIs.
|
|
70
|
+
*/
|
|
71
|
+
function emitJson(payload) {
|
|
72
|
+
process.stdout.write(JSON.stringify(payload) + '\n');
|
|
73
|
+
}
|
|
74
|
+
function splitPaths(value, cwd) {
|
|
75
|
+
return (value ?? '')
|
|
76
|
+
.split(',')
|
|
77
|
+
.map((s) => s.trim())
|
|
78
|
+
.filter(Boolean)
|
|
79
|
+
.map((s) => path.resolve(cwd, s));
|
|
80
|
+
}
|
|
81
|
+
/** Resolve scan roots from --frontend/--backend, defaulting to cwd (monorepo). */
|
|
82
|
+
function resolveRoots(opts) {
|
|
83
|
+
const roots = [];
|
|
84
|
+
if (opts.frontend)
|
|
85
|
+
roots.push(path.resolve(opts.cwd, opts.frontend));
|
|
86
|
+
if (opts.backend)
|
|
87
|
+
roots.push(path.resolve(opts.cwd, opts.backend));
|
|
88
|
+
if (roots.length === 0)
|
|
89
|
+
roots.push(opts.cwd);
|
|
90
|
+
return roots;
|
|
91
|
+
}
|
|
92
|
+
/** Gather one flow model — shared by extract / map / trace. */
|
|
93
|
+
async function gatherModel(opts) {
|
|
94
|
+
return (0, gather_1.gatherFlowModel)({
|
|
95
|
+
roots: resolveRoots(opts),
|
|
96
|
+
specs: splitPaths(opts.specs, opts.cwd),
|
|
97
|
+
stripUrlPrefixes: readStripPrefixes(opts.cwd),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async function runFlowExtract(opts) {
|
|
101
|
+
logger.header('vyuh-dxkit flow extract');
|
|
102
|
+
const model = await gatherModel(opts);
|
|
103
|
+
const summary = (0, model_1.summarize)(model);
|
|
104
|
+
const outDir = path.resolve(opts.cwd, opts.out ?? 'csv_output');
|
|
105
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
106
|
+
const files = (0, csv_1.flowCsvFiles)(model);
|
|
107
|
+
for (const [name, content] of Object.entries(files)) {
|
|
108
|
+
fs.writeFileSync(path.join(outDir, name), content);
|
|
109
|
+
}
|
|
110
|
+
if (opts.json) {
|
|
111
|
+
emitJson({ ...summary, outDir, files: Object.keys(files) });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const pct = summary.calls ? Math.round((100 * summary.resolved) / summary.calls) : 0;
|
|
115
|
+
logger.success(`${summary.calls} client calls, ${summary.routes} routes · ${summary.resolved}/${summary.calls} bound (${pct}%)`);
|
|
116
|
+
logger.info(`CSVs written to ${outDir} — ${Object.keys(files).join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* `vyuh-dxkit flow` — the traceability map. Writes the flow overlay onto
|
|
120
|
+
* graph.json (the native artifact the dashboard + gate also read) and prints
|
|
121
|
+
* every served endpoint with how many UI surfaces consume it, plus the
|
|
122
|
+
* served-but-unconsumed set (dead-route or cross-repo candidates).
|
|
123
|
+
*/
|
|
124
|
+
async function runFlowMap(opts) {
|
|
125
|
+
if (!opts.json)
|
|
126
|
+
logger.header('vyuh-dxkit flow');
|
|
127
|
+
const model = await gatherModel(opts);
|
|
128
|
+
const map = (0, flow_view_1.buildFlowMap)(opts.cwd, model);
|
|
129
|
+
if (opts.json) {
|
|
130
|
+
emitJson(map);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
logger.success(`${map.totalEndpoints} endpoints · ${map.totalBindings} UI→API bindings · ${map.unconsumedEndpoints.length} unconsumed`);
|
|
134
|
+
if (map.endpoints.length) {
|
|
135
|
+
logger.info('');
|
|
136
|
+
logger.info('Consumed endpoints (by UI surfaces):');
|
|
137
|
+
for (const row of map.endpoints) {
|
|
138
|
+
const files = row.consumerFiles.slice(0, 3).join(', ');
|
|
139
|
+
const more = row.consumerFiles.length > 3 ? ` +${row.consumerFiles.length - 3} more` : '';
|
|
140
|
+
logger.info(` ${row.endpoint.label} ← ${row.consumerCount} call(s): ${files}${more}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (map.unconsumedEndpoints.length) {
|
|
144
|
+
logger.info('');
|
|
145
|
+
logger.info('Served but unconsumed (dead route or cross-repo consumer):');
|
|
146
|
+
for (const ep of map.unconsumedEndpoints.slice(0, 20)) {
|
|
147
|
+
logger.info(` ${ep.label}`);
|
|
148
|
+
}
|
|
149
|
+
if (map.unconsumedEndpoints.length > 20) {
|
|
150
|
+
logger.info(` … and ${map.unconsumedEndpoints.length - 20} more`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
logger.info('');
|
|
154
|
+
logger.info('Trace one: vyuh-dxkit flow trace "<METHOD> <path>"');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* `vyuh-dxkit flow trace "<METHOD> <path>"` — the full trace for one endpoint:
|
|
158
|
+
* its served-side handler + every UI call site + the change blast radius.
|
|
159
|
+
*/
|
|
160
|
+
async function runFlowTrace(opts) {
|
|
161
|
+
if (!opts.json)
|
|
162
|
+
logger.header('vyuh-dxkit flow trace');
|
|
163
|
+
const model = await gatherModel(opts);
|
|
164
|
+
const { trace, candidates } = (0, flow_view_1.buildFlowTrace)(opts.cwd, model, opts.target);
|
|
165
|
+
if (opts.json) {
|
|
166
|
+
emitJson({ trace, candidates });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
if (!trace.found || !trace.endpoint) {
|
|
170
|
+
logger.fail(`No endpoint matches "${opts.target}".`);
|
|
171
|
+
if (candidates.length) {
|
|
172
|
+
logger.info('Known endpoints:');
|
|
173
|
+
for (const c of candidates.slice(0, 20))
|
|
174
|
+
logger.info(` ${c}`);
|
|
175
|
+
if (candidates.length > 20)
|
|
176
|
+
logger.info(` … and ${candidates.length - 20} more`);
|
|
177
|
+
}
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const ep = trace.endpoint;
|
|
181
|
+
logger.success(ep.label);
|
|
182
|
+
logger.info(` handler: ${trace.handler ?? '(unknown)'} · via: ${ep.via}`);
|
|
183
|
+
logger.info(` served at: ${ep.sourceFile}${ep.line ? `:${ep.line}` : ''}`);
|
|
184
|
+
logger.info('');
|
|
185
|
+
if (trace.consumers.length) {
|
|
186
|
+
logger.info(`Consumed by ${trace.consumers.length} UI call site(s):`);
|
|
187
|
+
for (const c of trace.consumers) {
|
|
188
|
+
const sym = c.symbol ? `${c.symbol} ` : '';
|
|
189
|
+
logger.info(` ${sym}${c.file}${c.line ? `:${c.line}` : ''}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
logger.info('No UI call site in this scan consumes it.');
|
|
194
|
+
}
|
|
195
|
+
const br = trace.blastRadius;
|
|
196
|
+
logger.info('');
|
|
197
|
+
logger.info(`Blast radius: ${br.directConsumers} direct consumer(s) in ${br.consumerFiles} file(s)` +
|
|
198
|
+
(br.upstreamCallers ? `, ${br.upstreamCallers} upstream caller(s)` : ''));
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=flow-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-cli.js","sourceRoot":"","sources":["../src/flow-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DetectedStack } from '../types';
|
|
2
|
-
import type { ArchitecturalShape, DeepSastSupport, LanguageId, LanguageSupport } from './types';
|
|
3
|
-
export type { ArchitecturalShape, LanguageId, LanguageSupport, LintSeverity } from './types';
|
|
2
|
+
import type { ArchitecturalShape, DeepSastSupport, HttpFlowSupport, LanguageId, LanguageSupport } from './types';
|
|
3
|
+
export type { ArchitecturalShape, HttpFlowSupport, LanguageId, LanguageSupport, LintSeverity, } from './types';
|
|
4
4
|
export declare const LANGUAGES: readonly LanguageSupport[];
|
|
5
5
|
export declare function getLanguage(id: LanguageId): LanguageSupport | undefined;
|
|
6
6
|
export declare function detectActiveLanguages(cwd: string): LanguageSupport[];
|
|
@@ -222,6 +222,19 @@ export declare function allRoutePaths(flags: DetectedStack['languages']): string
|
|
|
222
222
|
* Maintainability prose).
|
|
223
223
|
*/
|
|
224
224
|
export declare function allModelPaths(flags: DetectedStack['languages']): string[];
|
|
225
|
+
/**
|
|
226
|
+
* Active packs' `httpFlow` descriptors (defined-only). Consumed by the
|
|
227
|
+
* cross-cutting flow extractor (`src/analyzers/flow/`): it resolves the
|
|
228
|
+
* per-file descriptor by the file's language and uses this union to decide
|
|
229
|
+
* whether flow extraction applies at all. Per Rule 6 the extractor never
|
|
230
|
+
* branches on language id or hardcodes a framework literal — every HTTP
|
|
231
|
+
* client/route construct it recognizes comes from a pack's descriptor here.
|
|
232
|
+
*
|
|
233
|
+
* `recipe-playbook.test.ts` asserts a synthetic pack's `httpFlow`
|
|
234
|
+
* contribution flows through this helper, codifying "flow extraction is
|
|
235
|
+
* pack-driven, not analyzer-by-analyzer."
|
|
236
|
+
*/
|
|
237
|
+
export declare function allHttpFlow(flags: DetectedStack['languages']): HttpFlowSupport[];
|
|
225
238
|
/**
|
|
226
239
|
* Per-bucket union of active packs' test-gap path patterns. Empty
|
|
227
240
|
* arrays for any bucket no pack declares. Consumed by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"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"}
|
package/dist/languages/index.js
CHANGED
|
@@ -22,6 +22,7 @@ exports.allClocLanguageNames = allClocLanguageNames;
|
|
|
22
22
|
exports.allPrimaryComponentPaths = allPrimaryComponentPaths;
|
|
23
23
|
exports.allRoutePaths = allRoutePaths;
|
|
24
24
|
exports.allModelPaths = allModelPaths;
|
|
25
|
+
exports.allHttpFlow = allHttpFlow;
|
|
25
26
|
exports.allTestGapPriorityPaths = allTestGapPriorityPaths;
|
|
26
27
|
exports.dominantVocabulary = dominantVocabulary;
|
|
27
28
|
exports.splitTestFilePatterns = splitTestFilePatterns;
|
|
@@ -338,6 +339,23 @@ function allModelPaths(flags) {
|
|
|
338
339
|
...new Set(activeLanguagesFromFlags(flags).flatMap((l) => l.architecturalShape?.modelPaths ?? [])),
|
|
339
340
|
];
|
|
340
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Active packs' `httpFlow` descriptors (defined-only). Consumed by the
|
|
344
|
+
* cross-cutting flow extractor (`src/analyzers/flow/`): it resolves the
|
|
345
|
+
* per-file descriptor by the file's language and uses this union to decide
|
|
346
|
+
* whether flow extraction applies at all. Per Rule 6 the extractor never
|
|
347
|
+
* branches on language id or hardcodes a framework literal — every HTTP
|
|
348
|
+
* client/route construct it recognizes comes from a pack's descriptor here.
|
|
349
|
+
*
|
|
350
|
+
* `recipe-playbook.test.ts` asserts a synthetic pack's `httpFlow`
|
|
351
|
+
* contribution flows through this helper, codifying "flow extraction is
|
|
352
|
+
* pack-driven, not analyzer-by-analyzer."
|
|
353
|
+
*/
|
|
354
|
+
function allHttpFlow(flags) {
|
|
355
|
+
return activeLanguagesFromFlags(flags)
|
|
356
|
+
.map((l) => l.httpFlow)
|
|
357
|
+
.filter((h) => h !== undefined);
|
|
358
|
+
}
|
|
341
359
|
/**
|
|
342
360
|
* Per-bucket union of active packs' test-gap path patterns. Empty
|
|
343
361
|
* arrays for any bucket no pack declares. Consumed by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,6 +117,84 @@ export interface DeepSastSupport {
|
|
|
117
117
|
* is expected to return findings for it. */
|
|
118
118
|
snykCode?: boolean;
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Per-pack HTTP-flow descriptors: how this language's source expresses
|
|
122
|
+
* outbound HTTP calls (the CONSUMED side) and inbound route declarations
|
|
123
|
+
* (the SERVED side). Declared by each language pack (Rule 6) and consumed
|
|
124
|
+
* through `allHttpFlow` in `src/languages/index.ts`; the cross-cutting flow
|
|
125
|
+
* extractor (`src/analyzers/flow/`) reads the active-pack union and never
|
|
126
|
+
* branches on language id or hardcodes framework literals (`fetch`,
|
|
127
|
+
* `@get`, `router.post`).
|
|
128
|
+
*
|
|
129
|
+
* These are SEMANTIC descriptors matched against the tree-sitter AST — not
|
|
130
|
+
* regexes over text (Rule 5). The extractor finds call expressions /
|
|
131
|
+
* decorators whose callee matches a descriptor, then reads the argument
|
|
132
|
+
* nodes for the method + URL. The descriptors say WHICH constructs are HTTP;
|
|
133
|
+
* the engine reads them structurally.
|
|
134
|
+
*
|
|
135
|
+
* URL normalization (host-helper stripping, `:id`/`{id}`/`${x}` → `{var}`,
|
|
136
|
+
* query stripping) is deliberately NOT here: host helpers are per-APP config
|
|
137
|
+
* (`flow.stripUrlPrefixes`), and param-form canonicalization is uniform
|
|
138
|
+
* across frameworks, so both live in the shared normalizer rather than in a
|
|
139
|
+
* per-language descriptor.
|
|
140
|
+
*
|
|
141
|
+
* These fields are exactly what is needed to extract axios + custom-wrapper
|
|
142
|
+
* client calls from a React frontend and LoopBack `@get`/`@post` + Express
|
|
143
|
+
* `router.<method>` routes — the union that, on a real axios → LoopBack stack,
|
|
144
|
+
* matched-or-beat a hand-tuned regex tool at higher precision.
|
|
145
|
+
*
|
|
146
|
+
* Optional — a pack with no HTTP surface (or none modeled yet) omits it,
|
|
147
|
+
* and the flow extractor sees the empty union for that language.
|
|
148
|
+
*/
|
|
149
|
+
export interface HttpFlowSupport {
|
|
150
|
+
/**
|
|
151
|
+
* Bare-callee identifiers that initiate an outbound HTTP request with the
|
|
152
|
+
* URL as the first argument. The canonical case is the Fetch API
|
|
153
|
+
* `fetch(url, opts)`. Method comes from the `opts.method` option (default
|
|
154
|
+
* GET). Matched on a `call_expression` whose `function` is an identifier
|
|
155
|
+
* in this list.
|
|
156
|
+
*/
|
|
157
|
+
clientCallees?: string[];
|
|
158
|
+
/**
|
|
159
|
+
* Member-method client calls of the form `<base>.<method>(url, ...)`.
|
|
160
|
+
* `methods` are the property names that map to HTTP verbs
|
|
161
|
+
* (`get`/`post`/`put`/`delete`/`patch`); the verb is the method name.
|
|
162
|
+
* `bases`, when present, restricts which receiver identifiers count
|
|
163
|
+
* (`axios`, `http`, `api`, `client`, `request`, ...). When `bases` is
|
|
164
|
+
* omitted, any receiver whose `.<method>(...)` first argument is a
|
|
165
|
+
* path-like literal is treated as a client call — this covers
|
|
166
|
+
* app-specific wrappers (`requests.get('/x')`, `agent.Articles.del(...)`)
|
|
167
|
+
* that no fixed allowlist can enumerate; the path-like-literal filter
|
|
168
|
+
* keeps non-HTTP `.get`/`.delete` (lodash, Maps) out.
|
|
169
|
+
*/
|
|
170
|
+
clientMethodCallees?: {
|
|
171
|
+
methods: string[];
|
|
172
|
+
bases?: string[];
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Decorator-style route declarations: `@<name>('/path')` on a handler
|
|
176
|
+
* method (LoopBack `@get`, NestJS `@Post`). `<name>` maps to the HTTP
|
|
177
|
+
* verb; the first string/template argument is the route path. Matched on
|
|
178
|
+
* `decorator` nodes whose call callee is an identifier in this list.
|
|
179
|
+
*/
|
|
180
|
+
routeDecorators?: string[];
|
|
181
|
+
/**
|
|
182
|
+
* Router-style route declarations: `<base>.<method>('/path', handler)`
|
|
183
|
+
* (Express `app.get(...)`, `router.post(...)`). `methods` map to verbs;
|
|
184
|
+
* `bases` are the receiver identifiers (`app`, `router`).
|
|
185
|
+
*/
|
|
186
|
+
routeRouterCallees?: {
|
|
187
|
+
methods: string[];
|
|
188
|
+
bases: string[];
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Canonicalize a matched method token to an uppercase HTTP verb where the
|
|
192
|
+
* token differs from the verb. The motivating alias is LoopBack's `del` →
|
|
193
|
+
* `DELETE`. Tokens absent from the map default to upper-casing
|
|
194
|
+
* (`get` → `GET`). Keys are lowercase method tokens.
|
|
195
|
+
*/
|
|
196
|
+
methodAliases?: Record<string, string>;
|
|
197
|
+
}
|
|
120
198
|
/**
|
|
121
199
|
* Everything dxkit needs to know about a language lives in one implementation
|
|
122
200
|
* of this interface. See `src/languages/index.ts` for the registry.
|
|
@@ -312,6 +390,34 @@ export interface LanguageSupport {
|
|
|
312
390
|
* convention and no controllers/components vocabulary maps).
|
|
313
391
|
*/
|
|
314
392
|
architecturalShape?: ArchitecturalShape;
|
|
393
|
+
/**
|
|
394
|
+
* HTTP-flow descriptors for this pack: how its source expresses outbound
|
|
395
|
+
* HTTP calls + inbound route declarations. Consumed through `allHttpFlow`
|
|
396
|
+
* in `src/languages/index.ts` by the cross-cutting flow extractor
|
|
397
|
+
* (`src/analyzers/flow/`) — never a per-language branch and never a
|
|
398
|
+
* hardcoded framework literal in the analyzer (Rule 6 + Rule 5).
|
|
399
|
+
*
|
|
400
|
+
* Optional — a pack with no modeled HTTP surface omits it; the extractor
|
|
401
|
+
* sees the empty union for that language. See `HttpFlowSupport`.
|
|
402
|
+
*/
|
|
403
|
+
httpFlow?: HttpFlowSupport;
|
|
404
|
+
/**
|
|
405
|
+
* Tree-sitter grammars this pack's source files parse with, keyed by file
|
|
406
|
+
* extension (with leading dot). Consumed by the canonical AST layer
|
|
407
|
+
* (`src/ast/`) — the platform's in-process, graphify-independent parser —
|
|
408
|
+
* which maps each LOGICAL grammar name to a concrete grammar artifact. Keep
|
|
409
|
+
* the names logical (`'typescript'`, `'tsx'`, `'javascript'`), not paths, so
|
|
410
|
+
* the AST engine stays swappable behind `src/ast/` without touching packs
|
|
411
|
+
* (Rule 6 + the same swap discipline graphify sits behind).
|
|
412
|
+
*
|
|
413
|
+
* One language can need several grammars by extension: a TypeScript project
|
|
414
|
+
* mixes `.ts` (typescript), `.tsx` (tsx), and `.js`/`.jsx` (javascript).
|
|
415
|
+
*
|
|
416
|
+
* Optional — a pack omits it until its grammar is wired; AST-based features
|
|
417
|
+
* (flow extraction, future graph building) simply skip that language's files
|
|
418
|
+
* until present. See `src/ast/` for the name → artifact resolution.
|
|
419
|
+
*/
|
|
420
|
+
treeSitterGrammars?: Record<string, string>;
|
|
315
421
|
/**
|
|
316
422
|
* D073 (2.4.7): language names cloc emits in its `--json` output
|
|
317
423
|
* for this pack. cloc's per-language keys are NOT 1:1 with file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/languages/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/languages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK/F,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;8DAE0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;8BAC0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;kCAE8B;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;gEAC4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;iDAC6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE9D;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE5D;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,eAAe,CAAC,EAAE;QAChB,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;QAC/C,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC;IAEhE,uDAAuD;IACvD,YAAY,CAAC,EAAE,wBAAwB,CAAC;IAExC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,mBAAmB,CAAC,EAAE;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;IAEF;;;;;;;;;;;;;;;;;;OAkBG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAElC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAyC,MAAM,6BAA6B,CAAC;AAiCnG,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AA6L7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsD5E;AAwND;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAc7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB7F;AAwFD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CA6B3F;AAOD,4GAA4G;AAC5G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CA6BzF;AAicD,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAyC,MAAM,6BAA6B,CAAC;AAiCnG,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AA6L7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsD5E;AAwND;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAc7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB7F;AAwFD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CA6B3F;AAOD,4GAA4G;AAC5G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CA6BzF;AAicD,eAAO,MAAM,UAAU,EAAE,eA4KxB,CAAC"}
|
|
@@ -1126,6 +1126,38 @@ exports.typescript = {
|
|
|
1126
1126
|
],
|
|
1127
1127
|
},
|
|
1128
1128
|
},
|
|
1129
|
+
// HTTP flow (CLAUDE.md Rule 6): how TS/JS source expresses outbound HTTP
|
|
1130
|
+
// calls + route declarations, consumed by the flow extractor via
|
|
1131
|
+
// `allHttpFlow`. CLIENT: the Fetch API plus any `<recv>.<verb>(url, ...)`
|
|
1132
|
+
// member call whose first arg is a path-like literal — `bases` is omitted
|
|
1133
|
+
// so axios, app-specific wrappers (`requests.get`, `agent.Articles.del`),
|
|
1134
|
+
// and Angular's `this.http.get` all match; the path-like-literal filter in
|
|
1135
|
+
// the engine keeps non-HTTP `.get`/`.delete` out. SERVED: decorator routes
|
|
1136
|
+
// (LoopBack/NestJS `@get`/`@post`/`@del`) and Express `app`/`router`
|
|
1137
|
+
// `.<verb>('/path', ...)`. `del` → DELETE is LoopBack's verb alias. This is
|
|
1138
|
+
// the exact descriptor set validated by the bundled flow probe (axios React
|
|
1139
|
+
// frontend → LoopBack/Express backend, match-or-beat at higher precision).
|
|
1140
|
+
httpFlow: {
|
|
1141
|
+
clientCallees: ['fetch'],
|
|
1142
|
+
clientMethodCallees: { methods: ['get', 'post', 'put', 'delete', 'patch'] },
|
|
1143
|
+
routeDecorators: ['get', 'post', 'put', 'patch', 'del', 'delete'],
|
|
1144
|
+
routeRouterCallees: {
|
|
1145
|
+
methods: ['get', 'post', 'put', 'delete', 'patch'],
|
|
1146
|
+
bases: ['app', 'router'],
|
|
1147
|
+
},
|
|
1148
|
+
methodAliases: { del: 'DELETE' },
|
|
1149
|
+
},
|
|
1150
|
+
// Tree-sitter grammars by extension for the canonical AST layer (src/ast/).
|
|
1151
|
+
// .tsx needs the tsx grammar (JSX-aware); .ts uses typescript; .js/.jsx/.mjs/
|
|
1152
|
+
// .cjs use javascript. Logical names — src/ast/ resolves them to artifacts.
|
|
1153
|
+
treeSitterGrammars: {
|
|
1154
|
+
'.ts': 'typescript',
|
|
1155
|
+
'.tsx': 'tsx',
|
|
1156
|
+
'.js': 'javascript',
|
|
1157
|
+
'.jsx': 'javascript',
|
|
1158
|
+
'.mjs': 'javascript',
|
|
1159
|
+
'.cjs': 'javascript',
|
|
1160
|
+
},
|
|
1129
1161
|
clocLanguageNames: ['TypeScript', 'JavaScript', 'JSX', 'TSX'],
|
|
1130
1162
|
detect(cwd) {
|
|
1131
1163
|
return (0, runner_1.fileExists)(cwd, 'package.json');
|