@nithin554/code-crawler 0.1.36 → 0.1.37

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 CHANGED
@@ -1,16 +1,20 @@
1
1
  # Code-Crawler
2
2
 
3
- **Static call tracing MCP server backed by a persistent property graph of your codebase.**
3
+ **Static + dynamic call tracing MCP server backed by a persistent property graph of your codebase.**
4
4
 
5
5
  Code-Crawler indexes a project into a SQLite-backed property graph — files, packages,
6
- classes, methods, fields, imports, and **call edges** — then exposes that graph to LLM
7
- clients as MCP tools: find callers, trace call paths, explore neighborhoods, and search
8
- symbols across the whole codebase.
6
+ classes, methods, fields, imports, annotations, **call edges**, **virtual dispatch**, and
7
+ **aspect advice** — then exposes that graph to LLM clients as MCP tools: find callers,
8
+ trace call paths, explore neighborhoods, follow runtime dispatch, and search symbols
9
+ across the whole codebase.
10
+
11
+ 📖 **Documentation site:** <https://nithin554.github.io/code-crawler/>
9
12
 
10
13
  ```
11
14
  ┌─────────────────────── MCP (stdio) ───────────────────────┐
12
15
  │ crawl_project search_symbols get_callers get_callees │
13
- │ trace_path get_subgraph get_node get_schema ... │
16
+ │ trace_path trace_execution find_aspects get_decorators│
17
+ │ find_implementations find_hotspots find_dead_code ... │
14
18
  └───────────────┬──────────────────────────────┬───────────────┘
15
19
  │ │
16
20
  ┌──────▼───────┐ ┌────────▼────────┐
@@ -39,13 +43,22 @@ and answers them instantly with bounded recursive SQL queries.
39
43
 
40
44
  - **Java-first** via the `tree-sitter-java` grammar (WASM — no native build step).
41
45
  The parser/resolver layer is designed so more languages plug in per-language config modules.
46
+ - **Dynamic tracing on a static graph** — `DYNAMIC_DISPATCH` edges connect interface/base
47
+ calls to every override in the project, and `ADVISES` edges weave AspectJ/Spring AOP
48
+ advice into execution traces (`before`, `after`, `around`, `after-returning`,
49
+ `after-throwing`, named `@Pointcut` references, `&&`/`||`/`!` and `execution`, `within`,
50
+ `@annotation`, `@within`, `target`, `this`, `args` primitives).
51
+ - **Annotations as first-class nodes** — `@Transactional`, `@Cacheable`, `@Async`, `@Retryable`
52
+ and friends become `annotation` nodes with `ANNOTATED_WITH` edges, so you can query
53
+ decorators on types, methods, and fields.
42
54
  - **Call resolution heuristics** that go beyond naive string matching:
43
55
  receiver types inferred from locals, parameters, fields, `new T()` expressions,
44
56
  bare/`this`/`super` calls, static/qualified calls, and superclass chains.
45
57
  Unresolvable calls become `unknown_symbol` phantom nodes with `resolved:false` edges,
46
58
  so the graph stays traversable.
47
- - **Idempotent, file-scoped indexing** — re-crawling refreshes changed files and removes
48
- stale ones without duplicating the graph.
59
+ - **Idempotent, file-scoped indexing** — re-crawling refreshes changed files, rebuilds
60
+ derived dynamic edges, and removes stale ones without duplicating the graph.
61
+ - **Analytics** — hotspots (fan-in/fan-out/advice counts) and dead-code candidates.
49
62
  - **Self-contained**: single SQLite file, no external services.
50
63
  - **LLM-friendly**: every tool returns structured JSON, unknown symbols come back with
51
64
  fuzzy search suggestions.
@@ -57,7 +70,7 @@ Requires Node.js ≥ 20.
57
70
  ```bash
58
71
  npm install
59
72
  npm run build # tsc → dist/
