neatlint 1.0.1 → 1.0.3

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/README.md CHANGED
@@ -170,34 +170,32 @@ Suggested uses are as follows. We recommend using Prettier.
170
170
 
171
171
  ### What does it do?
172
172
 
173
- Neatlint offers strict ESLint settings.
174
-
175
- | Rule | Description |
176
- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
177
- | [arrow-body-style](https://eslint.org/docs/latest/rules/arrow-body-style) | Require braces around arrow function bodies. |
178
- | [func-style](https://eslint.org/docs/latest/rules/func-style) | Enforce the consistent use of either function declarations or expressions assigned to variables. |
179
- | [no-duplicate-imports](https://eslint.org/docs/latest/rules/no-duplicate-imports) | Disallow duplicate module imports. |
180
- | [no-empty](https://eslint.org/docs/latest/rules/no-empty) | Disallow empty block statements. |
181
- | [no-restricted-syntax](https://eslint.org/docs/latest/rules/no-restricted-syntax) | Disallow specified syntax. |
182
- | [no-useless-catch](https://eslint.org/docs/latest/rules/no-useless-catch) | Disallow unnecessary catch clauses. |
183
- | [no-useless-concat](https://eslint.org/docs/latest/rules/no-useless-concat) | Disallow unnecessary concatenation of literals or template literals. |
184
- | [no-useless-constructor](https://eslint.org/docs/latest/rules/no-useless-constructor) | Disallow unnecessary constructors. |
185
- | [no-useless-rename](https://eslint.org/docs/latest/rules/no-useless-rename) | Disallow renaming import, export, and destructured assignments to the same name. |
186
- | [no-useless-return](https://eslint.org/docs/latest/rules/no-useless-return) | Disallow redundant return statements. |
187
- | [no-var](https://eslint.org/docs/latest/rules/no-var) | Require let or const instead of var. |
188
- | [object-shorthand](https://eslint.org/docs/latest/rules/object-shorthand) | Require or disallow method and property shorthand syntax for object literals. |
189
- | [prefer-arrow-callback](https://eslint.org/docs/latest/rules/prefer-arrow-callback) | Require using arrow functions for callbacks. |
190
- | [prefer-const](https://eslint.org/docs/latest/rules/prefer-const) | Require const declarations for variables that are never reassigned after declared. |
191
- | [prefer-template](https://eslint.org/docs/latest/rules/prefer-template) | Require template literals instead of string concatenation. |
192
- | [eqeqeq](https://eslint.org/docs/latest/rules/eqeqeq) | Require the use of === and !==. |
193
- | [@typescript-eslint/consistent-type-definitions](https://typescript-eslint.io/rules/consistent-type-definitions) | Enforce type definitions to consistently use either interface or type. |
194
- | [@typescript-eslint/consistent-type-exports](https://typescript-eslint.io/rules/consistent-type-exports) | Enforce consistent usage of type exports. |
195
- | [@typescript-eslint/consistent-type-imports](https://typescript-eslint.io/rules/consistent-type-imports) | Enforce consistent usage of type imports. |
196
- | [@typescript-eslint/explicit-function-return-type](https://typescript-eslint.io/rules/explicit-function-return-type) | Require explicit return types on functions and class methods. |
197
- | [@typescript-eslint/explicit-member-accessibility](https://typescript-eslint.io/rules/explicit-member-accessibility) | Require explicit accessibility modifiers on class properties and methods. |
198
- | [@typescript-eslint/no-inferrable-types](https://typescript-eslint.io/rules/no-inferrable-types) | Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean. |
199
- | [@typescript-eslint/prefer-readonly](https://typescript-eslint.io/rules/prefer-readonly) | Require private members to be marked as readonly if they're never modified outside of the constructor. |
200
- | [@typescript-eslint/strict-boolean-expressions](https://typescript-eslint.io/rules/strict-boolean-expressions) | Disallow certain types in boolean expressions. |
173
+ Neatlint offers strict ESLint settings. These rules also include [strict-type-checked](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/eslintrc/strict-type-checked.ts), [stylistic-type-checked](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/eslintrc/stylistic-type-checked.ts) and [eslint-recommended](https://npmjs.com/package/@eslint/js).
174
+
175
+ | Rule | Description |
176
+ | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
177
+ | [arrow-body-style](https://eslint.org/docs/latest/rules/arrow-body-style) | Require braces around arrow function bodies. |
178
+ | [func-style](https://eslint.org/docs/latest/rules/func-style) | Enforce the consistent use of either function declarations or expressions assigned to variables. |
179
+ | [no-duplicate-imports](https://eslint.org/docs/latest/rules/no-duplicate-imports) | Disallow duplicate module imports. |
180
+ | [no-restricted-syntax](https://eslint.org/docs/latest/rules/no-restricted-syntax) | Disallow specified syntax. |
181
+ | [no-useless-computed-key](https://eslint.org/docs/latest/rules/no-useless-computed-key) | Disallow unnecessary computed property keys in objects and classes. |
182
+ | [no-useless-concat](https://eslint.org/docs/latest/rules/no-useless-concat) | Disallow unnecessary concatenation of literals or template literals. |
183
+ | [no-useless-constructor](https://eslint.org/docs/latest/rules/no-useless-constructor) | Disallow unnecessary constructors. |
184
+ | [no-useless-rename](https://eslint.org/docs/latest/rules/no-useless-rename) | Disallow renaming import, export, and destructured assignments to the same name. |
185
+ | [no-useless-return](https://eslint.org/docs/latest/rules/no-useless-return) | Disallow redundant return statements. |
186
+ | [no-var](https://eslint.org/docs/latest/rules/no-var) | Require let or const instead of var. |
187
+ | [object-shorthand](https://eslint.org/docs/latest/rules/object-shorthand) | Require or disallow method and property shorthand syntax for object literals. |
188
+ | [prefer-arrow-callback](https://eslint.org/docs/latest/rules/prefer-arrow-callback) | Require using arrow functions for callbacks. |
189
+ | [prefer-const](https://eslint.org/docs/latest/rules/prefer-const) | Require const declarations for variables that are never reassigned after declared. |
190
+ | [prefer-template](https://eslint.org/docs/latest/rules/prefer-template) | Require template literals instead of string concatenation. |
191
+ | [eqeqeq](https://eslint.org/docs/latest/rules/eqeqeq) | Require the use of === and !==. |
192
+ | [@typescript-eslint/consistent-type-definitions](https://typescript-eslint.io/rules/consistent-type-definitions) | Enforce type definitions to consistently use either interface or type. |
193
+ | [@typescript-eslint/consistent-type-exports](https://typescript-eslint.io/rules/consistent-type-exports) | Enforce consistent usage of type exports. |
194
+ | [@typescript-eslint/consistent-type-imports](https://typescript-eslint.io/rules/consistent-type-imports) | Enforce consistent usage of type imports. |
195
+ | [@typescript-eslint/explicit-function-return-type](https://typescript-eslint.io/rules/explicit-function-return-type) | Require explicit return types on functions and class methods. |
196
+ | [@typescript-eslint/explicit-member-accessibility](https://typescript-eslint.io/rules/explicit-member-accessibility) | Require explicit accessibility modifiers on class properties and methods. |
197
+ | [@typescript-eslint/prefer-readonly](https://typescript-eslint.io/rules/prefer-readonly) | Require private members to be marked as readonly if they're never modified outside of the constructor. |
198
+ | [@typescript-eslint/strict-boolean-expressions](https://typescript-eslint.io/rules/strict-boolean-expressions) | Disallow certain types in boolean expressions. |
201
199
 
202
200
  ### Types
203
201
 
@@ -46,13 +46,13 @@ var NeatlintOptionsDefault = {
46
46
  }
47
47
  },
48
48
  plugins: {},
49
+ extends: [],
49
50
  rules: {
50
51
  "@typescript-eslint/consistent-type-definitions": ["error", "type"],
51
52
  "@typescript-eslint/consistent-type-exports": "error",
52
53
  "@typescript-eslint/consistent-type-imports": "error",
53
54
  "@typescript-eslint/explicit-function-return-type": "error",
54
55
  "@typescript-eslint/explicit-member-accessibility": "error",
55
- "@typescript-eslint/no-inferrable-types": "error",
56
56
  "@typescript-eslint/prefer-readonly": "error",
57
57
  "@typescript-eslint/strict-boolean-expressions": "error"
58
58
  }
@@ -61,13 +61,13 @@ var NeatlintOptionsDefault = {
61
61
  files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"],
62
62
  languageOptions: {},
63
63
  plugins: {},
64
+ extends: [],
64
65
  rules: {
65
66
  "arrow-body-style": "error",
66
67
  "func-style": ["error", "expression", { allowArrowFunctions: true }],
67
68
  "no-duplicate-imports": "error",
68
- "no-empty": "error",
69
69
  "no-restricted-syntax": ["error", "SwitchStatement"],
70
- "no-useless-catch": "error",
70
+ "no-useless-computed-key": "error",
71
71
  "no-useless-concat": "error",
72
72
  "no-useless-constructor": "error",
73
73
  "no-useless-rename": "error",
@@ -1,24 +1,24 @@
1
1
  // src/defaults/NeatlintOptions.default.ts
2
- import TSEslint from "typescript-eslint";
2
+ import TSESLint from "typescript-eslint";
3
3
  var NeatlintOptionsDefault = {
4
4
  ignores: ["./dist/**"],
5
5
  typescript_eslint: {
6
6
  files: ["**/*.ts", "**/*.tsx"],
7
7
  languageOptions: {
8
- parser: TSEslint.parser,
8
+ parser: TSESLint.parser,
9
9
  parserOptions: {
10
10
  project: "./tsconfig.json",
11
11
  sourceType: "module"
12
12
  }
13
13
  },
14
14
  plugins: {},
15
+ extends: [],
15
16
  rules: {
16
17
  "@typescript-eslint/consistent-type-definitions": ["error", "type"],
17
18
  "@typescript-eslint/consistent-type-exports": "error",
18
19
  "@typescript-eslint/consistent-type-imports": "error",
19
20
  "@typescript-eslint/explicit-function-return-type": "error",
20
21
  "@typescript-eslint/explicit-member-accessibility": "error",
21
- "@typescript-eslint/no-inferrable-types": "error",
22
22
  "@typescript-eslint/prefer-readonly": "error",
23
23
  "@typescript-eslint/strict-boolean-expressions": "error"
24
24
  }
@@ -27,13 +27,13 @@ var NeatlintOptionsDefault = {
27
27
  files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"],
28
28
  languageOptions: {},
29
29
  plugins: {},
30
+ extends: [],
30
31
  rules: {
31
32
  "arrow-body-style": "error",
32
33
  "func-style": ["error", "expression", { allowArrowFunctions: true }],
33
34
  "no-duplicate-imports": "error",
34
- "no-empty": "error",
35
35
  "no-restricted-syntax": ["error", "SwitchStatement"],
36
- "no-useless-catch": "error",
36
+ "no-useless-computed-key": "error",
37
37
  "no-useless-concat": "error",
38
38
  "no-useless-constructor": "error",
39
39
  "no-useless-rename": "error",
package/dist/main.js CHANGED
@@ -36,6 +36,7 @@ module.exports = __toCommonJS(main_exports);
36
36
 
37
37
  // src/utils/Neatlint.util.ts
38
38
  var import_typescript_eslint2 = __toESM(require("typescript-eslint"));
39
+ var import_js = __toESM(require("@eslint/js"));
39
40
  var import_lodash = __toESM(require("lodash"));
40
41
 
41
42
  // src/defaults/NeatlintOptions.default.ts
@@ -52,13 +53,13 @@ var NeatlintOptionsDefault = {
52
53
  }
53
54
  },
54
55
  plugins: {},
56
+ extends: [],
55
57
  rules: {
56
58
  "@typescript-eslint/consistent-type-definitions": ["error", "type"],
57
59
  "@typescript-eslint/consistent-type-exports": "error",
58
60
  "@typescript-eslint/consistent-type-imports": "error",
59
61
  "@typescript-eslint/explicit-function-return-type": "error",
60
62
  "@typescript-eslint/explicit-member-accessibility": "error",
61
- "@typescript-eslint/no-inferrable-types": "error",
62
63
  "@typescript-eslint/prefer-readonly": "error",
63
64
  "@typescript-eslint/strict-boolean-expressions": "error"
64
65
  }
@@ -67,13 +68,13 @@ var NeatlintOptionsDefault = {
67
68
  files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"],
68
69
  languageOptions: {},
69
70
  plugins: {},
71
+ extends: [],
70
72
  rules: {
71
73
  "arrow-body-style": "error",
72
74
  "func-style": ["error", "expression", { allowArrowFunctions: true }],
73
75
  "no-duplicate-imports": "error",
74
- "no-empty": "error",
75
76
  "no-restricted-syntax": ["error", "SwitchStatement"],
76
- "no-useless-catch": "error",
77
+ "no-useless-computed-key": "error",
77
78
  "no-useless-concat": "error",
78
79
  "no-useless-constructor": "error",
79
80
  "no-useless-rename": "error",
@@ -93,7 +94,9 @@ var Neatlint = (options = NeatlintOptionsDefault) => {
93
94
  options = import_lodash.default.merge({}, NeatlintOptionsDefault, options);
94
95
  return [
95
96
  { ignores: options.ignores },
96
- ...import_typescript_eslint2.default.configs.strict,
97
+ ...import_typescript_eslint2.default.configs.strictTypeChecked,
98
+ ...import_typescript_eslint2.default.configs.stylisticTypeChecked,
99
+ import_js.default.configs.recommended,
97
100
  {
98
101
  files: options.typescript_eslint.files,
99
102
  languageOptions: options.typescript_eslint.languageOptions,
package/dist/main.mjs CHANGED
@@ -1,28 +1,29 @@
1
1
  // src/utils/Neatlint.util.ts
2
- import TSEslint2 from "typescript-eslint";
2
+ import TSESLint2 from "typescript-eslint";
3
+ import ESLintJS from "@eslint/js";
3
4
  import _ from "lodash";
4
5
 
5
6
  // src/defaults/NeatlintOptions.default.ts
6
- import TSEslint from "typescript-eslint";
7
+ import TSESLint from "typescript-eslint";
7
8
  var NeatlintOptionsDefault = {
8
9
  ignores: ["./dist/**"],
9
10
  typescript_eslint: {
10
11
  files: ["**/*.ts", "**/*.tsx"],
11
12
  languageOptions: {
12
- parser: TSEslint.parser,
13
+ parser: TSESLint.parser,
13
14
  parserOptions: {
14
15
  project: "./tsconfig.json",
15
16
  sourceType: "module"
16
17
  }
17
18
  },
18
19
  plugins: {},
20
+ extends: [],
19
21
  rules: {
20
22
  "@typescript-eslint/consistent-type-definitions": ["error", "type"],
21
23
  "@typescript-eslint/consistent-type-exports": "error",
22
24
  "@typescript-eslint/consistent-type-imports": "error",
23
25
  "@typescript-eslint/explicit-function-return-type": "error",
24
26
  "@typescript-eslint/explicit-member-accessibility": "error",
25
- "@typescript-eslint/no-inferrable-types": "error",
26
27
  "@typescript-eslint/prefer-readonly": "error",
27
28
  "@typescript-eslint/strict-boolean-expressions": "error"
28
29
  }
@@ -31,13 +32,13 @@ var NeatlintOptionsDefault = {
31
32
  files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"],
32
33
  languageOptions: {},
33
34
  plugins: {},
35
+ extends: [],
34
36
  rules: {
35
37
  "arrow-body-style": "error",
36
38
  "func-style": ["error", "expression", { allowArrowFunctions: true }],
37
39
  "no-duplicate-imports": "error",
38
- "no-empty": "error",
39
40
  "no-restricted-syntax": ["error", "SwitchStatement"],
40
- "no-useless-catch": "error",
41
+ "no-useless-computed-key": "error",
41
42
  "no-useless-concat": "error",
42
43
  "no-useless-constructor": "error",
43
44
  "no-useless-rename": "error",
@@ -57,7 +58,9 @@ var Neatlint = (options = NeatlintOptionsDefault) => {
57
58
  options = _.merge({}, NeatlintOptionsDefault, options);
58
59
  return [
59
60
  { ignores: options.ignores },
60
- ...TSEslint2.configs.strict,
61
+ ...TSESLint2.configs.strictTypeChecked,
62
+ ...TSESLint2.configs.stylisticTypeChecked,
63
+ ESLintJS.configs.recommended,
61
64
  {
62
65
  files: options.typescript_eslint.files,
63
66
  languageOptions: options.typescript_eslint.languageOptions,
@@ -4,12 +4,14 @@ type NeatlintOptions = {
4
4
  files: string[];
5
5
  languageOptions: object;
6
6
  plugins: Record<string, unknown>;
7
+ extends: string[];
7
8
  rules: Record<string, string | object>;
8
9
  };
9
10
  eslint: {
10
11
  files: string[];
11
12
  languageOptions: object;
12
13
  plugins: Record<string, unknown>;
14
+ extends: string[];
13
15
  rules: Record<string, string | object>;
14
16
  };
15
17
  };
@@ -4,12 +4,14 @@ type NeatlintOptions = {
4
4
  files: string[];
5
5
  languageOptions: object;
6
6
  plugins: Record<string, unknown>;
7
+ extends: string[];
7
8
  rules: Record<string, string | object>;
8
9
  };
9
10
  eslint: {
10
11
  files: string[];
11
12
  languageOptions: object;
12
13
  plugins: Record<string, unknown>;
14
+ extends: string[];
13
15
  rules: Record<string, string | object>;
14
16
  };
15
17
  };
@@ -34,6 +34,7 @@ __export(Neatlint_util_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(Neatlint_util_exports);
36
36
  var import_typescript_eslint2 = __toESM(require("typescript-eslint"));
37
+ var import_js = __toESM(require("@eslint/js"));
37
38
  var import_lodash = __toESM(require("lodash"));
38
39
 
39
40
  // src/defaults/NeatlintOptions.default.ts
@@ -50,13 +51,13 @@ var NeatlintOptionsDefault = {
50
51
  }
51
52
  },
52
53
  plugins: {},
54
+ extends: [],
53
55
  rules: {
54
56
  "@typescript-eslint/consistent-type-definitions": ["error", "type"],
55
57
  "@typescript-eslint/consistent-type-exports": "error",
56
58
  "@typescript-eslint/consistent-type-imports": "error",
57
59
  "@typescript-eslint/explicit-function-return-type": "error",
58
60
  "@typescript-eslint/explicit-member-accessibility": "error",
59
- "@typescript-eslint/no-inferrable-types": "error",
60
61
  "@typescript-eslint/prefer-readonly": "error",
61
62
  "@typescript-eslint/strict-boolean-expressions": "error"
62
63
  }
@@ -65,13 +66,13 @@ var NeatlintOptionsDefault = {
65
66
  files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"],
66
67
  languageOptions: {},
67
68
  plugins: {},
69
+ extends: [],
68
70
  rules: {
69
71
  "arrow-body-style": "error",
70
72
  "func-style": ["error", "expression", { allowArrowFunctions: true }],
71
73
  "no-duplicate-imports": "error",
72
- "no-empty": "error",
73
74
  "no-restricted-syntax": ["error", "SwitchStatement"],
74
- "no-useless-catch": "error",
75
+ "no-useless-computed-key": "error",
75
76
  "no-useless-concat": "error",
76
77
  "no-useless-constructor": "error",
77
78
  "no-useless-rename": "error",
@@ -91,7 +92,9 @@ var Neatlint = (options = NeatlintOptionsDefault) => {
91
92
  options = import_lodash.default.merge({}, NeatlintOptionsDefault, options);
92
93
  return [
93
94
  { ignores: options.ignores },
94
- ...import_typescript_eslint2.default.configs.strict,
95
+ ...import_typescript_eslint2.default.configs.strictTypeChecked,
96
+ ...import_typescript_eslint2.default.configs.stylisticTypeChecked,
97
+ import_js.default.configs.recommended,
95
98
  {
96
99
  files: options.typescript_eslint.files,
97
100
  languageOptions: options.typescript_eslint.languageOptions,
@@ -1,28 +1,29 @@
1
1
  // src/utils/Neatlint.util.ts
2
- import TSEslint2 from "typescript-eslint";
2
+ import TSESLint2 from "typescript-eslint";
3
+ import ESLintJS from "@eslint/js";
3
4
  import _ from "lodash";
4
5
 
5
6
  // src/defaults/NeatlintOptions.default.ts
6
- import TSEslint from "typescript-eslint";
7
+ import TSESLint from "typescript-eslint";
7
8
  var NeatlintOptionsDefault = {
8
9
  ignores: ["./dist/**"],
9
10
  typescript_eslint: {
10
11
  files: ["**/*.ts", "**/*.tsx"],
11
12
  languageOptions: {
12
- parser: TSEslint.parser,
13
+ parser: TSESLint.parser,
13
14
  parserOptions: {
14
15
  project: "./tsconfig.json",
15
16
  sourceType: "module"
16
17
  }
17
18
  },
18
19
  plugins: {},
20
+ extends: [],
19
21
  rules: {
20
22
  "@typescript-eslint/consistent-type-definitions": ["error", "type"],
21
23
  "@typescript-eslint/consistent-type-exports": "error",
22
24
  "@typescript-eslint/consistent-type-imports": "error",
23
25
  "@typescript-eslint/explicit-function-return-type": "error",
24
26
  "@typescript-eslint/explicit-member-accessibility": "error",
25
- "@typescript-eslint/no-inferrable-types": "error",
26
27
  "@typescript-eslint/prefer-readonly": "error",
27
28
  "@typescript-eslint/strict-boolean-expressions": "error"
28
29
  }
@@ -31,13 +32,13 @@ var NeatlintOptionsDefault = {
31
32
  files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"],
32
33
  languageOptions: {},
33
34
  plugins: {},
35
+ extends: [],
34
36
  rules: {
35
37
  "arrow-body-style": "error",
36
38
  "func-style": ["error", "expression", { allowArrowFunctions: true }],
37
39
  "no-duplicate-imports": "error",
38
- "no-empty": "error",
39
40
  "no-restricted-syntax": ["error", "SwitchStatement"],
40
- "no-useless-catch": "error",
41
+ "no-useless-computed-key": "error",
41
42
  "no-useless-concat": "error",
42
43
  "no-useless-constructor": "error",
43
44
  "no-useless-rename": "error",
@@ -57,7 +58,9 @@ var Neatlint = (options = NeatlintOptionsDefault) => {
57
58
  options = _.merge({}, NeatlintOptionsDefault, options);
58
59
  return [
59
60
  { ignores: options.ignores },
60
- ...TSEslint2.configs.strict,
61
+ ...TSESLint2.configs.strictTypeChecked,
62
+ ...TSESLint2.configs.stylisticTypeChecked,
63
+ ESLintJS.configs.recommended,
61
64
  {
62
65
  files: options.typescript_eslint.files,
63
66
  languageOptions: options.typescript_eslint.languageOptions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neatlint",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Strict ESLint presets for modern TypeScript projects.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/keift/neatlint",
@@ -15,6 +15,7 @@
15
15
  "lint": "eslint ./"
16
16
  },
17
17
  "dependencies": {
18
+ "@eslint/js": "^9.35.0",
18
19
  "@types/lodash": "^4.17.20",
19
20
  "jiti": "^2.5.1",
20
21
  "lodash": "^4.17.21",