Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop support for Node.js v12 #1803

Merged
merged 4 commits into from
May 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 10 additions & 12 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,50 +10,48 @@ jobs:
fail-fast: false
matrix:
node-version:
- 18
- 16
- 14
- 12
os:
- ubuntu-latest
- windows-latest
exclude:
- os: ubuntu-latest
node-version: 16
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npx ava
lint-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm install
- run: npm run lint
# Force update snapshots, https://github.com/avajs/ava/discussions/2754
- run: npx c8 ava --update-snapshots
env:
AVA_FORCE_CI: not-ci
- run: git diff --exit-code
- uses: codecov/codecov-action@v1
- uses: codecov/codecov-action@v2
with:
fail_ci_if_error: true
run-rules-on-codebase:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm install
- run: npm run run-rules-on-codebase
integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm install
- run: npm run integration
6 changes: 2 additions & 4 deletions .github/workflows/smoke-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 16
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: |
npm install
npm link
Expand Down
3 changes: 1 addition & 2 deletions configs/recommended.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,7 @@ module.exports = {
'unicorn/prefer-string-trim-start-end': 'error',
'unicorn/prefer-switch': 'error',
'unicorn/prefer-ternary': 'error',
// TODO: Enable this by default when targeting Node.js 14.
'unicorn/prefer-top-level-await': 'off',
'unicorn/prefer-top-level-await': 'error',
'unicorn/prefer-type-error': 'error',
'unicorn/prevent-abbreviations': 'error',
'unicorn/relative-url-style': 'error',
Expand Down
2 changes: 2 additions & 0 deletions docs/rules/prefer-top-level-await.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

<!-- Do not manually modify RULE_NOTICE part. Run: `npm run generate-rule-notices` -->
<!-- RULE_NOTICE -->
✅ *This rule is part of the [recommended](https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config) config.*

💡 *This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).*
<!-- /RULE_NOTICE -->

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"url": "https://sindresorhus.com"
},
"engines": {
"node": ">=12"
"node": ">=14"
},
"scripts": {
"create-rule": "node ./scripts/create-rule.mjs && npm run generate-rule-notices && npm run generate-rules-table",
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ Each rule has emojis denoting:
| [prefer-string-trim-start-end](docs/rules/prefer-string-trim-start-end.md) | Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. | ✅ | 🔧 | |
| [prefer-switch](docs/rules/prefer-switch.md) | Prefer `switch` over multiple `else-if`. | ✅ | 🔧 | |
| [prefer-ternary](docs/rules/prefer-ternary.md) | Prefer ternary expressions over simple `if-else` statements. | ✅ | 🔧 | |
| [prefer-top-level-await](docs/rules/prefer-top-level-await.md) | Prefer top-level await over top-level promises and async function calls. | | | 💡 |
| [prefer-top-level-await](docs/rules/prefer-top-level-await.md) | Prefer top-level await over top-level promises and async function calls. | | | 💡 |
| [prefer-type-error](docs/rules/prefer-type-error.md) | Enforce throwing `TypeError` in type checking conditions. | ✅ | 🔧 | |
| [prevent-abbreviations](docs/rules/prevent-abbreviations.md) | Prevent abbreviations. | ✅ | 🔧 | |
| [relative-url-style](docs/rules/relative-url-style.md) | Enforce consistent relative URL style. | ✅ | 🔧 | 💡 |
Expand Down
10 changes: 4 additions & 6 deletions scripts/rename-rule.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env node
import process from 'node:process';
import fs, {promises as fsAsync} from 'node:fs';
import enquirer from 'enquirer';
import unicorn from '../index.js';
Expand Down Expand Up @@ -60,7 +59,7 @@ async function renameRule(from, to) {
}
}

(async () => {
const run = async () => {
const originalRuleId = await new enquirer.AutoComplete({
message: 'Select the rule you want rename:',
limit: 10,
Expand All @@ -83,7 +82,6 @@ async function renameRule(from, to) {

checkFiles(ruleId);
renameRule(originalRuleId, ruleId);
})().catch(error => {
console.error(error);
process.exit(1);
});
};

await run();
62 changes: 31 additions & 31 deletions test/integration/test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -148,40 +148,40 @@ const list = new Listr([
renderer: isCI ? 'verbose' : 'default',
});

list.run()
.catch(async error => {
if (error.errors) {
for (const error2 of error.errors) {
console.error('\n', chalk.red.bold.underline(error2.packageName), chalk.gray('(' + error2.cliArgs.join(' ') + ')'));
console.error(error2.message);

if (error2.stderr) {
console.error(chalk.gray(error2.stderr));
}

if (error2.eslintMessage) {
const {file, project, destination} = error2.eslintJob;
const {line} = error2.eslintMessage;
async function logError(error) {
if (error.errors) {
for (const error2 of error.errors) {
console.error('\n', chalk.red.bold.underline(error2.packageName), chalk.gray('(' + error2.cliArgs.join(' ') + ')'));
console.error(error2.message);

if (error2.stderr) {
console.error(chalk.gray(error2.stderr));
}

if (project.repository) {
// eslint-disable-next-line no-await-in-loop
const branch = await getBranch(destination);
console.error(chalk.gray(`${project.repository}/blob/${branch}/${path.relative(destination, file.filePath)}#L${line}`));
} else {
console.error(chalk.gray(`${path.relative(destination, file.filePath)}#L${line}`));
}
if (error2.eslintMessage) {
const {file, project, destination} = error2.eslintJob;
const {line} = error2.eslintMessage;

console.error(chalk.gray(JSON.stringify(error2.eslintMessage, undefined, 2)));
if (project.repository) {
// eslint-disable-next-line no-await-in-loop
const branch = await getBranch(destination);
console.error(chalk.gray(`${project.repository}/blob/${branch}/${path.relative(destination, file.filePath)}#L${line}`));
} else {
console.error(chalk.gray(`${path.relative(destination, file.filePath)}#L${line}`));
}

console.error(chalk.gray(JSON.stringify(error2.eslintMessage, undefined, 2)));
}
} else {
console.error(error);
}

process.exit(1);
})
// Catch errors in last `.catch`
.catch(error => {
} else {
console.error(error);
process.exit(1);
});
}

process.exit(1);
}

try {
await list.run();
} catch (error) {
await logError(error);
}
10 changes: 4 additions & 6 deletions test/run-rules-on-codebase/lint.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ const eslint = new ESLint({
'unicorn/no-unsafe-regex': 'off',
// Not ready yet
'unicorn/prefer-string-replace-all': 'off',
'unicorn/prefer-top-level-await': 'off',
'unicorn/prefer-at': 'off',
// TODO: Turn this on when `xo` updated `eslint-plugin-unicorn`
'unicorn/text-encoding-identifier-case': 'off',
Expand All @@ -52,7 +51,7 @@ const eslint = new ESLint({
const sum = (collection, fieldName) =>
collection.reduce((total, {[fieldName]: value}) => total + value, 0);

(async function () {
async function run() {
const results = await eslint.lintFiles(files);

if (fix) {
Expand Down Expand Up @@ -85,7 +84,6 @@ const sum = (collection, fieldName) =>
}

process.exit(errorCount);
})().catch(error => {
process.exitCode = 1;
console.error(error);
});
}

await run();