@apst/oxlint 0.1.0 → 0.3.0

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.
Files changed (58) hide show
  1. package/README.md +0 -34
  2. package/dist/presets/common/index.d.ts +3 -4
  3. package/dist/presets/common/index.js +1 -3
  4. package/dist/presets/common/index.mjs +3 -4
  5. package/dist/presets/common/plugin/index.d.ts +1 -2
  6. package/dist/presets/common/plugin/index.js +0 -2
  7. package/dist/presets/common/plugin/index.js.map +1 -1
  8. package/dist/presets/common/plugin/index.mjs +1 -2
  9. package/dist/presets/common/plugin/index.mjs.map +1 -1
  10. package/dist/presets/common/preset/index.js +1 -4
  11. package/dist/presets/common/preset/index.js.map +1 -1
  12. package/dist/presets/common/preset/index.mjs +2 -5
  13. package/dist/presets/common/preset/index.mjs.map +1 -1
  14. package/dist/presets/common/rules/eslint.d.ts +8 -4
  15. package/dist/presets/common/rules/eslint.js +4 -4
  16. package/dist/presets/common/rules/eslint.js.map +1 -1
  17. package/dist/presets/common/rules/eslint.mjs +4 -4
  18. package/dist/presets/common/rules/eslint.mjs.map +1 -1
  19. package/dist/presets/common/rules/import.d.ts +10 -0
  20. package/dist/presets/common/rules/import.js +5 -0
  21. package/dist/presets/common/rules/import.js.map +1 -1
  22. package/dist/presets/common/rules/import.mjs +5 -0
  23. package/dist/presets/common/rules/import.mjs.map +1 -1
  24. package/dist/presets/common/rules/typescript.d.ts +58 -44
  25. package/dist/presets/common/rules/typescript.js +20 -15
  26. package/dist/presets/common/rules/typescript.js.map +1 -1
  27. package/dist/presets/common/rules/typescript.mjs +20 -15
  28. package/dist/presets/common/rules/typescript.mjs.map +1 -1
  29. package/dist/presets/common/rules/unicorn.d.ts +11 -1
  30. package/dist/presets/common/rules/unicorn.js +6 -0
  31. package/dist/presets/common/rules/unicorn.js.map +1 -1
  32. package/dist/presets/common/rules/unicorn.mjs +6 -1
  33. package/dist/presets/common/rules/unicorn.mjs.map +1 -1
  34. package/dist/presets/jsx/rules/jsx-a11y.d.ts +16 -0
  35. package/dist/presets/jsx/rules/jsx-a11y.js +15 -0
  36. package/dist/presets/jsx/rules/jsx-a11y.js.map +1 -1
  37. package/dist/presets/jsx/rules/jsx-a11y.mjs +15 -0
  38. package/dist/presets/jsx/rules/jsx-a11y.mjs.map +1 -1
  39. package/dist/presets/next/rules/nextjs.js +1 -0
  40. package/dist/presets/next/rules/nextjs.js.map +1 -1
  41. package/dist/presets/next/rules/nextjs.mjs +1 -0
  42. package/dist/presets/next/rules/nextjs.mjs.map +1 -1
  43. package/dist/presets/react/rules/react.d.ts +17 -0
  44. package/dist/presets/react/rules/react.js +7 -2
  45. package/dist/presets/react/rules/react.js.map +1 -1
  46. package/dist/presets/react/rules/react.mjs +7 -2
  47. package/dist/presets/react/rules/react.mjs.map +1 -1
  48. package/dist/presets/vitest/rules/vitest.d.ts +4 -0
  49. package/dist/presets/vitest/rules/vitest.js +3 -1
  50. package/dist/presets/vitest/rules/vitest.js.map +1 -1
  51. package/dist/presets/vitest/rules/vitest.mjs +3 -1
  52. package/dist/presets/vitest/rules/vitest.mjs.map +1 -1
  53. package/package.json +12 -44
  54. package/dist/presets/common/rules/stylistic.d.ts +0 -18
  55. package/dist/presets/common/rules/stylistic.js +0 -16
  56. package/dist/presets/common/rules/stylistic.js.map +0 -1
  57. package/dist/presets/common/rules/stylistic.mjs +0 -15
  58. package/dist/presets/common/rules/stylistic.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"unicorn.mjs","names":[],"sources":["../../../../src/presets/common/rules/unicorn.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_UNICORN_PEDANTIC = {\n \"unicorn/consistent-empty-array-spread\": \"error\",\n \"unicorn/explicit-length-check\": [\n \"error\",\n {\n \"non-zero\": \"greater-than\",\n },\n ],\n \"unicorn/new-for-builtins\": \"error\",\n \"unicorn/no-instanceof-array\": \"error\",\n \"unicorn/no-new-buffer\": \"error\",\n \"unicorn/no-unnecessary-array-flat-depth\": \"error\",\n \"unicorn/no-unnecessary-array-splice-count\": \"error\",\n \"unicorn/no-unnecessary-slice-end\": \"error\",\n \"unicorn/no-useless-promise-resolve-reject\": [\n \"error\",\n {\n allowReject: false,\n },\n ],\n \"unicorn/prefer-date-now\": \"error\",\n \"unicorn/prefer-math-min-max\": \"error\",\n \"unicorn/prefer-type-error\": \"error\",\n \"unicorn/require-number-to-fixed-digits-argument\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_RESTRICTION = {\n \"unicorn/no-length-as-slice-end\": \"error\",\n \"unicorn/prefer-node-protocol\": \"error\",\n \"unicorn/prefer-number-properties\": [\n \"error\",\n {\n checkInfinity: true,\n checkNaN: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_STYLE = {\n \"unicorn/consistent-date-clone\": \"error\",\n \"unicorn/consistent-existence-index-check\": \"error\",\n \"unicorn/empty-brace-spaces\": \"error\",\n \"unicorn/error-message\": \"error\",\n \"unicorn/no-array-method-this-argument\": \"error\",\n \"unicorn/no-unreadable-array-destructuring\": \"error\",\n \"unicorn/no-useless-collection-argument\": \"error\",\n \"unicorn/numeric-separators-style\": [\n \"error\",\n {\n binary: {\n groupLength: 3,\n minimumDigits: 5,\n },\n hexadecimal: {\n groupLength: 3,\n minimumDigits: 5,\n },\n number: {\n groupLength: 3,\n minimumDigits: 5,\n },\n octal: {\n groupLength: 3,\n minimumDigits: 5,\n },\n onlyIfContainsSeparator: false,\n },\n ],\n \"unicorn/prefer-classlist-toggle\": \"error\",\n \"unicorn/prefer-dom-node-text-content\": \"error\",\n \"unicorn/prefer-global-this\": \"error\",\n \"unicorn/prefer-includes\": \"error\",\n \"unicorn/prefer-keyboard-event-key\": \"error\",\n \"unicorn/prefer-modern-dom-apis\": \"error\",\n \"unicorn/prefer-object-from-entries\": \"error\",\n \"unicorn/prefer-response-static-json\": \"error\",\n \"unicorn/prefer-string-trim-start-end\": \"error\",\n \"unicorn/relative-url-style\": [\n \"error\",\n \"always\",\n ],\n \"unicorn/require-module-attributes\": \"error\",\n \"unicorn/switch-case-braces\": \"error\",\n \"unicorn/text-encoding-identifier-case\": [\n \"error\",\n {\n withDash: true,\n },\n ],\n \"unicorn/throw-new-error\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_SUSPICIOUS = {\n \"unicorn/consistent-function-scoping\": \"error\",\n \"unicorn/no-accessor-recursion\": \"error\",\n \"unicorn/no-array-reverse\": \"error\",\n \"unicorn/no-array-sort\": [\n \"error\",\n {\n allowExpressionStatement: true,\n },\n ],\n \"unicorn/no-instanceof-builtins\": [\n \"allow\",\n ],\n} as const satisfies LintRules;\n\nconst RULES_UNICORN = {\n ...RULES_UNICORN_PEDANTIC,\n ...RULES_UNICORN_RESTRICTION,\n ...RULES_UNICORN_STYLE,\n ...RULES_UNICORN_SUSPICIOUS,\n} as const satisfies LintRules;\n\nexport {\n RULES_UNICORN,\n RULES_UNICORN_PEDANTIC,\n RULES_UNICORN_RESTRICTION,\n RULES_UNICORN_STYLE,\n RULES_UNICORN_SUSPICIOUS,\n};\n"],"mappings":"AAEA,MAAM,yBAAyB;CAC3B,yCAAyC;CACzC,iCAAiC,CAC7B,SACA,EACI,YAAY,eAChB,CACJ;CACA,4BAA4B;CAC5B,+BAA+B;CAC/B,yBAAyB;CACzB,2CAA2C;CAC3C,6CAA6C;CAC7C,oCAAoC;CACpC,6CAA6C,CACzC,SACA,EACI,aAAa,MACjB,CACJ;CACA,2BAA2B;CAC3B,+BAA+B;CAC/B,6BAA6B;CAC7B,mDAAmD;AACvD;AAEA,MAAM,4BAA4B;CAC9B,kCAAkC;CAClC,gCAAgC;CAChC,oCAAoC,CAChC,SACA;EACI,eAAe;EACf,UAAU;CACd,CACJ;AACJ;AAEA,MAAM,sBAAsB;CACxB,iCAAiC;CACjC,4CAA4C;CAC5C,8BAA8B;CAC9B,yBAAyB;CACzB,yCAAyC;CACzC,6CAA6C;CAC7C,0CAA0C;CAC1C,oCAAoC,CAChC,SACA;EACI,QAAQ;GACJ,aAAa;GACb,eAAe;EACnB;EACA,aAAa;GACT,aAAa;GACb,eAAe;EACnB;EACA,QAAQ;GACJ,aAAa;GACb,eAAe;EACnB;EACA,OAAO;GACH,aAAa;GACb,eAAe;EACnB;EACA,yBAAyB;CAC7B,CACJ;CACA,mCAAmC;CACnC,wCAAwC;CACxC,8BAA8B;CAC9B,2BAA2B;CAC3B,qCAAqC;CACrC,kCAAkC;CAClC,sCAAsC;CACtC,uCAAuC;CACvC,wCAAwC;CACxC,8BAA8B,CAC1B,SACA,QACJ;CACA,qCAAqC;CACrC,8BAA8B;CAC9B,yCAAyC,CACrC,SACA,EACI,UAAU,KACd,CACJ;CACA,2BAA2B;AAC/B;AAEA,MAAM,2BAA2B;CAC7B,uCAAuC;CACvC,iCAAiC;CACjC,4BAA4B;CAC5B,yBAAyB,CACrB,SACA,EACI,0BAA0B,KAC9B,CACJ;CACA,kCAAkC,CAC9B,OACJ;AACJ;AAEA,MAAM,gBAAgB;CAClB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACP"}
