eslint-config-typed 3.14.1 → 4.0.1

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 (63) hide show
  1. package/README.md +90 -9
  2. package/dist/plugins/vitest-coding-style/rules/prefer-assert-deep-strict-equal-over-deep-equal.d.mts +6 -0
  3. package/dist/plugins/vitest-coding-style/rules/prefer-assert-deep-strict-equal-over-deep-equal.d.mts.map +1 -0
  4. package/dist/plugins/vitest-coding-style/rules/{prefer-assert-over-assert-ok.mjs → prefer-assert-deep-strict-equal-over-deep-equal.mjs} +8 -8
  5. package/dist/plugins/vitest-coding-style/rules/prefer-assert-deep-strict-equal-over-deep-equal.mjs.map +1 -0
  6. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.d.mts +6 -0
  7. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.d.mts.map +1 -0
  8. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.mjs +41 -0
  9. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.mjs.map +1 -0
  10. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-not-ok.d.mts +6 -0
  11. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-not-ok.d.mts.map +1 -0
  12. package/dist/plugins/vitest-coding-style/rules/{prefer-assert-not-ok-over-assert-is-not-ok.mjs → prefer-assert-is-false-over-assert-not-ok.mjs} +8 -8
  13. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-not-ok.mjs.map +1 -0
  14. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.d.mts +6 -0
  15. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.d.mts.map +1 -0
  16. package/dist/plugins/vitest-coding-style/rules/{prefer-assert-not-ok-over-expect-false.mjs → prefer-assert-is-false-over-expect-false.mjs} +7 -7
  17. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mjs.map +1 -0
  18. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.d.mts +6 -0
  19. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.d.mts.map +1 -0
  20. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.mjs +41 -0
  21. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.mjs.map +1 -0
  22. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.d.mts +6 -0
  23. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.d.mts.map +1 -0
  24. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.mjs +52 -0
  25. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.mjs.map +1 -0
  26. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.d.mts +6 -0
  27. package/dist/plugins/vitest-coding-style/rules/{prefer-assert-not-ok-over-expect-false.d.mts.map → prefer-assert-is-true-over-expect-true.d.mts.map} +1 -1
  28. package/dist/plugins/vitest-coding-style/rules/{prefer-assert-over-expect-true.mjs → prefer-assert-is-true-over-expect-true.mjs} +7 -7
  29. package/dist/plugins/vitest-coding-style/rules/{prefer-assert-not-ok-over-expect-false.mjs.map → prefer-assert-is-true-over-expect-true.mjs.map} +1 -1
  30. package/dist/plugins/vitest-coding-style/rules/rules.d.mts +7 -4
  31. package/dist/plugins/vitest-coding-style/rules/rules.d.mts.map +1 -1
  32. package/dist/plugins/vitest-coding-style/rules/rules.mjs +14 -8
  33. package/dist/plugins/vitest-coding-style/rules/rules.mjs.map +1 -1
  34. package/dist/rules/eslint-vitest-coding-style-rules.d.mts +7 -4
  35. package/dist/rules/eslint-vitest-coding-style-rules.d.mts.map +1 -1
  36. package/dist/rules/eslint-vitest-coding-style-rules.mjs +7 -4
  37. package/dist/rules/eslint-vitest-coding-style-rules.mjs.map +1 -1
  38. package/dist/types/rules/eslint-vitest-coding-style-rules.d.mts +57 -12
  39. package/dist/types/rules/eslint-vitest-coding-style-rules.d.mts.map +1 -1
  40. package/package.json +4 -1
  41. package/src/plugins/vitest-coding-style/rules/original-assert-api-type.test.mts +147 -0
  42. package/src/plugins/vitest-coding-style/rules/prefer-assert-coding-style-rules.test.mts +118 -40
  43. package/src/plugins/vitest-coding-style/rules/{prefer-assert-over-assert-ok.mts → prefer-assert-deep-strict-equal-over-deep-equal.mts} +8 -8
  44. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.mts +53 -0
  45. package/src/plugins/vitest-coding-style/rules/{prefer-assert-not-ok-over-assert-is-not-ok.mts → prefer-assert-is-false-over-assert-not-ok.mts} +9 -8
  46. package/src/plugins/vitest-coding-style/rules/{prefer-assert-not-ok-over-expect-false.mts → prefer-assert-is-false-over-expect-false.mts} +8 -7
  47. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.mts +53 -0
  48. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert.mts +67 -0
  49. package/src/plugins/vitest-coding-style/rules/{prefer-assert-over-expect-true.mts → prefer-assert-is-true-over-expect-true.mts} +8 -7
  50. package/src/plugins/vitest-coding-style/rules/rules.mts +22 -10
  51. package/src/plugins/vitest-coding-style/rules/vitest-coding-style.d.mts +1614 -0
  52. package/src/rules/eslint-vitest-coding-style-rules.mts +10 -4
  53. package/src/types/rules/eslint-vitest-coding-style-rules.mts +60 -12
  54. package/dist/plugins/vitest-coding-style/rules/prefer-assert-not-ok-over-assert-is-not-ok.d.mts +0 -6
  55. package/dist/plugins/vitest-coding-style/rules/prefer-assert-not-ok-over-assert-is-not-ok.d.mts.map +0 -1
  56. package/dist/plugins/vitest-coding-style/rules/prefer-assert-not-ok-over-assert-is-not-ok.mjs.map +0 -1
  57. package/dist/plugins/vitest-coding-style/rules/prefer-assert-not-ok-over-expect-false.d.mts +0 -6
  58. package/dist/plugins/vitest-coding-style/rules/prefer-assert-over-assert-ok.d.mts +0 -6
  59. package/dist/plugins/vitest-coding-style/rules/prefer-assert-over-assert-ok.d.mts.map +0 -1
  60. package/dist/plugins/vitest-coding-style/rules/prefer-assert-over-assert-ok.mjs.map +0 -1
  61. package/dist/plugins/vitest-coding-style/rules/prefer-assert-over-expect-true.d.mts +0 -6
  62. package/dist/plugins/vitest-coding-style/rules/prefer-assert-over-expect-true.d.mts.map +0 -1
  63. package/dist/plugins/vitest-coding-style/rules/prefer-assert-over-expect-true.mjs.map +0 -1
