Skip to content

Commit b7945eb

Browse files
author
Josh Goldberg
authored
Factor in 'raw' configurations on top of 'reported' ones (#245)
* WIP: Factor in 'raw' configurations on top of 'reported' ones * Added test coverage and finished sorting output keys * Added a bit of JSDoc documentation * Undid annoying src/rules/converters/no-implicit-dependencies.ts Prettier mismatch
1 parent 3351415 commit b7945eb

33 files changed

+773
-209
lines changed

package-lock.json

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"dependencies": {
1010
"chalk": "2.4.2",
1111
"commander": "3.0.2",
12+
"strip-json-comments": "^3.0.1",
1213
"tslint": "5.20.0",
1314
"typescript": "3.6.3"
1415
},

src/adapters/importer.ts renamed to src/adapters/nativeImporter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export type Importer = (moduleName: string) => unknown | Error;
1+
export type NativeImporter = (moduleName: string) => unknown | Error;
22

33
export const nativeImporter = async (moduleName: string) => {
44
try {

src/cli/main.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { EOL } from "os";
22

3-
import { nativeImporter } from "../adapters/importer";
4-
import { processLogger } from "../adapters/processLogger";
53
import { childProcessExec } from "../adapters/childProcessExec";
64
import { fsFileSystem } from "../adapters/fsFileSystem";
5+
import { nativeImporter } from "../adapters/nativeImporter";
6+
import { processLogger } from "../adapters/processLogger";
77
import { bind } from "../binding";
88
import { ConvertConfigDependencies, convertConfig } from "../conversion/convertConfig";
99
import { removeExtendsDuplicatedRules } from "../creation/simplification/removeExtendsDuplicatedRules";
@@ -27,6 +27,7 @@ import { findPackagesConfiguration } from "../input/findPackagesConfiguration";
2727
import { findESLintConfiguration } from "../input/findESLintConfiguration";
2828
import { findTSLintConfiguration } from "../input/findTSLintConfiguration";
2929
import { findTypeScriptConfiguration } from "../input/findTypeScriptConfiguration";
30+
import { importer, ImporterDependencies } from "../input/importer";
3031
import { mergeLintConfigurations } from "../input/mergeLintConfigurations";
3132
import {
3233
reportConversionResults,
@@ -42,8 +43,17 @@ const convertRulesDependencies = {
4243
mergers,
4344
};
4445

46+
const nativeImporterDependencies: ImporterDependencies = {
47+
fileSystem: fsFileSystem,
48+
getCwd: () => process.cwd(),
49+
nativeImporter: nativeImporter,
50+
};
51+
52+
const boundImporter = bind(importer, nativeImporterDependencies);
53+
4554
const findConfigurationDependencies = {
4655
exec: childProcessExec,
56+
importer: boundImporter,
4757
};
4858

4959
const findOriginalConfigurationsDependencies: FindOriginalConfigurationsDependencies = {
@@ -59,7 +69,7 @@ const reportConversionResultsDependencies: ReportConversionResultsDependencies =
5969
};
6070

6171
const retrieveExtendsValuesDependencies: RetrieveExtendsValuesDependencies = {
62-
importer: nativeImporter,
72+
importer: boundImporter,
6373
};
6474

6575
const simplifyPackageRulesDependencies: SimplifyPackageRulesDependencies = {

src/conversion/convertConfig.test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ const createStubDependencies = (
2121

2222
const createStubOriginalConfigurationsData = () => ({
2323
tslint: {
24-
rules: [],
25-
rulesDirectory: [],
24+
full: {
25+
rules: [],
26+
rulesDirectory: [],
27+
},
28+
raw: {},
2629
},
2730
});
2831

src/conversion/convertConfig.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export const convertConfig = async (
3030

3131
// 2. TSLint rules are converted into their ESLint configurations
3232
const ruleConversionResults = dependencies.convertRules(
33-
originalConfigurations.data.tslint.rules,
33+
originalConfigurations.data.tslint.full.rules,
3434
);
3535

3636
// 3. ESLint configurations are simplified based on extended ESLint presets

src/creation/eslint/createEnv.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { OriginalConfigurations } from "../../input/findOriginalConfigurations";
1+
import { AllOriginalConfigurations } from "../../input/findOriginalConfigurations";
22

33
export const createEnv = ({
44
packages,
55
typescript,
6-
}: Pick<OriginalConfigurations, "packages" | "typescript">) => {
6+
}: Pick<AllOriginalConfigurations, "packages" | "typescript">) => {
77
const browser =
88
typescript === undefined ||
99
typescript.compilerOptions.lib === undefined ||
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import { EOL } from "os";
22

3-
export const formatJsOutput = (configuration: unknown) =>
4-
`module.exports = ${JSON.stringify(configuration, undefined, 4)};${EOL}`;
3+
import { withKeysSorted } from "./withKeysSorted";
4+
5+
export const formatJsOutput = (configuration: any) => {
6+
return `module.exports = ${JSON.stringify(withKeysSorted(configuration), undefined, 4)};${EOL}`;
7+
};
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import { EOL } from "os";
22

3-
export const formatJsonOutput = (configuration: unknown) =>
4-
`${JSON.stringify(configuration, undefined, 4)}${EOL}`;
3+
import { withKeysSorted } from "./withKeysSorted";
4+
5+
export const formatJsonOutput = (configuration: any) => {
6+
return `${JSON.stringify(withKeysSorted(configuration), undefined, 4)}${EOL}`;
7+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const withKeysSorted = (input: any) => {
2+
return Object.fromEntries(
3+
Object.keys(input)
4+
.sort((a, b) => a.localeCompare(b))
5+
.map(key => [key, input[key]]),
6+
);
7+
};

0 commit comments

Comments
 (0)