Skip to content

Commit ae43f0c

Browse files
authored
Tweak and re-organize ESLint config (#38369)
* Tweak and re-organize ESLint config * merge individual configs to the root config * enable more eslint-plugin-import rules * lint markdown files * Lint
1 parent 3aabfc7 commit ae43f0c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+311
-296
lines changed

.eslintignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@
33
**/vendor/
44
/_site/
55
/js/coverage/
6-
/js/tests/integration/
76
/site/static/sw.js
8-
/site/layouts/
7+
/site/layouts/partials/

.eslintrc.json

+152-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,35 @@
1414
"error",
1515
"never"
1616
],
17+
"import/extensions": [
18+
"error",
19+
"ignorePackages",
20+
{
21+
"js": "always"
22+
}
23+
],
24+
"import/first": "error",
25+
"import/newline-after-import": "error",
26+
"import/no-absolute-path": "error",
27+
"import/no-amd": "error",
28+
"import/no-cycle": [
29+
"error",
30+
{
31+
"ignoreExternal": true
32+
}
33+
],
34+
"import/no-duplicates": "error",
35+
"import/no-extraneous-dependencies": "error",
36+
"import/no-mutable-exports": "error",
37+
"import/no-named-as-default": "error",
38+
"import/no-named-as-default-member": "error",
39+
"import/no-named-default": "error",
40+
"import/no-self-import": "error",
41+
"import/no-unassigned-import": [
42+
"error"
43+
],
44+
"import/no-useless-path-segments": "error",
45+
"import/order": "error",
1746
"indent": [
1847
"error",
1948
2,
@@ -51,7 +80,9 @@
5180
"error",
5281
"never"
5382
],
83+
"strict": "error",
5484
"unicorn/explicit-length-check": "off",
85+
"unicorn/filename-case": "off",
5586
"unicorn/no-array-callback-reference": "off",
5687
"unicorn/no-array-method-this-argument": "off",
5788
"unicorn/no-null": "off",
@@ -63,5 +94,125 @@
6394
"unicorn/prefer-query-selector": "off",
6495
"unicorn/prefer-spread": "off",
6596
"unicorn/prevent-abbreviations": "off"
66-
}
97+
},
98+
"overrides": [
99+
{
100+
"files": [
101+
"build/**"
102+
],
103+
"env": {
104+
"browser": false,
105+
"node": true
106+
},
107+
"parserOptions": {
108+
"sourceType": "script"
109+
},
110+
"rules": {
111+
"no-console": "off",
112+
"unicorn/prefer-top-level-await": "off"
113+
}
114+
},
115+
{
116+
"files": [
117+
"js/**"
118+
],
119+
"parserOptions": {
120+
"sourceType": "module"
121+
}
122+
},
123+
{
124+
"files": [
125+
"js/tests/*.js",
126+
"js/tests/integration/rollup*.js"
127+
],
128+
"env": {
129+
"node": true
130+
},
131+
"parserOptions": {
132+
"sourceType": "script"
133+
}
134+
},
135+
{
136+
"files": [
137+
"js/tests/unit/**"
138+
],
139+
"env": {
140+
"jasmine": true
141+
},
142+
"rules": {
143+
"no-console": "off",
144+
"unicorn/consistent-function-scoping": "off",
145+
"unicorn/no-useless-undefined": "off",
146+
"unicorn/prefer-add-event-listener": "off"
147+
}
148+
},
149+
{
150+
"files": [
151+
"js/tests/visual/**"
152+
],
153+
"plugins": [
154+
"html"
155+
],
156+
"settings": {
157+
"html/html-extensions": [
158+
".html"
159+
]
160+
},
161+
"rules": {
162+
"no-console": "off",
163+
"no-new": "off",
164+
"unicorn/no-array-for-each": "off"
165+
}
166+
},
167+
{
168+
"files": [
169+
"scss/tests/**"
170+
],
171+
"env": {
172+
"node": true
173+
},
174+
"parserOptions": {
175+
"sourceType": "script"
176+
}
177+
},
178+
{
179+
"files": [
180+
"site/**"
181+
],
182+
"env": {
183+
"browser": true,
184+
"node": false
185+
},
186+
"parserOptions": {
187+
"sourceType": "script",
188+
"ecmaVersion": 2019
189+
},
190+
"rules": {
191+
"no-new": "off",
192+
"unicorn/no-array-for-each": "off",
193+
"unicorn/numeric-separators-style": "off"
194+
}
195+
},
196+
{
197+
"files": [
198+
"**/*.md"
199+
],
200+
"plugins": [
201+
"markdown"
202+
],
203+
"processor": "markdown/markdown"
204+
},
205+
{
206+
"files": [
207+
"**/*.md/*.js"
208+
],
209+
"extends": "plugin:markdown/recommended",
210+
"parserOptions": {
211+
"sourceType": "module"
212+
},
213+
"rules": {
214+
"unicorn/prefer-node-protocol": "off"
215+
}
216+
}
217+
]
67218
}

build/.eslintrc.json

-15
This file was deleted.

build/banner.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

33
const pkg = require('../package.json')
4+
45
const year = new Date().getFullYear()
56

