@elaraai/east-diagnostics 1.0.67 → 1.0.69
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/src/east-source.d.ts +8 -0
- package/dist/src/east-source.d.ts.map +1 -1
- package/dist/src/east-source.js +19 -0
- package/dist/src/east-source.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lsp.d.ts.map +1 -1
- package/dist/src/lsp.js +37 -5
- package/dist/src/lsp.js.map +1 -1
- package/dist/src/python-lint.d.ts +27 -0
- package/dist/src/python-lint.d.ts.map +1 -0
- package/dist/src/python-lint.js +74 -0
- package/dist/src/python-lint.js.map +1 -0
- package/dist/src/rules/prefer-let-const-over-east-value.d.ts +0 -4
- package/dist/src/rules/prefer-let-const-over-east-value.d.ts.map +1 -1
- package/dist/src/rules/prefer-let-const-over-east-value.js +33 -2
- package/dist/src/rules/prefer-let-const-over-east-value.js.map +1 -1
- package/dist/src/run.d.ts +3 -1
- package/dist/src/run.d.ts.map +1 -1
- package/dist/src/run.js +6 -1
- package/dist/src/run.js.map +1 -1
- package/package.json +3 -3
|
@@ -17,6 +17,14 @@ export declare function resolvesToEastImport(id: ts.Identifier, checker: ts.Type
|
|
|
17
17
|
* package? — the signal that it is East/e3 source rather than plain TypeScript.
|
|
18
18
|
* Cached per source file. */
|
|
19
19
|
export declare function importsEastPackage(sf: ts.SourceFile, t: TsModule): boolean;
|
|
20
|
+
/** Does this file import `@elaraai/east` and the program cannot RESOLVE it
|
|
21
|
+
* (#647)? A loose file outside any project — no `node_modules` above it — has
|
|
22
|
+
* every East binding typed as an error type, and the rules keyed on East types
|
|
23
|
+
* would flag every East call in it; they stay silent there instead. Only the
|
|
24
|
+
* core package's own import counts: a deep `@elaraai/east/src/…` import is what
|
|
25
|
+
* `no-relative-src-import` flags, and a sibling package a project does not
|
|
26
|
+
* install leaves the East types intact. */
|
|
27
|
+
export declare function unresolvedEastImport(sf: ts.SourceFile, checker: ts.TypeChecker, t: TsModule): boolean;
|
|
20
28
|
/** Does this file DECLARE an East/e3 program — an `East.<factory>(…)` call
|
|
21
29
|
* (function/asyncFunction/platform/…, with `East` symbol-resolved to an
|
|
22
30
|
* `@elaraai/*` import), an e3 definition call (`e3.input`/`e3.task`/… on the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"east-source.d.ts","sourceRoot":"","sources":["../../src/east-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;+EAG+E;AAC/E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,QAAQ,GAAG,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAa7G;AAED;;iFAEiF;AACjF,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGrG;AAUD;;6BAE6B;AAC7B,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAc1E;AASD;;;;;;qEAMqE;AACrE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CA+BpG;AAuBD;;;;;oCAKoC;AACpC,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAS/F"}
|
|
1
|
+
{"version":3,"file":"east-source.d.ts","sourceRoot":"","sources":["../../src/east-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;+EAG+E;AAC/E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,QAAQ,GAAG,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAa7G;AAED;;iFAEiF;AACjF,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGrG;AAUD;;6BAE6B;AAC7B,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAc1E;AAED;;;;;;2CAM2C;AAC3C,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAQrG;AASD;;;;;;qEAMqE;AACrE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CA+BpG;AAuBD;;;;;oCAKoC;AACpC,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAS/F"}
|
package/dist/src/east-source.js
CHANGED
|
@@ -56,6 +56,25 @@ export function importsEastPackage(sf, t) {
|
|
|
56
56
|
importsCache.set(sf, found);
|
|
57
57
|
return found;
|
|
58
58
|
}
|
|
59
|
+
/** Does this file import `@elaraai/east` and the program cannot RESOLVE it
|
|
60
|
+
* (#647)? A loose file outside any project — no `node_modules` above it — has
|
|
61
|
+
* every East binding typed as an error type, and the rules keyed on East types
|
|
62
|
+
* would flag every East call in it; they stay silent there instead. Only the
|
|
63
|
+
* core package's own import counts: a deep `@elaraai/east/src/…` import is what
|
|
64
|
+
* `no-relative-src-import` flags, and a sibling package a project does not
|
|
65
|
+
* install leaves the East types intact. */
|
|
66
|
+
export function unresolvedEastImport(sf, checker, t) {
|
|
67
|
+
for (const stmt of sf.statements) {
|
|
68
|
+
if (!t.isImportDeclaration(stmt) && !t.isExportDeclaration(stmt))
|
|
69
|
+
continue;
|
|
70
|
+
const spec = stmt.moduleSpecifier;
|
|
71
|
+
if (spec === undefined || !t.isStringLiteral(spec) || spec.text !== "@elaraai/east")
|
|
72
|
+
continue;
|
|
73
|
+
if (checker.getSymbolAtLocation(spec) === undefined)
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
59
78
|
const declaresCache = new WeakMap();
|
|
60
79
|
/** e3 members whose call DECLARES part of a deployable program. */
|
|
61
80
|
const E3_DECLARATION_MEMBERS = new Set([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"east-source.js","sourceRoot":"","sources":["../../src/east-source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"east-source.js","sourceRoot":"","sources":["../../src/east-source.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export { createDiagnosticsService } from "./service.js";
|
|
|
9
9
|
export type { DiagnosticsService, DiagnosticsServiceOptions } from "./service.js";
|
|
10
10
|
export { runEastLsp } from "./lsp.js";
|
|
11
11
|
export type { EastLspOptions } from "./lsp.js";
|
|
12
|
+
export { findEastPy, runEastPyLint, renderPythonReview, PYTHON_EAST_IMPORT } from "./python-lint.js";
|
|
13
|
+
export type { PythonDiagnostic } from "./python-lint.js";
|
|
12
14
|
export { getEastModule } from "./east-module.js";
|
|
13
15
|
export type { EastModule } from "./east-module.js";
|
|
14
16
|
export { reifyEastType } from "./type-reify.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,mBAAmB,YAAY,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,mBAAmB,YAAY,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrG,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./rules/index.js";
|
|
|
2
2
|
export { runEastRules } from "./run.js";
|
|
3
3
|
export { createDiagnosticsService } from "./service.js";
|
|
4
4
|
export { runEastLsp } from "./lsp.js";
|
|
5
|
+
export { findEastPy, runEastPyLint, renderPythonReview, PYTHON_EAST_IMPORT } from "./python-lint.js";
|
|
5
6
|
export { getEastModule } from "./east-module.js";
|
|
6
7
|
export { reifyEastType } from "./type-reify.js";
|
|
7
8
|
export { rewriteEastAssignability, ASSIGNABILITY_CODES } from "./type-diff-rewrite.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/src/lsp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/lsp.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/lsp.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAyDjF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,oDAAoD;IACpD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CA4M7D"}
|
package/dist/src/lsp.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { readFileSync } from "node:fs";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import { createDiagnosticsService } from "./service.js";
|
|
8
|
+
import { PYTHON_EAST_IMPORT, runEastPyLint } from "./python-lint.js";
|
|
8
9
|
const EAST_IMPORT_PATTERN = /@elaraai\//;
|
|
9
10
|
// Vendored / built / generated trees: never diagnose code the user doesn't own.
|
|
10
11
|
const SKIP_PATH = /[/\\](node_modules|dist|build|\.venv|\.git)[/\\]/;
|
|
@@ -58,6 +59,28 @@ export function runEastLsp(options = {}) {
|
|
|
58
59
|
const body = JSON.stringify({ jsonrpc: "2.0", ...message });
|
|
59
60
|
output.write(`Content-Length: ${Buffer.byteLength(body, "utf8")}\r\n\r\n${body}`);
|
|
60
61
|
}
|
|
62
|
+
/** A python document: the east-py rules, run out of process; published when they answer. */
|
|
63
|
+
function publishPython(path, content) {
|
|
64
|
+
if (content === undefined || SKIP_PATH.test(path) || !PYTHON_EAST_IMPORT.test(content)) {
|
|
65
|
+
send({ method: "textDocument/publishDiagnostics", params: { uri: `file://${path}`, diagnostics: [] } });
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
void runEastPyLint(path, open.has(path) ? content : undefined).then((records) => {
|
|
69
|
+
if (records === null)
|
|
70
|
+
return; // no east-py answered: say nothing rather than "clean"
|
|
71
|
+
const diagnostics = records.map((r) => ({
|
|
72
|
+
range: {
|
|
73
|
+
start: { line: r.line - 1, character: r.column - 1 },
|
|
74
|
+
end: { line: (r.end_line ?? r.line) - 1, character: (r.end_column ?? r.column + 1) - 1 },
|
|
75
|
+
},
|
|
76
|
+
severity: SEVERITY[r.category] ?? 2,
|
|
77
|
+
code: r.rule,
|
|
78
|
+
source: "east-py",
|
|
79
|
+
message: r.message,
|
|
80
|
+
}));
|
|
81
|
+
send({ method: "textDocument/publishDiagnostics", params: { uri: `file://${path}`, diagnostics } });
|
|
82
|
+
});
|
|
83
|
+
}
|
|
61
84
|
function publish(path) {
|
|
62
85
|
const content = open.get(path) ?? (() => {
|
|
63
86
|
try {
|
|
@@ -67,6 +90,10 @@ export function runEastLsp(options = {}) {
|
|
|
67
90
|
return undefined;
|
|
68
91
|
}
|
|
69
92
|
})();
|
|
93
|
+
if (path.endsWith(".py")) {
|
|
94
|
+
publishPython(path, content);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
70
97
|
let diagnostics = [];
|
|
71
98
|
if (content !== undefined && !SKIP_PATH.test(path) && EAST_IMPORT_PATTERN.test(content)) {
|
|
72
99
|
const starts = lineStarts(content);
|
|
@@ -152,7 +179,8 @@ export function runEastLsp(options = {}) {
|
|
|
152
179
|
if (path === undefined || typeof text !== "string")
|
|
153
180
|
return;
|
|
154
181
|
open.set(path, text);
|
|
155
|
-
|
|
182
|
+
if (!path.endsWith(".py"))
|
|
183
|
+
service.setOverlay(path, text);
|
|
156
184
|
schedule(path);
|
|
157
185
|
return;
|
|
158
186
|
}
|
|
@@ -162,7 +190,8 @@ export function runEastLsp(options = {}) {
|
|
|
162
190
|
if (path === undefined || typeof text !== "string")
|
|
163
191
|
return;
|
|
164
192
|
open.set(path, text);
|
|
165
|
-
|
|
193
|
+
if (!path.endsWith(".py"))
|
|
194
|
+
service.setOverlay(path, text);
|
|
166
195
|
schedule(path);
|
|
167
196
|
return;
|
|
168
197
|
}
|
|
@@ -173,11 +202,13 @@ export function runEastLsp(options = {}) {
|
|
|
173
202
|
const text = params?.text;
|
|
174
203
|
if (typeof text === "string") {
|
|
175
204
|
open.set(path, text);
|
|
176
|
-
|
|
205
|
+
if (!path.endsWith(".py"))
|
|
206
|
+
service.setOverlay(path, text);
|
|
177
207
|
}
|
|
178
208
|
else {
|
|
179
209
|
open.delete(path);
|
|
180
|
-
|
|
210
|
+
if (!path.endsWith(".py"))
|
|
211
|
+
service.clearOverlay(path);
|
|
181
212
|
}
|
|
182
213
|
schedule(path);
|
|
183
214
|
return;
|
|
@@ -187,7 +218,8 @@ export function runEastLsp(options = {}) {
|
|
|
187
218
|
if (path === undefined)
|
|
188
219
|
return;
|
|
189
220
|
open.delete(path);
|
|
190
|
-
|
|
221
|
+
if (!path.endsWith(".py"))
|
|
222
|
+
service.clearOverlay(path);
|
|
191
223
|
const timer = pending.get(path);
|
|
192
224
|
if (timer !== undefined)
|
|
193
225
|
clearTimeout(timer);
|
package/dist/src/lsp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../src/lsp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAA2B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../src/lsp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAA2B,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBrE,MAAM,mBAAmB,GAAG,YAAY,CAAC;AACzC,gFAAgF;AAChF,MAAM,SAAS,GAAG,kDAAkD,CAAC;AACrE,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,QAAQ,GAA2C;IACvD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAgB,EAAE,MAAc;IACxD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,GAAG,CAAE,IAAI,MAAM;YAAE,GAAG,GAAG,GAAG,CAAC;;YACjC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAE,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAUD,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,UAA0B,EAAE;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpE,gEAAgE;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyC,CAAC;IACjE,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,SAAS,IAAI,CAAC,OAAe;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,4FAA4F;IAC5F,SAAS,aAAa,CAAC,IAAY,EAAE,OAA2B;QAC9D,IAAI,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvF,IAAI,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACxG,OAAO;QACT,CAAC;QACD,KAAK,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9E,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,CAAC,uDAAuD;YACrF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpD,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;iBACzF;gBACD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CAAC,IAAY;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YACnC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,KAAK,EAAE;oBACL,KAAK,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;oBACxC,GAAG,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;iBAClD;gBACD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC9B,IAAI,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,CAAC,CAAC,WAAW;aACvB,CAAC,CAAC,CAAC;QACN,CAAC;QACD,IAAI,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,SAAS,QAAQ,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS;YAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE;YAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,SAAS,MAAM,CAAC,OAAuB;QACrC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,mCAAmC;QAErE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,QAAQ,CAAC;gBACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9D,IAAI,CAAC,KAAK,SAAS;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,gBAAgB,IAAI,EAAE,EAAE,CAAC;oBAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;oBAClC,IAAI,CAAC,KAAK,SAAS;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,CAAC;oBACH,EAAE;oBACF,MAAM,EAAE;wBACN,YAAY,EAAE;4BACZ,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;yBAC9E;wBACD,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;qBACzC;iBACF,CAAC,CAAC;gBACH,+DAA+D;gBAC/D,YAAY,CAAC,GAAG,EAAE;oBAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACvB,CAAC;wBAAC,MAAM,CAAC;4BACP,sBAAsB;wBACxB,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,aAAa;gBAChB,OAAO;YACT,KAAK,UAAU;gBACb,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3B,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO;YACT,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC;gBACxC,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,OAAO;YACT,CAAC;YACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACpD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,OAAO;YACT,CAAC;YACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACxD,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO;gBAC/B,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;gBAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxD,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,OAAO;YACT,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACxD,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,KAAK,KAAK,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxG,OAAO;YACT,CAAC;YACD;gBACE,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;oBACrB,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,OAAO;QACX,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACjC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QACxC,SAAS,CAAC;YACR,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,SAAS,GAAG,CAAC;gBAAE,OAAO;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM;gBAAE,OAAO;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;YAC7D,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** One finding as `east-py lint --format json` records it. */
|
|
2
|
+
export interface PythonDiagnostic {
|
|
3
|
+
path: string;
|
|
4
|
+
rule: string;
|
|
5
|
+
code: string;
|
|
6
|
+
category: "error" | "warning" | "suggestion";
|
|
7
|
+
line: number;
|
|
8
|
+
column: number;
|
|
9
|
+
end_line?: number;
|
|
10
|
+
end_column?: number;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
/** A python file that imports east: `import east`, `from east import …`, `from east.x import …`. */
|
|
14
|
+
export declare const PYTHON_EAST_IMPORT: RegExp;
|
|
15
|
+
/** The `east-py` command for a file: `EAST_PY_LINT` when set, else the
|
|
16
|
+
* nearest `.venv` above `fromDir`, else `east-py` on PATH. */
|
|
17
|
+
export declare function findEastPy(fromDir: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* The east-py findings for a python file — `""`-free: `[]` when clean,
|
|
20
|
+
* `null` when no east-py answered (absent, failed, or over `budgetMs`), so
|
|
21
|
+
* callers can stay silent. `content` (an unsaved buffer) is linted from a
|
|
22
|
+
* temporary copy under the file's own name; the file itself otherwise.
|
|
23
|
+
*/
|
|
24
|
+
export declare function runEastPyLint(file: string, content?: string, budgetMs?: number): Promise<PythonDiagnostic[] | null>;
|
|
25
|
+
/** The findings as the `<east-code-review>` block the plugin injects — `""` when there are none. */
|
|
26
|
+
export declare function renderPythonReview(records: PythonDiagnostic[]): string;
|
|
27
|
+
//# sourceMappingURL=python-lint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-lint.d.ts","sourceRoot":"","sources":["../../src/python-lint.ts"],"names":[],"mappings":"AAeA,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oGAAoG;AACpG,eAAO,MAAM,kBAAkB,QAAiE,CAAC;AAEjG;8DAC8D;AAC9D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAiCjH;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAItE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { execFile } from "node:child_process";
|
|
6
|
+
import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { basename, dirname, join } from "node:path";
|
|
9
|
+
/** A python file that imports east: `import east`, `from east import …`, `from east.x import …`. */
|
|
10
|
+
export const PYTHON_EAST_IMPORT = /^\s*(?:from\s+east(?:\.[\w.]+)?\s+import\b|import\s+east\b)/m;
|
|
11
|
+
/** The `east-py` command for a file: `EAST_PY_LINT` when set, else the
|
|
12
|
+
* nearest `.venv` above `fromDir`, else `east-py` on PATH. */
|
|
13
|
+
export function findEastPy(fromDir) {
|
|
14
|
+
const override = process.env["EAST_PY_LINT"];
|
|
15
|
+
if (override !== undefined && override !== "")
|
|
16
|
+
return override;
|
|
17
|
+
let dir = fromDir;
|
|
18
|
+
for (;;) {
|
|
19
|
+
for (const candidate of [join(dir, ".venv", "bin", "east-py"), join(dir, ".venv", "Scripts", "east-py.exe")]) {
|
|
20
|
+
if (existsSync(candidate))
|
|
21
|
+
return candidate;
|
|
22
|
+
}
|
|
23
|
+
const parent = dirname(dir);
|
|
24
|
+
if (parent === dir)
|
|
25
|
+
return "east-py";
|
|
26
|
+
dir = parent;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The east-py findings for a python file — `""`-free: `[]` when clean,
|
|
31
|
+
* `null` when no east-py answered (absent, failed, or over `budgetMs`), so
|
|
32
|
+
* callers can stay silent. `content` (an unsaved buffer) is linted from a
|
|
33
|
+
* temporary copy under the file's own name; the file itself otherwise.
|
|
34
|
+
*/
|
|
35
|
+
export function runEastPyLint(file, content, budgetMs = 4000) {
|
|
36
|
+
const command = findEastPy(dirname(file));
|
|
37
|
+
let target = file;
|
|
38
|
+
let scratch = null;
|
|
39
|
+
if (content !== undefined) {
|
|
40
|
+
scratch = mkdtempSync(join(tmpdir(), "east-py-lint-"));
|
|
41
|
+
target = join(scratch, basename(file));
|
|
42
|
+
writeFileSync(target, content, "utf-8");
|
|
43
|
+
}
|
|
44
|
+
return new Promise((resolveFindings) => {
|
|
45
|
+
execFile(command, ["lint", "--format", "json", target],
|
|
46
|
+
// UTF-8 stdio: python encodes a piped stdout in the locale's code page on Windows (cp1252), and the findings carry em dashes
|
|
47
|
+
{ timeout: budgetMs, encoding: "utf-8", maxBuffer: 4 * 1024 * 1024, env: { ...process.env, PYTHONIOENCODING: "utf-8" } }, (error, stdout) => {
|
|
48
|
+
if (scratch !== null)
|
|
49
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
50
|
+
// exit 1 means findings (they are on stdout); anything else means no answer
|
|
51
|
+
if (error !== null && error.code !== 1) {
|
|
52
|
+
resolveFindings(null);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
let records;
|
|
56
|
+
try {
|
|
57
|
+
records = JSON.parse(stdout);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
resolveFindings(null);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
resolveFindings(Array.isArray(records) ? records : null);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** The findings as the `<east-code-review>` block the plugin injects — `""` when there are none. */
|
|
68
|
+
export function renderPythonReview(records) {
|
|
69
|
+
if (records.length === 0)
|
|
70
|
+
return "";
|
|
71
|
+
const lines = records.map((r) => `- [${r.category}] ${r.line}:${r.column} (${r.rule}) ${r.message}`);
|
|
72
|
+
return ["<east-code-review>", "## East issues in this file", "", ...lines, "</east-code-review>"].join("\n");
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=python-lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-lint.js","sourceRoot":"","sources":["../../src/python-lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
-
*/
|
|
5
1
|
import type { EastRule } from "../types.js";
|
|
6
2
|
export declare const preferLetConstOverEastValue: EastRule;
|
|
7
3
|
//# sourceMappingURL=prefer-let-const-over-east-value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-let-const-over-east-value.d.ts","sourceRoot":"","sources":["../../../src/rules/prefer-let-const-over-east-value.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prefer-let-const-over-east-value.d.ts","sourceRoot":"","sources":["../../../src/rules/prefer-let-const-over-east-value.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,aAAa,CAAC;AAsCtD,eAAO,MAAM,2BAA2B,EAAE,QA4DzC,CAAC"}
|
|
@@ -8,7 +8,35 @@ const CODE = 990006;
|
|
|
8
8
|
// body (`hits.map(($, r) => East.value({…}, T))`): the callback's expected
|
|
9
9
|
// element type already supplies `T`, so the wrapper is redundant — return the
|
|
10
10
|
// plain value. A bare `East.value(x)` as a method argument (wrapping an external
|
|
11
|
-
// constant, no contextual type) stays valid
|
|
11
|
+
// constant, no contextual type) stays valid — and so does a RETURNED
|
|
12
|
+
// `East.value(v, T)` whose `T` is load-bearing: a callback's type is inferred
|
|
13
|
+
// from what it returns, and `none`, an empty collection, a `variant(...)` or a
|
|
14
|
+
// `some(...)` (alone it builds a one-case variant, not an Option) have no type
|
|
15
|
+
// of their own there (a printed module spells them so).
|
|
16
|
+
/** Whether `T` in `East.value(v, T)` is load-bearing for `v`: `none`, an empty
|
|
17
|
+
* `[]` / `new Map()` / `new Set()`, a `variant(...)` or a `some(...)` anywhere
|
|
18
|
+
* inside `v`. */
|
|
19
|
+
function typeIsLoadBearing(value, t) {
|
|
20
|
+
let found = false;
|
|
21
|
+
const emptyArray = (n) => n !== undefined && t.isArrayLiteralExpression(n) && n.elements.length === 0;
|
|
22
|
+
const visit = (n) => {
|
|
23
|
+
if (found)
|
|
24
|
+
return;
|
|
25
|
+
if (t.isIdentifier(n) && n.text === "none")
|
|
26
|
+
found = true;
|
|
27
|
+
else if (emptyArray(n))
|
|
28
|
+
found = true;
|
|
29
|
+
else if (t.isNewExpression(n) && t.isIdentifier(n.expression) && (n.expression.text === "Map" || n.expression.text === "Set")
|
|
30
|
+
&& (n.arguments === undefined || n.arguments.length === 0 || emptyArray(n.arguments[0])))
|
|
31
|
+
found = true;
|
|
32
|
+
else if (t.isCallExpression(n) && t.isIdentifier(n.expression) && (n.expression.text === "variant" || n.expression.text === "some"))
|
|
33
|
+
found = true;
|
|
34
|
+
else
|
|
35
|
+
t.forEachChild(n, visit);
|
|
36
|
+
};
|
|
37
|
+
visit(value);
|
|
38
|
+
return found;
|
|
39
|
+
}
|
|
12
40
|
export const preferLetConstOverEastValue = {
|
|
13
41
|
name: NAME,
|
|
14
42
|
code: CODE,
|
|
@@ -41,9 +69,12 @@ export const preferLetConstOverEastValue = {
|
|
|
41
69
|
return;
|
|
42
70
|
if (!insideBlockScope(node, ctx))
|
|
43
71
|
return;
|
|
72
|
+
const inner = node.arguments[0];
|
|
73
|
+
// returned with a type the value cannot supply itself: the only spelling
|
|
74
|
+
if ((asReturn || asCallbackBody) && node.arguments.length >= 2 && inner !== undefined && typeIsLoadBearing(inner, t))
|
|
75
|
+
return;
|
|
44
76
|
const sf = ctx.sourceFile;
|
|
45
77
|
const start = node.getStart(sf);
|
|
46
|
-
const inner = node.arguments[0];
|
|
47
78
|
ctx.report({
|
|
48
79
|
ruleName: NAME,
|
|
49
80
|
code: CODE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-let-const-over-east-value.js","sourceRoot":"","sources":["../../../src/rules/prefer-let-const-over-east-value.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prefer-let-const-over-east-value.js","sourceRoot":"","sources":["../../../src/rules/prefer-let-const-over-east-value.ts"],"names":[],"mappings":"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"}
|
package/dist/src/run.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import type * as ts from "typescript";
|
|
|
6
6
|
import type { EastDiagnostic, EastRule, EastRulesOptions, TsModule } from "./types.js";
|
|
7
7
|
/** Run a set of East rules over one source file, returning diagnostics. The
|
|
8
8
|
* `typescript` module is injected so rules use the host's compiler version.
|
|
9
|
-
* `rules` defaults to `allRules` (the run-anywhere set).
|
|
9
|
+
* `rules` defaults to `allRules` (the run-anywhere set). A file whose
|
|
10
|
+
* `@elaraai/east` import does not resolve (a loose file outside a project)
|
|
11
|
+
* gets none: its East types are unknown, and every rule would misfire. */
|
|
10
12
|
export declare function runEastRules(tsModule: TsModule, program: ts.Program, sourceFile: ts.SourceFile, checker: ts.TypeChecker, options?: EastRulesOptions, rules?: readonly EastRule[]): EastDiagnostic[];
|
|
11
13
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/src/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAe,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAe,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIpG;;;;0EAI0E;AAC1E,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,OAAO,GAAE,gBAAqB,EAC9B,KAAK,GAAE,SAAS,QAAQ,EAAa,GACpC,cAAc,EAAE,CAsBlB"}
|
package/dist/src/run.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { allRules } from "./rules/index.js";
|
|
2
|
+
import { unresolvedEastImport } from "./east-source.js";
|
|
2
3
|
/** Run a set of East rules over one source file, returning diagnostics. The
|
|
3
4
|
* `typescript` module is injected so rules use the host's compiler version.
|
|
4
|
-
* `rules` defaults to `allRules` (the run-anywhere set).
|
|
5
|
+
* `rules` defaults to `allRules` (the run-anywhere set). A file whose
|
|
6
|
+
* `@elaraai/east` import does not resolve (a loose file outside a project)
|
|
7
|
+
* gets none: its East types are unknown, and every rule would misfire. */
|
|
5
8
|
export function runEastRules(tsModule, program, sourceFile, checker, options = {}, rules = allRules) {
|
|
9
|
+
if (unresolvedEastImport(sourceFile, checker, tsModule))
|
|
10
|
+
return [];
|
|
6
11
|
const diagnostics = [];
|
|
7
12
|
const ctx = {
|
|
8
13
|
ts: tsModule,
|
package/dist/src/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;0EAI0E;AAC1E,MAAM,UAAU,YAAY,CAC1B,QAAkB,EAClB,OAAmB,EACnB,UAAyB,EACzB,OAAuB,EACvB,UAA4B,EAAE,EAC9B,QAA6B,QAAQ;IAErC,IAAI,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACnE,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,GAAG,GAAgB;QACvB,EAAE,EAAE,QAAQ;QACZ,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;QACP,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;KACnC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,KAAK,MAAM,IAAI,IAAI,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elaraai/east-diagnostics",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.69",
|
|
4
4
|
"license": "AGPL-3.0-or-later",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "East-aware diagnostic rules over the TypeScript checker — one shared engine for the editor (tsserver plugin), the agent (headless daemon), and CI.",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^22.18.1",
|
|
46
46
|
"typescript": "~5.9.2",
|
|
47
|
-
"@elaraai/
|
|
48
|
-
"@elaraai/
|
|
47
|
+
"@elaraai/e3": "1.0.69",
|
|
48
|
+
"@elaraai/east": "1.0.69"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
51
51
|
"build": "tsc",
|