Skip to content

Commit 08df927

Browse files
authored
Fix: Handle meta: {} as const for TypeScript rules (#219)
1 parent e3587e0 commit 08df927

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

lib/utils.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ function collectInterestingProperties (properties, interestingKeys) {
9797
return properties.reduce((parsedProps, prop) => {
9898
const keyValue = module.exports.getKeyName(prop);
9999
if (interestingKeys.has(keyValue)) {
100-
parsedProps[keyValue] = prop.value;
100+
// In TypeScript, unwrap any usage of `{} as const`.
101+
parsedProps[keyValue] = prop.value.type === 'TSAsExpression' ? prop.value.expression : prop.value;
101102
}
102103
return parsedProps;
103104
}, {});

tests/lib/utils.js

+7
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,13 @@ describe('utils', () => {
139139
isNewStyle: true,
140140
},
141141

142+
// Util function with "{} as const".
143+
'export default createESLintRule({ create() {}, meta: {} as const });': {
144+
create: { type: 'FunctionExpression' },
145+
meta: { type: 'ObjectExpression' },
146+
isNewStyle: true,
147+
},
148+
142149
// Util function from util object
143150
'export default util.createRule<Options, MessageIds>({ create() {}, meta: {} });': {
144151
create: { type: 'FunctionExpression' },

0 commit comments

Comments
 (0)