@eslint-react/jsx 1.43.2-next.2 → 1.45.0-next.3
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.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +25 -22
- package/dist/index.mjs +24 -22
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -72,6 +72,8 @@ declare const JSXDetectionHint: {
|
|
|
72
72
|
};
|
|
73
73
|
declare const DEFAULT_JSX_DETECTION_HINT: bigint;
|
|
74
74
|
|
|
75
|
+
type TSESTreeJSX = TSESTree.JSXAttribute | TSESTree.JSXClosingElement | TSESTree.JSXClosingFragment | TSESTree.JSXElement | TSESTree.JSXEmptyExpression | TSESTree.JSXExpressionContainer | TSESTree.JSXFragment | TSESTree.JSXIdentifier | TSESTree.JSXMemberExpression | TSESTree.JSXNamespacedName | TSESTree.JSXOpeningElement | TSESTree.JSXOpeningFragment | TSESTree.JSXSpreadAttribute | TSESTree.JSXSpreadChild | TSESTree.JSXText;
|
|
76
|
+
declare const isJSX: (node: TSESTree.Node | null | undefined) => node is TSESTree.JSXIdentifier | TSESTree.JSXMemberExpression | TSESTree.JSXNamespacedName | TSESTree.JSXOpeningElement | TSESTree.JSXClosingElement | TSESTree.JSXOpeningFragment | TSESTree.JSXClosingFragment | TSESTree.JSXText | TSESTree.JSXAttribute | TSESTree.JSXSpreadAttribute | TSESTree.JSXElement | TSESTree.JSXFragment | TSESTree.JSXExpressionContainer | TSESTree.JSXSpreadChild | TSESTree.JSXEmptyExpression;
|
|
75
77
|
/**
|
|
76
78
|
* Check if a node is a `JSXText` or a `Literal` node
|
|
77
79
|
* @param node The AST node to check
|
|
@@ -97,4 +99,4 @@ declare function isJsxLike(code: {
|
|
|
97
99
|
*/
|
|
98
100
|
declare function toString(node: TSESTree.JSXIdentifier | TSESTree.JSXMemberExpression | TSESTree.JSXNamespacedName | TSESTree.JSXOpeningElement | TSESTree.JSXClosingElement | TSESTree.JSXOpeningFragment | TSESTree.JSXClosingFragment | TSESTree.JSXText): string;
|
|
99
101
|
|
|
100
|
-
export { DEFAULT_JSX_DETECTION_HINT, JSXDetectionHint, findParentAttribute, getAttribute, getAttributeName, getAttributeValue, getElementType, hasAnyAttribute, hasAttribute, hasEveryAttribute, isFragmentElement, isHostElement, isJsxLike, isJsxText, isKeyedElement, toString };
|
|
102
|
+
export { DEFAULT_JSX_DETECTION_HINT, JSXDetectionHint, type TSESTreeJSX, findParentAttribute, getAttribute, getAttributeName, getAttributeValue, getElementType, hasAnyAttribute, hasAttribute, hasEveryAttribute, isFragmentElement, isHostElement, isJSX, isJsxLike, isJsxText, isKeyedElement, toString };
|
package/dist/index.d.ts
CHANGED
|
@@ -72,6 +72,8 @@ declare const JSXDetectionHint: {
|
|
|
72
72
|
};
|
|
73
73
|
declare const DEFAULT_JSX_DETECTION_HINT: bigint;
|
|
74
74
|
|
|
75
|
+
type TSESTreeJSX = TSESTree.JSXAttribute | TSESTree.JSXClosingElement | TSESTree.JSXClosingFragment | TSESTree.JSXElement | TSESTree.JSXEmptyExpression | TSESTree.JSXExpressionContainer | TSESTree.JSXFragment | TSESTree.JSXIdentifier | TSESTree.JSXMemberExpression | TSESTree.JSXNamespacedName | TSESTree.JSXOpeningElement | TSESTree.JSXOpeningFragment | TSESTree.JSXSpreadAttribute | TSESTree.JSXSpreadChild | TSESTree.JSXText;
|
|
76
|
+
declare const isJSX: (node: TSESTree.Node | null | undefined) => node is TSESTree.JSXIdentifier | TSESTree.JSXMemberExpression | TSESTree.JSXNamespacedName | TSESTree.JSXOpeningElement | TSESTree.JSXClosingElement | TSESTree.JSXOpeningFragment | TSESTree.JSXClosingFragment | TSESTree.JSXText | TSESTree.JSXAttribute | TSESTree.JSXSpreadAttribute | TSESTree.JSXElement | TSESTree.JSXFragment | TSESTree.JSXExpressionContainer | TSESTree.JSXSpreadChild | TSESTree.JSXEmptyExpression;
|
|
75
77
|
/**
|
|
76
78
|
* Check if a node is a `JSXText` or a `Literal` node
|
|
77
79
|
* @param node The AST node to check
|
|
@@ -97,4 +99,4 @@ declare function isJsxLike(code: {
|
|
|
97
99
|
*/
|
|
98
100
|
declare function toString(node: TSESTree.JSXIdentifier | TSESTree.JSXMemberExpression | TSESTree.JSXNamespacedName | TSESTree.JSXOpeningElement | TSESTree.JSXClosingElement | TSESTree.JSXOpeningFragment | TSESTree.JSXClosingFragment | TSESTree.JSXText): string;
|
|
99
101
|
|
|
100
|
-
export { DEFAULT_JSX_DETECTION_HINT, JSXDetectionHint, findParentAttribute, getAttribute, getAttributeName, getAttributeValue, getElementType, hasAnyAttribute, hasAttribute, hasEveryAttribute, isFragmentElement, isHostElement, isJsxLike, isJsxText, isKeyedElement, toString };
|
|
102
|
+
export { DEFAULT_JSX_DETECTION_HINT, JSXDetectionHint, type TSESTreeJSX, findParentAttribute, getAttribute, getAttributeName, getAttributeValue, getElementType, hasAnyAttribute, hasAttribute, hasEveryAttribute, isFragmentElement, isHostElement, isJSX, isJsxLike, isJsxText, isKeyedElement, toString };
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var VAR = require('@eslint-react/var');
|
|
4
4
|
var types = require('@typescript-eslint/types');
|
|
5
5
|
var tsPattern = require('ts-pattern');
|
|
6
|
-
var
|
|
6
|
+
var AST2 = require('@eslint-react/ast');
|
|
7
7
|
var eff = require('@eslint-react/eff');
|
|
8
8
|
|
|
9
9
|
function _interopNamespace(e) {
|
|
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
var VAR__namespace = /*#__PURE__*/_interopNamespace(VAR);
|
|
28
|
-
var
|
|
28
|
+
var AST2__namespace = /*#__PURE__*/_interopNamespace(AST2);
|
|
29
29
|
|
|
30
30
|
// src/attribute/attribute.ts
|
|
31
31
|
function toString(node) {
|
|
@@ -130,7 +130,7 @@ function findParentAttribute(node, test = eff.constTrue) {
|
|
|
130
130
|
const guard = (node2) => {
|
|
131
131
|
return node2.type === types.AST_NODE_TYPES.JSXAttribute && test(node2);
|
|
132
132
|
};
|
|
133
|
-
return
|
|
133
|
+
return AST2__namespace.findParentNode(node, guard);
|
|
134
134
|
}
|
|
135
135
|
function getElementType(node) {
|
|
136
136
|
if (node.type === types.AST_NODE_TYPES.JSXFragment) {
|
|
@@ -169,29 +169,31 @@ var JSXDetectionHint = {
|
|
|
169
169
|
var DEFAULT_JSX_DETECTION_HINT = 0n | JSXDetectionHint.SkipUndefined | JSXDetectionHint.SkipBooleanLiteral;
|
|
170
170
|
|
|
171
171
|
// src/jsx-detection.ts
|
|
172
|
+
var isJSX = AST2__namespace.isOneOf([
|
|
173
|
+
types.AST_NODE_TYPES.JSXAttribute,
|
|
174
|
+
types.AST_NODE_TYPES.JSXClosingElement,
|
|
175
|
+
types.AST_NODE_TYPES.JSXClosingFragment,
|
|
176
|
+
types.AST_NODE_TYPES.JSXElement,
|
|
177
|
+
types.AST_NODE_TYPES.JSXEmptyExpression,
|
|
178
|
+
types.AST_NODE_TYPES.JSXExpressionContainer,
|
|
179
|
+
types.AST_NODE_TYPES.JSXFragment,
|
|
180
|
+
types.AST_NODE_TYPES.JSXIdentifier,
|
|
181
|
+
types.AST_NODE_TYPES.JSXMemberExpression,
|
|
182
|
+
types.AST_NODE_TYPES.JSXNamespacedName,
|
|
183
|
+
types.AST_NODE_TYPES.JSXOpeningElement,
|
|
184
|
+
types.AST_NODE_TYPES.JSXOpeningFragment,
|
|
185
|
+
types.AST_NODE_TYPES.JSXSpreadAttribute,
|
|
186
|
+
types.AST_NODE_TYPES.JSXSpreadChild,
|
|
187
|
+
types.AST_NODE_TYPES.JSXText
|
|
188
|
+
]);
|
|
172
189
|
function isJsxText(node) {
|
|
173
190
|
if (node == null) return false;
|
|
174
191
|
return node.type === types.AST_NODE_TYPES.JSXText || node.type === types.AST_NODE_TYPES.Literal;
|
|
175
192
|
}
|
|
176
193
|
function isJsxLike(code, node, hint = DEFAULT_JSX_DETECTION_HINT) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
case types.AST_NODE_TYPES.JSXFragment:
|
|
181
|
-
case types.AST_NODE_TYPES.JSXAttribute:
|
|
182
|
-
case types.AST_NODE_TYPES.JSXClosingElement:
|
|
183
|
-
case types.AST_NODE_TYPES.JSXClosingFragment:
|
|
184
|
-
case types.AST_NODE_TYPES.JSXEmptyExpression:
|
|
185
|
-
case types.AST_NODE_TYPES.JSXExpressionContainer:
|
|
186
|
-
case types.AST_NODE_TYPES.JSXIdentifier:
|
|
187
|
-
case types.AST_NODE_TYPES.JSXMemberExpression:
|
|
188
|
-
case types.AST_NODE_TYPES.JSXOpeningElement:
|
|
189
|
-
case types.AST_NODE_TYPES.JSXOpeningFragment:
|
|
190
|
-
case types.AST_NODE_TYPES.JSXSpreadAttribute:
|
|
191
|
-
case types.AST_NODE_TYPES.JSXSpreadChild:
|
|
192
|
-
case types.AST_NODE_TYPES.JSXNamespacedName: {
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
194
|
+
if (node == null) return false;
|
|
195
|
+
if (isJSX(node)) return true;
|
|
196
|
+
switch (node.type) {
|
|
195
197
|
case types.AST_NODE_TYPES.Literal: {
|
|
196
198
|
switch (typeof node.value) {
|
|
197
199
|
case "boolean":
|
|
@@ -264,7 +266,7 @@ function isJsxLike(code, node, hint = DEFAULT_JSX_DETECTION_HINT) {
|
|
|
264
266
|
if (name === "undefined") {
|
|
265
267
|
return !(hint & JSXDetectionHint.SkipUndefined);
|
|
266
268
|
}
|
|
267
|
-
if (
|
|
269
|
+
if (AST2__namespace.isJSXTagNameExpression(node)) {
|
|
268
270
|
return true;
|
|
269
271
|
}
|
|
270
272
|
const variable = VAR__namespace.findVariable(name, code.getScope(node));
|
|
@@ -287,6 +289,7 @@ exports.hasAttribute = hasAttribute;
|
|
|
287
289
|
exports.hasEveryAttribute = hasEveryAttribute;
|
|
288
290
|
exports.isFragmentElement = isFragmentElement;
|
|
289
291
|
exports.isHostElement = isHostElement;
|
|
292
|
+
exports.isJSX = isJSX;
|
|
290
293
|
exports.isJsxLike = isJsxLike;
|
|
291
294
|
exports.isJsxText = isJsxText;
|
|
292
295
|
exports.isKeyedElement = isKeyedElement;
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as VAR from '@eslint-react/var';
|
|
2
2
|
import { AST_NODE_TYPES } from '@typescript-eslint/types';
|
|
3
3
|
import { match, P } from 'ts-pattern';
|
|
4
|
-
import * as
|
|
4
|
+
import * as AST2 from '@eslint-react/ast';
|
|
5
5
|
import { constTrue } from '@eslint-react/eff';
|
|
6
6
|
|
|
7
7
|
// src/attribute/attribute.ts
|
|
@@ -107,7 +107,7 @@ function findParentAttribute(node, test = constTrue) {
|
|
|
107
107
|
const guard = (node2) => {
|
|
108
108
|
return node2.type === AST_NODE_TYPES.JSXAttribute && test(node2);
|
|
109
109
|
};
|
|
110
|
-
return
|
|
110
|
+
return AST2.findParentNode(node, guard);
|
|
111
111
|
}
|
|
112
112
|
function getElementType(node) {
|
|
113
113
|
if (node.type === AST_NODE_TYPES.JSXFragment) {
|
|
@@ -146,29 +146,31 @@ var JSXDetectionHint = {
|
|
|
146
146
|
var DEFAULT_JSX_DETECTION_HINT = 0n | JSXDetectionHint.SkipUndefined | JSXDetectionHint.SkipBooleanLiteral;
|
|
147
147
|
|
|
148
148
|
// src/jsx-detection.ts
|
|
149
|
+
var isJSX = AST2.isOneOf([
|
|
150
|
+
AST_NODE_TYPES.JSXAttribute,
|
|
151
|
+
AST_NODE_TYPES.JSXClosingElement,
|
|
152
|
+
AST_NODE_TYPES.JSXClosingFragment,
|
|
153
|
+
AST_NODE_TYPES.JSXElement,
|
|
154
|
+
AST_NODE_TYPES.JSXEmptyExpression,
|
|
155
|
+
AST_NODE_TYPES.JSXExpressionContainer,
|
|
156
|
+
AST_NODE_TYPES.JSXFragment,
|
|
157
|
+
AST_NODE_TYPES.JSXIdentifier,
|
|
158
|
+
AST_NODE_TYPES.JSXMemberExpression,
|
|
159
|
+
AST_NODE_TYPES.JSXNamespacedName,
|
|
160
|
+
AST_NODE_TYPES.JSXOpeningElement,
|
|
161
|
+
AST_NODE_TYPES.JSXOpeningFragment,
|
|
162
|
+
AST_NODE_TYPES.JSXSpreadAttribute,
|
|
163
|
+
AST_NODE_TYPES.JSXSpreadChild,
|
|
164
|
+
AST_NODE_TYPES.JSXText
|
|
165
|
+
]);
|
|
149
166
|
function isJsxText(node) {
|
|
150
167
|
if (node == null) return false;
|
|
151
168
|
return node.type === AST_NODE_TYPES.JSXText || node.type === AST_NODE_TYPES.Literal;
|
|
152
169
|
}
|
|
153
170
|
function isJsxLike(code, node, hint = DEFAULT_JSX_DETECTION_HINT) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
case AST_NODE_TYPES.JSXFragment:
|
|
158
|
-
case AST_NODE_TYPES.JSXAttribute:
|
|
159
|
-
case AST_NODE_TYPES.JSXClosingElement:
|
|
160
|
-
case AST_NODE_TYPES.JSXClosingFragment:
|
|
161
|
-
case AST_NODE_TYPES.JSXEmptyExpression:
|
|
162
|
-
case AST_NODE_TYPES.JSXExpressionContainer:
|
|
163
|
-
case AST_NODE_TYPES.JSXIdentifier:
|
|
164
|
-
case AST_NODE_TYPES.JSXMemberExpression:
|
|
165
|
-
case AST_NODE_TYPES.JSXOpeningElement:
|
|
166
|
-
case AST_NODE_TYPES.JSXOpeningFragment:
|
|
167
|
-
case AST_NODE_TYPES.JSXSpreadAttribute:
|
|
168
|
-
case AST_NODE_TYPES.JSXSpreadChild:
|
|
169
|
-
case AST_NODE_TYPES.JSXNamespacedName: {
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
171
|
+
if (node == null) return false;
|
|
172
|
+
if (isJSX(node)) return true;
|
|
173
|
+
switch (node.type) {
|
|
172
174
|
case AST_NODE_TYPES.Literal: {
|
|
173
175
|
switch (typeof node.value) {
|
|
174
176
|
case "boolean":
|
|
@@ -241,7 +243,7 @@ function isJsxLike(code, node, hint = DEFAULT_JSX_DETECTION_HINT) {
|
|
|
241
243
|
if (name === "undefined") {
|
|
242
244
|
return !(hint & JSXDetectionHint.SkipUndefined);
|
|
243
245
|
}
|
|
244
|
-
if (
|
|
246
|
+
if (AST2.isJSXTagNameExpression(node)) {
|
|
245
247
|
return true;
|
|
246
248
|
}
|
|
247
249
|
const variable = VAR.findVariable(name, code.getScope(node));
|
|
@@ -252,4 +254,4 @@ function isJsxLike(code, node, hint = DEFAULT_JSX_DETECTION_HINT) {
|
|
|
252
254
|
return false;
|
|
253
255
|
}
|
|
254
256
|
|
|
255
|
-
export { DEFAULT_JSX_DETECTION_HINT, JSXDetectionHint, findParentAttribute, getAttribute, getAttributeName, getAttributeValue, getElementType, hasAnyAttribute, hasAttribute, hasEveryAttribute, isFragmentElement, isHostElement, isJsxLike, isJsxText, isKeyedElement, toString };
|
|
257
|
+
export { DEFAULT_JSX_DETECTION_HINT, JSXDetectionHint, findParentAttribute, getAttribute, getAttributeName, getAttributeValue, getElementType, hasAnyAttribute, hasAttribute, hasEveryAttribute, isFragmentElement, isHostElement, isJSX, isJsxLike, isJsxText, isKeyedElement, toString };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eslint-react/jsx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.45.0-next.3",
|
|
4
4
|
"description": "ESLint React's TSESTree AST utility module for static analysis of JSX.",
|
|
5
5
|
"homepage": "https://github.com/Rel1cx/eslint-react",
|
|
6
6
|
"bugs": {
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"@typescript-eslint/types": "^8.29.1",
|
|
40
40
|
"@typescript-eslint/utils": "^8.29.1",
|
|
41
41
|
"ts-pattern": "^5.7.0",
|
|
42
|
-
"@eslint-react/
|
|
43
|
-
"@eslint-react/
|
|
44
|
-
"@eslint-react/
|
|
42
|
+
"@eslint-react/var": "1.45.0-next.3",
|
|
43
|
+
"@eslint-react/ast": "1.45.0-next.3",
|
|
44
|
+
"@eslint-react/eff": "1.45.0-next.3"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"tsup": "^8.4.0",
|