ts-reconf 0.4.7 → 0.4.8

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.
@@ -0,0 +1,109 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { isolatedDeclarationsCheckRule } from '../../rules/isolatedDeclarationsCheck.js';
3
+ describe('isolatedDeclarationsCheck', () => {
4
+ it('should return no findings when neither isolatedDeclarations nor isolatedModules is set', () => {
5
+ const config = {
6
+ compilerOptions: {},
7
+ rawConfig: {},
8
+ };
9
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
10
+ expect(findings).toHaveLength(0);
11
+ });
12
+ it('should return no findings when both isolatedDeclarations and isolatedModules are set', () => {
13
+ const config = {
14
+ compilerOptions: {
15
+ isolatedDeclarations: true,
16
+ isolatedModules: true,
17
+ },
18
+ rawConfig: {},
19
+ };
20
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
21
+ expect(findings).toHaveLength(0);
22
+ });
23
+ it('should warn when isolatedDeclarations is true but isolatedModules is false', () => {
24
+ const config = {
25
+ compilerOptions: {
26
+ isolatedDeclarations: true,
27
+ isolatedModules: false,
28
+ },
29
+ rawConfig: {},
30
+ };
31
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
32
+ expect(findings).toHaveLength(1);
33
+ expect(findings[0]?.severity).toBe('warn');
34
+ expect(findings[0]?.category).toBe('suggestion');
35
+ });
36
+ it('should warn when isolatedDeclarations is true but isolatedModules is not set', () => {
37
+ const config = {
38
+ compilerOptions: {
39
+ isolatedDeclarations: true,
40
+ },
41
+ rawConfig: {},
42
+ };
43
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
44
+ expect(findings).toHaveLength(1);
45
+ expect(findings[0]?.severity).toBe('warn');
46
+ });
47
+ it('should mention both options in the warning message', () => {
48
+ const config = {
49
+ compilerOptions: {
50
+ isolatedDeclarations: true,
51
+ },
52
+ rawConfig: {},
53
+ };
54
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
55
+ expect(findings[0]?.message).toContain('isolatedDeclarations');
56
+ expect(findings[0]?.message).toContain('isolatedModules');
57
+ });
58
+ it('should explain the complementary nature of the options', () => {
59
+ const config = {
60
+ compilerOptions: {
61
+ isolatedDeclarations: true,
62
+ },
63
+ rawConfig: {},
64
+ };
65
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
66
+ expect(findings[0]?.message).toContain('type safety');
67
+ expect(findings[0]?.message).toContain('transpilation safety');
68
+ });
69
+ it('should have correct rule id', () => {
70
+ const config = {
71
+ compilerOptions: {
72
+ isolatedDeclarations: true,
73
+ },
74
+ rawConfig: {},
75
+ };
76
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
77
+ expect(findings[0]?.ruleId).toBe('ts.isolatedDeclarations.check');
78
+ });
79
+ it('should return no findings when isolatedModules is set but isolatedDeclarations is not', () => {
80
+ const config = {
81
+ compilerOptions: {
82
+ isolatedModules: true,
83
+ },
84
+ rawConfig: {},
85
+ };
86
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
87
+ expect(findings).toHaveLength(0);
88
+ });
89
+ it('should handle undefined compilerOptions gracefully', () => {
90
+ const config = {
91
+ compilerOptions: undefined,
92
+ rawConfig: {},
93
+ };
94
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
95
+ expect(findings).toHaveLength(0);
96
+ });
97
+ it('should return no findings when isolatedDeclarations is false', () => {
98
+ const config = {
99
+ compilerOptions: {
100
+ isolatedDeclarations: false,
101
+ isolatedModules: false,
102
+ },
103
+ rawConfig: {},
104
+ };
105
+ const findings = isolatedDeclarationsCheckRule.analyze(config);
106
+ expect(findings).toHaveLength(0);
107
+ });
108
+ });
109
+ //# sourceMappingURL=isolatedDeclarationsCheck.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolatedDeclarationsCheck.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/isolatedDeclarationsCheck.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAGzF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QAChG,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,IAAI;gBAC1B,eAAe,EAAE,IAAI;aACtB;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,IAAI;gBAC1B,eAAe,EAAE,KAAK;aACvB;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,IAAI;aAC3B;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,IAAI;aAC3B;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,IAAI;aAC3B;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,IAAI;aAC3B;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,eAAe,EAAE,IAAI;aACtB;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE,SAAgB;YACjC,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAoB;YAC9B,eAAe,EAAE;gBACf,oBAAoB,EAAE,KAAK;gBAC3B,eAAe,EAAE,KAAK;aACvB;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/analyzer.js CHANGED
@@ -1,4 +1,4 @@
1
- import { legacyOptionRule, strictRedundantRule, skipLibCheckRule, defaultRedundantRule, targetLibConflictRule, moduleKindCheckRule, allowJsCheckRule, noEmitOutDirCheckRule, noIncludeOrFilesCheckRule, moduleResolutionMismatchRule, declarationNoEmitCheckRule, verbatimModuleIsolatedModulesRule, verbatimModuleSyntaxCheckRule, allowSyntheticDefaultImportsRule, noUncheckedIndexedAccessRule, forceConsistentCasingInFileNamesRule, moduleResolutionOutdatedRule, emitDeclarationOnlyRule, legacyJsxTransformCheckRule, declarationMapCheckRule, pathsWithoutBaseUrlRule, outDirRootDirConflictRule, noEmitConflictRule, incrementalWithNoEmitConflictRule, resolveJsonModuleCheckRule, sourcemapConflictRule, } 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, declarationMapCheckRule, pathsWithoutBaseUrlRule, outDirRootDirConflictRule, noEmitConflictRule, incrementalWithNoEmitConflictRule, resolveJsonModuleCheckRule, sourcemapConflictRule, isolatedDeclarationsCheckRule, } from "./rules/index.js";
2
2
  const rules = [
3
3
  legacyOptionRule,
4
4
  strictRedundantRule,
@@ -26,6 +26,7 @@ const rules = [
26
26
  incrementalWithNoEmitConflictRule,
27
27
  resolveJsonModuleCheckRule,
28
28
  sourcemapConflictRule,
29
+ isolatedDeclarationsCheckRule,
29
30
  ];
30
31
  export function analyze(config) {
31
32
  return rules.flatMap(rule => rule.analyze(config));
@@ -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,EACjC,6BAA6B,EAC7B,gCAAgC,EAChC,4BAA4B,EAC5B,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,iCAAiC,EACjC,0BAA0B,EAC1B,qBAAqB,GACxB,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;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,kBAAkB;IAClB,iCAAiC;IACjC,0BAA0B;IAC1B,qBAAqB;CACxB,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"}
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,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,iCAAiC,EACjC,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,GAChC,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;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,kBAAkB;IAClB,iCAAiC;IACjC,0BAA0B;IAC1B,qBAAqB;IACrB,6BAA6B;CAChC,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"}
@@ -24,3 +24,4 @@ export { outDirRootDirConflictRule } from "./outDirRootDirConflict.js";
24
24
  export { incrementalWithNoEmitConflictRule } from "./incrementalWithNoEmitConflict.js";
25
25
  export { resolveJsonModuleCheckRule } from "./resolveJsonModuleCheck.js";
26
26
  export { sourcemapConflictRule } from "./sourcemapConflictRule.js";
27
+ export { isolatedDeclarationsCheckRule } from "./isolatedDeclarationsCheck.js";
@@ -24,4 +24,5 @@ export { outDirRootDirConflictRule } from "./outDirRootDirConflict.js";
24
24
  export { incrementalWithNoEmitConflictRule } from "./incrementalWithNoEmitConflict.js";
25
25
  export { resolveJsonModuleCheckRule } from "./resolveJsonModuleCheck.js";
26
26
  export { sourcemapConflictRule } from "./sourcemapConflictRule.js";
27
+ export { isolatedDeclarationsCheckRule } from "./isolatedDeclarationsCheck.js";
27
28
  //# sourceMappingURL=index.js.map
@@ -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;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;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,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;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Rule } from "../types.js";
2
+ /**
3
+ * Checks for incomplete isolated declarations configuration:
4
+ * - Warns if isolatedDeclarations is enabled without isolatedModules
5
+ * - Explains the complementary nature of these options
6
+ *
7
+ * isolatedDeclarations: Ensures each .ts file can be type-checked independently
8
+ * isolatedModules: Ensures each file can be safely transpiled independently
9
+ *
10
+ * These options serve different purposes but are complementary:
11
+ * - isolatedDeclarations catches type safety issues (explicit annotations)
12
+ * - isolatedModules prevents transpilation errors (runtime safety)
13
+ *
14
+ * Both should be enabled together for maximum safety.
15
+ */
16
+ export declare const isolatedDeclarationsCheckRule: Rule;
@@ -0,0 +1,35 @@
1
+ const ruleId = "ts.isolatedDeclarations.check";
2
+ /**
3
+ * Checks for incomplete isolated declarations configuration:
4
+ * - Warns if isolatedDeclarations is enabled without isolatedModules
5
+ * - Explains the complementary nature of these options
6
+ *
7
+ * isolatedDeclarations: Ensures each .ts file can be type-checked independently
8
+ * isolatedModules: Ensures each file can be safely transpiled independently
9
+ *
10
+ * These options serve different purposes but are complementary:
11
+ * - isolatedDeclarations catches type safety issues (explicit annotations)
12
+ * - isolatedModules prevents transpilation errors (runtime safety)
13
+ *
14
+ * Both should be enabled together for maximum safety.
15
+ */
16
+ export const isolatedDeclarationsCheckRule = {
17
+ id: ruleId,
18
+ analyze(config) {
19
+ const options = config.compilerOptions ?? {};
20
+ const isolatedDeclarations = options.isolatedDeclarations;
21
+ const isolatedModules = options.isolatedModules;
22
+ const findings = [];
23
+ // Check if isolatedDeclarations is enabled without isolatedModules
24
+ if (isolatedDeclarations && !isolatedModules) {
25
+ findings.push({
26
+ ruleId: ruleId,
27
+ severity: "warn",
28
+ message: `"isolatedDeclarations" is enabled but "isolatedModules" is not. These options are complementary and should be used together: "isolatedDeclarations" ensures each file's declarations are explicit (type safety), while "isolatedModules" ensures each file can be transpiled independently (transpilation safety). Consider enabling both for maximum safety.`,
29
+ category: "suggestion"
30
+ });
31
+ }
32
+ return findings;
33
+ }
34
+ };
35
+ //# sourceMappingURL=isolatedDeclarationsCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolatedDeclarationsCheck.js","sourceRoot":"","sources":["../../src/rules/isolatedDeclarationsCheck.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAS;IAC/C,EAAE,EAAE,MAAM;IAEV,OAAO,CAAC,MAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAC7C,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAC1D,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAEhD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,mEAAmE;QACnE,IAAI,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,+VAA+V;gBACxW,QAAQ,EAAE,YAAY;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-reconf",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Understand and simplify (re-conf) your tsconfig.json",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -41,9 +41,9 @@
41
41
  "typescript": "6.0.3"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/node": "26.2.0",
45
- "@vitest/coverage-v8": "4.1.10",
46
- "tsx": "4.23.12",
47
- "vitest": "4.1.10"
44
+ "@types/node": "26.5.1",
45
+ "@vitest/coverage-v8": "5.0.1",
46
+ "tsx": "4.23.13",
47
+ "vitest": "5.0.1"
48
48
  }
49
49
  }