Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: eslint-community/eslint-plugin-n
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v17.0.0-4
Choose a base ref
...
head repository: eslint-community/eslint-plugin-n
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v17.0.0-5
Choose a head ref
  • 4 commits
  • 7 files changed
  • 4 contributors

Commits on Mar 10, 2024

  1. fix: explicitly support ESLint 9.0.0 pre-releases (#200)

    Fixes #197 using the solution from eslint-community/eslint-utils#206
    voxpelli authored Mar 10, 2024
    Copy the full SHA
    a5eaa9c View commit details

Commits on Mar 11, 2024

  1. docs: Remove text "Node does not support modules yet" (#202)

    * docs: Node does not support modules yet (no-missing-import) #80
    
    * docs: Node does not support modules yet (no-unpublished-import) #80
    scagood authored Mar 11, 2024
    Copy the full SHA
    5abca5b View commit details

Commits on Mar 19, 2024

  1. Copy the full SHA
    38985ca View commit details
  2. chore(master): release 17.0.0-5 (#201)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Mar 19, 2024
    Copy the full SHA
    8327d11 View commit details
2 changes: 1 addition & 1 deletion .github/release-please/manifest.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{".":"17.0.0-4"}
{".":"17.0.0-5"}
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog

## [17.0.0-5](https://github.com/eslint-community/eslint-plugin-n/compare/v17.0.0-4...v17.0.0-5) (2024-03-19)


### ⚠ BREAKING CHANGES

* prefer-node-prefix: pass moduleName ([#203](https://github.com/eslint-community/eslint-plugin-n/issues/203))

### Features

* prefer-node-prefix: pass moduleName ([#203](https://github.com/eslint-community/eslint-plugin-n/issues/203)) ([38985ca](https://github.com/eslint-community/eslint-plugin-n/commit/38985ca63537cc56ae2476457ec7d5e433bf0a2f))


### Bug Fixes

* explicitly support ESLint 9.0.0 pre-releases ([#200](https://github.com/eslint-community/eslint-plugin-n/issues/200)) ([a5eaa9c](https://github.com/eslint-community/eslint-plugin-n/commit/a5eaa9c867bc2e87b1fa54920c85acd1e8f9f927))


### Documentation

* Remove text "Node does not support modules yet" ([#202](https://github.com/eslint-community/eslint-plugin-n/issues/202)) ([5abca5b](https://github.com/eslint-community/eslint-plugin-n/commit/5abca5bb6f1166045578ba7d51cda36b32cb333b))

## [17.0.0-4](https://github.com/eslint-community/eslint-plugin-n/compare/17.0.0-3...v17.0.0-4) (2024-03-06)


2 changes: 0 additions & 2 deletions docs/rules/no-missing-import.md
Original file line number Diff line number Diff line change
@@ -6,8 +6,6 @@

This is similar to [no-missing-require](no-missing-require.md), but this rule handles `import` and `export` declarations.

⚠️ ECMAScript 2015 (ES6) does not define the lookup logic and Node does not support modules yet. So this rule spec might be changed in future.

## 📖 Rule Details

This rule checks the file paths of `import` and `export` declarations.
2 changes: 0 additions & 2 deletions docs/rules/no-unpublished-import.md
Original file line number Diff line number Diff line change
@@ -6,8 +6,6 @@

This is similar to [no-unpublished-require](no-unpublished-require.md), but this rule handles `import` declarations.

⚠️ ECMAScript 2015 (ES6) does not define the lookup logic and Node does not support modules yet. So this rule spec might be changed in future.

## 📖 Rule Details

If a source code file satisfies all of the following conditions, the file is \*published\*.
3 changes: 3 additions & 0 deletions lib/rules/prefer-node-protocol.js
Original file line number Diff line number Diff line change
@@ -130,6 +130,9 @@ module.exports = {
context.report({
node,
messageId,
data: {
moduleName: value,
},
fix(fixer) {
const firstCharacterIndex = node.range[0] + 1
return fixer.replaceTextRange(
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "eslint-plugin-n",
"version": "17.0.0-4",
"version": "17.0.0-5",
"description": "Additional ESLint's rules for Node.js",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -11,7 +11,7 @@
"configs/"
],
"peerDependencies": {
"eslint": ">=8.23.0"
"eslint": "^8.23.0 || >=9.0.0-0"
},
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
40 changes: 20 additions & 20 deletions tests/lib/rules/prefer-node-protocol.js
Original file line number Diff line number Diff line change
@@ -80,12 +80,12 @@ new RuleTester({
{
code: 'import fs from "fs";',
output: 'import fs from "node:fs";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: 'export {promises} from "fs";',
output: 'export {promises} from "node:fs";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: `
@@ -98,17 +98,17 @@ new RuleTester({
const fs = await import('node:fs');
}
`,
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: 'import fs from "fs/promises";',
output: 'import fs from "node:fs/promises";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs/promises` over `fs/promises`."],
},
{
code: 'export {default} from "fs/promises";',
output: 'export {default} from "node:fs/promises";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs/promises` over `fs/promises`."],
},
{
code: `
@@ -121,22 +121,22 @@ new RuleTester({
const fs = await import('node:fs/promises');
}
`,
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs/promises` over `fs/promises`."],
},
{
code: 'import {promises} from "fs";',
output: 'import {promises} from "node:fs";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: 'export {default as promises} from "fs";',
output: 'export {default as promises} from "node:fs";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: "import {promises} from 'fs';",
output: "import {promises} from 'node:fs';",
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: `
@@ -149,7 +149,7 @@ new RuleTester({
const fs = await import("node:fs/promises");
}
`,
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs/promises` over `fs/promises`."],
},
{
code: `
@@ -162,60 +162,60 @@ new RuleTester({
const fs = await import(/* escaped */"node:\\u{66}s/promises");
}
`,
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs/promises` over `fs/promises`."],
},
{
code: 'import "buffer";',
output: 'import "node:buffer";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:buffer` over `buffer`."],
},
{
code: 'import "child_process";',
output: 'import "node:child_process";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:child_process` over `child_process`."],
},
{
code: 'import "timers/promises";',
output: 'import "node:timers/promises";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:timers/promises` over `timers/promises`."],
},

// `require`
{
code: 'const {promises} = require("fs")',
output: 'const {promises} = require("node:fs")',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
code: "const fs = require('fs/promises')",
output: "const fs = require('node:fs/promises')",
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs/promises` over `fs/promises`."],
},

// check enabling by supported Node.js versions
{
options: [{ version: "12.20.0" }],
code: 'import fs from "fs";',
output: 'import fs from "node:fs";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
options: [{ version: "14.13.1" }],
code: 'import fs from "fs";',
output: 'import fs from "node:fs";',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
options: [{ version: "14.18.0" }],
code: 'const fs = require("fs");',
output: 'const fs = require("node:fs");',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
{
options: [{ version: "16.0.0" }],
code: 'const fs = require("fs");',
output: 'const fs = require("node:fs");',
errors: ["Prefer `node:{{moduleName}}` over `{{moduleName}}`."],
errors: ["Prefer `node:fs` over `fs`."],
},
],
})