@ghettoddos/eslint-config 1.4.0 → 1.5.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/dist/index.d.ts CHANGED
@@ -219,6 +219,105 @@ interface RuleOptions {
219
219
  * @see https://eslint.org/docs/latest/rules/dot-notation
220
220
  */
221
221
  'dot-notation'?: Linter.RuleEntry<DotNotation>;
222
+ /**
223
+ * Enforce Fx as a suffix for any effect created by Effector methods
224
+ * @see https://eslint.effector.dev/rules/enforce-effect-naming-convention
225
+ */
226
+ 'effector/enforce-effect-naming-convention'?: Linter.RuleEntry<[]>;
227
+ /**
228
+ * Enforce first capital letter for gate naming
229
+ * @see https://eslint.effector.dev/rules/enforce-gate-naming-convention
230
+ */
231
+ 'effector/enforce-gate-naming-convention'?: Linter.RuleEntry<[]>;
232
+ /**
233
+ * Enforce $ as a prefix or postfix for any store created by Effector methods
234
+ * @see https://eslint.effector.dev/rules/enforce-store-naming-convention
235
+ */
236
+ 'effector/enforce-store-naming-convention'?: Linter.RuleEntry<[]>;
237
+ /**
238
+ * Enforce options order for Effector methods
239
+ * @see https://eslint.effector.dev/rules/keep-options-order
240
+ */
241
+ 'effector/keep-options-order'?: Linter.RuleEntry<[]>;
242
+ /**
243
+ * Forbids `Event` and `Effect` usage without `useUnit` in React components.
244
+ * @see https://eslint.effector.dev/rules/mandatory-scope-binding
245
+ */
246
+ 'effector/mandatory-scope-binding'?: Linter.RuleEntry<[]>;
247
+ /**
248
+ * Forbids ambiguity targets in `sample` and `guard`
249
+ * @see https://eslint.effector.dev/rules/no-ambiguity-target
250
+ */
251
+ 'effector/no-ambiguity-target'?: Linter.RuleEntry<[]>;
252
+ /**
253
+ * Forbids unit duplicates on `source` and `clock``
254
+ * @see https://eslint.effector.dev/rules/no-duplicate-clock-or-source-array-values
255
+ */
256
+ 'effector/no-duplicate-clock-or-source-array-values'?: Linter.RuleEntry<[]>;
257
+ /**
258
+ * Forbids duplicate `.on` calls on store
259
+ * @see https://eslint.effector.dev/rules/no-duplicate-on
260
+ */
261
+ 'effector/no-duplicate-on'?: Linter.RuleEntry<[]>;
262
+ /**
263
+ * Prefer `sample` over `forward`
264
+ * @see https://eslint.effector.dev/rules/no-forward
265
+ */
266
+ 'effector/no-forward'?: Linter.RuleEntry<[]>;
267
+ /**
268
+ * Forbids `.getState` calls on any Effector store
269
+ * @see https://eslint.effector.dev/rules/no-getState
270
+ */
271
+ 'effector/no-getState'?: Linter.RuleEntry<[]>;
272
+ /**
273
+ * Prefer `sample` over `guard`
274
+ * @see https://eslint.effector.dev/rules/no-guard
275
+ */
276
+ 'effector/no-guard'?: Linter.RuleEntry<[]>;
277
+ /**
278
+ * Disallow the use of patronum `debug`
279
+ * @see https://eslint.effector.dev/rules/no-patronum-debug
280
+ */
281
+ 'effector/no-patronum-debug'?: Linter.RuleEntry<[]>;
282
+ /**
283
+ * Forbids unnecessary combinations in `clock`, `source` and `forward`
284
+ * @see https://eslint.effector.dev/rules/no-unnecessary-combination
285
+ */
286
+ 'effector/no-unnecessary-combination'?: Linter.RuleEntry<[]>;
287
+ /**
288
+ * Forbids unnecessary duplication in `clock` and `source`
289
+ * @see https://eslint.effector.dev/rules/no-unnecessary-duplication
290
+ */
291
+ 'effector/no-unnecessary-duplication'?: Linter.RuleEntry<[]>;
292
+ /**
293
+ * Forbids useless calls of `sample` and `guard`
294
+ * @see https://eslint.effector.dev/rules/no-useless-methods
295
+ */
296
+ 'effector/no-useless-methods'?: Linter.RuleEntry<[]>;
297
+ /**
298
+ * Avoid `.watch` calls on any Effector unit or operator
299
+ * @see https://eslint.effector.dev/rules/no-watch
300
+ */
301
+ 'effector/no-watch'?: Linter.RuleEntry<[]>;
302
+ /**
303
+ * Prefer `sample` over `forward` with `.map`/`.prepend`
304
+ * @see https://eslint.effector.dev/rules/prefer-sample-over-forward-with-mapping
305
+ */
306
+ 'effector/prefer-sample-over-forward-with-mapping'?: Linter.RuleEntry<[]>;
307
+ /**
308
+ * Suggests to replace old hooks `useStore`/`useEvent` by the new one `useUnit`
309
+ * @see https://eslint.effector.dev/rules/prefer-useUnit
310
+ */
311
+ 'effector/prefer-useUnit'?: Linter.RuleEntry<[]>;
312
+ /**
313
+ * @see https://eslint.effector.dev/rules/require-pickup-in-persist
314
+ */
315
+ 'effector/require-pickup-in-persist'?: Linter.RuleEntry<[]>;
316
+ /**
317
+ * Forbids mix of async functions and effects calls in effect handlers.
318
+ * @see https://eslint.effector.dev/rules/strict-effect-handlers
319
+ */
320
+ 'effector/strict-effect-handlers'?: Linter.RuleEntry<[]>;
222
321
  /**
223
322
  * Require or disallow newline at the end of files
224
323
  * @see https://eslint.org/docs/latest/rules/eol-last
@@ -12794,7 +12893,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
12794
12893
  onlyEquality?: boolean;
12795
12894
  }];
12796
12895
  // Names of all the configs
12797
- type ConfigNames = 'eslint-comments/rules' | 'formatter/setup' | 'imports/rules' | 'javascript/setup' | 'javascript/rules' | 'jsx/setup' | 'jsonc/setup' | 'jsonc/rules' | 'markdown/setup' | 'markdown/processor' | 'markdown/parser' | 'markdown/disables' | 'node/rules' | 'perfectionist/setup' | 'pnpm/package-json' | 'pnpm/pnpm-workspace-yaml' | 'react/setup' | 'react/rules' | 'sort/package-json' | 'stylistic/rules' | 'toml/setup' | 'toml/rules' | 'regexp/rules' | 'typescript/setup' | 'typescript/parser' | 'typescript/rules' | 'unicorn/rules' | 'unocss' | 'yaml/setup' | 'yaml/rules' | 'yaml/pnpm-workspace' | 'next/rules' | 'jsx-a11y/rules';
12896
+ type ConfigNames = 'eslint-comments/rules' | 'formatter/setup' | 'imports/rules' | 'javascript/setup' | 'javascript/rules' | 'jsx/setup' | 'jsonc/setup' | 'jsonc/rules' | 'markdown/setup' | 'markdown/processor' | 'markdown/parser' | 'markdown/disables' | 'node/rules' | 'perfectionist/setup' | 'pnpm/package-json' | 'pnpm/pnpm-workspace-yaml' | 'react/setup' | 'react/rules' | 'sort/package-json' | 'stylistic/rules' | 'toml/setup' | 'toml/rules' | 'regexp/rules' | 'typescript/setup' | 'typescript/parser' | 'typescript/rules' | 'unicorn/rules' | 'unocss' | 'yaml/setup' | 'yaml/rules' | 'yaml/pnpm-workspace' | 'next/rules' | 'jsx-a11y/rules' | 'effector/setup' | 'effector/rules';
12798
12897
  //#endregion
12799
12898
  //#region src/vendor/prettier-types.d.ts
12800
12899
  /**
@@ -12989,6 +13088,32 @@ interface OptionsUnicorn extends OptionsOverrides {
12989
13088
  */
12990
13089
  allRecommended?: boolean;
12991
13090
  }
