eslint-plugin-react-web-api 1.20.0-next.0 → 1.20.0-next.10

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.
package/README.md CHANGED
@@ -25,10 +25,10 @@ export default [
25
25
  "react-web-api": reactWebAPI,
26
26
  rules: {
27
27
  // react-web-api recommended rules
28
- "react-web-api/no-leaked-timeout": "error",
29
- "react-web-api/no-leaked-interval": "error",
30
- "react-web-api/no-leaked-event-listener": "error",
31
- "react-web-api/no-leaked-resize-observer": "error",
28
+ "react-web-api/no-leaked-event-listener": "warn",
29
+ "react-web-api/no-leaked-interval": "warn",
30
+ "react-web-api/no-leaked-resize-observer": "warn",
31
+ "react-web-api/no-leaked-timeout": "warn",
32
32
  }
33
33
  ],
34
34
  },
@@ -37,15 +37,15 @@ export default [
37
37
 
38
38
  ## Rules
39
39
 
40
+ <https://eslint-react.xyz/docs/rules/overview#web-api-rules>
41
+
42
+ ## Rules to be implemented
43
+
40
44
  | Rule | Description | 💭 | |
41
45
  | :-------------------------------------- | :-------------------------------------------- | :-: | :-: |
42
- | `no-leaked-timeout` | Prevents leaked `setTimeout` | | |
43
- | `no-leaked-interval` | Prevents leaked `setInterval` | | |
44
46
  | `no-leaked-idle-callback` | Prevents leaked `requestIdleCallback` | | 🚧 |
45
47
  | `no-leaked-animation-frame` | Prevents leaked `requestAnimationFrame` | | 🚧 |
46
48
  | `no-leaked-event-source` | Prevents leaked `EventSource` | | 🚧 |
47
- | `no-leaked-event-listener` | Prevents leaked `addEventListener` | | |
48
- | `no-leaked-resize-observer` | Prevents leaked `ResizeObserver` | | |
49
49
  | `no-leaked-intersection-observer` | Prevents leaked `IntersectionObserver` | | 🚧 |
50
50
  | `no-leaked-mutation-observer` | Prevents leaked `MutationObserver` | | 🚧 |
51
51
  | `no-leaked-performance-observer` | Prevents leaked `PerformanceObserver` | | 🚧 |
package/dist/index.d.mts CHANGED
@@ -19,7 +19,6 @@ declare const _default: {
19
19
  "no-leaked-resize-observer": _typescript_eslint_utils_ts_eslint.RuleModule<MessageID$2, [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
20
20
  "no-leaked-timeout": _typescript_eslint_utils_ts_eslint.RuleModule<MessageID$3, [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
21
21
  };
22
- DEFAULT_ESLINT_REACT_SETTINGS: {};
23
22
  };
24
23
 
25
24
  export { _default as default };
package/dist/index.d.ts CHANGED
@@ -19,7 +19,6 @@ declare const _default: {
19
19
  "no-leaked-resize-observer": _typescript_eslint_utils_ts_eslint.RuleModule<MessageID$2, [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
20
20
  "no-leaked-timeout": _typescript_eslint_utils_ts_eslint.RuleModule<MessageID$3, [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
21
21
  };
22
- DEFAULT_ESLINT_REACT_SETTINGS: {};
23
22
  };
24
23
 
25
24
  export { _default as default };
package/dist/index.js CHANGED
@@ -34,7 +34,7 @@ var VAR2__namespace = /*#__PURE__*/_interopNamespace(VAR2);
34
34
 
35
35
  // package.json
36
36
  var name = "eslint-plugin-react-web-api";
37
- var version = "1.20.0-next.0";
37
+ var version = "1.20.0-next.10";
38
38
  var createRule = shared.createRuleForPlugin("web-api");
39
39
  function getInstanceID(node, prev) {
40
40
  switch (true) {
@@ -64,6 +64,9 @@ var ObserverEntry = tools.Data.taggedEnum();
64
64
 
65
65
  // src/rules/no-leaked-event-listener.ts
66
66
  var RULE_NAME = "no-leaked-event-listener";
67
+ var RULE_FEATURES = [
68
+ "LNT"
69
+ ];
67
70
  var defaultOptions = {
68
71
  capture: tools.O.some(false),
69
72
  once: tools.O.some(false),
@@ -150,7 +153,8 @@ var no_leaked_event_listener_default = createRule({
150
153
  meta: {
151
154
  type: "problem",
152
155
  docs: {
153
- description: "enforce that every 'addEventListener' in a component or custom hook has a corresponding 'removeEventListener'."
156
+ description: "enforce that every 'addEventListener' in a component or custom hook has a corresponding 'removeEventListener'.",
157
+ [Symbol.for("rule_features")]: RULE_FEATURES
154
158
  },
155
159
  messages: {
156
160
  noLeakedEventListenerInEffect: "A 'addEventListener' in '{{effectMethodKind}}' should have a corresponding 'removeEventListener' in its cleanup function.",
@@ -269,6 +273,9 @@ var no_leaked_event_listener_default = createRule({
269
273
  defaultOptions: []
270
274
  });
271
275
  var RULE_NAME2 = "no-leaked-interval";
276
+ var RULE_FEATURES2 = [
277
+ "LNT"
278
+ ];
272
279
  function getCallKind2(node) {
273
280
  switch (true) {
274
281
  case (node.callee.type === utils.AST_NODE_TYPES.Identifier && tsPattern.isMatching(tsPattern.P.union("setInterval", "clearInterval"), node.callee.name)):
@@ -283,7 +290,8 @@ var no_leaked_interval_default = createRule({
283
290
  meta: {
284
291
  type: "problem",
285
292
  docs: {
286
- description: "enforce that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'."
293
+ description: "enforce that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'.",
294
+ [Symbol.for("rule_features")]: RULE_FEATURES2
287
295
  },
288
296
  messages: {
289
297
  noLeakedIntervalInEffect: "A 'setInterval' created in '{{ kind }}' must be cleared with 'clearInterval' in the cleanup function.",
@@ -381,6 +389,9 @@ var no_leaked_interval_default = createRule({
381
389
  defaultOptions: []
382
390
  });
383
391
  var RULE_NAME3 = "no-leaked-resize-observer";
392
+ var RULE_FEATURES3 = [
393
+ "LNT"
394
+ ];
384
395
  function isNewResizeObserver(node) {
385
396
  return node.type === utils.AST_NODE_TYPES.NewExpression && node.callee.type === utils.AST_NODE_TYPES.Identifier && node.callee.name === "ResizeObserver";
386
397
  }
@@ -415,7 +426,8 @@ var no_leaked_resize_observer_default = createRule({
415
426
  meta: {
416
427
  type: "problem",
417
428
  docs: {
418
- description: "enforce cleanup of 'ResizeObserver' instances in components and custom hooks."
429
+ description: "enforce cleanup of 'ResizeObserver' instances in components and custom hooks.",
430
+ [Symbol.for("rule_features")]: RULE_FEATURES3
419
431
  },
420
432
  messages: {
421
433
  noLeakedResizeObserver: "A 'ResizeObserver' instance created in 'useEffect' must be disconnected in the cleanup function.",
@@ -520,6 +532,9 @@ var no_leaked_resize_observer_default = createRule({
520
532
  defaultOptions: []
521
533
  });
522
534
  var RULE_NAME4 = "no-leaked-timeout";
535
+ var RULE_FEATURES4 = [
536
+ "LNT"
537
+ ];
523
538
  function getCallKind4(node) {
524
539
  switch (true) {
525
540
  case (node.callee.type === utils.AST_NODE_TYPES.Identifier && tsPattern.isMatching(tsPattern.P.union("setTimeout", "clearTimeout"), node.callee.name)):
@@ -534,7 +549,8 @@ var no_leaked_timeout_default = createRule({
534
549
  meta: {
535
550
  type: "problem",
536
551
  docs: {
537
- description: "enforce that every 'setTimeout' in a component or custom hook has a corresponding 'clearTimeout'."
552
+ description: "enforce that every 'setTimeout' in a component or custom hook has a corresponding 'clearTimeout'.",
553
+ [Symbol.for("rule_features")]: RULE_FEATURES4
538
554
  },
539
555
  messages: {
540
556
  noLeakedTimeoutInEffect: "A 'setTimeout' created in '{{ kind }}' must be cleared with 'clearTimeout' in the cleanup function.",
@@ -630,7 +646,6 @@ var no_leaked_timeout_default = createRule({
630
646
  });
631
647
 
632
648
  // src/index.ts
633
- var DEFAULT_ESLINT_REACT_SETTINGS = {};
634
649
  var src_default = {
635
650
  meta: {
636
651
  name,
@@ -641,9 +656,7 @@ var src_default = {
641
656
  "no-leaked-interval": no_leaked_interval_default,
642
657
  "no-leaked-resize-observer": no_leaked_resize_observer_default,
643
658
  "no-leaked-timeout": no_leaked_timeout_default
644
- },
645
- // eslint-disable-next-line perfectionist/sort-objects
646
- DEFAULT_ESLINT_REACT_SETTINGS
659
+ }
647
660
  };
648
661
 
649
662
  module.exports = src_default;
package/dist/index.mjs CHANGED
@@ -10,7 +10,7 @@ import { AST_NODE_TYPES as AST_NODE_TYPES$1 } from '@typescript-eslint/types';
10
10
 
11
11
  // package.json
12
12
  var name = "eslint-plugin-react-web-api";
13
- var version = "1.20.0-next.0";
13
+ var version = "1.20.0-next.10";
14
14
  var createRule = createRuleForPlugin("web-api");
15
15
  function getInstanceID(node, prev) {
16
16
  switch (true) {
@@ -40,6 +40,9 @@ var ObserverEntry = Data.taggedEnum();
40
40
 
41
41
  // src/rules/no-leaked-event-listener.ts
42
42
  var RULE_NAME = "no-leaked-event-listener";
43
+ var RULE_FEATURES = [
44
+ "LNT"
45
+ ];
43
46
  var defaultOptions = {
44
47
  capture: O.some(false),
45
48
  once: O.some(false),
@@ -126,7 +129,8 @@ var no_leaked_event_listener_default = createRule({
126
129
  meta: {
127
130
  type: "problem",
128
131
  docs: {
129
- description: "enforce that every 'addEventListener' in a component or custom hook has a corresponding 'removeEventListener'."
132
+ description: "enforce that every 'addEventListener' in a component or custom hook has a corresponding 'removeEventListener'.",
133
+ [Symbol.for("rule_features")]: RULE_FEATURES
130
134
  },
131
135
  messages: {
132
136
  noLeakedEventListenerInEffect: "A 'addEventListener' in '{{effectMethodKind}}' should have a corresponding 'removeEventListener' in its cleanup function.",
@@ -245,6 +249,9 @@ var no_leaked_event_listener_default = createRule({
245
249
  defaultOptions: []
246
250
  });
247
251
  var RULE_NAME2 = "no-leaked-interval";
252
+ var RULE_FEATURES2 = [
253
+ "LNT"
254
+ ];
248
255
  function getCallKind2(node) {
249
256
  switch (true) {
250
257
  case (node.callee.type === AST_NODE_TYPES.Identifier && isMatching(P.union("setInterval", "clearInterval"), node.callee.name)):
@@ -259,7 +266,8 @@ var no_leaked_interval_default = createRule({
259
266
  meta: {
260
267
  type: "problem",
261
268
  docs: {
262
- description: "enforce that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'."
269
+ description: "enforce that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'.",
270
+ [Symbol.for("rule_features")]: RULE_FEATURES2
263
271
  },
264
272
  messages: {
265
273
  noLeakedIntervalInEffect: "A 'setInterval' created in '{{ kind }}' must be cleared with 'clearInterval' in the cleanup function.",
@@ -357,6 +365,9 @@ var no_leaked_interval_default = createRule({
357
365
  defaultOptions: []
358
366
  });
359
367
  var RULE_NAME3 = "no-leaked-resize-observer";
368
+ var RULE_FEATURES3 = [
369
+ "LNT"
370
+ ];
360
371
  function isNewResizeObserver(node) {
361
372
  return node.type === AST_NODE_TYPES.NewExpression && node.callee.type === AST_NODE_TYPES.Identifier && node.callee.name === "ResizeObserver";
362
373
  }
@@ -391,7 +402,8 @@ var no_leaked_resize_observer_default = createRule({
391
402
  meta: {
392
403
  type: "problem",
393
404
  docs: {
394
- description: "enforce cleanup of 'ResizeObserver' instances in components and custom hooks."
405
+ description: "enforce cleanup of 'ResizeObserver' instances in components and custom hooks.",
406
+ [Symbol.for("rule_features")]: RULE_FEATURES3
395
407
  },
396
408
  messages: {
397
409
  noLeakedResizeObserver: "A 'ResizeObserver' instance created in 'useEffect' must be disconnected in the cleanup function.",
@@ -496,6 +508,9 @@ var no_leaked_resize_observer_default = createRule({
496
508
  defaultOptions: []
497
509
  });
498
510
  var RULE_NAME4 = "no-leaked-timeout";
511
+ var RULE_FEATURES4 = [
512
+ "LNT"
513
+ ];
499
514
  function getCallKind4(node) {
500
515
  switch (true) {
501
516
  case (node.callee.type === AST_NODE_TYPES.Identifier && isMatching(P.union("setTimeout", "clearTimeout"), node.callee.name)):
@@ -510,7 +525,8 @@ var no_leaked_timeout_default = createRule({
510
525
  meta: {
511
526
  type: "problem",
512
527
  docs: {
513
- description: "enforce that every 'setTimeout' in a component or custom hook has a corresponding 'clearTimeout'."
528
+ description: "enforce that every 'setTimeout' in a component or custom hook has a corresponding 'clearTimeout'.",
529
+ [Symbol.for("rule_features")]: RULE_FEATURES4
514
530
  },
515
531
  messages: {
516
532
  noLeakedTimeoutInEffect: "A 'setTimeout' created in '{{ kind }}' must be cleared with 'clearTimeout' in the cleanup function.",
@@ -606,7 +622,6 @@ var no_leaked_timeout_default = createRule({
606
622
  });
607
623
 
608
624
  // src/index.ts
609
- var DEFAULT_ESLINT_REACT_SETTINGS = {};
610
625
  var src_default = {
611
626
  meta: {
612
627
  name,
@@ -617,9 +632,7 @@ var src_default = {
617
632
  "no-leaked-interval": no_leaked_interval_default,
618
633
  "no-leaked-resize-observer": no_leaked_resize_observer_default,
619
634
  "no-leaked-timeout": no_leaked_timeout_default
620
- },
621
- // eslint-disable-next-line perfectionist/sort-objects
622
- DEFAULT_ESLINT_REACT_SETTINGS
635
+ }
623
636
  };
624
637
 
625
638
  export { src_default as default };
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "eslint-plugin-react-web-api",
3
- "version": "1.20.0-next.0",
3
+ "version": "1.20.0-next.10",
4
4
  "description": "ESLint React's ESLint plugin for interacting with Web APIs",
5
5
  "keywords": [
6
+ "react",
7
+ "web-api",
6
8
  "eslint",
9
+ "eslint-react",
7
10
  "eslint-plugin",
8
- "web-api",
9
- "react",
10
- "dom"
11
+ "eslint-plugin-react-web-api"
11
12
  ],
12
13
  "homepage": "https://github.com/rel1cx/eslint-react",
13
14
  "bugs": {
@@ -47,19 +48,20 @@
47
48
  "@typescript-eslint/utils": "^8.18.0",
48
49
  "birecord": "^0.1.1",
49
50
  "ts-pattern": "^5.5.0",
50
- "@eslint-react/ast": "1.20.0-next.0",
51
- "@eslint-react/core": "1.20.0-next.0",
52
- "@eslint-react/jsx": "1.20.0-next.0",
53
- "@eslint-react/shared": "1.20.0-next.0",
54
- "@eslint-react/tools": "1.20.0-next.0",
55
- "@eslint-react/types": "1.20.0-next.0",
56
- "@eslint-react/var": "1.20.0-next.0"
51
+ "@eslint-react/jsx": "1.20.0-next.10",
52
+ "@eslint-react/ast": "1.20.0-next.10",
53
+ "@eslint-react/core": "1.20.0-next.10",
54
+ "@eslint-react/tools": "1.20.0-next.10",
55
+ "@eslint-react/types": "1.20.0-next.10",
56
+ "@eslint-react/shared": "1.20.0-next.10",
57
+ "@eslint-react/var": "1.20.0-next.10"
57
58
  },
58
59
  "devDependencies": {
59
60
  "@types/react": "^19.0.1",
60
61
  "@types/react-dom": "^19.0.2",
61
62
  "string-ts": "^2.2.0",
62
- "tsup": "^8.3.5"
63
+ "tsup": "^8.3.5",
64
+ "@workspace/configs": "0.0.0"
63
65
  },
64
66
  "peerDependencies": {
65
67
  "eslint": "^8.57.0 || ^9.0.0",