eslint-plugin-nextjs 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +58 -5
  2. package/dist/index.cjs +1494 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +43 -0
  5. package/dist/index.d.ts +42 -1
  6. package/dist/index.js +1455 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/rules/google-font-display.cjs +119 -0
  9. package/dist/rules/google-font-display.cjs.map +1 -0
  10. package/dist/rules/google-font-display.d.cts +8 -0
  11. package/dist/rules/google-font-display.d.ts +8 -0
  12. package/dist/rules/google-font-display.js +92 -0
  13. package/dist/rules/google-font-display.js.map +1 -0
  14. package/dist/rules/google-font-preconnect.cjs +109 -0
  15. package/dist/rules/google-font-preconnect.cjs.map +1 -0
  16. package/dist/rules/google-font-preconnect.d.cts +5 -0
  17. package/dist/rules/google-font-preconnect.d.ts +5 -0
  18. package/dist/rules/google-font-preconnect.js +82 -0
  19. package/dist/rules/google-font-preconnect.js.map +1 -0
  20. package/dist/rules/inline-script-id.cjs +94 -0
  21. package/dist/rules/inline-script-id.cjs.map +1 -0
  22. package/dist/rules/inline-script-id.d.cts +5 -0
  23. package/dist/rules/inline-script-id.d.ts +5 -0
  24. package/dist/rules/inline-script-id.js +67 -0
  25. package/dist/rules/inline-script-id.js.map +1 -0
  26. package/dist/rules/next-script-for-ga.cjs +129 -0
  27. package/dist/rules/next-script-for-ga.cjs.map +1 -0
  28. package/dist/rules/next-script-for-ga.d.cts +5 -0
  29. package/dist/rules/next-script-for-ga.d.ts +5 -0
  30. package/dist/rules/next-script-for-ga.js +102 -0
  31. package/dist/rules/next-script-for-ga.js.map +1 -0
  32. package/dist/rules/no-assign-module-variable.cjs +64 -0
  33. package/dist/rules/no-assign-module-variable.cjs.map +1 -0
  34. package/dist/rules/no-assign-module-variable.d.cts +5 -0
  35. package/dist/rules/no-assign-module-variable.d.ts +5 -0
  36. package/dist/rules/no-assign-module-variable.js +37 -0
  37. package/dist/rules/no-assign-module-variable.js.map +1 -0
  38. package/dist/rules/no-async-client-component.cjs +99 -0
  39. package/dist/rules/no-async-client-component.cjs.map +1 -0
  40. package/dist/rules/no-async-client-component.d.cts +5 -0
  41. package/dist/rules/no-async-client-component.d.ts +5 -0
  42. package/dist/rules/no-async-client-component.js +72 -0
  43. package/dist/rules/no-async-client-component.js.map +1 -0
  44. package/dist/rules/no-before-interactive-script-outside-document.cjs +94 -0
  45. package/dist/rules/no-before-interactive-script-outside-document.cjs.map +1 -0
  46. package/dist/rules/no-before-interactive-script-outside-document.d.cts +5 -0
  47. package/dist/rules/no-before-interactive-script-outside-document.d.ts +5 -0
  48. package/dist/rules/no-before-interactive-script-outside-document.js +59 -0
  49. package/dist/rules/no-before-interactive-script-outside-document.js.map +1 -0
  50. package/dist/rules/no-css-tags.cjs +70 -0
  51. package/dist/rules/no-css-tags.cjs.map +1 -0
  52. package/dist/rules/no-css-tags.d.cts +5 -0
  53. package/dist/rules/no-css-tags.d.ts +5 -0
  54. package/dist/rules/no-css-tags.js +43 -0
  55. package/dist/rules/no-css-tags.js.map +1 -0
  56. package/dist/rules/no-document-import-in-page.cjs +74 -0
  57. package/dist/rules/no-document-import-in-page.cjs.map +1 -0
  58. package/dist/rules/no-document-import-in-page.d.cts +5 -0
  59. package/dist/rules/no-document-import-in-page.d.ts +5 -0
  60. package/dist/rules/no-document-import-in-page.js +39 -0
  61. package/dist/rules/no-document-import-in-page.js.map +1 -0
  62. package/dist/rules/no-duplicate-head.cjs +87 -0
  63. package/dist/rules/no-duplicate-head.cjs.map +1 -0
  64. package/dist/rules/no-duplicate-head.d.cts +5 -0
  65. package/dist/rules/no-duplicate-head.d.ts +5 -0
  66. package/dist/rules/no-duplicate-head.js +60 -0
  67. package/dist/rules/no-duplicate-head.js.map +1 -0
  68. package/dist/rules/no-head-element.cjs +76 -0
  69. package/dist/rules/no-head-element.cjs.map +1 -0
  70. package/dist/rules/no-head-element.d.cts +5 -0
  71. package/dist/rules/no-head-element.d.ts +5 -0
  72. package/dist/rules/no-head-element.js +41 -0
  73. package/dist/rules/no-head-element.js.map +1 -0
  74. package/dist/rules/no-head-import-in-document.cjs +76 -0
  75. package/dist/rules/no-head-import-in-document.cjs.map +1 -0
  76. package/dist/rules/no-head-import-in-document.d.cts +5 -0
  77. package/dist/rules/no-head-import-in-document.d.ts +5 -0
  78. package/dist/rules/no-head-import-in-document.js +41 -0
  79. package/dist/rules/no-head-import-in-document.js.map +1 -0
  80. package/dist/rules/no-html-link-for-pages.cjs +302 -0
  81. package/dist/rules/no-html-link-for-pages.cjs.map +1 -0
  82. package/dist/rules/no-html-link-for-pages.d.cts +5 -0
  83. package/dist/rules/no-html-link-for-pages.d.ts +5 -0
  84. package/dist/rules/no-html-link-for-pages.js +267 -0
  85. package/dist/rules/no-html-link-for-pages.js.map +1 -0
  86. package/dist/rules/no-img-element.cjs +83 -0
  87. package/dist/rules/no-img-element.cjs.map +1 -0
  88. package/dist/rules/no-img-element.d.cts +5 -0
  89. package/dist/rules/no-img-element.d.ts +5 -0
  90. package/dist/rules/no-img-element.js +48 -0
  91. package/dist/rules/no-img-element.js.map +1 -0
  92. package/dist/rules/no-page-custom-font.cjs +184 -0
  93. package/dist/rules/no-page-custom-font.cjs.map +1 -0
  94. package/dist/rules/no-page-custom-font.d.cts +5 -0
  95. package/dist/rules/no-page-custom-font.d.ts +5 -0
  96. package/dist/rules/no-page-custom-font.js +159 -0
  97. package/dist/rules/no-page-custom-font.js.map +1 -0
  98. package/dist/rules/no-script-component-in-head.cjs +74 -0
  99. package/dist/rules/no-script-component-in-head.cjs.map +1 -0
  100. package/dist/rules/no-script-component-in-head.d.cts +5 -0
  101. package/dist/rules/no-script-component-in-head.d.ts +5 -0
  102. package/dist/rules/no-script-component-in-head.js +47 -0
  103. package/dist/rules/no-script-component-in-head.js.map +1 -0
  104. package/dist/rules/no-styled-jsx-in-document.cjs +78 -0
  105. package/dist/rules/no-styled-jsx-in-document.cjs.map +1 -0
  106. package/dist/rules/no-styled-jsx-in-document.d.cts +5 -0
  107. package/dist/rules/no-styled-jsx-in-document.d.ts +5 -0
  108. package/dist/rules/no-styled-jsx-in-document.js +43 -0
  109. package/dist/rules/no-styled-jsx-in-document.js.map +1 -0
  110. package/dist/rules/no-sync-scripts.cjs +64 -0
  111. package/dist/rules/no-sync-scripts.cjs.map +1 -0
  112. package/dist/rules/no-sync-scripts.d.cts +5 -0
  113. package/dist/rules/no-sync-scripts.d.ts +5 -0
  114. package/dist/rules/no-sync-scripts.js +37 -0
  115. package/dist/rules/no-sync-scripts.js.map +1 -0
  116. package/dist/rules/no-title-in-document-head.cjs +78 -0
  117. package/dist/rules/no-title-in-document-head.cjs.map +1 -0
  118. package/dist/rules/no-title-in-document-head.d.cts +5 -0
  119. package/dist/rules/no-title-in-document-head.d.ts +5 -0
  120. package/dist/rules/no-title-in-document-head.js +51 -0
  121. package/dist/rules/no-title-in-document-head.js.map +1 -0
  122. package/dist/rules/no-typos.cjs +133 -0
  123. package/dist/rules/no-typos.cjs.map +1 -0
  124. package/dist/rules/no-typos.d.cts +5 -0
  125. package/dist/rules/no-typos.d.ts +5 -0
  126. package/dist/rules/no-typos.js +98 -0
  127. package/dist/rules/no-typos.js.map +1 -0
  128. package/dist/rules/no-unwanted-polyfillio.cjs +164 -0
  129. package/dist/rules/no-unwanted-polyfillio.cjs.map +1 -0
  130. package/dist/rules/no-unwanted-polyfillio.d.cts +5 -0
  131. package/dist/rules/no-unwanted-polyfillio.d.ts +5 -0
  132. package/dist/rules/no-unwanted-polyfillio.js +137 -0
  133. package/dist/rules/no-unwanted-polyfillio.js.map +1 -0
  134. package/dist/utils/define-rule.cjs +31 -0
  135. package/dist/utils/define-rule.cjs.map +1 -0
  136. package/dist/utils/define-rule.d.cts +5 -0
  137. package/dist/utils/define-rule.d.ts +5 -0
  138. package/dist/utils/define-rule.js +6 -0
  139. package/dist/utils/define-rule.js.map +1 -0
  140. package/dist/utils/get-root-dirs.cjs +60 -0
  141. package/dist/utils/get-root-dirs.cjs.map +1 -0
  142. package/dist/utils/get-root-dirs.d.cts +8 -0
  143. package/dist/utils/get-root-dirs.d.ts +8 -0
  144. package/dist/utils/get-root-dirs.js +25 -0
  145. package/dist/utils/get-root-dirs.js.map +1 -0
  146. package/dist/utils/node-attributes.cjs +67 -0
  147. package/dist/utils/node-attributes.cjs.map +1 -0
  148. package/dist/utils/node-attributes.d.cts +15 -0
  149. package/dist/utils/node-attributes.d.ts +15 -0
  150. package/dist/utils/node-attributes.js +46 -0
  151. package/dist/utils/node-attributes.js.map +1 -0
  152. package/dist/utils/url.cjs +167 -0
  153. package/dist/utils/url.cjs.map +1 -0
  154. package/dist/utils/url.d.cts +35 -0
  155. package/dist/utils/url.d.ts +35 -0
  156. package/dist/utils/url.js +128 -0
  157. package/dist/utils/url.js.map +1 -0
  158. package/package.json +15 -2
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## Overview
11
11
 
