@apst/oxlint 0.2.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 (44) hide show
  1. package/README.md +0 -34
  2. package/dist/presets/common/index.d.ts +2 -2
  3. package/dist/presets/common/index.js +1 -0
  4. package/dist/presets/common/index.mjs +2 -2
  5. package/dist/presets/common/rules/eslint.d.ts +8 -4
  6. package/dist/presets/common/rules/eslint.js +4 -4
  7. package/dist/presets/common/rules/eslint.js.map +1 -1
  8. package/dist/presets/common/rules/eslint.mjs +4 -4
  9. package/dist/presets/common/rules/eslint.mjs.map +1 -1
  10. package/dist/presets/common/rules/import.d.ts +10 -0
  11. package/dist/presets/common/rules/import.js +5 -0
  12. package/dist/presets/common/rules/import.js.map +1 -1
  13. package/dist/presets/common/rules/import.mjs +5 -0
  14. package/dist/presets/common/rules/import.mjs.map +1 -1
  15. package/dist/presets/common/rules/typescript.d.ts +56 -42
  16. package/dist/presets/common/rules/typescript.js +19 -14
  17. package/dist/presets/common/rules/typescript.js.map +1 -1
  18. package/dist/presets/common/rules/typescript.mjs +19 -14
  19. package/dist/presets/common/rules/typescript.mjs.map +1 -1
  20. package/dist/presets/common/rules/unicorn.d.ts +11 -1
  21. package/dist/presets/common/rules/unicorn.js +6 -0
  22. package/dist/presets/common/rules/unicorn.js.map +1 -1
  23. package/dist/presets/common/rules/unicorn.mjs +6 -1
  24. package/dist/presets/common/rules/unicorn.mjs.map +1 -1
  25. package/dist/presets/jsx/rules/jsx-a11y.d.ts +16 -0
  26. package/dist/presets/jsx/rules/jsx-a11y.js +15 -0
  27. package/dist/presets/jsx/rules/jsx-a11y.js.map +1 -1
  28. package/dist/presets/jsx/rules/jsx-a11y.mjs +15 -0
  29. package/dist/presets/jsx/rules/jsx-a11y.mjs.map +1 -1
  30. package/dist/presets/next/rules/nextjs.js +1 -0
  31. package/dist/presets/next/rules/nextjs.js.map +1 -1
  32. package/dist/presets/next/rules/nextjs.mjs +1 -0
  33. package/dist/presets/next/rules/nextjs.mjs.map +1 -1
  34. package/dist/presets/react/rules/react.d.ts +17 -0
  35. package/dist/presets/react/rules/react.js +7 -2
  36. package/dist/presets/react/rules/react.js.map +1 -1
  37. package/dist/presets/react/rules/react.mjs +7 -2
  38. package/dist/presets/react/rules/react.mjs.map +1 -1
  39. package/dist/presets/vitest/rules/vitest.d.ts +4 -0
  40. package/dist/presets/vitest/rules/vitest.js +3 -1
  41. package/dist/presets/vitest/rules/vitest.js.map +1 -1
  42. package/dist/presets/vitest/rules/vitest.mjs +3 -1
  43. package/dist/presets/vitest/rules/vitest.mjs.map +1 -1
  44. package/package.json +11 -41
@@ -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.2.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
  },
@@ -82,10 +52,10 @@
82
52
  "es-toolkit": "^1.40.0"
83
53
  },
84
54
  "devDependencies": {
85
- "oxlint": "1.45.0"
55
+ "oxlint": "1.68.0"
86
56
  },
87
57
  "peerDependencies": {
88
- "oxlint": "^1.45.0"
58
+ "oxlint": "^1.68.0"
89
59
  },
90
60
  "peerDependenciesMeta": {
91
61
  "oxlint": {