eslint-plugin-react-dom 5.0.0-next.0 → 5.0.1-beta.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.
- package/dist/index.js +68 -113
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { DEFAULT_ESLINT_REACT_SETTINGS, RE_JAVASCRIPT_PROTOCOL,
|
|
1
|
+
import { DEFAULT_ESLINT_REACT_SETTINGS, RE_JAVASCRIPT_PROTOCOL, defineRuleListener, getSettingsFromContext } from "@eslint-react/shared";
|
|
2
2
|
import { findAttribute, getAttributeStaticValue, getElementFullType, hasAnyAttribute, hasAttribute, isHostElement, isWhitespace, resolveAttributeValue } from "@eslint-react/jsx";
|
|
3
3
|
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
4
4
|
import { AST_NODE_TYPES } from "@typescript-eslint/types";
|
|
5
5
|
import { compare } from "compare-versions";
|
|
6
|
-
import "ts-pattern";
|
|
7
6
|
|
|
8
7
|
//#region \0rolldown/runtime.js
|
|
9
8
|
var __defProp = Object.defineProperty;
|
|
@@ -24,7 +23,7 @@ var __exportAll = (all, no_symbols) => {
|
|
|
24
23
|
//#endregion
|
|
25
24
|
//#region package.json
|
|
26
25
|
var name$2 = "eslint-plugin-react-dom";
|
|
27
|
-
var version = "5.0.
|
|
26
|
+
var version = "5.0.1-beta.1";
|
|
28
27
|
|
|
29
28
|
//#endregion
|
|
30
29
|
//#region src/utils/create-jsx-element-resolver.ts
|
|
@@ -60,13 +59,13 @@ function createJsxElementResolver(context) {
|
|
|
60
59
|
//#endregion
|
|
61
60
|
//#region src/utils/create-rule.ts
|
|
62
61
|
function getDocsUrl(ruleName) {
|
|
63
|
-
return
|
|
62
|
+
return `https://eslint-react.xyz/docs/rules/dom-${ruleName}`;
|
|
64
63
|
}
|
|
65
64
|
const createRule = ESLintUtils.RuleCreator(getDocsUrl);
|
|
66
65
|
|
|
67
66
|
//#endregion
|
|
68
67
|
//#region src/rules/no-dangerously-set-innerhtml-with-children/no-dangerously-set-innerhtml-with-children.ts
|
|
69
|
-
const RULE_NAME$
|
|
68
|
+
const RULE_NAME$15 = "no-dangerously-set-innerhtml-with-children";
|
|
70
69
|
var no_dangerously_set_innerhtml_with_children_default = createRule({
|
|
71
70
|
meta: {
|
|
72
71
|
type: "problem",
|
|
@@ -74,12 +73,12 @@ var no_dangerously_set_innerhtml_with_children_default = createRule({
|
|
|
74
73
|
messages: { default: "A DOM component cannot use both children and 'dangerouslySetInnerHTML'." },
|
|
75
74
|
schema: []
|
|
76
75
|
},
|
|
77
|
-
name: RULE_NAME$
|
|
78
|
-
create: create$
|
|
76
|
+
name: RULE_NAME$15,
|
|
77
|
+
create: create$15,
|
|
79
78
|
defaultOptions: []
|
|
80
79
|
});
|
|
81
80
|
const DSIH$1 = "dangerouslySetInnerHTML";
|
|
82
|
-
function create$
|
|
81
|
+
function create$15(context) {
|
|
83
82
|
if (!context.sourceCode.text.includes(DSIH$1)) return {};
|
|
84
83
|
return defineRuleListener({ JSXElement(node) {
|
|
85
84
|
if (!hasAttribute(context, node, DSIH$1)) return;
|
|
@@ -94,7 +93,7 @@ function create$16(context) {
|
|
|
94
93
|
|
|
95
94
|
//#endregion
|
|
96
95
|
//#region src/rules/no-dangerously-set-innerhtml/no-dangerously-set-innerhtml.ts
|
|
97
|
-
const RULE_NAME$
|
|
96
|
+
const RULE_NAME$14 = "no-dangerously-set-innerhtml";
|
|
98
97
|
const DSIH = "dangerouslySetInnerHTML";
|
|
99
98
|
var no_dangerously_set_innerhtml_default = createRule({
|
|
100
99
|
meta: {
|
|
@@ -103,11 +102,11 @@ var no_dangerously_set_innerhtml_default = createRule({
|
|
|
103
102
|
messages: { default: "Using 'dangerouslySetInnerHTML' may have security implications." },
|
|
104
103
|
schema: []
|
|
105
104
|
},
|
|
106
|
-
name: RULE_NAME$
|
|
107
|
-
create: create$
|
|
105
|
+
name: RULE_NAME$14,
|
|
106
|
+
create: create$14,
|
|
108
107
|
defaultOptions: []
|
|
109
108
|
});
|
|
110
|
-
function create$
|
|
109
|
+
function create$14(context) {
|
|
111
110
|
if (!context.sourceCode.text.includes(DSIH)) return {};
|
|
112
111
|
return defineRuleListener({ JSXElement(node) {
|
|
113
112
|
const dsihProp = findAttribute(context, node, DSIH);
|
|
@@ -121,7 +120,7 @@ function create$15(context) {
|
|
|
121
120
|
|
|
122
121
|
//#endregion
|
|
123
122
|
//#region src/rules/no-find-dom-node/no-find-dom-node.ts
|
|
124
|
-
const RULE_NAME$
|
|
123
|
+
const RULE_NAME$13 = "no-find-dom-node";
|
|
125
124
|
var no_find_dom_node_default = createRule({
|
|
126
125
|
meta: {
|
|
127
126
|
type: "problem",
|
|
@@ -129,12 +128,12 @@ var no_find_dom_node_default = createRule({
|
|
|
129
128
|
messages: { default: "[Deprecated] Use alternatives instead." },
|
|
130
129
|
schema: []
|
|
131
130
|
},
|
|
132
|
-
name: RULE_NAME$
|
|
133
|
-
create: create$
|
|
131
|
+
name: RULE_NAME$13,
|
|
132
|
+
create: create$13,
|
|
134
133
|
defaultOptions: []
|
|
135
134
|
});
|
|
136
135
|
const findDOMNode = "findDOMNode";
|
|
137
|
-
function create$
|
|
136
|
+
function create$13(context) {
|
|
138
137
|
if (!context.sourceCode.text.includes(findDOMNode)) return {};
|
|
139
138
|
return defineRuleListener({ CallExpression(node) {
|
|
140
139
|
const { callee } = node;
|
|
@@ -157,7 +156,7 @@ function create$14(context) {
|
|
|
157
156
|
|
|
158
157
|
//#endregion
|
|
159
158
|
//#region src/rules/no-flush-sync/no-flush-sync.ts
|
|
160
|
-
const RULE_NAME$
|
|
159
|
+
const RULE_NAME$12 = "no-flush-sync";
|
|
161
160
|
var no_flush_sync_default = createRule({
|
|
162
161
|
meta: {
|
|
163
162
|
type: "problem",
|
|
@@ -165,12 +164,12 @@ var no_flush_sync_default = createRule({
|
|
|
165
164
|
messages: { default: "Using 'flushSync' is uncommon and can hurt the performance of your app." },
|
|
166
165
|
schema: []
|
|
167
166
|
},
|
|
168
|
-
name: RULE_NAME$
|
|
169
|
-
create: create$
|
|
167
|
+
name: RULE_NAME$12,
|
|
168
|
+
create: create$12,
|
|
170
169
|
defaultOptions: []
|
|
171
170
|
});
|
|
172
171
|
const flushSync = "flushSync";
|
|
173
|
-
function create$
|
|
172
|
+
function create$12(context) {
|
|
174
173
|
if (!context.sourceCode.text.includes(flushSync)) return {};
|
|
175
174
|
return defineRuleListener({ CallExpression(node) {
|
|
176
175
|
const { callee } = node;
|
|
@@ -193,7 +192,7 @@ function create$13(context) {
|
|
|
193
192
|
|
|
194
193
|
//#endregion
|
|
195
194
|
//#region src/rules/no-hydrate/no-hydrate.ts
|
|
196
|
-
const RULE_NAME$
|
|
195
|
+
const RULE_NAME$11 = "no-hydrate";
|
|
197
196
|
var no_hydrate_default = createRule({
|
|
198
197
|
meta: {
|
|
199
198
|
type: "problem",
|
|
@@ -202,12 +201,12 @@ var no_hydrate_default = createRule({
|
|
|
202
201
|
messages: { default: "[Deprecated] Use 'hydrateRoot()' instead." },
|
|
203
202
|
schema: []
|
|
204
203
|
},
|
|
205
|
-
name: RULE_NAME$
|
|
206
|
-
create: create$
|
|
204
|
+
name: RULE_NAME$11,
|
|
205
|
+
create: create$11,
|
|
207
206
|
defaultOptions: []
|
|
208
207
|
});
|
|
209
208
|
const hydrate = "hydrate";
|
|
210
|
-
function create$
|
|
209
|
+
function create$11(context) {
|
|
211
210
|
if (!context.sourceCode.text.includes(hydrate)) return {};
|
|
212
211
|
if (compare(getSettingsFromContext(context).version, "18.0.0", "<")) return {};
|
|
213
212
|
const reactDomNames = /* @__PURE__ */ new Set();
|
|
@@ -258,7 +257,7 @@ function getFix$2(context, node) {
|
|
|
258
257
|
|
|
259
258
|
//#endregion
|
|
260
259
|
//#region src/rules/no-missing-button-type/no-missing-button-type.ts
|
|
261
|
-
const RULE_NAME$
|
|
260
|
+
const RULE_NAME$10 = "no-missing-button-type";
|
|
262
261
|
const BUTTON_TYPES = [
|
|
263
262
|
"button",
|
|
264
263
|
"submit",
|
|
@@ -275,11 +274,11 @@ var no_missing_button_type_default = createRule({
|
|
|
275
274
|
},
|
|
276
275
|
schema: []
|
|
277
276
|
},
|
|
278
|
-
name: RULE_NAME$
|
|
279
|
-
create: create$
|
|
277
|
+
name: RULE_NAME$10,
|
|
278
|
+
create: create$10,
|
|
280
279
|
defaultOptions: []
|
|
281
280
|
});
|
|
282
|
-
function create$
|
|
281
|
+
function create$10(context) {
|
|
283
282
|
const resolver = createJsxElementResolver(context);
|
|
284
283
|
return defineRuleListener({ JSXElement(node) {
|
|
285
284
|
if (resolver.resolve(node).domElementType !== "button") return;
|
|
@@ -298,7 +297,7 @@ function create$11(context) {
|
|
|
298
297
|
|
|
299
298
|
//#endregion
|
|
300
299
|
//#region src/rules/no-missing-iframe-sandbox/no-missing-iframe-sandbox.ts
|
|
301
|
-
const RULE_NAME$
|
|
300
|
+
const RULE_NAME$9 = "no-missing-iframe-sandbox";
|
|
302
301
|
var no_missing_iframe_sandbox_default = createRule({
|
|
303
302
|
meta: {
|
|
304
303
|
type: "problem",
|
|
@@ -311,11 +310,11 @@ var no_missing_iframe_sandbox_default = createRule({
|
|
|
311
310
|
},
|
|
312
311
|
schema: []
|
|
313
312
|
},
|
|
314
|
-
name: RULE_NAME$
|
|
315
|
-
create: create$
|
|
313
|
+
name: RULE_NAME$9,
|
|
314
|
+
create: create$9,
|
|
316
315
|
defaultOptions: []
|
|
317
316
|
});
|
|
318
|
-
function create$
|
|
317
|
+
function create$9(context) {
|
|
319
318
|
const resolver = createJsxElementResolver(context);
|
|
320
319
|
return defineRuleListener({ JSXElement(node) {
|
|
321
320
|
const { domElementType } = resolver.resolve(node);
|
|
@@ -355,7 +354,7 @@ function create$10(context) {
|
|
|
355
354
|
|
|
356
355
|
//#endregion
|
|
357
356
|
//#region src/rules/no-render-return-value/no-render-return-value.ts
|
|
358
|
-
const RULE_NAME$
|
|
357
|
+
const RULE_NAME$8 = "no-render-return-value";
|
|
359
358
|
const banParentTypes = [
|
|
360
359
|
AST_NODE_TYPES.VariableDeclarator,
|
|
361
360
|
AST_NODE_TYPES.Property,
|
|
@@ -370,11 +369,11 @@ var no_render_return_value_default = createRule({
|
|
|
370
369
|
messages: { default: "Do not depend on the return value from 'ReactDOM.render'." },
|
|
371
370
|
schema: []
|
|
372
371
|
},
|
|
373
|
-
name: RULE_NAME$
|
|
374
|
-
create: create$
|
|
372
|
+
name: RULE_NAME$8,
|
|
373
|
+
create: create$8,
|
|
375
374
|
defaultOptions: []
|
|
376
375
|
});
|
|
377
|
-
function create$
|
|
376
|
+
function create$8(context) {
|
|
378
377
|
const reactDomNames = new Set(["ReactDOM", "ReactDOM"]);
|
|
379
378
|
const renderNames = /* @__PURE__ */ new Set();
|
|
380
379
|
return defineRuleListener({
|
|
@@ -413,7 +412,7 @@ function create$9(context) {
|
|
|
413
412
|
|
|
414
413
|
//#endregion
|
|
415
414
|
//#region src/rules/no-render/no-render.ts
|
|
416
|
-
const RULE_NAME$
|
|
415
|
+
const RULE_NAME$7 = "no-render";
|
|
417
416
|
var no_render_default = createRule({
|
|
418
417
|
meta: {
|
|
419
418
|
type: "problem",
|
|
@@ -422,11 +421,11 @@ var no_render_default = createRule({
|
|
|
422
421
|
messages: { default: "[Deprecated] Use 'createRoot(node).render()' instead." },
|
|
423
422
|
schema: []
|
|
424
423
|
},
|
|
425
|
-
name: RULE_NAME$
|
|
426
|
-
create: create$
|
|
424
|
+
name: RULE_NAME$7,
|
|
425
|
+
create: create$7,
|
|
427
426
|
defaultOptions: []
|
|
428
427
|
});
|
|
429
|
-
function create$
|
|
428
|
+
function create$7(context) {
|
|
430
429
|
if (!context.sourceCode.text.includes("render")) return {};
|
|
431
430
|
if (compare(getSettingsFromContext(context).version, "18.0.0", "<")) return {};
|
|
432
431
|
const reactDomNames = new Set(["ReactDOM", "ReactDOM"]);
|
|
@@ -483,7 +482,7 @@ function getFix$1(context, node) {
|
|
|
483
482
|
|
|
484
483
|
//#endregion
|
|
485
484
|
//#region src/rules/no-script-url/no-script-url.ts
|
|
486
|
-
const RULE_NAME$
|
|
485
|
+
const RULE_NAME$6 = "no-script-url";
|
|
487
486
|
var no_script_url_default = createRule({
|
|
488
487
|
meta: {
|
|
489
488
|
type: "problem",
|
|
@@ -491,11 +490,11 @@ var no_script_url_default = createRule({
|
|
|
491
490
|
messages: { default: "Using a `javascript:` URL is a security risk and should be avoided." },
|
|
492
491
|
schema: []
|
|
493
492
|
},
|
|
494
|
-
name: RULE_NAME$
|
|
495
|
-
create: create$
|
|
493
|
+
name: RULE_NAME$6,
|
|
494
|
+
create: create$6,
|
|
496
495
|
defaultOptions: []
|
|
497
496
|
});
|
|
498
|
-
function create$
|
|
497
|
+
function create$6(context) {
|
|
499
498
|
return defineRuleListener({ JSXAttribute(node) {
|
|
500
499
|
if (node.name.type !== AST_NODE_TYPES.JSXIdentifier || node.value == null) return;
|
|
501
500
|
const value = resolveAttributeValue(context, node).toStatic();
|
|
@@ -508,7 +507,7 @@ function create$7(context) {
|
|
|
508
507
|
|
|
509
508
|
//#endregion
|
|
510
509
|
//#region src/rules/no-string-style-prop/no-string-style-prop.ts
|
|
511
|
-
const RULE_NAME$
|
|
510
|
+
const RULE_NAME$5 = "no-string-style-prop";
|
|
512
511
|
var no_string_style_prop_default = createRule({
|
|
513
512
|
meta: {
|
|
514
513
|
type: "problem",
|
|
@@ -516,11 +515,11 @@ var no_string_style_prop_default = createRule({
|
|
|
516
515
|
messages: { default: "Do not use string style prop. Use an object instead." },
|
|
517
516
|
schema: []
|
|
518
517
|
},
|
|
519
|
-
name: RULE_NAME$
|
|
520
|
-
create: create$
|
|
518
|
+
name: RULE_NAME$5,
|
|
519
|
+
create: create$5,
|
|
521
520
|
defaultOptions: []
|
|
522
521
|
});
|
|
523
|
-
function create$
|
|
522
|
+
function create$5(context) {
|
|
524
523
|
return defineRuleListener({ JSXElement(node) {
|
|
525
524
|
if (!isHostElement(node)) return;
|
|
526
525
|
const styleProp = findAttribute(context, node, "style");
|
|
@@ -535,7 +534,7 @@ function create$6(context) {
|
|
|
535
534
|
|
|
536
535
|
//#endregion
|
|
537
536
|
//#region src/rules/no-unknown-property/no-unknown-property.ts
|
|
538
|
-
const RULE_NAME$
|
|
537
|
+
const RULE_NAME$4 = "no-unknown-property";
|
|
539
538
|
const DEFAULTS = {
|
|
540
539
|
ignore: [],
|
|
541
540
|
requireDataLowercase: false
|
|
@@ -1585,8 +1584,8 @@ var no_unknown_property_default = createRule({
|
|
|
1585
1584
|
}
|
|
1586
1585
|
}]
|
|
1587
1586
|
},
|
|
1588
|
-
name: RULE_NAME$
|
|
1589
|
-
create: create$
|
|
1587
|
+
name: RULE_NAME$4,
|
|
1588
|
+
create: create$4,
|
|
1590
1589
|
defaultOptions: []
|
|
1591
1590
|
});
|
|
1592
1591
|
/**
|
|
@@ -1594,7 +1593,7 @@ var no_unknown_property_default = createRule({
|
|
|
1594
1593
|
* @param context ESLint rule context
|
|
1595
1594
|
* @returns Rule listener
|
|
1596
1595
|
*/
|
|
1597
|
-
function create$
|
|
1596
|
+
function create$4(context) {
|
|
1598
1597
|
/**
|
|
1599
1598
|
* Gets the ignore configuration from rule options
|
|
1600
1599
|
* @returns Array of attribute names to ignore
|
|
@@ -1670,7 +1669,7 @@ function create$5(context) {
|
|
|
1670
1669
|
|
|
1671
1670
|
//#endregion
|
|
1672
1671
|
//#region src/rules/no-unsafe-iframe-sandbox/no-unsafe-iframe-sandbox.ts
|
|
1673
|
-
const RULE_NAME$
|
|
1672
|
+
const RULE_NAME$3 = "no-unsafe-iframe-sandbox";
|
|
1674
1673
|
const UNSAFE_SANDBOX_VALUES = ["allow-scripts", "allow-same-origin"];
|
|
1675
1674
|
/**
|
|
1676
1675
|
* Check if the sandbox attribute value contains an unsafe combination
|
|
@@ -1690,11 +1689,11 @@ var no_unsafe_iframe_sandbox_default = createRule({
|
|
|
1690
1689
|
messages: { default: "Unsafe 'sandbox' attribute value on 'iframe' component." },
|
|
1691
1690
|
schema: []
|
|
1692
1691
|
},
|
|
1693
|
-
name: RULE_NAME$
|
|
1694
|
-
create: create$
|
|
1692
|
+
name: RULE_NAME$3,
|
|
1693
|
+
create: create$3,
|
|
1695
1694
|
defaultOptions: []
|
|
1696
1695
|
});
|
|
1697
|
-
function create$
|
|
1696
|
+
function create$3(context) {
|
|
1698
1697
|
const resolver = createJsxElementResolver(context);
|
|
1699
1698
|
return defineRuleListener({ JSXElement(node) {
|
|
1700
1699
|
if (resolver.resolve(node).domElementType !== "iframe") return;
|
|
@@ -1710,7 +1709,7 @@ function create$4(context) {
|
|
|
1710
1709
|
|
|
1711
1710
|
//#endregion
|
|
1712
1711
|
//#region src/rules/no-unsafe-target-blank/no-unsafe-target-blank.ts
|
|
1713
|
-
const RULE_NAME$
|
|
1712
|
+
const RULE_NAME$2 = "no-unsafe-target-blank";
|
|
1714
1713
|
/**
|
|
1715
1714
|
* Check if a value appears to be an external link.
|
|
1716
1715
|
* External links typically start with http(s):// or have protocol-relative format.
|
|
@@ -1743,11 +1742,11 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1743
1742
|
},
|
|
1744
1743
|
schema: []
|
|
1745
1744
|
},
|
|
1746
|
-
name: RULE_NAME$
|
|
1747
|
-
create: create$
|
|
1745
|
+
name: RULE_NAME$2,
|
|
1746
|
+
create: create$2,
|
|
1748
1747
|
defaultOptions: []
|
|
1749
1748
|
});
|
|
1750
|
-
function create$
|
|
1749
|
+
function create$2(context) {
|
|
1751
1750
|
const resolver = createJsxElementResolver(context);
|
|
1752
1751
|
return defineRuleListener({ JSXElement(node) {
|
|
1753
1752
|
const { domElementType } = resolver.resolve(node);
|
|
@@ -1784,7 +1783,7 @@ function create$3(context) {
|
|
|
1784
1783
|
|
|
1785
1784
|
//#endregion
|
|
1786
1785
|
//#region src/rules/no-use-form-state/no-use-form-state.ts
|
|
1787
|
-
const RULE_NAME$
|
|
1786
|
+
const RULE_NAME$1 = "no-use-form-state";
|
|
1788
1787
|
var no_use_form_state_default = createRule({
|
|
1789
1788
|
meta: {
|
|
1790
1789
|
type: "problem",
|
|
@@ -1793,11 +1792,11 @@ var no_use_form_state_default = createRule({
|
|
|
1793
1792
|
messages: { default: "[Deprecated] Use 'useActionState' from 'react' package instead." },
|
|
1794
1793
|
schema: []
|
|
1795
1794
|
},
|
|
1796
|
-
name: RULE_NAME$
|
|
1797
|
-
create: create$
|
|
1795
|
+
name: RULE_NAME$1,
|
|
1796
|
+
create: create$1,
|
|
1798
1797
|
defaultOptions: []
|
|
1799
1798
|
});
|
|
1800
|
-
function create$
|
|
1799
|
+
function create$1(context) {
|
|
1801
1800
|
if (!context.sourceCode.text.includes("useFormState")) return {};
|
|
1802
1801
|
if (compare(getSettingsFromContext(context).version, "19.0.0", "<")) return {};
|
|
1803
1802
|
const reactDomNames = /* @__PURE__ */ new Set();
|
|
@@ -1846,7 +1845,7 @@ function getFix(context, node) {
|
|
|
1846
1845
|
|
|
1847
1846
|
//#endregion
|
|
1848
1847
|
//#region src/rules/no-void-elements-with-children/no-void-elements-with-children.ts
|
|
1849
|
-
const RULE_NAME
|
|
1848
|
+
const RULE_NAME = "no-void-elements-with-children";
|
|
1850
1849
|
const voidElements = new Set([
|
|
1851
1850
|
"area",
|
|
1852
1851
|
"base",
|
|
@@ -1872,11 +1871,11 @@ var no_void_elements_with_children_default = createRule({
|
|
|
1872
1871
|
messages: { default: "'{{elementType}}' is a void element tag and must not have children." },
|
|
1873
1872
|
schema: []
|
|
1874
1873
|
},
|
|
1875
|
-
name: RULE_NAME
|
|
1876
|
-
create
|
|
1874
|
+
name: RULE_NAME,
|
|
1875
|
+
create,
|
|
1877
1876
|
defaultOptions: []
|
|
1878
1877
|
});
|
|
1879
|
-
function create
|
|
1878
|
+
function create(context) {
|
|
1880
1879
|
const resolver = createJsxElementResolver(context);
|
|
1881
1880
|
return defineRuleListener({ JSXElement(node) {
|
|
1882
1881
|
const { domElementType } = resolver.resolve(node);
|
|
@@ -1889,49 +1888,6 @@ function create$1(context) {
|
|
|
1889
1888
|
} });
|
|
1890
1889
|
}
|
|
1891
1890
|
|
|
1892
|
-
//#endregion
|
|
1893
|
-
//#region src/rules/prefer-namespace-import/prefer-namespace-import.ts
|
|
1894
|
-
const RULE_NAME = "prefer-namespace-import";
|
|
1895
|
-
var prefer_namespace_import_default = createRule({
|
|
1896
|
-
meta: {
|
|
1897
|
-
type: "suggestion",
|
|
1898
|
-
docs: { description: "Enforces importing React DOM via a namespace import." },
|
|
1899
|
-
fixable: "code",
|
|
1900
|
-
messages: { default: "Prefer importing React DOM via a namespace import." },
|
|
1901
|
-
schema: []
|
|
1902
|
-
},
|
|
1903
|
-
name: RULE_NAME,
|
|
1904
|
-
create,
|
|
1905
|
-
defaultOptions: []
|
|
1906
|
-
});
|
|
1907
|
-
const importSources = [
|
|
1908
|
-
"react-dom",
|
|
1909
|
-
"react-dom/client",
|
|
1910
|
-
"react-dom/server"
|
|
1911
|
-
];
|
|
1912
|
-
function create(context) {
|
|
1913
|
-
return defineRuleListener({ [`ImportDeclaration ImportDefaultSpecifier`](node) {
|
|
1914
|
-
const importSource = node.parent.source.value;
|
|
1915
|
-
if (!importSources.includes(importSource)) return;
|
|
1916
|
-
const hasOtherSpecifiers = node.parent.specifiers.length > 1;
|
|
1917
|
-
context.report({
|
|
1918
|
-
data: { importSource },
|
|
1919
|
-
fix(fixer) {
|
|
1920
|
-
const importDeclarationText = context.sourceCode.getText(node.parent);
|
|
1921
|
-
const semi = importDeclarationText.endsWith(";") ? ";" : "";
|
|
1922
|
-
const quote = node.parent.source.raw.at(0) ?? "'";
|
|
1923
|
-
const importStringPrefix = `import${node.parent.importKind === "type" ? " type" : ""}`;
|
|
1924
|
-
const importSourceQuoted = `${quote}${importSource}${quote}`;
|
|
1925
|
-
if (!hasOtherSpecifiers) return fixer.replaceText(node.parent, `${importStringPrefix} * as ${node.local.name} from ${importSourceQuoted}${semi}`);
|
|
1926
|
-
const specifiers = importDeclarationText.slice(importDeclarationText.indexOf("{"), importDeclarationText.indexOf("}") + 1);
|
|
1927
|
-
return fixer.replaceText(node.parent, [`${importStringPrefix} * as ${node.local.name} from ${importSourceQuoted}${semi}`, `${importStringPrefix} ${specifiers} from ${importSourceQuoted}${semi}`].join("\n"));
|
|
1928
|
-
},
|
|
1929
|
-
messageId: "default",
|
|
1930
|
-
node: hasOtherSpecifiers ? node : node.parent
|
|
1931
|
-
});
|
|
1932
|
-
} });
|
|
1933
|
-
}
|
|
1934
|
-
|
|
1935
1891
|
//#endregion
|
|
1936
1892
|
//#region src/plugin.ts
|
|
1937
1893
|
const plugin = {
|
|
@@ -1955,8 +1911,7 @@ const plugin = {
|
|
|
1955
1911
|
"no-unsafe-iframe-sandbox": no_unsafe_iframe_sandbox_default,
|
|
1956
1912
|
"no-unsafe-target-blank": no_unsafe_target_blank_default,
|
|
1957
1913
|
"no-use-form-state": no_use_form_state_default,
|
|
1958
|
-
"no-void-elements-with-children": no_void_elements_with_children_default
|
|
1959
|
-
"prefer-namespace-import": prefer_namespace_import_default
|
|
1914
|
+
"no-void-elements-with-children": no_void_elements_with_children_default
|
|
1960
1915
|
}
|
|
1961
1916
|
};
|
|
1962
1917
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-react-dom",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1-beta.1",
|
|
4
4
|
"description": "ESLint React's ESLint plugin for DOM related rules.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"@typescript-eslint/utils": "^8.58.0",
|
|
44
44
|
"compare-versions": "^6.1.1",
|
|
45
45
|
"ts-pattern": "^5.9.0",
|
|
46
|
-
"@eslint-react/ast": "5.0.
|
|
47
|
-
"@eslint-react/core": "5.0.
|
|
48
|
-
"@eslint-react/
|
|
49
|
-
"@eslint-react/
|
|
50
|
-
"@eslint-react/
|
|
46
|
+
"@eslint-react/ast": "5.0.1-beta.1",
|
|
47
|
+
"@eslint-react/core": "5.0.1-beta.1",
|
|
48
|
+
"@eslint-react/jsx": "5.0.1-beta.1",
|
|
49
|
+
"@eslint-react/var": "5.0.1-beta.1",
|
|
50
|
+
"@eslint-react/shared": "5.0.1-beta.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/react": "^19.2.14",
|