26 lines
		
	
	
		
			944 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			944 B
		
	
	
	
		
			TypeScript
		
	
	
| import type { Linter } from './interface';
 | |
| import { lintWarning } from './utils';
 | |
| 
 | |
| const linter: Linter = (key, value, info) => {
 | |
|   if (key === 'content') {
 | |
|     // From emotion: https://github.com/emotion-js/emotion/blob/main/packages/serialize/src/index.js#L63
 | |
|     const contentValuePattern =
 | |
|       /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\(|(no-)?(open|close)-quote/;
 | |
|     const contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];
 | |
|     if (
 | |
|       typeof value !== 'string' ||
 | |
|       (contentValues.indexOf(value) === -1 &&
 | |
|         !contentValuePattern.test(value) &&
 | |
|         (value.charAt(0) !== value.charAt(value.length - 1) ||
 | |
|           (value.charAt(0) !== '"' && value.charAt(0) !== "'")))
 | |
|     ) {
 | |
|       lintWarning(
 | |
|         `You seem to be using a value for 'content' without quotes, try replacing it with \`content: '"${value}"'\`.`,
 | |
|         info,
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| export default linter;
 |