From 0a8b8c3a0c2e574820eb886f6b0f636870de71e3 Mon Sep 17 00:00:00 2001 From: Andrew Boyton Date: Tue, 22 Jan 2019 08:55:16 +1100 Subject: [PATCH] chore: convert some requires to import statements This doesn't turn it on everywhere as doing so made some of the tests to fail. --- .eslintrc.json | 7 ++++++- packages/eslint-plugin/tools/update-recommended.js | 12 ++++++------ packages/parser/src/parser.ts | 7 +++---- packages/typescript-estree/src/parser.ts | 13 ++++++------- .../typescript-estree/tests/ast-alignment/parse.ts | 3 ++- tests/integration/utils/generate-package-json.js | 12 ++++++------ tsconfig.json | 1 + 7 files changed, 30 insertions(+), 25 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index f44790c843c8..ec77ac5ab4ac 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -15,7 +15,6 @@ "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/explicit-member-accessibility": "off", - "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/no-object-literal-type-assertion": "off", "@typescript-eslint/no-parameter-properties": "off" @@ -27,6 +26,12 @@ } }, "overrides": [ + { + "files": ["packages/eslint-plugin/**/*.js"], + "rules": { + "@typescript-eslint/no-var-requires": "off" + } + }, { "files": [ "packages/eslint-plugin-tslint/**/*.ts", diff --git a/packages/eslint-plugin/tools/update-recommended.js b/packages/eslint-plugin/tools/update-recommended.js index ce402c3933be..7c472c8d4b8e 100644 --- a/packages/eslint-plugin/tools/update-recommended.js +++ b/packages/eslint-plugin/tools/update-recommended.js @@ -1,9 +1,9 @@ /* eslint-disable no-console */ 'use strict'; -const path = require('path'); -const fs = require('fs'); -const requireIndex = require('requireindex'); +import { resolve } from 'path'; +import { writeFileSync } from 'fs'; +import requireIndex from 'requireindex'; const bannedRecommendedRules = new Set([ 'camelcase', @@ -19,7 +19,7 @@ const MAX_RULE_NAME_LENGTH = 32 + 'typescript/'.length; */ function generate() { // replace this with Object.entries when node > 8 - const allRules = requireIndex(path.resolve(__dirname, '../lib/rules')); + const allRules = requireIndex(resolve(__dirname, '../lib/rules')); const rules = Object.keys(allRules) .filter(key => !!allRules[key].meta.docs.recommended) @@ -46,7 +46,7 @@ function generate() { return config; }, {}); - const filePath = path.resolve(__dirname, '../lib/configs/recommended.json'); + const filePath = resolve(__dirname, '../lib/configs/recommended.json'); const recommendedConfig = { parser: '@typescript-eslint/parser', @@ -57,7 +57,7 @@ function generate() { rules }; - fs.writeFileSync(filePath, `${JSON.stringify(recommendedConfig, null, 4)}\n`); + writeFileSync(filePath, `${JSON.stringify(recommendedConfig, null, 4)}\n`); } generate(); diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index 2dd32b383625..e36a0e73e2bb 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -1,15 +1,14 @@ -import traverser from 'eslint/lib/util/traverser'; import { AST_NODE_TYPES, parseAndGenerateServices, ParserOptions as ParserOptionsTsESTree } from '@typescript-eslint/typescript-estree'; +import traverser from 'eslint/lib/util/traverser'; +import { Program } from 'typescript'; +import packageJSON from '../package.json'; import { analyzeScope } from './analyze-scope'; import { ParserOptions } from './parser-options'; import { visitorKeys } from './visitor-keys'; -import { Program } from 'typescript'; - -const packageJSON = require('../package.json'); interface ParserServices { program: Program | undefined; diff --git a/packages/typescript-estree/src/parser.ts b/packages/typescript-estree/src/parser.ts index 2f6347e0a7a2..54cc66a5d96c 100644 --- a/packages/typescript-estree/src/parser.ts +++ b/packages/typescript-estree/src/parser.ts @@ -5,25 +5,24 @@ * @copyright jQuery Foundation and other contributors, https://jquery.org/ * MIT License */ -import { - calculateProjectParserOptions, - createProgram -} from './tsconfig-parser'; import semver from 'semver'; import ts from 'typescript'; +import packageJSON from '../package.json'; import convert from './ast-converter'; import { convertError } from './convert'; import { Program } from './estree/spec'; import { firstDefined } from './node-utils'; +import { getFirstSemanticOrSyntacticError } from './semantic-errors'; import { ESTreeComment, ESTreeToken, Extra, ParserOptions } from './temp-types-based-on-js-source'; -import { getFirstSemanticOrSyntacticError } from './semantic-errors'; - -const packageJSON = require('../package.json'); +import { + calculateProjectParserOptions, + createProgram +} from './tsconfig-parser'; const SUPPORTED_TYPESCRIPT_VERSIONS = packageJSON.devDependencies.typescript; const ACTIVE_TYPESCRIPT_VERSION = ts.version; diff --git a/packages/typescript-estree/tests/ast-alignment/parse.ts b/packages/typescript-estree/tests/ast-alignment/parse.ts index ec6123c03995..e3e61dd3ec47 100644 --- a/packages/typescript-estree/tests/ast-alignment/parse.ts +++ b/packages/typescript-estree/tests/ast-alignment/parse.ts @@ -1,7 +1,7 @@ +import { ParserPlugin } from '@babel/parser'; import codeFrame from 'babel-code-frame'; import * as parser from '../../src/parser'; import * as parseUtils from './utils'; -import { ParserPlugin } from '@babel/parser'; function createError(message: string, line: number, column: number) { // Construct an error similar to the ones thrown by Babylon. @@ -14,6 +14,7 @@ function createError(message: string, line: number, column: number) { } function parseWithBabelParser(text: string, jsx: boolean = true) { + // eslint-disable-next-line @typescript-eslint/no-var-requires const babel = require('@babel/parser'); const plugins: ParserPlugin[] = [ 'typescript', diff --git a/tests/integration/utils/generate-package-json.js b/tests/integration/utils/generate-package-json.js index 1f08f53b1ea5..7608d8bca327 100644 --- a/tests/integration/utils/generate-package-json.js +++ b/tests/integration/utils/generate-package-json.js @@ -1,5 +1,5 @@ -const fs = require('fs'); -const rootPackageJSON = require('/usr/root-package.json'); +import { writeFileSync } from 'fs'; +import { devDependencies } from '/usr/root-package.json'; /** * Apply package versions based on what they are currently set to in the root package.json @@ -8,9 +8,9 @@ const rootPackageJSON = require('/usr/root-package.json'); const testPackageJSON = { private: true, devDependencies: { - eslint: rootPackageJSON.devDependencies.eslint, - typescript: rootPackageJSON.devDependencies.typescript, - tslint: rootPackageJSON.devDependencies.tslint, + eslint: devDependencies.eslint, + typescript: devDependencies.typescript, + tslint: devDependencies.tslint, /** * TEMP: Bump jest to ahead of our stable usage in the monorepo, * we need the bleeding edge snapshotResolver option @@ -20,4 +20,4 @@ const testPackageJSON = { } }; -fs.writeFileSync('/usr/package.json', JSON.stringify(testPackageJSON, null, 2)); +writeFileSync('/usr/package.json', JSON.stringify(testPackageJSON, null, 2)); diff --git a/tsconfig.json b/tsconfig.json index 568b3c81592a..47d7e99c80f6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "target": "es2017", "module": "commonjs", "moduleResolution": "node", + "resolveJsonModule": true, "esModuleInterop": true, "strict": true }