12
- This is a unofficial fork of `@next/eslint-plugin-next` with TypeScript and ESLint v9 support. I have no association with Vercel or the Next.js team. I just needed an updated version of the plugin for my style guide, `js-style-kit`.
12
+ This is a unofficial fork of [`@next/eslint-plugin-next`](https://www.npmjs.com/package/@next/eslint-plugin-next) with TypeScript and ESLint v9 support. I have no association with Vercel or the Next.js team. I just needed an updated version of the plugin for my style guide, [`js-style-kit`](https://js-style-kit.mintlify.app/introduction).
13
13
 
14
14
  If you're using `eslint-config-next`, you _do not_ need this plugin.
15
15
  You only need this plugin if you're rolling your own ESLint config.
@@ -21,11 +21,64 @@ You only need this plugin if you're rolling your own ESLint config.
21
21
  ## Installation
22
22
 
23
23
  ```bash
24
- npm i eslint-plugin-nextjs -D
24
+ npm i eslint eslint-plugin-nextjs -D
25
25
  # or
26
- yarn add eslint-plugin-nextjs -D
26
+ yarn add eslint eslint-plugin-nextjs -D
27
27
  # or
28
- pnpm add eslint-plugin-nextjs -D
28
+ pnpm add eslint eslint-plugin-nextjs -D
29
29
  # or
30
- bun add eslint-plugin-nextjs -d
30
+ bun add eslint eslint-plugin-nextjs -d
31
31
  ```
32
+
33
+ ## Usage
34
+
35
+ > **Note**: The API _will_ break in v1. I want to clean up this API follow ESLint standards.
36
+
37
+ This plugin ships two configs for both legacy and flat ESLint configuration formats:
38
+
39
+ - "recommended" or "recommended/flat" - includes most rules from Next.js
40
+ - "core-web-vitals" or "core-web-vitals/flat" - same thing but two rules get upgraded to errors 🤷‍♂️
41
+
42
+ You probably want Core Web Vitals (that's what ships inside of `eslint-config-next`), but you never need both.
43
+
44
+ ### Legacy Config
45
+
46
+ ```js
47
+ {
48
+ extends: ["nextjs/core-web-vitals"],
49
+ }
50
+ ```
51
+
52
+ ### Flat Config
53
+
54
+ ```js
55
+ import nextjs from "eslint-plugin-nextjs";
56
+
57
+ export default [
58
+ // ... other configs
59
+ nextjs.configs["core-web-vitals/flat"],
60
+ ];
61
+ ```
62
+
63
+ ### Custom Config
64
+
65
+ ```js
66
+ import nextjs from "eslint-plugin-nextjs";
67
+
68
+ export default [
69
+ // ... other configs
70
+ {
71
+ plugins: {
72
+ nextjs,
73
+ },
74
+ rules: {
75
+ "nextjs/google-font-display": "warn",
76
+ "nextjs/no-img-element": "warn",
77
+ },
78
+ },
79
+ ];
80
+ ```
81
+
82
+ ## Rules
83
+
84
+ See Vercel's [documentation](https://nextjs.org/docs/app/api-reference/config/eslint#rules) for rule details. I'll add a proper rule table here in the future.