@@ -0,0 +1,53 @@
1
+ import { AST_NODE_TYPES, type TSESLint } from '@typescript-eslint/utils';
2
+ import { Arr } from 'ts-data-forge';
3
+
4
+ type MessageIds = 'preferAssertIsFalseOverAssertNegation';
5
+
6
+ type Options = readonly [];
7
+
8
+ export const preferAssertIsFalseOverNegatedAssertIsTrueRule: TSESLint.RuleModule<
9
+ MessageIds,
10
+ Options
11
+ > = {
12
+ meta: {
13
+ type: 'suggestion',
14
+ docs: {
15
+ description: 'Prefer assert.isFalse(X) over assert.isTrue(!X).',
16
+ },
17
+ fixable: 'code',
18
+ schema: [],
19
+ messages: {
20
+ preferAssertIsFalseOverAssertNegation:
21
+ 'Use assert.isFalse(X) instead of assert.isTrue(!X).',
22
+ },
23
+ },
24
+ defaultOptions: [],
25
+ create: (context) => ({
26
+ CallExpression: (node) => {
27
+ if (
28
+ node.callee.type === AST_NODE_TYPES.MemberExpression &&
29
+ node.callee.object.type === AST_NODE_TYPES.Identifier &&
30
+ node.callee.object.name === 'assert' &&
31
+ node.callee.property.type === AST_NODE_TYPES.Identifier &&
32
+ node.callee.property.name === 'isTrue' &&
33
+ Arr.isArrayOfLength(node.arguments, 1)
34
+ ) {
35
+ const [arg] = node.arguments;
36
+
37
+ if (
38
+ arg.type === AST_NODE_TYPES.UnaryExpression &&
39
+ arg.operator === '!'
40
+ ) {
41
+ const targetText = context.sourceCode.getText(arg.argument);
42
+
43
+ context.report({
44
+ node: arg,
45
+ messageId: 'preferAssertIsFalseOverAssertNegation',
46
+ fix: (fixer) =>
47
+ fixer.replaceText(node, `assert.isFalse(${targetText})`),
48
+ });
49
+ }
50
+ }
51
+ },
52
+ }),
53
+ };
@@ -1,23 +1,24 @@
1
1
  import { AST_NODE_TYPES, type TSESLint } from '@typescript-eslint/utils';
