eslint-plugin-th-rules 2.7.0 → 2.8.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 (74) hide show
  1. package/README.md +171 -11
  2. package/dist/configs/bundles/recommended-react.d.ts +199 -0
  3. package/dist/configs/bundles/recommended-react.js +11 -0
  4. package/dist/configs/bundles/recommended-typescript.d.ts +190 -0
  5. package/dist/configs/bundles/recommended-typescript.js +6 -0
  6. package/dist/configs/bundles/recommended.d.ts +190 -0
  7. package/dist/configs/bundles/recommended.js +8 -0
  8. package/dist/configs/core/base.d.ts +170 -0
  9. package/dist/configs/core/base.js +23 -0
  10. package/dist/configs/core/react.d.ts +6 -0
  11. package/dist/configs/core/react.js +8 -0
  12. package/dist/configs/core/typescript.d.ts +2 -0
  13. package/dist/configs/core/typescript.js +19 -0
  14. package/dist/configs/externals/base.d.ts +15 -0
  15. package/dist/configs/externals/base.js +16 -0
  16. package/dist/configs/externals/opinionated.d.ts +10 -0
  17. package/dist/configs/externals/opinionated.js +12 -0
  18. package/dist/index.d.ts +1170 -0
  19. package/dist/index.js +21 -0
  20. package/dist/plugin.d.ts +5 -0
  21. package/dist/plugin.js +14 -0
  22. package/dist/rules/no-boolean-coercion.d.ts +5 -0
  23. package/dist/rules/no-boolean-coercion.js +98 -0
  24. package/dist/rules/no-comments.d.ts +11 -0
  25. package/dist/rules/no-comments.js +83 -0
  26. package/dist/rules/no-default-export.d.ts +5 -0
  27. package/dist/rules/no-default-export.js +61 -0
  28. package/dist/rules/no-destructuring.d.ts +8 -0
  29. package/dist/rules/no-destructuring.js +121 -0
  30. package/dist/rules/prefer-is-empty.d.ts +5 -0
  31. package/dist/rules/prefer-is-empty.js +101 -0
  32. package/dist/rules/schemas-in-schemas-file.d.ts +9 -0
  33. package/dist/rules/schemas-in-schemas-file.js +141 -0
  34. package/dist/rules/top-level-functions.d.ts +5 -0
  35. package/dist/rules/top-level-functions.js +153 -0
  36. package/dist/rules/types-in-dts.d.ts +8 -0
  37. package/dist/rules/types-in-dts.js +76 -0
  38. package/package.json +25 -14
  39. package/.github/dependabot.yml +0 -15
  40. package/.github/workflows/codecov.yml +0 -26
  41. package/.github/workflows/codeql.yml +0 -82
  42. package/.github/workflows/dependency-review.yml +0 -20
  43. package/.github/workflows/main.yml +0 -43
  44. package/.github/workflows/scorecard.yml +0 -72
  45. package/.github/workflows/snyk-security.yml +0 -67
  46. package/.releaserc +0 -13
  47. package/.vscode/settings.json +0 -8
  48. package/.yarn/releases/yarn-4.12.0.cjs +0 -942
  49. package/.yarnrc.yml +0 -3
  50. package/CHANGELOG.md +0 -621
  51. package/SECURITY.md +0 -48
  52. package/docs/rules/no-boolean-coercion.md +0 -9
  53. package/docs/rules/no-comments.md +0 -50
  54. package/docs/rules/no-default-export.md +0 -26
  55. package/docs/rules/no-destructuring.md +0 -40
  56. package/docs/rules/prefer-is-empty.md +0 -9
  57. package/docs/rules/schemas-in-schemas-file.md +0 -170
  58. package/docs/rules/top-level-functions.md +0 -48
  59. package/docs/rules/types-in-dts.md +0 -112
  60. package/renovate.json +0 -3
  61. package/scripts/verify.mjs +0 -16
  62. package/src/index.js +0 -144
  63. package/src/rules/no-boolean-coercion.js +0 -125
  64. package/src/rules/no-comments.js +0 -94
  65. package/src/rules/no-default-export.js +0 -64
  66. package/src/rules/no-destructuring.js +0 -114
  67. package/src/rules/prefer-is-empty.js +0 -104
  68. package/src/rules/schemas-in-schemas-file.js +0 -191
  69. package/src/rules/top-level-functions.js +0 -200
  70. package/src/rules/types-in-dts.js +0 -94
  71. package/tests/no-boolean-coercion.test.ts +0 -83
  72. package/tests/prefer-is-empty.test.ts +0 -148
  73. package/tsconfig.json +0 -22
  74. package/xo.config.ts +0 -2
