@nekoyasuii/config 0.1.9 → 0.2.1

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.
@@ -1,10 +1,8 @@
1
1
  import {
2
- jsPluginSettings2,
3
2
  selectJsPlugins2,
4
3
  js_plugins_default
5
- } from "../../../../chunk-5cy3qjw4.js";
4
+ } from "../../../../chunk-fkpy6323.js";
6
5
  export {
7
6
  js_plugins_default as default,
8
- jsPluginSettings2 as jsPluginSettings,
9
7
  selectJsPlugins2 as selectJsPlugins
10
8
  };
@@ -0,0 +1,25 @@
1
+ export declare const lazueeConfig: {
2
+ overrides: ({
3
+ files: string[];
4
+ rules: {
5
+ "lazuee/interface-pascal-case": "error";
6
+ "lazuee/no-ts-accessibility": "error";
7
+ "lazuee/canonical-header-names"?: undefined;
8
+ };
9
+ } | {
10
+ files: string[];
11
+ rules: {
12
+ "lazuee/interface-pascal-case"?: undefined;
13
+ "lazuee/no-ts-accessibility"?: undefined;
14
+ "lazuee/canonical-header-names": "off";
15
+ };
16
+ })[];
17
+ rules: {
18
+ "lazuee/canonical-header-names": "off";
19
+ "lazuee/interface-pascal-case": "off";
20
+ "lazuee/no-ts-accessibility": "off";
21
+ /** ── lazuee ──────────────────────────────────────────────────── */
22
+ "lazuee/prefer-alias": "error";
23
+ };
24
+ };
25
+ export default lazueeConfig;
@@ -0,0 +1,17 @@
1
+ export declare const noCommentSlopConfig: {
2
+ rules: {
3
+ /** ── no-comment-slop ──────────────────────────────────────────────────── */
4
+ "no-comment-slop/max-comment-lines": "error";
5
+ "no-comment-slop/multiline-jsdoc-format": "error";
6
+ "no-comment-slop/no-banner-comment": "error";
7
+ "no-comment-slop/no-em-dash": "error";
8
+ "no-comment-slop/no-foreign-syntax": "error";
9
+ "no-comment-slop/no-jargon": "error";
10
+ "no-comment-slop/no-trailing-comment": "error";
11
+ "no-comment-slop/no-trailing-period": "error";
12
+ "no-comment-slop/prefer-jsdoc-for-exports": "error";
13
+ "no-comment-slop/prefer-jsdoc-for-members": "error";
14
+ "no-comment-slop/require-member-docs": "error";
15
+ };
16
+ };
17
+ export default noCommentSlopConfig;
@@ -0,0 +1,159 @@
1
+ export declare const reactDoctorConfig: {
2
+ rules: {
3
+ "react-doctor/activity-wraps-effect-heavy-subtree": "error";
4
+ "react-doctor/advanced-event-handler-refs": "error";
5
+ "react-doctor/async-await-in-loop": "error";
6
+ "react-doctor/async-defer-await": "error";
7
+ "react-doctor/async-parallel": "error";
8
+ "react-doctor/auth-token-in-web-storage": "error";
9
+ "react-doctor/client-localstorage-no-version": "error";
10
+ "react-doctor/client-passive-event-listeners": "error";
11
+ "react-doctor/dialog-has-accessible-name": "error";
12
+ "react-doctor/effect-needs-cleanup": "error";
13
+ "react-doctor/hooks-no-nan-in-deps": "error";
14
+ "react-doctor/html-no-invalid-paragraph-child": "error";
15
+ "react-doctor/html-no-invalid-table-nesting": "error";
16
+ "react-doctor/html-no-nested-interactive": "error";
17
+ "react-doctor/jotai-derived-atom-returns-fresh-object": "error";
18
+ "react-doctor/jotai-select-atom-in-render-body": "error";
19
+ "react-doctor/jotai-tq-use-raw-query-atom": "error";
20
+ "react-doctor/js-async-reduce-without-awaited-acc": "error";
21
+ "react-doctor/js-batch-dom-css": "error";
22
+ "react-doctor/js-cache-property-access": "error";
23
+ "react-doctor/js-cache-storage": "error";
24
+ "react-doctor/js-combine-iterations": "error";
25
+ "react-doctor/js-early-exit": "error";
26
+ "react-doctor/js-flatmap-filter": "error";
27
+ "react-doctor/js-hoist-intl": "error";
28
+ "react-doctor/js-hoist-regexp": "error";
29
+ "react-doctor/js-index-maps": "error";
30
+ "react-doctor/js-length-check-first": "error";
31
+ "react-doctor/js-min-max-loop": "error";
32
+ "react-doctor/js-set-map-lookups": "error";
33
+ "react-doctor/js-tosorted-immutable": "error";
34
+ "react-doctor/no-adjust-state-on-prop-change": "error";
35
+ "react-doctor/no-array-index-as-key": "error";
36
+ "react-doctor/no-async-effect-callback": "error";
37
+ "react-doctor/no-barrel-import": "error";
38
+ "react-doctor/no-call-component-as-function": "error";
39
+ "react-doctor/no-cascading-set-state": "error";
40
+ "react-doctor/no-chain-state-updates": "error";
41
+ "react-doctor/no-create-context-in-render": "error";
42
+ "react-doctor/no-create-ref-in-function-component": "error";
43
+ "react-doctor/no-create-store-in-render": "error";
44
+ "react-doctor/no-derived-state": "error";
45
+ "react-doctor/no-derived-state-effect": "error";
46
+ "react-doctor/no-derived-useState": "error";
47
+ "react-doctor/no-direct-state-mutation": "error";
48
+ "react-doctor/no-disabled-zoom": "error";
49
+ "react-doctor/no-document-start-view-transition": "error";
50
+ "react-doctor/no-document-write": "error";
51
+ "react-doctor/no-dynamic-import-path": "error";
52
+ "react-doctor/no-effect-chain": "error";
53
+ "react-doctor/no-effect-event-handler": "error";
54
+ "react-doctor/no-effect-event-in-deps": "error";
55
+ "react-doctor/no-effect-with-fresh-deps": "error";
56
+ "react-doctor/no-eval": "error";
57
+ "react-doctor/no-event-handler": "error";
58
+ "react-doctor/no-event-trigger-state": "error";
59
+ "react-doctor/no-fetch-in-effect": "error";
60
+ "react-doctor/no-flush-sync": "error";
61
+ "react-doctor/no-full-lodash-import": "error";
62
+ "react-doctor/no-giant-component": "error";
63
+ "react-doctor/no-global-css-variable-animation": "error";
64
+ "react-doctor/no-gray-on-colored-background": "error";
65
+ "react-doctor/no-img-lazy-with-high-fetchpriority": "error";
66
+ "react-doctor/no-initialize-state": "error";
67
+ "react-doctor/no-inline-bounce-easing": "error";
68
+ "react-doctor/no-inline-exhaustive-style": "error";
69
+ "react-doctor/no-inline-prop-on-memo-component": "error";
70
+ "react-doctor/no-json-parse-stringify-clone": "error";
71
+ "react-doctor/no-jsx-element-type": "error";
72
+ "react-doctor/no-large-animated-blur": "error";
73
+ "react-doctor/no-layout-property-animation": "error";
74
+ "react-doctor/no-layout-transition-inline": "error";
75
+ "react-doctor/no-legacy-class-lifecycles": "error";
76
+ "react-doctor/no-legacy-context-api": "error";
77
+ "react-doctor/no-long-transition-duration": "error";
78
+ "react-doctor/no-many-boolean-props": "error";
79
+ "react-doctor/no-mirror-prop-effect": "error";
80
+ "react-doctor/no-moment": "error";
81
+ "react-doctor/no-mutable-in-deps": "error";
82
+ "react-doctor/no-mutating-reducer-state": "error";
83
+ "react-doctor/no-nested-component-definition": "error";
84
+ "react-doctor/no-outline-none": "error";
85
+ "react-doctor/no-pass-data-to-parent": "error";
86
+ "react-doctor/no-pass-live-state-to-parent": "error";
87
+ "react-doctor/no-permanent-will-change": "error";
88
+ "react-doctor/no-polymorphic-children": "error";
89
+ "react-doctor/no-prevent-default": "error";
90
+ "react-doctor/no-prop-callback-in-effect": "error";
91
+ "react-doctor/no-random-key": "error";
92
+ "react-doctor/no-react-dom-deprecated-apis": "error";
93
+ "react-doctor/no-react19-deprecated-apis": "error";
94
+ "react-doctor/no-render-in-render": "error";
95
+ "react-doctor/no-render-prop-children": "error";
96
+ "react-doctor/no-reset-all-state-on-prop-change": "error";
97
+ "react-doctor/no-scale-from-zero": "error";
98
+ "react-doctor/no-secrets-in-client-code": "error";
99
+ "react-doctor/no-self-updating-effect": "error";
100
+ "react-doctor/no-set-state-in-render": "error";
101
+ "react-doctor/no-string-false-on-boolean-attribute": "error";
102
+ "react-doctor/no-sync-xhr": "error";
103
+ "react-doctor/no-tiny-text": "error";
104
+ "react-doctor/no-transition-all": "error";
105
+ "react-doctor/no-uncontrolled-input": "error";
106
+ "react-doctor/no-undeferred-third-party": "error";
107
+ "react-doctor/no-usememo-simple-expression": "error";
108
+ "react-doctor/only-export-components": "error";
109
+ "react-doctor/prefer-dynamic-import": "error";
110
+ "react-doctor/prefer-explicit-variants": "error";
111
+ "react-doctor/prefer-html-dialog": "error";
112
+ "react-doctor/prefer-module-scope-pure-function": "error";
113
+ "react-doctor/prefer-module-scope-static-value": "error";
114
+ "react-doctor/prefer-stable-empty-fallback": "error";
115
+ "react-doctor/prefer-use-effect-event": "error";
116
+ "react-doctor/prefer-use-sync-external-store": "error";
117
+ "react-doctor/prefer-useReducer": "error";
118
+ "react-doctor/react-compiler-no-manual-memoization": "error";
119
+ "react-doctor/redux-useselector-inline-derivation": "error";
120
+ "react-doctor/redux-useselector-returns-new-collection": "error";
121
+ "react-doctor/rendering-animate-svg-wrapper": "error";
122
+ "react-doctor/rendering-conditional-render": "error";
123
+ "react-doctor/rendering-hoist-jsx": "error";
124
+ "react-doctor/rendering-hydration-mismatch-time": "error";
125
+ "react-doctor/rendering-hydration-no-flicker": "error";
126
+ "react-doctor/rendering-script-defer-async": "error";
127
+ "react-doctor/rendering-svg-precision": "error";
128
+ "react-doctor/rendering-usetransition-loading": "error";
129
+ "react-doctor/rerender-defer-reads-hook": "error";
130
+ "react-doctor/rerender-dependencies": "error";
131
+ "react-doctor/rerender-derived-state-from-hook": "error";
132
+ "react-doctor/rerender-functional-setstate": "error";
133
+ "react-doctor/rerender-lazy-ref-init": "error";
134
+ "react-doctor/rerender-lazy-state-init": "error";
135
+ "react-doctor/rerender-memo-before-early-return": "error";
136
+ "react-doctor/rerender-memo-with-default-value": "error";
137
+ "react-doctor/rerender-state-only-in-handlers": "error";
138
+ "react-doctor/rerender-transitions-scroll": "error";
139
+ "react-doctor/server-after-nonblocking": "error";
140
+ "react-doctor/server-auth-actions": "error";
141
+ "react-doctor/server-cache-with-object-literal": "error";
142
+ "react-doctor/server-dedup-props": "error";
143
+ "react-doctor/server-fetch-without-revalidate": "error";
144
+ "react-doctor/server-hoist-static-io": "error";
145
+ "react-doctor/server-no-mutable-module-state": "error";
146
+ "react-doctor/server-sequential-independent-await": "error";
147
+ "react-doctor/use-lazy-motion": "error";
148
+ "react-doctor/zod-v4-no-deprecated-error-apis": "error";
149
+ "react-doctor/zod-v4-no-deprecated-error-customization": "error";
150
+ "react-doctor/zod-v4-no-deprecated-schema-apis": "error";
151
+ "react-doctor/zod-v4-prefer-top-level-string-formats": "error";
152
+ };
153
+ settings: {
154
+ "react-doctor": {
155
+ portedRuleMode: string;
156
+ };
157
+ };
158
+ };
159
+ export default reactDoctorConfig;
@@ -0,0 +1,41 @@
1
+ export declare const shadcnConfig: {
2
+ overrides: ({
3
+ files: string[];
4
+ rules: {
5
+ "shadcn/no-arbitrary-values": "off";
6
+ "shadcn/no-restyle": "off";
7
+ "shadcn/require-static-classes": "off";
8
+ "shadcn/no-raw-colors"?: undefined;
9
+ };
10
+ } | {
11
+ /** The logo's brand colors are fixed; theme tokens shift between light and dark */
12
+ files: string[];
13
+ rules: {
14
+ "shadcn/no-arbitrary-values"?: undefined;
15
+ "shadcn/no-restyle"?: undefined;
16
+ "shadcn/require-static-classes"?: undefined;
17
+ "shadcn/no-raw-colors": "off";
18
+ };
19
+ })[];
20
+ rules: {
21
+ "shadcn/no-arbitrary-values": ["error", {
22
+ allow: "layout"[];
23
+ }];
24
+ "shadcn/no-inline-styles": ["error", {
25
+ /** Telemetry/measured layout computes waterfall positions, slider markers, and per-series/status colors; no fixed class set can represent them */
26
+ allow: ("background" | "backgroundColor" | "borderColor" | "color" | "gridTemplateColumns" | "height" | "left" | "paddingLeft" | "top" | "width")[];
27
+ }];
28
+ "shadcn/no-raw-colors": "error";
29
+ /** ── shadcn ──────────────────────────────────────────────────── */
30
+ "shadcn/no-restyle": ["error", {
31
+ allow: "layout"[];
32
+ contracts: {
33
+ allow: string[];
34
+ pattern: string;
35
+ }[];
36
+ }];
37
+ "shadcn/no-unknown-classes": "error";
38
+ "shadcn/require-static-classes": "error";
39
+ };
40
+ };
41
+ export default shadcnConfig;
@@ -0,0 +1,254 @@
1
+ export declare const sonarJSConfig: {
2
+ overrides: {
3
+ files: string[];
4
+ rules: {
5
+ /**
6
+ * Repeated string literals (test titles, expected values) are normal
7
+ * and idiomatic in test files
8
+ */
9
+ "sonarjs/no-duplicate-string": "off";
10
+ };
11
+ }[];
12
+ rules: {
13
+ /**
14
+ * Every non-deprecated sonarjs rule that does not require type checking
15
+ * (the JS plugin bridge has no type information); the type-aware rules
16
+ * stay enabled in the ESLint preset only
17
+ */
18
+ "sonarjs/arguments-usage": "error";
19
+ "sonarjs/array-constructor": "error";
20
+ /** Fights the formatter (arrowParentheses: always) */
21
+ "sonarjs/arrow-function-convention": "off";
22
+ "sonarjs/assertions-in-test-cases": "error";
23
+ "sonarjs/async-test-assertions": "error";
24
+ "sonarjs/avoid-mutating-nested-properties-of-shallow-clones": "error";
25
+ "sonarjs/aws-apigateway-public-api": "error";
26
+ "sonarjs/aws-ec2-rds-dms-public": "error";
27
+ "sonarjs/aws-ec2-unencrypted-ebs-volume": "error";
28
+ "sonarjs/aws-efs-unencrypted": "error";
29
+ "sonarjs/aws-iam-all-privileges": "error";
30
+ "sonarjs/aws-iam-all-resources-accessible": "error";
31
+ "sonarjs/aws-iam-privilege-escalation": "error";
32
+ "sonarjs/aws-iam-public-access": "error";
33
+ "sonarjs/aws-opensearchservice-domain": "error";
34
+ "sonarjs/aws-rds-unencrypted-databases": "error";
35
+ "sonarjs/aws-restricted-ip-admin-access": "error";
36
+ "sonarjs/aws-s3-bucket-granted-access": "error";
37
+ "sonarjs/aws-s3-bucket-insecure-http": "error";
38
+ "sonarjs/aws-s3-bucket-public-access": "error";
39
+ "sonarjs/aws-s3-bucket-versioning": "error";
40
+ "sonarjs/aws-sagemaker-unencrypted-notebook": "error";
41
+ "sonarjs/aws-sns-unencrypted-topics": "error";
42
+ "sonarjs/aws-sqs-unencrypted-queue": "error";
43
+ "sonarjs/block-scoped-var": "error";
44
+ "sonarjs/bool-param-default": "error";
45
+ "sonarjs/call-argument-line": "error";
46
+ "sonarjs/chai-determinate-assertion": "error";
47
+ "sonarjs/class-name": "error";
48
+ "sonarjs/code-eval": "error";
49
+ /** Matches Biome's noExcessiveCognitiveComplexity limit */
50
+ "sonarjs/cognitive-complexity": ["error", number];
51
+ "sonarjs/comma-or-logical-or-case": "error";
52
+ "sonarjs/comment-regex": "error";
53
+ "sonarjs/composite-assertions": "error";
54
+ "sonarjs/constructor-for-side-effects": "error";
55
+ "sonarjs/content-length": "error";
56
+ "sonarjs/content-security-policy": "error";
57
+ "sonarjs/cookie-no-httponly": "error";
58
+ "sonarjs/cors": "error";
59
+ "sonarjs/csrf": "error";
60
+ /** Duplicate of the core complexity rule */
61
+ "sonarjs/cyclomatic-complexity": "off";
62
+ "sonarjs/declarations-in-global-scope": "error";
63
+ "sonarjs/destructuring-assignment-syntax": "error";
64
+ "sonarjs/disabled-timeout": "error";
65
+ "sonarjs/dynamically-constructed-templates": "error";
66
+ /** Mirrors the ESLint preset */
67
+ "sonarjs/elseif-without-else": "off";
68
+ "sonarjs/encryption-secure-mode": "error";
69
+ "sonarjs/explicit-test-skip": "error";
70
+ "sonarjs/expression-complexity": "error";
71
+ /** Requires a headerFormat option; errors on every file without one */
72
+ "sonarjs/file-header": "off";
73
+ /**
74
+ * Fires on any file whose name differs from an exported class, which is
75
+ * noise for config and module files that export objects, not classes
76
+ */
77
+ "sonarjs/file-name-differ-from-class": "off";
78
+ "sonarjs/file-permissions": "error";
79
+ "sonarjs/file-uploads": "error";
80
+ "sonarjs/fixme-tag": "error";
81
+ "sonarjs/for-in": "error";
82
+ "sonarjs/for-loop-increment-sign": "error";
83
+ "sonarjs/function-inside-loop": "error";
84
+ "sonarjs/function-name": "error";
85
+ "sonarjs/future-reserved-words": "error";
86
+ "sonarjs/generator-without-yield": "error";
87
+ "sonarjs/hardcoded-secret-signatures": "error";
88
+ "sonarjs/hashing": "error";
89
+ "sonarjs/hooks-before-test-cases": "error";
90
+ "sonarjs/inconsistent-function-call": "error";
91
+ "sonarjs/insecure-cookie": "error";
92
+ "sonarjs/insecure-jwt-token": "error";
93
+ "sonarjs/inverted-assertion-arguments": "error";
94
+ "sonarjs/label-position": "error";
95
+ "sonarjs/link-with-target-blank": "error";
96
+ /** The preset disables max-lines everywhere */
97
+ "sonarjs/max-lines": "off";
98
+ /** The preset disables max-lines-per-function everywhere */
99
+ "sonarjs/max-lines-per-function": "off";
100
+ "sonarjs/max-switch-cases": "error";
101
+ "sonarjs/max-union-size": "error";
102
+ "sonarjs/memoize-cache-key": "error";
103
+ "sonarjs/misplaced-loop-counter": "error";
104
+ /** Duplicate of max-depth, which is off */
105
+ "sonarjs/nested-control-flow": "off";
106
+ "sonarjs/no-all-duplicated-branches": "error";
107
+ "sonarjs/no-angular-bypass-sanitization": "error";
108
+ "sonarjs/no-built-in-override": "error";
109
+ "sonarjs/no-case-label-in-switch": "error";
110
+ "sonarjs/no-clear-text-protocols": "error";
111
+ "sonarjs/no-code-after-done": "error";
112
+ "sonarjs/no-collapsible-if": "error";
113
+ "sonarjs/no-commented-code": "error";
114
+ "sonarjs/no-dead-store": "error";
115
+ "sonarjs/no-debounce-throttle-in-render": "error";
116
+ "sonarjs/no-debug-commands-in-ui-tests": "error";
117
+ "sonarjs/no-default-utility-imports": "error";
118
+ "sonarjs/no-delete-var": "error";
119
+ "sonarjs/no-duplicate-in-composite": "error";
120
+ "sonarjs/no-duplicate-parameterized-test-case": "error";
121
+ "sonarjs/no-duplicate-string": "error";
122
+ "sonarjs/no-duplicate-test-title": "error";
123
+ "sonarjs/no-duplicated-branches": "error";
124
+ "sonarjs/no-element-overwrite": "error";
125
+ "sonarjs/no-empty-collection": "error";
126
+ "sonarjs/no-empty-parameterized-test-dataset": "error";
127
+ "sonarjs/no-empty-test-file": "error";
128
+ "sonarjs/no-empty-test-title": "error";
129
+ "sonarjs/no-equals-in-for-termination": "error";
130
+ "sonarjs/no-exclusive-tests": "error";
131
+ "sonarjs/no-extra-arguments": "error";
132
+ "sonarjs/no-fallthrough": "error";
133
+ "sonarjs/no-fixed-wait-in-tests": "error";
134
+ "sonarjs/no-floating-point-equality": "error";
135
+ "sonarjs/no-forced-browser-interaction": "error";
136
+ "sonarjs/no-function-declaration-in-block": "error";
137
+ "sonarjs/no-global-this": "error";
138
+ "sonarjs/no-globals-shadowing": "error";
139
+ "sonarjs/no-gratuitous-expressions": "error";
140
+ "sonarjs/no-hardcoded-ip": "error";
141
+ "sonarjs/no-hardcoded-passwords": "error";
142
+ "sonarjs/no-hardcoded-secrets": "error";
143
+ "sonarjs/no-hook-setter-in-body": "error";
144
+ "sonarjs/no-identical-conditions": "error";
145
+ "sonarjs/no-identical-expressions": "error";
146
+ "sonarjs/no-identical-functions": "error";
147
+ "sonarjs/no-ignored-exceptions": "error";
148
+ /**
149
+ * The JS plugin bridge has no dependency-manifest resolution, so this
150
+ * flags builtin (bun:test) and workspace imports as missing dependencies
151
+ */
152
+ "sonarjs/no-implicit-dependencies": "off";
153
+ "sonarjs/no-implicit-global": "error";
154
+ "sonarjs/no-incomplete-assertions": "error";
155
+ "sonarjs/no-internal-api-use": "error";
156
+ "sonarjs/no-interpolation-in-inline-snapshots": "error";
157
+ "sonarjs/no-invariant-returns": "error";
158
+ "sonarjs/no-inverted-boolean-check": "error";
159
+ "sonarjs/no-labels": "error";
160
+ "sonarjs/no-literal-call": "error";
161
+ "sonarjs/no-mime-sniff": "error";
162
+ "sonarjs/no-mixed-completion-style": "error";
163
+ "sonarjs/no-mutate-reactive-state-in-updated-hook": "error";
164
+ "sonarjs/no-nested-assignment": "error";
165
+ "sonarjs/no-nested-conditional": "error";
166
+ /** sonarjs 4.2.1 raised the default threshold to 5; keep the stricter 4 */
167
+ "sonarjs/no-nested-functions": ["error", {
168
+ threshold: number;
169
+ }];
170
+ "sonarjs/no-nested-incdec": "error";
171
+ "sonarjs/no-nested-switch": "error";
172
+ "sonarjs/no-nested-template-literals": "error";
173
+ "sonarjs/no-networkidle-wait": "error";
174
+ "sonarjs/no-os-command-from-path": "error";
175
+ "sonarjs/no-parameter-reassignment": "error";
176
+ "sonarjs/no-primitive-wrappers": "error";
177
+ "sonarjs/no-redundant-assignments": "error";
178
+ "sonarjs/no-redundant-boolean": "error";
179
+ "sonarjs/no-redundant-jump": "error";
180
+ /** The jsPlugins bridge provides no globals, so every identifier is flagged */
181
+ "sonarjs/no-reference-error": "off";
182
+ "sonarjs/no-referrer-policy": "error";
183
+ "sonarjs/no-same-argument-assert": "error";
184
+ "sonarjs/no-same-line-conditional": "error";
185
+ "sonarjs/no-session-cookies-on-static-assets": "error";
186
+ "sonarjs/no-skipped-tests": "error";
187
+ "sonarjs/no-sonar-comments": "error";
188
+ "sonarjs/no-table-as-layout": "error";
189
+ "sonarjs/no-trivial-assertions": "error";
190
+ "sonarjs/no-undefined-assignment": "error";
191
+ "sonarjs/no-unenclosed-multiline-block": "error";
192
+ "sonarjs/no-uniq-key": "error";
193
+ "sonarjs/no-unthrown-error": "error";
194
+ "sonarjs/no-unused-collection": "error";
195
+ "sonarjs/no-unused-function-argument": "error";
196
+ "sonarjs/no-unused-vars": "error";
197
+ "sonarjs/no-use-of-empty-return-value": "error";
198
+ "sonarjs/no-useless-catch": "error";
199
+ "sonarjs/no-useless-increment": "error";
200
+ "sonarjs/no-useless-react-setstate": "error";
201
+ "sonarjs/no-variable-usage-before-declaration": "error";
202
+ "sonarjs/no-vue-class-component": "error";
203
+ "sonarjs/no-vue-mixins": "error";
204
+ "sonarjs/no-weak-cipher": "error";
205
+ "sonarjs/no-weak-keys": "error";
206
+ "sonarjs/no-wildcard-import": "error";
207
+ "sonarjs/non-existent-operator": "error";
208
+ "sonarjs/object-alt-content": "error";
209
+ "sonarjs/parameterized-tests": "error";
210
+ "sonarjs/prefer-cypress-should": "error";
211
+ "sonarjs/prefer-default-last": "error";
212
+ "sonarjs/prefer-native-axios-alternative": "error";
213
+ "sonarjs/prefer-native-jquery-alternative": "error";
214
+ "sonarjs/prefer-native-lodash-alternative": "error";
215
+ "sonarjs/prefer-object-literal": "error";
216
+ "sonarjs/prefer-promise-shorthand": "error";
217
+ "sonarjs/prefer-single-boolean-return": "error";
218
+ "sonarjs/prefer-specific-assertions": "error";
219
+ "sonarjs/prefer-type-guard": "error";
220
+ "sonarjs/prefer-while": "error";
221
+ "sonarjs/production-debug": "error";
222
+ "sonarjs/pseudo-random": "error";
223
+ "sonarjs/public-static-readonly": "error";
224
+ "sonarjs/publicly-writable-directories": "error";
225
+ "sonarjs/redundant-type-aliases": "error";
226
+ "sonarjs/review-blockchain-mnemonic": "error";
227
+ "sonarjs/session-regeneration": "error";
228
+ /** Conflicts with sort-keys */
229
+ "sonarjs/shorthand-property-grouping": "off";
230
+ "sonarjs/stable-tests": "error";
231
+ "sonarjs/stateful-regex": "error";
232
+ "sonarjs/strict-transport-security": "error";
233
+ "sonarjs/super-linear-regex": "error";
234
+ "sonarjs/synchronous-suite-callback": "error";
235
+ "sonarjs/table-header": "error";
236
+ "sonarjs/table-header-reference": "error";
237
+ "sonarjs/test-check-exception": "error";
238
+ "sonarjs/testing-library-prefer-query-by-disappearance": "error";
239
+ "sonarjs/testing-library-query-assertion": "error";
240
+ "sonarjs/todo-tag": "error";
241
+ "sonarjs/too-many-break-or-continue-in-loop": "error";
242
+ "sonarjs/unverified-certificate": "error";
243
+ "sonarjs/unverified-hostname": "error";
244
+ "sonarjs/updated-const-var": "error";
245
+ "sonarjs/updated-loop-counter": "error";
246
+ "sonarjs/use-type-alias": "error";
247
+ "sonarjs/variable-name": "error";
248
+ "sonarjs/vitest-mock-at-module-scope": "error";
249
+ "sonarjs/weak-ssl": "error";
250
+ "sonarjs/x-powered-by": "error";
251
+ "sonarjs/xml-parser-xxe": "error";
252
+ };
253
+ };
254
+ export default sonarJSConfig;
@@ -0,0 +1,20 @@
1
+ export declare const tailwindConfig: {
2
+ rules: {
3
+ /**
4
+ * Correctness: catch real bugs
5
+ */
6
+ "tailwindcss/no-conflicting-classes": "error";
7
+ "tailwindcss/no-deprecated-classes": "error";
8
+ "tailwindcss/no-duplicate-classes": "warn";
9
+ "tailwindcss/no-unknown-classes": "error";
10
+ /** Modernization: keep classes in current canonical form */
11
+ "tailwindcss/enforce-canonical": "warn";
12
+ "tailwindcss/no-unnecessary-arbitrary-value": "warn";
13
+ /** Style and consistency */
14
+ "tailwindcss/enforce-sort-order": "warn";
15
+ "tailwindcss/consistent-variant-order": "warn";
16
+ "tailwindcss/enforce-consistent-important-position": "warn";
17
+ "tailwindcss/no-unnecessary-whitespace": "warn";
18
+ };
19
+ };
20
+ export default tailwindConfig;
@@ -1,4 +1,4 @@
1
- // tools/oxlint/config/vendors/tailwind-worker.ts
1
+ // tools/oxlint/config/vendors/shadcn-tailwind-worker.ts
2
2
  import { workerData } from "node:worker_threads";
