@ttsc/graph 0.16.5 → 0.16.6

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.
Files changed (61) hide show
  1. package/lib/TtscGraphApplication.js +36 -23
  2. package/lib/TtscGraphApplication.js.map +1 -1
  3. package/lib/model/loadGraph.js +17 -17
  4. package/lib/server/accessAliases.js +53 -0
  5. package/lib/server/accessAliases.js.map +1 -0
  6. package/lib/server/createServer.js +1133 -634
  7. package/lib/server/createServer.js.map +1 -1
  8. package/lib/server/instructions.js +69 -21
  9. package/lib/server/instructions.js.map +1 -1
  10. package/lib/server/runDetails.js +413 -0
  11. package/lib/server/runDetails.js.map +1 -0
  12. package/lib/server/{runIndex.js → runEntrypoints.js} +91 -26
  13. package/lib/server/runEntrypoints.js.map +1 -0
  14. package/lib/server/{runQuery.js → runLookup.js} +102 -15
  15. package/lib/server/runLookup.js.map +1 -0
  16. package/lib/server/runOverview.js +31 -21
  17. package/lib/server/runOverview.js.map +1 -1
  18. package/lib/server/runTrace.js +133 -38
  19. package/lib/server/runTrace.js.map +1 -1
  20. package/lib/structures/{ITtscGraphQuery.js → ITtscGraphDetails.js} +1 -1
  21. package/lib/structures/ITtscGraphDetails.js.map +1 -0
  22. package/lib/structures/ITtscGraphEntrypoints.js +3 -0
  23. package/lib/structures/ITtscGraphEntrypoints.js.map +1 -0
  24. package/lib/structures/{ITtscGraphExpand.js → ITtscGraphEscape.js} +1 -1
  25. package/lib/structures/ITtscGraphEscape.js.map +1 -0
  26. package/lib/structures/{ITtscGraphIndex.js → ITtscGraphLookup.js} +1 -1
  27. package/lib/structures/ITtscGraphLookup.js.map +1 -0
  28. package/lib/structures/index.js +4 -3
  29. package/lib/structures/index.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/TtscGraphApplication.ts +39 -32
  32. package/src/server/accessAliases.ts +55 -0
  33. package/src/server/createServer.ts +4 -7
  34. package/src/server/instructions.ts +69 -21
  35. package/src/server/runDetails.ts +469 -0
  36. package/src/server/{runIndex.ts → runEntrypoints.ts} +109 -34
  37. package/src/server/{runQuery.ts → runLookup.ts} +123 -16
  38. package/src/server/runOverview.ts +35 -23
  39. package/src/server/runTrace.ts +164 -38
  40. package/src/structures/ITtscGraphApplication.ts +100 -52
  41. package/src/structures/ITtscGraphDecorator.ts +12 -14
  42. package/src/structures/ITtscGraphDetails.ts +134 -0
  43. package/src/structures/{ITtscGraphIndex.ts → ITtscGraphEntrypoints.ts} +34 -16
  44. package/src/structures/ITtscGraphEscape.ts +39 -0
  45. package/src/structures/ITtscGraphEvidence.ts +5 -8
  46. package/src/structures/ITtscGraphLookup.ts +61 -0
  47. package/src/structures/ITtscGraphNode.ts +10 -4
  48. package/src/structures/ITtscGraphOverview.ts +24 -16
  49. package/src/structures/ITtscGraphTrace.ts +54 -11
  50. package/src/structures/TtscGraphNodeKind.ts +2 -2
  51. package/src/structures/index.ts +4 -3
  52. package/lib/server/runExpand.js +0 -177
  53. package/lib/server/runExpand.js.map +0 -1
  54. package/lib/server/runIndex.js.map +0 -1
  55. package/lib/server/runQuery.js.map +0 -1
  56. package/lib/structures/ITtscGraphExpand.js.map +0 -1
  57. package/lib/structures/ITtscGraphIndex.js.map +0 -1
  58. package/lib/structures/ITtscGraphQuery.js.map +0 -1
  59. package/src/server/runExpand.ts +0 -186
  60. package/src/structures/ITtscGraphExpand.ts +0 -85
  61. package/src/structures/ITtscGraphQuery.ts +0 -49
