From 99f93d38a7d97d4964a14b9c656010d05ce2decd Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 1 Apr 2026 12:54:46 -0600 Subject: [PATCH] Require documentation for exported variables It's common in various repos to define a function or constant value, assign it to a variable, and export it in one go: ```typescript export const POLLING_INTERVAL = 30 * 1000; export const Banner = () => { return (
{/* ... */}
) }; ``` Exporting these variables signifies they are important in some way, and so we want them to be documented for other engineers. While the second case is already covered by a selector added in a previous commit, the first case is not. This commit corrects that. --- packages/base/rules-snapshot.json | 3 ++- packages/base/src/index.mjs | 2 ++ packages/typescript/rules-snapshot.json | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/base/rules-snapshot.json b/packages/base/rules-snapshot.json index 5995c5e..b556048 100644 --- a/packages/base/rules-snapshot.json +++ b/packages/base/rules-snapshot.json @@ -186,7 +186,8 @@ }, "contexts": [ ":not(Property, NewExpression, CallExpression) > ArrowFunctionExpression", - ":not(Property, NewExpression, CallExpression) > FunctionExpression" + ":not(Property, NewExpression, CallExpression) > FunctionExpression", + "ExportNamedDeclaration:has(> VariableDeclaration)" ] } ], diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs index 88f33e8..c76139a 100644 --- a/packages/base/src/index.mjs +++ b/packages/base/src/index.mjs @@ -411,6 +411,8 @@ const rules = createConfig({ // Function expressions that are not contained within plain objects // or are not arguments to functions or methods ':not(Property, NewExpression, CallExpression) > FunctionExpression', + // Exported variables + 'ExportNamedDeclaration:has(> VariableDeclaration)', ], }, ], diff --git a/packages/typescript/rules-snapshot.json b/packages/typescript/rules-snapshot.json index 7ef9fd1..5dffbbe 100644 --- a/packages/typescript/rules-snapshot.json +++ b/packages/typescript/rules-snapshot.json @@ -201,6 +201,7 @@ "contexts": [ ":not(Property, NewExpression, CallExpression) > ArrowFunctionExpression", ":not(Property, NewExpression, CallExpression) > FunctionExpression", + "ExportNamedDeclaration:has(> VariableDeclaration)", ":not(TSModuleBlock) > TSInterfaceDeclaration", ":not(TSModuleBlock) > TSTypeAliasDeclaration", "TSEnumDeclaration"