eslint-config-decent 1.4.2 → 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.cjs CHANGED
@@ -1,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  const eslint = require('@eslint/js');
4
+ const prettier = require('eslint-plugin-prettier/recommended');
4
5
  const globals = require('globals');
5
6
  const tsEslint = require('typescript-eslint');
6
- const prettier = require('eslint-plugin-prettier/recommended');
7
7
  const fs = require('fs');
8
8
  const path = require('path');
9
9
  const utils = require('@typescript-eslint/utils');
10
+ const importPlugin = require('eslint-plugin-import-x');
10
11
  const jsdoc = require('eslint-plugin-jsdoc');
11
12
  const mocha = require('eslint-plugin-mocha');
12
13
  const promise = require('eslint-plugin-promise');
@@ -20,9 +21,10 @@ const unicorn = require('eslint-plugin-unicorn');
20
21
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
21
22
 
22
23
  const eslint__default = /*#__PURE__*/_interopDefaultCompat(eslint);
24
+ const prettier__default = /*#__PURE__*/_interopDefaultCompat(prettier);
23
25
  const globals__default = /*#__PURE__*/_interopDefaultCompat(globals);
24
26
  const tsEslint__default = /*#__PURE__*/_interopDefaultCompat(tsEslint);
25
- const prettier__default = /*#__PURE__*/_interopDefaultCompat(prettier);
27
+ const importPlugin__default = /*#__PURE__*/_interopDefaultCompat(importPlugin);
26
28
  const jsdoc__default = /*#__PURE__*/_interopDefaultCompat(jsdoc);
27
29
  const mocha__default = /*#__PURE__*/_interopDefaultCompat(mocha);
28
30
  const promise__default = /*#__PURE__*/_interopDefaultCompat(promise);
