From 512d047e417192b0d7d93ba8a0638d73d23d89e2 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 30 Sep 2022 06:47:52 +0200 Subject: [PATCH] fix(eslint): prepare for Rollup 3 BREAKING CHANGES: Requires Node 14 --- packages/eslint/README.md | 4 + packages/eslint/package.json | 44 +++++----- packages/eslint/rollup.config.js | 13 --- packages/eslint/rollup.config.mjs | 7 ++ packages/eslint/src/index.ts | 2 +- .../eslint/test/node_modules/current-package | 1 + packages/eslint/test/{test.js => test.mjs} | 25 +++++- pnpm-lock.yaml | 85 +++++++++++++------ tsconfig.base.json | 2 +- 9 files changed, 122 insertions(+), 61 deletions(-) delete mode 100755 packages/eslint/rollup.config.js create mode 100755 packages/eslint/rollup.config.mjs create mode 120000 packages/eslint/test/node_modules/current-package rename packages/eslint/test/{test.js => test.mjs} (85%) diff --git a/packages/eslint/README.md b/packages/eslint/README.md index e7e07c227..4d0af9b83 100755 --- a/packages/eslint/README.md +++ b/packages/eslint/README.md @@ -11,6 +11,10 @@ 🍣 A Rollup plugin to lint entry points and all imported files with ESLint. +## Requirements + +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v1.20.0+. + ## Install Using npm: diff --git a/packages/eslint/package.json b/packages/eslint/package.json index 151a6ba3f..8c417ab1b 100755 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -13,10 +13,15 @@ "author": "Bogdan Chadkin ", "homepage": "https://github.com/rollup/plugins/tree/master/packages/eslint#readme", "bugs": "https://github.com/rollup/plugins/issues", - "main": "dist/index.js", - "module": "dist/index.es.js", + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + "import": "./dist/es/index.js", + "types": "./types/index.d.ts", + "default": "./dist/cjs/index.js" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14.0.0" }, "scripts": { "build": "rollup -c", @@ -34,6 +39,7 @@ }, "files": [ "dist", + "!dist/**/*.map", "types", "README.md", "LICENSE" @@ -48,30 +54,26 @@ "lint" ], "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } }, "dependencies": { - "@rollup/pluginutils": "^4.0.0", - "eslint": "^7.12.0" + "@rollup/pluginutils": "^4.2.1", + "eslint": "^7.32.0" }, "devDependencies": { - "@rollup/plugin-node-resolve": "^9.0.0", - "@rollup/plugin-typescript": "^6.0.0", - "@types/eslint": "^7.2.2", - "rollup": "^2.67.3", - "typescript": "^4.1.2" + "@rollup/plugin-node-resolve": "^14.1.0", + "@rollup/plugin-typescript": "^8.5.0", + "@types/eslint": "^7.29.0", + "rollup": "^3.0.0-7", + "typescript": "^4.8.3" }, - "types": "types/index.d.ts", + "types": "./types/index.d.ts", "ava": { - "babel": { - "compileEnhancements": false - }, - "extensions": [ - "ts" - ], - "require": [ - "ts-node/register" - ], "files": [ "!**/fixtures/**", "!**/helpers/**", diff --git a/packages/eslint/rollup.config.js b/packages/eslint/rollup.config.js deleted file mode 100755 index 955a47adf..000000000 --- a/packages/eslint/rollup.config.js +++ /dev/null @@ -1,13 +0,0 @@ -import typescript from '@rollup/plugin-typescript'; - -import pkg from './package.json'; - -export default { - input: 'src/index.ts', - external: [...Object.keys(pkg.dependencies), 'path'], - output: [ - { file: pkg.main, format: 'cjs', exports: 'auto' }, - { file: pkg.module, format: 'es' } - ], - plugins: [typescript({ sourceMap: false })] -}; diff --git a/packages/eslint/rollup.config.mjs b/packages/eslint/rollup.config.mjs new file mode 100755 index 000000000..2a28aaaf6 --- /dev/null +++ b/packages/eslint/rollup.config.mjs @@ -0,0 +1,7 @@ +import { readFileSync } from 'fs'; + +import { createConfig } from '../../shared/rollup.config.mjs'; + +export default createConfig({ + pkg: JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8')) +}); diff --git a/packages/eslint/src/index.ts b/packages/eslint/src/index.ts index b727b50dc..76ced51bc 100755 --- a/packages/eslint/src/index.ts +++ b/packages/eslint/src/index.ts @@ -4,7 +4,7 @@ import { Plugin } from 'rollup'; import { createFilter } from '@rollup/pluginutils'; import { CLIEngine } from 'eslint'; -import { RollupEslintOptions } from '../types'; +import type { RollupEslintOptions } from '../types'; function normalizePath(id: string) { return path.relative(process.cwd(), id).split(path.sep).join('/'); diff --git a/packages/eslint/test/node_modules/current-package b/packages/eslint/test/node_modules/current-package new file mode 120000 index 000000000..c25bddb6d --- /dev/null +++ b/packages/eslint/test/node_modules/current-package @@ -0,0 +1 @@ +../.. \ No newline at end of file diff --git a/packages/eslint/test/test.js b/packages/eslint/test/test.mjs similarity index 85% rename from packages/eslint/test/test.js rename to packages/eslint/test/test.mjs index 0f8303736..0eb254a62 100755 --- a/packages/eslint/test/test.js +++ b/packages/eslint/test/test.mjs @@ -1,10 +1,12 @@ import fs from 'fs'; +import { createRequire } from 'module'; + import test from 'ava'; import nodeResolve from '@rollup/plugin-node-resolve'; import { rollup } from 'rollup'; -import eslint from '../dist'; +import eslint from 'current-package'; test('should lint files', async (t) => { let count = 0; @@ -181,3 +183,24 @@ test('should fix source code', async (t) => { fs.unlinkSync('./test/fixtures/fixable-clone.js'); }); + +test('works with cjs plugin', async (t) => { + const require = createRequire(import.meta.url); + const eslintPluginCjs = require('current-package'); + let count = 0; + await rollup({ + input: './test/fixtures/undeclared.js', + plugins: [ + eslintPluginCjs({ + formatter: (results) => { + count += results[0].messages.length; + // eslint-disable-next-line prefer-destructuring + const { message } = results[0].messages[0]; + t.is(message, "'x' is not defined."); + } + }) + ] + }); + + t.is(count, 1); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0cb40dad..f6728de7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -254,21 +254,21 @@ importers: packages/eslint: specifiers: - '@rollup/plugin-node-resolve': ^9.0.0 - '@rollup/plugin-typescript': ^6.0.0 - '@rollup/pluginutils': ^4.0.0 - '@types/eslint': ^7.2.2 - eslint: ^7.12.0 - rollup: ^2.67.3 - typescript: ^4.1.2 + '@rollup/plugin-node-resolve': ^14.1.0 + '@rollup/plugin-typescript': ^8.5.0 + '@rollup/pluginutils': ^4.2.1 + '@types/eslint': ^7.29.0 + eslint: ^7.32.0 + rollup: ^3.0.0-7 + typescript: ^4.8.3 dependencies: '@rollup/pluginutils': 4.2.1 eslint: 7.32.0 devDependencies: - '@rollup/plugin-node-resolve': 9.0.0_rollup@2.79.1 - '@rollup/plugin-typescript': 6.1.0_5q64ijqsuisqe52alrh6v6njki + '@rollup/plugin-node-resolve': 14.1.0_rollup@3.0.0-7 + '@rollup/plugin-typescript': 8.5.0_vmpcm5aav5u37diqfc6pdubvhq '@types/eslint': 7.29.0 - rollup: 2.79.1 + rollup: 3.0.0-7 typescript: 4.8.3 packages/graphql: @@ -2128,47 +2128,47 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-node-resolve/8.4.0_rollup@2.67.3: - resolution: {integrity: sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==} - engines: {node: '>= 8.0.0'} + /@rollup/plugin-node-resolve/14.1.0_rollup@3.0.0-7: + resolution: {integrity: sha512-5G2niJroNCz/1zqwXtk0t9+twOSDlG00k1Wfd7bkbbXmwg8H8dvgHdIWAun53Ps/rckfvOC7scDBjuGFg5OaWw==} + engines: {node: '>= 10.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0 + rollup: ^2.78.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.67.3 + '@rollup/pluginutils': 3.1.0_rollup@3.0.0-7 '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deep-freeze: 0.0.1 deepmerge: 4.2.2 + is-builtin-module: 3.2.0 is-module: 1.0.0 resolve: 1.22.1 - rollup: 2.67.3 + rollup: 3.0.0-7 dev: true - /@rollup/plugin-node-resolve/8.4.0_rollup@2.79.1: + /@rollup/plugin-node-resolve/8.4.0_rollup@2.67.3: resolution: {integrity: sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0_rollup@2.67.3 '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deep-freeze: 0.0.1 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.1 - rollup: 2.79.1 + rollup: 2.67.3 dev: true - /@rollup/plugin-node-resolve/9.0.0_rollup@2.79.1: - resolution: {integrity: sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==} - engines: {node: '>= 10.0.0'} + /@rollup/plugin-node-resolve/8.4.0_rollup@2.79.1: + resolution: {integrity: sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==} + engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 '@types/resolve': 1.17.1 builtin-modules: 3.3.0 + deep-freeze: 0.0.1 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.1 @@ -2247,6 +2247,23 @@ packages: typescript: 4.8.3 dev: true + /@rollup/plugin-typescript/8.5.0_vmpcm5aav5u37diqfc6pdubvhq: + resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} + engines: {node: '>=8.0.0'} + peerDependencies: + rollup: ^2.14.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@3.0.0-7 + resolve: 1.22.1 + rollup: 3.0.0-7 + typescript: 4.8.3 + dev: true + /@rollup/plugin-virtual/2.1.0_rollup@2.79.1: resolution: {integrity: sha512-CPPAtlKT53HFqC8jFHb/V5WErpU8Hrq2TyCR0A7kPQMlF2wNUf0o1xuAc+Qxj8NCZM0Z3Yvl+FbUXfJjVWqDwA==} engines: {node: '>=8.0.0'} @@ -2290,6 +2307,18 @@ packages: picomatch: 2.3.1 rollup: 2.79.1 + /@rollup/pluginutils/3.1.0_rollup@3.0.0-7: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 3.0.0-7 + dev: true + /@rollup/pluginutils/4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -7162,6 +7191,14 @@ packages: optionalDependencies: fsevents: 2.3.2 + /rollup/3.0.0-7: + resolution: {integrity: sha512-Hq5hpq9IrR4YfGd4o4zDtsfZnkwoCpjrQ4ZQIZrVF4ryzW6FOgXKBm6N7vJfodIJ6v+51FsqsXD2bxW5wapiuA==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: diff --git a/tsconfig.base.json b/tsconfig.base.json index 63da44c4e..a198903e5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -12,7 +12,7 @@ "pretty": true, "sourceMap": true, "strict": true, - "target": "es2017" + "target": "es2019" }, "exclude": ["dist", "node_modules", "test/types"] }