@ttsc/lint 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/lib/index.js +15 -37
- package/lib/index.js.map +1 -1
- package/lib/internal/configEvaluatorFailure.d.ts +33 -0
- package/lib/internal/configEvaluatorFailure.js +76 -0
- package/lib/internal/configEvaluatorFailure.js.map +1 -0
- package/linthost/config.go +163 -14
- package/linthost/fix.go +7 -1
- package/linthost/format.go +3 -1
- package/linthost/host.go +187 -14
- package/linthost/lsp.go +5 -1
- package/linthost/project_inputs.go +10 -11
- package/package.json +2 -2
- package/rule/project.go +12 -1
- package/src/index.ts +22 -45
- package/src/internal/configEvaluatorFailure.ts +99 -0
package/README.md
CHANGED
|
@@ -1169,9 +1169,10 @@ type noCycles struct{}
|
|
|
1169
1169
|
|
|
1170
1170
|
func (noCycles) Name() string { return "architecture/no-cycles" }
|
|
1171
1171
|
func (noCycles) Check(ctx *rule.ProjectContext) {
|
|
1172
|
-
// ctx.Sources is the
|
|
1173
|
-
//
|
|
1174
|
-
//
|
|
1172
|
+
// ctx.Sources is the user-source set the host read: the tsconfig file list
|
|
1173
|
+
// plus every TypeScript source the Program reached through an import, and it
|
|
1174
|
+
// may be empty. ctx.Checker is the Program checker, and ctx.Identity keeps
|
|
1175
|
+
// logical and physical project paths separate.
|
|
1175
1176
|
if cycle := findCycle(ctx.Sources, ctx.Checker); cycle != "" {
|
|
1176
1177
|
ctx.Report(cycle)
|
|
1177
1178
|
}
|
package/lib/index.js
CHANGED
|
@@ -27,6 +27,7 @@ const node_module_1 = require("node:module");
|
|
|
27
27
|
const node_os_1 = __importDefault(require("node:os"));
|
|
28
28
|
const node_path_1 = __importDefault(require("node:path"));
|
|
29
29
|
const node_url_1 = require("node:url");
|
|
30
|
+
const configEvaluatorFailure_1 = require("./internal/configEvaluatorFailure");
|
|
30
31
|
__exportStar(require("./defaultFormat"), exports);
|
|
31
32
|
__exportStar(require("./structures/index"), exports);
|
|
32
33
|
// Namespace becomes the rule-name prefix (`<ns>/<rule>`). Mirrors ESLint
|
|
@@ -1613,35 +1614,28 @@ function evaluateTtsxConfigPlugins(configPath, context) {
|
|
|
1613
1614
|
if (process.env.TTSC_TSGO_BINARY) {
|
|
1614
1615
|
args.unshift("--binary", process.env.TTSC_TSGO_BINARY);
|
|
1615
1616
|
}
|
|
1616
|
-
const env =
|
|
1617
|
+
const env = {
|
|
1618
|
+
...nodeConfigLoaderEnv(configPath),
|
|
1619
|
+
...(0, configEvaluatorFailure_1.configEvaluatorBoundaryEnvironment)(),
|
|
1620
|
+
};
|
|
1617
1621
|
const command = ttsxThroughNodeIfNeeded(ttsxBinary);
|
|
1618
1622
|
const result = (0, node_child_process_1.spawnSync)(command.binary, [...command.prefix, ...args], {
|
|
1619
1623
|
cwd: tempDir,
|
|
1620
1624
|
env,
|
|
1621
1625
|
encoding: "utf8",
|
|
1622
|
-
|
|
1623
|
-
stdio: [
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1626
|
+
...configEvaluatorFailure_1.CONFIG_EVALUATOR_PROCESS_OPTIONS,
|
|
1627
|
+
stdio: [
|
|
1628
|
+
"ignore",
|
|
1629
|
+
"pipe",
|
|
1630
|
+
"pipe",
|
|
1631
|
+
...Array.from({ length: configEvaluatorFailure_1.CONFIG_EVALUATOR_STATUS_FD - 2 }, () => "pipe"),
|
|
1632
|
+
],
|
|
1627
1633
|
windowsHide: true,
|
|
1628
1634
|
});
|
|
1629
1635
|
forwardConfigEvaluatorStreams(result.stdout, result.stderr);
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
if (result.signal) {
|
|
1634
|
-
throw new Error(`@ttsc/lint: ttsx evaluation of ${configPath} was killed by signal ${result.signal} ` +
|
|
1635
|
-
`(likely the 60s timeout). Simplify the config or move heavy work out of top-level.`);
|
|
1636
|
-
}
|
|
1637
|
-
if (result.status !== 0) {
|
|
1638
|
-
// The evaluator already said why on its own stderr. Reporting only the
|
|
1639
|
-
// exit code discards that and leaves the caller — a test, a CI log, a
|
|
1640
|
-
// user with a typo in one contributor — holding a number.
|
|
1641
|
-
const reason = configEvaluatorFailureReason(result.stderr);
|
|
1642
|
-
throw new Error(`@ttsc/lint: lint config ${configPath} evaluation failed with exit code ${String(result.status)}` +
|
|
1643
|
-
(reason === "" ? "" : "\n" + reason));
|
|
1644
|
-
}
|
|
1636
|
+
const processFailure = (0, configEvaluatorFailure_1.configEvaluatorProcessFailure)(result, configPath);
|
|
1637
|
+
if (processFailure)
|
|
1638
|
+
throw processFailure;
|
|
1645
1639
|
let payload;
|
|
1646
1640
|
try {
|
|
1647
1641
|
payload = JSON.parse(node_fs_1.default.readFileSync(outputPath, "utf8"));
|
|
@@ -1687,22 +1681,6 @@ function evaluateTtsxConfigPlugins(configPath, context) {
|
|
|
1687
1681
|
node_fs_1.default.rmSync(tempDir, { recursive: true, force: true });
|
|
1688
1682
|
}
|
|
1689
1683
|
}
|
|
1690
|
-
/**
|
|
1691
|
-
* What the evaluator said before it gave up, trimmed to the part that explains
|
|
1692
|
-
* it.
|
|
1693
|
-
*
|
|
1694
|
-
* The build banner and progress lines are the same on success, so they say
|
|
1695
|
-
* nothing about the failure; the tail is where the thrown reason lands. Kept to
|
|
1696
|
-
* a few lines because this is appended to an exception message, not a log.
|
|
1697
|
-
*/
|
|
1698
|
-
function configEvaluatorFailureReason(stderr) {
|
|
1699
|
-
const lines = (stderr ?? "")
|
|
1700
|
-
.split(/\r?\n/)
|
|
1701
|
-
.map((line) => line.trimEnd())
|
|
1702
|
-
.filter((line) => line.trim() !== "");
|
|
1703
|
-
return lines.slice(-CONFIG_EVALUATOR_REASON_LINES).join("\n");
|
|
1704
|
-
}
|
|
1705
|
-
const CONFIG_EVALUATOR_REASON_LINES = 5;
|
|
1706
1684
|
function forwardConfigEvaluatorStreams(stdout, stderr) {
|
|
1707
1685
|
// Both child streams are human output. Parent stdout is reserved for compiler
|
|
1708
1686
|
// JSON or LSP frames, so even a user console.log is redirected.
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const CONFIG_EVALUATOR_MAX_BUFFER: number;
|
|
2
|
+
export declare const CONFIG_EVALUATOR_TIMEOUT_MS = 60000;
|
|
3
|
+
export declare const CONFIG_EVALUATOR_TEARDOWN_GRACE_MS = 5000;
|
|
4
|
+
export declare const CONFIG_EVALUATOR_STATUS_FD = 3;
|
|
5
|
+
export declare const CONFIG_EVALUATOR_PROCESS_OPTIONS: Readonly<{
|
|
6
|
+
killSignal: "SIGKILL";
|
|
7
|
+
maxBuffer: number;
|
|
8
|
+
timeout: number;
|
|
9
|
+
}>;
|
|
10
|
+
interface ConfigEvaluatorProcessResult {
|
|
11
|
+
error?: Error;
|
|
12
|
+
output?: readonly (string | null)[] | null;
|
|
13
|
+
signal: NodeJS.Signals | null;
|
|
14
|
+
status: number | null;
|
|
15
|
+
stderr: string | null | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Classify the ways the isolated lint-config evaluator can stop.
|
|
19
|
+
*
|
|
20
|
+
* Node reports both timeout and max-buffer termination with the configured
|
|
21
|
+
* signal, so the process error code must take precedence over the signal. The
|
|
22
|
+
* evaluator uses `SIGKILL`: Node's synchronous process API otherwise keeps
|
|
23
|
+
* waiting when a POSIX child handles the default `SIGTERM` without exiting. A
|
|
24
|
+
* bare signal is an external termination and a non-zero status is an evaluator
|
|
25
|
+
* failure whose stderr tail contains the useful user-config diagnostic.
|
|
26
|
+
*/
|
|
27
|
+
export declare function configEvaluatorProcessFailure(result: ConfigEvaluatorProcessResult, configPath: string): Error | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Pass the semantic deadline and private status pipe through the `ttsx` wrapper
|
|
30
|
+
* to the runtime child that actually executes the config.
|
|
31
|
+
*/
|
|
32
|
+
export declare function configEvaluatorBoundaryEnvironment(now?: number): NodeJS.ProcessEnv;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONFIG_EVALUATOR_PROCESS_OPTIONS = exports.CONFIG_EVALUATOR_STATUS_FD = exports.CONFIG_EVALUATOR_TEARDOWN_GRACE_MS = exports.CONFIG_EVALUATOR_TIMEOUT_MS = exports.CONFIG_EVALUATOR_MAX_BUFFER = void 0;
|
|
4
|
+
exports.configEvaluatorProcessFailure = configEvaluatorProcessFailure;
|
|
5
|
+
exports.configEvaluatorBoundaryEnvironment = configEvaluatorBoundaryEnvironment;
|
|
6
|
+
exports.CONFIG_EVALUATOR_MAX_BUFFER = 16 * 1024 * 1024;
|
|
7
|
+
exports.CONFIG_EVALUATOR_TIMEOUT_MS = 60_000;
|
|
8
|
+
exports.CONFIG_EVALUATOR_TEARDOWN_GRACE_MS = 5_000;
|
|
9
|
+
exports.CONFIG_EVALUATOR_STATUS_FD = 3;
|
|
10
|
+
exports.CONFIG_EVALUATOR_PROCESS_OPTIONS = Object.freeze({
|
|
11
|
+
killSignal: "SIGKILL",
|
|
12
|
+
maxBuffer: exports.CONFIG_EVALUATOR_MAX_BUFFER,
|
|
13
|
+
timeout: exports.CONFIG_EVALUATOR_TIMEOUT_MS + exports.CONFIG_EVALUATOR_TEARDOWN_GRACE_MS,
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Classify the ways the isolated lint-config evaluator can stop.
|
|
17
|
+
*
|
|
18
|
+
* Node reports both timeout and max-buffer termination with the configured
|
|
19
|
+
* signal, so the process error code must take precedence over the signal. The
|
|
20
|
+
* evaluator uses `SIGKILL`: Node's synchronous process API otherwise keeps
|
|
21
|
+
* waiting when a POSIX child handles the default `SIGTERM` without exiting. A
|
|
22
|
+
* bare signal is an external termination and a non-zero status is an evaluator
|
|
23
|
+
* failure whose stderr tail contains the useful user-config diagnostic.
|
|
24
|
+
*/
|
|
25
|
+
function configEvaluatorProcessFailure(result, configPath) {
|
|
26
|
+
const code = result.error?.code;
|
|
27
|
+
const nestedCode = result.output?.[exports.CONFIG_EVALUATOR_STATUS_FD]?.trim() ?? "";
|
|
28
|
+
if (code === "ETIMEDOUT" || nestedCode === "ETIMEDOUT") {
|
|
29
|
+
return new Error(`@ttsc/lint: ttsx evaluation of ${configPath} timed out after ` +
|
|
30
|
+
`${exports.CONFIG_EVALUATOR_TIMEOUT_MS / 1_000} seconds. ` +
|
|
31
|
+
"Simplify the config or move heavy work out of top-level.");
|
|
32
|
+
}
|
|
33
|
+
if (code === "ENOBUFS" || nestedCode === "ENOBUFS") {
|
|
34
|
+
return new Error(`@ttsc/lint: ttsx evaluation of ${configPath} exceeded the ` +
|
|
35
|
+
`${exports.CONFIG_EVALUATOR_MAX_BUFFER / (1024 * 1024)} MiB output limit. ` +
|
|
36
|
+
"Reduce console output from the config and its dependencies.");
|
|
37
|
+
}
|
|
38
|
+
if (result.error) {
|
|
39
|
+
return new Error(`@ttsc/lint: failed to spawn ttsx for ${configPath}: ${result.error.message}`);
|
|
40
|
+
}
|
|
41
|
+
if (result.signal) {
|
|
42
|
+
return new Error(`@ttsc/lint: ttsx evaluation of ${configPath} was killed by signal ${result.signal}.`);
|
|
43
|
+
}
|
|
44
|
+
if (result.status !== 0) {
|
|
45
|
+
const reason = configEvaluatorFailureReason(result.stderr);
|
|
46
|
+
return new Error(`@ttsc/lint: lint config ${configPath} evaluation failed with exit code ${String(result.status)}` +
|
|
47
|
+
(reason === "" ? "" : "\n" + reason));
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Pass the semantic deadline and private status pipe through the `ttsx` wrapper
|
|
53
|
+
* to the runtime child that actually executes the config.
|
|
54
|
+
*/
|
|
55
|
+
function configEvaluatorBoundaryEnvironment(now = Date.now()) {
|
|
56
|
+
return {
|
|
57
|
+
TTSC_TTSX_EVALUATOR_DEADLINE_MS: String(now + exports.CONFIG_EVALUATOR_TIMEOUT_MS),
|
|
58
|
+
TTSC_TTSX_EVALUATOR_MAX_BUFFER_BYTES: String(exports.CONFIG_EVALUATOR_MAX_BUFFER),
|
|
59
|
+
TTSC_TTSX_EVALUATOR_STATUS_FD: String(exports.CONFIG_EVALUATOR_STATUS_FD),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Return the useful tail of evaluator stderr without turning an exception into
|
|
64
|
+
* an unbounded duplicate of the already-forwarded child stream.
|
|
65
|
+
*/
|
|
66
|
+
function configEvaluatorFailureReason(stderr) {
|
|
67
|
+
const bounded = (stderr ?? "").slice(-CONFIG_EVALUATOR_REASON_MAX_CHARS);
|
|
68
|
+
const lines = bounded
|
|
69
|
+
.split(/\r?\n/)
|
|
70
|
+
.map((line) => line.trimEnd())
|
|
71
|
+
.filter((line) => line.trim() !== "");
|
|
72
|
+
return lines.slice(-CONFIG_EVALUATOR_REASON_LINES).join("\n");
|
|
73
|
+
}
|
|
74
|
+
const CONFIG_EVALUATOR_REASON_LINES = 5;
|
|
75
|
+
const CONFIG_EVALUATOR_REASON_MAX_CHARS = 8 * 1024;
|
|
76
|
+
//# sourceMappingURL=configEvaluatorFailure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configEvaluatorFailure.js","sourceRoot":"","sources":["../../src/internal/configEvaluatorFailure.ts"],"names":[],"mappings":";;;;;AAAa,QAAA,2BAA2B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,QAAA,2BAA2B,GAAG,MAAM,CAAC;AACrC,QAAA,kCAAkC,GAAG,KAAK,CAAC;AAC3C,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5D,UAAU,EAAE,SAAkB;IAC9B,SAAS,EAAE,QAAA,2BAA2B;IACtC,OAAO,EAAE,QAAA,2BAA2B,GAAG,QAAA,kCAAkC;CAC1E,CAAC,CAAC;AAUH;;;;;;;;;GASG;AACH,uCACE,MAAoC,EACpC,UAAkB;IAElB,MAAM,IAAI,GAAI,MAAM,CAAC,KAA2C,EAAE,IAAI,CAAC;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAA,0BAA0B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7E,IAAI,IAAI,KAAK,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QACvD,OAAO,IAAI,KAAK,CACd,kCAAkC,UAAU,mBAAmB;YAC7D,GAAG,QAAA,2BAA2B,GAAG,KAAK,YAAY;YAClD,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,IAAI,KAAK,CACd,kCAAkC,UAAU,gBAAgB;YAC1D,GAAG,QAAA,2BAA2B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB;YACnE,6DAA6D,CAChE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,IAAI,KAAK,CACd,wCAAwC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,IAAI,KAAK,CACd,kCAAkC,UAAU,yBAAyB,MAAM,CAAC,MAAM,GAAG,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,IAAI,KAAK,CACd,2BAA2B,UAAU,qCAAqC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC/F,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,4CACE,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;IAExB,OAAO;QACL,+BAA+B,EAAE,MAAM,CAAC,GAAG,GAAG,QAAA,2BAA2B,CAAC;QAC1E,oCAAoC,EAAE,MAAM,CAAC,QAAA,2BAA2B,CAAC;QACzE,6BAA6B,EAAE,MAAM,CAAC,QAAA,0BAA0B,CAAC;KAClE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,MAAiC;IAEjC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,iCAAiC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,iCAAiC,GAAG,CAAC,GAAG,IAAI,CAAC"}
|
package/linthost/config.go
CHANGED
|
@@ -1315,6 +1315,7 @@ const (
|
|
|
1315
1315
|
configDependencyWatch = "watch"
|
|
1316
1316
|
configDependencyFile = "file"
|
|
1317
1317
|
configDependencyDir = "directory"
|
|
1318
|
+
configDependencyEntry = "entry"
|
|
1318
1319
|
configDependencyOptionalFile = "optional-file"
|
|
1319
1320
|
)
|
|
1320
1321
|
|
|
@@ -1376,7 +1377,10 @@ func loadConfigFileEvaluationWithin(
|
|
|
1376
1377
|
// configCacheVersion namespaces the on-disk config cache. Bump it whenever
|
|
1377
1378
|
// the shape of a cached config object changes so that entries written by an
|
|
1378
1379
|
// older @ttsc/lint binary are treated as a miss rather than silently reused.
|
|
1379
|
-
|
|
1380
|
+
// v6 adds the `entry` dependency kind. A v5 cache records a resolution trace's
|
|
1381
|
+
// ancestors as directory digests, so reusing it would keep republishing the
|
|
1382
|
+
// filesystem root as a watch input for as long as the entry survives.
|
|
1383
|
+
const configCacheVersion = "v6"
|
|
1380
1384
|
|
|
1381
1385
|
// configEvalCache memoizes evaluated .ts/.js lint config objects for the
|
|
1382
1386
|
// lifetime of one process; the on-disk cache (configCacheDir) extends the
|
|
@@ -1615,6 +1619,36 @@ func configDependencyDigest(
|
|
|
1615
1619
|
}
|
|
1616
1620
|
return hex.EncodeToString(h.Sum(nil)), nil
|
|
1617
1621
|
}
|
|
1622
|
+
// The `entry` digest observes one path's own existence and link topology.
|
|
1623
|
+
// It must reproduce the loader script's encoding byte for byte, because the
|
|
1624
|
+
// script writes the fingerprint and this function is what later decides the
|
|
1625
|
+
// cached evaluation is still current.
|
|
1626
|
+
if dependency.Kind == configDependencyEntry {
|
|
1627
|
+
info, err := os.Lstat(dependency.Path)
|
|
1628
|
+
if err != nil {
|
|
1629
|
+
digest := sha256.Sum256([]byte("missing\x00"))
|
|
1630
|
+
return hex.EncodeToString(digest[:]), nil
|
|
1631
|
+
}
|
|
1632
|
+
if info.Mode()&os.ModeSymlink != 0 {
|
|
1633
|
+
target, err := os.Readlink(dependency.Path)
|
|
1634
|
+
if err != nil {
|
|
1635
|
+
target = "<unreadable>"
|
|
1636
|
+
}
|
|
1637
|
+
h := sha256.New()
|
|
1638
|
+
h.Write([]byte("symlink\x00"))
|
|
1639
|
+
h.Write([]byte(target))
|
|
1640
|
+
return hex.EncodeToString(h.Sum(nil)), nil
|
|
1641
|
+
}
|
|
1642
|
+
kind := "other"
|
|
1643
|
+
switch {
|
|
1644
|
+
case info.IsDir():
|
|
1645
|
+
kind = "directory"
|
|
1646
|
+
case info.Mode().IsRegular():
|
|
1647
|
+
kind = "file"
|
|
1648
|
+
}
|
|
1649
|
+
digest := sha256.Sum256([]byte(kind + "\x00"))
|
|
1650
|
+
return hex.EncodeToString(digest[:]), nil
|
|
1651
|
+
}
|
|
1618
1652
|
if dependency.Kind == configDependencyOptionalFile {
|
|
1619
1653
|
info, err := os.Stat(dependency.Path)
|
|
1620
1654
|
if err != nil || !info.Mode().IsRegular() {
|
|
@@ -1836,6 +1870,7 @@ func normalizeConfigDependencyFingerprints(
|
|
|
1836
1870
|
strings.ToLower(dependency.Digest) != dependency.Digest ||
|
|
1837
1871
|
(dependency.Kind != configDependencyFile &&
|
|
1838
1872
|
dependency.Kind != configDependencyDir &&
|
|
1873
|
+
dependency.Kind != configDependencyEntry &&
|
|
1839
1874
|
dependency.Kind != configDependencyOptionalFile) ||
|
|
1840
1875
|
(dependency.Scope != configDependencyCache &&
|
|
1841
1876
|
dependency.Scope != configDependencyWatch) {
|
|
@@ -2139,6 +2174,55 @@ function recordDirectoryDependency(location, owners) {
|
|
|
2139
2174
|
}
|
|
2140
2175
|
}
|
|
2141
2176
|
|
|
2177
|
+
// Observe one path's own existence and link topology instead of enumerating the
|
|
2178
|
+
// directory that contains it. A resolution trace passes through ancestors it
|
|
2179
|
+
// does not own -- /var on macOS is a symlink whose parent is the filesystem
|
|
2180
|
+
// root -- and digesting that parent both reaches outside the project boundary
|
|
2181
|
+
// and reads the whole directory to learn one entry's state.
|
|
2182
|
+
// A path candidate is observed through the directory that would own a
|
|
2183
|
+
// competing resolution, so a sibling winning extension resolution still
|
|
2184
|
+
// invalidates. That reasoning is what the parent digest is for and it stays.
|
|
2185
|
+
//
|
|
2186
|
+
// It does not reach the filesystem root. The root owns no candidate this trace
|
|
2187
|
+
// could pick, and a resolution path routinely passes through an ancestor
|
|
2188
|
+
// directly beneath it -- /var on macOS is a symlink whose parent is the root --
|
|
2189
|
+
// so digesting the parent there enumerates the entire filesystem root on every
|
|
2190
|
+
// config load, outside the project boundary. Record that one ancestor instead.
|
|
2191
|
+
function recordAncestorDependency(parent, entry, root, owners) {
|
|
2192
|
+
if (parent === root) recordEntryDependency(entry, owners);
|
|
2193
|
+
else recordDirectoryDependency(parent, owners);
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2196
|
+
function recordEntryDependency(location, owners) {
|
|
2197
|
+
recordDependency("entry", location, entryDigest(location), owners);
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
function entryDigest(location) {
|
|
2201
|
+
let entry;
|
|
2202
|
+
try {
|
|
2203
|
+
entry = fs.lstatSync(location);
|
|
2204
|
+
} catch {
|
|
2205
|
+
return createHash("sha256").update("missing\0").digest("hex");
|
|
2206
|
+
}
|
|
2207
|
+
if (entry.isSymbolicLink()) {
|
|
2208
|
+
let target;
|
|
2209
|
+
try {
|
|
2210
|
+
target = fs.readlinkSync(location, { encoding: "buffer" });
|
|
2211
|
+
} catch {
|
|
2212
|
+
target = Buffer.from("<unreadable>");
|
|
2213
|
+
}
|
|
2214
|
+
return createHash("sha256")
|
|
2215
|
+
.update(Buffer.concat([Buffer.from("symlink\0"), target]))
|
|
2216
|
+
.digest("hex");
|
|
2217
|
+
}
|
|
2218
|
+
const kind = entry.isDirectory()
|
|
2219
|
+
? "directory"
|
|
2220
|
+
: entry.isFile()
|
|
2221
|
+
? "file"
|
|
2222
|
+
: "other";
|
|
2223
|
+
return createHash("sha256").update(kind + "\0").digest("hex");
|
|
2224
|
+
}
|
|
2225
|
+
|
|
2142
2226
|
function directoryDigest(location) {
|
|
2143
2227
|
const entries = [];
|
|
2144
2228
|
if (process.platform === "win32") {
|
|
@@ -2691,11 +2775,11 @@ function recordPackagePathCandidate(
|
|
|
2691
2775
|
try {
|
|
2692
2776
|
entry = fs.lstatSync(next);
|
|
2693
2777
|
} catch {
|
|
2694
|
-
|
|
2778
|
+
recordAncestorDependency(current, next, parsed.root, owners);
|
|
2695
2779
|
return;
|
|
2696
2780
|
}
|
|
2697
2781
|
if (entry.isSymbolicLink()) {
|
|
2698
|
-
|
|
2782
|
+
recordAncestorDependency(current, next, parsed.root, owners);
|
|
2699
2783
|
try {
|
|
2700
2784
|
const target = fs.readlinkSync(next);
|
|
2701
2785
|
const remainder = components.slice(index + 1);
|
|
@@ -2717,16 +2801,20 @@ function recordPackagePathCandidate(
|
|
|
2717
2801
|
}
|
|
2718
2802
|
}
|
|
2719
2803
|
if (index === components.length - 1) {
|
|
2720
|
-
|
|
2804
|
+
if (isDirectory) recordDirectoryDependency(next, owners);
|
|
2805
|
+
else recordAncestorDependency(current, next, parsed.root, owners);
|
|
2721
2806
|
return;
|
|
2722
2807
|
}
|
|
2723
2808
|
if (!isDirectory) {
|
|
2724
|
-
|
|
2809
|
+
recordAncestorDependency(current, next, parsed.root, owners);
|
|
2725
2810
|
return;
|
|
2726
2811
|
}
|
|
2727
2812
|
current = next;
|
|
2728
2813
|
}
|
|
2729
|
-
|
|
2814
|
+
// Reached only when the candidate resolved to the filesystem root itself,
|
|
2815
|
+
// which names no package. Record its existence, not its listing.
|
|
2816
|
+
if (current === parsed.root) recordEntryDependency(current, owners);
|
|
2817
|
+
else recordDirectoryDependency(current, owners);
|
|
2730
2818
|
}
|
|
2731
2819
|
|
|
2732
2820
|
function modulePackageName(specifier) {
|
|
@@ -3045,7 +3133,7 @@ const resolutionRoot = path.resolve(%s);
|
|
|
3045
3133
|
const CONFIG_KEYS = new Set<string>([%s]);
|
|
3046
3134
|
const dependencies = new Map<string, {
|
|
3047
3135
|
digest: string;
|
|
3048
|
-
kind: "directory" | "file" | "optional-file";
|
|
3136
|
+
kind: "directory" | "entry" | "file" | "optional-file";
|
|
3049
3137
|
path: string;
|
|
3050
3138
|
owners: Set<string>;
|
|
3051
3139
|
}>();
|
|
@@ -3207,7 +3295,7 @@ function isObject(value: unknown): value is Record<string, unknown> {
|
|
|
3207
3295
|
}
|
|
3208
3296
|
|
|
3209
3297
|
function recordDependency(
|
|
3210
|
-
kind: "directory" | "file" | "optional-file",
|
|
3298
|
+
kind: "directory" | "entry" | "file" | "optional-file",
|
|
3211
3299
|
location: string,
|
|
3212
3300
|
digest: string,
|
|
3213
3301
|
owners: readonly string[],
|
|
@@ -3271,6 +3359,63 @@ function recordDirectoryDependency(
|
|
|
3271
3359
|
}
|
|
3272
3360
|
}
|
|
3273
3361
|
|
|
3362
|
+
// Observe one path's own existence and link topology instead of enumerating the
|
|
3363
|
+
// directory that contains it. A resolution trace passes through ancestors it
|
|
3364
|
+
// does not own -- /var on macOS is a symlink whose parent is the filesystem
|
|
3365
|
+
// root -- and digesting that parent both reaches outside the project boundary
|
|
3366
|
+
// and reads the whole directory to learn one entry's state.
|
|
3367
|
+
// A path candidate is observed through the directory that would own a
|
|
3368
|
+
// competing resolution, so a sibling winning extension resolution still
|
|
3369
|
+
// invalidates. That reasoning is what the parent digest is for and it stays.
|
|
3370
|
+
//
|
|
3371
|
+
// It does not reach the filesystem root. The root owns no candidate this trace
|
|
3372
|
+
// could pick, and a resolution path routinely passes through an ancestor
|
|
3373
|
+
// directly beneath it -- /var on macOS is a symlink whose parent is the root --
|
|
3374
|
+
// so digesting the parent there enumerates the entire filesystem root on every
|
|
3375
|
+
// config load, outside the project boundary. Record that one ancestor instead.
|
|
3376
|
+
function recordAncestorDependency(
|
|
3377
|
+
parent: string,
|
|
3378
|
+
entry: string,
|
|
3379
|
+
root: string,
|
|
3380
|
+
owners: readonly string[],
|
|
3381
|
+
): void {
|
|
3382
|
+
if (parent === root) recordEntryDependency(entry, owners);
|
|
3383
|
+
else recordDirectoryDependency(parent, owners);
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3386
|
+
function recordEntryDependency(
|
|
3387
|
+
location: string,
|
|
3388
|
+
owners: readonly string[],
|
|
3389
|
+
): void {
|
|
3390
|
+
recordDependency("entry", location, entryDigest(location), owners);
|
|
3391
|
+
}
|
|
3392
|
+
|
|
3393
|
+
function entryDigest(location: string): string {
|
|
3394
|
+
let entry: ReturnType<typeof fs.lstatSync>;
|
|
3395
|
+
try {
|
|
3396
|
+
entry = fs.lstatSync(location);
|
|
3397
|
+
} catch {
|
|
3398
|
+
return createHash("sha256").update("missing\0").digest("hex");
|
|
3399
|
+
}
|
|
3400
|
+
if (entry.isSymbolicLink()) {
|
|
3401
|
+
let target: Buffer;
|
|
3402
|
+
try {
|
|
3403
|
+
target = fs.readlinkSync(location, { encoding: "buffer" });
|
|
3404
|
+
} catch {
|
|
3405
|
+
target = Buffer.from("<unreadable>");
|
|
3406
|
+
}
|
|
3407
|
+
return createHash("sha256")
|
|
3408
|
+
.update(Buffer.concat([Buffer.from("symlink\0"), target]))
|
|
3409
|
+
.digest("hex");
|
|
3410
|
+
}
|
|
3411
|
+
const kind = entry.isDirectory()
|
|
3412
|
+
? "directory"
|
|
3413
|
+
: entry.isFile()
|
|
3414
|
+
? "file"
|
|
3415
|
+
: "other";
|
|
3416
|
+
return createHash("sha256").update(kind + "\0").digest("hex");
|
|
3417
|
+
}
|
|
3418
|
+
|
|
3274
3419
|
function directoryDigest(location: string): string {
|
|
3275
3420
|
const entries: Buffer[] = [];
|
|
3276
3421
|
if (process.platform === "win32") {
|
|
@@ -3851,11 +3996,11 @@ function recordPackagePathCandidate(
|
|
|
3851
3996
|
try {
|
|
3852
3997
|
entry = fs.lstatSync(next);
|
|
3853
3998
|
} catch {
|
|
3854
|
-
|
|
3999
|
+
recordAncestorDependency(current, next, parsed.root, owners);
|
|
3855
4000
|
return;
|
|
3856
4001
|
}
|
|
3857
4002
|
if (entry.isSymbolicLink()) {
|
|
3858
|
-
|
|
4003
|
+
recordAncestorDependency(current, next, parsed.root, owners);
|
|
3859
4004
|
try {
|
|
3860
4005
|
const target = fs.readlinkSync(next);
|
|
3861
4006
|
const remainder = components.slice(index + 1);
|
|
@@ -3877,16 +4022,20 @@ function recordPackagePathCandidate(
|
|
|
3877
4022
|
}
|
|
3878
4023
|
}
|
|
3879
4024
|
if (index === components.length - 1) {
|
|
3880
|
-
|
|
4025
|
+
if (isDirectory) recordDirectoryDependency(next, owners);
|
|
4026
|
+
else recordAncestorDependency(current, next, parsed.root, owners);
|
|
3881
4027
|
return;
|
|
3882
4028
|
}
|
|
3883
4029
|
if (!isDirectory) {
|
|
3884
|
-
|
|
4030
|
+
recordAncestorDependency(current, next, parsed.root, owners);
|
|
3885
4031
|
return;
|
|
3886
4032
|
}
|
|
3887
4033
|
current = next;
|
|
3888
4034
|
}
|
|
3889
|
-
|
|
4035
|
+
// Reached only when the candidate resolved to the filesystem root itself,
|
|
4036
|
+
// which names no package. Record its existence, not its listing.
|
|
4037
|
+
if (current === parsed.root) recordEntryDependency(current, owners);
|
|
4038
|
+
else recordDirectoryDependency(current, owners);
|
|
3890
4039
|
}
|
|
3891
4040
|
|
|
3892
4041
|
function modulePackageName(specifier: string): string | undefined {
|
|
@@ -3964,7 +4113,7 @@ function realPath(location: string): string {
|
|
|
3964
4113
|
|
|
3965
4114
|
function finalizeDependencies(): Array<{
|
|
3966
4115
|
digest: string;
|
|
3967
|
-
kind: "directory" | "file" | "optional-file";
|
|
4116
|
+
kind: "directory" | "entry" | "file" | "optional-file";
|
|
3968
4117
|
path: string;
|
|
3969
4118
|
scope: "cache" | "watch";
|
|
3970
4119
|
}> {
|
package/linthost/fix.go
CHANGED
|
@@ -83,8 +83,14 @@ func runFix(opts *subcommandOpts) int {
|
|
|
83
83
|
// kinds of findings in one pass — no filtering needed here.
|
|
84
84
|
cascadeConverged := false
|
|
85
85
|
for pass := 0; pass < maxFixPasses; pass++ {
|
|
86
|
+
// Fix reads the whole lint scope because it prints diagnostics once the
|
|
87
|
+
// cascade settles, and writes only the project's own files: an imported
|
|
88
|
+
// source reaches the report below, never the disk.
|
|
86
89
|
findings := prog.runLintCycle(engine)
|
|
87
|
-
fixed, err := applyFindingFixes(
|
|
90
|
+
fixed, err := applyFindingFixes(
|
|
91
|
+
opts.cwd,
|
|
92
|
+
prog.projectWritableFindings(findings),
|
|
93
|
+
)
|
|
88
94
|
if err != nil {
|
|
89
95
|
fmt.Fprintln(os.Stderr, err)
|
|
90
96
|
return 3
|
package/linthost/format.go
CHANGED
|
@@ -68,7 +68,9 @@ func runFormat(opts *subcommandOpts) int {
|
|
|
68
68
|
totalFixes := 0
|
|
69
69
|
cascadeConverged := false
|
|
70
70
|
for pass := 0; pass < maxFormatPasses; pass++ {
|
|
71
|
-
|
|
71
|
+
// Format's cycle stays inside the project's own sources, so every finding
|
|
72
|
+
// it sees is one it may write.
|
|
73
|
+
findings := prog.runWriteScopedCycle(engine)
|
|
72
74
|
fixed, err := applyFindingFixes(opts.cwd, filterFormatFindings(findings))
|
|
73
75
|
if err != nil {
|
|
74
76
|
fmt.Fprintln(os.Stderr, err)
|
package/linthost/host.go
CHANGED
|
@@ -42,6 +42,15 @@ type program struct {
|
|
|
42
42
|
checker *shimchecker.Checker
|
|
43
43
|
identity publicrule.ProjectIdentity
|
|
44
44
|
projectCycle *projectCycle
|
|
45
|
+
// projectRoots memoizes projectSourceFileNames, which resolves every
|
|
46
|
+
// selected file's path and therefore costs filesystem work. The tsconfig
|
|
47
|
+
// selection cannot change while one program is loaded — a config edit or a
|
|
48
|
+
// new or removed file forces a full reload upstream rather than an
|
|
49
|
+
// applyChange — while every read and every write consults the set at least
|
|
50
|
+
// once per cycle, and a fix or format cascade repeats that per pass. Filled
|
|
51
|
+
// lazily under the same single-threaded assumption projectCycle already
|
|
52
|
+
// makes, and read-only to its callers.
|
|
53
|
+
projectRoots map[string]struct{}
|
|
45
54
|
}
|
|
46
55
|
|
|
47
56
|
type loadProgramOptions struct {
|
|
@@ -274,11 +283,38 @@ func (p *program) runProjectCycle(engine *Engine) *projectCycle {
|
|
|
274
283
|
return p.projectCycle
|
|
275
284
|
}
|
|
276
285
|
|
|
286
|
+
// runLintCycle walks everything the invocation reads: the project's own sources
|
|
287
|
+
// and the TypeScript it imported. Every caller here reports its findings, so a
|
|
288
|
+
// source the type-check pass read must be able to produce one.
|
|
277
289
|
func (p *program) runLintCycle(engine *Engine) []*Finding {
|
|
290
|
+
return p.runCycleOver(engine, p.userSourceFiles())
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// runWriteScopedCycle walks the project's own sources alone. It serves the
|
|
294
|
+
// commands that edit files and report nothing: `format` and the LSP document
|
|
295
|
+
// fix and format verbs.
|
|
296
|
+
//
|
|
297
|
+
// Such a command must not rewrite a sibling package it merely imports, and it
|
|
298
|
+
// prints no diagnostic, so a finding outside the project has nowhere to go.
|
|
299
|
+
// Reading wider would spend a full walk, once per cascade pass, on findings the
|
|
300
|
+
// command discards. Scope is enforced by what these commands read rather than
|
|
301
|
+
// by filtering afterwards, which leaves projectWritableFindings to `fix` alone.
|
|
302
|
+
func (p *program) runWriteScopedCycle(engine *Engine) []*Finding {
|
|
303
|
+
return p.runCycleOver(engine, p.projectSourceFiles())
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// runCycleOver evaluates the project rules and the file rules over one file set,
|
|
307
|
+
// memoizing the project cycle on the program so a second verb against the same
|
|
308
|
+
// program does not re-evaluate a rule. The caller owns the scope decision.
|
|
309
|
+
//
|
|
310
|
+
// That memo makes the scope a property of the program, not of the call: the
|
|
311
|
+
// first cycle fixes the population every later verb observes. One loaded
|
|
312
|
+
// program therefore serves one scope, and a caller must not ask the same
|
|
313
|
+
// program for both a lint cycle and a write-scoped one.
|
|
314
|
+
func (p *program) runCycleOver(engine *Engine, files []*shimast.SourceFile) []*Finding {
|
|
278
315
|
if p == nil || engine == nil {
|
|
279
316
|
return nil
|
|
280
317
|
}
|
|
281
|
-
files := p.userSourceFiles()
|
|
282
318
|
if p.projectCycle == nil {
|
|
283
319
|
p.projectCycle = engine.evaluateProject(p.identity, files, p.checker)
|
|
284
320
|
}
|
|
@@ -348,19 +384,59 @@ func (p *program) applyChange(absPath string) bool {
|
|
|
348
384
|
return reused
|
|
349
385
|
}
|
|
350
386
|
|
|
351
|
-
// userSourceFiles returns the
|
|
352
|
-
//
|
|
353
|
-
//
|
|
354
|
-
//
|
|
355
|
-
//
|
|
387
|
+
// userSourceFiles returns the source files the lint engine reads for one cycle:
|
|
388
|
+
// the tsconfig-selected TS/JS roots plus every TypeScript source the Program
|
|
389
|
+
// pulled in through an import.
|
|
390
|
+
//
|
|
391
|
+
// The tsconfig file list alone is not the boundary. `ttsc` type-checks a
|
|
392
|
+
// first-party sibling workspace package that resolves to its own `src`, so a
|
|
393
|
+
// reporting pass restricted to the file list would hold a second, narrower view
|
|
394
|
+
// of the single Program the invocation loaded — the file is checked but never
|
|
395
|
+
// linted, and never reaches a project rule's ctx.Sources (samchon/ttsc#1065).
|
|
396
|
+
// A consumer cannot close that gap from configuration either: adding the
|
|
397
|
+
// sibling to `include` also changes what the project emits.
|
|
398
|
+
//
|
|
399
|
+
// The widening admits authored TypeScript only — `.ts`, `.tsx`, `.mts`, `.cts`
|
|
400
|
+
// that are not declaration files. Everything else stays selection-driven:
|
|
401
|
+
// - a declaration file is typings rather than authored source, and the bundled
|
|
402
|
+
// `lib.*.d.ts` set plus every published package's `.d.ts` reach
|
|
403
|
+
// Program.SourceFiles() as well;
|
|
404
|
+
// - JavaScript enters the Program only under `allowJs`, where the project's own
|
|
405
|
+
// file list already selects the JS it owns;
|
|
406
|
+
// - a JSON module carries no lint source at all.
|
|
407
|
+
//
|
|
408
|
+
// A project that selects any of those explicitly keeps them, exactly as before.
|
|
409
|
+
// A published dependency reaches the Program through its typings, so its own
|
|
410
|
+
// `.ts` sources stay out without a dependency-shaped rule here.
|
|
356
411
|
func (p *program) userSourceFiles() []*shimast.SourceFile {
|
|
357
|
-
roots := p.
|
|
412
|
+
roots := p.projectSourceFileNames()
|
|
358
413
|
out := make([]*shimast.SourceFile, 0)
|
|
359
414
|
for _, f := range p.tsProgram.SourceFiles() {
|
|
360
415
|
if f == nil {
|
|
361
416
|
continue
|
|
362
417
|
}
|
|
363
|
-
if
|
|
418
|
+
if p.selectedByProject(roots, f.FileName()) {
|
|
419
|
+
out = append(out, f)
|
|
420
|
+
continue
|
|
421
|
+
}
|
|
422
|
+
if isImportedLintSourceFile(f) {
|
|
423
|
+
out = append(out, f)
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return out
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// projectSourceFiles returns the Program's copy of the files the tsconfig itself
|
|
430
|
+
// selected — the project's own sources, the set `format` walks and the set any
|
|
431
|
+
// lint write stays inside.
|
|
432
|
+
func (p *program) projectSourceFiles() []*shimast.SourceFile {
|
|
433
|
+
roots := p.projectSourceFileNames()
|
|
434
|
+
out := make([]*shimast.SourceFile, 0, len(roots))
|
|
435
|
+
for _, f := range p.tsProgram.SourceFiles() {
|
|
436
|
+
if f == nil {
|
|
437
|
+
continue
|
|
438
|
+
}
|
|
439
|
+
if !p.selectedByProject(roots, f.FileName()) {
|
|
364
440
|
continue
|
|
365
441
|
}
|
|
366
442
|
out = append(out, f)
|
|
@@ -368,15 +444,88 @@ func (p *program) userSourceFiles() []*shimast.SourceFile {
|
|
|
368
444
|
return out
|
|
369
445
|
}
|
|
370
446
|
|
|
371
|
-
|
|
447
|
+
// projectSourceFileNames returns the canonical paths of the TS/JS files the
|
|
448
|
+
// tsconfig itself selected, indexed under both the configured spelling and the
|
|
449
|
+
// resolved one.
|
|
450
|
+
//
|
|
451
|
+
// This is the narrow half of the boundary above. `format` reads nothing else at
|
|
452
|
+
// all, and `fix` reads wider but writes only here, because a project must not
|
|
453
|
+
// rewrite a sibling package's sources merely because it imports them. See
|
|
454
|
+
// projectWritableFindings.
|
|
455
|
+
//
|
|
456
|
+
// Both spellings are indexed because a project can be reached through a
|
|
457
|
+
// junction, a symlink, or a Windows 8.3 short name, and the Program need not
|
|
458
|
+
// report a file under the spelling the config used. Before the read scope
|
|
459
|
+
// widened, an alias mismatch merely dropped the file from every pass. Now it
|
|
460
|
+
// would leave the file readable and unwritable, turning a fixable diagnostic
|
|
461
|
+
// into one `fix` refuses to touch, so ownership resolves the alias.
|
|
462
|
+
func (p *program) projectSourceFileNames() map[string]struct{} {
|
|
463
|
+
if p == nil {
|
|
464
|
+
return map[string]struct{}{}
|
|
465
|
+
}
|
|
466
|
+
if p.projectRoots != nil {
|
|
467
|
+
return p.projectRoots
|
|
468
|
+
}
|
|
372
469
|
out := make(map[string]struct{})
|
|
373
|
-
if p
|
|
374
|
-
|
|
470
|
+
if p.parsed != nil && p.parsed.ParsedConfig != nil {
|
|
471
|
+
for _, fileName := range p.parsed.ParsedConfig.FileNames {
|
|
472
|
+
if !isLintSourceFileName(fileName) {
|
|
473
|
+
continue
|
|
474
|
+
}
|
|
475
|
+
absolute := absoluteProjectPath(p.cwd, fileName)
|
|
476
|
+
out[canonicalProjectPath(p.cwd, absolute)] = struct{}{}
|
|
477
|
+
out[canonicalProjectPath(p.cwd, realProjectPath(absolute))] = struct{}{}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
p.projectRoots = out
|
|
481
|
+
return out
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// selectedByProject reports whether the tsconfig selected fileName, resolving
|
|
485
|
+
// the path only when its own spelling misses.
|
|
486
|
+
//
|
|
487
|
+
// Indexing both spellings above already catches the ordinary link, so this
|
|
488
|
+
// fallback exists for a Program spelling that matches neither, such as a
|
|
489
|
+
// Windows 8.3 short name. It costs one resolution per file the config did not
|
|
490
|
+
// select, paid by the imported set on every cycle, against the rule walk those
|
|
491
|
+
// same files are about to receive.
|
|
492
|
+
func (p *program) selectedByProject(
|
|
493
|
+
roots map[string]struct{},
|
|
494
|
+
fileName string,
|
|
495
|
+
) bool {
|
|
496
|
+
if p == nil || len(roots) == 0 {
|
|
497
|
+
return false
|
|
375
498
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
499
|
+
if _, ok := roots[canonicalProjectPath(p.cwd, fileName)]; ok {
|
|
500
|
+
return true
|
|
501
|
+
}
|
|
502
|
+
resolved := realProjectPath(absoluteProjectPath(p.cwd, fileName))
|
|
503
|
+
_, ok := roots[canonicalProjectPath(p.cwd, resolved)]
|
|
504
|
+
return ok
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// projectWritableFindings keeps the findings whose file this project may write:
|
|
508
|
+
// the ones sitting in a tsconfig-selected source, dropping every edit aimed at a
|
|
509
|
+
// source the Program reached only through an import.
|
|
510
|
+
//
|
|
511
|
+
// This is `fix`'s guard alone, because `fix` is the one command that must read
|
|
512
|
+
// wider than it writes: it prints the diagnostics that survive the cascade, so
|
|
513
|
+
// an imported source has to reach its report while its edit must not reach
|
|
514
|
+
// disk. The package that owns the file fixes it from its own run, under its own
|
|
515
|
+
// config. Commands that only write walk the narrow set to begin with. A finding
|
|
516
|
+
// without a source file (a project rule's detached report) never reaches disk
|
|
517
|
+
// either and is dropped with them.
|
|
518
|
+
func (p *program) projectWritableFindings(findings []*Finding) []*Finding {
|
|
519
|
+
roots := p.projectSourceFileNames()
|
|
520
|
+
out := make([]*Finding, 0, len(findings))
|
|
521
|
+
for _, finding := range findings {
|
|
522
|
+
if finding == nil || finding.File == nil {
|
|
523
|
+
continue
|
|
379
524
|
}
|
|
525
|
+
if !p.selectedByProject(roots, finding.File.FileName()) {
|
|
526
|
+
continue
|
|
527
|
+
}
|
|
528
|
+
out = append(out, finding)
|
|
380
529
|
}
|
|
381
530
|
return out
|
|
382
531
|
}
|
|
@@ -388,6 +537,18 @@ func canonicalProjectPath(cwd, fileName string) string {
|
|
|
388
537
|
return filepath.ToSlash(filepath.Clean(fileName))
|
|
389
538
|
}
|
|
390
539
|
|
|
540
|
+
// isImportedLintSourceFile reports whether a Program source file the tsconfig
|
|
541
|
+
// did not select is authored TypeScript the lint pass must still read.
|
|
542
|
+
func isImportedLintSourceFile(file *shimast.SourceFile) bool {
|
|
543
|
+
if file == nil || file.IsDeclarationFile {
|
|
544
|
+
return false
|
|
545
|
+
}
|
|
546
|
+
return isTypeScriptSourceFileName(file.FileName())
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// isLintSourceFileName reports whether a tsconfig-selected file is a lint/format
|
|
550
|
+
// source root. The project's own selection governs here, so both TypeScript and
|
|
551
|
+
// JavaScript qualify: a project that lists `.js` under `allowJs` owns it.
|
|
391
552
|
func isLintSourceFileName(fileName string) bool {
|
|
392
553
|
switch strings.ToLower(filepath.Ext(fileName)) {
|
|
393
554
|
case ".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs":
|
|
@@ -397,6 +558,18 @@ func isLintSourceFileName(fileName string) bool {
|
|
|
397
558
|
}
|
|
398
559
|
}
|
|
399
560
|
|
|
561
|
+
// isTypeScriptSourceFileName reports whether a path names TypeScript source.
|
|
562
|
+
// `.d.ts` shares the `.ts` extension, so callers pair this with the source
|
|
563
|
+
// file's IsDeclarationFile flag rather than reading the suffix twice.
|
|
564
|
+
func isTypeScriptSourceFileName(fileName string) bool {
|
|
565
|
+
switch strings.ToLower(filepath.Ext(fileName)) {
|
|
566
|
+
case ".ts", ".tsx", ".mts", ".cts":
|
|
567
|
+
return true
|
|
568
|
+
default:
|
|
569
|
+
return false
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
400
573
|
// programDiagnostics returns the bind + semantic diagnostics for the
|
|
401
574
|
// loaded program. Same surface tsgo's CLI prints when you run a regular
|
|
402
575
|
// `tsgo --noEmit`.
|
package/linthost/lsp.go
CHANGED
|
@@ -981,7 +981,11 @@ func lspWorkspaceEditForSeededCommand(
|
|
|
981
981
|
prog.close()
|
|
982
982
|
return nil, 0
|
|
983
983
|
}
|
|
984
|
-
|
|
984
|
+
// This command edits a document, so it walks the project's own sources the
|
|
985
|
+
// way `format` does. Reading the imported TypeScript the lint cycle covers
|
|
986
|
+
// would widen nothing here: the edit is bounded to one target below, and a
|
|
987
|
+
// read-scope widening must not open a write the project never had.
|
|
988
|
+
findings := filterFindingsForPath(prog.runWriteScopedCycle(engine), tempTarget)
|
|
985
989
|
prog.close()
|
|
986
990
|
if opts.command == commandFormatDocument {
|
|
987
991
|
findings = filterFormatFindings(findings)
|
|
@@ -195,22 +195,21 @@ func realProjectGlob(pattern string) string {
|
|
|
195
195
|
func uniqueProjectInputPatterns(patterns []string) []string {
|
|
196
196
|
return uniqueProjectInputPatternsForFilesystem(
|
|
197
197
|
patterns,
|
|
198
|
-
|
|
198
|
+
usesWindowsPathSyntax(),
|
|
199
199
|
)
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
func uniqueProjectInputPatternsForFilesystem(
|
|
203
203
|
patterns []string,
|
|
204
|
-
|
|
204
|
+
windowsPaths bool,
|
|
205
205
|
) []string {
|
|
206
206
|
seen := map[string]string{}
|
|
207
207
|
for _, pattern := range patterns {
|
|
208
|
-
normalized := normalizeProjectInputPattern(pattern,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
seen[key] = normalized
|
|
208
|
+
normalized := normalizeProjectInputPattern(pattern, windowsPaths)
|
|
209
|
+
// The producer cannot decide Windows identity globally: a directory can
|
|
210
|
+
// opt into case-sensitive lookup. Preserve every normalized spelling and
|
|
211
|
+
// let each consumer resolve aliases against that directory's semantics.
|
|
212
|
+
seen[normalized] = normalized
|
|
214
213
|
}
|
|
215
214
|
out := make([]string, 0, len(seen))
|
|
216
215
|
for _, pattern := range seen {
|
|
@@ -222,9 +221,9 @@ func uniqueProjectInputPatternsForFilesystem(
|
|
|
222
221
|
|
|
223
222
|
func normalizeProjectInputPattern(
|
|
224
223
|
pattern string,
|
|
225
|
-
|
|
224
|
+
windowsPaths bool,
|
|
226
225
|
) string {
|
|
227
|
-
if !
|
|
226
|
+
if !windowsPaths {
|
|
228
227
|
return filepath.ToSlash(filepath.Clean(filepath.FromSlash(pattern)))
|
|
229
228
|
}
|
|
230
229
|
slashed := strings.ReplaceAll(pattern, "\\", "/")
|
|
@@ -236,6 +235,6 @@ func normalizeProjectInputPattern(
|
|
|
236
235
|
return normalized
|
|
237
236
|
}
|
|
238
237
|
|
|
239
|
-
func
|
|
238
|
+
func usesWindowsPathSyntax() bool {
|
|
240
239
|
return filepath.Separator == '\\'
|
|
241
240
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttsc/lint",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Reference ttsc plugin: ESLint-style lint rules over the TypeScript-Go Program used by the type-check pass.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@types/node": "^25.3.0",
|
|
38
38
|
"rimraf": "^6.1.2",
|
|
39
39
|
"typescript": "^7.0.2",
|
|
40
|
-
"ttsc": "0.
|
|
40
|
+
"ttsc": "0.24.0"
|
|
41
41
|
},
|
|
42
42
|
"repository": {
|
|
43
43
|
"type": "git",
|
package/rule/project.go
CHANGED
|
@@ -170,7 +170,18 @@ type ProjectReporter interface {
|
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
// ProjectContext contains the immutable inputs for one project-rule check.
|
|
173
|
-
//
|
|
173
|
+
//
|
|
174
|
+
// Sources is a defensive copy of the user sources the host read for this cycle:
|
|
175
|
+
// the project's own tsconfig-selected files plus every TypeScript source the
|
|
176
|
+
// Program pulled in through an import, minus globally ignored paths. A rule
|
|
177
|
+
// that declares a population by glob therefore sees a first-party sibling
|
|
178
|
+
// workspace package the same way the type-check pass does, instead of an empty
|
|
179
|
+
// population that would silently report full coverage.
|
|
180
|
+
//
|
|
181
|
+
// A format run is the exception. It writes files and reports nothing, so it
|
|
182
|
+
// walks the project's own file list alone and a rule evaluated there receives
|
|
183
|
+
// that narrower population. Draw a conclusion that must hold across the
|
|
184
|
+
// workspace from a lint or check run.
|
|
174
185
|
type ProjectContext struct {
|
|
175
186
|
Identity ProjectIdentity
|
|
176
187
|
Sources []*shimast.SourceFile
|
package/src/index.ts
CHANGED
|
@@ -7,6 +7,12 @@ import os from "node:os";
|
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { pathToFileURL } from "node:url";
|
|
9
9
|
|
|
10
|
+
import {
|
|
11
|
+
CONFIG_EVALUATOR_PROCESS_OPTIONS,
|
|
12
|
+
CONFIG_EVALUATOR_STATUS_FD,
|
|
13
|
+
configEvaluatorBoundaryEnvironment,
|
|
14
|
+
configEvaluatorProcessFailure,
|
|
15
|
+
} from "./internal/configEvaluatorFailure";
|
|
10
16
|
import type { ITtscLintPlugin, ITtscLintPluginConfig } from "./structures";
|
|
11
17
|
|
|
12
18
|
export * from "./defaultFormat";
|
|
@@ -1741,41 +1747,30 @@ function evaluateTtsxConfigPlugins(
|
|
|
1741
1747
|
if (process.env.TTSC_TSGO_BINARY) {
|
|
1742
1748
|
args.unshift("--binary", process.env.TTSC_TSGO_BINARY);
|
|
1743
1749
|
}
|
|
1744
|
-
const env =
|
|
1750
|
+
const env = {
|
|
1751
|
+
...nodeConfigLoaderEnv(configPath),
|
|
1752
|
+
...configEvaluatorBoundaryEnvironment(),
|
|
1753
|
+
};
|
|
1745
1754
|
const command = ttsxThroughNodeIfNeeded(ttsxBinary);
|
|
1746
1755
|
const result = spawnSync(command.binary, [...command.prefix, ...args], {
|
|
1747
1756
|
cwd: tempDir,
|
|
1748
1757
|
env,
|
|
1749
1758
|
encoding: "utf8",
|
|
1750
|
-
|
|
1751
|
-
stdio: [
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1759
|
+
...CONFIG_EVALUATOR_PROCESS_OPTIONS,
|
|
1760
|
+
stdio: [
|
|
1761
|
+
"ignore",
|
|
1762
|
+
"pipe",
|
|
1763
|
+
"pipe",
|
|
1764
|
+
...Array.from(
|
|
1765
|
+
{ length: CONFIG_EVALUATOR_STATUS_FD - 2 },
|
|
1766
|
+
() => "pipe" as const,
|
|
1767
|
+
),
|
|
1768
|
+
],
|
|
1755
1769
|
windowsHide: true,
|
|
1756
1770
|
});
|
|
1757
1771
|
forwardConfigEvaluatorStreams(result.stdout, result.stderr);
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
`@ttsc/lint: failed to spawn ttsx for ${configPath}: ${result.error.message}`,
|
|
1761
|
-
);
|
|
1762
|
-
}
|
|
1763
|
-
if (result.signal) {
|
|
1764
|
-
throw new Error(
|
|
1765
|
-
`@ttsc/lint: ttsx evaluation of ${configPath} was killed by signal ${result.signal} ` +
|
|
1766
|
-
`(likely the 60s timeout). Simplify the config or move heavy work out of top-level.`,
|
|
1767
|
-
);
|
|
1768
|
-
}
|
|
1769
|
-
if (result.status !== 0) {
|
|
1770
|
-
// The evaluator already said why on its own stderr. Reporting only the
|
|
1771
|
-
// exit code discards that and leaves the caller — a test, a CI log, a
|
|
1772
|
-
// user with a typo in one contributor — holding a number.
|
|
1773
|
-
const reason = configEvaluatorFailureReason(result.stderr);
|
|
1774
|
-
throw new Error(
|
|
1775
|
-
`@ttsc/lint: lint config ${configPath} evaluation failed with exit code ${String(result.status)}` +
|
|
1776
|
-
(reason === "" ? "" : "\n" + reason),
|
|
1777
|
-
);
|
|
1778
|
-
}
|
|
1772
|
+
const processFailure = configEvaluatorProcessFailure(result, configPath);
|
|
1773
|
+
if (processFailure) throw processFailure;
|
|
1779
1774
|
let payload: {
|
|
1780
1775
|
dependencies?: ConfigDependencyFingerprint[];
|
|
1781
1776
|
entries?: ConfigPluginEntry[];
|
|
@@ -1850,24 +1845,6 @@ function evaluateTtsxConfigPlugins(
|
|
|
1850
1845
|
}
|
|
1851
1846
|
}
|
|
1852
1847
|
|
|
1853
|
-
/**
|
|
1854
|
-
* What the evaluator said before it gave up, trimmed to the part that explains
|
|
1855
|
-
* it.
|
|
1856
|
-
*
|
|
1857
|
-
* The build banner and progress lines are the same on success, so they say
|
|
1858
|
-
* nothing about the failure; the tail is where the thrown reason lands. Kept to
|
|
1859
|
-
* a few lines because this is appended to an exception message, not a log.
|
|
1860
|
-
*/
|
|
1861
|
-
function configEvaluatorFailureReason(stderr: string | undefined): string {
|
|
1862
|
-
const lines = (stderr ?? "")
|
|
1863
|
-
.split(/\r?\n/)
|
|
1864
|
-
.map((line) => line.trimEnd())
|
|
1865
|
-
.filter((line) => line.trim() !== "");
|
|
1866
|
-
return lines.slice(-CONFIG_EVALUATOR_REASON_LINES).join("\n");
|
|
1867
|
-
}
|
|
1868
|
-
|
|
1869
|
-
const CONFIG_EVALUATOR_REASON_LINES = 5;
|
|
1870
|
-
|
|
1871
1848
|
function forwardConfigEvaluatorStreams(
|
|
1872
1849
|
stdout: string | null | undefined,
|
|
1873
1850
|
stderr: string | null | undefined,
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export const CONFIG_EVALUATOR_MAX_BUFFER = 16 * 1024 * 1024;
|
|
2
|
+
export const CONFIG_EVALUATOR_TIMEOUT_MS = 60_000;
|
|
3
|
+
export const CONFIG_EVALUATOR_TEARDOWN_GRACE_MS = 5_000;
|
|
4
|
+
export const CONFIG_EVALUATOR_STATUS_FD = 3;
|
|
5
|
+
export const CONFIG_EVALUATOR_PROCESS_OPTIONS = Object.freeze({
|
|
6
|
+
killSignal: "SIGKILL" as const,
|
|
7
|
+
maxBuffer: CONFIG_EVALUATOR_MAX_BUFFER,
|
|
8
|
+
timeout: CONFIG_EVALUATOR_TIMEOUT_MS + CONFIG_EVALUATOR_TEARDOWN_GRACE_MS,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
interface ConfigEvaluatorProcessResult {
|
|
12
|
+
error?: Error;
|
|
13
|
+
output?: readonly (string | null)[] | null;
|
|
14
|
+
signal: NodeJS.Signals | null;
|
|
15
|
+
status: number | null;
|
|
16
|
+
stderr: string | null | undefined;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Classify the ways the isolated lint-config evaluator can stop.
|
|
21
|
+
*
|
|
22
|
+
* Node reports both timeout and max-buffer termination with the configured
|
|
23
|
+
* signal, so the process error code must take precedence over the signal. The
|
|
24
|
+
* evaluator uses `SIGKILL`: Node's synchronous process API otherwise keeps
|
|
25
|
+
* waiting when a POSIX child handles the default `SIGTERM` without exiting. A
|
|
26
|
+
* bare signal is an external termination and a non-zero status is an evaluator
|
|
27
|
+
* failure whose stderr tail contains the useful user-config diagnostic.
|
|
28
|
+
*/
|
|
29
|
+
export function configEvaluatorProcessFailure(
|
|
30
|
+
result: ConfigEvaluatorProcessResult,
|
|
31
|
+
configPath: string,
|
|
32
|
+
): Error | undefined {
|
|
33
|
+
const code = (result.error as NodeJS.ErrnoException | undefined)?.code;
|
|
34
|
+
const nestedCode = result.output?.[CONFIG_EVALUATOR_STATUS_FD]?.trim() ?? "";
|
|
35
|
+
if (code === "ETIMEDOUT" || nestedCode === "ETIMEDOUT") {
|
|
36
|
+
return new Error(
|
|
37
|
+
`@ttsc/lint: ttsx evaluation of ${configPath} timed out after ` +
|
|
38
|
+
`${CONFIG_EVALUATOR_TIMEOUT_MS / 1_000} seconds. ` +
|
|
39
|
+
"Simplify the config or move heavy work out of top-level.",
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (code === "ENOBUFS" || nestedCode === "ENOBUFS") {
|
|
43
|
+
return new Error(
|
|
44
|
+
`@ttsc/lint: ttsx evaluation of ${configPath} exceeded the ` +
|
|
45
|
+
`${CONFIG_EVALUATOR_MAX_BUFFER / (1024 * 1024)} MiB output limit. ` +
|
|
46
|
+
"Reduce console output from the config and its dependencies.",
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
if (result.error) {
|
|
50
|
+
return new Error(
|
|
51
|
+
`@ttsc/lint: failed to spawn ttsx for ${configPath}: ${result.error.message}`,
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
if (result.signal) {
|
|
55
|
+
return new Error(
|
|
56
|
+
`@ttsc/lint: ttsx evaluation of ${configPath} was killed by signal ${result.signal}.`,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
if (result.status !== 0) {
|
|
60
|
+
const reason = configEvaluatorFailureReason(result.stderr);
|
|
61
|
+
return new Error(
|
|
62
|
+
`@ttsc/lint: lint config ${configPath} evaluation failed with exit code ${String(result.status)}` +
|
|
63
|
+
(reason === "" ? "" : "\n" + reason),
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Pass the semantic deadline and private status pipe through the `ttsx` wrapper
|
|
71
|
+
* to the runtime child that actually executes the config.
|
|
72
|
+
*/
|
|
73
|
+
export function configEvaluatorBoundaryEnvironment(
|
|
74
|
+
now: number = Date.now(),
|
|
75
|
+
): NodeJS.ProcessEnv {
|
|
76
|
+
return {
|
|
77
|
+
TTSC_TTSX_EVALUATOR_DEADLINE_MS: String(now + CONFIG_EVALUATOR_TIMEOUT_MS),
|
|
78
|
+
TTSC_TTSX_EVALUATOR_MAX_BUFFER_BYTES: String(CONFIG_EVALUATOR_MAX_BUFFER),
|
|
79
|
+
TTSC_TTSX_EVALUATOR_STATUS_FD: String(CONFIG_EVALUATOR_STATUS_FD),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Return the useful tail of evaluator stderr without turning an exception into
|
|
85
|
+
* an unbounded duplicate of the already-forwarded child stream.
|
|
86
|
+
*/
|
|
87
|
+
function configEvaluatorFailureReason(
|
|
88
|
+
stderr: string | null | undefined,
|
|
89
|
+
): string {
|
|
90
|
+
const bounded = (stderr ?? "").slice(-CONFIG_EVALUATOR_REASON_MAX_CHARS);
|
|
91
|
+
const lines = bounded
|
|
92
|
+
.split(/\r?\n/)
|
|
93
|
+
.map((line) => line.trimEnd())
|
|
94
|
+
.filter((line) => line.trim() !== "");
|
|
95
|
+
return lines.slice(-CONFIG_EVALUATOR_REASON_LINES).join("\n");
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const CONFIG_EVALUATOR_REASON_LINES = 5;
|
|
99
|
+
const CONFIG_EVALUATOR_REASON_MAX_CHARS = 8 * 1024;
|