diff --git a/npm/eslint-plugin-dev/lib/custom-rules/no-only.js b/npm/eslint-plugin-dev/lib/custom-rules/no-only.js index 3f15e67ffc0d..f4fba53f4280 100644 --- a/npm/eslint-plugin-dev/lib/custom-rules/no-only.js +++ b/npm/eslint-plugin-dev/lib/custom-rules/no-only.js @@ -1,4 +1,7 @@ -const eslint = require('eslint') +// @see https://github.com/eslint/eslint/blob/v8.57.0/lib/shared/ast-utils.js#L12 +// This value is not exported anywhere, but hasn't changed in almost a decade. +// we can directly reference the pattern here +const lineBreakPattern = /\r\n|[\r\n\u2028\u2029]/u module.exports = { meta: { @@ -19,7 +22,7 @@ module.exports = { const sourceCode = context.getSourceCode() function getPropertyText (node) { - const lines = sourceCode.getText(node).split(eslint.astUtils.LINEBREAK_MATCHER) + const lines = sourceCode.getText(node).split(lineBreakPattern) return lines[0] } diff --git a/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js b/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js index 65376d70b095..6698ab68db40 100644 --- a/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js +++ b/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js @@ -1,47 +1,44 @@ const path = require('path') -const CLIEngine = require('eslint').CLIEngine -const plugin = require('..') +const eslint = require('eslint') +const plugin = require('../lib') const _ = require('lodash') const { expect } = require('chai') const pluginName = '__plugin__' +const ESLint = eslint.ESLint -function execute (file, options = {}) { - const opts = _.defaultsDeep(options, { +async function execute (file, options = {}) { + const defaultConfig = { fix: true, - config: { + ignore: false, + useEslintrc: false, + baseConfig: { parserOptions: { ecmaVersion: 2018, sourceType: 'module', }, + rules: { + [`${pluginName}/arrow-body-multiline-braces`]: ['error', 'always'], + }, + plugins: [pluginName], }, - - }) - - const cli = new CLIEngine({ - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/arrow-body-multiline-braces`]: ['error', 'always'], + plugins: { + [pluginName]: plugin, }, - ...opts, - ignore: false, - useEslintrc: false, - plugins: [pluginName], - }) + } + const opts = _.defaultsDeep(options, defaultConfig) + + const cli = new ESLint(opts) - cli.addPlugin(pluginName, plugin) - const results = cli.executeOnFiles([path.join(__dirname, file)]).results[0] + const results = await cli.lintFiles([path.join(__dirname, file)]) - return results + return results[0] } describe('arrow-body-multiline-braces', () => { it('lint multiline js', async () => { const filename = './fixtures/multiline.js' - const result = execute(filename, { + const result = await execute(filename, { fix: true, }) @@ -50,7 +47,7 @@ describe('arrow-body-multiline-braces', () => { it('lint oneline js', async () => { const filename = './fixtures/oneline.js' - const result = execute(filename, { fix: false }) + const result = await execute(filename, { fix: false }) expect(result.output).not.ok expect(result.errorCount).eq(0) diff --git a/npm/eslint-plugin-dev/test/no-only.spec.js b/npm/eslint-plugin-dev/test/no-only.spec.js index 99f7604fae55..8162bf14886d 100644 --- a/npm/eslint-plugin-dev/test/no-only.spec.js +++ b/npm/eslint-plugin-dev/test/no-only.spec.js @@ -1,47 +1,45 @@ const path = require('path') -const CLIEngine = require('eslint').CLIEngine +const eslint = require('eslint') const plugin = require('..') const _ = require('lodash') const { expect } = require('chai') const ruleName = 'no-only' const pluginName = '__plugin__' +const ESLint = eslint.ESLint -function execute (file, options = {}) { - const opts = _.defaultsDeep(options, { +async function execute (file, options = {}) { + const defaultConfig = { fix: true, - config: { + ignore: false, + useEslintrc: false, + baseConfig: { parserOptions: { ecmaVersion: 2018, sourceType: 'module', }, + rules: { + [`${pluginName}/${ruleName}`]: ['error'], + }, + plugins: [pluginName], }, - }) - - const cli = new CLIEngine({ - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/${ruleName}`]: ['error'], + plugins: { + [pluginName]: plugin, }, - ...opts, - ignore: false, - useEslintrc: false, - plugins: [pluginName], - }) + } + const opts = _.defaultsDeep(options, defaultConfig) + + const cli = new ESLint(opts) - cli.addPlugin(pluginName, plugin) - const results = cli.executeOnFiles([path.join(__dirname, file)]).results[0] + const results = await cli.lintFiles([path.join(__dirname, file)]) - return results + return results[0] } describe('no-only', () => { it('lint js with only', async () => { const filename = './fixtures/with-only.js' - const result = execute(filename, { + const result = await execute(filename, { fix: true, }) diff --git a/npm/eslint-plugin-dev/test/no-return-before.spec.js b/npm/eslint-plugin-dev/test/no-return-before.spec.js index 0f57aaf3a764..e53b67d1798f 100644 --- a/npm/eslint-plugin-dev/test/no-return-before.spec.js +++ b/npm/eslint-plugin-dev/test/no-return-before.spec.js @@ -1,5 +1,5 @@ const path = require('path') -const CLIEngine = require('eslint').CLIEngine +const eslint = require('eslint') const plugin = require('..') const _ = require('lodash') const { stripIndent } = require('common-tags') @@ -7,50 +7,47 @@ const { expect } = require('chai') const ruleName = 'no-return-before' const pluginName = '__plugin__' +const ESLint = eslint.ESLint -function execute (file, options = {}) { - const opts = _.defaultsDeep(options, { +async function execute (file, options = {}) { + const defaultConfig = { fix: true, - config: { + ignore: false, + useEslintrc: false, + baseConfig: { parserOptions: { ecmaVersion: 2018, sourceType: 'module', }, + rules: { + [`${pluginName}/${ruleName}`]: ['error'], + }, + plugins: [pluginName], }, - }) - - const cli = new CLIEngine({ - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/${ruleName}`]: ['error'], + plugins: { + [pluginName]: plugin, }, - ...opts, - ignore: false, - useEslintrc: false, - plugins: [pluginName], + } + const opts = _.defaultsDeep(options, defaultConfig) - }) + const cli = new ESLint(opts) - cli.addPlugin(pluginName, plugin) - const results = cli.executeOnFiles([path.join(__dirname, file)]).results[0] + const results = await cli.lintFiles([path.join(__dirname, file)]) - return results + return results[0] } describe(ruleName, () => { it('pass', async () => { const filename = './fixtures/no-return-before-pass.js' - const result = execute(filename) + const result = await execute(filename) expect(result.errorCount).equal(0) }) it('fail', async () => { const filename = './fixtures/no-return-before-fail.js' - const result = execute(filename, { + const result = await execute(filename, { fix: false, }) @@ -60,7 +57,7 @@ describe(ruleName, () => { it('fix fail', async () => { const filename = './fixtures/no-return-before-fail.js' - const result = execute(filename) + const result = await execute(filename) expect(result.output).equal(`${stripIndent` describe('outer', ()=>{ @@ -79,14 +76,16 @@ describe(ruleName, () => { describe('config', () => { it('config [tokens]', async () => { const filename = './fixtures/no-return-before-fail.js' - const result = execute(filename, { + const result = await execute(filename, { fix: false, - rules: { - [`${pluginName}/${ruleName}`]: [ - 'error', { - tokens: ['someFn'], - }, - ], + baseConfig: { + rules: { + [`${pluginName}/${ruleName}`]: [ + 'error', { + tokens: ['someFn'], + }, + ], + }, }, }) diff --git a/npm/eslint-plugin-dev/test/skip-comment.spec.js b/npm/eslint-plugin-dev/test/skip-comment.spec.js index 8e960b2a1487..10b7008787e2 100644 --- a/npm/eslint-plugin-dev/test/skip-comment.spec.js +++ b/npm/eslint-plugin-dev/test/skip-comment.spec.js @@ -1,47 +1,45 @@ const path = require('path') -const CLIEngine = require('eslint').CLIEngine +const eslint = require('eslint') const plugin = require('..') const _ = require('lodash') const { expect } = require('chai') const ruleName = 'skip-comment' const pluginName = '__plugin__' +const ESLint = eslint.ESLint -function execute (file, options = {}) { - const opts = _.defaultsDeep(options, { +async function execute (file, options = {}) { + const defaultConfig = { fix: true, - config: { + ignore: false, + useEslintrc: false, + baseConfig: { parserOptions: { ecmaVersion: 2018, sourceType: 'module', }, + rules: { + [`${pluginName}/${ruleName}`]: ['error'], + }, + plugins: [pluginName], }, - }) - - const cli = new CLIEngine({ - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/${ruleName}`]: ['error'], + plugins: { + [pluginName]: plugin, }, - ...opts, - ignore: false, - useEslintrc: false, - plugins: [pluginName], - }) + } + const opts = _.defaultsDeep(options, defaultConfig) + + const cli = new ESLint(opts) - cli.addPlugin(pluginName, plugin) - const results = cli.executeOnFiles([path.join(__dirname, file)]).results[0] + const results = await cli.lintFiles([path.join(__dirname, file)]) - return results + return results[0] } describe('skip-comment', () => { it('skip test with comment', async () => { const filename = './fixtures/skip-comment-pass.js' - const result = execute(filename, { + const result = await execute(filename, { fix: true, }) @@ -50,7 +48,7 @@ describe('skip-comment', () => { it('skip test without comment', async () => { const filename = './fixtures/skip-comment-fail.js' - const result = execute(filename, { + const result = await execute(filename, { fix: true, }) @@ -70,14 +68,16 @@ describe('skip-comment', () => { describe('config', () => { it('skip test without comment', async () => { const filename = './fixtures/skip-comment-config.js' - const result = execute(filename, { + const result = await execute(filename, { fix: true, - rules: { - [`${pluginName}/${ruleName}`]: [ - 'error', { - commentTokens: ['FOOBAR:'], - }, - ], + baseConfig: { + rules: { + [`${pluginName}/${ruleName}`]: [ + 'error', { + commentTokens: ['FOOBAR:'], + }, + ], + }, }, }) diff --git a/packages/frontend-shared/.eslintignore b/packages/frontend-shared/.eslintignore index b0a6abfe91d1..834baf23d66a 100644 --- a/packages/frontend-shared/.eslintignore +++ b/packages/frontend-shared/.eslintignore @@ -1,3 +1,4 @@ **/dist **/*.d.ts **/cypress/fixtures +**/generated \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index f55baf500c67..dbc42d0a3879 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1682,13 +1682,14 @@ "@babel/types" "^7.23.0" "@babel/highlight@^7.22.13", "@babel/highlight@^7.8.3": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== dependencies: "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" + picocolors "^1.0.0" "@babel/parser@7.13.0": version "7.13.0" @@ -13496,9 +13497,9 @@ deep-extend@^0.6.0: integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" @@ -14635,7 +14636,15 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0, enha graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.6, enquirer@~2.3.6: +enquirer@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -27388,9 +27397,9 @@ semver-regex@^3.1.2: integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== "semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@5.5.0: version "5.5.0"