60
- npm test # vitest (53 tests)
73
+ npm test # vitest (80 tests)
61
74
  ```
62
75
 
63
76
  ## CLI
@@ -77,6 +90,7 @@ Environment variables:
77
90
  | `CODECRAWLER_EXCLUDE_DIRS` | `.git,node_modules,dist,build,target,...` | Dirs skipped during crawl |
78
91
  | `CODECRAWLER_DEFAULT_LIMIT` | `50` | Default result cap |
79
92
  | `CODECRAWLER_MAX_DEPTH` | `10` | Traversal depth cap |
93
+ | `CODECRAWLER_HELPFUL_ERRORS` | `true` | Fuzzy suggestions on symbol misses |
80
94
 
81
95
  ## CI & publishing
82
96
 
@@ -117,6 +131,8 @@ Point the client at the same command. The typical flow for an LLM agent:
117
131
  1. `crawl_project` the repo once.
118
132
  2. `search_symbols` to locate the symbol of interest.
119
133
  3. `get_callers` / `get_callees` / `trace_path` to reason about the call graph.
134
+ 4. `trace_execution` to follow runtime dispatch and aspect advice; `find_aspects`,
135
+ `get_decorators`, and `find_annotated` to inspect behaviour-changing annotations.
120
136
 
121
137
  ## MCP surface
122
138
 
@@ -131,6 +147,13 @@ Point the client at the same command. The typical flow for an LLM agent:
131
147
  | `get_callers` | Direct or transitive callers (depth-bounded) |
132
148
  | `get_callees` | Direct or transitive callees (depth-bounded) |
133
149
  | `trace_path` | Static call paths between two symbols (BFS, shortest first) |
150
+ | `trace_execution` | Dynamic trace: static calls + virtual dispatch + woven advice |
151
+ | `find_implementations` | Implementers/subclasses of an interface or superclass |
152
+ | `find_aspects` | Aspects, advice kinds, pointcuts, and intercepted methods |
153
+ | `get_decorators` | Annotations/decorators on a symbol and optionally its members |
154
+ | `find_annotated` | Every symbol annotated with a given annotation |
155
+ | `find_hotspots` | Rank methods by fan-in, fan-out, and advice interceptions |
156
+ | `find_dead_code` | Methods with no incoming call/dispatch/advice edges |
134
157
  | `get_subgraph` | Neighborhood extraction for visualization |
135
158
  | `get_schema` | Describe the graph model |
136
159
  | `clear_index` | Reset the database |
@@ -141,11 +164,14 @@ Point the client at the same command. The typical flow for an LLM agent:
141
164
  ## Graph model
142
165
 
143
166
  **Nodes** — `kind` is one of `file | package | class | interface | enum | method |
144
- constructor | field | import | unknown_symbol`. Every node has a globally unique
145
- `qualifiedName` and a JSON `properties` blob (signature, modifiers, lines, ...).
167
+ constructor | field | import | aspect | annotation_type | annotation | unknown_symbol`.
168
+ Every node has a globally unique `qualifiedName` and a JSON `properties` blob
169
+ (signature, modifiers, lines, annotations, ...).
146
170
 
147
171
  **Edges** — `kind` is one of `CALLS | DECLARED_IN | CONTAINS | IMPLEMENTS | EXTENDS |
148
- IMPORTS | REFERENCES`. `CALLS` edges carry `line`, `resolved`, and `confidence`.
172
+ IMPORTS | REFERENCES | DYNAMIC_DISPATCH | ADVISES | ANNOTATED_WITH`. `CALLS` edges carry
173
+ `line`, `resolved`, and `confidence`; `ANNOTATED_WITH` edges carry `line` and `arguments`;
174
+ `ADVISES` edges carry `adviceKind` and the resolved `pointcut`.
149
175
 
150
176
  Id scheme:
151
177
 
@@ -155,9 +181,61 @@ Id scheme:
155
181
  | method | `com.acme.OrderService#place` |
156
182
  | constructor | `com.acme.OrderService#<init>` |
157
183
  | field | `com.acme.OrderService$repo` |
184
+ | annotation | `@Transactional` |
158
185
  | import | `__import__:java.util.List` |
159
186
  | unresolved call | `__unknown__:System.out.println` |
160
187
 
