eslint-plugin-effector 0.15.0 → 0.17.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 (53) hide show
  1. package/README.md +24 -37
  2. package/dist/index.cjs +1259 -0
  3. package/dist/index.d.cts +177 -0
  4. package/dist/index.d.mts +178 -0
  5. package/dist/index.mjs +1233 -0
  6. package/package.json +71 -17
  7. package/.nvmrc +0 -1
  8. package/config/future.js +0 -7
  9. package/config/patronum.js +0 -5
  10. package/config/react.js +0 -7
  11. package/config/recommended.js +0 -15
  12. package/config/scope.js +0 -6
  13. package/index.js +0 -31
  14. package/rules/enforce-effect-naming-convention/enforce-effect-naming-convention.js +0 -143
  15. package/rules/enforce-gate-naming-convention/enforce-gate-naming-convention.js +0 -122
  16. package/rules/enforce-store-naming-convention/enforce-store-naming-convention.js +0 -205
  17. package/rules/keep-options-order/config.js +0 -3
  18. package/rules/keep-options-order/keep-options-order.js +0 -107
  19. package/rules/mandatory-scope-binding/mandatory-scope-binding.js +0 -81
  20. package/rules/no-ambiguity-target/no-ambiguity-target.js +0 -74
  21. package/rules/no-duplicate-clock-or-source-array-values/no-duplicate-clock-or-source-array-values.js +0 -120
  22. package/rules/no-duplicate-on/no-duplicate-on.js +0 -137
  23. package/rules/no-forward/no-forward.js +0 -73
  24. package/rules/no-getState/no-getState.js +0 -50
  25. package/rules/no-guard/no-guard.js +0 -78
  26. package/rules/no-patronum-debug/no-patronum-debug.js +0 -133
  27. package/rules/no-unnecessary-combination/no-unnecessary-combination.js +0 -88
  28. package/rules/no-unnecessary-duplication/no-unnecessary-duplication.js +0 -115
  29. package/rules/no-useless-methods/no-useless-methods.js +0 -93
  30. package/rules/no-watch/no-watch.js +0 -61
  31. package/rules/prefer-sample-over-forward-with-mapping/prefer-sample-over-forward-with-mapping.js +0 -111
  32. package/rules/prefer-useUnit/prefer-useUnit.js +0 -56
  33. package/rules/require-pickup-in-persist/require-pickup-in-persist.js +0 -47
  34. package/rules/strict-effect-handlers/strict-effect-handlers.js +0 -76
  35. package/utils/are-nodes-same-in-text.js +0 -22
  36. package/utils/builders.js +0 -19
  37. package/utils/create-link-to-rule.js +0 -5
  38. package/utils/extract-config.js +0 -26
  39. package/utils/extract-imported-from.js +0 -18
  40. package/utils/get-corrected-store-name.js +0 -45
  41. package/utils/get-nested-object-name.js +0 -18
  42. package/utils/get-store-name-convention.js +0 -6
  43. package/utils/is.js +0 -39
  44. package/utils/method.js +0 -23
  45. package/utils/naming.js +0 -47
  46. package/utils/node-is-type.js +0 -5
  47. package/utils/node-type-is.js +0 -106
  48. package/utils/react.js +0 -214
  49. package/utils/read-example.js +0 -63
  50. package/utils/replace-by-sample.js +0 -98
  51. package/utils/traverse-nested-object-node.js +0 -9
  52. package/utils/traverse-parent-by-type.js +0 -15
  53. package/utils/validate-store-name-convention.js +0 -13