2
2
 
3
- type MessageIds = 'preferAssertOverAssertNotOk';
3
+ type MessageIds = 'preferAssertIsFalseOverAssertNotOk';
4
4
 
5
5
  type Options = readonly [];
6
6
 
7
- export const preferAssertNotOkOverAssertIsNotOkRule: TSESLint.RuleModule<
7
+ export const preferAssertIsFalseOverAssertNotOkRule: TSESLint.RuleModule<
8
8
  MessageIds,
9
9
  Options
10
10
  > = {
11
11
  meta: {
12
12
  type: 'suggestion',
13
13
  docs: {
14
- description: 'Prefer assert.notOk(X) over assert.isNotOk(X).',
14
+ description:
15
+ 'Prefer assert.isFalse(X) over assert.isNotOk(X), assert.notOk(X).',
15
16
  },
16
17
  fixable: 'code',
17
18
  schema: [],
18
19
  messages: {
19
- preferAssertOverAssertNotOk:
20
- 'Use assert.notOk(X) instead of assert.isNotOk(X).',
20
+ preferAssertIsFalseOverAssertNotOk:
21
+ 'Use assert.isFalse(X) instead of assert.isNotOk(X), assert.notOk(X).',
21
22
  },
22
23
  },
23
24
  defaultOptions: [],
@@ -27,14 +28,14 @@ export const preferAssertNotOkOverAssertIsNotOkRule: TSESLint.RuleModule<
27
28
  node.object.type === AST_NODE_TYPES.Identifier &&
28
29
  node.object.name === 'assert' &&
29
30
  node.property.type === AST_NODE_TYPES.Identifier &&
30
- node.property.name === 'isNotOk' &&
31
+ (node.property.name === 'isNotOk' || node.property.name === 'notOk') &&
31
32
  node.parent.type === AST_NODE_TYPES.CallExpression &&
32
33
  node.parent.callee === node
33
34
  ) {
34
35
  context.report({
35
36
  node,
36
- messageId: 'preferAssertOverAssertNotOk',
37
- fix: (fixer) => fixer.replaceText(node, 'assert.notOk'),
37
+ messageId: 'preferAssertIsFalseOverAssertNotOk',
38
+ fix: (fixer) => fixer.replaceText(node, 'assert.isFalse'),
38
39
  });
39
40
  }
40
41
  },
