cxgrd 0.1.0 → 0.1.2
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/dist/auth/audit-usage.js +34 -21
- package/dist/auth/audit-usage.js.map +1 -1
- package/dist/auth/auth-session.js +26 -20
- package/dist/auth/auth-session.js.map +1 -1
- package/dist/auth/auth-store.js +22 -16
- package/dist/auth/auth-store.js.map +1 -1
- package/dist/auth/entitlements.js +35 -22
- package/dist/auth/entitlements.js.map +1 -1
- package/dist/auth/open-browser.js +6 -3
- package/dist/auth/open-browser.js.map +1 -1
- package/dist/auth/plans.js +13 -6
- package/dist/auth/plans.js.map +1 -1
- package/dist/auth/plans.test.js +23 -18
- package/dist/auth/plans.test.js.map +1 -1
- package/dist/cg-directory.js +40 -35
- package/dist/cg-directory.js.map +1 -1
- package/dist/check/check-runner.js +16 -13
- package/dist/check/check-runner.js.map +1 -1
- package/dist/check/compiler-service.js +22 -19
- package/dist/check/compiler-service.js.map +1 -1
- package/dist/check/parsers/cargo.js +4 -1
- package/dist/check/parsers/cargo.js.map +1 -1
- package/dist/check/parsers/parsers.test.js +30 -25
- package/dist/check/parsers/parsers.test.js.map +1 -1
- package/dist/check/parsers/pyright.js +4 -1
- package/dist/check/parsers/pyright.js.map +1 -1
- package/dist/check/parsers/tsc-cli.js +4 -1
- package/dist/check/parsers/tsc-cli.js.map +1 -1
- package/dist/check/project-tooling.js +23 -16
- package/dist/check/project-tooling.js.map +1 -1
- package/dist/check/run-command.js +9 -5
- package/dist/check/run-command.js.map +1 -1
- package/dist/check/scope.js +14 -8
- package/dist/check/scope.js.map +1 -1
- package/dist/check/scope.test.js +15 -10
- package/dist/check/scope.test.js.map +1 -1
- package/dist/check/strict-mode.js +6 -2
- package/dist/check/strict-mode.js.map +1 -1
- package/dist/check/strict-mode.test.js +19 -14
- package/dist/check/strict-mode.test.js.map +1 -1
- package/dist/check/structural-checks.js +4 -1
- package/dist/check/structural-checks.js.map +1 -1
- package/dist/check/types.js +2 -1
- package/dist/check/verifiers/python.js +11 -8
- package/dist/check/verifiers/python.js.map +1 -1
- package/dist/check/verifiers/rust.js +11 -8
- package/dist/check/verifiers/rust.js.map +1 -1
- package/dist/check/verifiers/typescript.js +24 -18
- package/dist/check/verifiers/typescript.js.map +1 -1
- package/dist/commands/auth.js +42 -34
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/check.js +49 -43
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/doctor.js +33 -27
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init-hooks.js +34 -31
- package/dist/commands/init-hooks.js.map +1 -1
- package/dist/commands/input.js +46 -43
- package/dist/commands/input.js.map +1 -1
- package/dist/commands/prompt.js +40 -34
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/scan.js +49 -43
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/watch.js +20 -17
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/env.js +21 -16
- package/dist/config/env.js.map +1 -1
- package/dist/graph.js +38 -36
- package/dist/graph.js.map +1 -1
- package/dist/index.js +32 -27
- package/dist/index.js.map +1 -1
- package/dist/memory/pattern-analyzer.js +6 -2
- package/dist/memory/pattern-analyzer.js.map +1 -1
- package/dist/memory/repo-memory.js +10 -4
- package/dist/memory/repo-memory.js.map +1 -1
- package/dist/memory/types.js +2 -1
- package/dist/prompt/llm-client.js +10 -7
- package/dist/prompt/llm-client.js.map +1 -1
- package/dist/prompt/subgraph.js +10 -6
- package/dist/prompt/subgraph.js.map +1 -1
- package/dist/scanner.js +51 -49
- package/dist/scanner.js.map +1 -1
- package/dist/team/audit.js +10 -7
- package/dist/team/audit.js.map +1 -1
- package/dist/team/cloud-client.js +23 -17
- package/dist/team/cloud-client.js.map +1 -1
- package/dist/team/dev-store.js +34 -25
- package/dist/team/dev-store.js.map +1 -1
- package/dist/team/graph-sync.js +28 -20
- package/dist/team/graph-sync.js.map +1 -1
- package/dist/team/policy-cache.js +19 -14
- package/dist/team/policy-cache.js.map +1 -1
- package/dist/team/policy-engine.js +4 -1
- package/dist/team/policy-engine.js.map +1 -1
- package/dist/team/policy-engine.test.js +18 -13
- package/dist/team/policy-engine.test.js.map +1 -1
- package/dist/team/repo-identity.js +9 -6
- package/dist/team/repo-identity.js.map +1 -1
- package/dist/team/types.js +2 -1
- package/dist/toolchain/probe.js +23 -14
- package/dist/toolchain/probe.js.map +1 -1
- package/dist/toolchain/project-languages.js +20 -16
- package/dist/toolchain/project-languages.js.map +1 -1
- package/dist/toolchain/types.js +2 -1
- package/dist/utils/blast-radius-analyzer.js +7 -2
- package/dist/utils/blast-radius-analyzer.js.map +1 -1
- package/dist/utils/change-detector.js +8 -3
- package/dist/utils/change-detector.js.map +1 -1
- package/dist/utils/cli-formatter.js +34 -26
- package/dist/utils/cli-formatter.js.map +1 -1
- package/dist/utils/git-hook-manager.js +42 -34
- package/dist/utils/git-hook-manager.js.map +1 -1
- package/dist/utils/project-watcher.js +17 -12
- package/dist/utils/project-watcher.js.map +1 -1
- package/package.json +1 -2
package/dist/cg-directory.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CgDirectory = void 0;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
class CgDirectory {
|
|
7
|
+
cgPath;
|
|
4
8
|
constructor(projectPath) {
|
|
5
|
-
this.cgPath = join(projectPath, '.cg');
|
|
9
|
+
this.cgPath = (0, path_1.join)(projectPath, '.cg');
|
|
6
10
|
}
|
|
7
11
|
async initialize() {
|
|
8
12
|
try {
|
|
9
|
-
await mkdir(this.cgPath, { recursive: true });
|
|
13
|
+
await (0, promises_1.mkdir)(this.cgPath, { recursive: true });
|
|
10
14
|
}
|
|
11
15
|
catch (err) {
|
|
12
16
|
// Directory might already exist
|
|
@@ -14,38 +18,38 @@ export class CgDirectory {
|
|
|
14
18
|
}
|
|
15
19
|
async writeGraph(graphData) {
|
|
16
20
|
await this.initialize();
|
|
17
|
-
const graphPath = join(this.cgPath, 'graph.json');
|
|
18
|
-
await writeFile(graphPath, JSON.stringify(graphData, null, 2));
|
|
21
|
+
const graphPath = (0, path_1.join)(this.cgPath, 'graph.json');
|
|
22
|
+
await (0, promises_1.writeFile)(graphPath, JSON.stringify(graphData, null, 2));
|
|
19
23
|
}
|
|
20
24
|
async writeSymbols(symbolsData) {
|
|
21
25
|
await this.initialize();
|
|
22
|
-
const symbolsPath = join(this.cgPath, 'symbols.json');
|
|
23
|
-
await writeFile(symbolsPath, JSON.stringify(symbolsData, null, 2));
|
|
26
|
+
const symbolsPath = (0, path_1.join)(this.cgPath, 'symbols.json');
|
|
27
|
+
await (0, promises_1.writeFile)(symbolsPath, JSON.stringify(symbolsData, null, 2));
|
|
24
28
|
}
|
|
25
29
|
async writeArch(archData) {
|
|
26
30
|
await this.initialize();
|
|
27
|
-
const archPath = join(this.cgPath, 'arch.json');
|
|
28
|
-
await writeFile(archPath, JSON.stringify(archData, null, 2));
|
|
31
|
+
const archPath = (0, path_1.join)(this.cgPath, 'arch.json');
|
|
32
|
+
await (0, promises_1.writeFile)(archPath, JSON.stringify(archData, null, 2));
|
|
29
33
|
}
|
|
30
34
|
async writeHistory(historyData) {
|
|
31
35
|
await this.initialize();
|
|
32
|
-
const historyPath = join(this.cgPath, 'history.json');
|
|
33
|
-
await writeFile(historyPath, JSON.stringify(historyData, null, 2));
|
|
36
|
+
const historyPath = (0, path_1.join)(this.cgPath, 'history.json');
|
|
37
|
+
await (0, promises_1.writeFile)(historyPath, JSON.stringify(historyData, null, 2));
|
|
34
38
|
}
|
|
35
39
|
async writePatterns(patternsData) {
|
|
36
40
|
await this.initialize();
|
|
37
|
-
const patternsPath = join(this.cgPath, 'patterns.json');
|
|
38
|
-
await writeFile(patternsPath, JSON.stringify(patternsData, null, 2));
|
|
41
|
+
const patternsPath = (0, path_1.join)(this.cgPath, 'patterns.json');
|
|
42
|
+
await (0, promises_1.writeFile)(patternsPath, JSON.stringify(patternsData, null, 2));
|
|
39
43
|
}
|
|
40
44
|
async writeMeta(meta) {
|
|
41
45
|
await this.initialize();
|
|
42
|
-
const metaPath = join(this.cgPath, 'meta.json');
|
|
43
|
-
await writeFile(metaPath, JSON.stringify(meta, null, 2));
|
|
46
|
+
const metaPath = (0, path_1.join)(this.cgPath, 'meta.json');
|
|
47
|
+
await (0, promises_1.writeFile)(metaPath, JSON.stringify(meta, null, 2));
|
|
44
48
|
}
|
|
45
49
|
async readGraph() {
|
|
46
50
|
try {
|
|
47
|
-
const graphPath = join(this.cgPath, 'graph.json');
|
|
48
|
-
const data = await readFile(graphPath, 'utf-8');
|
|
51
|
+
const graphPath = (0, path_1.join)(this.cgPath, 'graph.json');
|
|
52
|
+
const data = await (0, promises_1.readFile)(graphPath, 'utf-8');
|
|
49
53
|
return JSON.parse(data);
|
|
50
54
|
}
|
|
51
55
|
catch (err) {
|
|
@@ -54,8 +58,8 @@ export class CgDirectory {
|
|
|
54
58
|
}
|
|
55
59
|
async readHistory() {
|
|
56
60
|
try {
|
|
57
|
-
const historyPath = join(this.cgPath, 'history.json');
|
|
58
|
-
const data = await readFile(historyPath, 'utf-8');
|
|
61
|
+
const historyPath = (0, path_1.join)(this.cgPath, 'history.json');
|
|
62
|
+
const data = await (0, promises_1.readFile)(historyPath, 'utf-8');
|
|
59
63
|
return JSON.parse(data);
|
|
60
64
|
}
|
|
61
65
|
catch (err) {
|
|
@@ -64,8 +68,8 @@ export class CgDirectory {
|
|
|
64
68
|
}
|
|
65
69
|
async readArch() {
|
|
66
70
|
try {
|
|
67
|
-
const archPath = join(this.cgPath, 'arch.json');
|
|
68
|
-
const data = await readFile(archPath, 'utf-8');
|
|
71
|
+
const archPath = (0, path_1.join)(this.cgPath, 'arch.json');
|
|
72
|
+
const data = await (0, promises_1.readFile)(archPath, 'utf-8');
|
|
69
73
|
return JSON.parse(data);
|
|
70
74
|
}
|
|
71
75
|
catch (err) {
|
|
@@ -74,8 +78,8 @@ export class CgDirectory {
|
|
|
74
78
|
}
|
|
75
79
|
async readPatterns() {
|
|
76
80
|
try {
|
|
77
|
-
const patternsPath = join(this.cgPath, 'patterns.json');
|
|
78
|
-
const data = await readFile(patternsPath, 'utf-8');
|
|
81
|
+
const patternsPath = (0, path_1.join)(this.cgPath, 'patterns.json');
|
|
82
|
+
const data = await (0, promises_1.readFile)(patternsPath, 'utf-8');
|
|
79
83
|
return JSON.parse(data);
|
|
80
84
|
}
|
|
81
85
|
catch (err) {
|
|
@@ -84,8 +88,8 @@ export class CgDirectory {
|
|
|
84
88
|
}
|
|
85
89
|
async readSymbols() {
|
|
86
90
|
try {
|
|
87
|
-
const symbolsPath = join(this.cgPath, 'symbols.json');
|
|
88
|
-
const data = await readFile(symbolsPath, 'utf-8');
|
|
91
|
+
const symbolsPath = (0, path_1.join)(this.cgPath, 'symbols.json');
|
|
92
|
+
const data = await (0, promises_1.readFile)(symbolsPath, 'utf-8');
|
|
89
93
|
return JSON.parse(data);
|
|
90
94
|
}
|
|
91
95
|
catch (err) {
|
|
@@ -94,8 +98,8 @@ export class CgDirectory {
|
|
|
94
98
|
}
|
|
95
99
|
async readMemory() {
|
|
96
100
|
try {
|
|
97
|
-
const memoryPath = join(this.cgPath, 'memory.json');
|
|
98
|
-
const data = await readFile(memoryPath, 'utf-8');
|
|
101
|
+
const memoryPath = (0, path_1.join)(this.cgPath, 'memory.json');
|
|
102
|
+
const data = await (0, promises_1.readFile)(memoryPath, 'utf-8');
|
|
99
103
|
return JSON.parse(data);
|
|
100
104
|
}
|
|
101
105
|
catch (err) {
|
|
@@ -104,18 +108,18 @@ export class CgDirectory {
|
|
|
104
108
|
}
|
|
105
109
|
async writeMemory(memory) {
|
|
106
110
|
await this.initialize();
|
|
107
|
-
const memoryPath = join(this.cgPath, 'memory.json');
|
|
108
|
-
await writeFile(memoryPath, JSON.stringify(memory, null, 2));
|
|
111
|
+
const memoryPath = (0, path_1.join)(this.cgPath, 'memory.json');
|
|
112
|
+
await (0, promises_1.writeFile)(memoryPath, JSON.stringify(memory, null, 2));
|
|
109
113
|
}
|
|
110
114
|
async writeCheckResult(result) {
|
|
111
115
|
await this.initialize();
|
|
112
|
-
const checkPath = join(this.cgPath, 'check-latest.json');
|
|
113
|
-
await writeFile(checkPath, JSON.stringify(result, null, 2));
|
|
116
|
+
const checkPath = (0, path_1.join)(this.cgPath, 'check-latest.json');
|
|
117
|
+
await (0, promises_1.writeFile)(checkPath, JSON.stringify(result, null, 2));
|
|
114
118
|
}
|
|
115
119
|
async readMeta() {
|
|
116
120
|
try {
|
|
117
|
-
const metaPath = join(this.cgPath, 'meta.json');
|
|
118
|
-
const data = await readFile(metaPath, 'utf-8');
|
|
121
|
+
const metaPath = (0, path_1.join)(this.cgPath, 'meta.json');
|
|
122
|
+
const data = await (0, promises_1.readFile)(metaPath, 'utf-8');
|
|
119
123
|
return JSON.parse(data);
|
|
120
124
|
}
|
|
121
125
|
catch (err) {
|
|
@@ -126,4 +130,5 @@ export class CgDirectory {
|
|
|
126
130
|
return this.cgPath;
|
|
127
131
|
}
|
|
128
132
|
}
|
|
133
|
+
exports.CgDirectory = CgDirectory;
|
|
129
134
|
//# sourceMappingURL=cg-directory.js.map
|
package/dist/cg-directory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-directory.js","sourceRoot":"","sources":["../src/cg-directory.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"cg-directory.js","sourceRoot":"","sources":["../src/cg-directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runCheck = runCheck;
|
|
4
|
+
const structural_checks_1 = require("./structural-checks");
|
|
5
|
+
const compiler_service_1 = require("./compiler-service");
|
|
6
|
+
const scope_1 = require("./scope");
|
|
7
|
+
const strict_mode_1 = require("./strict-mode");
|
|
8
|
+
const project_languages_1 = require("../toolchain/project-languages");
|
|
9
|
+
async function runCheck(graph, arch, options) {
|
|
10
|
+
const scopeFiles = (0, scope_1.resolveScopeFiles)(options.projectPath, options.scope);
|
|
8
11
|
const issues = [];
|
|
9
12
|
if (!options.skipStructural) {
|
|
10
|
-
const structural = runStructuralChecks(graph, arch);
|
|
11
|
-
issues.push(...filterIssuesByScope(structural, scopeFiles, options.projectPath));
|
|
13
|
+
const structural = (0, structural_checks_1.runStructuralChecks)(graph, arch);
|
|
14
|
+
issues.push(...(0, scope_1.filterIssuesByScope)(structural, scopeFiles, options.projectPath));
|
|
12
15
|
}
|
|
13
16
|
let compilerSummary = [];
|
|
14
17
|
let skippedLanguages = [];
|
|
15
18
|
if (!options.skipCompiler) {
|
|
16
|
-
const { issues: compilerIssues, summaries } = await runCompilerChecks(options.projectPath, scopeFiles);
|
|
19
|
+
const { issues: compilerIssues, summaries } = await (0, compiler_service_1.runCompilerChecks)(options.projectPath, scopeFiles);
|
|
17
20
|
issues.push(...compilerIssues);
|
|
18
21
|
compilerSummary = summaries;
|
|
19
|
-
const languagesInScope = await getCompilerLanguagesInScope(options.projectPath, scopeFiles);
|
|
20
|
-
skippedLanguages = getSkippedLanguagesInScope(compilerSummary, languagesInScope);
|
|
22
|
+
const languagesInScope = await (0, project_languages_1.getCompilerLanguagesInScope)(options.projectPath, scopeFiles);
|
|
23
|
+
skippedLanguages = (0, strict_mode_1.getSkippedLanguagesInScope)(compilerSummary, languagesInScope);
|
|
21
24
|
if (options.strict) {
|
|
22
|
-
issues.push(...collectStrictModeIssues(compilerSummary, languagesInScope));
|
|
25
|
+
issues.push(...(0, strict_mode_1.collectStrictModeIssues)(compilerSummary, languagesInScope));
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
const errors = issues.filter((i) => i.severity === 'error');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../src/check/check-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../src/check/check-runner.ts"],"names":[],"mappings":";;AAOA,4BA8DC;AApED,2DAA0D;AAC1D,yDAAuD;AACvD,mCAAiE;AACjE,+CAAoF;AACpF,sEAA6E;AAEtE,KAAK,UAAU,QAAQ,CAC5B,KAAU,EACV,IAAS,EACT,OAAqB;IAErB,MAAM,UAAU,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAA,uCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,2BAAmB,EAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,eAAe,GAAmC,EAAE,CAAC;IAEzD,IAAI,gBAAgB,GAAkD,EAAE,CAAC;IAEzE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,oCAAiB,EACnE,OAAO,CAAC,WAAW,EACnB,UAAU,CACX,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAC/B,eAAe,GAAG,SAAS,CAAC;QAE5B,MAAM,gBAAgB,GAAG,MAAM,IAAA,+CAA2B,EACxD,OAAO,CAAC,WAAW,EACnB,UAAU,CACX,CAAC;QACF,gBAAgB,GAAG,IAAA,wCAA0B,EAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAEjF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,qCAAuB,EAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;IAChF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAE5E,MAAM,UAAU,GACd,OAAO,CAAC,KAAK,KAAK,KAAK;QACrB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ;YAC1B,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,eAAe,CAAC;IAExB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IAE5D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC3B,MAAM;QACN,eAAe;QACf,gBAAgB;QAChB,OAAO,EAAE;YACP,UAAU,UAAU,EAAE;YACtB,SAAS,UAAU,EAAE;YACrB,GAAG,MAAM,CAAC,MAAM,YAAY,gBAAgB,gBAAgB,cAAc,YAAY;YACtF,GAAG,QAAQ,CAAC,MAAM,WAAW;SAC9B,CAAC,IAAI,CAAC,KAAK,CAAC;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runCompilerChecks = runCompilerChecks;
|
|
4
|
+
const project_tooling_1 = require("./project-tooling");
|
|
5
|
+
const scope_1 = require("./scope");
|
|
6
|
+
const typescript_1 = require("./verifiers/typescript");
|
|
7
|
+
const python_1 = require("./verifiers/python");
|
|
8
|
+
const rust_1 = require("./verifiers/rust");
|
|
9
|
+
async function runCompilerChecks(projectRoot, scopeFiles) {
|
|
7
10
|
const allIssues = [];
|
|
8
11
|
const summaries = [];
|
|
9
|
-
const tsProjects = await discoverTypeScriptProjects(projectRoot);
|
|
12
|
+
const tsProjects = await (0, project_tooling_1.discoverTypeScriptProjects)(projectRoot);
|
|
10
13
|
for (const project of tsProjects) {
|
|
11
|
-
if (!projectOverlapsScope(project.rootDir, projectRoot, scopeFiles)) {
|
|
14
|
+
if (!(0, project_tooling_1.projectOverlapsScope)(project.rootDir, projectRoot, scopeFiles)) {
|
|
12
15
|
continue;
|
|
13
16
|
}
|
|
14
|
-
const { issues, summary } = await verifyTypeScriptProject(project, projectRoot);
|
|
17
|
+
const { issues, summary } = await (0, typescript_1.verifyTypeScriptProject)(project, projectRoot);
|
|
15
18
|
summaries.push(summary);
|
|
16
|
-
allIssues.push(...filterIssuesByScope(normalizeIssuePaths(issues, projectRoot), scopeFiles, projectRoot));
|
|
19
|
+
allIssues.push(...(0, scope_1.filterIssuesByScope)(normalizeIssuePaths(issues, projectRoot), scopeFiles, projectRoot));
|
|
17
20
|
}
|
|
18
|
-
const pyProjects = await discoverPythonProjects(projectRoot);
|
|
21
|
+
const pyProjects = await (0, project_tooling_1.discoverPythonProjects)(projectRoot);
|
|
19
22
|
for (const project of pyProjects) {
|
|
20
|
-
if (!projectOverlapsScope(project.rootDir, projectRoot, scopeFiles)) {
|
|
23
|
+
if (!(0, project_tooling_1.projectOverlapsScope)(project.rootDir, projectRoot, scopeFiles)) {
|
|
21
24
|
continue;
|
|
22
25
|
}
|
|
23
|
-
const { issues, summary } = await verifyPythonProject(project, projectRoot);
|
|
26
|
+
const { issues, summary } = await (0, python_1.verifyPythonProject)(project, projectRoot);
|
|
24
27
|
summaries.push(summary);
|
|
25
|
-
allIssues.push(...filterIssuesByScope(normalizeIssuePaths(issues, projectRoot), scopeFiles, projectRoot));
|
|
28
|
+
allIssues.push(...(0, scope_1.filterIssuesByScope)(normalizeIssuePaths(issues, projectRoot), scopeFiles, projectRoot));
|
|
26
29
|
}
|
|
27
|
-
const rustWorkspaces = await discoverRustWorkspaces(projectRoot);
|
|
30
|
+
const rustWorkspaces = await (0, project_tooling_1.discoverRustWorkspaces)(projectRoot);
|
|
28
31
|
for (const workspace of rustWorkspaces) {
|
|
29
|
-
if (!projectOverlapsScope(workspace.rootDir, projectRoot, scopeFiles)) {
|
|
32
|
+
if (!(0, project_tooling_1.projectOverlapsScope)(workspace.rootDir, projectRoot, scopeFiles)) {
|
|
30
33
|
continue;
|
|
31
34
|
}
|
|
32
|
-
const { issues, summary } = await verifyRustWorkspace(workspace, projectRoot);
|
|
35
|
+
const { issues, summary } = await (0, rust_1.verifyRustWorkspace)(workspace, projectRoot);
|
|
33
36
|
summaries.push(summary);
|
|
34
|
-
allIssues.push(...filterIssuesByScope(normalizeIssuePaths(issues, projectRoot), scopeFiles, projectRoot));
|
|
37
|
+
allIssues.push(...(0, scope_1.filterIssuesByScope)(normalizeIssuePaths(issues, projectRoot), scopeFiles, projectRoot));
|
|
35
38
|
}
|
|
36
39
|
if (tsProjects.length === 0 && pyProjects.length === 0 && rustWorkspaces.length === 0) {
|
|
37
40
|
summaries.push({
|
|
@@ -63,7 +66,7 @@ export async function runCompilerChecks(projectRoot, scopeFiles) {
|
|
|
63
66
|
function normalizeIssuePaths(issues, projectRoot) {
|
|
64
67
|
return issues.map((issue) => ({
|
|
65
68
|
...issue,
|
|
66
|
-
file: issue.file ? normalizeProjectPath(projectRoot, issue.file) : undefined,
|
|
69
|
+
file: issue.file ? (0, scope_1.normalizeProjectPath)(projectRoot, issue.file) : undefined,
|
|
67
70
|
}));
|
|
68
71
|
}
|
|
69
72
|
//# sourceMappingURL=compiler-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler-service.js","sourceRoot":"","sources":["../../src/check/compiler-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compiler-service.js","sourceRoot":"","sources":["../../src/check/compiler-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseCargoJsonLines = parseCargoJsonLines;
|
|
4
|
+
function parseCargoJsonLines(output) {
|
|
2
5
|
const issues = [];
|
|
3
6
|
for (const line of output.split('\n')) {
|
|
4
7
|
const trimmed = line.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../../src/check/parsers/cargo.ts"],"names":[],"mappings":"AAcA,
|
|
1
|
+
{"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../../src/check/parsers/cargo.ts"],"names":[],"mappings":";;AAcA,kDAiCC;AAjCD,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEvC,IAAI,GAAiB,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB;YAAE,SAAS;QAChD,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QAE/D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,SAAS;YAAE,SAAS;QAE/B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACrD,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,gBAAgB;YACxC,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI;YACpB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,21 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
const tsc_cli_1 = require("./tsc-cli");
|
|
9
|
+
const pyright_1 = require("./pyright");
|
|
10
|
+
const cargo_1 = require("./cargo");
|
|
11
|
+
(0, node_test_1.describe)('parseTscCliOutput', () => {
|
|
12
|
+
(0, node_test_1.it)('parses standard tsc error lines', () => {
|
|
8
13
|
const output = `src/foo.ts(12,5): error TS2322: Type 'string' is not assignable to type 'number'.`;
|
|
9
|
-
const issues = parseTscCliOutput(output);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
const issues = (0, tsc_cli_1.parseTscCliOutput)(output);
|
|
15
|
+
strict_1.default.equal(issues.length, 1);
|
|
16
|
+
strict_1.default.equal(issues[0].severity, 'error');
|
|
17
|
+
strict_1.default.equal(issues[0].file, 'src/foo.ts');
|
|
18
|
+
strict_1.default.equal(issues[0].line, 12);
|
|
19
|
+
strict_1.default.equal(issues[0].code, 'TS2322');
|
|
15
20
|
});
|
|
16
21
|
});
|
|
17
|
-
describe('parsePyrightJson', () => {
|
|
18
|
-
it('parses pyright JSON diagnostics', () => {
|
|
22
|
+
(0, node_test_1.describe)('parsePyrightJson', () => {
|
|
23
|
+
(0, node_test_1.it)('parses pyright JSON diagnostics', () => {
|
|
19
24
|
const output = JSON.stringify({
|
|
20
25
|
generalDiagnostics: [
|
|
21
26
|
{
|
|
@@ -27,14 +32,14 @@ describe('parsePyrightJson', () => {
|
|
|
27
32
|
},
|
|
28
33
|
],
|
|
29
34
|
});
|
|
30
|
-
const issues = parsePyrightJson(output);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
const issues = (0, pyright_1.parsePyrightJson)(output);
|
|
36
|
+
strict_1.default.equal(issues.length, 1);
|
|
37
|
+
strict_1.default.equal(issues[0].line, 4);
|
|
38
|
+
strict_1.default.equal(issues[0].language, 'python');
|
|
34
39
|
});
|
|
35
40
|
});
|
|
36
|
-
describe('parseCargoJsonLines', () => {
|
|
37
|
-
it('parses cargo compiler-message JSON lines', () => {
|
|
41
|
+
(0, node_test_1.describe)('parseCargoJsonLines', () => {
|
|
42
|
+
(0, node_test_1.it)('parses cargo compiler-message JSON lines', () => {
|
|
38
43
|
const line = JSON.stringify({
|
|
39
44
|
reason: 'compiler-message',
|
|
40
45
|
level: 'error',
|
|
@@ -42,10 +47,10 @@ describe('parseCargoJsonLines', () => {
|
|
|
42
47
|
code: { code: 'E0423' },
|
|
43
48
|
spans: [{ file_name: 'src/main.rs', line_start: 10, column_start: 5 }],
|
|
44
49
|
});
|
|
45
|
-
const issues = parseCargoJsonLines(line);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
const issues = (0, cargo_1.parseCargoJsonLines)(line);
|
|
51
|
+
strict_1.default.equal(issues.length, 1);
|
|
52
|
+
strict_1.default.equal(issues[0].file, 'src/main.rs');
|
|
53
|
+
strict_1.default.equal(issues[0].code, 'E0423');
|
|
49
54
|
});
|
|
50
55
|
});
|
|
51
56
|
//# sourceMappingURL=parsers.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.test.js","sourceRoot":"","sources":["../../../src/check/parsers/parsers.test.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"parsers.test.js","sourceRoot":"","sources":["../../../src/check/parsers/parsers.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,gEAAwC;AACxC,uCAA8C;AAC9C,uCAA6C;AAC7C,mCAA8C;AAE9C,IAAA,oBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,cAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,mFAAmF,CAAC;QACnG,MAAM,MAAM,GAAG,IAAA,2BAAiB,EAAC,MAAM,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC3C,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,cAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,kBAAkB,EAAE;gBAClB;oBACE,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,oBAAoB;oBAC7B,IAAI,EAAE,yBAAyB;oBAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;iBAC5C;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;QACxC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAA,cAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,qBAAqB;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YACvB,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;SACvE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACzC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5C,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pyright.js","sourceRoot":"","sources":["../../../src/check/parsers/pyright.ts"],"names":[],"mappings":"AAoBA,
|
|
1
|
+
{"version":3,"file":"pyright.js","sourceRoot":"","sources":["../../../src/check/parsers/pyright.ts"],"names":[],"mappings":";;AAoBA,4CA4BC;AA5BD,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAkB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEzB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAEzF,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;YACxC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC;YAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTscCliOutput = parseTscCliOutput;
|
|
1
4
|
/** Fallback parser for `tsc --noEmit` stdout when programmatic API is unavailable. */
|
|
2
5
|
const TSC_LINE = /^(?<file>.+)\((?<line>\d+),(?<column>\d+)\):\s+(?<severity>error|warning)\s+(?<code>TS\d+):\s+(?<message>.+)$/;
|
|
3
|
-
|
|
6
|
+
function parseTscCliOutput(output) {
|
|
4
7
|
const issues = [];
|
|
5
8
|
for (const line of output.split('\n')) {
|
|
6
9
|
const match = line.trim().match(TSC_LINE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsc-cli.js","sourceRoot":"","sources":["../../../src/check/parsers/tsc-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tsc-cli.js","sourceRoot":"","sources":["../../../src/check/parsers/tsc-cli.ts"],"names":[],"mappings":";;AAMA,8CAoBC;AAxBD,sFAAsF;AACtF,MAAM,QAAQ,GACZ,+GAA+G,CAAC;AAElH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,SAAS;QAE7B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACjE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;YAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YACvB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YACvB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.discoverTypeScriptProjects = discoverTypeScriptProjects;
|
|
4
|
+
exports.discoverRustWorkspaces = discoverRustWorkspaces;
|
|
5
|
+
exports.discoverPythonProjects = discoverPythonProjects;
|
|
6
|
+
exports.projectOverlapsScope = projectOverlapsScope;
|
|
7
|
+
exports.pathExists = pathExists;
|
|
8
|
+
const promises_1 = require("fs/promises");
|
|
9
|
+
const path_1 = require("path");
|
|
3
10
|
const IGNORE_DIRS = new Set([
|
|
4
11
|
'node_modules',
|
|
5
12
|
'.git',
|
|
@@ -20,7 +27,7 @@ async function walkForFiles(root, matcher, maxDepth = 6) {
|
|
|
20
27
|
return;
|
|
21
28
|
let entries;
|
|
22
29
|
try {
|
|
23
|
-
entries = await readdir(dir, { withFileTypes: true });
|
|
30
|
+
entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
|
|
24
31
|
}
|
|
25
32
|
catch {
|
|
26
33
|
return;
|
|
@@ -29,7 +36,7 @@ async function walkForFiles(root, matcher, maxDepth = 6) {
|
|
|
29
36
|
if (entry.isDirectory() && IGNORE_DIRS.has(entry.name)) {
|
|
30
37
|
continue;
|
|
31
38
|
}
|
|
32
|
-
const fullPath = join(dir, entry.name);
|
|
39
|
+
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
33
40
|
if (entry.isFile() && matcher(entry.name)) {
|
|
34
41
|
found.push(fullPath);
|
|
35
42
|
}
|
|
@@ -41,29 +48,29 @@ async function walkForFiles(root, matcher, maxDepth = 6) {
|
|
|
41
48
|
await walk(root, 0);
|
|
42
49
|
return found;
|
|
43
50
|
}
|
|
44
|
-
|
|
51
|
+
async function discoverTypeScriptProjects(projectRoot) {
|
|
45
52
|
const configs = await walkForFiles(projectRoot, (name) => name === 'tsconfig.json');
|
|
46
53
|
return configs.map((configPath) => ({
|
|
47
54
|
configPath,
|
|
48
|
-
rootDir: dirname(configPath),
|
|
55
|
+
rootDir: (0, path_1.dirname)(configPath),
|
|
49
56
|
}));
|
|
50
57
|
}
|
|
51
|
-
|
|
58
|
+
async function discoverRustWorkspaces(projectRoot) {
|
|
52
59
|
const manifests = await walkForFiles(projectRoot, (name) => name === 'Cargo.toml');
|
|
53
60
|
return manifests.map((manifestPath) => ({
|
|
54
61
|
manifestPath,
|
|
55
|
-
rootDir: dirname(manifestPath),
|
|
62
|
+
rootDir: (0, path_1.dirname)(manifestPath),
|
|
56
63
|
}));
|
|
57
64
|
}
|
|
58
|
-
|
|
65
|
+
async function discoverPythonProjects(projectRoot) {
|
|
59
66
|
const roots = new Set();
|
|
60
67
|
const pyproject = await walkForFiles(projectRoot, (name) => name === 'pyproject.toml');
|
|
61
68
|
for (const path of pyproject) {
|
|
62
|
-
roots.add(dirname(path));
|
|
69
|
+
roots.add((0, path_1.dirname)(path));
|
|
63
70
|
}
|
|
64
71
|
const requirements = await walkForFiles(projectRoot, (name) => name === 'requirements.txt');
|
|
65
72
|
for (const path of requirements) {
|
|
66
|
-
roots.add(dirname(path));
|
|
73
|
+
roots.add((0, path_1.dirname)(path));
|
|
67
74
|
}
|
|
68
75
|
// If .py files exist at root but no config, still allow pyright at project root
|
|
69
76
|
if (roots.size === 0) {
|
|
@@ -74,17 +81,17 @@ export async function discoverPythonProjects(projectRoot) {
|
|
|
74
81
|
}
|
|
75
82
|
return [...roots].map((rootDir) => ({
|
|
76
83
|
rootDir,
|
|
77
|
-
configPath: pyproject.find((p) => dirname(p) === rootDir),
|
|
84
|
+
configPath: pyproject.find((p) => (0, path_1.dirname)(p) === rootDir),
|
|
78
85
|
}));
|
|
79
86
|
}
|
|
80
|
-
|
|
87
|
+
function projectOverlapsScope(projectDir, projectRoot, scopeFiles) {
|
|
81
88
|
if (!scopeFiles) {
|
|
82
89
|
return true;
|
|
83
90
|
}
|
|
84
91
|
if (scopeFiles.size === 0) {
|
|
85
92
|
return false;
|
|
86
93
|
}
|
|
87
|
-
const relProject = relative(projectRoot, projectDir).replace(/\\/g, '/') || '.';
|
|
94
|
+
const relProject = (0, path_1.relative)(projectRoot, projectDir).replace(/\\/g, '/') || '.';
|
|
88
95
|
const prefix = relProject === '.' ? '' : `${relProject}/`;
|
|
89
96
|
for (const file of scopeFiles) {
|
|
90
97
|
if (relProject === '.' || file.startsWith(prefix) || file === relProject) {
|
|
@@ -93,9 +100,9 @@ export function projectOverlapsScope(projectDir, projectRoot, scopeFiles) {
|
|
|
93
100
|
}
|
|
94
101
|
return false;
|
|
95
102
|
}
|
|
96
|
-
|
|
103
|
+
async function pathExists(path) {
|
|
97
104
|
try {
|
|
98
|
-
await stat(path);
|
|
105
|
+
await (0, promises_1.stat)(path);
|
|
99
106
|
return true;
|
|
100
107
|
}
|
|
101
108
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tooling.js","sourceRoot":"","sources":["../../src/check/project-tooling.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-tooling.js","sourceRoot":"","sources":["../../src/check/project-tooling.ts"],"names":[],"mappings":"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"}
|