188
+ ## Dynamic behaviour
189
+
190
+ Static call edges answer *"what does the source literally call?"*. Runtime behaviour
191
+ differs in two ways, both modelled as derived edges rebuilt on every crawl:
192
+
193
+ ### Virtual dispatch
194
+
195
+ A call to an interface or base-class method may execute any override. After all files
196
+ are indexed, every resolved `CALLS` edge whose target is an overridable method gets
197
+ `DYNAMIC_DISPATCH` edges to each override found in the project:
198
+
199
+ ```text
200
+ Checkout#checkout --CALLS--> Payment#pay
201
+ Payment#pay --DYNAMIC_DISPATCH--> CardPayment#pay
202
+ Payment#pay --DYNAMIC_DISPATCH--> UpiPayment#pay
203
+ ```
204
+
205
+ Constructors and `private`/`static`/`final` methods are excluded because they cannot be
206
+ overridden. Use `find_implementations` to list candidates and `trace_execution` to follow
207
+ them.
208
+
209
+ ### Aspects, advice, and decorators
210
+
211
+ `@Aspect` types are indexed as `aspect` nodes. Advice methods are recognised by
212
+ `@Before`, `@After`, `@Around`, `@AfterReturning`, `@AfterThrowing`, and `@Pointcut`.
213
+ Named pointcuts (`@Around("paymentCall()")`) are resolved to their `@Pointcut`
214
+ expression, then matched against every project method to create `ADVISES` edges:
215
+
216
+ ```text
217
+ AuditAspect#auditPayment --ADVISES--> Payment#pay
218
+ AuditAspect#auditPayment --ADVISES--> CardPayment#pay
219
+ AuditAspect#auditPayment --ADVISES--> UpiPayment#pay
220
+ AuditAspect#beforeCheckout --ADVISES--> Checkout#checkout
221
+ ```
222
+
223
+ `trace_execution` weaves these in as `INTERCEPT` hops, so the trace reads:
224
+
225
+ ```text
226
+ Checkout#checkout
227
+ INTERCEPT AuditAspect#beforeCheckout
228
+ CALLS Payment#pay
229
+ INTERCEPT AuditAspect#auditPayment
230
+ DYNAMIC_DISPATCH CardPayment#pay -> authorize
231
+ DYNAMIC_DISPATCH UpiPayment#pay -> settle
232
+ ```
233
+
234
+ Every other annotation is indexed as an `annotation` node with an `ANNOTATED_WITH` edge.
235
+ Framework decorators (`@Transactional`, `@Cacheable`, `@Async`, `@Retryable`,
236
+ `@PreAuthorize`, `@Scheduled`, ...) are additionally flagged `decorator: true` so
237
+ `get_decorators` and `find_annotated` can surface runtime-semantic annotations.
238
+
161
239
  ## Java resolution heuristics
162
240
 
163
241
  1. **Constructor calls** (`new Foo(...)`) → resolve `Foo` → `#<init>` (default ctor if implicit).
@@ -188,8 +266,6 @@ queries, and MCP surface all stay the same.
188
266
  Planned enhancements:
189
267
 
190
268
  - Package-level dependency graphs (module boundaries, cycle detection).
191
- - Global call-graph analytics: hotspots (most-called methods), dead-code candidates
192
- (methods with no incoming CALLS edges), fan-in/fan-out metrics.
193
269
  - Test coverage mapping (which tests exercise a given symbol).
194
270
  - Incremental crawling (watch mode) and git-blame aware invalidation.
195
271
 
@@ -213,9 +289,17 @@ src/
213
289
  │ └── java.ts Java structural extraction
214
290
  └── resolver/
215
291
  ├── types.ts TypeIndex (global name/method index) + ResolvedCall
292
+ ├── dynamic.ts virtual dispatch + AspectJ pointcut matching/advice edges
216
293
  └── javaResolver.ts Java call-target resolution heuristics