67
function getBanner(pluginFilename) {

js/.eslintrc.json

-26
This file was deleted.

js/src/alert.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
* --------------------------------------------------------------------------
66
*/
77

8-
import { defineJQueryPlugin } from './util/index.js'
9-
import EventHandler from './dom/event-handler.js'
108
import BaseComponent from './base-component.js'
9+
import EventHandler from './dom/event-handler.js'
1110
import { enableDismissTrigger } from './util/component-functions.js'
11+
import { defineJQueryPlugin } from './util/index.js'
1212

1313
/**
1414
* Constants

js/src/base-component.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
*/
77

88
import Data from './dom/data.js'
9-
import { executeAfterTransition, getElement } from './util/index.js'
109
import EventHandler from './dom/event-handler.js'
1110
import Config from './util/config.js'
11+
import { executeAfterTransition, getElement } from './util/index.js'
1212

1313
/**
1414
* Constants

js/src/button.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
* --------------------------------------------------------------------------
66
*/
77

8-
import { defineJQueryPlugin } from './util/index.js'
9-
import EventHandler from './dom/event-handler.js'
108
import BaseComponent from './base-component.js'
9+
import EventHandler from './dom/event-handler.js'
10+
import { defineJQueryPlugin } from './util/index.js'
1111

1212
/**
1313
* Constants

js/src/carousel.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
* --------------------------------------------------------------------------
66
*/
77

8+
import BaseComponent from './base-component.js'
9+
import EventHandler from './dom/event-handler.js'
10+
import Manipulator from './dom/manipulator.js'
11+
import SelectorEngine from './dom/selector-engine.js'
812
import {
913
defineJQueryPlugin,
1014
getNextActiveElement,
@@ -13,11 +17,7 @@ import {
1317
reflow,
1418
triggerTransitionEnd
1519
} from './util/index.js'
16-
import EventHandler from './dom/event-handler.js'
17-
import Manipulator from './dom/manipulator.js'
18-
import SelectorEngine from './dom/selector-engine.js'
1920
import Swipe from './util/swipe.js'
20-
import BaseComponent from './base-component.js'
2121

2222
/**
2323
* Constants
@@ -329,7 +329,7 @@ class Carousel extends BaseComponent {
329329

330330
if (!activeElement || !nextElement) {
331331
// Some weirdness is happening, so we bail
332-
// todo: change tests that use empty divs to avoid this check
332+
// TODO: change tests that use empty divs to avoid this check
333333
return
334334
}
335335

js/src/collapse.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
* --------------------------------------------------------------------------
66
*/
77

8+
import BaseComponent from './base-component.js'
9+
import EventHandler from './dom/event-handler.js'
10+
import SelectorEngine from './dom/selector-engine.js'
811
import {
912
defineJQueryPlugin,
1013
getElement,
1114
reflow
1215
} from './util/index.js'
13-
import EventHandler from './dom/event-handler.js'
14-
import SelectorEngine from './dom/selector-engine.js'
15-
import BaseComponent from './base-component.js'
1616

1717
/**
1818
* Constants

js/src/dom/event-handler.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ function findHandler(events, callable, delegationSelector = null) {
128128

129129
function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
130130
const isDelegated = typeof handler === 'string'
131-
// todo: tooltip passes `false` instead of selector, so we need to check
131+
// TODO: tooltip passes `false` instead of selector, so we need to check
132132
const callable = isDelegated ? delegationFunction : (handler || delegationFunction)
133133
let typeEvent = getTypeEvent(originalTypeEvent)
134134

js/src/dropdown.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
*/
77

88
import * as Popper from '@popperjs/core'
9+
import BaseComponent from './base-component.js'
10+
import EventHandler from './dom/event-handler.js'
11+
import Manipulator from './dom/manipulator.js'
12+
import SelectorEngine from './dom/selector-engine.js'
913
import {
1014
defineJQueryPlugin,
1115
execute,
@@ -17,10 +21,6 @@ import {
1721
isVisible,
1822
noop
1923
} from './util/index.js'
20-
import EventHandler from './dom/event-handler.js'
21-
import Manipulator from './dom/manipulator.js'
22-
import SelectorEngine from './dom/selector-engine.js'
23-
import BaseComponent from './base-component.js'
2424

2525
/**
2626
* Constants
@@ -96,7 +96,7 @@ class Dropdown extends BaseComponent {
9696

9797
this._popper = null
9898
this._parent = this._element.parentNode // dropdown wrapper
99-
// todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
99+
// TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
100100
this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||
101101
SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||
102102
SelectorEngine.findOne(SELECTOR_MENU, this._parent)
@@ -311,7 +311,7 @@ class Dropdown extends BaseComponent {
311311

312312
// Disable Popper if we have a static display or Dropdown is in Navbar
313313
if (this._inNavbar || this._config.display === 'static') {
314-
Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove
314+
Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove
315315
defaultBsPopperConfig.modifiers = [{
316316
name: 'applyStyles',
317317
enabled: false
@@ -409,7 +409,7 @@ class Dropdown extends BaseComponent {
409409

410410
event.preventDefault()
411411

412-
// todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
412+
// TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
413413
const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?
414414
this :
415415
(SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||

js/src/modal.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
* --------------------------------------------------------------------------
66
*/
77

8-
import { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'
8+
import BaseComponent from './base-component.js'
99
import EventHandler from './dom/event-handler.js'
1010
import SelectorEngine from './dom/selector-engine.js'
11-
import ScrollBarHelper from './util/scrollbar.js'
12-
import BaseComponent from './base-component.js'
1311
import Backdrop from './util/backdrop.js'
14-
import FocusTrap from './util/focustrap.js'
1512
import { enableDismissTrigger } from './util/component-functions.js'
13+
import FocusTrap from './util/focustrap.js'
14+
import { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'
15+
import ScrollBarHelper from './util/scrollbar.js'
1616

1717
/**
1818
* Constants

0 commit comments

Comments
 (0)