eslint-plugin-no-excess-properties 0.0.2 → 0.0.4

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.
@@ -140,7 +140,8 @@ const noExcessProperties = createRule({
140
140
  return;
141
141
  }
142
142
  let returnType = services.getTypeAtLocation(functionNode.returnType.typeAnnotation);
143
- if (tsutils.isTypeReference(returnType)) {
143
+ if (returnType.symbol?.name === "Promise" &&
144
+ tsutils.isTypeReference(returnType)) {
144
145
  const promiseTypes = typeChecker.getTypeArguments(returnType);
145
146
  if (promiseTypes.length === 1) {
146
147
  returnType = promiseTypes[0];
@@ -169,8 +170,8 @@ const noExcessProperties = createRule({
169
170
  messages: {
170
171
  noExcessProperties: "Excess properties '{{ excessPropertyNames }}' found",
171
172
  },
172
- type: "suggestion",
173
173
  schema: [],
174
+ type: "suggestion",
174
175
  },
175
176
  name: "object-literal",
176
177
  });
@@ -1 +1 @@
1
- {"version":3,"file":"object-literal.js","sourceRoot":"","sources":["../src/object-literal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-literal.js","sourceRoot":"","sources":["../src/object-literal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "eslint-plugin-no-excess-properties",
3
3
  "description": "Excess properties are not allowed on object literals",
4
4
  "license": "MIT",
5
- "version": "0.0.2",
5
+ "version": "0.0.4",
6
6
  "homepage": "https://bitbucket.org/unimorphic/eslint-plugin-no-excess-properties",
7
7
  "keywords": [
8
8
  "eslint-plugin",
@@ -1,4 +1,4 @@
1
- import { RuleTester } from "@typescript-eslint/rule-tester";
1
+ import { RuleTester, TestCaseError } from "@typescript-eslint/rule-tester";
2
2
  import objectLiteral from "./object-literal";
3
3
  import path from "path";
4
4
  import * as vitest from "vitest";
@@ -8,6 +8,21 @@ RuleTester.it = vitest.it;
8
8
  RuleTester.itOnly = vitest.it.only;
9
9
  RuleTester.describe = vitest.describe;
10
10
 
11
+ function createError(props: {
12
+ line: number;
13
+ column: number;
14
+ endColumn: number;
15
+ endLine?: number;
16
+ }): TestCaseError<"noExcessProperties"> {
17
+ return {
18
+ column: props.column,
19
+ endColumn: props.endColumn,
20
+ endLine: props.endLine ?? props.line,
21
+ line: props.line,
22
+ messageId: "noExcessProperties",
23
+ };
24
+ }
25
+
11
26
  const ruleTester = new RuleTester({
12
27
  languageOptions: {
13
28
  parserOptions: {
@@ -20,7 +35,7 @@ const ruleTester = new RuleTester({
20
35
  },
21
36
  });
22
37
 
23
- ruleTester.run("no-excess-properties", objectLiteral, {
38
+ ruleTester.run("object-literal", objectLiteral, {
24
39
  valid: [
25
40
  `
26
41
  let test1: { prop1: number; } = { prop1: 1 };
@@ -32,49 +47,6 @@ ruleTester.run("no-excess-properties", objectLiteral, {
32
47
  const test2 = () => ({ prop1: 2 });
33
48
  test1 = test2;
34
49
  `,
35
- `
36
- const test: () => { prop1: number; } = () => ({ prop1: 1 })
37
- `,
38
- `
39
- function test(param1: { prop1: number } | null) {}
40
- test(true ? { prop1: 1 } : null);
41
- `,
42
- `
43
- function test(param1: () => { prop1: number }) {}
44
- test(() => ({ prop1: 1 }));
45
- `,
46
- `
47
- const test1: { prop2: number; } = { prop2: 1 };
48
- const test2: { prop2: number } = { ...test1 };
49
- `,
50
- `
51
- const test1 = { prop4: 2 };
52
- const test2: { prop2: { prop3: { prop4: number; } } } = { prop2: { prop3: test1 } };
53
- `,
54
- `
55
- const test1 = { prop1: 1 };
56
- function test(): { prop1: number } { return test1 }
57
- `,
58
- `
59
- const test1 = { prop1: 1 };
60
- async function test(): Promise<{ prop1: number }> { return test1 }
61
- `,
62
- `
63
- Object.keys({ prop1: 1 })
64
- `,
65
- `
66
- const test2: Record<string, number> & { prop2: 1 } = { prop1: 1 };
67
- `,
68
- `
69
- const test: { param1: number; }[] = [];
70
- test.push({ param1: 1 })
71
- `,
72
- `
73
- interface Test1 { prop1: number }
74
- interface Test2 extends Test1 { prop2: number }
75
- const test1: Test2 = { prop2: 1 }
76
- const test2: Test1 = test1
77
- `,
78
50
  ],
79
51
  invalid: [
80
52
  {
@@ -83,15 +55,7 @@ ruleTester.run("no-excess-properties", objectLiteral, {
83
55
  const test2 = { prop1: 2, prop2: 3 };
84
56
  test1 = test2;
85
57
  `,
86
- errors: [
87
- {
88
- column: 17,
89
- endColumn: 22,
90
- endLine: 4,
91
- line: 4,
92
- messageId: "noExcessProperties",
93
- },
94
- ],
58
+ errors: [createError({ column: 17, endColumn: 22, line: 4 })],
95
59
  },
96
60
  {
97
61
  code: `
@@ -99,119 +63,136 @@ ruleTester.run("no-excess-properties", objectLiteral, {
99
63
  const test2 = () => ({ prop1: 2, prop2: 3 });
100
64
  test1 = test2;
101
65
  `,
102
- errors: [
103
- {
104
- column: 17,
105
- endColumn: 22,
106
- endLine: 4,
107
- line: 4,
108
- messageId: "noExcessProperties",
109
- },
110
- ],
66
+ errors: [createError({ column: 17, endColumn: 22, line: 4 })],
111
67
  },
68
+ ],
69
+ });
70
+
71
+ ruleTester.run("object-literal", objectLiteral, {
72
+ valid: [
73
+ `
74
+ const test: () => { prop1: number; } = () => ({ prop1: 1 })
75
+ `,
76
+ `
77
+ const test1: { prop2: number; } = { prop2: 1 };
78
+ const test2: { prop2: number } = { ...test1 };
79
+ `,
80
+ `
81
+ const test1 = { prop1: 2 };
82
+ const test2: { prop2: { prop3: { prop1: number; } } } = { prop2: { prop3: test1 } };
83
+ `,
84
+ ],
85
+ invalid: [
112
86
  {
113
87
  code: `
114
88
  const test: () => { prop1: number; } = () => ({ prop1: 1, prop2: 2 })
115
89
  `,
116
- errors: [
117
- {
118
- column: 48,
119
- endColumn: 78,
120
- endLine: 2,
121
- line: 2,
122
- messageId: "noExcessProperties",
123
- },
124
- ],
90
+ errors: [createError({ column: 48, endColumn: 78, line: 2 })],
125
91
  },
126
92
  {
127
93
  code: `
128
- function test(param1: { prop1: number } | null) {}
129
- test(true ? { prop1: 1, prop2: 2 } : null);
94
+ const test1: { prop1: number; } = { prop1: 1 };
95
+ const test2: { prop2: number } = { ...test1, prop2: 2 };
130
96
  `,
131
- errors: [
132
- {
133
- column: 14,
134
- endColumn: 50,
135
- endLine: 3,
136
- line: 3,
137
- messageId: "noExcessProperties",
138
- },
139
- ],
97
+ errors: [createError({ column: 42, endColumn: 64, line: 3 })],
140
98
  },
141
99
  {
142
100
  code: `
143
- function test(param1: () => { prop1: number }) {}
144
- test(() => ({ prop1: 1, prop2: 2 }));
101
+ const test1 = { prop1: 1, prop4: 2 };
102
+ const test2: { prop2: { prop3: { prop1: number; } } } = { prop2: { prop3: test1 } };
145
103
  `,
146
- errors: [
147
- {
148
- column: 14,
149
- endColumn: 44,
150
- endLine: 3,
151
- line: 3,
152
- messageId: "noExcessProperties",
153
- },
154
- ],
104
+ errors: [createError({ column: 76, endColumn: 88, line: 3 })],
155
105
  },
106
+ ],
107
+ });
108
+
109
+ ruleTester.run("object-literal", objectLiteral, {
110
+ valid: [
111
+ `
112
+ function test(param1: { prop1: number }) {}
113
+ test({ prop1: 1 });
114
+ `,
115
+ `
116
+ function test(param1: () => { prop1: number }) {}
117
+ test(() => ({ prop1: 1 }));
118
+ `,
119
+ `
120
+ function test(param1: number, param2: { prop1: number } | null) {}
121
+ test(1, true ? { prop1: 1 } : null);
122
+ `,
123
+ ],
124
+ invalid: [
156
125
  {
157
126
  code: `
158
- const test1: { prop1: number; } = { prop1: 1 };
159
- const test2: { prop2: number } = { ...test1, prop2: 2 };
127
+ function test(param1: { prop1: number }) {}
128
+ test({ prop1: 1, prop2: 2 });
160
129
  `,
161
- errors: [
162
- {
163
- column: 42,
164
- endColumn: 64,
165
- endLine: 3,
166
- line: 3,
167
- messageId: "noExcessProperties",
168
- },
169
- ],
130
+ errors: [createError({ column: 14, endColumn: 36, line: 3 })],
170
131
  },
171
132
  {
172
133
  code: `
173
- const test1 = { prop1: 1, prop4: 2 };
174
- const test2: { prop2: { prop3: { prop4: number; } } } = { prop2: { prop3: test1 } };
134
+ function test(param1: () => { prop1: number }) {}
135
+ test(() => ({ prop1: 1, prop2: 2 }));
175
136
  `,
176
- errors: [
177
- {
178
- column: 76,
179
- endColumn: 88,
180
- endLine: 3,
181
- line: 3,
182
- messageId: "noExcessProperties",
183
- },
184
- ],
137
+ errors: [createError({ column: 14, endColumn: 44, line: 3 })],
185
138
  },
139
+ {
140
+ code: `
141
+ function test(param1: number, param2: { prop1: number } | null) {}
142
+ test(1, true ? { prop1: 1, prop2: 2 } : null);
143
+ `,
144
+ errors: [createError({ column: 17, endColumn: 53, line: 3 })],
145
+ },
146
+ ],
147
+ });
148
+
149
+ ruleTester.run("object-literal", objectLiteral, {
150
+ valid: [
151
+ `
152
+ const test1 = { prop1: 1 };
153
+ function test(): { prop1: number } { return test1 }
154
+ `,
155
+ `
156
+ const test1 = { prop1: 1 };
157
+ async function test(): Promise<{ prop1: number }> { return test1 }
158
+ `,
159
+ ],
160
+ invalid: [
186
161
  {
187
162
  code: `
188
163
  const test1 = { prop1: 1, prop2: 2 };
189
164
  function test(): { prop1: number } { return test1 }
190
165
  `,
191
- errors: [
192
- {
193
- column: 53,
194
- endColumn: 58,
195
- endLine: 3,
196
- line: 3,
197
- messageId: "noExcessProperties",
198
- },
199
- ],
166
+ errors: [createError({ column: 53, endColumn: 58, line: 3 })],
200
167
  },
201
168
  {
202
169
  code: `
203
170
  const test1 = { prop1: 1, prop2: 2 };
204
171
  async function test(): Promise<{ prop1: number }> { return test1 }
205
172
  `,
206
- errors: [
207
- {
208
- column: 68,
209
- endColumn: 73,
210
- endLine: 3,
211
- line: 3,
212
- messageId: "noExcessProperties",
213
- },
214
- ],
173
+ errors: [createError({ column: 68, endColumn: 73, line: 3 })],
215
174
  },
216
175
  ],
217
176
  });
177
+
178
+ ruleTester.run("object-literal", objectLiteral, {
179
+ valid: [
180
+ `
181
+ const test: Record<string, number> & { prop2: 1 } = { prop1: 1 };
182
+ `,
183
+ `
184
+ interface Test1 { prop1: number }
185
+ interface Test2 extends Test1 { prop2: number }
186
+ const test1: Test2 = { prop1: 1, prop2: 1 }
187
+ const test2: Test1 = test1
188
+ `,
189
+ `
190
+ Object.keys({ prop1: 1 })
191
+ `,
192
+ `
193
+ const test: { prop1: number; }[] = [];
194
+ test.push({ prop1: 1 })
195
+ `,
196
+ ],
197
+ invalid: [],
198
+ });
@@ -171,7 +171,10 @@ const noExcessProperties = createRule({
171
171
  let returnType = services.getTypeAtLocation(
172
172
  functionNode.returnType.typeAnnotation
173
173
  );
174
- if (tsutils.isTypeReference(returnType)) {
174
+ if (
175
+ (returnType as TypeOptionalSymbol).symbol?.name === "Promise" &&
176
+ tsutils.isTypeReference(returnType)
177
+ ) {
175
178
  const promiseTypes = typeChecker.getTypeArguments(returnType);
176
179
  if (promiseTypes.length === 1) {
177
180
  returnType = promiseTypes[0];
@@ -206,8 +209,8 @@ const noExcessProperties = createRule({
206
209
  messages: {
207
210
  noExcessProperties: "Excess properties '{{ excessPropertyNames }}' found",
208
211
  },
209
- type: "suggestion",
210
212
  schema: [],
213
+ type: "suggestion",
211
214
  },
212
215
  name: "object-literal",
213
216
  });