@eslint-react/jsx 1.43.2-next.1 → 1.45.0-beta.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 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 AST = require('@eslint-react/ast');
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 AST__namespace = /*#__PURE__*/_interopNamespace(AST);
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 AST__namespace.findParentNode(node, guard);
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
- switch (node?.type) {
178
- case types.AST_NODE_TYPES.JSXText:
179
- case types.AST_NODE_TYPES.JSXElement:
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 (AST__namespace.isJSXTagNameExpression(node)) {
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 AST from '@eslint-react/ast';
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 AST.findParentNode(node, guard);
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
- switch (node?.type) {
155
- case AST_NODE_TYPES.JSXText:
156
- case AST_NODE_TYPES.JSXElement:
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 (AST.isJSXTagNameExpression(node)) {
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.43.2-next.1",
3
+ "version": "1.45.0-beta.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/ast": "1.43.2-next.1",
43
- "@eslint-react/eff": "1.43.2-next.1",
44
- "@eslint-react/var": "1.43.2-next.1"
42
+ "@eslint-react/ast": "1.45.0-beta.3",
43
+ "@eslint-react/var": "1.45.0-beta.3",
44
+ "@eslint-react/eff": "1.45.0-beta.3"
45
45
  },
46
46
  "devDependencies": {
47
47
  "tsup": "^8.4.0",