From b4971d9c0d5fabe917f2ba2f3c89d09fa916a633 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Fri, 15 Oct 2021 09:06:40 -0400 Subject: [PATCH] Fix: Handle `meta: {} as const` for TypeScript rules --- lib/utils.js | 3 ++- tests/lib/utils.js | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/utils.js b/lib/utils.js index 77779e7c..1f14f926 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -97,7 +97,8 @@ function collectInterestingProperties (properties, interestingKeys) { return properties.reduce((parsedProps, prop) => { const keyValue = module.exports.getKeyName(prop); if (interestingKeys.has(keyValue)) { - parsedProps[keyValue] = prop.value; + // In TypeScript, unwrap any usage of `{} as const`. + parsedProps[keyValue] = prop.value.type === 'TSAsExpression' ? prop.value.expression : prop.value; } return parsedProps; }, {}); diff --git a/tests/lib/utils.js b/tests/lib/utils.js index e4d9240e..dea75d69 100644 --- a/tests/lib/utils.js +++ b/tests/lib/utils.js @@ -139,6 +139,13 @@ describe('utils', () => { isNewStyle: true, }, + // Util function with "{} as const". + 'export default createESLintRule({ create() {}, meta: {} as const });': { + create: { type: 'FunctionExpression' }, + meta: { type: 'ObjectExpression' }, + isNewStyle: true, + }, + // Util function from util object 'export default util.createRule({ create() {}, meta: {} });': { create: { type: 'FunctionExpression' },