13091
+ interface OptionsEffector extends OptionsOverrides {
13092
+ /**
13093
+ * Include react rules.
13094
+ *
13095
+ * @default auto-detect based on the dependencies
13096
+ */
13097
+ react?: boolean;
13098
+ /**
13099
+ * Include patronum rules.
13100
+ *
13101
+ * @default auto-detect based on the dependencies
13102
+ */
13103
+ patronum?: boolean;
13104
+ /**
13105
+ * Include future rules.
13106
+ *
13107
+ * @default false
13108
+ */
13109
+ future?: boolean;
13110
+ /**
13111
+ * Include scope rules.
13112
+ *
13113
+ * @default false
13114
+ */
13115
+ scope?: boolean;
13116
+ }
12992
13117
  interface OptionsTypeScriptParserOptions {
12993
13118
  /**
12994
13119
  * Additional parser options for TypeScript.
@@ -13149,6 +13274,15 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
13149
13274
  * @default auto-detect based on the dependencies
13150
13275
  */
13151
13276
  next?: boolean | OptionsOverrides;
13277
+ /**
13278
+ * Enable effector rules.
13279
+ *
13280
+ * Requires installing:
13281
+ * - `eslint-plugin-effector`
13282
+ *
13283
+ * @default auto-detect based on the dependencies
13284
+ */
13285
+ effector?: boolean | OptionsEffector;
13152
13286
  /**
13153
13287
  * Enable unocss rules.
13154
13288
  *
@@ -13241,6 +13375,9 @@ declare function comments(): Promise<TypedFlatConfigItem[]>;
13241
13375
  //#region src/configs/disables.d.ts
13242
13376
  declare function disables(): Promise<TypedFlatConfigItem[]>;
13243
13377
  //#endregion
13378
+ //#region src/configs/effector.d.ts
13379
+ declare function effector(options?: OptionsEffector): Promise<TypedFlatConfigItem[]>;
13380
+ //#endregion
13244
13381
  //#region src/configs/formatters.d.ts
13245
13382
  declare function formatters(options?: OptionsFormatters | true, stylistic?: StylisticConfig): Promise<TypedFlatConfigItem[]>;
13246
13383
  //#endregion
@@ -13404,4 +13541,4 @@ declare function ensurePackages(packages: (string | undefined)[]): Promise<void>
13404
13541
  declare function isInEditorEnv(): boolean;
13405
13542
  declare function isInGitHooksOrLintStaged(): boolean;
13406
13543
  //#endregion
13407
- export { Awaitable, ConfigNames, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsOverrides, OptionsProjectType, OptionsRegExp, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, combine, comments, config, config as default, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, jsxA11y, markdown, next, node, parserPlain, perfectionist, pnpm, react, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, yaml };
13544
+ export { Awaitable, ConfigNames, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsEffector, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsOverrides, OptionsProjectType, OptionsRegExp, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, combine, comments, config, config as default, defaultPluginRenaming, disables, effector, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, jsxA11y, markdown, next, node, parserPlain, perfectionist, pnpm, react, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, yaml };
package/dist/index.js CHANGED
@@ -125,6 +125,18 @@ async function disables() {
125
125
  ];
126
126
  }
127
127
 
128
+ //#endregion
129
+ //#region src/constants.ts
130
+ const ReactPackages = ["react", "nest"];
131
+ const ReactRefreshAllowConstantExportPackages = ["vite"];
132
+ const ReactRouterPackages = [
133
+ "@react-router/node",
134
+ "@react-router/react",
135
+ "@react-router/serve",
136
+ "@react-router/dev"
137
+ ];
138
+ const NextJsPackages = ["next"];
139
+
128
140
  //#endregion
129
141
  //#region src/utils.ts
130
142
  const scopeUrl = fileURLToPath(new URL(".", import.meta.url));
@@ -203,6 +215,49 @@ function isInGitHooksOrLintStaged() {
203
215
  return !!(process.env.GIT_PARAMS || process.env.VSCODE_GIT_COMMAND || process.env.npm_lifecycle_script?.startsWith("lint-staged"));
204
216
  }
205
217
 
218
+ //#endregion
219
+ //#region src/configs/effector.ts
220
+ async function effector(options = {}) {
221
+ const { future = false, overrides = {}, patronum = isPackageExists("patronum"), react: react$1 = ReactPackages.some((i) => isPackageExists(i)), scope = false } = options;
222
+ await ensurePackages(["eslint-plugin-effector"]);
223
+ const [pluginEffector] = await Promise.all([interopDefault(import("eslint-plugin-effector"))]);
224
+ return [{
225
+ name: "effector/setup",
226
+ plugins: { effector: pluginEffector }
227
+ }, {
228
+ name: "effector/rules",
229
+ rules: {
230
+ "effector/enforce-effect-naming-convention": "error",
231
+ "effector/enforce-store-naming-convention": "error",
232
+ "effector/keep-options-order": "warn",
233
+ "effector/no-ambiguity-target": "warn",
234
+ "effector/no-duplicate-on": "error",
235
+ "effector/no-getState": "error",
236
+ "effector/no-unnecessary-combination": "warn",
237
+ "effector/no-unnecessary-duplication": "warn",
238
+ "effector/no-useless-methods": "error",
239
+ "effector/no-watch": "warn",
240
+ "effector/prefer-sample-over-forward-with-mapping": "warn",
241
+ ...react$1 ? {
242
+ "effector/enforce-gate-naming-convention": "error",
243
+ "effector/mandatory-scope-binding": "error",
244
+ "effector/prefer-useUnit": "warn"
245
+ } : {},
246
+ ...patronum ? { "effector/no-patronum-debug": "error" } : {},
247
+ ...scope ? {
248
+ "effector/require-pickup-in-persist": "error",
249
+ "effector/strict-effect-handlers": "error"
250
+ } : {},
251
+ ...future ? {
252
+ "effector/no-forward": "warn",
253
+ "effector/no-guard": "warn",
254
+ "effector/prefer-sample-over-forward-with-mapping": "off"
255
+ } : {},
256
+ ...overrides
257
+ }
258
+ }];
259
+ }
260
+
206
261
  //#endregion
207
262
  //#region src/configs/stylistic.ts
208
263
  const StylisticConfigDefaults = {
@@ -687,12 +742,11 @@ async function jsx() {
687
742
 
688
743
  //#endregion
689
744
  //#region src/configs/jsx-a11y.ts
690
- const NextJsPackages$1 = ["next"];
691
- const isUsingNext = NextJsPackages$1.some((i) => isPackageExists(i));
692
745
  async function jsxA11y(options = {}) {
693
746
  const { overrides = {} } = options;
694
747
  await ensurePackages(["eslint-plugin-jsx-a11y"]);
695
748
  const [pluginJsxA11y] = await Promise.all([interopDefault(import("eslint-plugin-jsx-a11y"))]);
749
+ const isUsingNext = NextJsPackages.some((i) => isPackageExists(i));
696
750
  return [{
697
751
  name: "jsx-a11y/rules",
698
752
  plugins: { "jsx-a11y": pluginJsxA11y },
@@ -908,14 +962,6 @@ async function pnpm() {
908
962
 
909
963
  //#endregion
910
964
  //#region src/configs/react.ts
911
- const ReactRefreshAllowConstantExportPackages = ["vite"];
912
- const ReactRouterPackages = [
913
- "@react-router/node",
914
- "@react-router/react",
915
- "@react-router/serve",
916
- "@react-router/dev"
917
- ];
918
- const NextJsPackages = ["next"];
919
965
  async function react(options = {}) {
920
966
  const { files = [GLOB_SRC], filesTypeAware = [GLOB_TS, GLOB_TSX], ignoresTypeAware = [`${GLOB_MARKDOWN}/**`], overrides = {}, tsconfigPath } = options;
921
967
  const isTypeAware = !!tsconfigPath;
@@ -927,7 +973,7 @@ async function react(options = {}) {
927
973
  ]);
928
974
  const isAllowConstantExport = ReactRefreshAllowConstantExportPackages.some((i) => isPackageExists(i));
929
975
  const isUsingReactRouter = ReactRouterPackages.some((i) => isPackageExists(i));
930
- const isUsingNext$1 = NextJsPackages.some((i) => isPackageExists(i));
976
+ const isUsingNext = NextJsPackages.some((i) => isPackageExists(i));
931
977
  const plugins = pluginReact.configs.all.plugins;
932
978
  return [
933
979
  {
@@ -1014,7 +1060,7 @@ async function react(options = {}) {
1014
1060
  "react-web-api/no-leaked-timeout": "warn",
1015
1061
  "react-refresh/only-export-components": ["warn", {
1016
1062
  allowConstantExport: isAllowConstantExport,
1017
- allowExportNames: [...isUsingNext$1 ? [
1063
+ allowExportNames: [...isUsingNext ? [
1018
1064
  "dynamic",
1019
1065
  "dynamicParams",
1020
1066
  "revalidate",
@@ -1604,7 +1650,6 @@ const flatConfigProps = [
1604
1650
  "rules",
1605
1651
  "settings"
1606
1652
  ];
1607
- const ReactPackages = ["react", "nest"];
1608
1653
  const defaultPluginRenaming = {
1609
1654
  "@eslint-react": "react",
1610
1655
  "@eslint-react/dom": "react-dom",
@@ -1627,7 +1672,8 @@ const defaultPluginRenaming = {
1627
1672
  * The merged ESLint configurations.
1628
1673
  */
1629
1674
  function config(options = {}, ...userConfigs) {
1630
- const { autoRenamePlugins = true, componentExts = [], gitignore: enableGitignore = true, jsx: enableJsx = true, jsxA11y: enableJsxA11y = ReactPackages.some((i) => isPackageExists(i)), next: enableNext = isPackageExists("next"), pnpm: enableCatalogs = false, react: enableReact = ReactPackages.some((i) => isPackageExists(i)), regexp: enableRegexp = true, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false } = options;
1675
+ const isUsingReact = ReactPackages.some((i) => isPackageExists(i));
1676
+ const { autoRenamePlugins = true, componentExts = [], effector: enableEffector = isPackageExists("effector"), gitignore: enableGitignore = true, jsx: enableJsx = true, jsxA11y: enableJsxA11y = isUsingReact, next: enableNext = NextJsPackages.some((i) => isPackageExists(i)), pnpm: enableCatalogs = false, react: enableReact = isUsingReact, regexp: enableRegexp = true, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false } = options;
1631
1677
  let isInEditor = options.isInEditor;
1632
1678
  if (isInEditor == null) {
1633
1679
  isInEditor = isInEditorEnv();
@@ -1670,6 +1716,10 @@ function config(options = {}, ...userConfigs) {
1670
1716
  }));
1671
1717
  if (enableJsxA11y) configs$1.push(jsxA11y({ overrides: getOverrides(options, "jsxA11y") }));
1672
1718
  if (enableNext) configs$1.push(next({ overrides: getOverrides(options, "next") }));
1719
+ if (enableEffector) configs$1.push(effector({
1720
+ ...resolveSubOptions(options, "effector"),
1721
+ overrides: getOverrides(options, "effector")
1722
+ }));
1673
1723
  if (enableUnoCSS) configs$1.push(unocss({
1674
1724
  ...resolveSubOptions(options, "unocss"),
1675
1725
  overrides: getOverrides(options, "unocss")
@@ -1721,4 +1771,4 @@ function getOverrides(options, key) {
1721
1771
  var src_default = config;
1722
1772
 
1723
1773
  //#endregion
1724
- export { GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, combine, comments, config, src_default as default, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, jsxA11y, markdown, next, node, parserPlain, perfectionist, pnpm, react, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, yaml };
1774
+ export { GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, combine, comments, config, src_default as default, defaultPluginRenaming, disables, effector, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, jsxA11y, markdown, next, node, parserPlain, perfectionist, pnpm, react, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, yaml };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ghettoddos/eslint-config",
3
3
  "type": "module",
4
- "version": "1.4.0",
4
+ "version": "1.5.0",
5
5
  "description": "ghettoDdOS ESLint config",
6
6
  "author": "ghettoDdOS <pen.egor2002@gamil.com> (https://github.com/ghettoDdOS/)",
7
7
  "license": "MIT",
@@ -29,6 +29,7 @@
29
29
  "@prettier/plugin-xml": "^3.4.1",
30
30
  "@unocss/eslint-plugin": ">=0.50.0",
31
31
  "eslint": "^9.10.0",
32
+ "eslint-plugin-effector": "^0.15.0",
32
33
  "eslint-plugin-format": ">=0.1.0",
33
34
  "eslint-plugin-jsx-a11y": "^6.10.2"
34
35
  },
@@ -42,6 +43,9 @@
42
43
  "@unocss/eslint-plugin": {
43
44
  "optional": true
44
45
  },
46
+ "eslint-plugin-effector": {
47
+ "optional": true
48
+ },
45
49
  "eslint-plugin-format": {
46
50
  "optional": true
47
51
  },
@@ -89,6 +93,7 @@
89
93
  "@unocss/eslint-plugin": "66.1.0-beta.3",
90
94
  "bumpp": "^10.1.1",
91
95
  "eslint": "^9.27.0",
96
+ "eslint-plugin-effector": "^0.15.0",
92
97
  "eslint-plugin-format": "^1.0.1",
93
98
  "eslint-plugin-jsx-a11y": "^6.10.2",
94
99
  "eslint-typegen": "^2.2.0",