@@ -6,11 +6,11 @@ import {
6
6
  import { Arr } from 'ts-data-forge';
7
7
  import * as ts from 'typescript';
8
8
 
9
- type MessageIds = 'preferAssertNotOkOverExpectFalse';
9
+ type MessageIds = 'preferAssertIsFalseOverExpectFalse';
10
10
 
11
11
  type Options = readonly [];
12
12
 
13
- export const preferAssertNotOkOverExpectFalseRule: TSESLint.RuleModule<
13
+ export const preferAssertIsFalseOverExpectFalseRule: TSESLint.RuleModule<
14
14
  MessageIds,
15
15
  Options
16
16
  > = {
@@ -18,13 +18,13 @@ export const preferAssertNotOkOverExpectFalseRule: TSESLint.RuleModule<
18
18
  type: 'suggestion',
19
19
  docs: {
20
20
  description:
21
- 'Prefer assert.notOk(X) over expect(X).toBe(false) (only if X is boolean)',
21
+ 'Prefer assert.isFalse(X) over expect(X).toBe(false) (only if X is boolean)',
22
22
  },
23
23
  fixable: 'code',
24
24
  schema: [],
25
25
  messages: {
26
- preferAssertNotOkOverExpectFalse:
27
- 'Use assert.notOk(X) instead of expect(X).toBe(false)',
26
+ preferAssertIsFalseOverExpectFalse:
27
+ 'Use assert.isFalse(X) instead of expect(X).toBe(false)',
28
28
  },
29
29
  },
30
30
  defaultOptions: [],
@@ -64,8 +64,9 @@ export const preferAssertNotOkOverExpectFalseRule: TSESLint.RuleModule<
64
64
 
65
65
  context.report({
66
66
  node,
67
- messageId: 'preferAssertNotOkOverExpectFalse',
68
- fix: (fixer) => fixer.replaceText(node, `assert.notOk(${argText})`),
67
+ messageId: 'preferAssertIsFalseOverExpectFalse',
68
+ fix: (fixer) =>
69
+ fixer.replaceText(node, `assert.isFalse(${argText})`),
69
70
  });
70
71
  }
71
72
  },
