@praha/oxlint-config-react 1.0.0-beta.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) PrAha, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @praha/oxlint-config-react
2
+
3
+ Oxlint config for PrAha.
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ jsxA11y: ()=>jsxA11y
28
+ });
29
+ const external_oxlint_namespaceObject = require("oxlint");
30
+ const jsxA11y = ()=>(0, external_oxlint_namespaceObject.defineConfig)({
31
+ plugins: [
32
+ 'jsx-a11y'
33
+ ],
34
+ rules: {
35
+ 'jsx-a11y/alt-text': 'error',
36
+ 'jsx-a11y/anchor-ambiguous-text': 'off',
37
+ 'jsx-a11y/anchor-has-content': 'error',
38
+ 'jsx-a11y/anchor-is-valid': 'error',
39
+ 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
40
+ 'jsx-a11y/aria-props': 'error',
41
+ 'jsx-a11y/aria-proptypes': 'error',
42
+ 'jsx-a11y/aria-role': 'error',
43
+ 'jsx-a11y/aria-unsupported-elements': 'error',
44
+ 'jsx-a11y/autocomplete-valid': 'error',
45
+ 'jsx-a11y/click-events-have-key-events': 'error',
46
+ 'jsx-a11y/heading-has-content': 'error',
47
+ 'jsx-a11y/html-has-lang': 'error',
48
+ 'jsx-a11y/iframe-has-title': 'error',
49
+ 'jsx-a11y/img-redundant-alt': 'error',
50
+ 'jsx-a11y/label-has-associated-control': 'error',
51
+ 'jsx-a11y/media-has-caption': 'error',
52
+ 'jsx-a11y/mouse-events-have-key-events': 'error',
53
+ 'jsx-a11y/no-access-key': 'error',
54
+ 'jsx-a11y/no-autofocus': 'error',
55
+ 'jsx-a11y/no-distracting-elements': 'error',
56
+ 'jsx-a11y/no-noninteractive-tabindex': [
57
+ 'error',
58
+ {
59
+ tags: [],
60
+ roles: [
61
+ 'tabpanel'
62
+ ],
63
+ allowExpressionValues: true
64
+ }
65
+ ],
66
+ 'jsx-a11y/no-redundant-roles': 'error',
67
+ 'jsx-a11y/no-static-element-interactions': [
68
+ 'error',
69
+ {
70
+ allowExpressionValues: true,
71
+ handlers: [
72
+ 'onClick',
73
+ 'onMouseDown',
74
+ 'onMouseUp',
75
+ 'onKeyPress',
76
+ 'onKeyDown',
77
+ 'onKeyUp'
78
+ ]
79
+ }
80
+ ],
81
+ 'jsx-a11y/role-has-required-aria-props': 'error',
82
+ 'jsx-a11y/role-supports-aria-props': 'error',
83
+ 'jsx-a11y/scope': 'error',
84
+ 'jsx-a11y/tabindex-no-positive': 'error'
85
+ }
86
+ });
87
+ exports.jsxA11y = __webpack_exports__.jsxA11y;
88
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
89
+ "jsxA11y"
90
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
91
+ Object.defineProperty(exports, '__esModule', {
92
+ value: true
93
+ });
@@ -0,0 +1,40 @@
1
+ export declare const jsxA11y: () => {
2
+ plugins: "jsx-a11y"[];
3
+ rules: {
4
+ 'jsx-a11y/alt-text': "error";
5
+ 'jsx-a11y/anchor-ambiguous-text': "off";
6
+ 'jsx-a11y/anchor-has-content': "error";
7
+ 'jsx-a11y/anchor-is-valid': "error";
8
+ 'jsx-a11y/aria-activedescendant-has-tabindex': "error";
9
+ 'jsx-a11y/aria-props': "error";
10
+ 'jsx-a11y/aria-proptypes': "error";
11
+ 'jsx-a11y/aria-role': "error";
12
+ 'jsx-a11y/aria-unsupported-elements': "error";
13
+ 'jsx-a11y/autocomplete-valid': "error";
14
+ 'jsx-a11y/click-events-have-key-events': "error";
15
+ 'jsx-a11y/heading-has-content': "error";
16
+ 'jsx-a11y/html-has-lang': "error";
17
+ 'jsx-a11y/iframe-has-title': "error";
18
+ 'jsx-a11y/img-redundant-alt': "error";
19
+ 'jsx-a11y/label-has-associated-control': "error";
20
+ 'jsx-a11y/media-has-caption': "error";
21
+ 'jsx-a11y/mouse-events-have-key-events': "error";
22
+ 'jsx-a11y/no-access-key': "error";
23
+ 'jsx-a11y/no-autofocus': "error";
24
+ 'jsx-a11y/no-distracting-elements': "error";
25
+ 'jsx-a11y/no-noninteractive-tabindex': (string | {
26
+ tags: never[];
27
+ roles: string[];
28
+ allowExpressionValues: boolean;
29
+ })[];
30
+ 'jsx-a11y/no-redundant-roles': "error";
31
+ 'jsx-a11y/no-static-element-interactions': (string | {
32
+ allowExpressionValues: boolean;
33
+ handlers: string[];
34
+ })[];
35
+ 'jsx-a11y/role-has-required-aria-props': "error";
36
+ 'jsx-a11y/role-supports-aria-props': "error";
37
+ 'jsx-a11y/scope': "error";
38
+ 'jsx-a11y/tabindex-no-positive': "error";
39
+ };
40
+ };
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ next: ()=>next
28
+ });
29
+ const external_oxlint_namespaceObject = require("oxlint");
30
+ const next = ()=>(0, external_oxlint_namespaceObject.defineConfig)({
31
+ plugins: [
32
+ 'nextjs'
33
+ ],
34
+ rules: {
35
+ 'nextjs/google-font-display': 'error',
36
+ 'nextjs/google-font-preconnect': 'error',
37
+ "nextjs/inline-script-id": 'error',
38
+ "nextjs/next-script-for-ga": 'error',
39
+ 'nextjs/no-assign-module-variable': 'error',
40
+ 'nextjs/no-async-client-component': 'error',
41
+ "nextjs/no-before-interactive-script-outside-document": 'error',
42
+ 'nextjs/no-css-tags': 'error',
43
+ 'nextjs/no-document-import-in-page': 'error',
44
+ 'nextjs/no-duplicate-head': 'error',
45
+ 'nextjs/no-head-element': 'error',
46
+ 'nextjs/no-head-import-in-document': 'error',
47
+ 'nextjs/no-html-link-for-pages': 'error',
48
+ 'nextjs/no-img-element': 'error',
49
+ 'nextjs/no-page-custom-font': 'error',
50
+ "nextjs/no-script-component-in-head": 'error',
51
+ 'nextjs/no-styled-jsx-in-document': 'error',
52
+ "nextjs/no-sync-scripts": 'error',
53
+ 'nextjs/no-title-in-document-head': 'error',
54
+ 'nextjs/no-typos': 'error',
55
+ 'nextjs/no-unwanted-polyfillio': 'error'
56
+ }
57
+ });
58
+ exports.next = __webpack_exports__.next;
59
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
60
+ "next"
61
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
62
+ Object.defineProperty(exports, '__esModule', {
63
+ value: true
64
+ });
@@ -0,0 +1,26 @@
1
+ export declare const next: () => {
2
+ plugins: "nextjs"[];
3
+ rules: {
4
+ 'nextjs/google-font-display': "error";
5
+ 'nextjs/google-font-preconnect': "error";
6
+ 'nextjs/inline-script-id': "error";
7
+ 'nextjs/next-script-for-ga': "error";
8
+ 'nextjs/no-assign-module-variable': "error";
9
+ 'nextjs/no-async-client-component': "error";
10
+ 'nextjs/no-before-interactive-script-outside-document': "error";
11
+ 'nextjs/no-css-tags': "error";
12
+ 'nextjs/no-document-import-in-page': "error";
13
+ 'nextjs/no-duplicate-head': "error";
14
+ 'nextjs/no-head-element': "error";
15
+ 'nextjs/no-head-import-in-document': "error";
16
+ 'nextjs/no-html-link-for-pages': "error";
17
+ 'nextjs/no-img-element': "error";
18
+ 'nextjs/no-page-custom-font': "error";
19
+ 'nextjs/no-script-component-in-head': "error";
20
+ 'nextjs/no-styled-jsx-in-document': "error";
21
+ 'nextjs/no-sync-scripts': "error";
22
+ 'nextjs/no-title-in-document-head': "error";
23
+ 'nextjs/no-typos': "error";
24
+ 'nextjs/no-unwanted-polyfillio': "error";
25
+ };
26
+ };
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ react: ()=>react
28
+ });
29
+ const external_oxlint_namespaceObject = require("oxlint");
30
+ const react = ()=>(0, external_oxlint_namespaceObject.defineConfig)({
31
+ plugins: [
32
+ 'react'
33
+ ],
34
+ rules: {
35
+ 'react/display-name': 'error',
36
+ 'react/exhaustive-deps': 'error',
37
+ 'react/jsx-boolean-value': 'error',
38
+ 'react/jsx-curly-brace-presence': [
39
+ 'error',
40
+ {
41
+ propElementValues: 'always'
42
+ }
43
+ ],
44
+ 'react/jsx-fragments': [
45
+ 'error',
46
+ 'syntax'
47
+ ],
48
+ 'react/jsx-handler-names': [
49
+ 'error',
50
+ {
51
+ eventHandlerPrefix: 'handle',
52
+ eventHandlerPropPrefix: 'on',
53
+ checkLocalVariables: false,
54
+ checkInlineFunction: false
55
+ }
56
+ ],
57
+ 'react/jsx-key': 'error',
58
+ 'react/jsx-no-comment-textnodes': 'error',
59
+ 'react/jsx-no-duplicate-props': 'error',
60
+ 'react/jsx-no-target-blank': 'error',
61
+ 'react/jsx-no-undef': 'error',
62
+ 'react/jsx-no-useless-fragment': 'error',
63
+ 'react/no-children-prop': 'error',
64
+ 'react/no-danger-with-children': 'error',
65
+ 'react/no-direct-mutation-state': 'error',
66
+ 'react/no-find-dom-node': 'error',
67
+ 'react/no-is-mounted': 'error',
68
+ 'react/no-render-return-value': 'error',
69
+ 'react/no-string-refs': 'error',
70
+ 'react/no-unescaped-entities': 'error',
71
+ 'react/no-unknown-property': 'error',
72
+ 'react/react-in-jsx-scope': 'off',
73
+ 'react/require-render-return': 'error',
74
+ 'react/rules-of-hooks': 'error',
75
+ 'react/self-closing-comp': 'error'
76
+ }
77
+ });
78
+ exports.react = __webpack_exports__.react;
79
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
80
+ "react"
81
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
82
+ Object.defineProperty(exports, '__esModule', {
83
+ value: true
84
+ });
@@ -0,0 +1,37 @@
1
+ export declare const react: () => {
2
+ plugins: "react"[];
3
+ rules: {
4
+ 'react/display-name': "error";
5
+ 'react/exhaustive-deps': "error";
6
+ 'react/jsx-boolean-value': "error";
7
+ 'react/jsx-curly-brace-presence': (string | {
8
+ propElementValues: string;
9
+ })[];
10
+ 'react/jsx-fragments': string[];
11
+ 'react/jsx-handler-names': (string | {
12
+ eventHandlerPrefix: string;
13
+ eventHandlerPropPrefix: string;
14
+ checkLocalVariables: boolean;
15
+ checkInlineFunction: boolean;
16
+ })[];
17
+ 'react/jsx-key': "error";
18
+ 'react/jsx-no-comment-textnodes': "error";
19
+ 'react/jsx-no-duplicate-props': "error";
20
+ 'react/jsx-no-target-blank': "error";
21
+ 'react/jsx-no-undef': "error";
22
+ 'react/jsx-no-useless-fragment': "error";
23
+ 'react/no-children-prop': "error";
24
+ 'react/no-danger-with-children': "error";
25
+ 'react/no-direct-mutation-state': "error";
26
+ 'react/no-find-dom-node': "error";
27
+ 'react/no-is-mounted': "error";
28
+ 'react/no-render-return-value': "error";
29
+ 'react/no-string-refs': "error";
30
+ 'react/no-unescaped-entities': "error";
31
+ 'react/no-unknown-property': "error";
32
+ 'react/react-in-jsx-scope': "off";
33
+ 'react/require-render-return': "error";
34
+ 'react/rules-of-hooks': "error";
35
+ 'react/self-closing-comp': "error";
36
+ };
37
+ };
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ storybook: ()=>storybook
28
+ });
29
+ const external_oxlint_namespaceObject = require("oxlint");
30
+ const storybook = ()=>(0, external_oxlint_namespaceObject.defineConfig)({
31
+ plugins: [
32
+ 'react',
33
+ 'import'
34
+ ],
35
+ jsPlugins: [
36
+ {
37
+ name: 'storybook',
38
+ specifier: 'eslint-plugin-storybook'
39
+ }
40
+ ],
41
+ overrides: [
42
+ {
43
+ files: [
44
+ '**/.storybook/main.*'
45
+ ],
46
+ rules: {
47
+ 'storybook/no-uninstalled-addons': 'error'
48
+ }
49
+ },
50
+ {
51
+ files: [
52
+ '**/*.story.*',
53
+ '**/*.stories.*'
54
+ ],
55
+ rules: {
56
+ 'react/rules-of-hooks': 'off',
57
+ 'import/no-anonymous-default-export': 'off',
58
+ 'storybook/await-interactions': 'error',
59
+ 'storybook/context-in-play-function': 'error',
60
+ 'storybook/csf-component': 'error',
61
+ 'storybook/default-exports': 'error',
62
+ 'storybook/hierarchy-separator': 'error',
63
+ 'storybook/meta-inline-properties': 'off',
64
+ 'storybook/meta-satisfies-type': 'error',
65
+ 'storybook/no-redundant-story-name': 'error',
66
+ 'storybook/no-renderer-packages': 'error',
67
+ 'storybook/no-stories-of': 'error',
68
+ 'storybook/no-title-property-in-meta': 'off',
69
+ 'storybook/prefer-pascal-case': 'error',
70
+ 'storybook/story-exports': 'error',
71
+ 'storybook/use-storybook-expect': 'error',
72
+ 'storybook/use-storybook-testing-library': 'error'
73
+ }
74
+ }
75
+ ]
76
+ });
77
+ exports.storybook = __webpack_exports__.storybook;
78
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
79
+ "storybook"
80
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
81
+ Object.defineProperty(exports, '__esModule', {
82
+ value: true
83
+ });
@@ -0,0 +1,52 @@
1
+ export declare const storybook: () => {
2
+ plugins: ("react" | "import")[];
3
+ jsPlugins: {
4
+ name: string;
5
+ specifier: string;
6
+ }[];
7
+ overrides: ({
8
+ files: string[];
9
+ rules: {
10
+ 'storybook/no-uninstalled-addons': "error";
11
+ 'react/rules-of-hooks'?: never;
12
+ 'import/no-anonymous-default-export'?: never;
13
+ 'storybook/await-interactions'?: never;
14
+ 'storybook/context-in-play-function'?: never;
15
+ 'storybook/csf-component'?: never;
16
+ 'storybook/default-exports'?: never;
17
+ 'storybook/hierarchy-separator'?: never;
18
+ 'storybook/meta-inline-properties'?: never;
19
+ 'storybook/meta-satisfies-type'?: never;
20
+ 'storybook/no-redundant-story-name'?: never;
21
+ 'storybook/no-renderer-packages'?: never;
22
+ 'storybook/no-stories-of'?: never;
23
+ 'storybook/no-title-property-in-meta'?: never;
24
+ 'storybook/prefer-pascal-case'?: never;
25
+ 'storybook/story-exports'?: never;
26
+ 'storybook/use-storybook-expect'?: never;
27
+ 'storybook/use-storybook-testing-library'?: never;
28
+ };
29
+ } | {
30
+ files: string[];
31
+ rules: {
32
+ 'react/rules-of-hooks': "off";
33
+ 'import/no-anonymous-default-export': "off";
34
+ 'storybook/await-interactions': "error";
35
+ 'storybook/context-in-play-function': "error";
36
+ 'storybook/csf-component': "error";
37
+ 'storybook/default-exports': "error";
38
+ 'storybook/hierarchy-separator': "error";
39
+ 'storybook/meta-inline-properties': "off";
40
+ 'storybook/meta-satisfies-type': "error";
41
+ 'storybook/no-redundant-story-name': "error";
42
+ 'storybook/no-renderer-packages': "error";
43
+ 'storybook/no-stories-of': "error";
44
+ 'storybook/no-title-property-in-meta': "off";
45
+ 'storybook/prefer-pascal-case': "error";
46
+ 'storybook/story-exports': "error";
47
+ 'storybook/use-storybook-expect': "error";
48
+ 'storybook/use-storybook-testing-library': "error";
49
+ 'storybook/no-uninstalled-addons'?: never;
50
+ };
51
+ })[];
52
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ react: ()=>react
28
+ });
29
+ const external_oxlint_namespaceObject = require("oxlint");
30
+ const jsx_a11y_cjs_namespaceObject = require("./factories/jsx-a11y.cjs");
31
+ const next_cjs_namespaceObject = require("./factories/next.cjs");
32
+ const react_cjs_namespaceObject = require("./factories/react.cjs");
33
+ const storybook_cjs_namespaceObject = require("./factories/storybook.cjs");
34
+ const react = ()=>(0, external_oxlint_namespaceObject.defineConfig)({
35
+ extends: [
36
+ (0, jsx_a11y_cjs_namespaceObject.jsxA11y)(),
37
+ (0, react_cjs_namespaceObject.react)(),
38
+ (0, next_cjs_namespaceObject.next)(),
39
+ (0, storybook_cjs_namespaceObject.storybook)()
40
+ ]
41
+ });
42
+ exports.react = __webpack_exports__.react;
43
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
44
+ "react"
45
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
46
+ Object.defineProperty(exports, '__esModule', {
47
+ value: true
48
+ });
@@ -0,0 +1,2 @@
1
+ import type { OxlintConfig } from 'oxlint';
2
+ export declare const react: () => OxlintConfig;
@@ -0,0 +1,40 @@
1
+ export declare const jsxA11y: () => {
2
+ plugins: "jsx-a11y"[];
3
+ rules: {
4
+ 'jsx-a11y/alt-text': "error";
5
+ 'jsx-a11y/anchor-ambiguous-text': "off";
6
+ 'jsx-a11y/anchor-has-content': "error";
7
+ 'jsx-a11y/anchor-is-valid': "error";
8
+ 'jsx-a11y/aria-activedescendant-has-tabindex': "error";
9
+ 'jsx-a11y/aria-props': "error";
10
+ 'jsx-a11y/aria-proptypes': "error";
11
+ 'jsx-a11y/aria-role': "error";
12
+ 'jsx-a11y/aria-unsupported-elements': "error";
13
+ 'jsx-a11y/autocomplete-valid': "error";
14
+ 'jsx-a11y/click-events-have-key-events': "error";
15
+ 'jsx-a11y/heading-has-content': "error";
16
+ 'jsx-a11y/html-has-lang': "error";
17
+ 'jsx-a11y/iframe-has-title': "error";
18
+ 'jsx-a11y/img-redundant-alt': "error";
19
+ 'jsx-a11y/label-has-associated-control': "error";
20
+ 'jsx-a11y/media-has-caption': "error";
21
+ 'jsx-a11y/mouse-events-have-key-events': "error";
22
+ 'jsx-a11y/no-access-key': "error";
23
+ 'jsx-a11y/no-autofocus': "error";
24
+ 'jsx-a11y/no-distracting-elements': "error";
25
+ 'jsx-a11y/no-noninteractive-tabindex': (string | {
26
+ tags: never[];
27
+ roles: string[];
28
+ allowExpressionValues: boolean;
29
+ })[];
30
+ 'jsx-a11y/no-redundant-roles': "error";
31
+ 'jsx-a11y/no-static-element-interactions': (string | {
32
+ allowExpressionValues: boolean;
33
+ handlers: string[];
34
+ })[];
35
+ 'jsx-a11y/role-has-required-aria-props': "error";
36
+ 'jsx-a11y/role-supports-aria-props': "error";
37
+ 'jsx-a11y/scope': "error";
38
+ 'jsx-a11y/tabindex-no-positive': "error";
39
+ };
40
+ };
@@ -0,0 +1,59 @@
1
+ import { defineConfig } from "oxlint";
2
+ const jsxA11y = ()=>defineConfig({
3
+ plugins: [
4
+ 'jsx-a11y'
5
+ ],
6
+ rules: {
7
+ 'jsx-a11y/alt-text': 'error',
8
+ 'jsx-a11y/anchor-ambiguous-text': 'off',
9
+ 'jsx-a11y/anchor-has-content': 'error',
10
+ 'jsx-a11y/anchor-is-valid': 'error',
11
+ 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
12
+ 'jsx-a11y/aria-props': 'error',
13
+ 'jsx-a11y/aria-proptypes': 'error',
14
+ 'jsx-a11y/aria-role': 'error',
15
+ 'jsx-a11y/aria-unsupported-elements': 'error',
16
+ 'jsx-a11y/autocomplete-valid': 'error',
17
+ 'jsx-a11y/click-events-have-key-events': 'error',
18
+ 'jsx-a11y/heading-has-content': 'error',
19
+ 'jsx-a11y/html-has-lang': 'error',
20
+ 'jsx-a11y/iframe-has-title': 'error',
21
+ 'jsx-a11y/img-redundant-alt': 'error',
22
+ 'jsx-a11y/label-has-associated-control': 'error',
23
+ 'jsx-a11y/media-has-caption': 'error',
24
+ 'jsx-a11y/mouse-events-have-key-events': 'error',
25
+ 'jsx-a11y/no-access-key': 'error',
26
+ 'jsx-a11y/no-autofocus': 'error',
27
+ 'jsx-a11y/no-distracting-elements': 'error',
28
+ 'jsx-a11y/no-noninteractive-tabindex': [
29
+ 'error',
30
+ {
31
+ tags: [],
32
+ roles: [
33
+ 'tabpanel'
34
+ ],
35
+ allowExpressionValues: true
36
+ }
37
+ ],
38
+ 'jsx-a11y/no-redundant-roles': 'error',
39
+ 'jsx-a11y/no-static-element-interactions': [
40
+ 'error',
41
+ {
42
+ allowExpressionValues: true,
43
+ handlers: [
44
+ 'onClick',
45
+ 'onMouseDown',
46
+ 'onMouseUp',
47
+ 'onKeyPress',
48
+ 'onKeyDown',
49
+ 'onKeyUp'
50
+ ]
51
+ }
52
+ ],
53
+ 'jsx-a11y/role-has-required-aria-props': 'error',
54
+ 'jsx-a11y/role-supports-aria-props': 'error',
55
+ 'jsx-a11y/scope': 'error',
56
+ 'jsx-a11y/tabindex-no-positive': 'error'
57
+ }
58
+ });
59
+ export { jsxA11y };
@@ -0,0 +1,26 @@
1
+ export declare const next: () => {
2
+ plugins: "nextjs"[];
3
+ rules: {
4
+ 'nextjs/google-font-display': "error";
5
+ 'nextjs/google-font-preconnect': "error";
6
+ 'nextjs/inline-script-id': "error";
7
+ 'nextjs/next-script-for-ga': "error";
8
+ 'nextjs/no-assign-module-variable': "error";
9
+ 'nextjs/no-async-client-component': "error";
10
+ 'nextjs/no-before-interactive-script-outside-document': "error";
11
+ 'nextjs/no-css-tags': "error";
12
+ 'nextjs/no-document-import-in-page': "error";
13
+ 'nextjs/no-duplicate-head': "error";
14
+ 'nextjs/no-head-element': "error";
15
+ 'nextjs/no-head-import-in-document': "error";
16
+ 'nextjs/no-html-link-for-pages': "error";
17
+ 'nextjs/no-img-element': "error";
18
+ 'nextjs/no-page-custom-font': "error";
19
+ 'nextjs/no-script-component-in-head': "error";
20
+ 'nextjs/no-styled-jsx-in-document': "error";
21
+ 'nextjs/no-sync-scripts': "error";
22
+ 'nextjs/no-title-in-document-head': "error";
23
+ 'nextjs/no-typos': "error";
24
+ 'nextjs/no-unwanted-polyfillio': "error";
25
+ };
26
+ };
@@ -0,0 +1,30 @@
1
+ import { defineConfig } from "oxlint";
2
+ const next = ()=>defineConfig({
3
+ plugins: [
4
+ 'nextjs'
5
+ ],
6
+ rules: {
7
+ 'nextjs/google-font-display': 'error',
8
+ 'nextjs/google-font-preconnect': 'error',
9
+ "nextjs/inline-script-id": 'error',
10
+ "nextjs/next-script-for-ga": 'error',
11
+ 'nextjs/no-assign-module-variable': 'error',
12
+ 'nextjs/no-async-client-component': 'error',
13
+ "nextjs/no-before-interactive-script-outside-document": 'error',
14
+ 'nextjs/no-css-tags': 'error',
15
+ 'nextjs/no-document-import-in-page': 'error',
16
+ 'nextjs/no-duplicate-head': 'error',
17
+ 'nextjs/no-head-element': 'error',
18
+ 'nextjs/no-head-import-in-document': 'error',
19
+ 'nextjs/no-html-link-for-pages': 'error',
20
+ 'nextjs/no-img-element': 'error',
21
+ 'nextjs/no-page-custom-font': 'error',
22
+ "nextjs/no-script-component-in-head": 'error',
23
+ 'nextjs/no-styled-jsx-in-document': 'error',
24
+ "nextjs/no-sync-scripts": 'error',
25
+ 'nextjs/no-title-in-document-head': 'error',
26
+ 'nextjs/no-typos': 'error',
27
+ 'nextjs/no-unwanted-polyfillio': 'error'
28
+ }
29
+ });
30
+ export { next };
@@ -0,0 +1,37 @@
1
+ export declare const react: () => {
2
+ plugins: "react"[];
3
+ rules: {
4
+ 'react/display-name': "error";
5
+ 'react/exhaustive-deps': "error";
6
+ 'react/jsx-boolean-value': "error";
7
+ 'react/jsx-curly-brace-presence': (string | {
8
+ propElementValues: string;
9
+ })[];
10
+ 'react/jsx-fragments': string[];
11
+ 'react/jsx-handler-names': (string | {
12
+ eventHandlerPrefix: string;
13
+ eventHandlerPropPrefix: string;
14
+ checkLocalVariables: boolean;
15
+ checkInlineFunction: boolean;
16
+ })[];
17
+ 'react/jsx-key': "error";
18
+ 'react/jsx-no-comment-textnodes': "error";
19
+ 'react/jsx-no-duplicate-props': "error";
20
+ 'react/jsx-no-target-blank': "error";
21
+ 'react/jsx-no-undef': "error";
22
+ 'react/jsx-no-useless-fragment': "error";
23
+ 'react/no-children-prop': "error";
24
+ 'react/no-danger-with-children': "error";
25
+ 'react/no-direct-mutation-state': "error";
26
+ 'react/no-find-dom-node': "error";
27
+ 'react/no-is-mounted': "error";
28
+ 'react/no-render-return-value': "error";
29
+ 'react/no-string-refs': "error";
30
+ 'react/no-unescaped-entities': "error";
31
+ 'react/no-unknown-property': "error";
32
+ 'react/react-in-jsx-scope': "off";
33
+ 'react/require-render-return': "error";
34
+ 'react/rules-of-hooks': "error";
35
+ 'react/self-closing-comp': "error";
36
+ };
37
+ };
@@ -0,0 +1,50 @@
1
+ import { defineConfig } from "oxlint";
2
+ const react = ()=>defineConfig({
3
+ plugins: [
4
+ 'react'
5
+ ],
6
+ rules: {
7
+ 'react/display-name': 'error',
8
+ 'react/exhaustive-deps': 'error',
9
+ 'react/jsx-boolean-value': 'error',
10
+ 'react/jsx-curly-brace-presence': [
11
+ 'error',
12
+ {
13
+ propElementValues: 'always'
14
+ }
15
+ ],
16
+ 'react/jsx-fragments': [
17
+ 'error',
18
+ 'syntax'
19
+ ],
20
+ 'react/jsx-handler-names': [
21
+ 'error',
22
+ {
23
+ eventHandlerPrefix: 'handle',
24
+ eventHandlerPropPrefix: 'on',
25
+ checkLocalVariables: false,
26
+ checkInlineFunction: false
27
+ }
28
+ ],
29
+ 'react/jsx-key': 'error',
30
+ 'react/jsx-no-comment-textnodes': 'error',
31
+ 'react/jsx-no-duplicate-props': 'error',
32
+ 'react/jsx-no-target-blank': 'error',
33
+ 'react/jsx-no-undef': 'error',
34
+ 'react/jsx-no-useless-fragment': 'error',
35
+ 'react/no-children-prop': 'error',
36
+ 'react/no-danger-with-children': 'error',
37
+ 'react/no-direct-mutation-state': 'error',
38
+ 'react/no-find-dom-node': 'error',
39
+ 'react/no-is-mounted': 'error',
40
+ 'react/no-render-return-value': 'error',
41
+ 'react/no-string-refs': 'error',
42
+ 'react/no-unescaped-entities': 'error',
43
+ 'react/no-unknown-property': 'error',
44
+ 'react/react-in-jsx-scope': 'off',
45
+ 'react/require-render-return': 'error',
46
+ 'react/rules-of-hooks': 'error',
47
+ 'react/self-closing-comp': 'error'
48
+ }
49
+ });
50
+ export { react };
@@ -0,0 +1,52 @@
1
+ export declare const storybook: () => {
2
+ plugins: ("react" | "import")[];
3
+ jsPlugins: {
4
+ name: string;
5
+ specifier: string;
6
+ }[];
7
+ overrides: ({
8
+ files: string[];
9
+ rules: {
10
+ 'storybook/no-uninstalled-addons': "error";
11
+ 'react/rules-of-hooks'?: never;
12
+ 'import/no-anonymous-default-export'?: never;
13
+ 'storybook/await-interactions'?: never;
14
+ 'storybook/context-in-play-function'?: never;
15
+ 'storybook/csf-component'?: never;
16
+ 'storybook/default-exports'?: never;
17
+ 'storybook/hierarchy-separator'?: never;
18
+ 'storybook/meta-inline-properties'?: never;
19
+ 'storybook/meta-satisfies-type'?: never;
20
+ 'storybook/no-redundant-story-name'?: never;
21
+ 'storybook/no-renderer-packages'?: never;
22
+ 'storybook/no-stories-of'?: never;
23
+ 'storybook/no-title-property-in-meta'?: never;
24
+ 'storybook/prefer-pascal-case'?: never;
25
+ 'storybook/story-exports'?: never;
26
+ 'storybook/use-storybook-expect'?: never;
27
+ 'storybook/use-storybook-testing-library'?: never;
28
+ };
29
+ } | {
30
+ files: string[];
31
+ rules: {
32
+ 'react/rules-of-hooks': "off";
33
+ 'import/no-anonymous-default-export': "off";
34
+ 'storybook/await-interactions': "error";
35
+ 'storybook/context-in-play-function': "error";
36
+ 'storybook/csf-component': "error";
37
+ 'storybook/default-exports': "error";
38
+ 'storybook/hierarchy-separator': "error";
39
+ 'storybook/meta-inline-properties': "off";
40
+ 'storybook/meta-satisfies-type': "error";
41
+ 'storybook/no-redundant-story-name': "error";
42
+ 'storybook/no-renderer-packages': "error";
43
+ 'storybook/no-stories-of': "error";
44
+ 'storybook/no-title-property-in-meta': "off";
45
+ 'storybook/prefer-pascal-case': "error";
46
+ 'storybook/story-exports': "error";
47
+ 'storybook/use-storybook-expect': "error";
48
+ 'storybook/use-storybook-testing-library': "error";
49
+ 'storybook/no-uninstalled-addons'?: never;
50
+ };
51
+ })[];
52
+ };
@@ -0,0 +1,49 @@
1
+ import { defineConfig } from "oxlint";
2
+ const storybook = ()=>defineConfig({
3
+ plugins: [
4
+ 'react',
5
+ 'import'
6
+ ],
7
+ jsPlugins: [
8
+ {
9
+ name: 'storybook',
10
+ specifier: 'eslint-plugin-storybook'
11
+ }
12
+ ],
13
+ overrides: [
14
+ {
15
+ files: [
16
+ '**/.storybook/main.*'
17
+ ],
18
+ rules: {
19
+ 'storybook/no-uninstalled-addons': 'error'
20
+ }
21
+ },
22
+ {
23
+ files: [
24
+ '**/*.story.*',
25
+ '**/*.stories.*'
26
+ ],
27
+ rules: {
28
+ 'react/rules-of-hooks': 'off',
29
+ 'import/no-anonymous-default-export': 'off',
30
+ 'storybook/await-interactions': 'error',
31
+ 'storybook/context-in-play-function': 'error',
32
+ 'storybook/csf-component': 'error',
33
+ 'storybook/default-exports': 'error',
34
+ 'storybook/hierarchy-separator': 'error',
35
+ 'storybook/meta-inline-properties': 'off',
36
+ 'storybook/meta-satisfies-type': 'error',
37
+ 'storybook/no-redundant-story-name': 'error',
38
+ 'storybook/no-renderer-packages': 'error',
39
+ 'storybook/no-stories-of': 'error',
40
+ 'storybook/no-title-property-in-meta': 'off',
41
+ 'storybook/prefer-pascal-case': 'error',
42
+ 'storybook/story-exports': 'error',
43
+ 'storybook/use-storybook-expect': 'error',
44
+ 'storybook/use-storybook-testing-library': 'error'
45
+ }
46
+ }
47
+ ]
48
+ });
49
+ export { storybook };
@@ -0,0 +1,2 @@
1
+ import type { OxlintConfig } from 'oxlint';
2
+ export declare const react: () => OxlintConfig;
@@ -0,0 +1,14 @@
1
+ import { defineConfig } from "oxlint";
2
+ import { jsxA11y } from "./factories/jsx-a11y.js";
3
+ import { next } from "./factories/next.js";
4
+ import { react } from "./factories/react.js";
5
+ import { storybook } from "./factories/storybook.js";
6
+ const src_react = ()=>defineConfig({
7
+ extends: [
8
+ jsxA11y(),
9
+ react(),
10
+ next(),
11
+ storybook()
12
+ ]
13
+ });
14
+ export { src_react as react };
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@praha/oxlint-config-react",
3
+ "version": "1.0.0-beta.0",
4
+ "description": "Oxlint config for PrAha.",
5
+ "keywords": [
6
+ "javascript",
7
+ "typescript",
8
+ "oxlint"
9
+ ],
10
+ "homepage": "https://github.com/praha-inc/oxlint-config/blob/main/packages/react/README.md",
11
+ "bugs": {
12
+ "url": "https://github.com/praha-inc/oxlint-config/issues"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/praha-inc/oxlint-config.git",
17
+ "directory": "packages/react"
18
+ },
19
+ "license": "MIT",
20
+ "author": "PrAha, Inc.",
21
+ "sideEffects": false,
22
+ "type": "module",
23
+ "exports": {
24
+ "require": {
25
+ "types": "./dist/cjs/index.d.ts",
26
+ "default": "./dist/cjs/index.cjs"
27
+ },
28
+ "import": {
29
+ "types": "./dist/esm/index.d.ts",
30
+ "default": "./dist/esm/index.js"
31
+ }
32
+ },
33
+ "main": "./dist/cjs/index.cjs",
34
+ "module": "./dist/esm/index.js",
35
+ "types": "./dist/cjs/index.d.ts",
36
+ "files": [
37
+ "dist",
38
+ "LICENSE",
39
+ "README.md"
40
+ ],
41
+ "scripts": {
42
+ "build": "rslib build",
43
+ "test": "vitest run",
44
+ "test:watch": "vitest watch",
45
+ "lint:code": "oxlint",
46
+ "lint:type": "tsc --noEmit"
47
+ },
48
+ "dependencies": {
49
+ "@praha/oxlint-config-internal": "workspace:*",
50
+ "eslint-plugin-storybook": "^10.2.19",
51
+ "oxlint": "^1.52.0",
52
+ "oxlint-tsgolint": "^0.17.0"
53
+ },
54
+ "devDependencies": {
55
+ "@praha/oxlint-config-standard": "workspace:*",
56
+ "@rslib/core": "0.19.6",
57
+ "typescript": "5.9.3",
58
+ "vitest": "4.0.18"
59
+ }
60
+ }