pi-shazam 0.11.1 → 0.13.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/README.md +1 -1
- package/dist/core/baseline.d.ts +0 -16
- package/dist/core/baseline.d.ts.map +1 -1
- package/dist/core/baseline.js +0 -53
- package/dist/core/baseline.js.map +1 -1
- package/dist/core/cache.d.ts +2 -37
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +24 -50
- package/dist/core/cache.js.map +1 -1
- package/dist/core/encoding.d.ts +11 -9
- package/dist/core/encoding.d.ts.map +1 -1
- package/dist/core/encoding.js +21 -54
- package/dist/core/encoding.js.map +1 -1
- package/dist/core/filter.d.ts +0 -9
- package/dist/core/filter.d.ts.map +1 -1
- package/dist/core/filter.js +11 -7
- package/dist/core/filter.js.map +1 -1
- package/dist/core/graph.d.ts +6 -0
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +4 -4
- package/dist/core/graph.js.map +1 -1
- package/dist/core/output.d.ts.map +1 -1
- package/dist/core/output.js +10 -1
- package/dist/core/output.js.map +1 -1
- package/dist/core/scanner.js +59 -8
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/treesitter.d.ts.map +1 -1
- package/dist/core/treesitter.js +3 -2
- package/dist/core/treesitter.js.map +1 -1
- package/dist/hooks/_bash-utils.d.ts +28 -0
- package/dist/hooks/_bash-utils.d.ts.map +1 -0
- package/dist/hooks/_bash-utils.js +83 -0
- package/dist/hooks/_bash-utils.js.map +1 -0
- package/dist/hooks/agent-context-guard.d.ts +3 -0
- package/dist/hooks/agent-context-guard.d.ts.map +1 -1
- package/dist/hooks/agent-context-guard.js +11 -1
- package/dist/hooks/agent-context-guard.js.map +1 -1
- package/dist/hooks/before-start.d.ts.map +1 -1
- package/dist/hooks/before-start.js +25 -8
- package/dist/hooks/before-start.js.map +1 -1
- package/dist/hooks/issue-guard.d.ts +2 -1
- package/dist/hooks/issue-guard.d.ts.map +1 -1
- package/dist/hooks/issue-guard.js +24 -4
- package/dist/hooks/issue-guard.js.map +1 -1
- package/dist/hooks/pre-edit.d.ts.map +1 -1
- package/dist/hooks/pre-edit.js +20 -6
- package/dist/hooks/pre-edit.js.map +1 -1
- package/dist/hooks/rename-state.d.ts +28 -0
- package/dist/hooks/rename-state.d.ts.map +1 -0
- package/dist/hooks/rename-state.js +35 -0
- package/dist/hooks/rename-state.js.map +1 -0
- package/dist/hooks/safety.d.ts.map +1 -1
- package/dist/hooks/safety.js +35 -14
- package/dist/hooks/safety.js.map +1 -1
- package/dist/hooks/shazam-guide.d.ts.map +1 -1
- package/dist/hooks/shazam-guide.js +39 -11
- package/dist/hooks/shazam-guide.js.map +1 -1
- package/dist/hooks/stop-verify.d.ts.map +1 -1
- package/dist/hooks/stop-verify.js +13 -11
- package/dist/hooks/stop-verify.js.map +1 -1
- package/dist/hooks/tool-logger.d.ts.map +1 -1
- package/dist/hooks/tool-logger.js +77 -17
- package/dist/hooks/tool-logger.js.map +1 -1
- package/dist/hooks/verify-state.d.ts +3 -0
- package/dist/hooks/verify-state.d.ts.map +1 -1
- package/dist/hooks/verify-state.js +36 -5
- package/dist/hooks/verify-state.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lsp/client.d.ts +11 -2
- package/dist/lsp/client.d.ts.map +1 -1
- package/dist/lsp/client.js +39 -17
- package/dist/lsp/client.js.map +1 -1
- package/dist/lsp/manager.d.ts +3 -1
- package/dist/lsp/manager.d.ts.map +1 -1
- package/dist/lsp/manager.js +42 -9
- package/dist/lsp/manager.js.map +1 -1
- package/dist/lsp/servers.js +1 -1
- package/dist/lsp/servers.js.map +1 -1
- package/dist/mcp/entry.js +15 -5
- package/dist/mcp/entry.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +135 -54
- package/dist/mcp/tools.js.map +1 -1
- package/dist/tools/_factory.d.ts +5 -0
- package/dist/tools/_factory.d.ts.map +1 -1
- package/dist/tools/_factory.js +26 -5
- package/dist/tools/_factory.js.map +1 -1
- package/dist/tools/call_chain.d.ts.map +1 -1
- package/dist/tools/call_chain.js +12 -7
- package/dist/tools/call_chain.js.map +1 -1
- package/dist/tools/codesearch.d.ts.map +1 -1
- package/dist/tools/codesearch.js +224 -36
- package/dist/tools/codesearch.js.map +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +15 -11
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/file_detail.d.ts.map +1 -1
- package/dist/tools/file_detail.js +16 -20
- package/dist/tools/file_detail.js.map +1 -1
- package/dist/tools/find_tests.d.ts.map +1 -1
- package/dist/tools/find_tests.js +2 -1
- package/dist/tools/find_tests.js.map +1 -1
- package/dist/tools/fix.d.ts.map +1 -1
- package/dist/tools/fix.js +39 -20
- package/dist/tools/fix.js.map +1 -1
- package/dist/tools/hotspots.d.ts.map +1 -1
- package/dist/tools/hotspots.js +11 -15
- package/dist/tools/hotspots.js.map +1 -1
- package/dist/tools/hover.d.ts.map +1 -1
- package/dist/tools/hover.js +9 -5
- package/dist/tools/hover.js.map +1 -1
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +44 -98
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/lsp_enrich.d.ts +7 -0
- package/dist/tools/lsp_enrich.d.ts.map +1 -1
- package/dist/tools/lsp_enrich.js +55 -11
- package/dist/tools/lsp_enrich.js.map +1 -1
- package/dist/tools/overview.d.ts.map +1 -1
- package/dist/tools/overview.js +26 -26
- package/dist/tools/overview.js.map +1 -1
- package/dist/tools/rename_symbol.d.ts.map +1 -1
- package/dist/tools/rename_symbol.js +34 -6
- package/dist/tools/rename_symbol.js.map +1 -1
- package/dist/tools/safe_delete.d.ts +3 -3
- package/dist/tools/safe_delete.js +7 -7
- package/dist/tools/safe_delete.js.map +1 -1
- package/dist/tools/symbol.d.ts.map +1 -1
- package/dist/tools/symbol.js +28 -42
- package/dist/tools/symbol.js.map +1 -1
- package/dist/tools/type_hierarchy.d.ts.map +1 -1
- package/dist/tools/type_hierarchy.js +13 -12
- package/dist/tools/type_hierarchy.js.map +1 -1
- package/dist/tools/verify.d.ts +0 -7
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +41 -222
- package/dist/tools/verify.js.map +1 -1
- package/package.json +75 -75
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ Compatible with any MCP-capable client. Same analysis engine, JSON-based tool in
|
|
|
56
56
|
| Tool | What It Does |
|
|
57
57
|
| ----------------------- | ---------------------------------------------------------------------------------- |
|
|
58
58
|
| `shazam_overview` | Project structure, top-10 core files by PageRank, key dependencies, recent commits |
|
|
59
|
-
| `shazam_impact` | Change impact analysis: affected files, symbols, tests
|
|
59
|
+
| `shazam_impact` | Change impact analysis (BFS depth tracking, default 3): affected files, symbols, tests |
|
|
60
60
|
| `shazam_codesearch` | BM25 symbol search + ripgrep full-text search (target=symbol/code) — ranked alternative to grep |
|
|
61
61
|
| `shazam_symbol` | Symbol definition, signature, callers, callees |
|
|
62
62
|
| `shazam_hover` | Type signatures, JSDoc, signatureHelp for function call context |
|
package/dist/core/baseline.d.ts
CHANGED
|
@@ -41,18 +41,6 @@ export interface BaselineDiff {
|
|
|
41
41
|
* Get the current session baseline.
|
|
42
42
|
*/
|
|
43
43
|
export declare function getBaseline(): SessionBaseline | null;
|
|
44
|
-
/**
|
|
45
|
-
* Set the session baseline.
|
|
46
|
-
*/
|
|
47
|
-
export declare function setBaseline(baseline: SessionBaseline): void;
|
|
48
|
-
/**
|
|
49
|
-
* Clear the session baseline (on branch switch).
|
|
50
|
-
*/
|
|
51
|
-
export declare function clearBaseline(): void;
|
|
52
|
-
/**
|
|
53
|
-
* Check if a baseline is available.
|
|
54
|
-
*/
|
|
55
|
-
export declare function hasBaseline(): boolean;
|
|
56
44
|
/**
|
|
57
45
|
* Create a baseline from the current graph state and LSP data.
|
|
58
46
|
*/
|
|
@@ -62,10 +50,6 @@ export declare function createBaseline(graph: RepoGraph, lspErrors: number, lspW
|
|
|
62
50
|
* Returns null if no baseline exists.
|
|
63
51
|
*/
|
|
64
52
|
export declare function diffFromBaseline(graph: RepoGraph, lspErrors: number, lspWarnings: number): BaselineDiff | null;
|
|
65
|
-
/**
|
|
66
|
-
* Format a baseline diff section for text output.
|
|
67
|
-
*/
|
|
68
|
-
export declare function formatBaselineDiff(diff: BaselineDiff): string;
|
|
69
53
|
/**
|
|
70
54
|
* Format a baseline summary section for tool output.
|
|
71
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB;AAOD;;GAEG;AACH,wBAAgB,WAAW,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB;AAOD;;GAEG;AACH,wBAAgB,WAAW,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACZ,eAAe,CA2BjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA4B9G;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAUvE"}
|
package/dist/core/baseline.js
CHANGED
|
@@ -20,25 +20,6 @@ let _previousOrphans = new Map();
|
|
|
20
20
|
export function getBaseline() {
|
|
21
21
|
return _baseline;
|
|
22
22
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Set the session baseline.
|
|
25
|
-
*/
|
|
26
|
-
export function setBaseline(baseline) {
|
|
27
|
-
_baseline = baseline;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Clear the session baseline (on branch switch).
|
|
31
|
-
*/
|
|
32
|
-
export function clearBaseline() {
|
|
33
|
-
_baseline = null;
|
|
34
|
-
_previousOrphans = new Map();
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Check if a baseline is available.
|
|
38
|
-
*/
|
|
39
|
-
export function hasBaseline() {
|
|
40
|
-
return _baseline !== null;
|
|
41
|
-
}
|
|
42
23
|
/**
|
|
43
24
|
* Create a baseline from the current graph state and LSP data.
|
|
44
25
|
*/
|
|
@@ -94,40 +75,6 @@ export function diffFromBaseline(graph, lspErrors, lspWarnings) {
|
|
|
94
75
|
addedEdges,
|
|
95
76
|
};
|
|
96
77
|
}
|
|
97
|
-
/**
|
|
98
|
-
* Format a baseline diff section for text output.
|
|
99
|
-
*/
|
|
100
|
-
export function formatBaselineDiff(diff) {
|
|
101
|
-
const lines = [];
|
|
102
|
-
lines.push("### Changes from Session Baseline");
|
|
103
|
-
lines.push("");
|
|
104
|
-
const changes = [];
|
|
105
|
-
if (diff.lspErrors !== 0)
|
|
106
|
-
changes.push(`LSP errors: ${diff.lspErrors > 0 ? "+" : ""}${diff.lspErrors}`);
|
|
107
|
-
if (diff.lspWarnings !== 0)
|
|
108
|
-
changes.push(`LSP warnings: ${diff.lspWarnings > 0 ? "+" : ""}${diff.lspWarnings}`);
|
|
109
|
-
if (diff.orphanSymbols !== 0)
|
|
110
|
-
changes.push(`Orphans: ${diff.orphanSymbols > 0 ? "+" : ""}${diff.orphanSymbols}`);
|
|
111
|
-
if (diff.graphEdges !== 0)
|
|
112
|
-
changes.push(`Graph edges: ${diff.graphEdges > 0 ? "+" : ""}${diff.graphEdges}`);
|
|
113
|
-
if (diff.symbolCount !== 0)
|
|
114
|
-
changes.push(`Symbols: ${diff.symbolCount > 0 ? "+" : ""}${diff.symbolCount}`);
|
|
115
|
-
if (changes.length > 0) {
|
|
116
|
-
lines.push(changes.join(" | "));
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
lines.push("No significant changes from baseline.");
|
|
120
|
-
}
|
|
121
|
-
if (diff.newOrphans.length > 0) {
|
|
122
|
-
lines.push("");
|
|
123
|
-
lines.push("### New Orphan Symbols");
|
|
124
|
-
for (const o of diff.newOrphans) {
|
|
125
|
-
lines.push(` - ${o.kind} \`${o.name}\` — ${o.file}:${o.line}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
lines.push("");
|
|
129
|
-
return lines.join("\n");
|
|
130
|
-
}
|
|
131
78
|
/**
|
|
132
79
|
* Format a baseline summary section for tool output.
|
|
133
80
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA4B1C,iFAAiF;AAEjF,IAAI,SAAS,GAA2B,IAAI,CAAC;AAC7C,IAAI,gBAAgB,GAA4E,IAAI,GAAG,EAAE,CAAC;AAE1G;;GAEG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"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"}
|
package/dist/core/cache.d.ts
CHANGED
|
@@ -5,56 +5,21 @@
|
|
|
5
5
|
* Stores cache under ~/.cache/repomap/<project-slug> for process-isolated
|
|
6
6
|
* cache directories. Supports V2 serialization with file-level data.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import type { RepoGraph, GraphDiff, SerializedSymbol, SerializedEdge } from "./graph.js";
|
|
8
|
+
import type { RepoGraph, GraphCacheData as GraphCacheDataExport } from "./graph.js";
|
|
10
9
|
/**
|
|
11
10
|
* Get the cache directory for a specific project.
|
|
12
11
|
* Uses MD5 hash of canonical path for isolation.
|
|
13
12
|
*/
|
|
14
13
|
export declare function getProjectCacheDir(projectPath: string): string;
|
|
15
|
-
/**
|
|
16
|
-
* Get the standard cache file paths for a project.
|
|
17
|
-
*/
|
|
18
|
-
export declare function getCachePaths(projectPath: string): {
|
|
19
|
-
symbols: string;
|
|
20
|
-
git: string;
|
|
21
|
-
lastSnapshot: string;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* V1 baseline data format (kept for reading legacy baseline files).
|
|
25
|
-
*/
|
|
26
|
-
interface BaselineData {
|
|
27
|
-
symbols: SerializedSymbol[];
|
|
28
|
-
edges: SerializedEdge[];
|
|
29
|
-
version: number;
|
|
30
|
-
timestamp: number;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Load a previously saved baseline snapshot (V1 format).
|
|
34
|
-
*/
|
|
35
|
-
export declare function loadBaseline(projectPath: string): BaselineData | null;
|
|
36
|
-
/**
|
|
37
|
-
* Compute the difference between the current graph and a saved baseline.
|
|
38
|
-
* Returns a structured diff with added/removed/modified symbols and edges.
|
|
39
|
-
*/
|
|
40
|
-
export declare function diffBaseline(graph: RepoGraph, projectPath: string): GraphDiff | null;
|
|
41
14
|
/**
|
|
42
15
|
* Save the full graph + file mtimes to a persistent cache file.
|
|
43
16
|
* Uses atomic write (tmp file + rename) to prevent corruption on crash.
|
|
44
17
|
*/
|
|
45
18
|
export declare function saveGraphCache(graph: RepoGraph, fileMtimes: Map<string, number>, cachePath: string): void;
|
|
46
|
-
export
|
|
47
|
-
graph: RepoGraph;
|
|
48
|
-
fileMtimes: Map<string, number>;
|
|
49
|
-
timestamp: number;
|
|
50
|
-
}
|
|
19
|
+
export type GraphCacheData = GraphCacheDataExport;
|
|
51
20
|
/**
|
|
52
21
|
* Load a persistent graph cache. Returns null if missing, corrupt, wrong
|
|
53
22
|
* version, or older than 7 days.
|
|
54
23
|
*/
|
|
55
24
|
export declare function loadGraphCache(cachePath: string): GraphCacheData | null;
|
|
56
|
-
/**
|
|
57
|
-
* Re-export serialization helpers for convenience.
|
|
58
|
-
*/
|
|
59
|
-
export { compareGraphSnapshots };
|
|
60
25
|
//# sourceMappingURL=cache.d.ts.map
|
package/dist/core/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMpF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAO9D;AA6BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAgBzG;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAyBvE"}
|
package/dist/core/cache.js
CHANGED
|
@@ -9,7 +9,7 @@ import { mkdirSync, readFileSync, writeFileSync, existsSync, statSync, renameSyn
|
|
|
9
9
|
import { join, dirname } from "node:path";
|
|
10
10
|
import { homedir } from "node:os";
|
|
11
11
|
import { createHash } from "node:crypto";
|
|
12
|
-
import { serializeGraphV2, deserializeGraphV2
|
|
12
|
+
import { serializeGraphV2, deserializeGraphV2 } from "./graph.js";
|
|
13
13
|
// ── Cache directory management ───────────────────────────────────────────────
|
|
14
14
|
const CACHE_ROOT = join(homedir(), ".cache", "repomap");
|
|
15
15
|
/**
|
|
@@ -24,57 +24,33 @@ export function getProjectCacheDir(projectPath) {
|
|
|
24
24
|
mkdirSync(cacheDir, { recursive: true });
|
|
25
25
|
return cacheDir;
|
|
26
26
|
}
|
|
27
|
+
// ── Persistent graph cache (V2) ──────────────────────────────────────────────
|
|
28
|
+
/** Max age for a cached graph file before it is considered stale. */
|
|
29
|
+
const CACHE_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 1 day — prevents stale cache in active projects (fixes #100)
|
|
27
30
|
/**
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
export function getCachePaths(projectPath) {
|
|
31
|
-
const dir = getProjectCacheDir(projectPath);
|
|
32
|
-
return {
|
|
33
|
-
symbols: join(dir, "symbols.json"),
|
|
34
|
-
git: join(dir, "git.json"),
|
|
35
|
-
lastSnapshot: join(dir, "last_snapshot.json"),
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Load a previously saved baseline snapshot (V1 format).
|
|
31
|
+
* Atomically rename a temp file to a target path, handling Windows EPERM/EBUSY
|
|
32
|
+
* by unlinking the target first and retrying.
|
|
40
33
|
*/
|
|
41
|
-
|
|
42
|
-
const { symbols } = getCachePaths(projectPath);
|
|
43
|
-
if (!existsSync(symbols))
|
|
44
|
-
return null;
|
|
34
|
+
function atomicRename(tmpPath, targetPath) {
|
|
45
35
|
try {
|
|
46
|
-
|
|
47
|
-
const data = JSON.parse(raw);
|
|
48
|
-
if (!data || !Array.isArray(data.symbols) || !Array.isArray(data.edges)) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
return data;
|
|
36
|
+
renameSync(tmpPath, targetPath);
|
|
52
37
|
}
|
|
53
38
|
catch (err) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return null;
|
|
67
|
-
const currentSymbols = [...graph.symbols.values()];
|
|
68
|
-
const currentEdges = [];
|
|
69
|
-
for (const [, edges] of graph.outgoing) {
|
|
70
|
-
for (const e of edges) {
|
|
71
|
-
currentEdges.push(e);
|
|
39
|
+
const code = err.code;
|
|
40
|
+
if (code === "EPERM" || code === "EBUSY") {
|
|
41
|
+
try {
|
|
42
|
+
unlinkSync(targetPath);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* target may not exist */
|
|
46
|
+
}
|
|
47
|
+
renameSync(tmpPath, targetPath);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw err;
|
|
72
51
|
}
|
|
73
52
|
}
|
|
74
|
-
return compareGraphSnapshots(currentSymbols, currentEdges, baseline.symbols, baseline.edges);
|
|
75
53
|
}
|
|
76
|
-
// ── Persistent graph cache (V2) ──────────────────────────────────────────────
|
|
77
|
-
const CACHE_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 1 day — prevents stale cache in active projects (fixes #100)
|
|
78
54
|
/**
|
|
79
55
|
* Save the full graph + file mtimes to a persistent cache file.
|
|
80
56
|
* Uses atomic write (tmp file + rename) to prevent corruption on crash.
|
|
@@ -85,14 +61,16 @@ export function saveGraphCache(graph, fileMtimes, cachePath) {
|
|
|
85
61
|
const tmpPath = cachePath + ".tmp";
|
|
86
62
|
try {
|
|
87
63
|
writeFileSync(tmpPath, JSON.stringify(serialized), "utf-8");
|
|
88
|
-
|
|
64
|
+
atomicRename(tmpPath, cachePath);
|
|
89
65
|
}
|
|
90
66
|
catch (err) {
|
|
91
67
|
// Clean up tmp file on failure
|
|
92
68
|
try {
|
|
93
69
|
unlinkSync(tmpPath);
|
|
94
70
|
}
|
|
95
|
-
catch {
|
|
71
|
+
catch {
|
|
72
|
+
/* ignore cleanup error */
|
|
73
|
+
}
|
|
96
74
|
throw err;
|
|
97
75
|
}
|
|
98
76
|
}
|
|
@@ -128,8 +106,4 @@ export function loadGraphCache(cachePath) {
|
|
|
128
106
|
return null;
|
|
129
107
|
}
|
|
130
108
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Re-export serialization helpers for convenience.
|
|
133
|
-
*/
|
|
134
|
-
export { compareGraphSnapshots };
|
|
135
109
|
//# sourceMappingURL=cache.js.map
|
package/dist/core/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/core/encoding.d.ts
CHANGED
|
@@ -5,6 +5,17 @@
|
|
|
5
5
|
* Includes OOM protection via file size limits (2MB max) and
|
|
6
6
|
* encoding validation on first 64KB chunk to reduce memory pressure.
|
|
7
7
|
*/
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when a file exceeds the max allowed size.
|
|
10
|
+
* Callers can check `instanceof FileTooLargeError` instead of
|
|
11
|
+
* substring-matching the error message.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FileTooLargeError extends Error {
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly size: number;
|
|
16
|
+
readonly limit: number;
|
|
17
|
+
constructor(path: string, size: number, limit: number);
|
|
18
|
+
}
|
|
8
19
|
/**
|
|
9
20
|
* Read a file with adaptive encoding fallback:
|
|
10
21
|
* 1. Try UTF-8
|
|
@@ -23,13 +34,4 @@ export declare function readFileAdaptive(filePath: string): string;
|
|
|
23
34
|
* Use this in async contexts (e.g., LSP enrichment) to avoid blocking the event loop.
|
|
24
35
|
*/
|
|
25
36
|
export declare function readFileAdaptiveAsync(filePath: string): Promise<string>;
|
|
26
|
-
/**
|
|
27
|
-
* Detect the most likely encoding for a buffer.
|
|
28
|
-
* Returns one of: "utf-8", "gbk", "gb2312", "unknown".
|
|
29
|
-
*/
|
|
30
|
-
export declare function detectEncoding(buffer: Buffer): string;
|
|
31
|
-
/**
|
|
32
|
-
* Read a file with specific encoding.
|
|
33
|
-
*/
|
|
34
|
-
export declare function readFileWithEncoding(filePath: string, encoding: string): string;
|
|
35
37
|
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAOrD;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA0CzD;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC7E"}
|
package/dist/core/encoding.js
CHANGED
|
@@ -12,6 +12,23 @@ import iconv from "iconv-lite";
|
|
|
12
12
|
// Lowered from 10MB to reduce OOM risk on resource-constrained environments
|
|
13
13
|
// (fixes #131, #148)
|
|
14
14
|
const MAX_FILE_SIZE = 2 * 1024 * 1024;
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when a file exceeds the max allowed size.
|
|
17
|
+
* Callers can check `instanceof FileTooLargeError` instead of
|
|
18
|
+
* substring-matching the error message.
|
|
19
|
+
*/
|
|
20
|
+
export class FileTooLargeError extends Error {
|
|
21
|
+
path;
|
|
22
|
+
size;
|
|
23
|
+
limit;
|
|
24
|
+
constructor(path, size, limit) {
|
|
25
|
+
super(`File too large (${size} bytes > ${limit}): ${path}`);
|
|
26
|
+
this.name = "FileTooLargeError";
|
|
27
|
+
this.path = path;
|
|
28
|
+
this.size = size;
|
|
29
|
+
this.limit = limit;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
15
32
|
// Chunk size for encoding validation — only validate first 64KB
|
|
16
33
|
// to avoid allocating huge strings for large files
|
|
17
34
|
const VALIDATION_CHUNK_SIZE = 64 * 1024;
|
|
@@ -34,11 +51,11 @@ export function readFileAdaptive(filePath) {
|
|
|
34
51
|
const stat = statSync(filePath);
|
|
35
52
|
fileSize = stat.size;
|
|
36
53
|
if (fileSize > MAX_FILE_SIZE) {
|
|
37
|
-
throw new
|
|
54
|
+
throw new FileTooLargeError(filePath, fileSize, MAX_FILE_SIZE);
|
|
38
55
|
}
|
|
39
56
|
}
|
|
40
57
|
catch (err) {
|
|
41
|
-
if (err instanceof
|
|
58
|
+
if (err instanceof FileTooLargeError) {
|
|
42
59
|
throw err; // re-throw our size error
|
|
43
60
|
}
|
|
44
61
|
// stat failed (permission, missing) — fall through to readFileSync which will error with a clearer message
|
|
@@ -76,11 +93,11 @@ export async function readFileAdaptiveAsync(filePath) {
|
|
|
76
93
|
try {
|
|
77
94
|
const stat = await statAsync(filePath);
|
|
78
95
|
if (stat.size > MAX_FILE_SIZE) {
|
|
79
|
-
throw new
|
|
96
|
+
throw new FileTooLargeError(filePath, stat.size, MAX_FILE_SIZE);
|
|
80
97
|
}
|
|
81
98
|
}
|
|
82
99
|
catch (err) {
|
|
83
|
-
if (err instanceof
|
|
100
|
+
if (err instanceof FileTooLargeError) {
|
|
84
101
|
throw err;
|
|
85
102
|
}
|
|
86
103
|
// stat failed — fall through to readFile which will error with a clearer message
|
|
@@ -107,41 +124,6 @@ export async function readFileAdaptiveAsync(filePath) {
|
|
|
107
124
|
// Last resort: UTF-8 with replacement
|
|
108
125
|
return buffer.toString("utf-8");
|
|
109
126
|
}
|
|
110
|
-
// ── Encoding detection ───────────────────────────────────────────────────────
|
|
111
|
-
/**
|
|
112
|
-
* Detect the most likely encoding for a buffer.
|
|
113
|
-
* Returns one of: "utf-8", "gbk", "gb2312", "unknown".
|
|
114
|
-
*/
|
|
115
|
-
export function detectEncoding(buffer) {
|
|
116
|
-
// Fast path: if UTF-8 is valid, skip other encoding checks
|
|
117
|
-
if (tryDecode(buffer, "utf-8") !== null)
|
|
118
|
-
return "utf-8";
|
|
119
|
-
// UTF-8 BOM check
|
|
120
|
-
if (buffer.length >= 3 && buffer[0] === 0xef && buffer[1] === 0xbb && buffer[2] === 0xbf) {
|
|
121
|
-
return "utf-8";
|
|
122
|
-
}
|
|
123
|
-
// Try UTF-8 validation
|
|
124
|
-
const utf8Result = tryDecode(buffer, "utf-8");
|
|
125
|
-
if (utf8Result !== null)
|
|
126
|
-
return "utf-8";
|
|
127
|
-
// Check for GBK/GB2312 patterns (high bytes 0x81-0xfe)
|
|
128
|
-
let gbkBytes = 0;
|
|
129
|
-
for (let i = 0; i < buffer.length; i++) {
|
|
130
|
-
const byte = buffer[i];
|
|
131
|
-
if (byte !== undefined && byte >= 0x81 && byte <= 0xfe) {
|
|
132
|
-
gbkBytes++;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
if (gbkBytes > buffer.length * 0.3) {
|
|
136
|
-
const gbkResult = tryDecode(buffer, "gbk");
|
|
137
|
-
if (gbkResult !== null)
|
|
138
|
-
return "gbk";
|
|
139
|
-
const gbResult = tryDecode(buffer, "gb2312");
|
|
140
|
-
if (gbResult !== null)
|
|
141
|
-
return "gb2312";
|
|
142
|
-
}
|
|
143
|
-
return "unknown";
|
|
144
|
-
}
|
|
145
127
|
// ── Internal helpers ─────────────────────────────────────────────────────────
|
|
146
128
|
/**
|
|
147
129
|
* Validate that a buffer contains only valid UTF-8 byte sequences.
|
|
@@ -236,19 +218,4 @@ function tryDecode(buffer, encoding) {
|
|
|
236
218
|
return null;
|
|
237
219
|
}
|
|
238
220
|
}
|
|
239
|
-
// ── Convenience ──────────────────────────────────────────────────────────────
|
|
240
|
-
/**
|
|
241
|
-
* Read a file with specific encoding.
|
|
242
|
-
*/
|
|
243
|
-
export function readFileWithEncoding(filePath, encoding) {
|
|
244
|
-
const stat = statSync(filePath);
|
|
245
|
-
if (stat.size > MAX_FILE_SIZE) {
|
|
246
|
-
throw new Error(`File too large (${stat.size} bytes > ${MAX_FILE_SIZE}): ${filePath}`);
|
|
247
|
-
}
|
|
248
|
-
const buffer = readFileSync(filePath);
|
|
249
|
-
if (encoding === "utf-8") {
|
|
250
|
-
return buffer.toString("utf-8");
|
|
251
|
-
}
|
|
252
|
-
return iconv.decode(buffer, encoding);
|
|
253
|
-
}
|
|
254
221
|
//# sourceMappingURL=encoding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,4DAA4D;AAC5D,4EAA4E;AAC5E,qBAAqB;AACrB,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtC,gEAAgE;AAChE,mDAAmD;AACnD,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAChD,gDAAgD;IAChD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;YAC9B,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"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"}
|
package/dist/core/filter.d.ts
CHANGED
|
@@ -15,15 +15,6 @@ import type { RepoGraph } from "./graph.js";
|
|
|
15
15
|
*/
|
|
16
16
|
export declare const SKIP_DIRS: Set<string>;
|
|
17
17
|
export declare function isNonSourceFile(file: string): boolean;
|
|
18
|
-
/**
|
|
19
|
-
* Check whether a normalized absolute path should be tracked by the
|
|
20
|
-
* pre-edit guard. Returns false for paths inside non-source trees
|
|
21
|
-
* (SKIP_DIRS, dot-directories not in SKIP_DIRS, node_modules, dist, etc.).
|
|
22
|
-
*
|
|
23
|
-
* Single source of truth mirroring scanner.ts's directory filtering so
|
|
24
|
-
* pre-edit.ts does not flag writes to /tmp/, ~/.pi/, or build outputs
|
|
25
|
-
* as "unverified edits".
|
|
26
|
-
*/
|
|
27
18
|
export declare function isTrackableEditedPath(normalizedPath: string): boolean;
|
|
28
19
|
/**
|
|
29
20
|
* Shared orphan symbol detection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../core/filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA+D5C;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,aA4BpB,CAAC;AAEH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../core/filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA+D5C;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,aA4BpB,CAAC;AAEH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAiBD,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAarE;AA6GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG;IAC9C,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACvF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvE,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvE,CAoFA"}
|
package/dist/core/filter.js
CHANGED
|
@@ -116,17 +116,22 @@ export function isNonSourceFile(file) {
|
|
|
116
116
|
* pre-edit.ts does not flag writes to /tmp/, ~/.pi/, or build outputs
|
|
117
117
|
* as "unverified edits".
|
|
118
118
|
*/
|
|
119
|
+
/**
|
|
120
|
+
* Dot-prefixed directory names that contain legitimate config files
|
|
121
|
+
* which should be trackable by the pre-edit guard.
|
|
122
|
+
*/
|
|
123
|
+
const DOT_PREFIX_ALLOWLIST = new Set([".github", ".husky", ".vscode", ".claude"]);
|
|
119
124
|
export function isTrackableEditedPath(normalizedPath) {
|
|
120
125
|
// Fast path: reject non-source files by pattern (node_modules, dist, *.json)
|
|
121
126
|
if (isNonSourceFile(normalizedPath))
|
|
122
127
|
return false;
|
|
123
128
|
// Segment-based check: reject any path that traverses a skipped directory
|
|
124
129
|
// or a dot-directory not in SKIP_DIRS (e.g. .pi, .git, .cache)
|
|
125
|
-
const segments = normalizedPath.split(
|
|
130
|
+
const segments = normalizedPath.split(/[\\/]+/).filter(Boolean);
|
|
126
131
|
for (const seg of segments) {
|
|
127
132
|
if (SKIP_DIRS.has(seg))
|
|
128
133
|
return false;
|
|
129
|
-
if (seg.startsWith(".") && !SKIP_DIRS.has(seg))
|
|
134
|
+
if (seg.startsWith(".") && !SKIP_DIRS.has(seg) && !DOT_PREFIX_ALLOWLIST.has(seg))
|
|
130
135
|
return false;
|
|
131
136
|
}
|
|
132
137
|
return true;
|
|
@@ -339,11 +344,10 @@ export function findOrphans(graph) {
|
|
|
339
344
|
if (sym.kind === "impl")
|
|
340
345
|
continue;
|
|
341
346
|
// Skip test files
|
|
342
|
-
if (sym.file
|
|
343
|
-
sym.file
|
|
344
|
-
sym.file
|
|
345
|
-
sym.file
|
|
346
|
-
sym.file.includes("/test/"))
|
|
347
|
+
if (/(^|\/)tests?(\/|$)/.test(sym.file) ||
|
|
348
|
+
/\.test\./.test(sym.file) ||
|
|
349
|
+
/(^|\/)test_/.test(sym.file) ||
|
|
350
|
+
/_test\./.test(sym.file))
|
|
347
351
|
continue;
|
|
348
352
|
// Skip registration functions called dynamically by frameworks
|
|
349
353
|
if (isRegistrationSymbol(sym.name))
|
package/dist/core/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../core/filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,QAAgB;IAC9D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,qEAAqE;IACrE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,cAAsB,EAAE,UAAkB;IACpE,IAAI,cAAc,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAG,GAAG,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;IACtD,CAAC;IACD,kCAAkC;IAClC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAG,QAAQ,GAAG,GAAG,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAsB;IACnD,qBAAqB;IACrB,iBAAiB;IACjB,8BAA8B;IAC9B,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,qBAAqB;IACrB,wBAAwB;IACxB,SAAS;IACT,wBAAwB,EAAE,qBAAqB;IAC/C,4BAA4B,EAAE,iBAAiB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,2BAA2B,EAAE,mBAAmB;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IAChC,cAAc;IACd,kBAAkB;IAClB,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;IACL,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,UAAU;IACV,aAAa;IACb,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,SAAS;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC3D,6EAA6E;IAC7E,IAAI,eAAe,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAElD,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../core/filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,QAAgB;IAC9D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,qEAAqE;IACrE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,cAAsB,EAAE,UAAkB;IACpE,IAAI,cAAc,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAG,GAAG,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;IACtD,CAAC;IACD,kCAAkC;IAClC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAG,QAAQ,GAAG,GAAG,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAsB;IACnD,qBAAqB;IACrB,iBAAiB;IACjB,8BAA8B;IAC9B,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,qBAAqB;IACrB,wBAAwB;IACxB,SAAS;IACT,wBAAwB,EAAE,qBAAqB;IAC/C,4BAA4B,EAAE,iBAAiB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,2BAA2B,EAAE,mBAAmB;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IAChC,cAAc;IACd,kBAAkB;IAClB,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;IACL,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,UAAU;IACV,aAAa;IACb,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,SAAS;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAElF,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC3D,6EAA6E;IAC7E,IAAI,eAAe,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAElD,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAChG,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC;AACjH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAY;IACrD,sBAAsB;IACtB,IACC,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,UAAU,EAClB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IACD,oBAAoB;IACpB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACrD,oEAAoE;IACpE,mEAAmE;IACnE,mEAAmE;IACnE,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;YAC/B,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS;YACT,SAAS;YACT,OAAO;YACP,OAAO;YACP,MAAM;YACN,MAAM;YACN,IAAI;YACJ,WAAW;YACX,KAAK;YACL,YAAY;YACZ,WAAW;YACX,aAAa;YACb,UAAU;YACV,cAAc;YACd,SAAS;YACT,OAAO;YACP,OAAO;YACP,OAAO;YACP,UAAU;YACV,IAAI;YACJ,OAAO;YACP,QAAQ;YACR,MAAM;YACN,MAAM;YACN,OAAO;YACP,SAAS;YACT,MAAM;SACN,CAAC,CAAC;QACH,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,kBAAkB;IAClB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACxD,qEAAqE;IACrE,2CAA2C;IAC3C,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,gCAAgC;IAChC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAa,EAAE,IAAa;IACrE,qDAAqD;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,gEAAgE;IAChE,oEAAoE;IACpE,IAAI,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;YAClC,KAAK;YACL,KAAK;YACL,OAAO;YACP,cAAc;YACd,eAAe;YACf,MAAM;YACN,YAAY;YACZ,QAAQ;YACR,MAAM;SACN,CAAC,CAAC;QACH,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgB;IAK3C,MAAM,GAAG,GAAsF,EAAE,CAAC;IAClG,MAAM,QAAQ,GAAiE,EAAE,CAAC;IAClF,MAAM,QAAQ,GAAiE,EAAE,CAAC;IAElF,yEAAyE;IACzE,qEAAqE;IACrE,uEAAuE;IACvE,iEAAiE;IACjE,kDAAkD;IAClD,EAAE;IACF,mEAAmE;IACnE,uEAAuE;IACvE,yBAAyB;IACzB,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9C,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACvD,OAAO,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU;gBAAE,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,kEAAkE;QAClE,iEAAiE;QACjE,qEAAqE;QACrE,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACzC,kEAAkE;QAClE,mEAAmE;QACnE,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU;YAAE,SAAS;QAC5C,kEAAkE;QAClE,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAChD,kEAAkE;QAClE,iEAAiE;QACjE,6DAA6D;QAC7D,6BAA6B;QAC7B,IACC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EACtB,CAAC;YACF,SAAS;QACV,CAAC;QACD,+DAA+D;QAC/D,qEAAqE;QACrE,mEAAmE;QACnE,mEAAmE;QACnE,iEAAiE;QACjE,0DAA0D;QAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS;QACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,2BAA2B;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB;gBAAE,SAAS;YAChD,yEAAyE;YACzE,mEAAmE;YACnE,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAClC,kBAAkB;YAClB,IACC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAExB,SAAS;YACV,+DAA+D;YAC/D,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7C,6CAA6C;YAC7C,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrD,kCAAkC;YAClC,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAE/D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;YAClF,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC"}
|