@@ -1,28 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runIndex = runIndex;
3
+ exports.runEntrypoints = runEntrypoints;
4
4
  const resolveHandle_1 = require("./resolveHandle");
5
- const runExpand_1 = require("./runExpand");
6
- const runQuery_1 = require("./runQuery");
7
- const DEFAULT_LIMIT = 8;
8
- const MAX_LIMIT = 20;
9
- const DEFAULT_NEIGHBORS = 4;
10
- const MAX_NEIGHBORS = 8;
11
- const MAX_SEEDS = 6;
5
+ const runDetails_1 = require("./runDetails");
6
+ const runLookup_1 = require("./runLookup");
7
+ const DEFAULT_LIMIT = 4;
8
+ const MAX_LIMIT = 8;
9
+ const DEFAULT_NEIGHBORS = 0;
10
+ const MAX_NEIGHBORS = 2;
11
+ const MAX_SEEDS = 3;
12
12
  const STRUCTURAL_KINDS = new Set(["contains", "exports", "imports"]);
13
13
  /**
14
- * Build the first source-free index for a code question. The result gives the
15
- * model stable handles, declaration signatures, and direct graph context. It is
16
- * deliberately not a source reader; source remains opt-in through
17
- * graph_expand.
14
+ * Build the first source-free entrypoints list for a code question. The result
15
+ * gives the model stable handles, declaration signatures, and direct graph
16
+ * context. It is deliberately not a source reader; details adds selected symbol
17
+ * shape and ranges, not implementation text.
18
18
  */
