Skip to content

Commit dfdfbe9

Browse files
authored
refactor: refactor JsxRuntime namespace to JsxRuntimeOptions (#1039)
1 parent 45360e0 commit dfdfbe9

30 files changed

+236
-252
lines changed

packages/plugins/eslint-plugin-react-x/src/rules/jsx-uses-react.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import tsx from "dedent";
33

44
import { JsxEmit } from "typescript";
55
import { defaultLanguageOptionsWithTypes, getProjectForJsxRuntime } from "../../../../../test";
6-
import rule, { debug, RULE_NAME } from "./jsx-uses-react";
6+
import rule, { RULE_NAME } from "./jsx-uses-react";
77

88
const ruleTester = new RuleTester({
99
languageOptions: {
@@ -16,8 +16,8 @@ const ruleTester = new RuleTester({
1616
},
1717
});
1818

19-
// eslint-disable-next-line @typescript-eslint/no-unused-expressions, @typescript-eslint/no-unnecessary-condition
20-
debug
19+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
20+
process.env["ESLINT_REACT_DEBUG"] === "1"
2121
? ruleTester.run(RULE_NAME, rule, {
2222
invalid: [
2323
{

packages/plugins/eslint-plugin-react-x/src/rules/jsx-uses-react.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { TSESTree } from "@typescript-eslint/types";
22
import type { RuleListener } from "@typescript-eslint/utils/ts-eslint";
33

44
import type { CamelCase } from "string-ts";
5-
import { JsxRuntime, type RuleContext, type RuleFeature } from "@eslint-react/kit";
5+
import { JsxRuntimeOptions, type RuleContext, type RuleFeature } from "@eslint-react/kit";
66
import { JsxEmit } from "typescript";
77
import { createRule } from "../utils";
88

@@ -12,8 +12,6 @@ export const RULE_FEATURES = [] as const satisfies RuleFeature[];
1212

1313
export type MessageID = CamelCase<typeof RULE_NAME>;
1414

15-
export const debug = false;
16-
1715
export default createRule<[], MessageID>({
1816
meta: {
1917
type: "problem",
@@ -32,15 +30,16 @@ export default createRule<[], MessageID>({
3230
});
3331

3432
export function create(context: RuleContext<MessageID, []>): RuleListener {
35-
const jsxOptions = JsxRuntime.getJsxRuntimeOptions(context);
36-
const jsxAnnotation = JsxRuntime.getJsxRuntimeAnnotation(context);
37-
const jsx = jsxAnnotation.jsxRuntime === "classic"
38-
? JsxEmit.React
39-
: jsxOptions.jsx;
40-
if (jsx === JsxEmit.ReactJSX || jsx === JsxEmit.ReactJSXDev) return {};
33+
const jsxRuntimeOptionsFromContext = JsxRuntimeOptions.getFromContext(context);
34+
const jsxRuntimeOptionsFromAnnotation = JsxRuntimeOptions.getFromAnnotation(context);
35+
const jsxRuntimeOptions = {
36+
...jsxRuntimeOptionsFromContext,
37+
...jsxRuntimeOptionsFromAnnotation,
38+
};
4139

42-
const jsxFactory = jsxAnnotation.jsx ?? jsxOptions.jsxFactory;
43-
const jsxFragmentFactory = jsxAnnotation.jsxFrag ?? jsxOptions.jsxFragmentFactory;
40+
const { jsx, jsxFactory, jsxFragmentFactory } = jsxRuntimeOptions;
41+
42+
if (jsx === JsxEmit.ReactJSX || jsx === JsxEmit.ReactJSXDev) return {};
4443

4544
function handleJsxElement(node: TSESTree.Node) {
4645
context.sourceCode.markVariableAsUsed(jsxFactory, node);
@@ -60,8 +59,7 @@ export function create(context: RuleContext<MessageID, []>): RuleListener {
6059
}
6160

6261
function debugReport(context: RuleContext, node: TSESTree.Node, name: string) {
63-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
64-
if (!debug) return;
62+
if (process.env["ESLINT_REACT_DEBUG"] !== "1") return;
6563
context.report({
6664
messageId: "jsxUsesReact",
6765
node,

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/README.md

Lines changed: 0 additions & 28 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/functions/getJsxRuntimeAnnotation.md

Lines changed: 0 additions & 25 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/functions/make.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/interfaces/JsxRuntimeAnnotation.md

Lines changed: 0 additions & 31 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/variables/RE_JSX_RT_ANNOTATION_JSX.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/variables/RE_JSX_RT_ANNOTATION_JSX_FRAG.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/variables/RE_JSX_RT_ANNOTATION_JSX_IMPORT_SOURCE.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

packages/utilities/kit/docs/@eslint-react/namespaces/JsxRuntime/variables/RE_JSX_RT_ANNOTATION_JSX_RUNTIME.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)