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: 16.6.2
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.7.0
Choose a head ref
Loading
Showing with 15,452 additions and 14,091 deletions.
  1. +1 −1 .github/ISSUE_TEMPLATE/bug-report.yml
  2. +19 −0 .github/release-please/config.json
  3. +1 −0 .github/release-please/manifest.json
  4. +17 −16 .github/workflows/CI.yml
  5. +44 −0 .github/workflows/release-please.yml
  6. +3 −1 .gitignore
  7. +0 −3 .husky/pre-commit
  8. +3 −1 .npmrc
  9. +0 −1 .nycrc
  10. +1 −0 .prettierrc
  11. +260 −0 CHANGELOG.md
  12. +8 −4 README.md
  13. +1 −3 docs/rules/file-extension-in-import.md
  14. +103 −0 docs/rules/hashbang.md
  15. +2 −0 docs/rules/no-deprecated-api.md
  16. +0 −2 docs/rules/no-missing-import.md
  17. +0 −2 docs/rules/no-unpublished-import.md
  18. +0 −308 docs/rules/no-unsupported-features.md
  19. +19 −267 docs/rules/no-unsupported-features/node-builtins.md
  20. +73 −0 docs/rules/prefer-node-protocol.md
  21. +3 −60 docs/rules/shebang.md
  22. +7 −2 eslint.config.js
  23. +17 −19 lib/configs/_commons.js
  24. +12 −3 lib/configs/recommended-module.js
  25. +12 −3 lib/configs/recommended-script.js
  26. +11 −2 lib/configs/recommended.js
  27. +0 −1,274 lib/converted-esm/import-meta-resolve.js
  28. +83 −0 lib/eslint-utils.d.ts
  29. +77 −60 lib/index.js
  30. +16 −16 lib/rules/callback-return.js
  31. +85 −34 lib/rules/exports-style.js
  32. +52 −36 lib/rules/file-extension-in-import.js
  33. +12 −16 lib/rules/global-require.js
  34. +4 −3 lib/rules/handle-callback-err.js
  35. +237 −0 lib/rules/hashbang.js
  36. +11 −12 lib/rules/no-callback-literal.js
  37. +38 −18 lib/rules/no-deprecated-api.js
  38. +11 −0 lib/rules/no-exports-assign.js
  39. +1 −0 lib/rules/no-extraneous-import.js
  40. +1 −0 lib/rules/no-extraneous-require.js
  41. +20 −37 lib/rules/no-hide-core-modules.js
  42. +4 −1 lib/rules/no-missing-import.js
  43. +1 −0 lib/rules/no-missing-require.js
  44. +22 −7 lib/rules/no-mixed-requires.js
  45. +1 −0 lib/rules/no-new-require.js
  46. +24 −12 lib/rules/no-path-concat.js
  47. +11 −12 lib/rules/no-process-env.js
  48. +10 −3 lib/rules/no-process-exit.js
  49. +1 −0 lib/rules/no-restricted-import.js
  50. +1 −0 lib/rules/no-restricted-require.js
  51. +8 −2 lib/rules/no-sync.js
  52. +8 −26 lib/rules/no-unpublished-bin.js
  53. +1 −0 lib/rules/no-unpublished-import.js
  54. +1 −0 lib/rules/no-unpublished-require.js
  55. +0 −1,552 lib/rules/no-unsupported-features.js
  56. +362 −86 lib/rules/no-unsupported-features/es-builtins.js
  57. +30 −0 lib/rules/no-unsupported-features/es-syntax-additions.json
  58. +137 −608 lib/rules/no-unsupported-features/es-syntax.js
  59. +615 −0 lib/rules/no-unsupported-features/es-syntax.json
  60. +13 −362 lib/rules/no-unsupported-features/node-builtins.js
  61. +5 −5 lib/rules/prefer-global/buffer.js
  62. +4 −2 lib/rules/prefer-global/console.js
  63. +4 −2 lib/rules/prefer-global/process.js
  64. +5 −5 lib/rules/prefer-global/text-decoder.js
  65. +5 −5 lib/rules/prefer-global/text-encoder.js
  66. +5 −5 lib/rules/prefer-global/url-search-params.js
  67. +5 −5 lib/rules/prefer-global/url.js
  68. +183 −0 lib/rules/prefer-node-protocol.js
  69. +6 −4 lib/rules/prefer-promises/dns.js
  70. +6 −4 lib/rules/prefer-promises/fs.js
  71. +12 −9 lib/rules/process-exit-as-throw.js
  72. +9 −164 lib/rules/shebang.js
  73. +47 −0 lib/types-code-path-analysis/code-path-analyzer.d.ts
  74. +115 −0 lib/types-code-path-analysis/code-path-segment.d.ts
  75. +895 −0 lib/types-code-path-analysis/code-path-state.d.ts
  76. +111 −0 lib/types-code-path-analysis/code-path.d.ts
  77. +15 −0 lib/types-code-path-analysis/debug-helpers.d.ts
  78. +136 −0 lib/types-code-path-analysis/fork-context.d.ts
  79. +17 −0 lib/types-code-path-analysis/id-generator.d.ts
  80. +66 −0 lib/unsupported-features/node-builtins-modules/assert.js
  81. +44 −0 lib/unsupported-features/node-builtins-modules/async_hooks.js
  82. +56 −0 lib/unsupported-features/node-builtins-modules/buffer.js
  83. +27 −0 lib/unsupported-features/node-builtins-modules/child_process.js
  84. +31 −0 lib/unsupported-features/node-builtins-modules/cluster.js
  85. +47 −0 lib/unsupported-features/node-builtins-modules/console.js
  86. +138 −0 lib/unsupported-features/node-builtins-modules/crypto.js
  87. +21 −0 lib/unsupported-features/node-builtins-modules/dgram.js
  88. +32 −0 lib/unsupported-features/node-builtins-modules/diagnostics_channel.js
  89. +66 −0 lib/unsupported-features/node-builtins-modules/dns.js
  90. +20 −0 lib/unsupported-features/node-builtins-modules/domain.js
  91. +72 −0 lib/unsupported-features/node-builtins-modules/events.js
  92. +196 −0 lib/unsupported-features/node-builtins-modules/fs.js
  93. +35 −0 lib/unsupported-features/node-builtins-modules/http.js
  94. +41 −0 lib/unsupported-features/node-builtins-modules/http2.js
  95. +25 −0 lib/unsupported-features/node-builtins-modules/https.js
  96. +48 −0 lib/unsupported-features/node-builtins-modules/inspector.js
  97. +34 −0 lib/unsupported-features/node-builtins-modules/module.js
  98. +37 −0 lib/unsupported-features/node-builtins-modules/net.js
  99. +45 −0 lib/unsupported-features/node-builtins-modules/os.js
  100. +42 −0 lib/unsupported-features/node-builtins-modules/path.js
  101. +33 −0 lib/unsupported-features/node-builtins-modules/perf_hooks.js
  102. +132 −0 lib/unsupported-features/node-builtins-modules/process.js
  103. +24 −0 lib/unsupported-features/node-builtins-modules/punycode.js
  104. +25 −0 lib/unsupported-features/node-builtins-modules/querystring.js
  105. +47 −0 lib/unsupported-features/node-builtins-modules/readline.js
  106. +21 −0 lib/unsupported-features/node-builtins-modules/sea.js
  107. +119 −0 lib/unsupported-features/node-builtins-modules/stream.js
  108. +20 −0 lib/unsupported-features/node-builtins-modules/string_decoder.js
  109. +52 −0 lib/unsupported-features/node-builtins-modules/test.js
  110. +59 −0 lib/unsupported-features/node-builtins-modules/timers.js
  111. +37 −0 lib/unsupported-features/node-builtins-modules/tls.js
  112. +21 −0 lib/unsupported-features/node-builtins-modules/trace_events.js
  113. +22 −0 lib/unsupported-features/node-builtins-modules/tty.js
  114. +33 −0 lib/unsupported-features/node-builtins-modules/url.js
  115. +126 −0 lib/unsupported-features/node-builtins-modules/util.js
  116. +52 −0 lib/unsupported-features/node-builtins-modules/v8.js
  117. +26 −0 lib/unsupported-features/node-builtins-modules/vm.js
  118. +14 −0 lib/unsupported-features/node-builtins-modules/wasi.js
  119. +47 −0 lib/unsupported-features/node-builtins-modules/worker_threads.js
  120. +53 −0 lib/unsupported-features/node-builtins-modules/zlib.js
  121. +51 −0 lib/unsupported-features/node-builtins.js
  122. +286 −0 lib/unsupported-features/node-globals.js
  123. +34 −0 lib/unsupported-features/types.js
  124. +29 −36 lib/util/check-existence.js
  125. +7 −5 lib/util/check-extraneous.js
  126. +22 −14 lib/util/check-prefer-global.js
  127. +19 −17 lib/util/check-publish.js
  128. +14 −9 lib/util/check-restricted.js
  129. +102 −51 lib/util/check-unsupported-builtins.js
  130. +35 −16 lib/util/enumerate-property-names.js
  131. +8 −1 lib/util/exists.js
  132. +7 −7 lib/util/extend-trackmap-with-node-prefix.js
  133. +10 −8 lib/util/get-allow-modules.js
  134. +24 −24 lib/util/get-configured-node-version.js
  135. +53 −39 lib/util/get-convert-path.js
  136. +63 −50 lib/util/get-npmignore.js
  137. +11 −5 lib/util/get-package-json.js
  138. +9 −10 lib/util/get-resolve-paths.js
  139. +13 −12 lib/util/get-semver-range.js
  140. +43 −14 lib/util/get-try-extensions.js
  141. +19 −1 lib/util/get-tsconfig.js
  142. +28 −17 lib/util/get-typescript-extension-map.js
  143. +273 −105 lib/util/import-target.js
  144. +53 −0 lib/util/is-bin-file.js
  145. +1 −1 lib/util/is-typescript.js
  146. +33 −17 lib/util/map-typescript-extension.js
  147. +21 −13 lib/util/merge-visitors-in-place.js
  148. +12 −2 lib/util/strip-import-path-params.js
  149. +53 −33 lib/util/visit-import.js
  150. +29 −11 lib/util/visit-require.js
  151. +38 −31 package.json
  152. +0 −6 scripts/convert-pure-esm-to-cjs.js
  153. +2 −2 scripts/rules.js
  154. +1 −2 tests/fixtures/configs/cjs/package.json
  155. 0 tests/fixtures/file-extension-in-import/{multi.cjs → multi.js}
  156. 0 tests/fixtures/file-extension-in-import/{multi.mjs → multi.json}
  157. 0 tests/fixtures/file-extension-in-import/ts-allow-extension/file.ts
  158. +6 −0 tests/fixtures/file-extension-in-import/ts-allow-extension/tsconfig.json
  159. +5 −0 tests/fixtures/no-extraneous/import-map/package.json
  160. 0 tests/fixtures/no-extraneous/import-map/src/b.js
  161. +1 −2 tests/fixtures/no-hide-core-modules/indirect-thirdparty/package.json
  162. +1 −0 tests/fixtures/no-missing/node_modules/misconfigured-default/build/index.js
  163. +9 −0 tests/fixtures/no-missing/node_modules/misconfigured-default/package.json
  164. +1 −0 tests/fixtures/no-missing/node_modules/misconfigured-default/src/index.ts
  165. +5 −0 tests/fixtures/no-missing/node_modules/types-only/package.json
  166. 0 tests/fixtures/no-missing/node_modules/types-only/types.d.ts
  167. 0 tests/fixtures/no-missing/ts-allow-extension/file.ts
  168. +6 −0 tests/fixtures/no-missing/ts-allow-extension/tsconfig.json
  169. 0 tests/fixtures/no-missing/ts-paths/some/where.ts
  170. +8 −0 tests/fixtures/no-missing/ts-paths/tsconfig.json
  171. +1 −1 tests/fixtures/no-unpublished-bin/multi-ok/package.json
  172. +2 −1 tests/fixtures/shebang/object-bin/package.json
  173. +7 −0 tests/fixtures/shebang/unpublished/package.json
  174. +0 −10 tests/helpers.js
  175. +25 −30 tests/lib/configs/{recommended.js → eslintrc.js}
  176. +2 −2 tests/lib/rules/callback-return.js
  177. +318 −317 tests/lib/rules/exports-style.js
  178. +28 −12 tests/lib/rules/file-extension-in-import.js
  179. +2 −2 tests/lib/rules/global-require.js
  180. +2 −2 tests/lib/rules/handle-callback-err.js
  181. +497 −0 tests/lib/rules/hashbang.js
  182. +8 −2 tests/lib/rules/no-callback-literal.js
  183. +26 −30 tests/lib/rules/no-deprecated-api.js
  184. +6 −4 tests/lib/rules/no-exports-assign.js
  185. +9 −5 tests/lib/rules/no-extraneous-import.js
  186. +2 −2 tests/lib/rules/no-extraneous-require.js
  187. +2 −3 tests/lib/rules/no-hide-core-modules.js
  188. +106 −31 tests/lib/rules/no-missing-import.js
  189. +34 −20 tests/lib/rules/no-missing-require.js
  190. +2 −2 tests/lib/rules/no-mixed-requires.js
  191. +2 −2 tests/lib/rules/no-new-require.js
  192. +2 −7 tests/lib/rules/no-path-concat.js
  193. +2 −2 tests/lib/rules/no-process-env.js
  194. +2 −2 tests/lib/rules/no-process-exit.js
  195. +6 −6 tests/lib/rules/no-restricted-import.js
  196. +2 −4 tests/lib/rules/no-restricted-require.js
  197. +2 −2 tests/lib/rules/no-sync.js
  198. +271 −275 tests/lib/rules/no-unpublished-bin.js
  199. +12 −25 tests/lib/rules/no-unpublished-import.js
  200. +2 −3 tests/lib/rules/no-unpublished-require.js
  201. +0 −1,409 tests/lib/rules/no-unsupported-features.js
  202. +2,398 −2,391 tests/lib/rules/no-unsupported-features/es-builtins.js
  203. +3,196 −2,746 tests/lib/rules/no-unsupported-features/es-syntax.js
  204. +486 −742 tests/lib/rules/no-unsupported-features/node-builtins.js
  205. +2 −4 tests/lib/rules/prefer-global/buffer.js
  206. +2 −4 tests/lib/rules/prefer-global/console.js
  207. +2 −4 tests/lib/rules/prefer-global/process.js
  208. +2 −4 tests/lib/rules/prefer-global/text-decoder.js
  209. +2 −4 tests/lib/rules/prefer-global/text-encoder.js
  210. +2 −4 tests/lib/rules/prefer-global/url-search-params.js
  211. +2 −4 tests/lib/rules/prefer-global/url.js
  212. +244 −0 tests/lib/rules/prefer-node-protocol.js
  213. +2 −3 tests/lib/rules/prefer-promises/dns.js
  214. +2 −3 tests/lib/rules/prefer-promises/fs.js
  215. +7 −319 tests/lib/rules/shebang.js
  216. +65 −0 tests/test-helpers.js
  217. +25 −0 tsconfig.json
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ body:
- type: input
attributes:
label: Link to Minimal Reproducible Example
description: 'Link to a [playground](https://eslint-online-playground.netlify.app/), [StackBlitz](https://stackblitz.com), or GitHub repo with a minimal reproduction of the problem. **A minimal reproduction is required** so that others can help debug your issue. If a report is vague (e.g. just a generic error message) and has no reproduction, it may be auto-closed.'
description: 'Link to a [playground](https://eslint-online-playground.netlify.app/#eNptjzFuwzAMRa8icGqB2NndtbcoOxgybaiVSUGSgxSG717KUoAMWSiReJ//c4cU7ZXu4xo89T8JBrDCSbTxsryFKJZS6olv7x/IcAFK3nHuFZrdUgVuDRKzYTNHWQ02pAt+Wxx3jKBKZLqf1ETzuPlsvpCN2UsxppJpMLsuOS51GDdPZVQ7o3v5ytK1RJ0mQhiKW4wSESp2lEfLdw0bRvs7LuUuYQ167kLIf4GqdpVJXRBOS4SJbp8UiCdi6ygVptk/jqoyP2ZK+m9JX1z8TLVIBxz/MqF45g==), [StackBlitz](https://stackblitz.com), or GitHub repo with a minimal reproduction of the problem. **A minimal reproduction is required** so that others can help debug your issue. If a report is vague (e.g. just a generic error message) and has no reproduction, it may be auto-closed.'
placeholder: 'https://eslint-online-playground.netlify.app/#'
validations:
required: true
19 changes: 19 additions & 0 deletions .github/release-please/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"release-type": "node",
"prerelease": false,
"include-component-in-tag": false,
"changelog-sections": [
{ "type": "feat", "section": "🌟 Features", "hidden": false },
{ "type": "fix", "section": "🩹 Fixes", "hidden": false },
{ "type": "docs", "section": "📚 Documentation", "hidden": false },

{ "type": "chore", "section": "🧹 Chores", "hidden": false },
{ "type": "perf", "section": "🧹 Chores", "hidden": false },
{ "type": "refactor", "section": "🧹 Chores", "hidden": false },
{ "type": "test", "section": "🧹 Chores", "hidden": false },

{ "type": "build", "section": "🤖 Automation", "hidden": false },
{ "type": "ci", "section": "🤖 Automation", "hidden": true }
],
"packages": { ".": {} }
}
1 change: 1 addition & 0 deletions .github/release-please/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{".":"17.7.0"}
33 changes: 17 additions & 16 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -8,58 +8,59 @@ on:
- cron: 0 0 * * 0