@@ -0,0 +1,53 @@
1
+ import { AST_NODE_TYPES, type TSESLint } from '@typescript-eslint/utils';
2
+ import { Arr } from 'ts-data-forge';
3
+
4
+ type MessageIds = 'preferAssertIsTrueOverNegatedAssertIsFalse';
5
+
6
+ type Options = readonly [];
7
+
8
+ export const preferAssertIsTrueOverNegatedAssertIsFalseRule: TSESLint.RuleModule<
9
+ MessageIds,
10
+ Options
11
+ > = {
12
+ meta: {
13
+ type: 'suggestion',
14
+ docs: {
15
+ description: 'Prefer assert.isTrue(X) over assert.isFalse(!X).',
16
+ },
17
+ fixable: 'code',
18
+ schema: [],
19
+ messages: {
20
+ preferAssertIsTrueOverNegatedAssertIsFalse:
21
+ 'Use assert.isTrue(X) instead of assert.isFalse(!X).',
22
+ },
23
+ },
24
+ defaultOptions: [],
25
+ create: (context) => ({
26
+ CallExpression: (node) => {
27
+ if (
28
+ node.callee.type === AST_NODE_TYPES.MemberExpression &&
29
+ node.callee.object.type === AST_NODE_TYPES.Identifier &&
30
+ node.callee.object.name === 'assert' &&
31
+ node.callee.property.type === AST_NODE_TYPES.Identifier &&
32
+ node.callee.property.name === 'isFalse' &&
33
+ Arr.isArrayOfLength(node.arguments, 1)
34
+ ) {
35
+ const [arg] = node.arguments;
36
+
37
+ if (
38
+ arg.type === AST_NODE_TYPES.UnaryExpression &&
39
+ arg.operator === '!'
40
+ ) {
41
+ const targetText = context.sourceCode.getText(arg.argument);
42
+
43
+ context.report({
44
+ node: arg,
45
+ messageId: 'preferAssertIsTrueOverNegatedAssertIsFalse',
46
+ fix: (fixer) =>
47
+ fixer.replaceText(node, `assert.isTrue(${targetText})`),
48
+ });
49
+ }
50
+ }
51
+ },
52
+ }),
53
+ };
@@ -0,0 +1,67 @@
1
+ import { AST_NODE_TYPES, type TSESLint } from '@typescript-eslint/utils';
2
+
3
+ type MessageIds = 'preferAssertIsTrueOverAssert';
4
+
5
+ type Options = readonly [];
6
+
7
+ export const preferAssertIsTrueOverAssertRule: TSESLint.RuleModule<
8
+ MessageIds,
9
+ Options
10
+ > = {
11
+ meta: {
12
+ type: 'suggestion',
13
+ docs: {
14
+ description:
15
+ 'Prefer assert.isTrue(X) over assert(X), assert.isOk(X), assert.ok(X).',
16
+ },
17
+ fixable: 'code',
18
+ schema: [],
19
+ messages: {
20
+ preferAssertIsTrueOverAssert:
21
+ 'Use assert.isTrue(X) instead of {{method}}(X).',
22
+ },
23
+ },
24
+ defaultOptions: [],
25
+ create: (context) => ({
26
+ CallExpression: (node) => {
27
+ // assert(X) -> assert.isTrue(X)
28
+ if (
29
+ node.callee.type === AST_NODE_TYPES.Identifier &&
30
+ node.callee.name === 'assert'
31
+ ) {
32
+ if (node.arguments.length === 0) {
33
+ return;
34
+ }
35
+
36
+ context.report({
37
+ node: node.callee,
38
+ messageId: 'preferAssertIsTrueOverAssert',
39
+ data: { method: 'assert' },
40
+ fix: (fixer) => fixer.replaceText(node.callee, 'assert.isTrue'),
41
+ });
42
+
43
+ return;
44
+ }
45
+
46
+ // assert.isOk(X) -> assert.isTrue(X)
47
+
48
+ if (node.callee.type === AST_NODE_TYPES.MemberExpression) {
49
+ const callee = node.callee;
50
+
51
+ if (
52
+ callee.object.type === AST_NODE_TYPES.Identifier &&
53
+ callee.object.name === 'assert' &&
54
+ callee.property.type === AST_NODE_TYPES.Identifier &&
55
+ (callee.property.name === 'isOk' || callee.property.name === 'ok')
56
+ ) {
57
+ context.report({
58
+ node: callee,
59
+ messageId: 'preferAssertIsTrueOverAssert',
60
+ data: { method: `assert.${callee.property.name}` },
61
+ fix: (fixer) => fixer.replaceText(callee, 'assert.isTrue'),
62
+ });
63
+ }
64
+ }
65
+ },
66
+ }),
67
+ };
@@ -6,11 +6,11 @@ import {
6
6
  import { Arr } from 'ts-data-forge';
7
7
  import * as ts from 'typescript';
8
8
 
9
- type MessageIds = 'preferAssertOverExpectTrue';
9
+ type MessageIds = 'preferAssertIsTrueOverExpectTrue';
10
10
 
11
11
  type Options = readonly [];
12
12
 
13
- export const preferAssertOverExpectTrueRule: TSESLint.RuleModule<
13
+ export const preferAssertIsTrueOverExpectTrueRule: TSESLint.RuleModule<
14
14
  MessageIds,
15
15
  Options
16
16
  > = {
@@ -18,13 +18,13 @@ export const preferAssertOverExpectTrueRule: TSESLint.RuleModule<
18
18
  type: 'suggestion',
19
19
  docs: {
20
20
  description:
21
- 'Prefer assert(X) over expect(X).toBe(true) (only if X is boolean)',
21
+ 'Prefer assert.isTrue(X) over expect(X).toBe(true) (only if X is boolean)',
22
22
  },
23
23
  fixable: 'code',
24
24
  schema: [],
25
25
  messages: {
26
- preferAssertOverExpectTrue:
27
- 'Use assert(X) instead of expect(X).toBe(true)',
26
+ preferAssertIsTrueOverExpectTrue:
27
+ 'Use assert.isTrue(X) instead of expect(X).toBe(true)',
28
28
  },
29
29
  },
30
30
  defaultOptions: [],
@@ -64,8 +64,9 @@ export const preferAssertOverExpectTrueRule: TSESLint.RuleModule<
64
64
 
65
65
  context.report({
66
66
  node,
67
- messageId: 'preferAssertOverExpectTrue',
68
- fix: (fixer) => fixer.replaceText(node, `assert(${argText})`),
67
+ messageId: 'preferAssertIsTrueOverExpectTrue',
68
+ fix: (fixer) =>
69
+ fixer.replaceText(node, `assert.isTrue(${argText})`),
69
70
  });
70
71
  }