@@ -0,0 +1,177 @@
1
+ import { TSESLint } from "@typescript-eslint/utils";
2
+
3
+ //#region src/index.d.ts
4
+ declare const base: {
5
+ meta: {
6
+ name: string;
7
+ version: string;
8
+ namespace: string;
9
+ };
10
+ rules: {
11
+ "enforce-effect-naming-convention": TSESLint.RuleModule<"invalid" | "rename", [], unknown, TSESLint.RuleListener> & {
12
+ name: string;
13
+ };
14
+ "enforce-gate-naming-convention": TSESLint.RuleModule<"invalid" | "rename", [], unknown, TSESLint.RuleListener> & {
15
+ name: string;
16
+ };
17
+ "enforce-store-naming-convention": TSESLint.RuleModule<"invalid" | "rename", [{
18
+ mode: "prefix" | "postfix";
19
+ }], unknown, TSESLint.RuleListener> & {
20
+ name: string;
21
+ };
22
+ "keep-options-order": TSESLint.RuleModule<"invalidOrder" | "changeOrder", [], unknown, TSESLint.RuleListener> & {
23
+ name: string;
24
+ };
25
+ "mandatory-scope-binding": TSESLint.RuleModule<"useUnitNeeded", [], unknown, TSESLint.RuleListener> & {
26
+ name: string;
27
+ };
28
+ "no-ambiguity-target": TSESLint.RuleModule<"ambiguous", [], unknown, TSESLint.RuleListener> & {
29
+ name: string;
30
+ };
31
+ "no-domain-unit-creators": TSESLint.RuleModule<"avoid", [], unknown, TSESLint.RuleListener> & {
32
+ name: string;
33
+ };
34
+ "no-duplicate-clock-or-source-array-values": TSESLint.RuleModule<"duplicate" | "remove", [], unknown, TSESLint.RuleListener> & {
35
+ name: string;
36
+ };
37
+ "no-duplicate-on": TSESLint.RuleModule<"duplicate", [], unknown, TSESLint.RuleListener> & {
38
+ name: string;
39
+ };
40
+ "no-forward": TSESLint.RuleModule<"noForward" | "replaceWithSample", [], unknown, TSESLint.RuleListener> & {
41
+ name: string;
42
+ };
43
+ "no-getState": TSESLint.RuleModule<"named" | "anonymous", [], unknown, TSESLint.RuleListener> & {
44
+ name: string;
45
+ };
46
+ "no-guard": TSESLint.RuleModule<"replaceWithSample" | "noGuard", [], unknown, TSESLint.RuleListener> & {
47
+ name: string;
48
+ };
49
+ "no-patronum-debug": TSESLint.RuleModule<"remove" | "unexpected", [], unknown, TSESLint.RuleListener> & {
50
+ name: string;
51
+ };
52
+ "no-unnecessary-combination": TSESLint.RuleModule<"unnecessary", [], unknown, TSESLint.RuleListener> & {
53
+ name: string;
54
+ };
55
+ "no-unnecessary-duplication": TSESLint.RuleModule<"duplicate" | "removeClock" | "removeSource", [], unknown, TSESLint.RuleListener> & {
56
+ name: string;
57
+ };
58
+ "no-useless-methods": TSESLint.RuleModule<"uselessMethod", [], unknown, TSESLint.RuleListener> & {
59
+ name: string;
60
+ };
61
+ "no-watch": TSESLint.RuleModule<"restricted", [], unknown, TSESLint.RuleListener> & {
62
+ name: string;
63
+ };
64
+ "prefer-useUnit": TSESLint.RuleModule<"useUseUnit", [], unknown, TSESLint.RuleListener> & {
65
+ name: string;
66
+ };
67
+ "require-pickup-in-persist": TSESLint.RuleModule<"missing", [], unknown, TSESLint.RuleListener> & {
68
+ name: string;
69
+ };
70
+ "strict-effect-handlers": TSESLint.RuleModule<"mixed", [], unknown, TSESLint.RuleListener> & {
71
+ name: string;
72
+ };
73
+ };
74
+ };
75
+ declare const legacyConfigs: {
76
+ recommended: {
77
+ rules: {
78
+ "effector/enforce-effect-naming-convention": "error";
79
+ "effector/enforce-store-naming-convention": "error";
80
+ "effector/keep-options-order": "warn";
81
+ "effector/no-ambiguity-target": "warn";
82
+ "effector/no-duplicate-on": "error";
83
+ "effector/no-forward": "error";
84
+ "effector/no-getState": "error";
85
+ "effector/no-guard": "error";
86
+ "effector/no-unnecessary-combination": "warn";
87
+ "effector/no-unnecessary-duplication": "warn";
88
+ "effector/no-useless-methods": "error";
89
+ "effector/no-watch": "warn";
90
+ };
91
+ };
92
+ scope: {
93
+ rules: {
94
+ "effector/require-pickup-in-persist": "error";
95
+ "effector/strict-effect-handlers": "error";
96
+ };
97
+ };
98
+ react: {
99
+ rules: {
100
+ "effector/enforce-gate-naming-convention": "error";
101
+ "effector/mandatory-scope-binding": "error";
102
+ "effector/prefer-useUnit": "error";
103
+ };
104
+ };
105
+ future: {
106
+ rules: {
107
+ "effector/no-domain-unit-creators": "warn";
108
+ };
109
+ };
110
+ patronum: {
111
+ rules: {
112
+ "effector/no-patronum-debug": "warn";
113
+ };
114
+ };
115
+ };
116
+ declare const flatConfigs: {
117
+ recommended: {
118
+ plugins: {
119
+ effector: TSESLint.FlatConfig.Plugin;
120
+ };
121
+ rules: {
122
+ "effector/enforce-effect-naming-convention": "error";
123
+ "effector/enforce-store-naming-convention": "error";
124
+ "effector/keep-options-order": "warn";
125
+ "effector/no-ambiguity-target": "warn";
126
+ "effector/no-duplicate-on": "error";
127
+ "effector/no-forward": "error";
128
+ "effector/no-getState": "error";
129
+ "effector/no-guard": "error";
130
+ "effector/no-unnecessary-combination": "warn";
131
+ "effector/no-unnecessary-duplication": "warn";
132
+ "effector/no-useless-methods": "error";
133
+ "effector/no-watch": "warn";
134
+ };
135
+ };
136
+ scope: {
137
+ plugins: {
138
+ effector: TSESLint.FlatConfig.Plugin;
139
+ };
140
+ rules: {
141
+ "effector/require-pickup-in-persist": "error";
142
+ "effector/strict-effect-handlers": "error";
143
+ };
144
+ };
145
+ react: {
146
+ plugins: {
147
+ effector: TSESLint.FlatConfig.Plugin;
148
+ };
149
+ rules: {
150
+ "effector/enforce-gate-naming-convention": "error";
151
+ "effector/mandatory-scope-binding": "error";
152
+ "effector/prefer-useUnit": "error";
153
+ };
154
+ };
155
+ future: {
156
+ plugins: {
157
+ effector: TSESLint.FlatConfig.Plugin;
158
+ };
159
+ rules: {
160
+ "effector/no-domain-unit-creators": "warn";
161
+ };
162
+ };
163
+ patronum: {
164
+ plugins: {
165
+ effector: TSESLint.FlatConfig.Plugin;
166
+ };
167
+ rules: {
168
+ "effector/no-patronum-debug": "warn";
169
+ };
170
+ };
171
+ };
172
+ declare const plugin: {
173
+ flatConfigs: typeof flatConfigs;
174
+ /** @deprecated Migrate to modern ESLint v9 Flat Config format */
175
+ configs: typeof legacyConfigs;
176
+ } & typeof base;
177
+ export = plugin;
@@ -0,0 +1,178 @@
1
+ import { TSESLint } from "@typescript-eslint/utils";
2
+
3
+ //#region src/index.d.ts
4
+ declare const base: {
5
+ meta: {
6
+ name: string;
7
+ version: string;
8
+ namespace: string;
9
+ };
10
+ rules: {
11
+ "enforce-effect-naming-convention": TSESLint.RuleModule<"invalid" | "rename", [], unknown, TSESLint.RuleListener> & {
12
+ name: string;
13
+ };
14
+ "enforce-gate-naming-convention": TSESLint.RuleModule<"invalid" | "rename", [], unknown, TSESLint.RuleListener> & {
15
+ name: string;
16
+ };
17
+ "enforce-store-naming-convention": TSESLint.RuleModule<"invalid" | "rename", [{
18
+ mode: "prefix" | "postfix";
19
+ }], unknown, TSESLint.RuleListener> & {
20
+ name: string;
21
+ };
22
+ "keep-options-order": TSESLint.RuleModule<"invalidOrder" | "changeOrder", [], unknown, TSESLint.RuleListener> & {
23
+ name: string;
24
+ };
25
+ "mandatory-scope-binding": TSESLint.RuleModule<"useUnitNeeded", [], unknown, TSESLint.RuleListener> & {
26
+ name: string;
27
+ };
28
+ "no-ambiguity-target": TSESLint.RuleModule<"ambiguous", [], unknown, TSESLint.RuleListener> & {
29
+ name: string;
30
+ };
31
+ "no-domain-unit-creators": TSESLint.RuleModule<"avoid", [], unknown, TSESLint.RuleListener> & {
32
+ name: string;
33
+ };
34
+ "no-duplicate-clock-or-source-array-values": TSESLint.RuleModule<"duplicate" | "remove", [], unknown, TSESLint.RuleListener> & {
35
+ name: string;
36
+ };
37
+ "no-duplicate-on": TSESLint.RuleModule<"duplicate", [], unknown, TSESLint.RuleListener> & {
38
+ name: string;
39
+ };
40
+ "no-forward": TSESLint.RuleModule<"noForward" | "replaceWithSample", [], unknown, TSESLint.RuleListener> & {
41
+ name: string;
42
+ };
43
+ "no-getState": TSESLint.RuleModule<"named" | "anonymous", [], unknown, TSESLint.RuleListener> & {
44
+ name: string;
45
+ };
46
+ "no-guard": TSESLint.RuleModule<"replaceWithSample" | "noGuard", [], unknown, TSESLint.RuleListener> & {
47
+ name: string;
48
+ };
49
+ "no-patronum-debug": TSESLint.RuleModule<"remove" | "unexpected", [], unknown, TSESLint.RuleListener> & {
50
+ name: string;
51
+ };
52
+ "no-unnecessary-combination": TSESLint.RuleModule<"unnecessary", [], unknown, TSESLint.RuleListener> & {
53
+ name: string;
54
+ };
55
+ "no-unnecessary-duplication": TSESLint.RuleModule<"duplicate" | "removeClock" | "removeSource", [], unknown, TSESLint.RuleListener> & {
56
+ name: string;
57
+ };
58
+ "no-useless-methods": TSESLint.RuleModule<"uselessMethod", [], unknown, TSESLint.RuleListener> & {
59
+ name: string;
60
+ };
61
+ "no-watch": TSESLint.RuleModule<"restricted", [], unknown, TSESLint.RuleListener> & {
62
+ name: string;
63
+ };
64
+ "prefer-useUnit": TSESLint.RuleModule<"useUseUnit", [], unknown, TSESLint.RuleListener> & {
65
+ name: string;
66
+ };
67
+ "require-pickup-in-persist": TSESLint.RuleModule<"missing", [], unknown, TSESLint.RuleListener> & {
68
+ name: string;
69
+ };
70
+ "strict-effect-handlers": TSESLint.RuleModule<"mixed", [], unknown, TSESLint.RuleListener> & {
71
+ name: string;
72
+ };
73
+ };
74
+ };
75
+ declare const legacyConfigs: {
76
+ recommended: {
77
+ rules: {
78
+ "effector/enforce-effect-naming-convention": "error";
79
+ "effector/enforce-store-naming-convention": "error";
80
+ "effector/keep-options-order": "warn";
81
+ "effector/no-ambiguity-target": "warn";
82
+ "effector/no-duplicate-on": "error";
83
+ "effector/no-forward": "error";
84
+ "effector/no-getState": "error";
85
+ "effector/no-guard": "error";
86
+ "effector/no-unnecessary-combination": "warn";
87
+ "effector/no-unnecessary-duplication": "warn";
88
+ "effector/no-useless-methods": "error";
89
+ "effector/no-watch": "warn";
90
+ };
91
+ };
92
+ scope: {
93
+ rules: {
94
+ "effector/require-pickup-in-persist": "error";
95
+ "effector/strict-effect-handlers": "error";
96
+ };
97
+ };
98
+ react: {
99
+ rules: {
100
+ "effector/enforce-gate-naming-convention": "error";
101
+ "effector/mandatory-scope-binding": "error";
102
+ "effector/prefer-useUnit": "error";
103
+ };
104
+ };
105
+ future: {
106
+ rules: {
107
+ "effector/no-domain-unit-creators": "warn";
108
+ };
109
+ };
110
+ patronum: {
111
+ rules: {
112
+ "effector/no-patronum-debug": "warn";
113
+ };
114
+ };
115
+ };
116
+ declare const flatConfigs: {
117
+ recommended: {
118
+ plugins: {
119
+ effector: TSESLint.FlatConfig.Plugin;
120
+ };
121
+ rules: {
122
+ "effector/enforce-effect-naming-convention": "error";
123
+ "effector/enforce-store-naming-convention": "error";
124
+ "effector/keep-options-order": "warn";
125
+ "effector/no-ambiguity-target": "warn";
126
+ "effector/no-duplicate-on": "error";
127
+ "effector/no-forward": "error";
128
+ "effector/no-getState": "error";
129
+ "effector/no-guard": "error";
130
+ "effector/no-unnecessary-combination": "warn";
131
+ "effector/no-unnecessary-duplication": "warn";
132
+ "effector/no-useless-methods": "error";
133
+ "effector/no-watch": "warn";
134
+ };
135
+ };
136
+ scope: {
137
+ plugins: {
138
+ effector: TSESLint.FlatConfig.Plugin;
139
+ };
140
+ rules: {
141
+ "effector/require-pickup-in-persist": "error";
142
+ "effector/strict-effect-handlers": "error";
143
+ };
144
+ };
145
+ react: {
146
+ plugins: {
147
+ effector: TSESLint.FlatConfig.Plugin;
148
+ };
149
+ rules: {
150
+ "effector/enforce-gate-naming-convention": "error";
151
+ "effector/mandatory-scope-binding": "error";
152
+ "effector/prefer-useUnit": "error";
153
+ };
154
+ };
155
+ future: {
156
+ plugins: {
157
+ effector: TSESLint.FlatConfig.Plugin;
158
+ };
159
+ rules: {
160
+ "effector/no-domain-unit-creators": "warn";
161
+ };
162
+ };
163
+ patronum: {
164
+ plugins: {
165
+ effector: TSESLint.FlatConfig.Plugin;
166
+ };
167
+ rules: {
168
+ "effector/no-patronum-debug": "warn";
169
+ };
170
+ };
171
+ };
172
+ declare const plugin: {
173
+ flatConfigs: typeof flatConfigs;
174
+ /** @deprecated Migrate to modern ESLint v9 Flat Config format */
175
+ configs: typeof legacyConfigs;
176
+ } & typeof base;
177
+ //#endregion
178
+ export { plugin as default };