1
+ {"version":3,"file":"unicorn.mjs","names":[],"sources":["../../../../src/presets/common/rules/unicorn.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_UNICORN_NURSERY = {\n \"unicorn/no-useless-iterator-to-array\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_PEDANTIC = {\n \"unicorn/consistent-empty-array-spread\": \"error\",\n \"unicorn/explicit-length-check\": [\n \"error\",\n {\n \"non-zero\": \"greater-than\",\n },\n ],\n \"unicorn/new-for-builtins\": \"error\",\n \"unicorn/no-instanceof-array\": \"error\",\n \"unicorn/no-new-buffer\": \"error\",\n \"unicorn/no-unnecessary-array-flat-depth\": \"error\",\n \"unicorn/no-unnecessary-array-splice-count\": \"error\",\n \"unicorn/no-unnecessary-slice-end\": \"error\",\n \"unicorn/no-useless-promise-resolve-reject\": [\n \"error\",\n {\n allowReject: false,\n },\n ],\n \"unicorn/prefer-date-now\": \"error\",\n \"unicorn/prefer-math-min-max\": \"error\",\n \"unicorn/prefer-type-error\": \"error\",\n \"unicorn/require-number-to-fixed-digits-argument\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_RESTRICTION = {\n \"unicorn/no-length-as-slice-end\": \"error\",\n \"unicorn/prefer-node-protocol\": \"error\",\n \"unicorn/prefer-number-properties\": [\n \"error\",\n {\n checkInfinity: true,\n checkNaN: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_STYLE = {\n \"unicorn/consistent-date-clone\": \"error\",\n \"unicorn/consistent-existence-index-check\": \"error\",\n \"unicorn/consistent-template-literal-escape\": \"error\",\n \"unicorn/custom-error-definition\": \"error\",\n \"unicorn/empty-brace-spaces\": \"error\",\n \"unicorn/error-message\": \"error\",\n \"unicorn/no-array-method-this-argument\": \"error\",\n \"unicorn/no-unreadable-array-destructuring\": \"error\",\n \"unicorn/no-useless-collection-argument\": \"error\",\n \"unicorn/numeric-separators-style\": [\n \"error\",\n {\n binary: {\n groupLength: 3,\n minimumDigits: 5,\n },\n hexadecimal: {\n groupLength: 3,\n minimumDigits: 5,\n },\n number: {\n groupLength: 3,\n minimumDigits: 5,\n },\n octal: {\n groupLength: 3,\n minimumDigits: 5,\n },\n onlyIfContainsSeparator: false,\n },\n ],\n \"unicorn/prefer-classlist-toggle\": \"error\",\n \"unicorn/prefer-dom-node-text-content\": \"error\",\n \"unicorn/prefer-global-this\": \"error\",\n \"unicorn/prefer-includes\": \"error\",\n \"unicorn/prefer-keyboard-event-key\": \"error\",\n \"unicorn/prefer-modern-dom-apis\": \"error\",\n \"unicorn/prefer-object-from-entries\": \"error\",\n \"unicorn/prefer-response-static-json\": \"error\",\n \"unicorn/prefer-string-trim-start-end\": \"error\",\n \"unicorn/relative-url-style\": [\n \"error\",\n \"always\",\n ],\n \"unicorn/require-module-attributes\": \"error\",\n \"unicorn/switch-case-braces\": \"error\",\n \"unicorn/switch-case-break-position\": \"error\",\n \"unicorn/text-encoding-identifier-case\": [\n \"error\",\n {\n withDash: true,\n },\n ],\n \"unicorn/throw-new-error\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_UNICORN_SUSPICIOUS = {\n \"unicorn/consistent-function-scoping\": \"error\",\n \"unicorn/no-accessor-recursion\": \"error\",\n \"unicorn/no-array-reverse\": \"error\",\n \"unicorn/no-array-sort\": [\n \"error\",\n {\n allowExpressionStatement: true,\n },\n ],\n \"unicorn/no-instanceof-builtins\": [\n \"allow\",\n ],\n} as const satisfies LintRules;\n\nconst RULES_UNICORN = {\n ...RULES_UNICORN_NURSERY,\n ...RULES_UNICORN_PEDANTIC,\n ...RULES_UNICORN_RESTRICTION,\n ...RULES_UNICORN_STYLE,\n ...RULES_UNICORN_SUSPICIOUS,\n} as const satisfies LintRules;\n\nexport {\n RULES_UNICORN,\n RULES_UNICORN_NURSERY,\n RULES_UNICORN_PEDANTIC,\n RULES_UNICORN_RESTRICTION,\n RULES_UNICORN_STYLE,\n RULES_UNICORN_SUSPICIOUS,\n};\n"],"mappings":"AAEA,MAAM,wBAAwB,EAC1B,wCAAwC,QAC5C;AAEA,MAAM,yBAAyB;CAC3B,yCAAyC;CACzC,iCAAiC,CAC7B,SACA,EACI,YAAY,eAChB,CACJ;CACA,4BAA4B;CAC5B,+BAA+B;CAC/B,yBAAyB;CACzB,2CAA2C;CAC3C,6CAA6C;CAC7C,oCAAoC;CACpC,6CAA6C,CACzC,SACA,EACI,aAAa,MACjB,CACJ;CACA,2BAA2B;CAC3B,+BAA+B;CAC/B,6BAA6B;CAC7B,mDAAmD;AACvD;AAEA,MAAM,4BAA4B;CAC9B,kCAAkC;CAClC,gCAAgC;CAChC,oCAAoC,CAChC,SACA;EACI,eAAe;EACf,UAAU;CACd,CACJ;AACJ;AAEA,MAAM,sBAAsB;CACxB,iCAAiC;CACjC,4CAA4C;CAC5C,8CAA8C;CAC9C,mCAAmC;CACnC,8BAA8B;CAC9B,yBAAyB;CACzB,yCAAyC;CACzC,6CAA6C;CAC7C,0CAA0C;CAC1C,oCAAoC,CAChC,SACA;EACI,QAAQ;GACJ,aAAa;GACb,eAAe;EACnB;EACA,aAAa;GACT,aAAa;GACb,eAAe;EACnB;EACA,QAAQ;GACJ,aAAa;GACb,eAAe;EACnB;EACA,OAAO;GACH,aAAa;GACb,eAAe;EACnB;EACA,yBAAyB;CAC7B,CACJ;CACA,mCAAmC;CACnC,wCAAwC;CACxC,8BAA8B;CAC9B,2BAA2B;CAC3B,qCAAqC;CACrC,kCAAkC;CAClC,sCAAsC;CACtC,uCAAuC;CACvC,wCAAwC;CACxC,8BAA8B,CAC1B,SACA,QACJ;CACA,qCAAqC;CACrC,8BAA8B;CAC9B,sCAAsC;CACtC,yCAAyC,CACrC,SACA,EACI,UAAU,KACd,CACJ;CACA,2BAA2B;AAC/B;AAEA,MAAM,2BAA2B;CAC7B,uCAAuC;CACvC,iCAAiC;CACjC,4BAA4B;CAC5B,yBAAyB,CACrB,SACA,EACI,0BAA0B,KAC9B,CACJ;CACA,kCAAkC,CAC9B,OACJ;AACJ;AAEA,MAAM,gBAAgB;CAClB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACP"}
@@ -9,9 +9,17 @@ declare const RULES_JSX_A11Y_CORRECTNESS: {
9
9
  readonly "jsx-a11y/heading-has-content": "error";
10
10
  readonly "jsx-a11y/html-has-lang": "error";
11
11
  readonly "jsx-a11y/iframe-has-title": "error";
12
+ readonly "jsx-a11y/interactive-supports-focus": "error";
12
13
  readonly "jsx-a11y/lang": "error";
13
14
  readonly "jsx-a11y/mouse-events-have-key-events": "error";
14
15
  readonly "jsx-a11y/no-aria-hidden-on-focusable": "error";
16
+ readonly "jsx-a11y/no-interactive-element-to-noninteractive-role": "error";
17
+ readonly "jsx-a11y/no-noninteractive-element-interactions": "error";
18
+ readonly "jsx-a11y/no-noninteractive-element-to-interactive-role": "error";
19
+ readonly "jsx-a11y/no-static-element-interactions": ["error", {
20
+ readonly allowExpressionValues: true;
21
+ readonly handlers: readonly ["onClick", "onKeyPress", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseUp"];
22
+ }];
15
23
  readonly "jsx-a11y/prefer-tag-over-role": "error";
16
24
  readonly "jsx-a11y/tabindex-no-positive": "error";
17
25
  };
@@ -26,9 +34,17 @@ declare const RULES_JSX_A11Y: {
26
34
  readonly "jsx-a11y/heading-has-content": "error";
27
35
  readonly "jsx-a11y/html-has-lang": "error";
28
36
  readonly "jsx-a11y/iframe-has-title": "error";
37
+ readonly "jsx-a11y/interactive-supports-focus": "error";
29
38
  readonly "jsx-a11y/lang": "error";
30
39
  readonly "jsx-a11y/mouse-events-have-key-events": "error";
31
40
  readonly "jsx-a11y/no-aria-hidden-on-focusable": "error";
41
+ readonly "jsx-a11y/no-interactive-element-to-noninteractive-role": "error";
42
+ readonly "jsx-a11y/no-noninteractive-element-interactions": "error";
43
+ readonly "jsx-a11y/no-noninteractive-element-to-interactive-role": "error";
44
+ readonly "jsx-a11y/no-static-element-interactions": ["error", {
45
+ readonly allowExpressionValues: true;
46
+ readonly handlers: readonly ["onClick", "onKeyPress", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseUp"];
47
+ }];
32
48
  readonly "jsx-a11y/prefer-tag-over-role": "error";
33
49
  readonly "jsx-a11y/tabindex-no-positive": "error";
34
50
  };
@@ -10,9 +10,24 @@ const RULES_JSX_A11Y_CORRECTNESS = {
10
10
  "jsx-a11y/heading-has-content": "error",
11
11
  "jsx-a11y/html-has-lang": "error",
12
12
  "jsx-a11y/iframe-has-title": "error",
13
+ "jsx-a11y/interactive-supports-focus": "error",
13
14
  "jsx-a11y/lang": "error",
14
15
  "jsx-a11y/mouse-events-have-key-events": "error",
15
16
  "jsx-a11y/no-aria-hidden-on-focusable": "error",
17
+ "jsx-a11y/no-interactive-element-to-noninteractive-role": "error",
18
+ "jsx-a11y/no-noninteractive-element-interactions": "error",
19
+ "jsx-a11y/no-noninteractive-element-to-interactive-role": "error",
20
+ "jsx-a11y/no-static-element-interactions": ["error", {
21
+ allowExpressionValues: true,
22
+ handlers: [
23
+ "onClick",
24
+ "onKeyPress",
25
+ "onKeyDown",
26
+ "onKeyUp",
27
+ "onMouseDown",
28
+ "onMouseUp"
29
+ ]
30
+ }],
16
31
  "jsx-a11y/prefer-tag-over-role": "error",
17
32
  "jsx-a11y/tabindex-no-positive": "error"
18
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-a11y.js","names":[],"sources":["../../../../src/presets/jsx/rules/jsx-a11y.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_JSX_A11Y_CORRECTNESS = {\n \"jsx-a11y/alt-text\": \"error\",\n \"jsx-a11y/anchor-has-content\": \"error\",\n \"jsx-a11y/anchor-is-valid\": \"error\",\n \"jsx-a11y/aria-props\": \"error\",\n \"jsx-a11y/aria-proptypes\": \"error\",\n \"jsx-a11y/aria-unsupported-elements\": \"error\",\n \"jsx-a11y/click-events-have-key-events\": \"error\",\n \"jsx-a11y/heading-has-content\": \"error\",\n \"jsx-a11y/html-has-lang\": \"error\",\n \"jsx-a11y/iframe-has-title\": \"error\",\n \"jsx-a11y/lang\": \"error\",\n \"jsx-a11y/mouse-events-have-key-events\": \"error\",\n \"jsx-a11y/no-aria-hidden-on-focusable\": \"error\",\n \"jsx-a11y/prefer-tag-over-role\": \"error\",\n \"jsx-a11y/tabindex-no-positive\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_JSX_A11Y = {\n ...RULES_JSX_A11Y_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_JSX_A11Y, RULES_JSX_A11Y_CORRECTNESS };\n"],"mappings":";AAEA,MAAM,6BAA6B;CAC/B,qBAAqB;CACrB,+BAA+B;CAC/B,4BAA4B;CAC5B,uBAAuB;CACvB,2BAA2B;CAC3B,sCAAsC;CACtC,yCAAyC;CACzC,gCAAgC;CAChC,0BAA0B;CAC1B,6BAA6B;CAC7B,iBAAiB;CACjB,yCAAyC;CACzC,wCAAwC;CACxC,iCAAiC;CACjC,iCAAiC;AACrC;AAEA,MAAM,iBAAiB,EACnB,GAAG,2BACP"}
1
+ {"version":3,"file":"jsx-a11y.js","names":[],"sources":["../../../../src/presets/jsx/rules/jsx-a11y.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_JSX_A11Y_CORRECTNESS = {\n \"jsx-a11y/alt-text\": \"error\",\n \"jsx-a11y/anchor-has-content\": \"error\",\n \"jsx-a11y/anchor-is-valid\": \"error\",\n \"jsx-a11y/aria-props\": \"error\",\n \"jsx-a11y/aria-proptypes\": \"error\",\n \"jsx-a11y/aria-unsupported-elements\": \"error\",\n \"jsx-a11y/click-events-have-key-events\": \"error\",\n \"jsx-a11y/heading-has-content\": \"error\",\n \"jsx-a11y/html-has-lang\": \"error\",\n \"jsx-a11y/iframe-has-title\": \"error\",\n \"jsx-a11y/interactive-supports-focus\": \"error\",\n \"jsx-a11y/lang\": \"error\",\n \"jsx-a11y/mouse-events-have-key-events\": \"error\",\n \"jsx-a11y/no-aria-hidden-on-focusable\": \"error\",\n \"jsx-a11y/no-interactive-element-to-noninteractive-role\": \"error\",\n \"jsx-a11y/no-noninteractive-element-interactions\": \"error\",\n \"jsx-a11y/no-noninteractive-element-to-interactive-role\": \"error\",\n \"jsx-a11y/no-static-element-interactions\": [\n \"error\",\n {\n allowExpressionValues: true,\n handlers: [\n \"onClick\",\n // key\n \"onKeyPress\",\n \"onKeyDown\",\n \"onKeyUp\",\n // mouse\n \"onMouseDown\",\n \"onMouseUp\",\n ],\n },\n ],\n \"jsx-a11y/prefer-tag-over-role\": \"error\",\n \"jsx-a11y/tabindex-no-positive\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_JSX_A11Y = {\n ...RULES_JSX_A11Y_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_JSX_A11Y, RULES_JSX_A11Y_CORRECTNESS };\n"],"mappings":";AAEA,MAAM,6BAA6B;CAC/B,qBAAqB;CACrB,+BAA+B;CAC/B,4BAA4B;CAC5B,uBAAuB;CACvB,2BAA2B;CAC3B,sCAAsC;CACtC,yCAAyC;CACzC,gCAAgC;CAChC,0BAA0B;CAC1B,6BAA6B;CAC7B,uCAAuC;CACvC,iBAAiB;CACjB,yCAAyC;CACzC,wCAAwC;CACxC,0DAA0D;CAC1D,mDAAmD;CACnD,0DAA0D;CAC1D,2CAA2C,CACvC,SACA;EACI,uBAAuB;EACvB,UAAU;GACN;GAEA;GACA;GACA;GAEA;GACA;EACJ;CACJ,CACJ;CACA,iCAAiC;CACjC,iCAAiC;AACrC;AAEA,MAAM,iBAAiB,EACnB,GAAG,2BACP"}
@@ -9,9 +9,24 @@ const RULES_JSX_A11Y_CORRECTNESS = {
9
9
  "jsx-a11y/heading-has-content": "error",
10
10
  "jsx-a11y/html-has-lang": "error",
11
11
  "jsx-a11y/iframe-has-title": "error",
12
+ "jsx-a11y/interactive-supports-focus": "error",
12
13
  "jsx-a11y/lang": "error",
13
14
  "jsx-a11y/mouse-events-have-key-events": "error",
14
15
  "jsx-a11y/no-aria-hidden-on-focusable": "error",
16
+ "jsx-a11y/no-interactive-element-to-noninteractive-role": "error",
17
+ "jsx-a11y/no-noninteractive-element-interactions": "error",
18
+ "jsx-a11y/no-noninteractive-element-to-interactive-role": "error",
19
+ "jsx-a11y/no-static-element-interactions": ["error", {
20
+ allowExpressionValues: true,
21
+ handlers: [
22
+ "onClick",
23
+ "onKeyPress",
24
+ "onKeyDown",
25
+ "onKeyUp",
26
+ "onMouseDown",
27
+ "onMouseUp"
28
+ ]
29
+ }],
15
30
  "jsx-a11y/prefer-tag-over-role": "error",
16
31
  "jsx-a11y/tabindex-no-positive": "error"
17
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-a11y.mjs","names":[],"sources":["../../../../src/presets/jsx/rules/jsx-a11y.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_JSX_A11Y_CORRECTNESS = {\n \"jsx-a11y/alt-text\": \"error\",\n \"jsx-a11y/anchor-has-content\": \"error\",\n \"jsx-a11y/anchor-is-valid\": \"error\",\n \"jsx-a11y/aria-props\": \"error\",\n \"jsx-a11y/aria-proptypes\": \"error\",\n \"jsx-a11y/aria-unsupported-elements\": \"error\",\n \"jsx-a11y/click-events-have-key-events\": \"error\",\n \"jsx-a11y/heading-has-content\": \"error\",\n \"jsx-a11y/html-has-lang\": \"error\",\n \"jsx-a11y/iframe-has-title\": \"error\",\n \"jsx-a11y/lang\": \"error\",\n \"jsx-a11y/mouse-events-have-key-events\": \"error\",\n \"jsx-a11y/no-aria-hidden-on-focusable\": \"error\",\n \"jsx-a11y/prefer-tag-over-role\": \"error\",\n \"jsx-a11y/tabindex-no-positive\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_JSX_A11Y = {\n ...RULES_JSX_A11Y_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_JSX_A11Y, RULES_JSX_A11Y_CORRECTNESS };\n"],"mappings":"AAEA,MAAM,6BAA6B;CAC/B,qBAAqB;CACrB,+BAA+B;CAC/B,4BAA4B;CAC5B,uBAAuB;CACvB,2BAA2B;CAC3B,sCAAsC;CACtC,yCAAyC;CACzC,gCAAgC;CAChC,0BAA0B;CAC1B,6BAA6B;CAC7B,iBAAiB;CACjB,yCAAyC;CACzC,wCAAwC;CACxC,iCAAiC;CACjC,iCAAiC;AACrC;AAEA,MAAM,iBAAiB,EACnB,GAAG,2BACP"}
1
+ {"version":3,"file":"jsx-a11y.mjs","names":[],"sources":["../../../../src/presets/jsx/rules/jsx-a11y.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_JSX_A11Y_CORRECTNESS = {\n \"jsx-a11y/alt-text\": \"error\",\n \"jsx-a11y/anchor-has-content\": \"error\",\n \"jsx-a11y/anchor-is-valid\": \"error\",\n \"jsx-a11y/aria-props\": \"error\",\n \"jsx-a11y/aria-proptypes\": \"error\",\n \"jsx-a11y/aria-unsupported-elements\": \"error\",\n \"jsx-a11y/click-events-have-key-events\": \"error\",\n \"jsx-a11y/heading-has-content\": \"error\",\n \"jsx-a11y/html-has-lang\": \"error\",\n \"jsx-a11y/iframe-has-title\": \"error\",\n \"jsx-a11y/interactive-supports-focus\": \"error\",\n \"jsx-a11y/lang\": \"error\",\n \"jsx-a11y/mouse-events-have-key-events\": \"error\",\n \"jsx-a11y/no-aria-hidden-on-focusable\": \"error\",\n \"jsx-a11y/no-interactive-element-to-noninteractive-role\": \"error\",\n \"jsx-a11y/no-noninteractive-element-interactions\": \"error\",\n \"jsx-a11y/no-noninteractive-element-to-interactive-role\": \"error\",\n \"jsx-a11y/no-static-element-interactions\": [\n \"error\",\n {\n allowExpressionValues: true,\n handlers: [\n \"onClick\",\n // key\n \"onKeyPress\",\n \"onKeyDown\",\n \"onKeyUp\",\n // mouse\n \"onMouseDown\",\n \"onMouseUp\",\n ],\n },\n ],\n \"jsx-a11y/prefer-tag-over-role\": \"error\",\n \"jsx-a11y/tabindex-no-positive\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_JSX_A11Y = {\n ...RULES_JSX_A11Y_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_JSX_A11Y, RULES_JSX_A11Y_CORRECTNESS };\n"],"mappings":"AAEA,MAAM,6BAA6B;CAC/B,qBAAqB;CACrB,+BAA+B;CAC/B,4BAA4B;CAC5B,uBAAuB;CACvB,2BAA2B;CAC3B,sCAAsC;CACtC,yCAAyC;CACzC,gCAAgC;CAChC,0BAA0B;CAC1B,6BAA6B;CAC7B,uCAAuC;CACvC,iBAAiB;CACjB,yCAAyC;CACzC,wCAAwC;CACxC,0DAA0D;CAC1D,mDAAmD;CACnD,0DAA0D;CAC1D,2CAA2C,CACvC,SACA;EACI,uBAAuB;EACvB,UAAU;GACN;GAEA;GACA;GACA;GAEA;GACA;EACJ;CACJ,CACJ;CACA,iCAAiC;CACjC,iCAAiC;AACrC;AAEA,MAAM,iBAAiB,EACnB,GAAG,2BACP"}
@@ -13,6 +13,7 @@ const RULES_NEXTJS = {
13
13
  "nextjs/no-head-element": "error",
14
14
  "nextjs/no-head-import-in-document": "error",
15
15
  "nextjs/no-html-link-for-pages": "error",
16
+ "nextjs/no-img-element": "allow",
16
17
  "nextjs/no-page-custom-font": "error",
17
18
  "nextjs/no-script-component-in-head": "error",
18
19
  "nextjs/no-styled-jsx-in-document": "error",
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.js","names":[],"sources":["../../../../src/presets/next/rules/nextjs.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_NEXTJS_CORRECTNESS = {\n \"nextjs/google-font-display\": \"error\",\n \"nextjs/google-font-preconnect\": \"error\",\n \"nextjs/inline-script-id\": \"error\",\n \"nextjs/next-script-for-ga\": \"error\",\n \"nextjs/no-assign-module-variable\": \"error\",\n \"nextjs/no-async-client-component\": \"error\",\n \"nextjs/no-before-interactive-script-outside-document\": \"error\",\n \"nextjs/no-css-tags\": \"error\",\n \"nextjs/no-document-import-in-page\": \"error\",\n \"nextjs/no-duplicate-head\": \"error\",\n \"nextjs/no-head-element\": \"error\",\n \"nextjs/no-head-import-in-document\": \"error\",\n \"nextjs/no-html-link-for-pages\": \"error\",\n \"nextjs/no-page-custom-font\": \"error\",\n \"nextjs/no-script-component-in-head\": \"error\",\n \"nextjs/no-styled-jsx-in-document\": \"error\",\n \"nextjs/no-sync-scripts\": \"error\",\n \"nextjs/no-title-in-document-head\": \"error\",\n \"nextjs/no-typos\": \"error\",\n \"nextjs/no-unwanted-polyfillio\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_NEXTJS = {\n ...RULES_NEXTJS_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_NEXTJS };\n"],"mappings":";AAyBA,MAAM,eAAe;CAtBjB,8BAA8B;CAC9B,iCAAiC;CACjC,2BAA2B;CAC3B,6BAA6B;CAC7B,oCAAoC;CACpC,oCAAoC;CACpC,wDAAwD;CACxD,sBAAsB;CACtB,qCAAqC;CACrC,4BAA4B;CAC5B,0BAA0B;CAC1B,qCAAqC;CACrC,iCAAiC;CACjC,8BAA8B;CAC9B,sCAAsC;CACtC,oCAAoC;CACpC,0BAA0B;CAC1B,oCAAoC;CACpC,mBAAmB;CACnB,iCAAiC;AAKrC"}
1
+ {"version":3,"file":"nextjs.js","names":[],"sources":["../../../../src/presets/next/rules/nextjs.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_NEXTJS_CORRECTNESS = {\n \"nextjs/google-font-display\": \"error\",\n \"nextjs/google-font-preconnect\": \"error\",\n \"nextjs/inline-script-id\": \"error\",\n \"nextjs/next-script-for-ga\": \"error\",\n \"nextjs/no-assign-module-variable\": \"error\",\n \"nextjs/no-async-client-component\": \"error\",\n \"nextjs/no-before-interactive-script-outside-document\": \"error\",\n \"nextjs/no-css-tags\": \"error\",\n \"nextjs/no-document-import-in-page\": \"error\",\n \"nextjs/no-duplicate-head\": \"error\",\n \"nextjs/no-head-element\": \"error\",\n \"nextjs/no-head-import-in-document\": \"error\",\n \"nextjs/no-html-link-for-pages\": \"error\",\n \"nextjs/no-img-element\": \"allow\",\n \"nextjs/no-page-custom-font\": \"error\",\n \"nextjs/no-script-component-in-head\": \"error\",\n \"nextjs/no-styled-jsx-in-document\": \"error\",\n \"nextjs/no-sync-scripts\": \"error\",\n \"nextjs/no-title-in-document-head\": \"error\",\n \"nextjs/no-typos\": \"error\",\n \"nextjs/no-unwanted-polyfillio\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_NEXTJS = {\n ...RULES_NEXTJS_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_NEXTJS };\n"],"mappings":";AA0BA,MAAM,eAAe;CAvBjB,8BAA8B;CAC9B,iCAAiC;CACjC,2BAA2B;CAC3B,6BAA6B;CAC7B,oCAAoC;CACpC,oCAAoC;CACpC,wDAAwD;CACxD,sBAAsB;CACtB,qCAAqC;CACrC,4BAA4B;CAC5B,0BAA0B;CAC1B,qCAAqC;CACrC,iCAAiC;CACjC,yBAAyB;CACzB,8BAA8B;CAC9B,sCAAsC;CACtC,oCAAoC;CACpC,0BAA0B;CAC1B,oCAAoC;CACpC,mBAAmB;CACnB,iCAAiC;AAKrC"}
@@ -12,6 +12,7 @@ const RULES_NEXTJS = {
12
12
  "nextjs/no-head-element": "error",
13
13
  "nextjs/no-head-import-in-document": "error",
14
14
  "nextjs/no-html-link-for-pages": "error",
15
+ "nextjs/no-img-element": "allow",
15
16
  "nextjs/no-page-custom-font": "error",
16
17
  "nextjs/no-script-component-in-head": "error",
17
18
  "nextjs/no-styled-jsx-in-document": "error",
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.mjs","names":[],"sources":["../../../../src/presets/next/rules/nextjs.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_NEXTJS_CORRECTNESS = {\n \"nextjs/google-font-display\": \"error\",\n \"nextjs/google-font-preconnect\": \"error\",\n \"nextjs/inline-script-id\": \"error\",\n \"nextjs/next-script-for-ga\": \"error\",\n \"nextjs/no-assign-module-variable\": \"error\",\n \"nextjs/no-async-client-component\": \"error\",\n \"nextjs/no-before-interactive-script-outside-document\": \"error\",\n \"nextjs/no-css-tags\": \"error\",\n \"nextjs/no-document-import-in-page\": \"error\",\n \"nextjs/no-duplicate-head\": \"error\",\n \"nextjs/no-head-element\": \"error\",\n \"nextjs/no-head-import-in-document\": \"error\",\n \"nextjs/no-html-link-for-pages\": \"error\",\n \"nextjs/no-page-custom-font\": \"error\",\n \"nextjs/no-script-component-in-head\": \"error\",\n \"nextjs/no-styled-jsx-in-document\": \"error\",\n \"nextjs/no-sync-scripts\": \"error\",\n \"nextjs/no-title-in-document-head\": \"error\",\n \"nextjs/no-typos\": \"error\",\n \"nextjs/no-unwanted-polyfillio\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_NEXTJS = {\n ...RULES_NEXTJS_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_NEXTJS };\n"],"mappings":"AAyBA,MAAM,eAAe;CAtBjB,8BAA8B;CAC9B,iCAAiC;CACjC,2BAA2B;CAC3B,6BAA6B;CAC7B,oCAAoC;CACpC,oCAAoC;CACpC,wDAAwD;CACxD,sBAAsB;CACtB,qCAAqC;CACrC,4BAA4B;CAC5B,0BAA0B;CAC1B,qCAAqC;CACrC,iCAAiC;CACjC,8BAA8B;CAC9B,sCAAsC;CACtC,oCAAoC;CACpC,0BAA0B;CAC1B,oCAAoC;CACpC,mBAAmB;CACnB,iCAAiC;AAKrC"}
1
+ {"version":3,"file":"nextjs.mjs","names":[],"sources":["../../../../src/presets/next/rules/nextjs.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_NEXTJS_CORRECTNESS = {\n \"nextjs/google-font-display\": \"error\",\n \"nextjs/google-font-preconnect\": \"error\",\n \"nextjs/inline-script-id\": \"error\",\n \"nextjs/next-script-for-ga\": \"error\",\n \"nextjs/no-assign-module-variable\": \"error\",\n \"nextjs/no-async-client-component\": \"error\",\n \"nextjs/no-before-interactive-script-outside-document\": \"error\",\n \"nextjs/no-css-tags\": \"error\",\n \"nextjs/no-document-import-in-page\": \"error\",\n \"nextjs/no-duplicate-head\": \"error\",\n \"nextjs/no-head-element\": \"error\",\n \"nextjs/no-head-import-in-document\": \"error\",\n \"nextjs/no-html-link-for-pages\": \"error\",\n \"nextjs/no-img-element\": \"allow\",\n \"nextjs/no-page-custom-font\": \"error\",\n \"nextjs/no-script-component-in-head\": \"error\",\n \"nextjs/no-styled-jsx-in-document\": \"error\",\n \"nextjs/no-sync-scripts\": \"error\",\n \"nextjs/no-title-in-document-head\": \"error\",\n \"nextjs/no-typos\": \"error\",\n \"nextjs/no-unwanted-polyfillio\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_NEXTJS = {\n ...RULES_NEXTJS_CORRECTNESS,\n} as const satisfies LintRules;\n\nexport { RULES_NEXTJS };\n"],"mappings":"AA0BA,MAAM,eAAe;CAvBjB,8BAA8B;CAC9B,iCAAiC;CACjC,2BAA2B;CAC3B,6BAA6B;CAC7B,oCAAoC;CACpC,oCAAoC;CACpC,wDAAwD;CACxD,sBAAsB;CACtB,qCAAqC;CACrC,4BAA4B;CAC5B,0BAA0B;CAC1B,qCAAqC;CACrC,iCAAiC;CACjC,yBAAyB;CACzB,8BAA8B;CAC9B,sCAAsC;CACtC,oCAAoC;CACpC,0BAA0B;CAC1B,oCAAoC;CACpC,mBAAmB;CACnB,iCAAiC;AAKrC"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * No lint rules have been configured for class components.
3
+ */
1
4
  declare const RULES_REACT_CORRECTNESS: {
2
5
  readonly "react/exhaustive-deps": "error";
3
6
  readonly "react/forward-ref-uses-ref": "error";
@@ -47,6 +50,10 @@ declare const RULES_REACT_RESTRICTION: {
47
50
  readonly submit: true;
48
51
  }];
49
52
  readonly "react/no-react-children": "error";
53
+ readonly "react/prefer-function-component": ["error", {
54
+ readonly allowErrorBoundary: true;
55
+ readonly allowJsxUtilityClass: true;
56
+ }];
50
57
  };
51
58
  declare const RULES_REACT_STYLE: {
52
59
  readonly "react/jsx-boolean-value": ["error", "never"];
@@ -66,11 +73,17 @@ declare const RULES_REACT_SUSPICIOUS: {
66
73
  readonly "react/iframe-missing-sandbox": "error";
67
74
  readonly "react/jsx-no-comment-textnodes": "error";
68
75
  readonly "react/no-namespace": "error";
76
+ readonly "react/no-unstable-nested-components": ["error", {
77
+ readonly allowAsProps: true;
78
+ }];
69
79
  };
70
80
  declare const RULES_REACT: {
71
81
  readonly "react/iframe-missing-sandbox": "error";
72
82
  readonly "react/jsx-no-comment-textnodes": "error";
73
83
  readonly "react/no-namespace": "error";
84
+ readonly "react/no-unstable-nested-components": ["error", {
85
+ readonly allowAsProps: true;
86
+ }];
74
87
  readonly "react/jsx-boolean-value": ["error", "never"];
75
88
  readonly "react/jsx-curly-brace-presence": ["error", "always"];
76
89
  readonly "react/jsx-fragments": ["error", "syntax"];
@@ -89,6 +102,10 @@ declare const RULES_REACT: {
89
102
  readonly submit: true;
90
103
  }];
91
104
  readonly "react/no-react-children": "error";
105
+ readonly "react/prefer-function-component": ["error", {
106
+ readonly allowErrorBoundary: true;
107
+ readonly allowJsxUtilityClass: true;
108
+ }];
92
109
  readonly "react/jsx-no-constructed-context-values": "error";
93
110
  readonly "react/no-array-index-key": "error";
94
111
  readonly "react/checked-requires-onchange-or-readonly": ["error", {
@@ -43,7 +43,11 @@ const RULES_REACT_RESTRICTION = {
43
43
  reset: true,
44
44
  submit: true
45
45
  }],
46
- "react/no-react-children": "error"
46
+ "react/no-react-children": "error",
47
+ "react/prefer-function-component": ["error", {
48
+ allowErrorBoundary: true,
49
+ allowJsxUtilityClass: true
50
+ }]
47
51
  };
48
52
  const RULES_REACT_STYLE = {
49
53
  "react/jsx-boolean-value": ["error", "never"],
@@ -62,7 +66,8 @@ const RULES_REACT_STYLE = {
62
66
  const RULES_REACT_SUSPICIOUS = {
63
67
  "react/iframe-missing-sandbox": "error",
64
68
  "react/jsx-no-comment-textnodes": "error",
65
- "react/no-namespace": "error"
69
+ "react/no-namespace": "error",
70
+ "react/no-unstable-nested-components": ["error", { allowAsProps: true }]
66
71
  };
67
72
  const RULES_REACT = {
68
73
  ...RULES_REACT_CORRECTNESS,
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","names":[],"sources":["../../../../src/presets/react/rules/react.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_REACT_CORRECTNESS = {\n \"react/exhaustive-deps\": \"error\",\n \"react/forward-ref-uses-ref\": \"error\",\n \"react/jsx-key\": [\n \"error\",\n {\n checkFragmentShorthand: true,\n checkKeyMustBeforeSpread: false,\n warnOnDuplicates: true,\n },\n ],\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/jsx-props-no-spread-multi\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-render-return-value\": \"error\",\n \"react/no-string-refs\": [\n \"error\",\n {\n noTemplateLiterals: true,\n },\n ],\n \"react/no-this-in-sfc\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PEDANTIC = {\n \"react/checked-requires-onchange-or-readonly\": [\n \"error\",\n {\n ignoreExclusiveCheckedAttribute: false,\n ignoreMissingProperties: false,\n },\n ],\n \"react/jsx-no-target-blank\": [\n \"error\",\n {\n allowReferrer: false,\n enforceDynamicLinks: \"always\",\n forms: true,\n links: true,\n warnOnSpreadAttributes: false,\n },\n ],\n \"react/jsx-no-useless-fragment\": [\n \"error\",\n {\n allowExpressions: true,\n },\n ],\n \"react/no-unescaped-entities\": \"error\",\n \"react/rules-of-hooks\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PERF = {\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/no-array-index-key\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_RESTRICTION = {\n \"react/button-has-type\": [\n \"error\",\n {\n button: true,\n reset: true,\n submit: true,\n },\n ],\n \"react/no-react-children\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_STYLE = {\n \"react/jsx-boolean-value\": [\n \"error\",\n \"never\",\n ],\n \"react/jsx-curly-brace-presence\": [\n \"error\",\n \"always\",\n ],\n \"react/jsx-fragments\": [\n \"error\",\n \"syntax\",\n ],\n \"react/jsx-pascal-case\": [\n \"error\",\n {\n allowAllCaps: false,\n allowLeadingUnderscore: false,\n allowNamespace: true,\n },\n ],\n \"react/self-closing-comp\": [\n \"error\",\n {\n component: true,\n html: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT_SUSPICIOUS = {\n \"react/iframe-missing-sandbox\": \"error\",\n \"react/jsx-no-comment-textnodes\": \"error\",\n \"react/no-namespace\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT = {\n ...RULES_REACT_CORRECTNESS,\n ...RULES_REACT_PEDANTIC,\n ...RULES_REACT_PERF,\n ...RULES_REACT_RESTRICTION,\n ...RULES_REACT_STYLE,\n ...RULES_REACT_SUSPICIOUS,\n} as const satisfies LintRules;\n\nexport {\n RULES_REACT,\n RULES_REACT_CORRECTNESS,\n RULES_REACT_PEDANTIC,\n RULES_REACT_PERF,\n RULES_REACT_RESTRICTION,\n RULES_REACT_STYLE,\n RULES_REACT_SUSPICIOUS,\n};\n"],"mappings":";AAEA,MAAM,0BAA0B;CAC5B,yBAAyB;CACzB,8BAA8B;CAC9B,iBAAiB,CACb,SACA;EACI,wBAAwB;EACxB,0BAA0B;EAC1B,kBAAkB;CACtB,CACJ;CACA,gCAAgC;CAChC,sBAAsB;CACtB,mCAAmC;CACnC,0BAA0B;CAC1B,iCAAiC;CACjC,gCAAgC;CAChC,wBAAwB,CACpB,SACA,EACI,oBAAoB,KACxB,CACJ;CACA,wBAAwB;CACxB,uCAAuC;AAC3C;AAEA,MAAM,uBAAuB;CACzB,+CAA+C,CAC3C,SACA;EACI,iCAAiC;EACjC,yBAAyB;CAC7B,CACJ;CACA,6BAA6B,CACzB,SACA;EACI,eAAe;EACf,qBAAqB;EACrB,OAAO;EACP,OAAO;EACP,wBAAwB;CAC5B,CACJ;CACA,iCAAiC,CAC7B,SACA,EACI,kBAAkB,KACtB,CACJ;CACA,+BAA+B;CAC/B,wBAAwB;AAC5B;AAEA,MAAM,mBAAmB;CACrB,2CAA2C;CAC3C,4BAA4B;AAChC;AAEA,MAAM,0BAA0B;CAC5B,yBAAyB,CACrB,SACA;EACI,QAAQ;EACR,OAAO;EACP,QAAQ;CACZ,CACJ;CACA,2BAA2B;AAC/B;AAEA,MAAM,oBAAoB;CACtB,2BAA2B,CACvB,SACA,OACJ;CACA,kCAAkC,CAC9B,SACA,QACJ;CACA,uBAAuB,CACnB,SACA,QACJ;CACA,yBAAyB,CACrB,SACA;EACI,cAAc;EACd,wBAAwB;EACxB,gBAAgB;CACpB,CACJ;CACA,2BAA2B,CACvB,SACA;EACI,WAAW;EACX,MAAM;CACV,CACJ;AACJ;AAEA,MAAM,yBAAyB;CAC3B,gCAAgC;CAChC,kCAAkC;CAClC,sBAAsB;AAC1B;AAEA,MAAM,cAAc;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACP"}
1
+ {"version":3,"file":"react.js","names":[],"sources":["../../../../src/presets/react/rules/react.ts"],"sourcesContent":["/**\n * No lint rules have been configured for class components.\n */\n\nimport type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_REACT_CORRECTNESS = {\n \"react/exhaustive-deps\": \"error\",\n \"react/forward-ref-uses-ref\": \"error\",\n \"react/jsx-key\": [\n \"error\",\n {\n checkFragmentShorthand: true,\n checkKeyMustBeforeSpread: false,\n warnOnDuplicates: true,\n },\n ],\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/jsx-props-no-spread-multi\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-render-return-value\": \"error\",\n \"react/no-string-refs\": [\n \"error\",\n {\n noTemplateLiterals: true,\n },\n ],\n \"react/no-this-in-sfc\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PEDANTIC = {\n \"react/checked-requires-onchange-or-readonly\": [\n \"error\",\n {\n ignoreExclusiveCheckedAttribute: false,\n ignoreMissingProperties: false,\n },\n ],\n \"react/jsx-no-target-blank\": [\n \"error\",\n {\n allowReferrer: false,\n enforceDynamicLinks: \"always\",\n forms: true,\n links: true,\n warnOnSpreadAttributes: false,\n },\n ],\n \"react/jsx-no-useless-fragment\": [\n \"error\",\n {\n allowExpressions: true,\n },\n ],\n \"react/no-unescaped-entities\": \"error\",\n \"react/rules-of-hooks\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PERF = {\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/no-array-index-key\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_RESTRICTION = {\n \"react/button-has-type\": [\n \"error\",\n {\n button: true,\n reset: true,\n submit: true,\n },\n ],\n \"react/no-react-children\": \"error\",\n \"react/prefer-function-component\": [\n \"error\",\n {\n allowErrorBoundary: true,\n allowJsxUtilityClass: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT_STYLE = {\n \"react/jsx-boolean-value\": [\n \"error\",\n \"never\",\n ],\n \"react/jsx-curly-brace-presence\": [\n \"error\",\n \"always\",\n ],\n \"react/jsx-fragments\": [\n \"error\",\n \"syntax\",\n ],\n \"react/jsx-pascal-case\": [\n \"error\",\n {\n allowAllCaps: false,\n allowLeadingUnderscore: false,\n allowNamespace: true,\n },\n ],\n \"react/self-closing-comp\": [\n \"error\",\n {\n component: true,\n html: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT_SUSPICIOUS = {\n \"react/iframe-missing-sandbox\": \"error\",\n \"react/jsx-no-comment-textnodes\": \"error\",\n \"react/no-namespace\": \"error\",\n \"react/no-unstable-nested-components\": [\n \"error\",\n {\n allowAsProps: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT = {\n ...RULES_REACT_CORRECTNESS,\n ...RULES_REACT_PEDANTIC,\n ...RULES_REACT_PERF,\n ...RULES_REACT_RESTRICTION,\n ...RULES_REACT_STYLE,\n ...RULES_REACT_SUSPICIOUS,\n} as const satisfies LintRules;\n\nexport {\n RULES_REACT,\n RULES_REACT_CORRECTNESS,\n RULES_REACT_PEDANTIC,\n RULES_REACT_PERF,\n RULES_REACT_RESTRICTION,\n RULES_REACT_STYLE,\n RULES_REACT_SUSPICIOUS,\n};\n"],"mappings":";AAMA,MAAM,0BAA0B;CAC5B,yBAAyB;CACzB,8BAA8B;CAC9B,iBAAiB,CACb,SACA;EACI,wBAAwB;EACxB,0BAA0B;EAC1B,kBAAkB;CACtB,CACJ;CACA,gCAAgC;CAChC,sBAAsB;CACtB,mCAAmC;CACnC,0BAA0B;CAC1B,iCAAiC;CACjC,gCAAgC;CAChC,wBAAwB,CACpB,SACA,EACI,oBAAoB,KACxB,CACJ;CACA,wBAAwB;CACxB,uCAAuC;AAC3C;AAEA,MAAM,uBAAuB;CACzB,+CAA+C,CAC3C,SACA;EACI,iCAAiC;EACjC,yBAAyB;CAC7B,CACJ;CACA,6BAA6B,CACzB,SACA;EACI,eAAe;EACf,qBAAqB;EACrB,OAAO;EACP,OAAO;EACP,wBAAwB;CAC5B,CACJ;CACA,iCAAiC,CAC7B,SACA,EACI,kBAAkB,KACtB,CACJ;CACA,+BAA+B;CAC/B,wBAAwB;AAC5B;AAEA,MAAM,mBAAmB;CACrB,2CAA2C;CAC3C,4BAA4B;AAChC;AAEA,MAAM,0BAA0B;CAC5B,yBAAyB,CACrB,SACA;EACI,QAAQ;EACR,OAAO;EACP,QAAQ;CACZ,CACJ;CACA,2BAA2B;CAC3B,mCAAmC,CAC/B,SACA;EACI,oBAAoB;EACpB,sBAAsB;CAC1B,CACJ;AACJ;AAEA,MAAM,oBAAoB;CACtB,2BAA2B,CACvB,SACA,OACJ;CACA,kCAAkC,CAC9B,SACA,QACJ;CACA,uBAAuB,CACnB,SACA,QACJ;CACA,yBAAyB,CACrB,SACA;EACI,cAAc;EACd,wBAAwB;EACxB,gBAAgB;CACpB,CACJ;CACA,2BAA2B,CACvB,SACA;EACI,WAAW;EACX,MAAM;CACV,CACJ;AACJ;AAEA,MAAM,yBAAyB;CAC3B,gCAAgC;CAChC,kCAAkC;CAClC,sBAAsB;CACtB,uCAAuC,CACnC,SACA,EACI,cAAc,KAClB,CACJ;AACJ;AAEA,MAAM,cAAc;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACP"}
@@ -42,7 +42,11 @@ const RULES_REACT_RESTRICTION = {
42
42
  reset: true,
43
43
  submit: true
44
44
  }],
45
- "react/no-react-children": "error"
45
+ "react/no-react-children": "error",
46
+ "react/prefer-function-component": ["error", {
47
+ allowErrorBoundary: true,
48
+ allowJsxUtilityClass: true
49
+ }]
46
50
  };
47
51
  const RULES_REACT_STYLE = {
48
52
  "react/jsx-boolean-value": ["error", "never"],
@@ -61,7 +65,8 @@ const RULES_REACT_STYLE = {
61
65
  const RULES_REACT_SUSPICIOUS = {
62
66
  "react/iframe-missing-sandbox": "error",
63
67
  "react/jsx-no-comment-textnodes": "error",
64
- "react/no-namespace": "error"
68
+ "react/no-namespace": "error",
69
+ "react/no-unstable-nested-components": ["error", { allowAsProps: true }]
65
70
  };
66
71
  const RULES_REACT = {
67
72
  ...RULES_REACT_CORRECTNESS,
@@ -1 +1 @@
1
- {"version":3,"file":"react.mjs","names":[],"sources":["../../../../src/presets/react/rules/react.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_REACT_CORRECTNESS = {\n \"react/exhaustive-deps\": \"error\",\n \"react/forward-ref-uses-ref\": \"error\",\n \"react/jsx-key\": [\n \"error\",\n {\n checkFragmentShorthand: true,\n checkKeyMustBeforeSpread: false,\n warnOnDuplicates: true,\n },\n ],\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/jsx-props-no-spread-multi\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-render-return-value\": \"error\",\n \"react/no-string-refs\": [\n \"error\",\n {\n noTemplateLiterals: true,\n },\n ],\n \"react/no-this-in-sfc\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PEDANTIC = {\n \"react/checked-requires-onchange-or-readonly\": [\n \"error\",\n {\n ignoreExclusiveCheckedAttribute: false,\n ignoreMissingProperties: false,\n },\n ],\n \"react/jsx-no-target-blank\": [\n \"error\",\n {\n allowReferrer: false,\n enforceDynamicLinks: \"always\",\n forms: true,\n links: true,\n warnOnSpreadAttributes: false,\n },\n ],\n \"react/jsx-no-useless-fragment\": [\n \"error\",\n {\n allowExpressions: true,\n },\n ],\n \"react/no-unescaped-entities\": \"error\",\n \"react/rules-of-hooks\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PERF = {\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/no-array-index-key\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_RESTRICTION = {\n \"react/button-has-type\": [\n \"error\",\n {\n button: true,\n reset: true,\n submit: true,\n },\n ],\n \"react/no-react-children\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_STYLE = {\n \"react/jsx-boolean-value\": [\n \"error\",\n \"never\",\n ],\n \"react/jsx-curly-brace-presence\": [\n \"error\",\n \"always\",\n ],\n \"react/jsx-fragments\": [\n \"error\",\n \"syntax\",\n ],\n \"react/jsx-pascal-case\": [\n \"error\",\n {\n allowAllCaps: false,\n allowLeadingUnderscore: false,\n allowNamespace: true,\n },\n ],\n \"react/self-closing-comp\": [\n \"error\",\n {\n component: true,\n html: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT_SUSPICIOUS = {\n \"react/iframe-missing-sandbox\": \"error\",\n \"react/jsx-no-comment-textnodes\": \"error\",\n \"react/no-namespace\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT = {\n ...RULES_REACT_CORRECTNESS,\n ...RULES_REACT_PEDANTIC,\n ...RULES_REACT_PERF,\n ...RULES_REACT_RESTRICTION,\n ...RULES_REACT_STYLE,\n ...RULES_REACT_SUSPICIOUS,\n} as const satisfies LintRules;\n\nexport {\n RULES_REACT,\n RULES_REACT_CORRECTNESS,\n RULES_REACT_PEDANTIC,\n RULES_REACT_PERF,\n RULES_REACT_RESTRICTION,\n RULES_REACT_STYLE,\n RULES_REACT_SUSPICIOUS,\n};\n"],"mappings":"AAEA,MAAM,0BAA0B;CAC5B,yBAAyB;CACzB,8BAA8B;CAC9B,iBAAiB,CACb,SACA;EACI,wBAAwB;EACxB,0BAA0B;EAC1B,kBAAkB;CACtB,CACJ;CACA,gCAAgC;CAChC,sBAAsB;CACtB,mCAAmC;CACnC,0BAA0B;CAC1B,iCAAiC;CACjC,gCAAgC;CAChC,wBAAwB,CACpB,SACA,EACI,oBAAoB,KACxB,CACJ;CACA,wBAAwB;CACxB,uCAAuC;AAC3C;AAEA,MAAM,uBAAuB;CACzB,+CAA+C,CAC3C,SACA;EACI,iCAAiC;EACjC,yBAAyB;CAC7B,CACJ;CACA,6BAA6B,CACzB,SACA;EACI,eAAe;EACf,qBAAqB;EACrB,OAAO;EACP,OAAO;EACP,wBAAwB;CAC5B,CACJ;CACA,iCAAiC,CAC7B,SACA,EACI,kBAAkB,KACtB,CACJ;CACA,+BAA+B;CAC/B,wBAAwB;AAC5B;AAEA,MAAM,mBAAmB;CACrB,2CAA2C;CAC3C,4BAA4B;AAChC;AAEA,MAAM,0BAA0B;CAC5B,yBAAyB,CACrB,SACA;EACI,QAAQ;EACR,OAAO;EACP,QAAQ;CACZ,CACJ;CACA,2BAA2B;AAC/B;AAEA,MAAM,oBAAoB;CACtB,2BAA2B,CACvB,SACA,OACJ;CACA,kCAAkC,CAC9B,SACA,QACJ;CACA,uBAAuB,CACnB,SACA,QACJ;CACA,yBAAyB,CACrB,SACA;EACI,cAAc;EACd,wBAAwB;EACxB,gBAAgB;CACpB,CACJ;CACA,2BAA2B,CACvB,SACA;EACI,WAAW;EACX,MAAM;CACV,CACJ;AACJ;AAEA,MAAM,yBAAyB;CAC3B,gCAAgC;CAChC,kCAAkC;CAClC,sBAAsB;AAC1B;AAEA,MAAM,cAAc;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACP"}
1
+ {"version":3,"file":"react.mjs","names":[],"sources":["../../../../src/presets/react/rules/react.ts"],"sourcesContent":["/**\n * No lint rules have been configured for class components.\n */\n\nimport type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_REACT_CORRECTNESS = {\n \"react/exhaustive-deps\": \"error\",\n \"react/forward-ref-uses-ref\": \"error\",\n \"react/jsx-key\": [\n \"error\",\n {\n checkFragmentShorthand: true,\n checkKeyMustBeforeSpread: false,\n warnOnDuplicates: true,\n },\n ],\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/jsx-props-no-spread-multi\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-render-return-value\": \"error\",\n \"react/no-string-refs\": [\n \"error\",\n {\n noTemplateLiterals: true,\n },\n ],\n \"react/no-this-in-sfc\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PEDANTIC = {\n \"react/checked-requires-onchange-or-readonly\": [\n \"error\",\n {\n ignoreExclusiveCheckedAttribute: false,\n ignoreMissingProperties: false,\n },\n ],\n \"react/jsx-no-target-blank\": [\n \"error\",\n {\n allowReferrer: false,\n enforceDynamicLinks: \"always\",\n forms: true,\n links: true,\n warnOnSpreadAttributes: false,\n },\n ],\n \"react/jsx-no-useless-fragment\": [\n \"error\",\n {\n allowExpressions: true,\n },\n ],\n \"react/no-unescaped-entities\": \"error\",\n \"react/rules-of-hooks\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_PERF = {\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/no-array-index-key\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_REACT_RESTRICTION = {\n \"react/button-has-type\": [\n \"error\",\n {\n button: true,\n reset: true,\n submit: true,\n },\n ],\n \"react/no-react-children\": \"error\",\n \"react/prefer-function-component\": [\n \"error\",\n {\n allowErrorBoundary: true,\n allowJsxUtilityClass: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT_STYLE = {\n \"react/jsx-boolean-value\": [\n \"error\",\n \"never\",\n ],\n \"react/jsx-curly-brace-presence\": [\n \"error\",\n \"always\",\n ],\n \"react/jsx-fragments\": [\n \"error\",\n \"syntax\",\n ],\n \"react/jsx-pascal-case\": [\n \"error\",\n {\n allowAllCaps: false,\n allowLeadingUnderscore: false,\n allowNamespace: true,\n },\n ],\n \"react/self-closing-comp\": [\n \"error\",\n {\n component: true,\n html: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT_SUSPICIOUS = {\n \"react/iframe-missing-sandbox\": \"error\",\n \"react/jsx-no-comment-textnodes\": \"error\",\n \"react/no-namespace\": \"error\",\n \"react/no-unstable-nested-components\": [\n \"error\",\n {\n allowAsProps: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_REACT = {\n ...RULES_REACT_CORRECTNESS,\n ...RULES_REACT_PEDANTIC,\n ...RULES_REACT_PERF,\n ...RULES_REACT_RESTRICTION,\n ...RULES_REACT_STYLE,\n ...RULES_REACT_SUSPICIOUS,\n} as const satisfies LintRules;\n\nexport {\n RULES_REACT,\n RULES_REACT_CORRECTNESS,\n RULES_REACT_PEDANTIC,\n RULES_REACT_PERF,\n RULES_REACT_RESTRICTION,\n RULES_REACT_STYLE,\n RULES_REACT_SUSPICIOUS,\n};\n"],"mappings":"AAMA,MAAM,0BAA0B;CAC5B,yBAAyB;CACzB,8BAA8B;CAC9B,iBAAiB,CACb,SACA;EACI,wBAAwB;EACxB,0BAA0B;EAC1B,kBAAkB;CACtB,CACJ;CACA,gCAAgC;CAChC,sBAAsB;CACtB,mCAAmC;CACnC,0BAA0B;CAC1B,iCAAiC;CACjC,gCAAgC;CAChC,wBAAwB,CACpB,SACA,EACI,oBAAoB,KACxB,CACJ;CACA,wBAAwB;CACxB,uCAAuC;AAC3C;AAEA,MAAM,uBAAuB;CACzB,+CAA+C,CAC3C,SACA;EACI,iCAAiC;EACjC,yBAAyB;CAC7B,CACJ;CACA,6BAA6B,CACzB,SACA;EACI,eAAe;EACf,qBAAqB;EACrB,OAAO;EACP,OAAO;EACP,wBAAwB;CAC5B,CACJ;CACA,iCAAiC,CAC7B,SACA,EACI,kBAAkB,KACtB,CACJ;CACA,+BAA+B;CAC/B,wBAAwB;AAC5B;AAEA,MAAM,mBAAmB;CACrB,2CAA2C;CAC3C,4BAA4B;AAChC;AAEA,MAAM,0BAA0B;CAC5B,yBAAyB,CACrB,SACA;EACI,QAAQ;EACR,OAAO;EACP,QAAQ;CACZ,CACJ;CACA,2BAA2B;CAC3B,mCAAmC,CAC/B,SACA;EACI,oBAAoB;EACpB,sBAAsB;CAC1B,CACJ;AACJ;AAEA,MAAM,oBAAoB;CACtB,2BAA2B,CACvB,SACA,OACJ;CACA,kCAAkC,CAC9B,SACA,QACJ;CACA,uBAAuB,CACnB,SACA,QACJ;CACA,yBAAyB,CACrB,SACA;EACI,cAAc;EACd,wBAAwB;EACxB,gBAAgB;CACpB,CACJ;CACA,2BAA2B,CACvB,SACA;EACI,WAAW;EACX,MAAM;CACV,CACJ;AACJ;AAEA,MAAM,yBAAyB;CAC3B,gCAAgC;CAChC,kCAAkC;CAClC,sBAAsB;CACtB,uCAAuC,CACnC,SACA,EACI,cAAc,KAClB,CACJ;AACJ;AAEA,MAAM,cAAc;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACP"}
@@ -18,6 +18,8 @@ declare const RULES_VITEST_STYLE: {
18
18
  readonly "vitest/prefer-import-in-mock": ["error", {
19
19
  readonly fixable: true;
20
20
  }];
21
+ readonly "vitest/prefer-importing-vitest-globals": "error";
22
+ readonly "vitest/prefer-strict-boolean-matchers": "error";
21
23
  };
22
24
  declare const RULES_VITEST: {
23
25
  readonly "vitest/consistent-vitest-vi": ["error", {
@@ -28,6 +30,8 @@ declare const RULES_VITEST: {
28
30
  readonly "vitest/prefer-import-in-mock": ["error", {
29
31
  readonly fixable: true;
30
32
  }];
33
+ readonly "vitest/prefer-importing-vitest-globals": "error";
34
+ readonly "vitest/prefer-strict-boolean-matchers": "error";
31
35
  readonly "vitest/consistent-each-for": ["error", {
32
36
  readonly describe: "for";
33
37
  readonly it: "for";
@@ -14,7 +14,9 @@ const RULES_VITEST_STYLE = {
14
14
  "vitest/consistent-vitest-vi": ["error", { fn: "vi" }],
15
15
  "vitest/no-import-node-test": "error",
16
16
  "vitest/prefer-called-times": "error",
17
- "vitest/prefer-import-in-mock": ["error", { fixable: true }]
17
+ "vitest/prefer-import-in-mock": ["error", { fixable: true }],
18
+ "vitest/prefer-importing-vitest-globals": "error",
19
+ "vitest/prefer-strict-boolean-matchers": "error"
18
20
  };
19
21
  const RULES_VITEST = {
20
22
  ...RULES_VITEST_CORRECTNESS,
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.js","names":[],"sources":["../../../../src/presets/vitest/rules/vitest.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_VITEST_CORRECTNESS = {\n \"vitest/consistent-each-for\": [\n \"error\",\n {\n describe: \"for\",\n it: \"for\",\n suite: \"for\",\n test: \"for\",\n },\n ],\n \"vitest/hoisted-apis-on-top\": \"error\",\n \"vitest/no-conditional-tests\": \"error\",\n \"vitest/require-local-test-context-for-concurrent-snapshots\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_VITEST_STYLE = {\n \"vitest/consistent-vitest-vi\": [\n \"error\",\n {\n fn: \"vi\",\n },\n ],\n \"vitest/no-import-node-test\": \"error\",\n \"vitest/prefer-called-times\": \"error\",\n \"vitest/prefer-import-in-mock\": [\n \"error\",\n {\n fixable: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_VITEST = {\n ...RULES_VITEST_CORRECTNESS,\n ...RULES_VITEST_STYLE,\n} as const satisfies LintRules;\n\nexport { RULES_VITEST, RULES_VITEST_CORRECTNESS, RULES_VITEST_STYLE };\n"],"mappings":";AAEA,MAAM,2BAA2B;CAC7B,8BAA8B,CAC1B,SACA;EACI,UAAU;EACV,IAAI;EACJ,OAAO;EACP,MAAM;CACV,CACJ;CACA,8BAA8B;CAC9B,+BAA+B;CAC/B,8DAA8D;AAClE;AAEA,MAAM,qBAAqB;CACvB,+BAA+B,CAC3B,SACA,EACI,IAAI,KACR,CACJ;CACA,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC,CAC5B,SACA,EACI,SAAS,KACb,CACJ;AACJ;AAEA,MAAM,eAAe;CACjB,GAAG;CACH,GAAG;AACP"}
1
+ {"version":3,"file":"vitest.js","names":[],"sources":["../../../../src/presets/vitest/rules/vitest.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_VITEST_CORRECTNESS = {\n \"vitest/consistent-each-for\": [\n \"error\",\n {\n describe: \"for\",\n it: \"for\",\n suite: \"for\",\n test: \"for\",\n },\n ],\n \"vitest/hoisted-apis-on-top\": \"error\",\n \"vitest/no-conditional-tests\": \"error\",\n \"vitest/require-local-test-context-for-concurrent-snapshots\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_VITEST_STYLE = {\n \"vitest/consistent-vitest-vi\": [\n \"error\",\n {\n fn: \"vi\",\n },\n ],\n \"vitest/no-import-node-test\": \"error\",\n \"vitest/prefer-called-times\": \"error\",\n \"vitest/prefer-import-in-mock\": [\n \"error\",\n {\n fixable: true,\n },\n ],\n \"vitest/prefer-importing-vitest-globals\": \"error\",\n \"vitest/prefer-strict-boolean-matchers\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_VITEST = {\n ...RULES_VITEST_CORRECTNESS,\n ...RULES_VITEST_STYLE,\n} as const satisfies LintRules;\n\nexport { RULES_VITEST, RULES_VITEST_CORRECTNESS, RULES_VITEST_STYLE };\n"],"mappings":";AAEA,MAAM,2BAA2B;CAC7B,8BAA8B,CAC1B,SACA;EACI,UAAU;EACV,IAAI;EACJ,OAAO;EACP,MAAM;CACV,CACJ;CACA,8BAA8B;CAC9B,+BAA+B;CAC/B,8DAA8D;AAClE;AAEA,MAAM,qBAAqB;CACvB,+BAA+B,CAC3B,SACA,EACI,IAAI,KACR,CACJ;CACA,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC,CAC5B,SACA,EACI,SAAS,KACb,CACJ;CACA,0CAA0C;CAC1C,yCAAyC;AAC7C;AAEA,MAAM,eAAe;CACjB,GAAG;CACH,GAAG;AACP"}
@@ -13,7 +13,9 @@ const RULES_VITEST_STYLE = {
13
13
  "vitest/consistent-vitest-vi": ["error", { fn: "vi" }],
14
14
  "vitest/no-import-node-test": "error",
15
15
  "vitest/prefer-called-times": "error",
16
- "vitest/prefer-import-in-mock": ["error", { fixable: true }]
16
+ "vitest/prefer-import-in-mock": ["error", { fixable: true }],
17
+ "vitest/prefer-importing-vitest-globals": "error",
18
+ "vitest/prefer-strict-boolean-matchers": "error"
17
19
  };
18
20
  const RULES_VITEST = {
19
21
  ...RULES_VITEST_CORRECTNESS,
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.mjs","names":[],"sources":["../../../../src/presets/vitest/rules/vitest.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_VITEST_CORRECTNESS = {\n \"vitest/consistent-each-for\": [\n \"error\",\n {\n describe: \"for\",\n it: \"for\",\n suite: \"for\",\n test: \"for\",\n },\n ],\n \"vitest/hoisted-apis-on-top\": \"error\",\n \"vitest/no-conditional-tests\": \"error\",\n \"vitest/require-local-test-context-for-concurrent-snapshots\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_VITEST_STYLE = {\n \"vitest/consistent-vitest-vi\": [\n \"error\",\n {\n fn: \"vi\",\n },\n ],\n \"vitest/no-import-node-test\": \"error\",\n \"vitest/prefer-called-times\": \"error\",\n \"vitest/prefer-import-in-mock\": [\n \"error\",\n {\n fixable: true,\n },\n ],\n} as const satisfies LintRules;\n\nconst RULES_VITEST = {\n ...RULES_VITEST_CORRECTNESS,\n ...RULES_VITEST_STYLE,\n} as const satisfies LintRules;\n\nexport { RULES_VITEST, RULES_VITEST_CORRECTNESS, RULES_VITEST_STYLE };\n"],"mappings":"AAEA,MAAM,2BAA2B;CAC7B,8BAA8B,CAC1B,SACA;EACI,UAAU;EACV,IAAI;EACJ,OAAO;EACP,MAAM;CACV,CACJ;CACA,8BAA8B;CAC9B,+BAA+B;CAC/B,8DAA8D;AAClE;AAEA,MAAM,qBAAqB;CACvB,+BAA+B,CAC3B,SACA,EACI,IAAI,KACR,CACJ;CACA,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC,CAC5B,SACA,EACI,SAAS,KACb,CACJ;AACJ;AAEA,MAAM,eAAe;CACjB,GAAG;CACH,GAAG;AACP"}
1
+ {"version":3,"file":"vitest.mjs","names":[],"sources":["../../../../src/presets/vitest/rules/vitest.ts"],"sourcesContent":["import type { LintRules } from \"#/@types/oxlint\";\n\nconst RULES_VITEST_CORRECTNESS = {\n \"vitest/consistent-each-for\": [\n \"error\",\n {\n describe: \"for\",\n it: \"for\",\n suite: \"for\",\n test: \"for\",\n },\n ],\n \"vitest/hoisted-apis-on-top\": \"error\",\n \"vitest/no-conditional-tests\": \"error\",\n \"vitest/require-local-test-context-for-concurrent-snapshots\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_VITEST_STYLE = {\n \"vitest/consistent-vitest-vi\": [\n \"error\",\n {\n fn: \"vi\",\n },\n ],\n \"vitest/no-import-node-test\": \"error\",\n \"vitest/prefer-called-times\": \"error\",\n \"vitest/prefer-import-in-mock\": [\n \"error\",\n {\n fixable: true,\n },\n ],\n \"vitest/prefer-importing-vitest-globals\": \"error\",\n \"vitest/prefer-strict-boolean-matchers\": \"error\",\n} as const satisfies LintRules;\n\nconst RULES_VITEST = {\n ...RULES_VITEST_CORRECTNESS,\n ...RULES_VITEST_STYLE,\n} as const satisfies LintRules;\n\nexport { RULES_VITEST, RULES_VITEST_CORRECTNESS, RULES_VITEST_STYLE };\n"],"mappings":"AAEA,MAAM,2BAA2B;CAC7B,8BAA8B,CAC1B,SACA;EACI,UAAU;EACV,IAAI;EACJ,OAAO;EACP,MAAM;CACV,CACJ;CACA,8BAA8B;CAC9B,+BAA+B;CAC/B,8DAA8D;AAClE;AAEA,MAAM,qBAAqB;CACvB,+BAA+B,CAC3B,SACA,EACI,IAAI,KACR,CACJ;CACA,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC,CAC5B,SACA,EACI,SAAS,KACb,CACJ;CACA,0CAA0C;CAC1C,yCAAyC;AAC7C;AAEA,MAAM,eAAe;CACjB,GAAG;CACH,GAAG;AACP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apst/oxlint",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "A shareable Oxlint configuration",
5
5
  "keywords": [
6
6
  "oxlint",
@@ -30,45 +30,15 @@
30
30
  "import": "./dist/index.mjs",
31
31
  "require": "./dist/index.js"
32
32
  },
33
- "./constants/default": {
34
- "types": "./dist/constants/default.d.ts",
35
- "import": "./dist/constants/default.mjs",
36
- "require": "./dist/constants/default.js"
33
+ "./constants/*": {
34
+ "types": "./dist/constants/*.d.ts",
35
+ "import": "./dist/constants/*.mjs",
36
+ "require": "./dist/constants/*.js"
37
37
  },
38
- "./constants/ignore-patterns": {
39
- "types": "./dist/constants/ignore-patterns.d.ts",
40
- "import": "./dist/constants/ignore-patterns.mjs",
41
- "require": "./dist/constants/ignore-patterns.js"
42
- },
43
- "./presets/common": {
44
- "types": "./dist/presets/common/index.d.ts",
45
- "import": "./dist/presets/common/index.mjs",
46
- "require": "./dist/presets/common/index.js"
47
- },
48
- "./presets/node": {
49
- "types": "./dist/presets/node/index.d.ts",
50
- "import": "./dist/presets/node/index.mjs",
51
- "require": "./dist/presets/node/index.js"
52
- },
53
- "./presets/jsx": {
54
- "types": "./dist/presets/jsx/index.d.ts",
55
- "import": "./dist/presets/jsx/index.mjs",
56
- "require": "./dist/presets/jsx/index.js"
57
- },
58
- "./presets/react": {
59
- "types": "./dist/presets/react/index.d.ts",
60
- "import": "./dist/presets/react/index.mjs",
61
- "require": "./dist/presets/react/index.js"
62
- },
63
- "./presets/next": {
64
- "types": "./dist/presets/next/index.d.ts",
65
- "import": "./dist/presets/next/index.mjs",
66
- "require": "./dist/presets/next/index.js"
67
- },
68
- "./presets/vitest": {
69
- "types": "./dist/presets/vitest/index.d.ts",
70
- "import": "./dist/presets/vitest/index.mjs",
71
- "require": "./dist/presets/vitest/index.js"
38
+ "./presets/*": {
39
+ "types": "./dist/presets/*/index.d.ts",
40
+ "import": "./dist/presets/*/index.mjs",
41
+ "require": "./dist/presets/*/index.js"
72
42
  },
73
43
  "./package.json": "./package.json"
74
44
  },
@@ -79,15 +49,13 @@
79
49
  "dist"
80
50
  ],
81
51
  "dependencies": {
82
- "@stylistic/eslint-plugin": "6.0.0-beta.4",
83
- "es-toolkit": "^1.40.0",
84
- "ts-vista": "~0.2.3"
52
+ "es-toolkit": "^1.40.0"
85
53
  },
86
54
  "devDependencies": {
87
- "oxlint": "1.45.0"
55
+ "oxlint": "1.68.0"
88
56
  },
89
57
  "peerDependencies": {
90
- "oxlint": "^1.45.0"
58
+ "oxlint": "^1.68.0"
91
59
  },
92
60
  "peerDependenciesMeta": {
93
61
  "oxlint": {
@@ -1,18 +0,0 @@
1
- /**
2
- * `@stylistic/eslint-plugin` is used to enforce
3
- * some stylistic rules that are currently missing in `oxfmt`.
4
- */
5
- declare const RULES_STYLISTIC: {
6
- readonly "@stylistic/eslint-plugin/array-bracket-newline": ["error", {
7
- readonly multiline: true;
8
- readonly minItems: 1;
9
- }];
10
- readonly "@stylistic/eslint-plugin/array-element-newline": ["error", {
11
- readonly multiline: true;
12
- readonly minItems: 1;
13
- }];
14
- readonly "@stylistic/eslint-plugin/comma-dangle": ["error", "always-multiline"];
15
- readonly "@stylistic/eslint-plugin/indent": ["error", 4];
16
- };
17
- export { RULES_STYLISTIC };
18
- //# sourceMappingURL=stylistic.d.ts.map
@@ -1,16 +0,0 @@
1
-
2
- const RULES_STYLISTIC = {
3
- "@stylistic/eslint-plugin/array-bracket-newline": ["error", {
4
- multiline: true,
5
- minItems: 1
6
- }],
7
- "@stylistic/eslint-plugin/array-element-newline": ["error", {
8
- multiline: true,
9
- minItems: 1
10
- }],
11
- "@stylistic/eslint-plugin/comma-dangle": ["error", "always-multiline"],
12
- "@stylistic/eslint-plugin/indent": ["error", 4]
13
- };
14
-
15
- exports.RULES_STYLISTIC = RULES_STYLISTIC;
16
- //# sourceMappingURL=stylistic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylistic.js","names":[],"sources":["../../../../src/presets/common/rules/stylistic.ts"],"sourcesContent":["/**\n * `@stylistic/eslint-plugin` is used to enforce\n * some stylistic rules that are currently missing in `oxfmt`.\n */\n\nimport type { UnprefixedRuleOptions as RawRules } from \"@stylistic/eslint-plugin\";\n\ntype FirstElement<T> = T extends readonly [\n infer U,\n ...unknown[],\n]\n ? U\n : T extends readonly (infer U)[]\n ? U\n : never;\n\ntype Rules<T extends RawRules = RawRules> = {\n [K in keyof T as `@stylistic/eslint-plugin/${K & string}`]?: [\n (\"allow\" | \"off\" | \"warn\" | \"error\" | \"deny\") | number,\n FirstElement<T[K]>,\n ];\n};\n\nconst RULES_STYLISTIC = {\n \"@stylistic/eslint-plugin/array-bracket-newline\": [\n \"error\",\n {\n multiline: true,\n minItems: 1,\n },\n ],\n \"@stylistic/eslint-plugin/array-element-newline\": [\n \"error\",\n {\n multiline: true,\n minItems: 1,\n },\n ],\n // make every array element come with a trailing comma\n \"@stylistic/eslint-plugin/comma-dangle\": [\n \"error\",\n \"always-multiline\",\n ],\n // make every newline rules consistent with 4 spaces indent\n \"@stylistic/eslint-plugin/indent\": [\n \"error\",\n 4,\n ],\n} as const satisfies Rules;\n\nexport { RULES_STYLISTIC };\n"],"mappings":";AAuBA,MAAM,kBAAkB;CACpB,kDAAkD,CAC9C,SACA;EACI,WAAW;EACX,UAAU;CACd,CACJ;CACA,kDAAkD,CAC9C,SACA;EACI,WAAW;EACX,UAAU;CACd,CACJ;CAEA,yCAAyC,CACrC,SACA,kBACJ;CAEA,mCAAmC,CAC/B,SACA,CACJ;AACJ"}
@@ -1,15 +0,0 @@
1
- const RULES_STYLISTIC = {
2
- "@stylistic/eslint-plugin/array-bracket-newline": ["error", {
3
- multiline: true,
4
- minItems: 1
5
- }],
6
- "@stylistic/eslint-plugin/array-element-newline": ["error", {
7
- multiline: true,
8
- minItems: 1
9
- }],
10
- "@stylistic/eslint-plugin/comma-dangle": ["error", "always-multiline"],
11
- "@stylistic/eslint-plugin/indent": ["error", 4]
12
- };
13
-
14
- export { RULES_STYLISTIC };
15
- //# sourceMappingURL=stylistic.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylistic.mjs","names":[],"sources":["../../../../src/presets/common/rules/stylistic.ts"],"sourcesContent":["/**\n * `@stylistic/eslint-plugin` is used to enforce\n * some stylistic rules that are currently missing in `oxfmt`.\n */\n\nimport type { UnprefixedRuleOptions as RawRules } from \"@stylistic/eslint-plugin\";\n\ntype FirstElement<T> = T extends readonly [\n infer U,\n ...unknown[],\n]\n ? U\n : T extends readonly (infer U)[]\n ? U\n : never;\n\ntype Rules<T extends RawRules = RawRules> = {\n [K in keyof T as `@stylistic/eslint-plugin/${K & string}`]?: [\n (\"allow\" | \"off\" | \"warn\" | \"error\" | \"deny\") | number,\n FirstElement<T[K]>,\n ];\n};\n\nconst RULES_STYLISTIC = {\n \"@stylistic/eslint-plugin/array-bracket-newline\": [\n \"error\",\n {\n multiline: true,\n minItems: 1,\n },\n ],\n \"@stylistic/eslint-plugin/array-element-newline\": [\n \"error\",\n {\n multiline: true,\n minItems: 1,\n },\n ],\n // make every array element come with a trailing comma\n \"@stylistic/eslint-plugin/comma-dangle\": [\n \"error\",\n \"always-multiline\",\n ],\n // make every newline rules consistent with 4 spaces indent\n \"@stylistic/eslint-plugin/indent\": [\n \"error\",\n 4,\n ],\n} as const satisfies Rules;\n\nexport { RULES_STYLISTIC };\n"],"mappings":"AAuBA,MAAM,kBAAkB;CACpB,kDAAkD,CAC9C,SACA;EACI,WAAW;EACX,UAAU;CACd,CACJ;CACA,kDAAkD,CAC9C,SACA;EACI,WAAW;EACX,UAAU;CACd,CACJ;CAEA,yCAAyC,CACrC,SACA,kBACJ;CAEA,mCAAmC,CAC/B,SACA,CACJ;AACJ"}