71
72
  },
@@ -1,18 +1,30 @@
1
1
  import { type ESLintPlugin } from '../../../types/index.mjs';
2
2
  import { noExpectToStrictEqualRule } from './no-expect-to-strict-equal.mjs';
3
- import { preferAssertNotOkOverAssertIsNotOkRule } from './prefer-assert-not-ok-over-assert-is-not-ok.mjs';
4
- import { preferAssertNotOkOverExpectFalseRule } from './prefer-assert-not-ok-over-expect-false.mjs';
5
- import { preferAssertOverAssertOkRule } from './prefer-assert-over-assert-ok.mjs';
6
- import { preferAssertOverExpectTrueRule } from './prefer-assert-over-expect-true.mjs';
3
+ import { preferAssertDeepStrictEqualOverDeepEqualRule } from './prefer-assert-deep-strict-equal-over-deep-equal.mjs';
4
+ import { preferAssertIsFalseOverNegatedAssertIsTrueRule } from './prefer-assert-is-false-over-assert-negation.mjs';
5
+ import { preferAssertIsFalseOverAssertNotOkRule } from './prefer-assert-is-false-over-assert-not-ok.mjs';
6
+ import { preferAssertIsFalseOverExpectFalseRule } from './prefer-assert-is-false-over-expect-false.mjs';
7
+ import { preferAssertIsTrueOverNegatedAssertIsFalseRule } from './prefer-assert-is-true-over-assert-negated-is-false.mjs';
8
+ import { preferAssertIsTrueOverAssertRule } from './prefer-assert-is-true-over-assert.mjs';
9
+ import { preferAssertIsTrueOverExpectTrueRule } from './prefer-assert-is-true-over-expect-true.mjs';
7
10
 
8
11
  export const vitestCodingStyleRules = {
9
12
  'no-expect-to-strict-equal': noExpectToStrictEqualRule,
10
13
 
11
- 'prefer-assert-over-assert-ok': preferAssertOverAssertOkRule,
12
- 'prefer-assert-not-ok-over-assert-is-not-ok':
13
- preferAssertNotOkOverAssertIsNotOkRule,
14
+ 'prefer-assert-deep-strict-equal-over-deep-equal':
15
+ preferAssertDeepStrictEqualOverDeepEqualRule,
14
16
 
15
- 'prefer-assert-over-expect-true': preferAssertOverExpectTrueRule,
16
- 'prefer-assert-not-ok-over-expect-false':
17
- preferAssertNotOkOverExpectFalseRule,
17
+ 'prefer-assert-is-true-over-assert': preferAssertIsTrueOverAssertRule,
18
+ 'prefer-assert-is-false-over-assert-not-ok':
19
+ preferAssertIsFalseOverAssertNotOkRule,
20
+
21
+ 'prefer-assert-is-true-over-expect-true':
22
+ preferAssertIsTrueOverExpectTrueRule,
23
+ 'prefer-assert-is-false-over-expect-false':
24
+ preferAssertIsFalseOverExpectFalseRule,
25
+
26
+ 'prefer-assert-is-false-over-negated-assert-is-true':
27
+ preferAssertIsFalseOverNegatedAssertIsTrueRule,
28
+ 'prefer-assert-is-true-over-negated-assert-is-false':
29
+ preferAssertIsTrueOverNegatedAssertIsFalseRule,
18
30
  } as const satisfies ESLintPlugin['rules'];