19
- function runIndex(graph, props) {
19
+ function runEntrypoints(graph, props) {
20
20
  const query = props.query.trim();
21
21
  const limit = bound(props.limit, DEFAULT_LIMIT, 1, MAX_LIMIT);
22
22
  const neighborLimit = bound(props.neighbors, DEFAULT_NEIGHBORS, 0, MAX_NEIGHBORS);
23
- const queryResult = (0, runQuery_1.runQuery)(graph, { query, limit });
24
- const hits = queryResult.hits.map((hit) => ({ ...hit }));
25
- const mentions = directMentions(query).map((handle) => {
23
+ const lookupResult = (0, runLookup_1.runLookup)(graph, { type: "lookup", query, limit });
24
+ const hits = lookupResult.hits.map((hit) => ({ ...hit }));
25
+ const mentions = directMentions(graph, query).map((handle) => {
26
26
  const resolved = (0, resolveHandle_1.resolveGraphHandle)(graph, handle, 6);
27
27
  const mention = { handle };
28
28
  if (resolved.node !== undefined)
@@ -60,15 +60,14 @@ function runIndex(graph, props) {
60
60
  });
61
61
  }
62
62
  return {
63
+ type: "entrypoints",
63
64
  query,
64
65
  hits,
65
66
  mentions,
66
67
  neighborhood,
67
68
  next: {
68
- expand: seeds.slice(0, MAX_SEEDS).map((node) => node.id),
69
- traceFrom: mentions
70
- .map((mention) => mention.node?.id)
71
- .filter((id) => id !== undefined),
69
+ details: seeds.slice(0, MAX_SEEDS).map((node) => node.id),
70
+ traceFrom: seeds.slice(0, MAX_SEEDS).map((node) => node.id),
72
71
  },
73
72
  ...(truncated ? { truncated: true } : {}),
74
73
  };
@@ -82,9 +81,12 @@ function nodeOf(graph, node) {
82
81
  };
83
82
  if (node.evidence?.startLine !== undefined)
84
83
  out.line = node.evidence.startLine;
85
- const signature = (0, runExpand_1.signatureOf)(graph.project, node);
84
+ const signature = (0, runDetails_1.signatureOf)(graph.project, node);
86
85
  if (signature !== undefined)
87
86
  out.signature = signature;
87
+ const decorators = (0, runDetails_1.decoratorsOf)(node);
88
+ if (decorators !== undefined)
89
+ out.decorators = decorators;
88
90
  return out;
89
91
  }
90
92
  function refOf(node, edge) {
@@ -97,10 +99,13 @@ function refOf(node, edge) {
97
99
  };
98
100
  if (node.evidence?.startLine !== undefined)
99
101
  out.line = node.evidence.startLine;
102
+ const evidence = (0, runDetails_1.edgeEvidenceOf)(edge);
103
+ if (evidence !== undefined)
104
+ out.evidence = evidence;
100
105
  return out;
101
106
  }
102
107
  function refs(graph, edges, end, limit) {
103
- const items = [];
108
+ const ranked = [];
104
109
  const seen = new Set();
105
110
  let available = 0;
106
111
  for (const edge of edges) {
@@ -114,15 +119,66 @@ function refs(graph, edges, end, limit) {
114
119
  continue;
115
120
  seen.add(key);
116
121
  available++;
122
+ const ref = refOf(other, edge);
123
+ ranked.push({ ref, rank: refRank(ref, edge) });
124
+ }
125
+ ranked.sort((a, b) => a.rank - b.rank);
126
+ const items = [];
127
+ for (const item of ranked) {
117
128
  if (items.length < limit)
118
- items.push(refOf(other, edge));
129
+ items.push(item.ref);
119
130
  }
120
131
  return { items, truncated: available > items.length };
121
132
  }
122
- function directMentions(query) {
133
+ function refRank(ref, edge) {
134
+ return (edgeKindRank(edge.kind) * 100000 +
135
+ evidenceRank(edge) +
136
+ (ref.file.startsWith("bundled://") ? 20000 : 0));
137
+ }
138
+ function evidenceRank(edge) {
139
+ const line = edge.evidence?.startLine ?? 9999;
140
+ const col = edge.evidence?.startCol ?? 999;
141
+ return line * 100 + col;
142
+ }
143
+ function edgeKindRank(kind) {
144
+ switch (kind) {
145
+ case "calls":
146
+ return 0;
147
+ case "instantiates":
148
+ return 1;
149
+ case "accesses":
150
+ case "renders":
151
+ return 2;
152
+ case "tests":
153
+ return 3;
154
+ case "overrides":
155
+ case "decorates":
156
+ return 4;
157
+ case "extends":
158
+ case "implements":
159
+ return 5;
160
+ case "type_ref":
161
+ return 6;
162
+ default:
163
+ return 10;
164
+ }
165
+ }
166
+ function directMentions(graph, query) {
123
167
  const handles = new Set();
168
+ for (const token of query.split(/\s+/)) {
169
+ const handle = normalizeNodeIdToken(token);
170
+ if (handle !== undefined && graph.node(handle) !== undefined) {
171
+ handles.add(handle);
172
+ }
173
+ }
124
174
  for (const match of query.matchAll(/`([^`]+)`/g)) {
125
- const handle = normalizeHandle(match[1] ?? "");
175
+ const raw = match[1] ?? "";
176
+ const id = normalizeNodeIdToken(raw);
177
+ if (id !== undefined && graph.node(id) !== undefined) {
178
+ handles.add(id);
179
+ continue;
180
+ }
181
+ const handle = normalizeHandle(raw);
126
182
  if (handle !== undefined)
127
183
  handles.add(handle);
128
184
  }
@@ -133,6 +189,15 @@ function directMentions(query) {
133
189
  }
134
190
  return [...handles];
135
191
  }
192
+ function normalizeNodeIdToken(raw) {
193
+ const value = raw
194
+ .trim()
195
+ .replace(/^[`"'([{]+/, "")
196
+ .replace(/[`"',.;:)\]}]+$/, "");
197
+ return /^[^\s#]+#[^\s#]+:(class|interface|type|enum|function|method|variable|property)$/.test(value)
198
+ ? value
199
+ : undefined;
200
+ }
136
201
  function normalizeHandle(raw) {
137
202
  const value = raw.trim();
138
203
  return /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*$/.test(value)
@@ -143,4 +208,4 @@ function bound(value, fallback, min, max) {
143
208
  const n = value === undefined || !Number.isFinite(value) ? fallback : value;
144
209
  return Math.max(min, Math.min(max, Math.floor(n)));
145
210
  }
146
- //# sourceMappingURL=runIndex.js.map
211
+ //# sourceMappingURL=runEntrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runEntrypoints.js","sourceRoot":"","sources":["../../src/server/runEntrypoints.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runQuery = runQuery;
4
- const runExpand_1 = require("./runExpand");
3
+ exports.runLookup = runLookup;
4
+ const runDetails_1 = require("./runDetails");
5
5
  // One file should not crowd out the rest of the ranking, so cap hits per file.
6
6
  const PER_FILE = 3;
7
- const DEFAULT_LIMIT = 12;
7
+ const DEFAULT_LIMIT = 5;
8
+ const MAX_LIMIT = 6;
8
9
  /**
9
10
  * Rank the graph's symbols against a natural query. Scoring blends exact and
10
11
  * dotted-name matches, CamelCase/subword coverage, file-path terms, a prefix
@@ -12,30 +13,37 @@ const DEFAULT_LIMIT = 12;
12
13
  * nodes and caps per file so the result is a diverse, relevant shortlist rather
13
14
  * than one file's roster.
14
15
  */
15
- function runQuery(graph, props) {
16
+ function runLookup(graph, props) {
16
17
  const terms = subwords(props.query);
18
+ const codeTerms = exactCodeTerms(props.query);
19
+ const requestedKinds = requestedSymbolKinds(props.query);
17
20
  const queryLc = props.query.trim().toLowerCase();
21
+ const wantsInternal = wantsInternalSymbol(queryLc, codeTerms);
18
22
  if (terms.length === 0)
19
- return { hits: [], next: { expand: [] } };
23
+ return { type: "lookup", hits: [], next: { details: [], traceFrom: [] } };
20
24
  const scored = [];
21
25
  for (const node of graph.nodes) {
22
26
  if (node.kind === "file")
23
27
  continue;
24
- const score = scoreNode(graph, node, queryLc, terms);
28
+ const score = scoreNode(graph, node, queryLc, terms, codeTerms, requestedKinds, wantsInternal);
25
29
  if (score <= 0)
26
30
  continue;
27
- scored.push({
31
+ const hit = {
28
32
  id: node.id,
29
33
  name: node.qualifiedName ?? node.name,
30
34
  kind: node.kind,
31
35
  file: node.file,
32
36
  line: node.evidence?.startLine,
33
37
  score: Math.round(score),
34
- });
38
+ };
39
+ const decorators = (0, runDetails_1.decoratorsOf)(node);
40
+ if (decorators !== undefined)
41
+ hit.decorators = decorators;
42
+ scored.push(hit);
35
43
  }
36
44
  scored.sort((a, b) => b.score - a.score);
37
45
  // Diversity: keep at most PER_FILE hits per file while filling up to the limit.
38
- const limit = Math.max(1, props.limit ?? DEFAULT_LIMIT);
46
+ const limit = bound(props.limit, DEFAULT_LIMIT, 1, MAX_LIMIT);
39
47
  const perFile = new Map();
40
48
  const hits = [];
41
49
  for (const hit of scored) {
@@ -47,20 +55,27 @@ function runQuery(graph, props) {
47
55
  if (hits.length >= limit)
48
56
  break;
49
57
  }
50
- // Attach each kept hit's signature only the shortlist, so the read cost is
51
- // bounded — so the model can often answer from the query alone, no expand.
58
+ // Attach each kept hit's signature only for the shortlist, so the model can
59
+ // often answer from lookup alone without a details call.
52
60
  for (const hit of hits) {
53
61
  const node = graph.node(hit.id);
54
62
  if (node === undefined)
55
63
  continue;
56
- const sig = (0, runExpand_1.signatureOf)(graph.project, node);
64
+ const sig = (0, runDetails_1.signatureOf)(graph.project, node);
57
65
  if (sig !== undefined)
58
66
  hit.signature = sig;
59
67
  }
60
- return { hits, next: { expand: hits.map((hit) => hit.id) } };
68
+ return {
69
+ type: "lookup",
70
+ hits,
71
+ next: {
72
+ details: hits.map((hit) => hit.id),
73
+ traceFrom: hits.map((hit) => hit.id),
74
+ },
75
+ };
61
76
  }
62
77
  /** Score one node against the query; 0 means no match. */
63
- function scoreNode(graph, node, queryLc, terms) {
78
+ function scoreNode(graph, node, queryLc, terms, codeTerms, requestedKinds, wantsInternal) {
64
79
  const name = node.name.toLowerCase();
65
80
  const qualified = (node.qualifiedName ?? node.name).toLowerCase();
66
81
  const nameSubs = subwords(node.name);
@@ -76,6 +91,19 @@ function scoreNode(graph, node, queryLc, terms) {
76
91
  else if (queryLc.includes(".") && qualified.includes(queryLc)) {
77
92
  score += 60;
78
93
  }
94
+ for (const codeTerm of codeTerms) {
95
+ if (name === codeTerm || qualified === codeTerm) {
96
+ score += 110;
97
+ }
98
+ else if (qualified.endsWith(`.${codeTerm}`)) {
99
+ score += 95;
100
+ }
101
+ else if (codeTerm.includes(".") && qualified.endsWith(codeTerm)) {
102
+ score += 85;
103
+ }
104
+ }
105
+ if (requestedKinds.has(node.kind))
106
+ score += 16;
79
107
  let covered = 0;
80
108
  for (const term of terms) {
81
109
  if (nameSubs.includes(term)) {
@@ -111,8 +139,63 @@ function scoreNode(graph, node, queryLc, terms) {
111
139
  score *= 0.3;
112
140
  if (isTestFile(node.file))
113
141
  score *= 0.7;
142
+ if (!wantsInternal && isInternalish(node))
143
+ score *= 0.82;
114
144
  return score;
115
145
  }
146
+ function wantsInternalSymbol(queryLc, codeTerms) {
147
+ return (/\b(internal|private|implementation|impl)\b/.test(queryLc) ||
148
+ codeTerms.some((term) => term.startsWith("_") || term.includes("internal")));
149
+ }
150
+ function isInternalish(node) {
151
+ const name = node.qualifiedName ?? node.name;
152
+ return (name.startsWith("_") ||
153
+ name.includes("._") ||
154
+ subwords(name).some((word) => word === "internal" || word === "internals"));
155
+ }
156
+ function exactCodeTerms(query) {
157
+ const out = new Set();
158
+ for (const match of query.matchAll(/`([^`]+)`/g)) {
159
+ const normalized = normalizeCodeTerm(match[1] ?? "");
160
+ if (normalized !== undefined)
161
+ out.add(normalized);
162
+ }
163
+ for (const match of query.matchAll(/\b([A-Za-z_$][\w$]*)\s+(method|function|class|interface|type|variable)\b/gi)) {
164
+ const normalized = normalizeCodeTerm(match[1] ?? "");
165
+ if (normalized !== undefined)
166
+ out.add(normalized);
167
+ }
168
+ for (const match of query.matchAll(/\b[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)+\b/g)) {
169
+ const normalized = normalizeCodeTerm(match[0]);
170
+ if (normalized !== undefined)
171
+ out.add(normalized);
172
+ }
173
+ return [...out];
174
+ }
175
+ function requestedSymbolKinds(query) {
176
+ const kinds = new Set();
177
+ const lc = query.toLowerCase();
178
+ if (/\bmethods?\b/.test(lc))
179
+ kinds.add("method");
180
+ if (/\bfunctions?\b/.test(lc)) {
181
+ kinds.add("function");
182
+ kinds.add("method");
183
+ kinds.add("variable");
184
+ }
185
+ if (/\bclasses?\b/.test(lc))
186
+ kinds.add("class");
187
+ if (/\binterfaces?\b/.test(lc))
188
+ kinds.add("interface");
189
+ if (/\btypes?\b/.test(lc))
190
+ kinds.add("type");
191
+ if (/\bvariables?\b|\bconst\b|\blet\b/.test(lc))
192
+ kinds.add("variable");
193
+ return kinds;
194
+ }
195
+ function normalizeCodeTerm(raw) {
196
+ const value = raw.trim().toLowerCase();
197
+ return /^[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*$/.test(value) ? value : undefined;
198
+ }
116
199
  /** Non-structural in+out degree (code dependency, not nesting). */
117
200
  function degree(graph, id) {
118
201
  let n = 0;
@@ -131,6 +214,10 @@ function isTestFile(file) {
131
214
  return (/(^|\/)(test|tests|__tests__|spec)\//.test(file) ||
132
215
  /\.(test|spec)\.[cm]?tsx?$/.test(file));
133
216
  }
217
+ function bound(value, fallback, min, max) {
218
+ const n = value === undefined || !Number.isFinite(value) ? fallback : value;
219
+ return Math.max(min, Math.min(max, Math.floor(n)));
220
+ }
134
221
  /**
135
222
  * Split an identifier or phrase into lowercase subword tokens: CamelCase,
136
223
  * snake, dotted, and space boundaries all break, so `getHTTPResponse`,
@@ -144,4 +231,4 @@ function subwords(text) {
144
231
  .filter((w) => w.length > 0)
145
232
  .map((w) => w.toLowerCase());
146
233
  }
147
- //# sourceMappingURL=runQuery.js.map
234
+ //# sourceMappingURL=runLookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runLookup.js","sourceRoot":"","sources":["../../src/server/runLookup.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ function runOverview(graph, props) {
21
21
  files++;
22
22
  }
23
23
  const result = {
24
+ type: "overview",
24
25
  project: graph.project,
25
26
  counts: {
26
27
  files,
@@ -60,11 +61,11 @@ function layers(graph) {
60
61
  exported: entry.exported,
61
62
  }))
62
63
  .sort((a, b) => b.files - a.files)
63
- .slice(0, 16);
64
+ .slice(0, 10);
64
65
  }
65
66
  /**
66
67
  * The symbols at the center of the dependency graph, ranked by real fan-in and
67
- * fan-out structural `contains`/`exports`/`imports` edges are excluded so the
68
+ * fan-out. Structural `contains`/`exports`/`imports` edges are excluded so the
68
69
  * ranking reflects code dependency, not nesting.
69
70
  */
70
71
  function hotspots(graph) {
@@ -79,16 +80,13 @@ function hotspots(graph) {
79
80
  return graph.nodes
80
81
  .filter((node) => !node.external && node.kind !== "file")
81
82
  .map((node) => ({
82
- id: node.id,
83
- name: node.qualifiedName ?? node.name,
84
- kind: node.kind,
85
- file: node.file,
83
+ ...nodeOf(node),
86
84
  fanIn: real(node.id, "in"),
87
85
  fanOut: real(node.id, "out"),
88
86
  }))
89
87
  .filter((h) => h.fanIn + h.fanOut > 0)
90
88
  .sort((a, b) => b.fanIn + b.fanOut - (a.fanIn + a.fanOut))
91
- .slice(0, 15);
89
+ .slice(0, 10);
92
90
  }
93
91
  /** Declaration kinds that make up a meaningful public API surface. */
94
92
  const API_KINDS = new Set([
@@ -99,12 +97,13 @@ const API_KINDS = new Set([
99
97
  "enum",
100
98
  ]);
101
99
  /**
102
- * The exported API surface: the exported symbols a consumer of the project would
103
- * use, ranked by how depended-on each is (real fan-in/out, structural edges
104
- * excluded). Ranking by dependency rather than by which file declares the most
105
- * exports surfaces the load-bearing types (a DataSource, a SelectQueryBuilder)
106
- * instead of whichever file bundles the most type aliases; test, typings, and
107
- * generated files are dropped so they cannot crowd the real surface out.
100
+ * The exported API surface: the exported symbols a consumer of the project
101
+ * would use, ranked by how depended-on each is (real fan-in/out, structural
102
+ * edges excluded). Ranking by dependency rather than by which file declares the
103
+ * most exports surfaces the load-bearing types (a DataSource, a
104
+ * SelectQueryBuilder) instead of whichever file bundles the most type aliases;
105
+ * test, typings, and generated files are dropped so they cannot crowd the real
106
+ * surface out.
108
107
  */
109
108
  function publicApi(graph) {
110
109
  const degree = (id) => {
@@ -121,20 +120,18 @@ function publicApi(graph) {
121
120
  .exported()
122
121
  .filter((node) => API_KINDS.has(node.kind) && !isNoiseFile(node.file))
123
122
  .map((node) => ({
124
- name: node.qualifiedName ?? node.name,
125
- kind: node.kind,
126
- file: node.file,
123
+ node: nodeOf(node),
127
124
  degree: degree(node.id),
128
125
  }))
129
126
  .sort((a, b) => b.degree - a.degree)
130
- .slice(0, 30)
131
- .map(({ name, kind, file }) => ({ name, kind, file }));
127
+ .slice(0, 15)
128
+ .map((ranked) => ranked.node);
132
129
  }
133
130
  /**
134
131
  * A file whose exports are noise for an architecture overview: a test, a
135
- * dependency's bundled `.d.ts`/typings, or generated output. The conventions are
136
- * universal (a `test`/`spec` path, a `typings` file), so excluding them is not
137
- * framework-specific it keeps the API surface to authored, used code.
132
+ * dependency's bundled `.d.ts`/typings, or generated output. The conventions
133
+ * are universal (a `test`/`spec` path, a `typings` file), so excluding them is
134
+ * not framework-specific; it keeps the API surface to authored, used code.
138
135
  */
139
136
  function isNoiseFile(file) {
140
137
  return (/(^|\/)(test|tests|__tests__|spec|sample|samples)\//.test(file) ||
@@ -147,4 +144,17 @@ function dirname(file) {
147
144
  const slash = file.lastIndexOf("/");
148
145
  return slash >= 0 ? file.slice(0, slash) : ".";
149
146
  }
147
+ /** Stable symbol coordinate shared by overview facets. */
148
+ function nodeOf(node) {
149
+ const out = {
150
+ id: node.id,
151
+ name: node.qualifiedName ?? node.name,
152
+ kind: node.kind,
153
+ file: node.file,
154
+ };
155
+ if (node.evidence?.startLine !== undefined) {
156
+ out.line = node.evidence.startLine;
157
+ }
158
+ return out;
159
+ }
150
160
  //# sourceMappingURL=runOverview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runOverview.js","sourceRoot":"","sources":["../../src/server/runOverview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runOverview.js","sourceRoot":"","sources":["../../src/server/runOverview.ts"],"names":[],"mappings":"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"}