@@ -33,7 +35,7 @@ const testingLibrary__default = /*#__PURE__*/_interopDefaultCompat(testingLibrar
33
35
  const security__default = /*#__PURE__*/_interopDefaultCompat(security);
34
36
  const unicorn__default = /*#__PURE__*/_interopDefaultCompat(unicorn);
35
37
 
36
- const base$8 = {
38
+ const base$9 = {
37
39
  rules: {
38
40
  "array-callback-return": ["error", { allowImplicit: true }],
39
41
  "block-scoped-var": "error",
@@ -230,6 +232,14 @@ const base$8 = {
230
232
  }
231
233
  ],
232
234
  "prefer-template": "error",
235
+ "sort-imports": [
236
+ "error",
237
+ {
238
+ ignoreCase: true,
239
+ ignoreDeclarationSort: true,
240
+ allowSeparatedGroups: true
241
+ }
242
+ ],
233
243
  "symbol-description": "error",
234
244
  "unicode-bom": ["error", "never"],
235
245
  "vars-on-top": "error",
@@ -275,8 +285,8 @@ const cjs = {
275
285
  strict: ["error", "global"]
276
286
  }
277
287
  };
278
- const configs$8 = {
279
- base: base$8,
288
+ const configs$9 = {
289
+ base: base$9,
280
290
  cjsAndEsm,
281
291
  cjs
282
292
  };
@@ -375,7 +385,7 @@ const requireIndexRule = utils.ESLintUtils.RuleCreator(() => "https://github.com
375
385
  }
376
386
  });
377
387
 
378
- const base$7 = {
388
+ const base$8 = {
379
389
  plugins: {
380
390
  "decent-extension": {
381
391
  meta: {
@@ -393,6 +403,25 @@ const base$7 = {
393
403
  "decent-extension/require-index": "error"
394
404
  }
395
405
  };
406
+ const configs$8 = {
407
+ base: base$8
408
+ };
409
+
410
+ const base$7 = {
411
+ plugins: {
412
+ import: importPlugin__default
413
+ },
414
+ rules: {
415
+ "import/order": [
416
+ "error",
417
+ {
418
+ "newlines-between": "always",
419
+ alphabetize: { order: "asc", caseInsensitive: true },
420
+ pathGroupsExcludedImportTypes: ["builtin"]
421
+ }
422
+ ]
423
+ }
424
+ };
396
425
  const configs$7 = {
397
426
  base: base$7
398
427
  };
@@ -688,6 +717,7 @@ function defaultConfig(options) {
688
717
  name: "eslint-config-decent/base",
689
718
  files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"],
690
719
  plugins: {
720
+ ...configs$8.base.plugins,
691
721
  ...configs$7.base.plugins,
692
722
  ...configs$6.base.plugins,
693
723
  ...configs$4.base.plugins,
@@ -695,8 +725,9 @@ function defaultConfig(options) {
695
725
  ...configs.base.plugins
696
726
  },
697
727
  rules: {
698
- ...configs$8.base.rules,
699
- ...enableRequireExtensionRule ? configs$7.base.rules : {},
728
+ ...configs$9.base.rules,
729
+ ...enableRequireExtensionRule ? configs$8.base.rules : {},
730
+ ...configs$7.base.rules,
700
731
  ...configs$6.base.rules,
701
732
  ...configs$4.base.rules,
702
733
  ...configs$2.base.rules,
@@ -719,7 +750,7 @@ function defaultConfig(options) {
719
750
  languageOptions: {
720
751
  sourceType: "script"
721
752
  },
722
- ...configs$8.cjsAndEsm
753
+ ...configs$9.cjsAndEsm
723
754
  },
724
755
  {
725
756
  name: "eslint-config-decent/cjs",
@@ -727,7 +758,7 @@ function defaultConfig(options) {
727
758
  languageOptions: {
728
759
  sourceType: "script"
729
760
  },
730
- ...configs$8.cjs
761
+ ...configs$9.cjs
731
762
  },
732
763
  {
733
764
  name: "eslint-config-decent/tests",
@@ -739,7 +770,8 @@ function defaultConfig(options) {
739
770
  }
740
771
 
741
772
  exports.defaultConfig = defaultConfig;
742
- exports.eslintConfigs = configs$8;
773
+ exports.eslintConfigs = configs$9;
774
+ exports.importConfigs = configs$7;
743
775
  exports.jsdocConfigs = configs$6;
744
776
  exports.promiseConfigs = configs$4;
745
777
  exports.reactConfigs = configs$3;
package/dist/index.d.cts CHANGED
@@ -1,12 +1,16 @@
1
1
  import { ConfigWithExtends } from 'typescript-eslint';
2
2
  import { TSESLint } from '@typescript-eslint/utils';
3
3
 
4
- declare const configs$6: {
4
+ declare const configs$7: {
5
5
  base: TSESLint.FlatConfig.Config;
6
6
  cjsAndEsm: TSESLint.FlatConfig.Config;
7
7
  cjs: TSESLint.FlatConfig.Config;
8
8
  };
9
9
 
10
+ declare const configs$6: {
11
+ base: TSESLint.FlatConfig.Config;
12
+ };
13
+
10
14
  declare const configs$5: {
11
15
  base: TSESLint.FlatConfig.Config;
12
16
  };
@@ -37,4 +41,4 @@ interface DefaultConfigOptions {
37
41
  }
38
42
  declare function defaultConfig(options?: DefaultConfigOptions): ConfigWithExtends[];
39
43
 
40
- export { type DefaultConfigOptions, defaultConfig, configs$6 as eslintConfigs, configs$5 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
44
+ export { type DefaultConfigOptions, defaultConfig, configs$7 as eslintConfigs, configs$6 as importConfigs, configs$5 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
package/dist/index.d.mts CHANGED
@@ -1,12 +1,16 @@
1
1
  import { ConfigWithExtends } from 'typescript-eslint';
2
2
  import { TSESLint } from '@typescript-eslint/utils';
3
3
 
4
- declare const configs$6: {
4
+ declare const configs$7: {
5
5
  base: TSESLint.FlatConfig.Config;
6
6
  cjsAndEsm: TSESLint.FlatConfig.Config;
7
7
  cjs: TSESLint.FlatConfig.Config;
8
8
  };
9
9
 
10
+ declare const configs$6: {
11
+ base: TSESLint.FlatConfig.Config;
12
+ };
13
+
10
14
  declare const configs$5: {
11
15
  base: TSESLint.FlatConfig.Config;
12
16
  };
@@ -37,4 +41,4 @@ interface DefaultConfigOptions {
37
41
  }
38
42
  declare function defaultConfig(options?: DefaultConfigOptions): ConfigWithExtends[];
39
43
 
40
- export { type DefaultConfigOptions, defaultConfig, configs$6 as eslintConfigs, configs$5 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
44
+ export { type DefaultConfigOptions, defaultConfig, configs$7 as eslintConfigs, configs$6 as importConfigs, configs$5 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,16 @@
1
1
  import { ConfigWithExtends } from 'typescript-eslint';
2
2
  import { TSESLint } from '@typescript-eslint/utils';
3
3
 
4
- declare const configs$6: {
4
+ declare const configs$7: {
5
5
  base: TSESLint.FlatConfig.Config;
6
6
  cjsAndEsm: TSESLint.FlatConfig.Config;
7
7
  cjs: TSESLint.FlatConfig.Config;
8
8
  };
9
9
 
10
+ declare const configs$6: {
11
+ base: TSESLint.FlatConfig.Config;
12
+ };
13
+
10
14
  declare const configs$5: {
11
15
  base: TSESLint.FlatConfig.Config;
12
16
  };
@@ -37,4 +41,4 @@ interface DefaultConfigOptions {
37
41
  }
38
42
  declare function defaultConfig(options?: DefaultConfigOptions): ConfigWithExtends[];
39
43
 
40
- export { type DefaultConfigOptions, defaultConfig, configs$6 as eslintConfigs, configs$5 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
44
+ export { type DefaultConfigOptions, defaultConfig, configs$7 as eslintConfigs, configs$6 as importConfigs, configs$5 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
package/dist/index.mjs CHANGED
@@ -1,10 +1,11 @@
1
1
  import eslint from '@eslint/js';
2
+ import prettier from 'eslint-plugin-prettier/recommended';
2
3
  import globals from 'globals';
3
4
  import tsEslint from 'typescript-eslint';
4
- import prettier from 'eslint-plugin-prettier/recommended';
5
5
  import { existsSync, lstatSync } from 'fs';
6
6
  import { resolve, dirname } from 'path';
7
7
  import { ESLintUtils } from '@typescript-eslint/utils';
8
+ import importPlugin from 'eslint-plugin-import-x';
8
9
  import jsdoc from 'eslint-plugin-jsdoc';
9
10
  import mocha from 'eslint-plugin-mocha';
10
11
  import promise from 'eslint-plugin-promise';
@@ -15,7 +16,7 @@ import testingLibrary from 'eslint-plugin-testing-library';
15
16
  import security from 'eslint-plugin-security';
16
17
  import unicorn from 'eslint-plugin-unicorn';
17
18
 
18
- const base$8 = {
19
+ const base$9 = {
19
20
  rules: {
20
21
  "array-callback-return": ["error", { allowImplicit: true }],
21
22
  "block-scoped-var": "error",
@@ -212,6 +213,14 @@ const base$8 = {
212
213
  }
213
214
  ],
214
215
  "prefer-template": "error",
216
+ "sort-imports": [
217
+ "error",
218
+ {
219
+ ignoreCase: true,
220
+ ignoreDeclarationSort: true,
221
+ allowSeparatedGroups: true
222
+ }
223
+ ],
215
224
  "symbol-description": "error",
216
225
  "unicode-bom": ["error", "never"],
217
226
  "vars-on-top": "error",
@@ -257,8 +266,8 @@ const cjs = {
257
266
  strict: ["error", "global"]
258
267
  }
259
268
  };
260
- const configs$8 = {
261
- base: base$8,
269
+ const configs$9 = {
270
+ base: base$9,
262
271
  cjsAndEsm,
263
272
  cjs
264
273
  };
@@ -357,7 +366,7 @@ const requireIndexRule = ESLintUtils.RuleCreator(() => "https://github.com/jgeur
357
366
  }
358
367
  });
359
368
 
360
- const base$7 = {
369
+ const base$8 = {
361
370
  plugins: {
362
371
  "decent-extension": {
363
372
  meta: {
@@ -375,6 +384,25 @@ const base$7 = {
375
384
  "decent-extension/require-index": "error"
376
385
  }
377
386
  };
387
+ const configs$8 = {
388
+ base: base$8
389
+ };
390
+
391
+ const base$7 = {
392
+ plugins: {
393
+ import: importPlugin
394
+ },
395
+ rules: {
396
+ "import/order": [
397
+ "error",
398
+ {
399
+ "newlines-between": "always",
400
+ alphabetize: { order: "asc", caseInsensitive: true },
401
+ pathGroupsExcludedImportTypes: ["builtin"]
402
+ }
403
+ ]
404
+ }
405
+ };
378
406
  const configs$7 = {
379
407
  base: base$7
380
408
  };
@@ -670,6 +698,7 @@ function defaultConfig(options) {
670
698
  name: "eslint-config-decent/base",
671
699
  files: ["**/*.ts", "**/*.js", "**/*.cjs", "**/*.mjs", "**/*.tsx"],
672
700
  plugins: {
701
+ ...configs$8.base.plugins,
673
702
  ...configs$7.base.plugins,
674
703
  ...configs$6.base.plugins,
675
704
  ...configs$4.base.plugins,
@@ -677,8 +706,9 @@ function defaultConfig(options) {
677
706
  ...configs.base.plugins
678
707
  },
679
708
  rules: {
680
- ...configs$8.base.rules,
681
- ...enableRequireExtensionRule ? configs$7.base.rules : {},
709
+ ...configs$9.base.rules,
710
+ ...enableRequireExtensionRule ? configs$8.base.rules : {},
711
+ ...configs$7.base.rules,
682
712
  ...configs$6.base.rules,
683
713
  ...configs$4.base.rules,
684
714
  ...configs$2.base.rules,
@@ -701,7 +731,7 @@ function defaultConfig(options) {
701
731
  languageOptions: {
702
732
  sourceType: "script"
703
733
  },
704
- ...configs$8.cjsAndEsm
734
+ ...configs$9.cjsAndEsm
705
735
  },
706
736
  {
707
737
  name: "eslint-config-decent/cjs",
@@ -709,7 +739,7 @@ function defaultConfig(options) {
709
739
  languageOptions: {
710
740
  sourceType: "script"
711
741
  },
712
- ...configs$8.cjs
742
+ ...configs$9.cjs
713
743
  },
714
744
  {
715
745
  name: "eslint-config-decent/tests",
@@ -720,4 +750,4 @@ function defaultConfig(options) {
720
750
  ];
721
751
  }
722
752
 
723
- export { defaultConfig, configs$8 as eslintConfigs, configs$6 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
753
+ export { defaultConfig, configs$9 as eslintConfigs, configs$7 as importConfigs, configs$6 as jsdocConfigs, configs$4 as promiseConfigs, configs$3 as reactConfigs, configs$2 as securityConfigs, configs$1 as typescriptEslintConfigs, configs as unicornConfigs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-config-decent",
3
- "version": "1.4.2",
3
+ "version": "1.5.0",
4
4
  "description": "A decent ESLint configuration",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -75,11 +75,12 @@
75
75
  "@eslint/js": "^9.7.0",
76
76
  "@typescript-eslint/utils": "8.0.0-alpha.46",
77
77
  "eslint-config-prettier": "^9.1.0",
78
+ "eslint-plugin-import-x": "^3.0.1",
78
79
  "eslint-plugin-jsdoc": "^48.7.0",
80
+ "eslint-plugin-jsx-a11y": "^6.9.0",
79
81
  "eslint-plugin-mocha": "^10.4.3",
80
82
  "eslint-plugin-prettier": "^5.2.1",
81
83
  "eslint-plugin-promise": "^6.4.0",
82
- "eslint-plugin-jsx-a11y": "^6.9.0",
83
84
  "eslint-plugin-react": "^7.34.4",
84
85
  "eslint-plugin-react-hooks": "^4.6.2",
85
86
  "eslint-plugin-security": "^3.0.1",
package/src/eslint.ts CHANGED
@@ -194,6 +194,14 @@ const base: TSESLint.FlatConfig.Config = {
194
194
  },
195
195
  ],
196
196
  'prefer-template': 'error',
197
+ 'sort-imports': [
198
+ 'error',
199
+ {
200
+ ignoreCase: true,
201
+ ignoreDeclarationSort: true,
202
+ allowSeparatedGroups: true,
203
+ },
204
+ ],
197
205
  'symbol-description': 'error',
198
206
  'unicode-bom': ['error', 'never'],
199
207
  'vars-on-top': 'error',
package/src/extension.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import type { TSESLint } from '@typescript-eslint/utils';
2
+
1
3
  import { requireExtensionRule } from './rules/requireExtensionRule.js';
2
4
  import { requireIndexRule } from './rules/requireIndexRule.js';
3
- import type { TSESLint } from '@typescript-eslint/utils';
4
5
 
5
6
  const base: TSESLint.FlatConfig.Config = {
6
7
  plugins: {
package/src/import.ts ADDED
@@ -0,0 +1,26 @@
1
+ import type { TSESLint } from '@typescript-eslint/utils';
2
+ import importPlugin from 'eslint-plugin-import-x';
3
+
4
+ const base: TSESLint.FlatConfig.Config = {
5
+ plugins: {
6
+ import: importPlugin,
7
+ },
8
+ rules: {
9
+ 'import/order': [
10
+ 'error',
11
+ {
12
+ 'newlines-between': 'always',
13
+ alphabetize: { order: 'asc', caseInsensitive: true },
14
+ pathGroupsExcludedImportTypes: ['builtin'],
15
+ },
16
+ ],
17
+ },
18
+ };
19
+
20
+ export const configs = {
21
+ base,
22
+ };
23
+
24
+ export default {
25
+ configs,
26
+ };
package/src/index.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import eslint from '@eslint/js';
2
+ import prettier from 'eslint-plugin-prettier/recommended';
2
3
  import globals from 'globals';
3
4
  import tsEslint, { type ConfigWithExtends } from 'typescript-eslint';
4
- import prettier from 'eslint-plugin-prettier/recommended';
5
+
5
6
  import { configs as eslintConfigs } from './eslint.js';
6
7
  import { configs as extensionConfigs } from './extension.js';
8
+ import { configs as importConfigs } from './import.js';
7
9
  import { configs as jsdocConfigs } from './jsdoc.js';
8
10
  import { configs as mochaConfigs } from './mocha.js';
9
11
  import { configs as promiseConfigs } from './promise.js';
@@ -14,6 +16,7 @@ import { configs as unicornConfigs } from './unicorn.js';
14
16
 
15
17
  export {
16
18
  eslintConfigs, //
19
+ importConfigs,
17
20
  jsdocConfigs,
18
21
  promiseConfigs,
19
22
  reactConfigs,
@@ -76,6 +79,7 @@ export function defaultConfig(options?: DefaultConfigOptions): ConfigWithExtends
76
79
  files: ['**/*.ts', '**/*.js', '**/*.cjs', '**/*.mjs', '**/*.tsx'],
77
80
  plugins: {
78
81
  ...extensionConfigs.base.plugins,
82
+ ...importConfigs.base.plugins,
79
83
  ...jsdocConfigs.base.plugins,
80
84
  ...promiseConfigs.base.plugins,
81
85
  ...securityConfigs.base.plugins,
@@ -84,6 +88,7 @@ export function defaultConfig(options?: DefaultConfigOptions): ConfigWithExtends
84
88
  rules: {
85
89
  ...eslintConfigs.base.rules,
86
90
  ...(enableRequireExtensionRule ? extensionConfigs.base.rules : {}),
91
+ ...importConfigs.base.rules,
87
92
  ...jsdocConfigs.base.rules,
88
93
  ...promiseConfigs.base.rules,
89
94
  ...securityConfigs.base.rules,
package/src/jsdoc.ts CHANGED
@@ -1,5 +1,5 @@
1
- import jsdoc from 'eslint-plugin-jsdoc';
2
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
+ import jsdoc from 'eslint-plugin-jsdoc';
3
3
 
4
4
  const base: TSESLint.FlatConfig.Config = {
5
5
  settings: {
package/src/mocha.ts CHANGED
@@ -1,5 +1,5 @@
1
- import mocha from 'eslint-plugin-mocha';
2
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
+ import mocha from 'eslint-plugin-mocha';
3
3
 
4
4
  const base: TSESLint.FlatConfig.Config = {
5
5
  plugins: {
package/src/promise.ts CHANGED
@@ -1,5 +1,5 @@
1
- import promise from 'eslint-plugin-promise';
2
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
+ import promise from 'eslint-plugin-promise';
3
3
 
4
4
  const base: TSESLint.FlatConfig.Config = {
5
5
  plugins: {
package/src/react.ts CHANGED
@@ -1,8 +1,8 @@
1
+ import type { TSESLint } from '@typescript-eslint/utils';
1
2
  import a11y from 'eslint-plugin-jsx-a11y';
2
3
  import react from 'eslint-plugin-react';
3
4
  import reactHooks from 'eslint-plugin-react-hooks';
4
5
  import testingLibrary from 'eslint-plugin-testing-library';
5
- import type { TSESLint } from '@typescript-eslint/utils';
6
6
 
7
7
  const base: TSESLint.FlatConfig.Config = {
8
8
  plugins: {
@@ -1,5 +1,6 @@
1
1
  import { existsSync } from 'fs';
2
2
  import { dirname, resolve } from 'path';
3
+
3
4
  import type { TSESTree } from '@typescript-eslint/utils';
4
5
  import { ESLintUtils } from '@typescript-eslint/utils';
5
6
 
@@ -1,5 +1,6 @@
1
1
  import { existsSync, lstatSync } from 'fs';
2
- import { resolve, dirname } from 'path';
2
+ import { dirname, resolve } from 'path';
3
+
3
4
  import type { TSESTree } from '@typescript-eslint/utils';
4
5
  import { ESLintUtils } from '@typescript-eslint/utils';
5
6
 
package/src/security.ts CHANGED
@@ -1,5 +1,5 @@
1
- import security from 'eslint-plugin-security';
2
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
+ import security from 'eslint-plugin-security';
3
3
 
4
4
  const base: TSESLint.FlatConfig.Config = {
5
5
  plugins: {
package/src/unicorn.ts CHANGED
@@ -1,5 +1,5 @@
1
- import unicorn from 'eslint-plugin-unicorn';
2
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
+ import unicorn from 'eslint-plugin-unicorn';
3
3
 
4
4
  const base: TSESLint.FlatConfig.Config = {
5
5
  plugins: {