jobs:

lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Install Packages
run: npm install
- name: Lint
run: npm run -s lint
- run: npm install
- run: npm run -s lint
- run: npm run -s test:types

test:
name: Test

strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
eslint: [8.x]
node: [18.x, 20.x]
eslint: [8.x, "9.x"]
node: [18.x, 20.x, 22.x]
include:
- os: ubuntu-latest
node: "16.0.x"
node: "18.18.0"
eslint: "8.x"
- os: ubuntu-latest
node: "16.x"
node: "20.9.0"
eslint: "8.x"
- os: ubuntu-latest
node: "19.x"
node: "21.1.0"
eslint: "8.x"
- os: ubuntu-latest
node: "20.x"
eslint: "7.0.x"
node: "21.x"
eslint: "8.x"
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Install Packages
run: npm install
- name: Install ESLint ${{ matrix.eslint }}
run: |
npm install --no-save --force eslint@${{ matrix.eslint }}
run: npm install --no-save --force eslint@${{ matrix.eslint }}
- name: Test
run: npm run -s test:ci
run: npm run -s test:tests
44 changes: 44 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
on:
push:
branches:
- master
name: release-please
jobs:
release-please:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
id-token: write
steps:
- uses: google-github-actions/release-please-action@v4
id: release
with:
config-file: .github/release-please/config.json
manifest-file: .github/release-please/manifest.json

