mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-31 20:57:55 +00:00 
			
		
		
		
	 8483cf0b4b
			
		
	
	8483cf0b4b
	
	
	
		
			
			* chore: use Nx workspace lint rules Closes #3162 * Fix lint * Fix lint on BE * Fix tests --------- Co-authored-by: Charles Bochet <charles@twenty.com>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { ESLintUtils } from '@typescript-eslint/utils';
 | |
| import { isIdentifier } from '@typescript-eslint/utils/ast-utils';
 | |
| 
 | |
| // NOTE: The rule will be available in ESLint configs as "@nx/workspace-no-state-useref"
 | |
| export const RULE_NAME = 'no-state-useref';
 | |
| 
 | |
| export const rule = ESLintUtils.RuleCreator(() => __filename)({
 | |
|   name: RULE_NAME,
 | |
|   meta: {
 | |
|     docs: {
 | |
|       description: "Don't use useRef for state management",
 | |
|     },
 | |
|     messages: {
 | |
|       test: 'test',
 | |
|       noStateUseRef:
 | |
|         "Don't use useRef for state management. See https://docs.twenty.com/developer/frontend/best-practices#do-not-use-useref-to-store-state for more details.",
 | |
|     },
 | |
|     type: 'suggestion',
 | |
|     schema: [],
 | |
|   },
 | |
|   defaultOptions: [],
 | |
|   create: (context) => {
 | |
|     return {
 | |
|       CallExpression: (node) => {
 | |
|         if (!isIdentifier(node.callee) || node.callee.name !== 'useRef') return;
 | |
| 
 | |
|         const typeParam = node.typeArguments?.params[0];
 | |
| 
 | |
|         if (
 | |
|           !typeParam ||
 | |
|           typeParam.type !== 'TSTypeReference' ||
 | |
|           !isIdentifier(typeParam.typeName) ||
 | |
|           !typeParam.typeName.name.match(/^(HTML.*Element|Element)$/)
 | |
|         ) {
 | |
|           context.report({
 | |
|             node,
 | |
|             messageId: 'noStateUseRef',
 | |
|           });
 | |
|           return;
 | |
|         }
 | |
|       },
 | |
|     };
 | |
|   },
 | |
| });
 |