phpstan-mcp-mx 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -4
- package/README.md +85 -50
- package/dist/baseline.js +15 -11
- package/dist/baseline.js.map +1 -1
- package/dist/changed.js +11 -11
- package/dist/changed.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/defaults.js +11 -11
- package/dist/defaults.js.map +1 -1
- package/dist/dumptype.d.ts +86 -0
- package/dist/dumptype.js +190 -0
- package/dist/dumptype.js.map +1 -0
- package/dist/failure.d.ts +1 -1
- package/dist/failure.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/phpstan/output.js +2 -2
- package/dist/phpstan/output.js.map +1 -1
- package/dist/phpstan/parameters.js +10 -10
- package/dist/phpstan/parameters.js.map +1 -1
- package/dist/phpstan/process.js +2 -2
- package/dist/phpstan/process.js.map +1 -1
- package/dist/phpstan/queue.js +3 -3
- package/dist/phpstan/queue.js.map +1 -1
- package/dist/phpstan.d.ts +29 -2
- package/dist/phpstan.js +130 -45
- package/dist/phpstan.js.map +1 -1
- package/dist/project.js +12 -12
- package/dist/project.js.map +1 -1
- package/dist/report.js +31 -31
- package/dist/report.js.map +1 -1
- package/dist/roots.js +3 -3
- package/dist/roots.js.map +1 -1
- package/dist/runner.js +10 -10
- package/dist/runner.js.map +1 -1
- package/dist/server.js +3 -3
- package/dist/server.js.map +1 -1
- package/dist/tmpdir.js +4 -4
- package/dist/tmpdir.js.map +1 -1
- package/dist/tools/analysis.js +38 -38
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.d.ts +2 -0
- package/dist/tools/inspect.js +161 -85
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.js +165 -162
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.js +38 -38
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/writes.js +23 -23
- package/dist/tools/writes.js.map +1 -1
- package/dist/tools.js +2 -1
- package/dist/tools.js.map +1 -1
- package/dist/unmatched.js +31 -30
- package/dist/unmatched.js.map +1 -1
- package/dist/version.d.ts +17 -4
- package/dist/version.js +27 -4
- package/dist/version.js.map +1 -1
- package/package.json +1 -2
package/dist/defaults.js
CHANGED
|
@@ -41,11 +41,11 @@ export function loadProjectDefaults(env = process.env) {
|
|
|
41
41
|
ontleed = JSON.parse(ruw);
|
|
42
42
|
}
|
|
43
43
|
catch {
|
|
44
|
-
throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR}
|
|
45
|
-
'
|
|
44
|
+
throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR} does not contain valid JSON. Expected an object with, per project ` +
|
|
45
|
+
'path, for example {"memoryLimit": "2G", "timeoutSeconds": 600, "config": "phpstan.neon"}.');
|
|
46
46
|
}
|
|
47
47
|
if (typeof ontleed !== 'object' || ontleed === null || Array.isArray(ontleed)) {
|
|
48
|
-
throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR}
|
|
48
|
+
throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR} must be an object with one project path per key.`);
|
|
49
49
|
}
|
|
50
50
|
const defaults = new Map();
|
|
51
51
|
for (const [pad, waarde] of Object.entries(ontleed)) {
|
|
@@ -61,37 +61,37 @@ export function defaultsFor(project, env = process.env) {
|
|
|
61
61
|
function controleer(pad, waarde) {
|
|
62
62
|
const waar = `${PROJECTS_ENV_VAR}: "${pad}"`;
|
|
63
63
|
if (!isAbsolute(pad)) {
|
|
64
|
-
throw new ProjectDefaultsError(`${waar} is
|
|
64
|
+
throw new ProjectDefaultsError(`${waar} is not an absolute project path.`);
|
|
65
65
|
}
|
|
66
66
|
if (typeof waarde !== 'object' || waarde === null || Array.isArray(waarde)) {
|
|
67
|
-
throw new ProjectDefaultsError(`${waar}
|
|
67
|
+
throw new ProjectDefaultsError(`${waar} must be an object, for example {"memoryLimit": "2G"}.`);
|
|
68
68
|
}
|
|
69
69
|
const obj = waarde;
|
|
70
70
|
const onbekend = Object.keys(obj).filter((key) => !KEYS.includes(key));
|
|
71
71
|
if (onbekend.length > 0) {
|
|
72
|
-
throw new ProjectDefaultsError(`${waar}
|
|
72
|
+
throw new ProjectDefaultsError(`${waar} has unknown key(s) ${onbekend.map((key) => `"${key}"`).join(', ')}. Allowed are ${KEYS.join(', ')}.`);
|
|
73
73
|
}
|
|
74
74
|
const result = {};
|
|
75
75
|
if (obj['memoryLimit'] !== undefined) {
|
|
76
76
|
const limit = obj['memoryLimit'];
|
|
77
77
|
if (typeof limit !== 'string' || !isValidMemoryLimit(limit.trim())) {
|
|
78
|
-
throw new ProjectDefaultsError(`${waar}
|
|
79
|
-
'
|
|
78
|
+
throw new ProjectDefaultsError(`${waar} has memoryLimit ${JSON.stringify(limit)}, a format PHPStan does not accept. ` +
|
|
79
|
+
'Use a number with an optional K, M or G (e.g. "1G"), or -1 for no limit.');
|
|
80
80
|
}
|
|
81
81
|
result.memoryLimit = limit.trim();
|
|
82
82
|
}
|
|
83
83
|
if (obj['timeoutSeconds'] !== undefined) {
|
|
84
84
|
const seconds = obj['timeoutSeconds'];
|
|
85
85
|
if (typeof seconds !== 'number' || !Number.isInteger(seconds) || seconds < 1 || seconds > MAX_TIMEOUT_SECONDS) {
|
|
86
|
-
throw new ProjectDefaultsError(`${waar}
|
|
87
|
-
`
|
|
86
|
+
throw new ProjectDefaultsError(`${waar} has timeoutSeconds ${JSON.stringify(seconds)}; expected a whole number ` +
|
|
87
|
+
`from 1 to ${String(MAX_TIMEOUT_SECONDS)} inclusive.`);
|
|
88
88
|
}
|
|
89
89
|
result.timeoutSeconds = seconds;
|
|
90
90
|
}
|
|
91
91
|
if (obj['config'] !== undefined) {
|
|
92
92
|
const config = obj['config'];
|
|
93
93
|
if (typeof config !== 'string' || config.trim() === '') {
|
|
94
|
-
throw new ProjectDefaultsError(`${waar}
|
|
94
|
+
throw new ProjectDefaultsError(`${waar} has an empty or unusable config; expected a path inside the project.`);
|
|
95
95
|
}
|
|
96
96
|
result.config = config.trim();
|
|
97
97
|
}
|
package/dist/defaults.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,YAAY,OAAe,EAAE,SAAwB,iBAAiB,EAAE,UAA0B,EAAE;QAClG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAcxC,+EAA+E;AAC/E,MAAM,IAAI,GAAuC,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAE7F,4EAA4E;AAC5E,iFAAiF;AACjF,qFAAqF;AACrF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAEtD,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,oBAAoB,CAC5B,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { AnalyseOptions, AnalysisResult } from './phpstan.js';
|
|
2
|
+
import type { ResolvedProject } from './project.js';
|
|
3
|
+
/** Hoeveel expressies één aanroep hoogstens meeneemt. */
|
|
4
|
+
export declare const MAX_EXPRESSIONS = 10;
|
|
5
|
+
/** Hoe lang één expressie mag zijn; een dump is voor een waarde, niet voor een blok code. */
|
|
6
|
+
export declare const MAX_EXPRESSION_CHARS = 500;
|
|
7
|
+
/** Het invoegen van de dumps, met wat nodig is om de uitslag terug te lezen. */
|
|
8
|
+
export interface Probe {
|
|
9
|
+
/** De inhoud van het bestand met de ingevoegde regels. */
|
|
10
|
+
readonly content: string;
|
|
11
|
+
/** De regel waarvóór is ingevoegd; de dumps staan op deze regel en de volgende. */
|
|
12
|
+
readonly line: number;
|
|
13
|
+
/** De expressies zoals ze ingevoegd zijn, na het opschonen. */
|
|
14
|
+
readonly expressions: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
/** Het type van één expressie, of waarom er geen is. */
|
|
17
|
+
export interface ProbedType {
|
|
18
|
+
readonly expression: string;
|
|
19
|
+
/** Het type zoals PHPStan het afleidt; null als PHPStan er geen rapporteerde. */
|
|
20
|
+
readonly type: string | null;
|
|
21
|
+
/** Andere meldingen op de regel van deze dump, zoals `variable.undefined` bij `*ERROR*`. */
|
|
22
|
+
readonly problems: readonly {
|
|
23
|
+
identifier: string | null;
|
|
24
|
+
message: string;
|
|
25
|
+
}[];
|
|
26
|
+
}
|
|
27
|
+
/** Een parse-fout, met het regelnummer van het oorspronkelijke bestand. */
|
|
28
|
+
export interface ParseProblem {
|
|
29
|
+
readonly line: number | null;
|
|
30
|
+
/** Of de fout op een van de ingevoegde regels staat. */
|
|
31
|
+
readonly inserted: boolean;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
}
|
|
34
|
+
/** Het antwoord van `inspect_type`. */
|
|
35
|
+
export interface TypeReport {
|
|
36
|
+
readonly project: string;
|
|
37
|
+
/** Pad relatief aan de projectroot. */
|
|
38
|
+
readonly file: string;
|
|
39
|
+
readonly line: number;
|
|
40
|
+
readonly types: readonly ProbedType[];
|
|
41
|
+
readonly parseErrors: readonly ParseProblem[];
|
|
42
|
+
readonly generalErrors: readonly string[];
|
|
43
|
+
readonly warnings: readonly string[];
|
|
44
|
+
readonly omitted: {
|
|
45
|
+
readonly parseErrors: number;
|
|
46
|
+
readonly generalErrors: number;
|
|
47
|
+
readonly warnings: number;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Wat een aanroep vraagt. */
|
|
51
|
+
export interface TypeRequest {
|
|
52
|
+
readonly path: string;
|
|
53
|
+
readonly line: number;
|
|
54
|
+
readonly expressions: readonly string[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Laat zien welk type PHPStan afleidt voor een of meer expressies, vlak vóór `line`.
|
|
58
|
+
*
|
|
59
|
+
* PHPStans eigen begeleiding zegt: overschrijf het afgeleide type niet met `assert()` of
|
|
60
|
+
* een inline `@var`. Dan moet het model dat type wel kunnen zien, en tot nu toe kon dat
|
|
61
|
+
* alleen door het bestand te bewerken, te analyseren en weer terug te draaien. Hier gaat
|
|
62
|
+
* dat via een kopie buiten het project (`analyseEdited`), dus dit blijft read-only.
|
|
63
|
+
*/
|
|
64
|
+
export declare function inspectType(project: ResolvedProject, request: TypeRequest, options?: Pick<AnalyseOptions, 'config' | 'memoryLimit' | 'timeoutMs' | 'signal'>): Promise<TypeReport>;
|
|
65
|
+
/**
|
|
66
|
+
* Voegt vóór `line` één regel `\PHPStan\dumpType(<expressie>);` per expressie in.
|
|
67
|
+
*
|
|
68
|
+
* Elke expressie op een eigen regel, want PHPStan rapporteert twee dumps op één regel
|
|
69
|
+
* niet in een vaste volgorde (nagemeten) — het regelnummer is dan het enige dat een type
|
|
70
|
+
* aan zijn expressie koppelt. Een regeleinde in een expressie zou die telling verschuiven,
|
|
71
|
+
* en wordt daarom geweigerd.
|
|
72
|
+
*/
|
|
73
|
+
export declare function insertProbes(source: string, line: number, expressions: readonly string[]): Probe;
|
|
74
|
+
/**
|
|
75
|
+
* Leest de uitslag van een analyse met ingevoegde dumps terug.
|
|
76
|
+
*
|
|
77
|
+
* Alleen wat op de ingevoegde regels staat hoort bij een expressie; de gewone bevindingen
|
|
78
|
+
* van het bestand zijn niet gevraagd (daar is `analyse_file` voor). Parse-fouten wél,
|
|
79
|
+
* waar ze ook staan: een regel op een plek waar geen statement kan (midden in een
|
|
80
|
+
* meerregelige expressie, in een klassebody) breekt het hele bestand, en nagemeten staan
|
|
81
|
+
* de meeste fouten dan ná de ingevoegde regel. Hun regelnummers worden teruggerekend naar
|
|
82
|
+
* het oorspronkelijke bestand, anders wijzen ze een of meer regels te ver.
|
|
83
|
+
*/
|
|
84
|
+
export declare function readProbes(project: string, file: string, probe: Probe, result: AnalysisResult): TypeReport;
|
|
85
|
+
/** Schrijft het antwoord uit als tekst voor het model. */
|
|
86
|
+
export declare function renderTypes(report: TypeReport): string;
|
package/dist/dumptype.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
3
|
+
import { PhpstanError, analyseEdited } from './phpstan.js';
|
|
4
|
+
import { resolveWithin } from './project.js';
|
|
5
|
+
import { MAX_MESSAGES, displayPath, limitMessages } from './report.js';
|
|
6
|
+
/** Hoeveel expressies één aanroep hoogstens meeneemt. */
|
|
7
|
+
export const MAX_EXPRESSIONS = 10;
|
|
8
|
+
/** Hoe lang één expressie mag zijn; een dump is voor een waarde, niet voor een blok code. */
|
|
9
|
+
export const MAX_EXPRESSION_CHARS = 500;
|
|
10
|
+
/** Waar PHPStan het type van een `dumpType` mee inleidt. */
|
|
11
|
+
const DUMPED = 'Dumped type: ';
|
|
12
|
+
/**
|
|
13
|
+
* Laat zien welk type PHPStan afleidt voor een of meer expressies, vlak vóór `line`.
|
|
14
|
+
*
|
|
15
|
+
* PHPStans eigen begeleiding zegt: overschrijf het afgeleide type niet met `assert()` of
|
|
16
|
+
* een inline `@var`. Dan moet het model dat type wel kunnen zien, en tot nu toe kon dat
|
|
17
|
+
* alleen door het bestand te bewerken, te analyseren en weer terug te draaien. Hier gaat
|
|
18
|
+
* dat via een kopie buiten het project (`analyseEdited`), dus dit blijft read-only.
|
|
19
|
+
*/
|
|
20
|
+
export async function inspectType(project, request, options = {}) {
|
|
21
|
+
const file = resolveWithin(project, request.path);
|
|
22
|
+
if (!statSync(file).isFile()) {
|
|
23
|
+
throw new PhpstanError(`"${request.path}" is a directory; inspect_type needs one PHP file.`, 'invalid_argument', {
|
|
24
|
+
hint: 'Pass the path of a single PHP file.',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const probe = insertProbes(readFileSync(file, 'utf8'), request.line, request.expressions);
|
|
28
|
+
const result = await analyseEdited(project, { insteadOf: file, content: probe.content, name: copyName(project.path) }, options);
|
|
29
|
+
return readProbes(project.path, file, probe, result);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* De naam van de kopie. Met een hash van het project, want in de tijdelijke map van een
|
|
33
|
+
* runner staan alle projecten van die omgeving naast elkaar. En met het proces-id: binnen
|
|
34
|
+
* één server houdt de queue per project twee aanroepen uit elkaar, maar twee servers op
|
|
35
|
+
* hetzelfde project (twee sessies) hebben elk hun eigen queue.
|
|
36
|
+
*/
|
|
37
|
+
function copyName(project) {
|
|
38
|
+
const hash = createHash('sha256').update(project).digest('hex').slice(0, 12);
|
|
39
|
+
return `phpstan-mcp-type-${hash}-${String(process.pid)}.php`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Voegt vóór `line` één regel `\PHPStan\dumpType(<expressie>);` per expressie in.
|
|
43
|
+
*
|
|
44
|
+
* Elke expressie op een eigen regel, want PHPStan rapporteert twee dumps op één regel
|
|
45
|
+
* niet in een vaste volgorde (nagemeten) — het regelnummer is dan het enige dat een type
|
|
46
|
+
* aan zijn expressie koppelt. Een regeleinde in een expressie zou die telling verschuiven,
|
|
47
|
+
* en wordt daarom geweigerd.
|
|
48
|
+
*/
|
|
49
|
+
export function insertProbes(source, line, expressions) {
|
|
50
|
+
const cleaned = expressions.map(cleanExpression);
|
|
51
|
+
if (cleaned.length === 0 || cleaned.length > MAX_EXPRESSIONS) {
|
|
52
|
+
throw new PhpstanError(`Pass between 1 and ${String(MAX_EXPRESSIONS)} expressions; got ${String(cleaned.length)}.`, 'invalid_argument');
|
|
53
|
+
}
|
|
54
|
+
const lines = source.split('\n');
|
|
55
|
+
// Een afsluitend regeleinde levert een lege laatste "regel" op die in geen editor bestaat.
|
|
56
|
+
const count = source.endsWith('\n') ? lines.length - 1 : lines.length;
|
|
57
|
+
if (!Number.isInteger(line) || line < 1 || line > count) {
|
|
58
|
+
throw new PhpstanError(`Line ${String(line)} is outside the file, which has ${String(count)} line(s).`, 'invalid_argument', { hint: 'Pass the first line of a statement inside a function or method.' });
|
|
59
|
+
}
|
|
60
|
+
lines.splice(line - 1, 0, ...cleaned.map((expression) => `\\PHPStan\\dumpType(${expression});`));
|
|
61
|
+
return { content: lines.join('\n'), line, expressions: cleaned };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Een expressie zoals hij tussen de haakjes past. Een afsluitende `;` is vergeeflijk — wie
|
|
65
|
+
* `$rows;` meegeeft bedoelt `$rows` — maar een lege of meerregelige expressie niet.
|
|
66
|
+
*/
|
|
67
|
+
function cleanExpression(expression) {
|
|
68
|
+
const cleaned = expression.trim().replace(/[\s;]+$/, '');
|
|
69
|
+
if (cleaned === '') {
|
|
70
|
+
throw new PhpstanError('An expression is empty; pass the PHP expression whose type you want, e.g. "$user".', 'invalid_argument');
|
|
71
|
+
}
|
|
72
|
+
if (/[\r\n]/.test(cleaned)) {
|
|
73
|
+
throw new PhpstanError(`The expression ${JSON.stringify(cleaned.slice(0, 80))} spans several lines; pass each expression on one line.`, 'invalid_argument');
|
|
74
|
+
}
|
|
75
|
+
if (cleaned.length > MAX_EXPRESSION_CHARS) {
|
|
76
|
+
throw new PhpstanError(`An expression is longer than ${String(MAX_EXPRESSION_CHARS)} characters; pass the value whose type you want, not a block of code.`, 'invalid_argument');
|
|
77
|
+
}
|
|
78
|
+
return cleaned;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Leest de uitslag van een analyse met ingevoegde dumps terug.
|
|
82
|
+
*
|
|
83
|
+
* Alleen wat op de ingevoegde regels staat hoort bij een expressie; de gewone bevindingen
|
|
84
|
+
* van het bestand zijn niet gevraagd (daar is `analyse_file` voor). Parse-fouten wél,
|
|
85
|
+
* waar ze ook staan: een regel op een plek waar geen statement kan (midden in een
|
|
86
|
+
* meerregelige expressie, in een klassebody) breekt het hele bestand, en nagemeten staan
|
|
87
|
+
* de meeste fouten dan ná de ingevoegde regel. Hun regelnummers worden teruggerekend naar
|
|
88
|
+
* het oorspronkelijke bestand, anders wijzen ze een of meer regels te ver.
|
|
89
|
+
*/
|
|
90
|
+
export function readProbes(project, file, probe, result) {
|
|
91
|
+
const first = probe.line;
|
|
92
|
+
const inserted = probe.expressions.length;
|
|
93
|
+
const types = probe.expressions.map((expression) => ({
|
|
94
|
+
expression,
|
|
95
|
+
type: null,
|
|
96
|
+
problems: [],
|
|
97
|
+
}));
|
|
98
|
+
const parseErrors = [];
|
|
99
|
+
for (const finding of result.findings) {
|
|
100
|
+
if (finding.file !== file)
|
|
101
|
+
continue;
|
|
102
|
+
const at = finding.line;
|
|
103
|
+
const onProbe = at !== null && at >= first && at < first + inserted;
|
|
104
|
+
if (finding.identifier === 'phpstan.parse') {
|
|
105
|
+
parseErrors.push({
|
|
106
|
+
line: at === null ? null : onProbe ? first : at >= first + inserted ? at - inserted : at,
|
|
107
|
+
inserted: onProbe,
|
|
108
|
+
// PHPStan zet het (verschoven) regelnummer ook in de tekst; dat staat nu in `line`.
|
|
109
|
+
message: finding.message.replace(/ on line \d+$/, ''),
|
|
110
|
+
});
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (!onProbe)
|
|
114
|
+
continue;
|
|
115
|
+
const entry = types[at - first];
|
|
116
|
+
if (entry === undefined)
|
|
117
|
+
continue;
|
|
118
|
+
if (finding.identifier === 'phpstan.dumpType' && finding.message.startsWith(DUMPED)) {
|
|
119
|
+
entry.type = finding.message.slice(DUMPED.length);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
entry.problems.push({ identifier: finding.identifier, message: finding.message });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const generalErrors = limitMessages(result.generalErrors);
|
|
126
|
+
const warnings = limitMessages(result.warnings);
|
|
127
|
+
return {
|
|
128
|
+
project,
|
|
129
|
+
file: displayPath(project, file),
|
|
130
|
+
line: probe.line,
|
|
131
|
+
types,
|
|
132
|
+
parseErrors: parseErrors.slice(0, MAX_MESSAGES),
|
|
133
|
+
generalErrors: generalErrors.kept,
|
|
134
|
+
warnings: warnings.kept,
|
|
135
|
+
omitted: {
|
|
136
|
+
parseErrors: Math.max(parseErrors.length - MAX_MESSAGES, 0),
|
|
137
|
+
generalErrors: generalErrors.omitted,
|
|
138
|
+
warnings: warnings.omitted,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/** Schrijft het antwoord uit als tekst voor het model. */
|
|
143
|
+
export function renderTypes(report) {
|
|
144
|
+
const lines = [];
|
|
145
|
+
if (report.warnings.length > 0) {
|
|
146
|
+
lines.push('WARNING — PHPStan reported this alongside the result:');
|
|
147
|
+
for (const warning of report.warnings)
|
|
148
|
+
lines.push(`- ${warning}`);
|
|
149
|
+
if (report.omitted.warnings > 0)
|
|
150
|
+
lines.push(`- (${String(report.omitted.warnings)} more message(s) not shown)`);
|
|
151
|
+
lines.push('');
|
|
152
|
+
}
|
|
153
|
+
if (report.generalErrors.length > 0) {
|
|
154
|
+
lines.push('Errors not tied to a file:');
|
|
155
|
+
for (const error of report.generalErrors)
|
|
156
|
+
lines.push(`- ${error}`);
|
|
157
|
+
if (report.omitted.generalErrors > 0)
|
|
158
|
+
lines.push(`- (${String(report.omitted.generalErrors)} more error(s) not shown)`);
|
|
159
|
+
lines.push('');
|
|
160
|
+
}
|
|
161
|
+
if (report.parseErrors.length > 0) {
|
|
162
|
+
lines.push(`PHPStan could not parse ${report.file} with the inserted line(s) before line ${String(report.line)}:`);
|
|
163
|
+
for (const error of report.parseErrors) {
|
|
164
|
+
const waar = error.inserted ? 'inserted line' : error.line === null ? 'no line' : `line ${String(error.line)}`;
|
|
165
|
+
lines.push(`- ${waar}: ${error.message}`);
|
|
166
|
+
}
|
|
167
|
+
if (report.omitted.parseErrors > 0)
|
|
168
|
+
lines.push(`- (${String(report.omitted.parseErrors)} more not shown)`);
|
|
169
|
+
lines.push('', `If the file parses without them, line ${String(report.line)} is not a place where a statement can go: ` +
|
|
170
|
+
'for example in the middle of an expression that spans several lines, or directly in a class ' +
|
|
171
|
+
'body. Pick the first line of a statement inside a function or method.');
|
|
172
|
+
return lines.join('\n');
|
|
173
|
+
}
|
|
174
|
+
lines.push(`Types right before line ${String(report.line)} of ${report.file}:`);
|
|
175
|
+
for (const probed of report.types) {
|
|
176
|
+
lines.push(`- ${probed.expression}: ${probed.type ?? 'no type reported'}`);
|
|
177
|
+
for (const problem of probed.problems) {
|
|
178
|
+
lines.push(` ${problem.identifier === null ? '' : `${problem.identifier}: `}${problem.message}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (report.types.some((probed) => probed.type === null && probed.problems.length === 0)) {
|
|
182
|
+
lines.push('', 'Where no type is reported, PHPStan did not analyse the line as code: it is inside a ' +
|
|
183
|
+
'string or heredoc, or in a part of the file PHPStan does not reach.');
|
|
184
|
+
}
|
|
185
|
+
if (report.types.some((probed) => probed.type === '*ERROR*')) {
|
|
186
|
+
lines.push('', '*ERROR* means PHPStan could not determine a type; the message under it says why.');
|
|
187
|
+
}
|
|
188
|
+
return lines.join('\n');
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=dumptype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumptype.js","sourceRoot":"","sources":["../src/dumptype.ts"],"names":[],"mappings":"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"}
|
package/dist/failure.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* lijst uit met beleid, niet met vrije tekst — een code die maar één keer voorkomt
|
|
13
13
|
* helpt niemand.
|
|
14
14
|
*/
|
|
15
|
-
export type FailureReason = 'no_roots_configured' | 'project_outside_roots' | 'project_not_found' | 'path_outside_project' | 'path_not_found' | 'phpstan_missing' | 'config_missing' | 'bootstrap_failed' | 'baseline_unreadable' | 'invalid_setting' | 'memory_limit' | 'timeout' | 'cancelled' | 'git_missing' | 'not_a_git_repository' | 'unknown_base' | 'unsupported_with_runner' | 'unusable_output' | 'phpstan_failed';
|
|
15
|
+
export type FailureReason = 'no_roots_configured' | 'project_outside_roots' | 'project_not_found' | 'path_outside_project' | 'path_not_found' | 'invalid_argument' | 'nothing_to_analyse' | 'phpstan_missing' | 'config_missing' | 'bootstrap_failed' | 'baseline_unreadable' | 'invalid_setting' | 'memory_limit' | 'timeout' | 'cancelled' | 'git_missing' | 'not_a_git_repository' | 'unknown_base' | 'unsupported_with_runner' | 'unusable_output' | 'phpstan_failed';
|
|
16
16
|
/** Wat er naast de reden bekend is. Alles optioneel: niet elke fout weet dit. */
|
|
17
17
|
export interface FailureDetails {
|
|
18
18
|
/** Exit code van het proces, als er een proces was. */
|
package/dist/failure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AA2DA;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGzB;IACA;IAHX,YACE,OAAe,EACN,MAAqB,EACrB,UAA0B,EAAE;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAqB;IAGvC,CAAC;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ async function main() {
|
|
|
14
14
|
// stdio: het protocol zelf loopt over stdout. Alles wat deze server logt moet
|
|
15
15
|
// daarom naar stderr — één console.log breekt de JSON-RPC-stroom.
|
|
16
16
|
await server.connect(new StdioServerTransport());
|
|
17
|
-
console.error(`phpstan-mcp ${VERSION}
|
|
17
|
+
console.error(`phpstan-mcp ${VERSION} listening on stdio, ${roots.length} root(s) configured` +
|
|
18
18
|
describeMemoryDefault() +
|
|
19
19
|
describeMaxParallel() +
|
|
20
20
|
describeTmpDir() +
|
|
@@ -29,10 +29,10 @@ async function main() {
|
|
|
29
29
|
function describeProjectDefaults() {
|
|
30
30
|
try {
|
|
31
31
|
const aantal = loadProjectDefaults().size;
|
|
32
|
-
return aantal === 0 ? '' : `,
|
|
32
|
+
return aantal === 0 ? '' : `, per-project defaults for ${String(aantal)} project(s)`;
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
|
-
return `,
|
|
35
|
+
return `, WARNING: ${error instanceof Error ? error.message : String(error)}`;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
@@ -47,10 +47,10 @@ function describeProjectDefaults() {
|
|
|
47
47
|
*/
|
|
48
48
|
function describeTmpDir() {
|
|
49
49
|
try {
|
|
50
|
-
return loadTmpDirMode() === 'shared' ? ',
|
|
50
|
+
return loadTmpDirMode() === 'shared' ? ', shared temp directory' : '';
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
|
-
return `,
|
|
53
|
+
return `, WARNING: ${error instanceof Error ? error.message : String(error)}`;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
@@ -60,35 +60,35 @@ function describeTmpDir() {
|
|
|
60
60
|
*/
|
|
61
61
|
function describeWrites() {
|
|
62
62
|
if (writesAllowed())
|
|
63
|
-
return ',
|
|
63
|
+
return ', writing tools on';
|
|
64
64
|
const configured = process.env[WRITES_ENV_VAR]?.trim();
|
|
65
65
|
return configured === undefined || configured === ''
|
|
66
66
|
? ''
|
|
67
|
-
: `,
|
|
67
|
+
: `, WARNING: ${WRITES_ENV_VAR} is set to "${configured}"; only "1" and "true" enable writing`;
|
|
68
68
|
}
|
|
69
69
|
/** Zelfde afweging als bij de geheugenlimiet: melden, niet fataal. */
|
|
70
70
|
function describeMaxParallel() {
|
|
71
71
|
try {
|
|
72
|
-
return `,
|
|
72
|
+
return `, at most ${String(loadMaxParallel())} at a time`;
|
|
73
73
|
}
|
|
74
74
|
catch (error) {
|
|
75
|
-
return `,
|
|
75
|
+
return `, WARNING: ${error instanceof Error ? error.message : String(error)}`;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
function describeMemoryDefault() {
|
|
79
79
|
try {
|
|
80
80
|
const limit = loadDefaultMemoryLimit();
|
|
81
|
-
return limit === undefined ? '' : `,
|
|
81
|
+
return limit === undefined ? '' : `, memory limit ${limit}`;
|
|
82
82
|
}
|
|
83
83
|
catch (error) {
|
|
84
|
-
return `,
|
|
84
|
+
return `, WARNING: ${error instanceof Error ? error.message : String(error)}`;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
main().catch((error) => {
|
|
88
88
|
// Een ToolFailure is een fout waar de gebruiker iets aan kan doen — meestal een
|
|
89
89
|
// instelling die niet klopt. Dan is de melding genoeg; de stack erbij maakt het
|
|
90
90
|
// alleen moeilijker te lezen in een clientlog.
|
|
91
|
-
console.error('phpstan-mcp
|
|
91
|
+
console.error('phpstan-mcp could not start:', error instanceof ToolFailure ? error.message : error);
|
|
92
92
|
process.exit(1);
|
|
93
93
|
});
|
|
94
94
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEnC,8EAA8E;IAC9E,kEAAkE;IAClE,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAEjD,OAAO,CAAC,KAAK,CACX,eAAe,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/phpstan/output.js
CHANGED
|
@@ -121,7 +121,7 @@ export function condenseDetails(text, max = MAX_DETAIL_CHARS) {
|
|
|
121
121
|
const body = beknopt(dropTips(ontdubbeld.regels), max);
|
|
122
122
|
return ontdubbeld.weg === 0
|
|
123
123
|
? body
|
|
124
|
-
: `${body}\n\n… (${String(ontdubbeld.weg)}
|
|
124
|
+
: `${body}\n\n… (${String(ontdubbeld.weg)} identical line(s) from parallel workers omitted) …`;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
127
|
* PHPStan forkt workers die élk het bootstrap-bestand uitvoeren. Klapt dat, dan
|
|
@@ -185,7 +185,7 @@ function beknopt(regels, max) {
|
|
|
185
185
|
/** Ruimte die de markering zelf inneemt, zodat het budget klopt. */
|
|
186
186
|
const MARKERING_RUIMTE = 40;
|
|
187
187
|
function weggelaten(aantal) {
|
|
188
|
-
return `… (${String(aantal)}
|
|
188
|
+
return `… (${String(aantal)} line(s) omitted) …`;
|
|
189
189
|
}
|
|
190
190
|
/** Laat het tips-blok weg: de kopregel plus de opsomming die eronder hangt. */
|
|
191
191
|
function dropTips(regels) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/phpstan/output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/phpstan/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export function parseLenientJson(text) {
|
|
|
19
19
|
export function summariseParameters(stdout, display) {
|
|
20
20
|
const ruw = parseLenientJson(stdout);
|
|
21
21
|
if (typeof ruw !== 'object' || ruw === null || Array.isArray(ruw)) {
|
|
22
|
-
throw new Error('dump-parameters
|
|
22
|
+
throw new Error('dump-parameters did not return a JSON object');
|
|
23
23
|
}
|
|
24
24
|
const p = ruw;
|
|
25
25
|
const paths = strings(p['analysedPathsFromConfig']).length > 0 ? strings(p['analysedPathsFromConfig']) : strings(p['paths']);
|
|
@@ -44,19 +44,19 @@ export function summariseParameters(stdout, display) {
|
|
|
44
44
|
}
|
|
45
45
|
/** Schrijft de samenvatting uit, als aanvulling op PHPStans eigen diagnose. */
|
|
46
46
|
export function renderParameters(parameters) {
|
|
47
|
-
const lijst = (items) => (items.length === 0 ? '
|
|
47
|
+
const lijst = (items) => (items.length === 0 ? 'none' : items.join(', '));
|
|
48
48
|
const melden = parameters.reportUnmatchedIgnoredErrors === null
|
|
49
49
|
? ''
|
|
50
50
|
: parameters.reportUnmatchedIgnoredErrors
|
|
51
|
-
? ' (
|
|
52
|
-
: ' (
|
|
51
|
+
? ' (stale ones are reported)'
|
|
52
|
+
: ' (stale ones are NOT reported; unmatched_ignores finds them)';
|
|
53
53
|
return [
|
|
54
|
-
'
|
|
55
|
-
` Level: ${parameters.level === null ? '
|
|
56
|
-
`
|
|
57
|
-
`
|
|
58
|
-
`
|
|
59
|
-
`
|
|
54
|
+
'Effective configuration, according to PHPStan itself:',
|
|
55
|
+
` Level: ${parameters.level === null ? 'unknown' : String(parameters.level)}`,
|
|
56
|
+
` Paths: ${lijst(parameters.paths)}`,
|
|
57
|
+
` Excluded: ${lijst(parameters.excludePaths)}`,
|
|
58
|
+
` Ignore rules: ${String(parameters.ignoreErrors)}${melden}`,
|
|
59
|
+
` Temp directory: ${parameters.tmpDir ?? 'unknown'}`,
|
|
60
60
|
` Bootstrap: ${lijst(parameters.bootstrapFiles)}`,
|
|
61
61
|
].join('\n');
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/phpstan/parameters.ts"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CAC1F,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CACvD,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAAiC;IACnF,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/phpstan/parameters.ts"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CAC1F,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CACvD,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAAiC;IACnF,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7H,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IACnC,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3E,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAEzB,OAAO;QACL,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC5E,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QACvC,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QACrD,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7E,4BAA4B,EAC1B,OAAO,CAAC,CAAC,8BAA8B,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,IAAI;QACnG,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QAC5D,oFAAoF;QACpF,oFAAoF;QACpF,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aAC7C,GAAG,CAAC,OAAO,CAAC;KAChB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,UAA+B;IAC9D,MAAM,KAAK,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7F,MAAM,MAAM,GACV,UAAU,CAAC,4BAA4B,KAAK,IAAI;QAC9C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,UAAU,CAAC,4BAA4B;YACvC,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,8DAA8D,CAAC;IAEvE,OAAO;QACL,uDAAuD;QACvD,uBAAuB,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACzF,uBAAuB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAChD,uBAAuB,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QACvD,uBAAuB,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE;QACjE,uBAAuB,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE;QACvD,uBAAuB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;KAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtG,CAAC"}
|
package/dist/phpstan/process.js
CHANGED
|
@@ -121,7 +121,7 @@ export function carryOutKill(pid, plan) {
|
|
|
121
121
|
killer.on('error', (error) => { reportKillFailure(pid, error); });
|
|
122
122
|
killer.on('exit', (code) => {
|
|
123
123
|
if (code !== 0 && code !== TASKKILL_NOT_FOUND) {
|
|
124
|
-
reportKillFailure(pid, new Error(`${plan.command}
|
|
124
|
+
reportKillFailure(pid, new Error(`${plan.command} exited with code ${String(code)}`));
|
|
125
125
|
}
|
|
126
126
|
});
|
|
127
127
|
return;
|
|
@@ -150,6 +150,6 @@ export function isReportableKillError(error) {
|
|
|
150
150
|
*/
|
|
151
151
|
function reportKillFailure(pid, error) {
|
|
152
152
|
const reason = error instanceof Error ? error.message : String(error);
|
|
153
|
-
console.error(`phpstan-mcp
|
|
153
|
+
console.error(`phpstan-mcp could not clean up process group ${String(pid)}: ${reason}`);
|
|
154
154
|
}
|
|
155
155
|
//# sourceMappingURL=process.js.map
|