@trebired/code-discipline 4.6.0 → 4.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -3
- package/README.md +5 -28
- package/dist/checks/apply-fixes.d.ts +1 -2
- package/dist/checks/apply-fixes.d.ts.map +1 -1
- package/dist/checks/apply-fixes.js +1 -11
- package/dist/checks/apply-fixes.js.map +1 -1
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +1 -6
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rule-slugs.d.ts +0 -1
- package/dist/checks/rule-slugs.d.ts.map +1 -1
- package/dist/checks/rule-slugs.js +0 -3
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/banned/fold.d.ts +11 -0
- package/dist/checks/rules/banned/fold.d.ts.map +1 -0
- package/dist/checks/rules/banned/fold.js +210 -0
- package/dist/checks/rules/banned/fold.js.map +1 -0
- package/dist/checks/rules/banned/patterns.d.ts.map +1 -1
- package/dist/checks/rules/banned/patterns.js +34 -4
- package/dist/checks/rules/banned/patterns.js.map +1 -1
- package/dist/checks/severity.d.ts.map +1 -1
- package/dist/checks/severity.js +0 -1
- package/dist/checks/severity.js.map +1 -1
- package/dist/checks/types.d.ts +2 -13
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/config/normalize/check-options.d.ts.map +1 -1
- package/dist/config/normalize/check-options.js +1 -2
- package/dist/config/normalize/check-options.js.map +1 -1
- package/dist/config/normalize/rule-options.d.ts +2 -7
- package/dist/config/normalize/rule-options.d.ts.map +1 -1
- package/dist/config/normalize/rule-options.js +1 -25
- package/dist/config/normalize/rule-options.js.map +1 -1
- package/dist/imports/module-specifiers.d.ts +1 -2
- package/dist/imports/module-specifiers.d.ts.map +1 -1
- package/dist/imports/module-specifiers.js +1 -1
- package/dist/imports/module-specifiers.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/shared/discipline-types.d.ts +1 -1
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/dist/shared/languages.d.ts +1 -3
- package/dist/shared/languages.d.ts.map +1 -1
- package/dist/shared/languages.js +1 -13
- package/dist/shared/languages.js.map +1 -1
- package/package.json +1 -1
- package/dist/checks/rules/ts-nocheck-audit/index.d.ts +0 -7
- package/dist/checks/rules/ts-nocheck-audit/index.d.ts.map +0 -1
- package/dist/checks/rules/ts-nocheck-audit/index.js +0 -76
- package/dist/checks/rules/ts-nocheck-audit/index.js.map +0 -1
- package/dist/checks/rules/ts-nocheck-audit/pragma.d.ts +0 -12
- package/dist/checks/rules/ts-nocheck-audit/pragma.d.ts.map +0 -1
- package/dist/checks/rules/ts-nocheck-audit/pragma.js +0 -33
- package/dist/checks/rules/ts-nocheck-audit/pragma.js.map +0 -1
- package/dist/checks/rules/ts-nocheck-audit/program.d.ts +0 -14
- package/dist/checks/rules/ts-nocheck-audit/program.d.ts.map +0 -1
- package/dist/checks/rules/ts-nocheck-audit/program.js +0 -50
- package/dist/checks/rules/ts-nocheck-audit/program.js.map +0 -1
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import { supportsTsNocheckAudit } from "../../../shared/languages.js";
|
|
3
|
-
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../progress.js";
|
|
4
|
-
import { buildStrippedProgram, getSemanticDiagnosticCount, resolveTsconfigPath } from "./program.js";
|
|
5
|
-
import { findLeadingTsNocheckLine, removeLeadingTsNocheckLine } from "./pragma.js";
|
|
6
|
-
async function findUnnecessaryPragmaFiles(sourceFiles, options, stage) {
|
|
7
|
-
const progress = createRuleProgress({
|
|
8
|
-
observer: options.progressObserver,
|
|
9
|
-
rule: "ts-nocheck-audit",
|
|
10
|
-
stage,
|
|
11
|
-
totalItems: sourceFiles.length,
|
|
12
|
-
});
|
|
13
|
-
const candidates = [];
|
|
14
|
-
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
15
|
-
const file = sourceFiles[index];
|
|
16
|
-
if (!supportsTsNocheckAudit(file.extension)) {
|
|
17
|
-
emitRuleChunk(progress, index + 1, candidates.length);
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
21
|
-
if (findLeadingTsNocheckLine(text)) {
|
|
22
|
-
candidates.push({ file, text });
|
|
23
|
-
}
|
|
24
|
-
emitRuleChunk(progress, index + 1, candidates.length);
|
|
25
|
-
}
|
|
26
|
-
if (candidates.length === 0) {
|
|
27
|
-
emitRuleCompleted(progress, 0);
|
|
28
|
-
return [];
|
|
29
|
-
}
|
|
30
|
-
const tsconfigPath = resolveTsconfigPath(options.projectRoot, options.rules.tsNocheckAudit?.tsconfigPath);
|
|
31
|
-
const program = await buildStrippedProgram({
|
|
32
|
-
tsconfigPath,
|
|
33
|
-
candidates: candidates.map(({ file, text }) => ({ absolutePath: file.absolutePath, text })),
|
|
34
|
-
});
|
|
35
|
-
const unnecessary = [];
|
|
36
|
-
for (const candidate of candidates) {
|
|
37
|
-
const diagnosticCount = getSemanticDiagnosticCount(program, candidate.file.absolutePath);
|
|
38
|
-
if (diagnosticCount !== 0)
|
|
39
|
-
continue;
|
|
40
|
-
const { text: strippedText, removed } = removeLeadingTsNocheckLine(candidate.text);
|
|
41
|
-
if (!removed)
|
|
42
|
-
continue;
|
|
43
|
-
unnecessary.push({ file: candidate.file, strippedText });
|
|
44
|
-
}
|
|
45
|
-
emitRuleCompleted(progress, unnecessary.length);
|
|
46
|
-
return unnecessary;
|
|
47
|
-
}
|
|
48
|
-
function createTsNocheckAuditViolation(file) {
|
|
49
|
-
return {
|
|
50
|
-
rule: "ts-nocheck-audit",
|
|
51
|
-
fix: true,
|
|
52
|
-
filePath: file.relativeFromProjectRoot,
|
|
53
|
-
message: "@ts-nocheck is unnecessary — no diagnostics are reported without it",
|
|
54
|
-
details: {
|
|
55
|
-
diagnosticCount: 0,
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
async function collectTsNocheckAuditViolations(sourceFiles, options) {
|
|
60
|
-
const unnecessary = await findUnnecessaryPragmaFiles(sourceFiles, options, "scan");
|
|
61
|
-
return unnecessary.map(({ file }) => createTsNocheckAuditViolation(file));
|
|
62
|
-
}
|
|
63
|
-
async function fixTsNocheckAuditRule(sourceFiles, options) {
|
|
64
|
-
const unnecessary = await findUnnecessaryPragmaFiles(sourceFiles, options, "fix");
|
|
65
|
-
for (const { file, strippedText } of unnecessary) {
|
|
66
|
-
await fs.writeFile(file.absolutePath, strippedText, "utf8");
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
ok: true,
|
|
70
|
-
violationCount: 0,
|
|
71
|
-
violations: [],
|
|
72
|
-
rewritten_files: unnecessary.length,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
export { collectTsNocheckAuditViolations, fixTsNocheckAuditRule };
|
|
76
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/checks/rules/ts-nocheck-audit/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type PragmaLineRange = {
|
|
2
|
-
start: number;
|
|
3
|
-
end: number;
|
|
4
|
-
};
|
|
5
|
-
declare function findLeadingTsNocheckLine(text: string): PragmaLineRange | null;
|
|
6
|
-
declare function removeLeadingTsNocheckLine(text: string): {
|
|
7
|
-
text: string;
|
|
8
|
-
removed: boolean;
|
|
9
|
-
};
|
|
10
|
-
export { findLeadingTsNocheckLine, removeLeadingTsNocheckLine };
|
|
11
|
-
export type { PragmaLineRange };
|
|
12
|
-
//# sourceMappingURL=pragma.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pragma.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/ts-nocheck-audit/pragma.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,iBAAS,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA0BtE;AAED,iBAAS,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAQpF;AAED,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
const TS_NOCHECK_LINE_PATTERN = /^\/\/\s*@ts-nocheck(?:\s.*)?$/;
|
|
2
|
-
function findLeadingTsNocheckLine(text) {
|
|
3
|
-
let cursor = 0;
|
|
4
|
-
if (text.startsWith("#!")) {
|
|
5
|
-
const shebangEnd = text.indexOf("\n");
|
|
6
|
-
cursor = shebangEnd === -1 ? text.length : shebangEnd + 1;
|
|
7
|
-
}
|
|
8
|
-
while (cursor < text.length) {
|
|
9
|
-
const newlineIndex = text.indexOf("\n", cursor);
|
|
10
|
-
const lineEnd = newlineIndex === -1 ? text.length : newlineIndex;
|
|
11
|
-
const line = text.slice(cursor, lineEnd);
|
|
12
|
-
if (line.trim() === "") {
|
|
13
|
-
cursor = newlineIndex === -1 ? text.length : newlineIndex + 1;
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
if (TS_NOCHECK_LINE_PATTERN.test(line.trim())) {
|
|
17
|
-
return { start: cursor, end: newlineIndex === -1 ? text.length : newlineIndex + 1 };
|
|
18
|
-
}
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
function removeLeadingTsNocheckLine(text) {
|
|
24
|
-
const range = findLeadingTsNocheckLine(text);
|
|
25
|
-
if (!range)
|
|
26
|
-
return { text, removed: false };
|
|
27
|
-
return {
|
|
28
|
-
text: text.slice(0, range.start) + text.slice(range.end),
|
|
29
|
-
removed: true,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
export { findLeadingTsNocheckLine, removeLeadingTsNocheckLine };
|
|
33
|
-
//# sourceMappingURL=pragma.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pragma.js","sourceRoot":"","sources":["../../../../src/checks/rules/ts-nocheck-audit/pragma.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAOhE,SAAS,wBAAwB,CAAC,IAAY;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QACtF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAE5C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import ts from "typescript";
|
|
2
|
-
import { resolveTsconfigPath } from "../../../runtime/tsconfig-paths.js";
|
|
3
|
-
type StrippedProgramCandidate = {
|
|
4
|
-
absolutePath: string;
|
|
5
|
-
text: string;
|
|
6
|
-
};
|
|
7
|
-
declare function buildStrippedProgram(args: {
|
|
8
|
-
tsconfigPath: string;
|
|
9
|
-
candidates: StrippedProgramCandidate[];
|
|
10
|
-
}): Promise<ts.Program>;
|
|
11
|
-
declare function getSemanticDiagnosticCount(program: ts.Program, absolutePath: string): number;
|
|
12
|
-
export { buildStrippedProgram, getSemanticDiagnosticCount, resolveTsconfigPath };
|
|
13
|
-
export type { StrippedProgramCandidate };
|
|
14
|
-
//# sourceMappingURL=program.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/ts-nocheck-audit/program.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAKzE,KAAK,wBAAwB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAqBF,iBAAe,oBAAoB,CAAC,IAAI,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CA2BtB;AAED,iBAAS,0BAA0B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,CAAC;AACjF,YAAY,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import ts from "typescript";
|
|
3
|
-
import { resolveScriptKind } from "../../../imports/module-specifiers.js";
|
|
4
|
-
import { resolveTsconfigPath } from "../../../runtime/tsconfig-paths.js";
|
|
5
|
-
import { InvalidTsconfigPathError } from "../../../shared/errors.js";
|
|
6
|
-
import { pathExists } from "../../../shared/utils.js";
|
|
7
|
-
import { removeLeadingTsNocheckLine } from "./pragma.js";
|
|
8
|
-
function createStrippedCompilerHost(compilerOptions, strippedTextByPath) {
|
|
9
|
-
const host = ts.createCompilerHost(compilerOptions, true);
|
|
10
|
-
const originalGetSourceFile = host.getSourceFile.bind(host);
|
|
11
|
-
host.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
|
|
12
|
-
const overrideText = strippedTextByPath.get(path.resolve(fileName));
|
|
13
|
-
if (overrideText === undefined) {
|
|
14
|
-
return originalGetSourceFile(fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile);
|
|
15
|
-
}
|
|
16
|
-
return ts.createSourceFile(fileName, overrideText, languageVersionOrOptions, true, resolveScriptKind(fileName));
|
|
17
|
-
};
|
|
18
|
-
return host;
|
|
19
|
-
}
|
|
20
|
-
async function buildStrippedProgram(args) {
|
|
21
|
-
if (!await pathExists(args.tsconfigPath)) {
|
|
22
|
-
throw new InvalidTsconfigPathError(args.tsconfigPath);
|
|
23
|
-
}
|
|
24
|
-
const configFile = ts.readConfigFile(args.tsconfigPath, ts.sys.readFile);
|
|
25
|
-
if (configFile.error) {
|
|
26
|
-
throw new InvalidTsconfigPathError(args.tsconfigPath);
|
|
27
|
-
}
|
|
28
|
-
const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(args.tsconfigPath));
|
|
29
|
-
const strippedTextByPath = new Map();
|
|
30
|
-
for (const candidate of args.candidates) {
|
|
31
|
-
const stripped = removeLeadingTsNocheckLine(candidate.text);
|
|
32
|
-
if (stripped.removed) {
|
|
33
|
-
strippedTextByPath.set(path.resolve(candidate.absolutePath), stripped.text);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const rootNames = Array.from(new Set([
|
|
37
|
-
...parsed.fileNames,
|
|
38
|
-
...args.candidates.map((candidate) => path.resolve(candidate.absolutePath)),
|
|
39
|
-
]));
|
|
40
|
-
const host = createStrippedCompilerHost(parsed.options, strippedTextByPath);
|
|
41
|
-
return ts.createProgram({ rootNames, options: parsed.options, host });
|
|
42
|
-
}
|
|
43
|
-
function getSemanticDiagnosticCount(program, absolutePath) {
|
|
44
|
-
const sourceFile = program.getSourceFile(path.resolve(absolutePath));
|
|
45
|
-
if (!sourceFile)
|
|
46
|
-
return -1;
|
|
47
|
-
return program.getSemanticDiagnostics(sourceFile).length;
|
|
48
|
-
}
|
|
49
|
-
export { buildStrippedProgram, getSemanticDiagnosticCount, resolveTsconfigPath };
|
|
50
|
-
//# sourceMappingURL=program.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../../src/checks/rules/ts-nocheck-audit/program.ts"],"names":[],"mappings":"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"}
|