@@ -0,0 +1,190 @@
1
+ export declare const recommended: ({
2
+ name: string;
3
+ plugins: {
4
+ 'th-rules': {
5
+ rules: any;
6
+ };
7
+ };
8
+ languageOptions: {
9
+ ecmaVersion: string;
10
+ sourceType: string;
11
+ globals: {
12
+ afterAll: false;
13
+ afterEach: false;
14
+ beforeAll: false;
15
+ beforeEach: false;
16
+ describe: false;
17
+ expect: false;
18
+ fit: false;
19
+ it: false;
20
+ jest: false;
21
+ test: false;
22
+ xdescribe: false;
23
+ xit: false;
24
+ xtest: false;
25
+ AggregateError: false;
26
+ Array: false;
27
+ ArrayBuffer: false;
28
+ Atomics: false;
29
+ BigInt: false;
30
+ BigInt64Array: false;
31
+ BigUint64Array: false;
32
+ Boolean: false;
33
+ DataView: false;
34
+ Date: false;
35
+ decodeURI: false;
36
+ decodeURIComponent: false;
37
+ encodeURI: false;
38
+ encodeURIComponent: false;
39
+ Error: false;
40
+ escape: false;
41
+ eval: false;
42
+ EvalError: false;
43
+ FinalizationRegistry: false;
44
+ Float32Array: false;
45
+ Float64Array: false;
46
+ Function: false;
47
+ globalThis: false;
48
+ Infinity: false;
49
+ Int16Array: false;
50
+ Int32Array: false;
51
+ Int8Array: false;
52
+ Intl: false;
53
+ isFinite: false;
54
+ isNaN: false;
55
+ JSON: false;
56
+ Map: false;
57
+ Math: false;
58
+ NaN: false;
59
+ Number: false;
60
+ Object: false;
61
+ parseFloat: false;
62
+ parseInt: false;
63
+ Promise: false;
64
+ Proxy: false;
65
+ RangeError: false;
66
+ ReferenceError: false;
67
+ Reflect: false;
68
+ RegExp: false;
69
+ Set: false;
70
+ SharedArrayBuffer: false;
71
+ String: false;
72
+ Symbol: false;
73
+ SyntaxError: false;
74
+ TypeError: false;
75
+ Uint16Array: false;
76
+ Uint32Array: false;
77
+ Uint8Array: false;
78
+ Uint8ClampedArray: false;
79
+ undefined: false;
80
+ unescape: false;
81
+ URIError: false;
82
+ WeakMap: false;
83
+ WeakRef: false;
84
+ WeakSet: false;
85
+ __dirname: false;
86
+ __filename: false;
87
+ AbortController: false;
88
+ AbortSignal: false;
89
+ AsyncDisposableStack: false;
90
+ atob: false;
91
+ Blob: false;
92
+ BroadcastChannel: false;
93
+ btoa: false;
94
+ Buffer: false;
95
+ ByteLengthQueuingStrategy: false;
96
+ clearImmediate: false;
97
+ clearInterval: false;
98
+ clearTimeout: false;
99
+ CloseEvent: false;
100
+ CompressionStream: false;
101
+ console: false;
102
+ CountQueuingStrategy: false;
103
+ crypto: false;
104
+ Crypto: false;
105
+ CryptoKey: false;
106
+ CustomEvent: false;
107
+ DecompressionStream: false;
108
+ DisposableStack: false;
109
+ DOMException: false;
110
+ ErrorEvent: false;
111
+ Event: false;
112
+ EventTarget: false;
113
+ exports: true;
114
+ fetch: false;
115
+ File: false;
116
+ FormData: false;
117
+ global: false;
118
+ Headers: false;
119
+ localStorage: false;
120
+ MessageChannel: false;
121
+ MessageEvent: false;
122
+ MessagePort: false;
123
+ module: false;
124
+ navigator: false;
125
+ Navigator: false;
126
+ performance: false;
127
+ Performance: false;
128
+ PerformanceEntry: false;
129
+ PerformanceMark: false;
130
+ PerformanceMeasure: false;
131
+ PerformanceObserver: false;
132
+ PerformanceObserverEntryList: false;
133
+ PerformanceResourceTiming: false;
134
+ process: false;
135
+ queueMicrotask: false;
136
+ ReadableByteStreamController: false;
137
+ ReadableStream: false;
138
+ ReadableStreamBYOBReader: false;
139
+ ReadableStreamBYOBRequest: false;
140
+ ReadableStreamDefaultController: false;
141
+ ReadableStreamDefaultReader: false;
142
+ Request: false;
143
+ require: false;
144
+ Response: false;
145
+ sessionStorage: false;
146
+ setImmediate: false;
147
+ setInterval: false;
148
+ setTimeout: false;
149
+ Storage: false;
150
+ structuredClone: false;
151
+ SubtleCrypto: false;
152
+ SuppressedError: false;
153
+ TextDecoder: false;
154
+ TextDecoderStream: false;
155
+ TextEncoder: false;
156
+ TextEncoderStream: false;
157
+ TransformStream: false;
158
+ TransformStreamDefaultController: false;
159
+ URL: false;
160
+ URLPattern: false;
161
+ URLSearchParams: false;
162
+ WebAssembly: false;
163
+ WebSocket: false;
164
+ WritableStream: false;
165
+ WritableStreamDefaultController: false;
166
+ WritableStreamDefaultWriter: false;
167
+ };
168
+ };
169
+ rules: Record<string, string>;
170
+ } | {
171
+ name: string;
172
+ plugins: {
173
+ lodash: any;
174
+ n: import("@eslint/core", { with: { "resolution-mode": "require" } }).Plugin & {
175
+ configs: import("eslint-plugin-n").Configs;
176
+ };
177
+ sonarjs: typeof import("eslint-plugin-sonarjs");
178
+ security: typeof import("eslint-plugin-security");
179
+ };
180
+ rules: {};
181
+ } | {
182
+ name: string;
183
+ rules: {
184
+ 'lodash/import-scope': string[];
185
+ 'lodash/chaining': string[];
186
+ camelcase: string;
187
+ 'security/detect-unsafe-regex': string;
188
+ 'sonarjs/no-clear-text-protocols': string;
189
+ };
190
+ })[];
@@ -0,0 +1,8 @@
1
+ import { coreBase } from '../core/base.js';
2
+ import { externalsBase } from '../externals/base.js';
3
+ import { externalsOpinionated } from '../externals/opinionated.js';
4
+ export const recommended = [
5
+ ...coreBase,
6
+ ...externalsBase,
7
+ ...externalsOpinionated,
8
+ ];
@@ -0,0 +1,170 @@
1
+ export declare const coreBase: {
2
+ name: string;
3
+ plugins: {
4
+ 'th-rules': {
5
+ rules: any;
6
+ };
7
+ };
8
+ languageOptions: {
9
+ ecmaVersion: string;
10
+ sourceType: string;
11
+ globals: {
12
+ afterAll: false;
13
+ afterEach: false;
14
+ beforeAll: false;
15
+ beforeEach: false;
16
+ describe: false;
17
+ expect: false;
18
+ fit: false;
19
+ it: false;
20
+ jest: false;
21
+ test: false;
22
+ xdescribe: false;
23
+ xit: false;
24
+ xtest: false;
25
+ AggregateError: false;
26
+ Array: false;
27
+ ArrayBuffer: false;
28
+ Atomics: false;
29
+ BigInt: false;
30
+ BigInt64Array: false;
31
+ BigUint64Array: false;
32
+ Boolean: false;
33
+ DataView: false;
34
+ Date: false;
35
+ decodeURI: false;
36
+ decodeURIComponent: false;
37
+ encodeURI: false;
38
+ encodeURIComponent: false;
39
+ Error: false;
40
+ escape: false;
41
+ eval: false;
42
+ EvalError: false;
43
+ FinalizationRegistry: false;
44
+ Float32Array: false;
45
+ Float64Array: false;
46
+ Function: false;
47
+ globalThis: false;
48
+ Infinity: false;
49
+ Int16Array: false;
50
+ Int32Array: false;
51
+ Int8Array: false;
52
+ Intl: false;
53
+ isFinite: false;
54
+ isNaN: false;
55
+ JSON: false;
56
+ Map: false;
57
+ Math: false;
58
+ NaN: false;
59
+ Number: false;
60
+ Object: false;
61
+ parseFloat: false;
62
+ parseInt: false;
63
+ Promise: false;
64
+ Proxy: false;
65
+ RangeError: false;
66
+ ReferenceError: false;
67
+ Reflect: false;
68
+ RegExp: false;
69
+ Set: false;
70
+ SharedArrayBuffer: false;
71
+ String: false;
72
+ Symbol: false;
73
+ SyntaxError: false;
74
+ TypeError: false;
75
+ Uint16Array: false;
76
+ Uint32Array: false;
77
+ Uint8Array: false;
78
+ Uint8ClampedArray: false;
79
+ undefined: false;
80
+ unescape: false;
81
+ URIError: false;
82
+ WeakMap: false;
83
+ WeakRef: false;
84
+ WeakSet: false;
85
+ __dirname: false;
86
+ __filename: false;
87
+ AbortController: false;
88
+ AbortSignal: false;
89
+ AsyncDisposableStack: false;
90
+ atob: false;
91
+ Blob: false;
92
+ BroadcastChannel: false;
93
+ btoa: false;
94
+ Buffer: false;
95
+ ByteLengthQueuingStrategy: false;
96
+ clearImmediate: false;
97
+ clearInterval: false;
98
+ clearTimeout: false;
99
+ CloseEvent: false;
100
+ CompressionStream: false;
101
+ console: false;
102
+ CountQueuingStrategy: false;
103
+ crypto: false;
104
+ Crypto: false;
105
+ CryptoKey: false;
106
+ CustomEvent: false;
107
+ DecompressionStream: false;
108
+ DisposableStack: false;
109
+ DOMException: false;
110
+ ErrorEvent: false;
111
+ Event: false;
112
+ EventTarget: false;
113
+ exports: true;
114
+ fetch: false;
115
+ File: false;
116
+ FormData: false;
117
+ global: false;
118
+ Headers: false;
119
+ localStorage: false;
120
+ MessageChannel: false;
121
+ MessageEvent: false;
122
+ MessagePort: false;
123
+ module: false;
124
+ navigator: false;
125
+ Navigator: false;
126
+ performance: false;
127
+ Performance: false;
128
+ PerformanceEntry: false;
129
+ PerformanceMark: false;
130
+ PerformanceMeasure: false;
131
+ PerformanceObserver: false;
132
+ PerformanceObserverEntryList: false;
133
+ PerformanceResourceTiming: false;
134
+ process: false;
135
+ queueMicrotask: false;
136
+ ReadableByteStreamController: false;
137
+ ReadableStream: false;
138
+ ReadableStreamBYOBReader: false;
139
+ ReadableStreamBYOBRequest: false;
140
+ ReadableStreamDefaultController: false;
141
+ ReadableStreamDefaultReader: false;
142
+ Request: false;
143
+ require: false;
144
+ Response: false;
145
+ sessionStorage: false;
146
+ setImmediate: false;
147
+ setInterval: false;
148
+ setTimeout: false;
149
+ Storage: false;
150
+ structuredClone: false;
151
+ SubtleCrypto: false;
152
+ SuppressedError: false;
153
+ TextDecoder: false;
154
+ TextDecoderStream: false;
155
+ TextEncoder: false;
156
+ TextEncoderStream: false;
157
+ TransformStream: false;
158
+ TransformStreamDefaultController: false;
159
+ URL: false;
160
+ URLPattern: false;
161
+ URLSearchParams: false;
162
+ WebAssembly: false;
163
+ WebSocket: false;
164
+ WritableStream: false;
165
+ WritableStreamDefaultController: false;
166
+ WritableStreamDefaultWriter: false;
167
+ };
168
+ };
169
+ rules: Record<string, string>;
170
+ }[];
@@ -0,0 +1,23 @@
1
+ import globals from 'globals';
2
+ import plugin from '../../plugin.js';
3
+ export const coreBase = [
4
+ {
5
+ name: 'th-rules/core-base',
6
+ plugins: {
7
+ 'th-rules': plugin,
8
+ },
9
+ languageOptions: {
10
+ ecmaVersion: 'latest',
11
+ sourceType: 'module',
12
+ globals: {
13
+ ...globals.node,
14
+ ...globals.es2024,
15
+ ...globals.jest,
16
+ },
17
+ },
18
+ rules: Object.keys(plugin.rules).reduce((acc, ruleName) => {
19
+ acc[`th-rules/${ruleName}`] = 'error';
20
+ return acc;
21
+ }, {}),
22
+ },
23
+ ];
@@ -0,0 +1,6 @@
1
+ export declare const coreReact: {
2
+ name: string;
3
+ rules: {
4
+ 'react-hooks/set-state-in-effect': string;
5
+ };
6
+ }[];
@@ -0,0 +1,8 @@
1
+ export const coreReact = [
2
+ {
3
+ name: 'th-rules/core-react-overrides',
4
+ rules: {
5
+ 'react-hooks/set-state-in-effect': 'off',
6
+ },
7
+ },
8
+ ];
@@ -0,0 +1,2 @@
1
+ import { type ConfigWithExtends } from 'typescript-eslint';
2
+ export declare const coreTypescript: ConfigWithExtends[];
@@ -0,0 +1,19 @@
1
+ import { configs as ts } from 'typescript-eslint';
2
+ export const coreTypescript = [
3
+ ...ts.strictTypeChecked,
4
+ ...ts.stylisticTypeChecked,
5
+ {
6
+ name: 'th-rules/core-typescript-overrides',
7
+ rules: {
8
+ '@typescript-eslint/consistent-type-definitions': 'off',
9
+ '@typescript-eslint/no-extraneous-class': 'off',
10
+ '@typescript-eslint/no-duplicate-type-constituents': 'off',
11
+ '@typescript-eslint/no-non-null-assertion': 'off',
12
+ '@typescript-eslint/require-await': 'off',
13
+ '@typescript-eslint/no-unsafe-member-access': 'off',
14
+ '@typescript-eslint/no-unsafe-call': 'off',
15
+ '@typescript-eslint/no-unsafe-return': 'off',
16
+ '@typescript-eslint/no-unsafe-argument': 'off',
17
+ },
18
+ },
19
+ ];
@@ -0,0 +1,15 @@
1
+ import n from 'eslint-plugin-n';
2
+ import sonarjs from 'eslint-plugin-sonarjs';
3
+ import security from 'eslint-plugin-security';
4
+ export declare const externalsBase: {
5
+ name: string;
6
+ plugins: {
7
+ lodash: any;
8
+ n: import("@eslint/core", { with: { "resolution-mode": "require" } }).Plugin & {
9
+ configs: n.Configs;
10
+ };
11
+ sonarjs: typeof sonarjs;
12
+ security: typeof security;
13
+ };
14
+ rules: {};
15
+ }[];
@@ -0,0 +1,16 @@
1
+ import lodash from 'eslint-plugin-lodash';
2
+ import n from 'eslint-plugin-n';
3
+ import sonarjs from 'eslint-plugin-sonarjs';
4
+ import security from 'eslint-plugin-security';
5
+ export const externalsBase = [
6
+ {
7
+ name: 'th-rules/externals-base',
8
+ plugins: {
9
+ lodash,
10
+ n,
11
+ sonarjs,
12
+ security,
13
+ },
14
+ rules: {},
15
+ },
16
+ ];
@@ -0,0 +1,10 @@
1
+ export declare const externalsOpinionated: {
2
+ name: string;
3
+ rules: {
4
+ 'lodash/import-scope': string[];
5
+ 'lodash/chaining': string[];
6
+ camelcase: string;
7
+ 'security/detect-unsafe-regex': string;
8
+ 'sonarjs/no-clear-text-protocols': string;
9
+ };
10
+ }[];
@@ -0,0 +1,12 @@
1
+ export const externalsOpinionated = [
2
+ {
3
+ name: 'th-rules/externals-opinionated',
4
+ rules: {
5
+ 'lodash/import-scope': ['error', 'full'],
6
+ 'lodash/chaining': ['error', 'implicit'],
7
+ camelcase: 'warn',
8
+ 'security/detect-unsafe-regex': 'off',
9
+ 'sonarjs/no-clear-text-protocols': 'off',
10
+ },
11
+ },
12
+ ];