3
3
  import * as fs from "node:fs";
4
4
  import { createRequire } from "node:module";
@@ -6148,9 +6148,9 @@ var TIMEOUT = 5000;
6148
6148
  var RETRY_AFTER = 5000;
6149
6149
  var REFRESH_AFTER = 1000;
6150
6150
  function workerFile() {
6151
- const candidates = [new URL("./tailwind-worker.js", import.meta.url)];
6151
+ const candidates = [new URL("./shadcn-tailwind-worker.js", import.meta.url)];
6152
6152
  if (/\/src\/tailwind\/[^/]+$/.test(import.meta.url)) {
6153
- candidates.push(new URL("../../dist/tailwind-worker.js", import.meta.url));
6153
+ candidates.push(new URL("../../dist/shadcn-tailwind-worker.js", import.meta.url));
6154
6154
  }
6155
6155
  for (const url of candidates) {
6156
6156
  try {
@@ -0,0 +1,21 @@
1
+ /**
2
+ * File-based routing conventions shared by the oxlint and ESLint presets.
3
+ * Routers encode the URL in route and page filenames, which the kebab-case
4
+ * filename rules (github/filenames-match-regex, unicorn/filename-case) would
5
+ * otherwise reject.
6
+ */
7
+ /**
8
+ * Route directories of file-based routers: TanStack Router (`__root.tsx`,
9
+ * `$.tsx`, `posts.$postId.tsx`, `{-$slug}.tsx`), React Router and Remix
10
+ * (`_index.tsx`, `posts.$postId.tsx`) and SvelteKit (`+page.ts`)
11
+ */
12
+ export declare const ROUTE_FILE_GLOB = "**/routes/**/*.{js,jsx,ts,tsx}";
13
+ /**
14
+ * Filename grammar for page routes (Astro, Next.js pages router): an optional
15
+ * leading underscore for special and private pages (`_app`, `_document`,
16
+ * `_error`), then one or more kebab-case tokens or bracketed kebab-case route
17
+ * params (`[slug]`, `[...slug]`, `[[...slug]]`, `[lang]-[version]`), followed
18
+ * by at most one extra dotted segment (`rss.xml`, `[slug].json`). Params stay
19
+ * kebab-case because unicorn/filename-case checks the same names.
20
+ */
21
+ export declare const PAGE_ROUTE_FILENAME_PATTERN = "^_?(?:\\[\\[\\.\\.\\.[a-z0-9-]+\\]\\]|\\[(?:\\.\\.\\.)?[a-z0-9-]+\\]|[a-z0-9-]+)+(?:\\.[a-z0-9-]+)?$";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nekoyasuii/config",
3
- "version": "0.1.9",
3
+ "version": "0.2.1",
4
4
  "description": "Shared TypeScript, Oxlint, and Oxfmt configs for my projects.",
5
5
  "files": [
6
6
  "dist",
@@ -78,15 +78,21 @@
78
78
  "check": "bun run lint && bun run fmt:check && bun run typecheck && bun run test"
79
79
  },
80
80
  "devDependencies": {
81
- "@oxlint/plugins": "^1.85.0",
82
- "@types/bun": "^1.4.2"
81
+ "@oxlint/plugins": "^1.86.0",
82
+ "@types/bun": "^1.4.2",
83
+ "eslint-plugin-sonarjs": "^4.2.2",
84
+ "oxfmt": "^0.71.0",
85
+ "oxlint": "^1.86.0",
86
+ "oxlint-plugin-react-doctor": "^0.9.14",
87
+ "oxlint-tailwindcss": "^1.14.0",
88
+ "typescript": "7"
83
89
  },
84
90
  "peerDependencies": {
85
- "eslint-plugin-sonarjs": ">= 4.2.0",
86
- "oxfmt": ">= 0.65.0",
87
- "oxlint": ">= 1.80.0",
88
- "oxlint-plugin-react-doctor": ">= 0.9.12",
89
- "oxlint-tailwindcss": ">= 1.10.0",
91
+ "eslint-plugin-sonarjs": ">= 4.2.2",
92
+ "oxfmt": ">= 0.71.0",
93
+ "oxlint": ">= 1.86.0",
94
+ "oxlint-plugin-react-doctor": ">= 0.9.14",
95
+ "oxlint-tailwindcss": ">= 1.14.0",
90
96
  "typescript": ">= 7"
91
97
  },
92
98
  "peerDependenciesMeta": {