217
294
  ```
218
295
 
296
+ ## Documentation site
297
+
298
+ The static documentation site in `docs/` is deployed to GitHub Pages by
299
+ `.github/workflows/pages.yml`. It covers quickstart, the MCP tool reference, and worked
300
+ examples. Open `docs/index.html` locally or visit
301
+ <https://nithin554.github.io/code-crawler/>.
302
+
219
303
  ## License
220
304
 
221
305
  MIT
package/dist/crawler.d.ts CHANGED
@@ -21,6 +21,14 @@ export interface CrawlResult {
21
21
  edges: number;
22
22
  resolvedCalls: number;
23
23
  unresolvedCalls: number;
24
+ /** Virtual-dispatch edges discovered across the project. */
25
+ dynamicDispatchEdges: number;
26
+ /** Aspect advice -> advised-method edges. */
27
+ adviceEdges: number;
28
+ /** Number of aspect types that produced advice. */
29
+ aspects: number;
30
+ /** Number of annotation/decorator usages indexed. */
31
+ decorators: number;
24
32
  languages: string[];
25
33
  durationMs: number;
26
34
  }
package/dist/crawler.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { fieldNodeId, importNodeId } from "./graph/schema.js";
3
+ import { annotationNodeId, fieldNodeId, importNodeId } from "./graph/schema.js";
4
4
  import { languageForFile } from "./parser/languages/index.js";
5
5
  import { buildTypeIndex, phantomNodeId } from "./resolver/types.js";
6
6
  import { resolveJavaFile } from "./resolver/javaResolver.js";
7
+ import { buildDynamicEdges, isDecoratorAnnotation } from "./resolver/dynamic.js";
7
8
  /** Discover source files under a project, respecting exclusion dirs. */
8
9
  export function discoverSourceFiles(projectPath, excludeDirs, language) {
9
10
  const excluded = new Set(excludeDirs.map((d) => d.replace(/\/+$/, "")));
@@ -44,11 +45,14 @@ export function buildDeclarationGraph(parsed) {
44
45
  properties: { language: parsed.language, startLine: 0, endLine: fileLines },
45
46
  });
46
47
  if (parsed.packageName) {
48
+ // Package nodes are shared by every file in the package. They are not
49
+ // owned by one file (filePath: null) so deleting one file cannot cascade
50
+ // through the package node into unrelated files.
47
51
  nodes.push({
48
52
  id: parsed.packageName,
49
53
  kind: "package",
50
54
  qualifiedName: parsed.packageName,
51
- filePath: fileId,
55
+ filePath: null,
52
56
  properties: {},
53
57
  });
54
58
  edges.push({
@@ -69,13 +73,51 @@ export function buildDeclarationGraph(parsed) {
69
73
  });
70
74
  edges.push({ source: fileId, target: importId, kind: "IMPORTS", properties: {} });
71
75
  }
76
+ const addDecorators = (ownerId, annotations) => {
77
+ for (const annotation of annotations) {
78
+ const name = annotation.fqn ?? annotation.name;
79
+ const id = annotationNodeId(name);
80
+ // Annotation nodes are shared across files and therefore file-less.
81
+ nodes.push({
82
+ id,
83
+ kind: "annotation",
84
+ qualifiedName: name,
85
+ filePath: null,
86
+ properties: {
87
+ name: annotation.name,
88
+ ...(annotation.fqn ? { fqn: annotation.fqn } : {}),
89
+ decorator: isDecoratorAnnotation(annotation.name),
90
+ },
91
+ });
92
+ edges.push({
93
+ source: ownerId,
94
+ target: id,
95
+ kind: "ANNOTATED_WITH",
96
+ properties: {
97
+ line: annotation.line,
98
+ arguments: annotation.arguments,
99
+ },
100
+ });
101
+ }
102
+ };
72
103
  for (const t of parsed.types) {
104
+ const kind = t.isAspect
105
+ ? "aspect"
106
+ : t.kind === "annotation"
107
+ ? "annotation_type"
108
+ : t.kind;
73
109
  nodes.push({
74
110
  id: t.id,
75
- kind: t.kind,
111
+ kind,
76
112
  qualifiedName: t.id,
77
113
  filePath: fileId,
78
- properties: { name: t.name, startLine: t.startLine, endLine: t.endLine },
114
+ properties: {
115
+ name: t.name,
116
+ startLine: t.startLine,
117
+ endLine: t.endLine,
118
+ annotations: t.annotations.map((a) => a.name),
119
+ ...(t.isAspect ? { aspect: true } : {}),
120
+ },
79
121
  });
80
122
  edges.push({ source: fileId, target: t.id, kind: "CONTAINS", properties: {} });
81
123
  if (parsed.packageName) {
@@ -87,6 +129,7 @@ export function buildDeclarationGraph(parsed) {
87
129
  for (const parent of t.implementsTypes) {
88
130
  edges.push({ source: t.id, target: parent, kind: "IMPLEMENTS", properties: {} });
89
131
  }
132
+ addDecorators(t.id, t.annotations);
90
133
  }
91
134
  for (const m of parsed.methods) {
92
135
  nodes.push({
@@ -101,6 +144,9 @@ export function buildDeclarationGraph(parsed) {
101
144
  modifiers: m.modifiers,
102
145
  startLine: m.startLine,
103
146
  endLine: m.endLine,
147
+ annotations: m.annotations.map((a) => a.name),
148
+ ...(m.adviceKind ? { adviceKind: m.adviceKind } : {}),
149
+ ...(m.pointcut ? { pointcut: m.pointcut } : {}),
104
150
  },
105
151
  });
106
152
  edges.push({
@@ -109,6 +155,7 @@ export function buildDeclarationGraph(parsed) {
109
155
  kind: "CONTAINS",
110
156
  properties: { line: m.startLine },
111
157
  });
158
+ addDecorators(m.id, m.annotations);
112
159
  }
113
160
  for (const f of parsed.fields) {
114
161
  nodes.push({
@@ -116,7 +163,12 @@ export function buildDeclarationGraph(parsed) {
116
163
  kind: "field",
117
164
  qualifiedName: f.id,
118
165
  filePath: fileId,
119
- properties: { name: f.name, type: f.type, startLine: f.startLine },
166
+ properties: {
167
+ name: f.name,
168
+ type: f.type,
169
+ startLine: f.startLine,
170
+ annotations: f.annotations.map((a) => a.name),
171
+ },
120
172
  });
121
173
  edges.push({
122
174
  source: f.typeId,
@@ -124,8 +176,28 @@ export function buildDeclarationGraph(parsed) {
124
176
  kind: "CONTAINS",
125
177
  properties: { line: f.startLine },
126
178
  });
179
+ addDecorators(fieldNodeId(f.typeId, f.name), f.annotations);
127
180
  }
128
- return { nodes, edges };
181
+ return { nodes: dedupeById(nodes), edges: dedupeEdges(edges) };
182
+ }
183
+ function dedupeById(nodes) {
184
+ const seen = new Set();
185
+ return nodes.filter((node) => {
186
+ if (seen.has(node.id))
187
+ return false;
188
+ seen.add(node.id);
189
+ return true;
190
+ });
191
+ }
192
+ function dedupeEdges(edges) {
193
+ const seen = new Set();
194
+ return edges.filter((edge) => {
195
+ const key = `${edge.source}\u0000${edge.target}\u0000${edge.kind}`;
196
+ if (seen.has(key))
197
+ return false;
198
+ seen.add(key);
199
+ return true;
200
+ });
129
201
  }
130
202
  /** Resolve call sites for a parsed file into CALLS edges + phantom nodes. */
131
203
  export function buildCallEdges(parsed, index, knownNodeIds) {
@@ -235,21 +307,51 @@ export async function crawlProject(store, projectPath, excludeDirs, options = {}
235
307
  const previouslyIndexed = new Set(store.raw("SELECT DISTINCT file_path FROM nodes WHERE file_path IS NOT NULL").map((r) => r.file_path));
236
308
  const currentFiles = new Set(files);
237
309
  let filesRemoved = 0;
238
- let totalNodes = 0;
239
- let totalEdges = 0;
240
310
  let totalResolved = 0;
241
311
  let totalUnresolved = 0;
312
+ let totalDecorators = 0;
313
+ let dynamicDispatchCount = 0;
314
+ let adviceCount = 0;
315
+ let aspectCount = 0;
316
+ // Every resolved call edge across the project, used to derive virtual
317
+ // dispatch edges once the whole type hierarchy is known.
318
+ const allCallEdges = [];
242
319
  // Pre-compute every declared node id so synthetic targets (default
243
320
  // constructors) can be created on demand, and so EXTENDS/IMPLEMENTS edges
244
321
  // to external types can be dropped instead of violating FK constraints.
245
322
  const allNodeIds = new Set();
323
+ const declarations = new Map();
246
324
  for (const parsed of parsedFiles) {
247
- for (const n of buildDeclarationGraph(parsed).nodes)
325
+ const decl = buildDeclarationGraph(parsed);
326
+ declarations.set(parsed.filePath, decl);
327
+ for (const n of decl.nodes)
248
328
  allNodeIds.add(n.id);
249
329
  }
330
+ // Hierarchy metadata is emitted with whatever name the source used
331
+ // (`implements Payment`), which is not always the fully-qualified node id.
332
+ // Resolve unique simple names so EXTENDS/IMPLEMENTS edges survive the
333
+ // project-membership filter below.
334
+ const typeIdsByName = new Map();
335
+ for (const parsed of parsedFiles) {
336
+ for (const t of parsed.types) {
337
+ const ids = typeIdsByName.get(t.name) ?? [];
338
+ if (!ids.includes(t.id))
339
+ ids.push(t.id);
340
+ typeIdsByName.set(t.name, ids);
341
+ }
342
+ }
343
+ const normalizeHierarchyTarget = (edge) => {
344
+ if (edge.kind !== "EXTENDS" && edge.kind !== "IMPLEMENTS")
345
+ return edge;
346
+ if (allNodeIds.has(edge.target))
347
+ return edge;
348
+ const candidates = typeIdsByName.get(edge.target);
349
+ const resolved = candidates?.length === 1 ? candidates[0] : undefined;
350
+ return resolved ? { ...edge, target: resolved } : edge;
351
+ };
250
352
  store.withTransaction(() => {
251
353
  for (const parsed of parsedFiles) {
252
- const decl = buildDeclarationGraph(parsed);
354
+ const decl = declarations.get(parsed.filePath);
253
355
  const calls = buildCallEdges(parsed, index, allNodeIds);
254
356
  for (const p of calls.phantomNodes)
255
357
  allNodeIds.add(p.id);
@@ -259,12 +361,17 @@ export async function crawlProject(store, projectPath, excludeDirs, options = {}
259
361
  // Drop edges whose endpoints aren't part of the indexed project
260
362
  // (external EXTENDS/IMPLEMENTS/IMPORTS targets).
261
363
  const edges = decl.edges
364
+ .map(normalizeHierarchyTarget)
262
365
  .concat(calls.edges)
263
366
  .filter((e) => allNodeIds.has(e.source) && allNodeIds.has(e.target));
264
367
  const nodes = decl.nodes.concat(calls.phantomNodes);
265
368
  store.replaceFile(parsed.filePath, nodes, edges);
266
- totalNodes += decl.nodes.length;
267
- totalEdges += edges.length;
369
+ for (const edge of calls.edges) {
370
+ if (allNodeIds.has(edge.source) && allNodeIds.has(edge.target)) {
371
+ allCallEdges.push(edge);
372
+ }
373
+ }
374
+ totalDecorators += decl.edges.filter((e) => e.kind === "ANNOTATED_WITH" && isDecoratorAnnotation(e.target.slice(1))).length;
268
375
  totalResolved += calls.resolved;
269
376
  totalUnresolved += calls.unresolved;
270
377
  previouslyIndexed.delete(parsed.filePath);
@@ -276,18 +383,30 @@ export async function crawlProject(store, projectPath, excludeDirs, options = {}
276
383
  filesRemoved++;
277
384
  }
278
385
  }
386
+ // Rebuild project-wide derived edges: virtual dispatch and AOP advice.
387
+ store.deleteEdgesByKind(["DYNAMIC_DISPATCH", "ADVISES"]);
388
+ const dynamic = buildDynamicEdges(parsedFiles, index, allNodeIds, allCallEdges);
389
+ store.upsertEdges(dynamic.edges);
390
+ dynamicDispatchCount = dynamic.dispatchCount;
391
+ adviceCount = dynamic.adviceCount;
392
+ aspectCount = dynamic.aspects;
279
393
  });
280
394
  store.setMeta("last_crawl_at", new Date().toISOString());
281
395
  store.setMeta("last_project_path", absPath);
396
+ const stats = store.stats();
282
397
  return {
283
398
  projectPath: absPath,
284
399
  filesScanned: files.length,
285
400
  filesParsed: parsedFiles.length,
286
401
  filesRemoved,
287
- nodes: totalNodes,
288
- edges: totalEdges,
402
+ nodes: stats.nodes,
403
+ edges: stats.edges,
289
404
  resolvedCalls: totalResolved,
290
405
  unresolvedCalls: totalUnresolved,
406
+ dynamicDispatchEdges: dynamicDispatchCount,
407
+ adviceEdges: adviceCount,
408
+ aspects: aspectCount,
409
+ decorators: totalDecorators,
291
410
  languages: [...new Set(parsedFiles.map((p) => p.language))],
292
411
  durationMs: Date.now() - started,
293
412
  };
@@ -1 +1 @@
1
- {"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"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"}