ts-reconf 0.2.0 → 0.4.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/dist/analyzer.js +8 -1
- package/dist/analyzer.js.map +1 -1
- package/dist/cli.js +23 -2
- package/dist/cli.js.map +1 -1
- package/dist/loadTsConfig.js.map +1 -1
- package/dist/reporter.d.ts +1 -1
- package/dist/reporter.js +2 -2
- package/dist/reporter.js.map +1 -1
- package/dist/rules/allowSyntheticDefaultImportsCheck.d.ts +2 -0
- package/dist/rules/allowSyntheticDefaultImportsCheck.js +18 -0
- package/dist/rules/allowSyntheticDefaultImportsCheck.js.map +1 -0
- package/dist/rules/emitDeclarationOnly.d.ts +2 -0
- package/dist/rules/emitDeclarationOnly.js +19 -0
- package/dist/rules/emitDeclarationOnly.js.map +1 -0
- package/dist/rules/forceConsistentCasing.d.ts +2 -0
- package/dist/rules/forceConsistentCasing.js +18 -0
- package/dist/rules/forceConsistentCasing.js.map +1 -0
- package/dist/rules/index.d.ts +7 -0
- package/dist/rules/index.js +7 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/legacyJsxTransformCheck.d.ts +2 -0
- package/dist/rules/legacyJsxTransformCheck.js +19 -0
- package/dist/rules/legacyJsxTransformCheck.js.map +1 -0
- package/dist/rules/moduleResolutionMismatch.js +1 -1
- package/dist/rules/moduleResolutionMismatch.js.map +1 -1
- package/dist/rules/moduleResolutionOutdated.d.ts +2 -0
- package/dist/rules/moduleResolutionOutdated.js +20 -0
- package/dist/rules/moduleResolutionOutdated.js.map +1 -0
- package/dist/rules/moduleTypeCheck.js +3 -2
- package/dist/rules/moduleTypeCheck.js.map +1 -1
- package/dist/rules/moduleVerbatimModuleSyntaxCheck.d.ts +2 -0
- package/dist/rules/moduleVerbatimModuleSyntaxCheck.js +19 -0
- package/dist/rules/moduleVerbatimModuleSyntaxCheck.js.map +1 -0
- package/dist/rules/noUncheckedIndexedAccessCheck.d.ts +2 -0
- package/dist/rules/noUncheckedIndexedAccessCheck.js +18 -0
- package/dist/rules/noUncheckedIndexedAccessCheck.js.map +1 -0
- package/dist/rules/skipLibCheckExplain.d.ts +1 -1
- package/dist/rules/strictRedundant.d.ts +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +3 -3
package/dist/analyzer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { legacyOptionRule, strictRedundantRule, skipLibCheckRule, defaultRedundantRule, targetLibConflictRule, moduleKindCheckRule, allowJsCheckRule, noEmitOutDirCheckRule, noIncludeOrFilesCheckRule, moduleResolutionMismatchRule, declarationNoEmitCheckRule, verbatimModuleIsolatedModulesRule, } from "./rules/index.js";
|
|
1
|
+
import { legacyOptionRule, strictRedundantRule, skipLibCheckRule, defaultRedundantRule, targetLibConflictRule, moduleKindCheckRule, allowJsCheckRule, noEmitOutDirCheckRule, noIncludeOrFilesCheckRule, moduleResolutionMismatchRule, declarationNoEmitCheckRule, verbatimModuleIsolatedModulesRule, verbatimModuleSyntaxCheckRule, allowSyntheticDefaultImportsRule, noUncheckedIndexedAccessRule, forceConsistentCasingInFileNamesRule, moduleResolutionOutdatedRule, emitDeclarationOnlyRule, legacyJsxTransformCheckRule, } from "./rules/index.js";
|
|
2
2
|
const rules = [
|
|
3
3
|
legacyOptionRule,
|
|
4
4
|
strictRedundantRule,
|
|
@@ -12,6 +12,13 @@ const rules = [
|
|
|
12
12
|
moduleResolutionMismatchRule,
|
|
13
13
|
declarationNoEmitCheckRule,
|
|
14
14
|
verbatimModuleIsolatedModulesRule,
|
|
15
|
+
verbatimModuleSyntaxCheckRule,
|
|
16
|
+
allowSyntheticDefaultImportsRule,
|
|
17
|
+
noUncheckedIndexedAccessRule,
|
|
18
|
+
forceConsistentCasingInFileNamesRule,
|
|
19
|
+
moduleResolutionOutdatedRule,
|
|
20
|
+
emitDeclarationOnlyRule,
|
|
21
|
+
legacyJsxTransformCheckRule,
|
|
15
22
|
];
|
|
16
23
|
export function analyze(config) {
|
|
17
24
|
return rules.flatMap(rule => rule.analyze(config));
|
package/dist/analyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,iCAAiC,
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,iCAAiC,EACjC,6BAA6B,EAC7B,gCAAgC,EAChC,4BAA4B,EAC5B,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,KAAK,GAAW;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,qBAAqB;IACrB,yBAAyB;IACzB,4BAA4B;IAC5B,0BAA0B;IAC1B,iCAAiC;IACjC,6BAA6B;IAC7B,gCAAgC;IAChC,4BAA4B;IAC5B,oCAAoC;IACpC,4BAA4B;IAC5B,uBAAuB;IACvB,2BAA2B;CAC9B,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,MAAuB;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -9,11 +9,32 @@ if (command !== "analyze" && fileArg) {
|
|
|
9
9
|
}
|
|
10
10
|
const file = fileArg ?? (command?.endsWith(".json") ? command : undefined) ?? "tsconfig.json";
|
|
11
11
|
try {
|
|
12
|
+
// --version or -v
|
|
13
|
+
if (process.argv.includes("--version") || process.argv.includes("-v")) {
|
|
14
|
+
const pkg = await import("../package.json", {
|
|
15
|
+
with: { type: "json" }
|
|
16
|
+
});
|
|
17
|
+
console.log(`ts-reconf version ${pkg.default.version}`);
|
|
18
|
+
process.exit(0);
|
|
19
|
+
}
|
|
20
|
+
// --help or -h
|
|
21
|
+
if (process.argv.includes("--help") || process.argv.includes("-h")) {
|
|
22
|
+
console.log("Usage: ts-reconf analyze [tsconfig.json]");
|
|
23
|
+
console.log("Options:");
|
|
24
|
+
console.log(" --help, -h Show help");
|
|
25
|
+
console.log(" --version, -v Show version");
|
|
26
|
+
console.log(" --output-markdown, -o-md Specify output format (pretty (default) or markdown)");
|
|
27
|
+
process.exit(0);
|
|
28
|
+
}
|
|
12
29
|
const config = loadTsConfig(file);
|
|
13
30
|
const findings = analyze(config);
|
|
14
|
-
|
|
15
|
-
const
|
|
31
|
+
// `--output-pretty` (default) or `--output-markdown`
|
|
32
|
+
const compactOutput = process.argv.includes("--output-markdown") || process.argv.includes("-o-md");
|
|
33
|
+
const report = compactOutput ? toMarkdown(findings, file) : toPrettyOutput(findings, file);
|
|
16
34
|
console.log(report);
|
|
35
|
+
if (findings.some(f => f.severity === "error")) {
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
17
38
|
}
|
|
18
39
|
catch (err) {
|
|
19
40
|
if (err instanceof Error) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE5C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC;AAE9F,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/loadTsConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadTsConfig.js","sourceRoot":"","sources":["../src/loadTsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"loadTsConfig.js","sourceRoot":"","sources":["../src/loadTsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC7C,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACX,EAAE,CAAC,4BAA4B,CAC3B,UAAU,CAAC,KAAK,CAAC,WAAW,EAC5B,IAAI,CACP,CACJ,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,EAAE,CAAC,0BAA0B,CAChD,UAAU,CAAC,MAAM,EACjB,EAAE,CAAC,GAAG,EACN,SAAS,CACZ,CAAC;IAEF,OAAO;QACH,eAAe,EAAE,cAAc,CAAC,OAAO;QACvC,SAAS,EAAE,UAAU,CAAC,MAAM;KAC/B,CAAC;AACN,CAAC"}
|
package/dist/reporter.d.ts
CHANGED
package/dist/reporter.js
CHANGED
|
@@ -12,11 +12,11 @@ export function toMarkdown(findings, file) {
|
|
|
12
12
|
}
|
|
13
13
|
function groupByCategory(findings) {
|
|
14
14
|
const groups = {};
|
|
15
|
-
for (const finding of findings) {
|
|
15
|
+
for (const finding of findings.sort((a, b) => a.category.localeCompare(b.category))) {
|
|
16
16
|
if (!groups[finding.category]) {
|
|
17
17
|
groups[finding.category] = [];
|
|
18
18
|
}
|
|
19
|
-
groups[finding.category]
|
|
19
|
+
groups[finding.category]?.push(finding);
|
|
20
20
|
}
|
|
21
21
|
return groups;
|
|
22
22
|
}
|
package/dist/reporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,uCAAuC,CAAC;AAEpE,MAAM,UAAU,UAAU,CAAC,QAAmB,EAAE,IAAa;IACzD,MAAM,KAAK,GAAG,CAAC,4BAA4B,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,QAAmB;IACxC,MAAM,MAAM,GAA8B,EAAE,CAAC;IAE7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,uCAAuC,CAAC;AAEpE,MAAM,UAAU,UAAU,CAAC,QAAmB,EAAE,IAAa;IACzD,MAAM,KAAK,GAAG,CAAC,4BAA4B,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,QAAmB;IACxC,MAAM,MAAM,GAA8B,EAAE,CAAC;IAE7C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAmB,EAAE,IAAa;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,IAAI,eAAe,KAAK,CAAC,CAAC;IAExE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEzC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GACP,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAChC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const ruleId = "ts.allowSyntheticDefaultImports.check";
|
|
2
|
+
export const allowSyntheticDefaultImportsRule = {
|
|
3
|
+
id: ruleId,
|
|
4
|
+
analyze(config) {
|
|
5
|
+
const compilerOptions = config.compilerOptions ?? {};
|
|
6
|
+
const findings = [];
|
|
7
|
+
if (compilerOptions.allowSyntheticDefaultImports && compilerOptions.esModuleInterop) {
|
|
8
|
+
findings.push({
|
|
9
|
+
ruleId: ruleId,
|
|
10
|
+
severity: "info",
|
|
11
|
+
message: `"allowSyntheticDefaultImports" is unnecessary "esModuleInterop" already enables this behavior.`,
|
|
12
|
+
category: "redundant"
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return findings;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=allowSyntheticDefaultImportsCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowSyntheticDefaultImportsCheck.js","sourceRoot":"","sources":["../../src/rules/allowSyntheticDefaultImportsCheck.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,uCAAuC,CAAC;AAEvD,MAAM,CAAC,MAAM,gCAAgC,GAAS;IAClD,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,eAAe,CAAC,4BAA4B,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;YAClF,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,gGAAgG;gBACzG,QAAQ,EAAE,WAAW;aACxB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const ruleId = "ts.emitDeclarationOnly.noDeclaration";
|
|
2
|
+
export const emitDeclarationOnlyRule = {
|
|
3
|
+
id: ruleId,
|
|
4
|
+
analyze(config) {
|
|
5
|
+
const options = config.compilerOptions ?? {};
|
|
6
|
+
const emitDeclarationOnly = options.emitDeclarationOnly;
|
|
7
|
+
const findings = [];
|
|
8
|
+
if (emitDeclarationOnly && !options.declaration && !options.composite) {
|
|
9
|
+
findings.push({
|
|
10
|
+
ruleId: ruleId,
|
|
11
|
+
category: "conflict",
|
|
12
|
+
severity: "warn",
|
|
13
|
+
message: `"emitDeclarationOnly" is enabled but "declaration" (or "composite") is not. TypeScript requires declaration generation to be enabled for emitDeclarationOnly to work. Either enable "declaration": true or remove "emitDeclarationOnly".`
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return findings;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=emitDeclarationOnly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitDeclarationOnly.js","sourceRoot":"","sources":["../../src/rules/emitDeclarationOnly.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,sCAAsC,CAAC;AAEtD,MAAM,CAAC,MAAM,uBAAuB,GAAS;IACzC,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACxD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,mBAAmB,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,0OAA0O;aACtP,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const ruleId = "ts.forceConsistentCasingInFileNames.missing";
|
|
2
|
+
export const forceConsistentCasingInFileNamesRule = {
|
|
3
|
+
id: ruleId,
|
|
4
|
+
analyze(config) {
|
|
5
|
+
const compilerOptions = config.compilerOptions ?? {};
|
|
6
|
+
const findings = [];
|
|
7
|
+
if (!compilerOptions.forceConsistentCasingInFileNames && !compilerOptions.strict) {
|
|
8
|
+
findings.push({
|
|
9
|
+
ruleId: ruleId,
|
|
10
|
+
severity: "warn",
|
|
11
|
+
message: `"forceConsistentCasingInFileNames" is not enabled (and "strict" is not set). Consider enabling it to catch cross-platform casing issues early.`,
|
|
12
|
+
category: "suggestion"
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return findings;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=forceConsistentCasing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forceConsistentCasing.js","sourceRoot":"","sources":["../../src/rules/forceConsistentCasing.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,6CAA6C,CAAC;AAE7D,MAAM,CAAC,MAAM,oCAAoC,GAAS;IACtD,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,CAAC,gCAAgC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC/E,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,gJAAgJ;gBACzJ,QAAQ,EAAE,YAAY;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CAEJ,CAAA"}
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -10,3 +10,10 @@ export { noIncludeOrFilesCheckRule } from "./noIncludeOrFiles.js";
|
|
|
10
10
|
export { moduleResolutionMismatchRule } from "./moduleResolutionMismatch.js";
|
|
11
11
|
export { declarationNoEmitCheckRule } from "./declarationNoEmit.js";
|
|
12
12
|
export { verbatimModuleIsolatedModulesRule } from "./verbatimModuleIsolatedModules.js";
|
|
13
|
+
export { verbatimModuleSyntaxCheckRule } from "./moduleVerbatimModuleSyntaxCheck.js";
|
|
14
|
+
export { allowSyntheticDefaultImportsRule } from "./allowSyntheticDefaultImportsCheck.js";
|
|
15
|
+
export { noUncheckedIndexedAccessRule } from "./noUncheckedIndexedAccessCheck.js";
|
|
16
|
+
export { forceConsistentCasingInFileNamesRule } from "./forceConsistentCasing.js";
|
|
17
|
+
export { moduleResolutionOutdatedRule } from "./moduleResolutionOutdated.js";
|
|
18
|
+
export { emitDeclarationOnlyRule } from "./emitDeclarationOnly.js";
|
|
19
|
+
export { legacyJsxTransformCheckRule } from "./legacyJsxTransformCheck.js";
|
package/dist/rules/index.js
CHANGED
|
@@ -10,4 +10,11 @@ export { noIncludeOrFilesCheckRule } from "./noIncludeOrFiles.js";
|
|
|
10
10
|
export { moduleResolutionMismatchRule } from "./moduleResolutionMismatch.js";
|
|
11
11
|
export { declarationNoEmitCheckRule } from "./declarationNoEmit.js";
|
|
12
12
|
export { verbatimModuleIsolatedModulesRule } from "./verbatimModuleIsolatedModules.js";
|
|
13
|
+
export { verbatimModuleSyntaxCheckRule } from "./moduleVerbatimModuleSyntaxCheck.js";
|
|
14
|
+
export { allowSyntheticDefaultImportsRule } from "./allowSyntheticDefaultImportsCheck.js";
|
|
15
|
+
export { noUncheckedIndexedAccessRule } from "./noUncheckedIndexedAccessCheck.js";
|
|
16
|
+
export { forceConsistentCasingInFileNamesRule } from "./forceConsistentCasing.js";
|
|
17
|
+
export { moduleResolutionOutdatedRule } from "./moduleResolutionOutdated.js";
|
|
18
|
+
export { emitDeclarationOnlyRule } from "./emitDeclarationOnly.js";
|
|
19
|
+
export { legacyJsxTransformCheckRule } from "./legacyJsxTransformCheck.js";
|
|
13
20
|
//# sourceMappingURL=index.js.map
|
package/dist/rules/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { JsxEmit } from "typescript";
|
|
2
|
+
const ruleId = "ts.jsx.legacyTransform";
|
|
3
|
+
export const legacyJsxTransformCheckRule = {
|
|
4
|
+
id: ruleId,
|
|
5
|
+
analyze(config) {
|
|
6
|
+
const options = config.compilerOptions ?? {};
|
|
7
|
+
const findings = [];
|
|
8
|
+
if (options.jsx === JsxEmit.React) {
|
|
9
|
+
findings.push({
|
|
10
|
+
ruleId: ruleId,
|
|
11
|
+
category: "suggestion",
|
|
12
|
+
severity: "info",
|
|
13
|
+
message: `"jsx" is set to "react" (legacy transform), which requires \`import React from 'react'\` in every JSX file. Consider switching to "react-jsx" (available since TS 4.1 / React 17). Set "jsx": "react-jsx" for production and "react-jsxdev" for development.`
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return findings;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=legacyJsxTransformCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyJsxTransformCheck.js","sourceRoot":"","sources":["../../src/rules/legacyJsxTransformCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAExC,MAAM,CAAC,MAAM,2BAA2B,GAAS;IAC7C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,8PAA8P;aAC1Q,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -20,7 +20,7 @@ export const moduleResolutionMismatchRule = {
|
|
|
20
20
|
});
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
if (module ===
|
|
23
|
+
if (module === ModuleKind.NodeNext && moduleResolution !== ModuleResolutionKind.NodeNext || module === ModuleKind.Node16 && moduleResolution !== ModuleResolutionKind.Node16) {
|
|
24
24
|
findings.push({
|
|
25
25
|
ruleId: ruleId,
|
|
26
26
|
category: "conflict",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleResolutionMismatch.js","sourceRoot":"","sources":["../../src/rules/moduleResolutionMismatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAE/C,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAC9C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAElD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,SAAS,MAAM,CAAC,QAAgB;YAC5B,MAAM,UAAU,GAAG,UAAU,CAAC,MAAoB,CAAC,CAAC;YAEpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,cAAc,UAAU,4EAA4E,QAAQ,8DAA8D;iBACtL,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,IAAI,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"moduleResolutionMismatch.js","sourceRoot":"","sources":["../../src/rules/moduleResolutionMismatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAE/C,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAC9C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAElD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,SAAS,MAAM,CAAC,QAAgB;YAC5B,MAAM,UAAU,GAAG,UAAU,CAAC,MAAoB,CAAC,CAAC;YAEpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,cAAc,UAAU,4EAA4E,QAAQ,8DAA8D;iBACtL,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,IAAI,MAAM,KAAK,UAAU,CAAC,QAAQ,IAAI,gBAAgB,KAAK,oBAAoB,CAAC,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,gBAAgB,KAAK,oBAAoB,CAAC,MAAM,EAAE,CAAC;gBAC3K,QAAQ,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,cAAc,UAAU,8BAA8B,oBAAoB,CAAC,gBAAgB,CAAC,kCAAkC,QAAQ,iFAAiF;iBACnO,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,oBAAoB;YACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,uKAAuK;iBACnL,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ModuleResolutionKind } from "typescript";
|
|
2
|
+
const ruleId = "ts.moduleResolution.outdated";
|
|
3
|
+
export const moduleResolutionOutdatedRule = {
|
|
4
|
+
id: ruleId,
|
|
5
|
+
analyze(config) {
|
|
6
|
+
const options = config.compilerOptions ?? {};
|
|
7
|
+
const moduleResolution = options.moduleResolution;
|
|
8
|
+
const findings = [];
|
|
9
|
+
if (moduleResolution === ModuleResolutionKind.Node10) {
|
|
10
|
+
findings.push({
|
|
11
|
+
ruleId: ruleId,
|
|
12
|
+
category: "legacy",
|
|
13
|
+
severity: "warn",
|
|
14
|
+
message: `"moduleResolution" is set to "node" (Node10), which is the legacy CommonJS resolution algorithm. It does not support package.json "exports", self-references via "imports", or ESM resolution rules. Consider upgrading to "node16", "nodenext" (for Node.js), or "bundler" (for Vite/Webpack/esbuild).`
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return findings;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=moduleResolutionOutdated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleResolutionOutdated.js","sourceRoot":"","sources":["../../src/rules/moduleResolutionOutdated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,MAAM,GAAG,8BAA8B,CAAC;AAE9C,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAC9C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAE7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAElD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,gBAAgB,KAAK,oBAAoB,CAAC,MAAM,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,ySAAyS;aACrT,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ModuleKind } from "typescript";
|
|
1
2
|
const ruleId = "ts.module.check";
|
|
2
3
|
export const moduleKindCheckRule = {
|
|
3
4
|
id: ruleId,
|
|
@@ -7,8 +8,8 @@ export const moduleKindCheckRule = {
|
|
|
7
8
|
if (!module) {
|
|
8
9
|
return [];
|
|
9
10
|
}
|
|
10
|
-
const isCommonJS = module ===
|
|
11
|
-
const isESM = module
|
|
11
|
+
const isCommonJS = module === ModuleKind.CommonJS;
|
|
12
|
+
const isESM = module >= ModuleKind.ES2015;
|
|
12
13
|
const findings = [];
|
|
13
14
|
if (isCommonJS) {
|
|
14
15
|
findings.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleTypeCheck.js","sourceRoot":"","sources":["../../src/rules/moduleTypeCheck.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"moduleTypeCheck.js","sourceRoot":"","sources":["../../src/rules/moduleTypeCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACrC,EAAE,EAAE,MAAM;IACV,OAAO,CAAC,MAAuB;QAE3B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAEtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,KAAK,UAAU,CAAC,QAAQ,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;QAC1C,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,UAAU,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,yIAAyI;gBAClJ,QAAQ,EAAE,aAAa;aAC1B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ModuleKind } from "typescript";
|
|
2
|
+
const ruleId = "ts.verbatimModuleSyntax.check";
|
|
3
|
+
export const verbatimModuleSyntaxCheckRule = {
|
|
4
|
+
id: ruleId,
|
|
5
|
+
analyze(config) {
|
|
6
|
+
const compilerOptions = config.compilerOptions ?? {};
|
|
7
|
+
const findings = [];
|
|
8
|
+
if (compilerOptions.module && [ModuleKind.NodeNext, ModuleKind.Node16, ModuleKind.ESNext].includes(compilerOptions.module) && !compilerOptions.verbatimModuleSyntax) {
|
|
9
|
+
findings.push({
|
|
10
|
+
ruleId: ruleId,
|
|
11
|
+
severity: "warn",
|
|
12
|
+
message: `The "verbatimModuleSyntax" is not enabled, but the module kind is set to a value that requires it. Modern ESM projects benefit from preserving import/export syntax. This avoids TypeScript rewriting imports unexpectedly. Consider enabling "verbatimModuleSyntax": true.`,
|
|
13
|
+
category: "suggestion"
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return findings;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=moduleVerbatimModuleSyntaxCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleVerbatimModuleSyntaxCheck.js","sourceRoot":"","sources":["../../src/rules/moduleVerbatimModuleSyntaxCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAE/C,MAAM,CAAC,MAAM,6BAA6B,GAAS;IAC/C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAClK,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,6QAA6Q;gBACtR,QAAQ,EAAE,YAAY;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const ruleId = "ts.noUncheckedIndexedAccess.check";
|
|
2
|
+
export const noUncheckedIndexedAccessRule = {
|
|
3
|
+
id: ruleId,
|
|
4
|
+
analyze(config) {
|
|
5
|
+
const compilerOptions = config.compilerOptions ?? {};
|
|
6
|
+
const findings = [];
|
|
7
|
+
if (!compilerOptions.noUncheckedIndexedAccess && compilerOptions.strict) {
|
|
8
|
+
findings.push({
|
|
9
|
+
ruleId: ruleId,
|
|
10
|
+
severity: "info",
|
|
11
|
+
message: `"noUncheckedIndexedAccess" is recommended when "strict" mode is enabled.`,
|
|
12
|
+
category: "suggestion"
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return findings;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=noUncheckedIndexedAccessCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noUncheckedIndexedAccessCheck.js","sourceRoot":"","sources":["../../src/rules/noUncheckedIndexedAccessCheck.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,mCAAmC,CAAC;AAEnD,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAC9C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,CAAC,wBAAwB,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YACtE,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,0EAA0E;gBACnF,QAAQ,EAAE,YAAY;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Rule } from "../types.js";
|
|
1
|
+
import type { Rule } from "../types.js";
|
|
2
2
|
export declare const skipLibCheckRule: Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Rule } from "../types.js";
|
|
1
|
+
import type { Rule } from "../types.js";
|
|
2
2
|
export declare const strictRedundantRule: Rule;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CompilerOptions } from "typescript";
|
|
2
2
|
export type Severity = "info" | "warn" | "error";
|
|
3
|
-
export type Category = "
|
|
3
|
+
export type Category = "conflict" | "legacy" | "redundant" | "suggestion" | "explanation";
|
|
4
4
|
export interface Finding {
|
|
5
5
|
ruleId: string;
|
|
6
6
|
message: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-reconf",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Understand and simplify (re-conf) your tsconfig.json",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"typescript": "6.0.3"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@types/node": "25.
|
|
43
|
-
"tsx": "4.
|
|
42
|
+
"@types/node": "25.9.1",
|
|
43
|
+
"tsx": "4.22.3"
|
|
44
44
|
}
|
|
45
45
|
}
|