@@ -238,8 +238,8 @@ const messages = {
238
238
suggestRemoveDefault : '"remove {{attributeName}}"' ,
239
239
suggestRemoveEmpty : '"remove empty attribute {{attributeName}}"' ,
240
240
suggestRemoveInvalid : '“remove invalid attribute {{reportingValue}}”' ,
241
- suggestRemoveWhitespaces : 'remove whitespaces in “{{reportingValue }}”' ,
242
- suggestRemoveNonString : 'remove non-string value in “{{reportingValue }}”' ,
241
+ suggestRemoveWhitespaces : 'remove whitespaces in “{{attributeName }}”' ,
242
+ suggestRemoveNonString : 'remove non-string value in “{{attributeName }}”' ,
243
243
} ;
244
244
245
245
function splitIntoRangedParts ( node , regex ) {
@@ -259,27 +259,37 @@ function splitIntoRangedParts(node, regex) {
259
259
260
260
function checkLiteralValueNode ( context , attributeName , node , parentNode , parentNodeName ) {
261
261
if ( typeof node . value !== 'string' ) {
262
+ const data = { attributeName, reportingValue : node . value } ;
263
+
262
264
report ( context , messages . onlyStrings , 'onlyStrings' , {
263
265
node,
264
- data : { attributeName } ,
266
+ data,
265
267
suggest : [
266
268
Object . assign (
267
269
getMessageData ( 'suggestRemoveNonString' , messages . suggestRemoveNonString ) ,
268
- { fix ( fixer ) { return fixer . remove ( parentNode ) ; } }
270
+ {
271
+ data,
272
+ fix ( fixer ) { return fixer . remove ( parentNode ) ; } ,
273
+ }
269
274
) ,
270
275
] ,
271
276
} ) ;
272
277
return ;
273
278
}
274
279
275
280
if ( ! node . value . trim ( ) ) {
281
+ const data = { attributeName, reportingValue : node . value } ;
282
+
276
283
report ( context , messages . noEmpty , 'noEmpty' , {
277
284
node,
278
- data : { attributeName } ,
285
+ data,
279
286
suggest : [
280
287
Object . assign (
281
288
getMessageData ( 'suggestRemoveEmpty' , messages . suggestRemoveEmpty ) ,
282
- { fix ( fixer ) { return fixer . remove ( node . parent ) ; } }
289
+ {
290
+ data,
291
+ fix ( fixer ) { return fixer . remove ( node . parent ) ; } ,
292
+ }
283
293
) ,
284
294
] ,
285
295
} ) ;
@@ -291,32 +301,44 @@ function checkLiteralValueNode(context, attributeName, node, parentNode, parentN
291
301
const allowedTags = VALID_VALUES . get ( attributeName ) . get ( singlePart . value ) ;
292
302
const reportingValue = singlePart . reportingValue ;
293
303
294
- const suggest = [
295
- Object . assign (
296
- getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
297
- { fix ( fixer ) { return fixer . removeRange ( singlePart . range ) ; } }
298
- ) ,
299
- ] ;
300
-
301
304
if ( ! allowedTags ) {
302
305
const data = {
303
306
attributeName,
304
307
reportingValue,
305
308
} ;
309
+
306
310
report ( context , messages . neverValid , 'neverValid' , {
307
311
node,
308
312
data,
309
- suggest,
313
+ suggest : [
314
+ Object . assign (
315
+ getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
316
+ {
317
+ data,
318
+ fix ( fixer ) { return fixer . removeRange ( singlePart . range ) ; } ,
319
+ }
320
+ ) ,
321
+ ] ,
310
322
} ) ;
311
323
} else if ( ! allowedTags . has ( parentNodeName ) ) {
324
+ const data = {
325
+ attributeName,
326
+ reportingValue,
327
+ elementName : parentNodeName ,
328
+ } ;
329
+
312
330
report ( context , messages . notValidFor , 'notValidFor' , {
313
331
node,
314
- data : {
315
- attributeName,
316
- reportingValue,
317
- elementName : parentNodeName ,
318
- } ,
319
- suggest,
332
+ data,
333
+ suggest : [
334
+ Object . assign (
335
+ getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
336
+ {
337
+ data,
338
+ fix ( fixer ) { return fixer . removeRange ( singlePart . range ) ; } ,
339
+ }
340
+ ) ,
341
+ ] ,
320
342
} ) ;
321
343
}
322
344
}
@@ -360,7 +382,10 @@ function checkLiteralValueNode(context, attributeName, node, parentNode, parentN
360
382
suggest : [
361
383
Object . assign (
362
384
getMessageData ( 'suggestRemoveWhitespaces' , messages . suggestRemoveWhitespaces ) ,
363
- { fix ( fixer ) { return fixer . removeRange ( whitespacePart . range ) ; } }
385
+ {
386
+ data : { attributeName } ,
387
+ fix ( fixer ) { return fixer . removeRange ( whitespacePart . range ) ; } ,
388
+ }
364
389
) ,
365
390
] ,
366
391
} ) ;
@@ -371,7 +396,10 @@ function checkLiteralValueNode(context, attributeName, node, parentNode, parentN
371
396
suggest : [
372
397
Object . assign (
373
398
getMessageData ( 'suggestRemoveWhitespaces' , messages . suggestRemoveWhitespaces ) ,
374
- { fix ( fixer ) { return fixer . replaceTextRange ( whitespacePart . range , '\u0020' ) ; } }
399
+ {
400
+ data : { attributeName } ,
401
+ fix ( fixer ) { return fixer . replaceTextRange ( whitespacePart . range , '\u0020' ) ; } ,
402
+ }
375
403
) ,
376
404
] ,
377
405
} ) ;
@@ -390,16 +418,21 @@ function checkAttribute(context, node) {
390
418
COMPONENT_ATTRIBUTE_MAP . get ( attribute ) . values ( ) ,
391
419
( tagName ) => `"<${ tagName } >"`
392
420
) . join ( ', ' ) ;
421
+ const data = {
422
+ attributeName : attribute ,
423
+ tagNames,
424
+ } ;
425
+
393
426
report ( context , messages . onlyMeaningfulFor , 'onlyMeaningfulFor' , {
394
427
node : node . name ,
395
- data : {
396
- attributeName : attribute ,
397
- tagNames,
398
- } ,
428
+ data,
399
429
suggest : [
400
430
Object . assign (
401
431
getMessageData ( 'suggestRemoveDefault' , messages . suggestRemoveDefault ) ,
402
- { fix ( fixer ) { return fixer . remove ( node ) ; } }
432
+ {
433
+ data,
434
+ fix ( fixer ) { return fixer . remove ( node ) ; } ,
435
+ }
403
436
) ,
404
437
] ,
405
438
} ) ;
@@ -409,13 +442,15 @@ function checkAttribute(context, node) {
409
442
function fix ( fixer ) { return fixer . remove ( node ) ; }
410
443
411
444
if ( ! node . value ) {
445
+ const data = { attributeName : attribute } ;
446
+
412
447
report ( context , messages . emptyIsMeaningless , 'emptyIsMeaningless' , {
413
448
node : node . name ,
414
- data : { attributeName : attribute } ,
449
+ data,
415
450
suggest : [
416
451
Object . assign (
417
452
getMessageData ( 'suggestRemoveEmpty' , messages . suggestRemoveEmpty ) ,
418
- { fix }
453
+ { data , fix }
419
454
) ,
420
455
] ,
421
456
} ) ;
@@ -435,24 +470,28 @@ function checkAttribute(context, node) {
435
470
}
436
471
437
472
if ( node . value . expression . type === 'ObjectExpression' ) {
473
+ const data = { attributeName : attribute } ;
474
+
438
475
report ( context , messages . onlyStrings , 'onlyStrings' , {
439
476
node : node . value ,
440
- data : { attributeName : attribute } ,
477
+ data,
441
478
suggest : [
442
479
Object . assign (
443
480
getMessageData ( 'suggestRemoveDefault' , messages . suggestRemoveDefault ) ,
444
- { fix }
481
+ { data , fix }
445
482
) ,
446
483
] ,
447
484
} ) ;
448
485
} else if ( node . value . expression . type === 'Identifier' && node . value . expression . name === 'undefined' ) {
486
+ const data = { attributeName : attribute } ;
487
+
449
488
report ( context , messages . onlyStrings , 'onlyStrings' , {
450
489
node : node . value ,
451
- data : { attributeName : attribute } ,
490
+ data,
452
491
suggest : [
453
492
Object . assign (
454
493
getMessageData ( 'suggestRemoveDefault' , messages . suggestRemoveDefault ) ,
455
- { fix }
494
+ { data , fix }
456
495
) ,
457
496
] ,
458
497
} ) ;
@@ -476,16 +515,21 @@ function checkPropValidValue(context, node, value, attribute) {
476
515
477
516
const validTagSet = validTags . get ( value . value ) ;
478
517
if ( ! validTagSet ) {
518
+ const data = {
519
+ attributeName : attribute ,
520
+ reportingValue : value . value ,
521
+ } ;
522
+
479
523
report ( context , messages . neverValid , 'neverValid' , {
480
524
node : value ,
481
- data : {
482
- attributeName : attribute ,
483
- reportingValue : value . value ,
484
- } ,
525
+ data,
485
526
suggest : [
486
527
Object . assign (
487
528
getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
488
- { fix ( fixer ) { return fixer . replaceText ( value , value . raw . replace ( value . value , '' ) ) ; } }
529
+ {
530
+ data,
531
+ fix ( fixer ) { return fixer . replaceText ( value , value . raw . replace ( value . value , '' ) ) ; } ,
532
+ }
489
533
) ,
490
534
] ,
491
535
} ) ;
0 commit comments