- uses: actions/checkout@v4
if: ${{ steps.release.outputs.release_created }}
- uses: actions/setup-node@v4
with:
node-version: lts/*
registry-url: https://registry.npmjs.org
if: ${{ steps.release.outputs.release_created }}
- run: |
npm install
npm publish --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
if: ${{ steps.release.outputs.release_created }}
# - run: 'npx @humanwhocodes/tweet "espree ${{ steps.release.outputs.tag_name }} has been released: ${{ steps.release.outputs.html_url }}"'
# if: ${{ steps.release.outputs.release_created }}
# env:
# TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
# TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
# TWITTER_ACCESS_TOKEN_KEY: ${{ secrets.TWITTER_ACCESS_TOKEN_KEY }}
# TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
# - run: 'npx @humanwhocodes/toot "espree ${{ steps.release.outputs.tag_name }} has been released: ${{ steps.release.outputs.html_url }}"'
# if: ${{ steps.release.outputs.release_created }}
# env:
# MASTODON_ACCESS_TOKEN: ${{ secrets.MASTODON_ACCESS_TOKEN }}
# MASTODON_HOST: ${{ secrets.MASTODON_HOST }}
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -5,4 +5,6 @@
/test.js
.eslintcache
.vscode
.idea/
.idea/

types/
3 changes: 0 additions & 3 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged
4 changes: 3 additions & 1 deletion .npmrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
registry=https://registry.npmjs.org/
registry = https://registry.npmjs.org/
package-lock = false
force = true
legacy-peer-deps = true
1 change: 0 additions & 1 deletion .nycrc
Original file line number Diff line number Diff line change
@@ -4,7 +4,6 @@
],
"exclude": [
"lib/rules/no-hide-core-modules.js",
"lib/rules/no-unsupported-features.js",
"lib/converted-esm/*.js"
],
"reporter": [
1 change: 1 addition & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
"semi": false,
"tabWidth": 4,
"arrowParens": "avoid",
"trailingComma": "es5",
"overrides": [
{
"files": "*.md",
Loading