@marko/language-server 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -303,494 +303,524 @@ var import_jsdom = require("jsdom");
303
303
  var keyboard = {
304
304
  /**
305
305
  * - Ensures every accesskey attribute value is unique
306
- * - accesskey attribute value should be unique ([url](https://dequeuniversity.com/rules/axe/4.4/accesskeys?application=axeAPI))
306
+ * - accesskey attribute value should be unique ([url](https://dequeuniversity.com/rules/axe/4.8/accesskeys?application=axeAPI))
307
307
  */
308
308
  accesskeys: "accesskeys",
309
309
  /**
310
310
  * - Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content
311
- * - Page must have means to bypass repeated blocks ([url](https://dequeuniversity.com/rules/axe/4.4/bypass?application=axeAPI))
311
+ * - Page must have means to bypass repeated blocks ([url](https://dequeuniversity.com/rules/axe/4.8/bypass?application=axeAPI))
312
312
  */
313
313
  bypass: "bypass",
314
314
  /**
315
315
  * - Ensures elements in the focus order have a role appropriate for interactive content
316
- * - Elements in the focus order should have an appropriate role ([url](https://dequeuniversity.com/rules/axe/4.4/focus-order-semantics?application=axeAPI))
316
+ * - Elements in the focus order should have an appropriate role ([url](https://dequeuniversity.com/rules/axe/4.8/focus-order-semantics?application=axeAPI))
317
317
  */
318
318
  focusOrderSemantics: "focus-order-semantics",
319
319
  /**
320
320
  * - Ensures `<frame>` and `<iframe>` elements with focusable content do not have tabindex=-1
321
- * - Frames with focusable content must not have tabindex=-1 ([url](https://dequeuniversity.com/rules/axe/4.4/frame-focusable-content?application=axeAPI))
321
+ * - Frames with focusable content must not have tabindex=-1 ([url](https://dequeuniversity.com/rules/axe/4.8/frame-focusable-content?application=axeAPI))
322
322
  */
323
323
  frameFocusableContent: "frame-focusable-content",
324
324
  /**
325
325
  * - Ensures interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies
326
- * - Interactive controls must not be nested ([url](https://dequeuniversity.com/rules/axe/4.4/nested-interactive?application=axeAPI))
326
+ * - Interactive controls must not be nested ([url](https://dequeuniversity.com/rules/axe/4.8/nested-interactive?application=axeAPI))
327
327
  */
328
328
  nestedInteractive: "nested-interactive",
329
329
  /**
330
330
  * - Ensures all page content is contained by landmarks
331
- * - All page content should be contained by landmarks ([url](https://dequeuniversity.com/rules/axe/4.4/region?application=axeAPI))
331
+ * - All page content should be contained by landmarks ([url](https://dequeuniversity.com/rules/axe/4.8/region?application=axeAPI))
332
332
  */
333
333
  region: "region",
334
334
  /**
335
335
  * - Ensure elements that have scrollable content are accessible by keyboard
336
- * - Scrollable region must have keyboard access ([url](https://dequeuniversity.com/rules/axe/4.4/scrollable-region-focusable?application=axeAPI))
336
+ * - Scrollable region must have keyboard access ([url](https://dequeuniversity.com/rules/axe/4.8/scrollable-region-focusable?application=axeAPI))
337
337
  */
338
338
  scrollableRegionFocusable: "scrollable-region-focusable",
339
339
  /**
340
340
  * - Ensure all skip links have a focusable target
341
- * - The skip-link target should exist and be focusable ([url](https://dequeuniversity.com/rules/axe/4.4/skip-link?application=axeAPI))
341
+ * - The skip-link target should exist and be focusable ([url](https://dequeuniversity.com/rules/axe/4.8/skip-link?application=axeAPI))
342
342
  */
343
343
  skipLink: "skip-link",
344
344
  /**
345
345
  * - Ensures tabindex attribute values are not greater than 0
346
- * - Elements should not have tabindex greater than zero ([url](https://dequeuniversity.com/rules/axe/4.4/tabindex?application=axeAPI))
346
+ * - Elements should not have tabindex greater than zero ([url](https://dequeuniversity.com/rules/axe/4.8/tabindex?application=axeAPI))
347
347
  */
348
348
  tabindex: "tabindex"
349
349
  };
350
350
  var textAlternatives = {
351
351
  /**
352
352
  * - Ensures `<area>` elements of image maps have alternate text
353
- * - Active `<area>` elements must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.4/area-alt?application=axeAPI))
353
+ * - Active `<area>` elements must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.8/area-alt?application=axeAPI))
354
354
  */
355
355
  areaAlt: "area-alt",
356
356
  /**
357
357
  * - Ensures each HTML document contains a non-empty `<title>` element
358
- * - Documents must have `<title>` element to aid in navigation ([url](https://dequeuniversity.com/rules/axe/4.4/document-title?application=axeAPI))
358
+ * - Documents must have `<title>` element to aid in navigation ([url](https://dequeuniversity.com/rules/axe/4.8/document-title?application=axeAPI))
359
359
  */
360
360
  documentTitle: "document-title",
361
361
  /**
362
362
  * - Ensures `<iframe>` and `<frame>` elements contain a unique title attribute
363
- * - Frames should have a unique title attribute ([url](https://dequeuniversity.com/rules/axe/4.4/frame-title-unique?application=axeAPI))
363
+ * - Frames must have a unique title attribute ([url](https://dequeuniversity.com/rules/axe/4.8/frame-title-unique?application=axeAPI))
364
364
  */
365
365
  frameTitleUnique: "frame-title-unique",
366
366
  /**
367
367
  * - Ensures `<iframe>` and `<frame>` elements have an accessible name
368
- * - Frames must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/frame-title?application=axeAPI))
368
+ * - Frames must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/frame-title?application=axeAPI))
369
369
  */
370
370
  frameTitle: "frame-title",
371
371
  /**
372
372
  * - Ensures `<img>` elements have alternate text or a role of none or presentation
373
- * - Images must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.4/image-alt?application=axeAPI))
373
+ * - Images must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.8/image-alt?application=axeAPI))
374
374
  */
375
375
  imageAlt: "image-alt",
376
376
  /**
377
377
  * - Ensure image alternative is not repeated as text
378
- * - Alternative text of images should not be repeated as text ([url](https://dequeuniversity.com/rules/axe/4.4/image-redundant-alt?application=axeAPI))
378
+ * - Alternative text of images should not be repeated as text ([url](https://dequeuniversity.com/rules/axe/4.8/image-redundant-alt?application=axeAPI))
379
379
  */
380
380
  imageRedundantAlt: "image-redundant-alt",
381
381
  /**
382
382
  * - Ensures `<input type="image">` elements have alternate text
383
- * - Image buttons must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.4/input-image-alt?application=axeAPI))
383
+ * - Image buttons must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.8/input-image-alt?application=axeAPI))
384
384
  */
385
385
  inputImageAlt: "input-image-alt",
386
386
  /**
387
387
  * - Ensures `<object>` elements have alternate text
388
- * - `<object>` elements must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.4/object-alt?application=axeAPI))
388
+ * - `<object>` elements must have alternate text ([url](https://dequeuniversity.com/rules/axe/4.8/object-alt?application=axeAPI))
389
389
  */
390
390
  objectAlt: "object-alt",
391
391
  /**
392
- * - Ensures [role='img'] elements have alternate text
393
- * - [role='img'] elements must have an alternative text ([url](https://dequeuniversity.com/rules/axe/4.4/role-img-alt?application=axeAPI))
392
+ * - Ensures [role="img"] elements have alternate text
393
+ * - [role="img"] elements must have an alternative text ([url](https://dequeuniversity.com/rules/axe/4.8/role-img-alt?application=axeAPI))
394
394
  */
395
395
  roleImgAlt: "role-img-alt",
396
396
  /**
397
397
  * - Ensures that server-side image maps are not used
398
- * - Server-side image maps must not be used ([url](https://dequeuniversity.com/rules/axe/4.4/server-side-image-map?application=axeAPI))
398
+ * - Server-side image maps must not be used ([url](https://dequeuniversity.com/rules/axe/4.8/server-side-image-map?application=axeAPI))
399
399
  */
400
400
  serverSideImageMap: "server-side-image-map",
401
401
  /**
402
402
  * - Ensures `<svg>` elements with an img, graphics-document or graphics-symbol role have an accessible text
403
- * - `<svg>` elements with an img role must have an alternative text ([url](https://dequeuniversity.com/rules/axe/4.4/svg-img-alt?application=axeAPI))
403
+ * - `<svg>` elements with an img role must have an alternative text ([url](https://dequeuniversity.com/rules/axe/4.8/svg-img-alt?application=axeAPI))
404
404
  */
405
405
  svgImgAlt: "svg-img-alt",
406
406
  /**
407
407
  * - Ensures `<video>` elements have captions
408
- * - `<video>` elements must have captions ([url](https://dequeuniversity.com/rules/axe/4.4/video-caption?application=axeAPI))
408
+ * - `<video>` elements must have captions ([url](https://dequeuniversity.com/rules/axe/4.8/video-caption?application=axeAPI))
409
409
  */
410
410
  videoCaption: "video-caption"
411
411
  };
412
412
  var aria = {
413
413
  /**
414
- * - Ensures ARIA attributes are allowed for an element's role
415
- * - Elements must only use allowed ARIA attributes ([url](https://dequeuniversity.com/rules/axe/4.4/aria-allowed-attr?application=axeAPI))
414
+ * - Ensures an element's role supports its ARIA attributes
415
+ * - Elements must only use supported ARIA attributes ([url](https://dequeuniversity.com/rules/axe/4.8/aria-allowed-attr?application=axeAPI))
416
416
  */
417
417
  ariaAllowedAttr: "aria-allowed-attr",
418
418
  /**
419
419
  * - Ensures role attribute has an appropriate value for the element
420
- * - ARIA role should be appropriate for the element ([url](https://dequeuniversity.com/rules/axe/4.4/aria-allowed-role?application=axeAPI))
420
+ * - ARIA role should be appropriate for the element ([url](https://dequeuniversity.com/rules/axe/4.8/aria-allowed-role?application=axeAPI))
421
421
  */
422
422
  ariaAllowedRole: "aria-allowed-role",
423
+ /**
424
+ * - Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent
425
+ * - aria-braille attributes must have a non-braille equivalent ([url](https://dequeuniversity.com/rules/axe/4.8/aria-braille-equivalent?application=axeAPI))
426
+ */
427
+ ariaBrailleEquivalent: "aria-braille-equivalent",
423
428
  /**
424
429
  * - Ensures every ARIA button, link and menuitem has an accessible name
425
- * - ARIA commands must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-command-name?application=axeAPI))
430
+ * - ARIA commands must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-command-name?application=axeAPI))
426
431
  */
427
432
  ariaCommandName: "aria-command-name",
433
+ /**
434
+ * - Ensures ARIA attributes are used as described in the specification of the element's role
435
+ * - ARIA attributes must be used as specified for the element's role ([url](https://dequeuniversity.com/rules/axe/4.8/aria-conditional-attr?application=axeAPI))
436
+ */
437
+ ariaConditionalAttr: "aria-conditional-attr",
438
+ /**
439
+ * - Ensures elements do not use deprecated roles
440
+ * - Deprecated ARIA roles must not be used ([url](https://dequeuniversity.com/rules/axe/4.8/aria-deprecated-role?application=axeAPI))
441
+ */
442
+ ariaDeprecatedRole: "aria-deprecated-role",
428
443
  /**
429
444
  * - Ensures every ARIA dialog and alertdialog node has an accessible name
430
- * - ARIA dialog and alertdialog nodes should have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-dialog-name?application=axeAPI))
445
+ * - ARIA dialog and alertdialog nodes should have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-dialog-name?application=axeAPI))
431
446
  */
432
447
  ariaDialogName: "aria-dialog-name",
433
448
  /**
434
- * - Ensures aria-hidden='true' is not present on the document body.
435
- * - aria-hidden='true' must not be present on the document body ([url](https://dequeuniversity.com/rules/axe/4.4/aria-hidden-body?application=axeAPI))
449
+ * - Ensures aria-hidden="true" is not present on the document body.
450
+ * - aria-hidden="true" must not be present on the document body ([url](https://dequeuniversity.com/rules/axe/4.8/aria-hidden-body?application=axeAPI))
436
451
  */
437
452
  ariaHiddenBody: "aria-hidden-body",
438
453
  /**
439
454
  * - Ensures every ARIA input field has an accessible name
440
- * - ARIA input fields must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-input-field-name?application=axeAPI))
455
+ * - ARIA input fields must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-input-field-name?application=axeAPI))
441
456
  */
442
457
  ariaInputFieldName: "aria-input-field-name",
443
458
  /**
444
459
  * - Ensures every ARIA meter node has an accessible name
445
- * - ARIA meter nodes must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-meter-name?application=axeAPI))
460
+ * - ARIA meter nodes must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-meter-name?application=axeAPI))
446
461
  */
447
462
  ariaMeterName: "aria-meter-name",
448
463
  /**
449
464
  * - Ensures every ARIA progressbar node has an accessible name
450
- * - ARIA progressbar nodes must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-progressbar-name?application=axeAPI))
465
+ * - ARIA progressbar nodes must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-progressbar-name?application=axeAPI))
451
466
  */
452
467
  ariaProgressbarName: "aria-progressbar-name",
468
+ /**
469
+ * - Ensures ARIA attributes are not prohibited for an element's role
470
+ * - Elements must only use permitted ARIA attributes ([url](https://dequeuniversity.com/rules/axe/4.8/aria-prohibited-attr?application=axeAPI))
471
+ */
472
+ ariaProhibitedAttr: "aria-prohibited-attr",
453
473
  /**
454
474
  * - Ensures elements with ARIA roles have all required ARIA attributes
455
- * - Required ARIA attributes must be provided ([url](https://dequeuniversity.com/rules/axe/4.4/aria-required-attr?application=axeAPI))
475
+ * - Required ARIA attributes must be provided ([url](https://dequeuniversity.com/rules/axe/4.8/aria-required-attr?application=axeAPI))
456
476
  */
457
477
  ariaRequiredAttr: "aria-required-attr",
458
478
  /**
459
479
  * - Ensures elements with an ARIA role that require child roles contain them
460
- * - Certain ARIA roles must contain particular children ([url](https://dequeuniversity.com/rules/axe/4.4/aria-required-children?application=axeAPI))
480
+ * - Certain ARIA roles must contain particular children ([url](https://dequeuniversity.com/rules/axe/4.8/aria-required-children?application=axeAPI))
461
481
  */
462
482
  ariaRequiredChildren: "aria-required-children",
463
483
  /**
464
484
  * - Ensures elements with an ARIA role that require parent roles are contained by them
465
- * - Certain ARIA roles must be contained by particular parents ([url](https://dequeuniversity.com/rules/axe/4.4/aria-required-parent?application=axeAPI))
485
+ * - Certain ARIA roles must be contained by particular parents ([url](https://dequeuniversity.com/rules/axe/4.8/aria-required-parent?application=axeAPI))
466
486
  */
467
487
  ariaRequiredParent: "aria-required-parent",
468
488
  /**
469
489
  * - Ensure aria-roledescription is only used on elements with an implicit or explicit role
470
- * - aria-roledescription must be on elements with a semantic role ([url](https://dequeuniversity.com/rules/axe/4.4/aria-roledescription?application=axeAPI))
490
+ * - aria-roledescription must be on elements with a semantic role ([url](https://dequeuniversity.com/rules/axe/4.8/aria-roledescription?application=axeAPI))
471
491
  */
472
492
  ariaRoledescription: "aria-roledescription",
473
493
  /**
474
494
  * - Ensures all elements with a role attribute use a valid value
475
- * - ARIA roles used must conform to valid values ([url](https://dequeuniversity.com/rules/axe/4.4/aria-roles?application=axeAPI))
495
+ * - ARIA roles used must conform to valid values ([url](https://dequeuniversity.com/rules/axe/4.8/aria-roles?application=axeAPI))
476
496
  */
477
497
  ariaRoles: "aria-roles",
478
498
  /**
479
- * - Ensures "role=text" is used on elements with no focusable descendants
480
- * - "role=text" should have no focusable descendants ([url](https://dequeuniversity.com/rules/axe/4.4/aria-text?application=axeAPI))
499
+ * - Ensures role="text" is used on elements with no focusable descendants
500
+ * - "role=text" should have no focusable descendants ([url](https://dequeuniversity.com/rules/axe/4.8/aria-text?application=axeAPI))
481
501
  */
482
502
  ariaText: "aria-text",
483
503
  /**
484
504
  * - Ensures every ARIA toggle field has an accessible name
485
- * - ARIA toggle fields must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-toggle-field-name?application=axeAPI))
505
+ * - ARIA toggle fields must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-toggle-field-name?application=axeAPI))
486
506
  */
487
507
  ariaToggleFieldName: "aria-toggle-field-name",
488
508
  /**
489
509
  * - Ensures every ARIA tooltip node has an accessible name
490
- * - ARIA tooltip nodes must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-tooltip-name?application=axeAPI))
510
+ * - ARIA tooltip nodes must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-tooltip-name?application=axeAPI))
491
511
  */
492
512
  ariaTooltipName: "aria-tooltip-name",
493
513
  /**
494
514
  * - Ensures every ARIA treeitem node has an accessible name
495
- * - ARIA treeitem nodes should have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/aria-treeitem-name?application=axeAPI))
515
+ * - ARIA treeitem nodes should have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/aria-treeitem-name?application=axeAPI))
496
516
  */
497
517
  ariaTreeitemName: "aria-treeitem-name",
498
518
  /**
499
519
  * - Ensures all ARIA attributes have valid values
500
- * - ARIA attributes must conform to valid values ([url](https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr-value?application=axeAPI))
520
+ * - ARIA attributes must conform to valid values ([url](https://dequeuniversity.com/rules/axe/4.8/aria-valid-attr-value?application=axeAPI))
501
521
  */
502
522
  ariaValidAttrValue: "aria-valid-attr-value",
503
523
  /**
504
524
  * - Ensures attributes that begin with aria- are valid ARIA attributes
505
- * - ARIA attributes must conform to valid names ([url](https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr?application=axeAPI))
525
+ * - ARIA attributes must conform to valid names ([url](https://dequeuniversity.com/rules/axe/4.8/aria-valid-attr?application=axeAPI))
506
526
  */
507
527
  ariaValidAttr: "aria-valid-attr",
508
528
  /**
509
- * - Ensures table headers have discernible text
510
- * - Table header text must not be empty ([url](https://dequeuniversity.com/rules/axe/4.4/empty-table-header?application=axeAPI))
511
- */
512
- emptyTableHeader: "empty-table-header",
513
- /**
514
- * - Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger.
515
- * - Elements of role none or presentation should be flagged ([url](https://dequeuniversity.com/rules/axe/4.4/presentation-role-conflict?application=axeAPI))
529
+ * - Elements marked as presentational should not have global ARIA or tabindex to ensure all screen readers ignore them
530
+ * - Ensure elements marked as presentational are consistently ignored ([url](https://dequeuniversity.com/rules/axe/4.8/presentation-role-conflict?application=axeAPI))
516
531
  */
517
532
  presentationRoleConflict: "presentation-role-conflict"
518
533
  };
519
534
  var nameRoleValue = {
520
535
  /**
521
536
  * - Ensures aria-hidden elements are not focusable nor contain focusable elements
522
- * - ARIA hidden element must not be focusable or contain focusable elements ([url](https://dequeuniversity.com/rules/axe/4.4/aria-hidden-focus?application=axeAPI))
537
+ * - ARIA hidden element must not be focusable or contain focusable elements ([url](https://dequeuniversity.com/rules/axe/4.8/aria-hidden-focus?application=axeAPI))
523
538
  */
524
539
  ariaHiddenFocus: "aria-hidden-focus",
525
540
  /**
526
541
  * - Ensures buttons have discernible text
527
- * - Buttons must have discernible text ([url](https://dequeuniversity.com/rules/axe/4.4/button-name?application=axeAPI))
542
+ * - Buttons must have discernible text ([url](https://dequeuniversity.com/rules/axe/4.8/button-name?application=axeAPI))
528
543
  */
529
544
  buttonName: "button-name",
530
545
  /**
531
546
  * - Ensures headings have discernible text
532
- * - Headings should not be empty ([url](https://dequeuniversity.com/rules/axe/4.4/empty-heading?application=axeAPI))
547
+ * - Headings should not be empty ([url](https://dequeuniversity.com/rules/axe/4.8/empty-heading?application=axeAPI))
533
548
  */
534
549
  emptyHeading: "empty-heading",
550
+ /**
551
+ * - Ensures table headers have discernible text
552
+ * - Table header text should not be empty ([url](https://dequeuniversity.com/rules/axe/4.8/empty-table-header?application=axeAPI))
553
+ */
554
+ emptyTableHeader: "empty-table-header",
535
555
  /**
536
556
  * - Ensures input buttons have discernible text
537
- * - Input buttons must have discernible text ([url](https://dequeuniversity.com/rules/axe/4.4/input-button-name?application=axeAPI))
557
+ * - Input buttons must have discernible text ([url](https://dequeuniversity.com/rules/axe/4.8/input-button-name?application=axeAPI))
538
558
  */
539
559
  inputButtonName: "input-button-name",
540
560
  /**
541
561
  * - Ensures links have discernible text
542
- * - Links must have discernible text ([url](https://dequeuniversity.com/rules/axe/4.4/link-name?application=axeAPI))
562
+ * - Links must have discernible text ([url](https://dequeuniversity.com/rules/axe/4.8/link-name?application=axeAPI))
543
563
  */
544
564
  linkName: "link-name"
545
565
  };
546
566
  var timeAndMedia = {
547
567
  /**
548
568
  * - Ensures `<audio>` elements have captions
549
- * - `<audio>` elements must have a captions track ([url](https://dequeuniversity.com/rules/axe/4.4/audio-caption?application=axeAPI))
569
+ * - `<audio>` elements must have a captions track ([url](https://dequeuniversity.com/rules/axe/4.8/audio-caption?application=axeAPI))
550
570
  */
551
571
  audioCaption: "audio-caption",
552
572
  /**
553
573
  * - Ensures `<blink>` elements are not used
554
- * - `<blink>` elements are deprecated and must not be used ([url](https://dequeuniversity.com/rules/axe/4.4/blink?application=axeAPI))
574
+ * - `<blink>` elements are deprecated and must not be used ([url](https://dequeuniversity.com/rules/axe/4.8/blink?application=axeAPI))
555
575
  */
556
576
  blink: "blink",
557
577
  /**
558
- * - Ensures `<meta http-equiv="refresh">` is not used
559
- * - Timed refresh must not exist ([url](https://dequeuniversity.com/rules/axe/4.4/meta-refresh?application=axeAPI))
578
+ * - Ensures `<meta http-equiv="refresh">` is not used for delayed refresh
579
+ * - Delayed refresh must not be used ([url](https://dequeuniversity.com/rules/axe/4.8/meta-refresh-no-exceptions?application=axeAPI))
580
+ */
581
+ metaRefreshNoExceptions: "meta-refresh-no-exceptions",
582
+ /**
583
+ * - Ensures `<meta http-equiv="refresh">` is not used for delayed refresh
584
+ * - Delayed refresh under 20 hours must not be used ([url](https://dequeuniversity.com/rules/axe/4.8/meta-refresh?application=axeAPI))
560
585
  */
561
586
  metaRefresh: "meta-refresh",
562
587
  /**
563
588
  * - Ensures `<video>` or `<audio>` elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio
564
- * - `<video>` or `<audio>` elements must not play automatically ([url](https://dequeuniversity.com/rules/axe/4.4/no-autoplay-audio?application=axeAPI))
589
+ * - `<video>` or `<audio>` elements must not play automatically ([url](https://dequeuniversity.com/rules/axe/4.8/no-autoplay-audio?application=axeAPI))
565
590
  */
566
591
  noAutoplayAudio: "no-autoplay-audio"
567
592
  };
568
593
  var forms = {
569
594
  /**
570
595
  * - Ensure the autocomplete attribute is correct and suitable for the form field
571
- * - autocomplete attribute must be used correctly ([url](https://dequeuniversity.com/rules/axe/4.4/autocomplete-valid?application=axeAPI))
596
+ * - autocomplete attribute must be used correctly ([url](https://dequeuniversity.com/rules/axe/4.8/autocomplete-valid?application=axeAPI))
572
597
  */
573
598
  autocompleteValid: "autocomplete-valid",
574
599
  /**
575
600
  * - Ensures form field does not have multiple label elements
576
- * - Form field must not have multiple label elements ([url](https://dequeuniversity.com/rules/axe/4.4/form-field-multiple-labels?application=axeAPI))
601
+ * - Form field must not have multiple label elements ([url](https://dequeuniversity.com/rules/axe/4.8/form-field-multiple-labels?application=axeAPI))
577
602
  */
578
603
  formFieldMultipleLabels: "form-field-multiple-labels",
579
604
  /**
580
605
  * - Ensures that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes
581
- * - Form elements should have a visible label ([url](https://dequeuniversity.com/rules/axe/4.4/label-title-only?application=axeAPI))
606
+ * - Form elements should have a visible label ([url](https://dequeuniversity.com/rules/axe/4.8/label-title-only?application=axeAPI))
582
607
  */
583
608
  labelTitleOnly: "label-title-only",
584
609
  /**
585
610
  * - Ensures every form element has a label
586
- * - Form elements must have labels ([url](https://dequeuniversity.com/rules/axe/4.4/label?application=axeAPI))
611
+ * - Form elements must have labels ([url](https://dequeuniversity.com/rules/axe/4.8/label?application=axeAPI))
587
612
  */
588
613
  label: "label",
589
614
  /**
590
615
  * - Ensures select element has an accessible name
591
- * - Select element must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/select-name?application=axeAPI))
616
+ * - Select element must have an accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/select-name?application=axeAPI))
592
617
  */
593
618
  selectName: "select-name"
594
619
  };
595
620
  var structure = {
596
621
  /**
597
622
  * - Ensure that text spacing set through style attributes can be adjusted with custom stylesheets
598
- * - Inline text spacing must be adjustable with custom stylesheets ([url](https://dequeuniversity.com/rules/axe/4.4/avoid-inline-spacing?application=axeAPI))
623
+ * - Inline text spacing must be adjustable with custom stylesheets ([url](https://dequeuniversity.com/rules/axe/4.8/avoid-inline-spacing?application=axeAPI))
599
624
  */
600
625
  avoidInlineSpacing: "avoid-inline-spacing",
601
626
  /**
602
627
  * - Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations
603
- * - CSS Media queries must not lock display orientation ([url](https://dequeuniversity.com/rules/axe/4.4/css-orientation-lock?application=axeAPI))
628
+ * - CSS Media queries must not lock display orientation ([url](https://dequeuniversity.com/rules/axe/4.8/css-orientation-lock?application=axeAPI))
604
629
  */
605
630
  cssOrientationLock: "css-orientation-lock",
606
631
  /**
607
632
  * - Ensures `<dl>` elements are structured correctly
608
- * - `<dl>` elements must only directly contain properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements ([url](https://dequeuniversity.com/rules/axe/4.4/definition-list?application=axeAPI))
633
+ * - `<dl>` elements must only directly contain properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements ([url](https://dequeuniversity.com/rules/axe/4.8/definition-list?application=axeAPI))
609
634
  */
610
635
  definitionList: "definition-list",
611
636
  /**
612
637
  * - Ensures `<dt>` and `<dd>` elements are contained by a `<dl>`
613
- * - `<dt>` and `<dd>` elements must be contained by a `<dl>` ([url](https://dequeuniversity.com/rules/axe/4.4/dlitem?application=axeAPI))
638
+ * - `<dt>` and `<dd>` elements must be contained by a `<dl>` ([url](https://dequeuniversity.com/rules/axe/4.8/dlitem?application=axeAPI))
614
639
  */
615
640
  dlitem: "dlitem",
616
641
  /**
617
642
  * - Ensures `<iframe>` and `<frame>` elements contain the axe-core script
618
- * - Frames should be tested with axe-core ([url](https://dequeuniversity.com/rules/axe/4.4/frame-tested?application=axeAPI))
643
+ * - Frames should be tested with axe-core ([url](https://dequeuniversity.com/rules/axe/4.8/frame-tested?application=axeAPI))
619
644
  */
620
645
  frameTested: "frame-tested",
621
646
  /**
622
647
  * - Informs users about hidden content.
623
- * - Hidden content on the page should be analyzed ([url](https://dequeuniversity.com/rules/axe/4.4/hidden-content?application=axeAPI))
648
+ * - Hidden content on the page should be analyzed ([url](https://dequeuniversity.com/rules/axe/4.8/hidden-content?application=axeAPI))
624
649
  */
625
650
  hiddenContent: "hidden-content",
626
651
  /**
627
652
  * - Ensures that lists are structured correctly
628
- * - `<ul>` and `<ol>` must only directly contain `<li>`, `<script>` or `<template>` elements ([url](https://dequeuniversity.com/rules/axe/4.4/list?application=axeAPI))
653
+ * - `<ul>` and `<ol>` must only directly contain `<li>`, `<script>` or `<template>` elements ([url](https://dequeuniversity.com/rules/axe/4.8/list?application=axeAPI))
629
654
  */
630
655
  list: "list",
631
656
  /**
632
657
  * - Ensures `<li>` elements are used semantically
633
- * - `<li>` elements must be contained in a `<ul>` or `<ol>` ([url](https://dequeuniversity.com/rules/axe/4.4/listitem?application=axeAPI))
658
+ * - `<li>` elements must be contained in a `<ul>` or `<ol>` ([url](https://dequeuniversity.com/rules/axe/4.8/listitem?application=axeAPI))
634
659
  */
635
660
  listitem: "listitem"
636
661
  };
637
662
  var parsing = {
638
663
  /**
639
664
  * - Ensures every id attribute value of active elements is unique
640
- * - IDs of active elements must be unique ([url](https://dequeuniversity.com/rules/axe/4.4/duplicate-id-active?application=axeAPI))
665
+ * - IDs of active elements must be unique ([url](https://dequeuniversity.com/rules/axe/4.8/duplicate-id-active?application=axeAPI))
641
666
  */
642
667
  duplicateIdActive: "duplicate-id-active",
643
668
  /**
644
669
  * - Ensures every id attribute value used in ARIA and in labels is unique
645
- * - IDs used in ARIA and labels must be unique ([url](https://dequeuniversity.com/rules/axe/4.4/duplicate-id-aria?application=axeAPI))
670
+ * - IDs used in ARIA and labels must be unique ([url](https://dequeuniversity.com/rules/axe/4.8/duplicate-id-aria?application=axeAPI))
646
671
  */
647
672
  duplicateIdAria: "duplicate-id-aria",
648
673
  /**
649
674
  * - Ensures every id attribute value is unique
650
- * - id attribute value must be unique ([url](https://dequeuniversity.com/rules/axe/4.4/duplicate-id?application=axeAPI))
675
+ * - id attribute value must be unique ([url](https://dequeuniversity.com/rules/axe/4.8/duplicate-id?application=axeAPI))
651
676
  */
652
677
  duplicateId: "duplicate-id",
653
678
  /**
654
679
  * - Ensures `<marquee>` elements are not used
655
- * - `<marquee>` elements are deprecated and must not be used ([url](https://dequeuniversity.com/rules/axe/4.4/marquee?application=axeAPI))
680
+ * - `<marquee>` elements are deprecated and must not be used ([url](https://dequeuniversity.com/rules/axe/4.8/marquee?application=axeAPI))
656
681
  */
657
682
  marquee: "marquee"
658
683
  };
659
684
  var semantics = {
660
685
  /**
661
686
  * - Ensures the order of headings is semantically correct
662
- * - Heading levels should only increase by one ([url](https://dequeuniversity.com/rules/axe/4.4/heading-order?application=axeAPI))
687
+ * - Heading levels should only increase by one ([url](https://dequeuniversity.com/rules/axe/4.8/heading-order?application=axeAPI))
663
688
  */
664
689
  headingOrder: "heading-order",
665
690
  /**
666
691
  * - Ensure that links with the same accessible name serve a similar purpose
667
- * - Links with the same name must have a similar purpose ([url](https://dequeuniversity.com/rules/axe/4.4/identical-links-same-purpose?application=axeAPI))
692
+ * - Links with the same name must have a similar purpose ([url](https://dequeuniversity.com/rules/axe/4.8/identical-links-same-purpose?application=axeAPI))
668
693
  */
669
694
  identicalLinksSamePurpose: "identical-links-same-purpose",
670
695
  /**
671
696
  * - Ensures that elements labelled through their content must have their visible text as part of their accessible name
672
- * - Elements must have their visible text as part of their accessible name ([url](https://dequeuniversity.com/rules/axe/4.4/label-content-name-mismatch?application=axeAPI))
697
+ * - Elements must have their visible text as part of their accessible name ([url](https://dequeuniversity.com/rules/axe/4.8/label-content-name-mismatch?application=axeAPI))
673
698
  */
674
699
  labelContentNameMismatch: "label-content-name-mismatch",
675
700
  /**
676
701
  * - Ensures the banner landmark is at top level
677
- * - Banner landmark should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-banner-is-top-level?application=axeAPI))
702
+ * - Banner landmark should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-banner-is-top-level?application=axeAPI))
678
703
  */
679
704
  landmarkBannerIsTopLevel: "landmark-banner-is-top-level",
680
705
  /**
681
706
  * - Ensures the complementary landmark or aside is at top level
682
- * - Aside should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-complementary-is-top-level?application=axeAPI))
707
+ * - Aside should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-complementary-is-top-level?application=axeAPI))
683
708
  */
684
709
  landmarkComplementaryIsTopLevel: "landmark-complementary-is-top-level",
685
710
  /**
686
711
  * - Ensures the contentinfo landmark is at top level
687
- * - Contentinfo landmark should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-contentinfo-is-top-level?application=axeAPI))
712
+ * - Contentinfo landmark should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-contentinfo-is-top-level?application=axeAPI))
688
713
  */
689
714
  landmarkContentinfoIsTopLevel: "landmark-contentinfo-is-top-level",
690
715
  /**
691
716
  * - Ensures the main landmark is at top level
692
- * - Main landmark should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-main-is-top-level?application=axeAPI))
717
+ * - Main landmark should not be contained in another landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-main-is-top-level?application=axeAPI))
693
718
  */
694
719
  landmarkMainIsTopLevel: "landmark-main-is-top-level",
695
720
  /**
696
721
  * - Ensures the document has at most one banner landmark
697
- * - Document should not have more than one banner landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-no-duplicate-banner?application=axeAPI))
722
+ * - Document should not have more than one banner landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-no-duplicate-banner?application=axeAPI))
698
723
  */
699
724
  landmarkNoDuplicateBanner: "landmark-no-duplicate-banner",
700
725
  /**
701
726
  * - Ensures the document has at most one contentinfo landmark
702
- * - Document should not have more than one contentinfo landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-no-duplicate-contentinfo?application=axeAPI))
727
+ * - Document should not have more than one contentinfo landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-no-duplicate-contentinfo?application=axeAPI))
703
728
  */
704
729
  landmarkNoDuplicateContentinfo: "landmark-no-duplicate-contentinfo",
705
730
  /**
706
731
  * - Ensures the document has at most one main landmark
707
- * - Document should not have more than one main landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-no-duplicate-main?application=axeAPI))
732
+ * - Document should not have more than one main landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-no-duplicate-main?application=axeAPI))
708
733
  */
709
734
  landmarkNoDuplicateMain: "landmark-no-duplicate-main",
710
735
  /**
711
736
  * - Ensures the document has a main landmark
712
- * - Document should have one main landmark ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-one-main?application=axeAPI))
737
+ * - Document should have one main landmark ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-one-main?application=axeAPI))
713
738
  */
714
739
  landmarkOneMain: "landmark-one-main",
715
740
  /**
716
741
  * - Landmarks should have a unique role or role/label/title (i.e. accessible name) combination
717
- * - Ensures landmarks are unique ([url](https://dequeuniversity.com/rules/axe/4.4/landmark-unique?application=axeAPI))
742
+ * - Ensures landmarks are unique ([url](https://dequeuniversity.com/rules/axe/4.8/landmark-unique?application=axeAPI))
718
743
  */
719
744
  landmarkUnique: "landmark-unique",
720
745
  /**
721
746
  * - Ensure bold, italic text and font-size is not used to style `<p>` elements as a heading
722
- * - Styled `<p>` elements must not be used as headings ([url](https://dequeuniversity.com/rules/axe/4.4/p-as-heading?application=axeAPI))
747
+ * - Styled `<p>` elements must not be used as headings ([url](https://dequeuniversity.com/rules/axe/4.8/p-as-heading?application=axeAPI))
723
748
  */
724
749
  pAsHeading: "p-as-heading",
725
750
  /**
726
751
  * - Ensure that the page, or at least one of its frames contains a level-one heading
727
- * - Page should contain a level-one heading ([url](https://dequeuniversity.com/rules/axe/4.4/page-has-heading-one?application=axeAPI))
752
+ * - Page should contain a level-one heading ([url](https://dequeuniversity.com/rules/axe/4.8/page-has-heading-one?application=axeAPI))
728
753
  */
729
754
  pageHasHeadingOne: "page-has-heading-one"
730
755
  };
731
756
  var language = {
732
757
  /**
733
758
  * - Ensures every HTML document has a lang attribute
734
- * - `<html>` element must have a lang attribute ([url](https://dequeuniversity.com/rules/axe/4.4/html-has-lang?application=axeAPI))
759
+ * - `<html>` element must have a lang attribute ([url](https://dequeuniversity.com/rules/axe/4.8/html-has-lang?application=axeAPI))
735
760
  */
736
761
  htmlHasLang: "html-has-lang",
737
762
  /**
738
763
  * - Ensures the lang attribute of the `<html>` element has a valid value
739
- * - `<html>` element must have a valid value for the lang attribute ([url](https://dequeuniversity.com/rules/axe/4.4/html-lang-valid?application=axeAPI))
764
+ * - `<html>` element must have a valid value for the lang attribute ([url](https://dequeuniversity.com/rules/axe/4.8/html-lang-valid?application=axeAPI))
740
765
  */
741
766
  htmlLangValid: "html-lang-valid",
742
767
  /**
743
768
  * - Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page
744
- * - HTML elements with lang and xml:lang must have the same base language ([url](https://dequeuniversity.com/rules/axe/4.4/html-xml-lang-mismatch?application=axeAPI))
769
+ * - HTML elements with lang and xml:lang must have the same base language ([url](https://dequeuniversity.com/rules/axe/4.8/html-xml-lang-mismatch?application=axeAPI))
745
770
  */
746
771
  htmlXmlLangMismatch: "html-xml-lang-mismatch",
747
772
  /**
748
773
  * - Ensures lang attributes have valid values
749
- * - lang attribute must have a valid value ([url](https://dequeuniversity.com/rules/axe/4.4/valid-lang?application=axeAPI))
774
+ * - lang attribute must have a valid value ([url](https://dequeuniversity.com/rules/axe/4.8/valid-lang?application=axeAPI))
750
775
  */
751
776
  validLang: "valid-lang"
752
777
  };
753
778
  var sensoryAndVisualCues = {
754
779
  /**
755
780
  * - Ensures `<meta name="viewport">` can scale a significant amount
756
- * - Users should be able to zoom and scale the text up to 500% ([url](https://dequeuniversity.com/rules/axe/4.4/meta-viewport-large?application=axeAPI))
781
+ * - Users should be able to zoom and scale the text up to 500% ([url](https://dequeuniversity.com/rules/axe/4.8/meta-viewport-large?application=axeAPI))
757
782
  */
758
783
  metaViewportLarge: "meta-viewport-large",
759
784
  /**
760
785
  * - Ensures `<meta name="viewport">` does not disable text scaling and zooming
761
- * - Zooming and scaling should not be disabled ([url](https://dequeuniversity.com/rules/axe/4.4/meta-viewport?application=axeAPI))
786
+ * - Zooming and scaling must not be disabled ([url](https://dequeuniversity.com/rules/axe/4.8/meta-viewport?application=axeAPI))
787
+ */
788
+ metaViewport: "meta-viewport",
789
+ /**
790
+ * - Ensure touch target have sufficient size and space
791
+ * - All touch targets must be 24px large, or leave sufficient space ([url](https://dequeuniversity.com/rules/axe/4.8/target-size?application=axeAPI))
762
792
  */
763
- metaViewport: "meta-viewport"
793
+ targetSize: "target-size"
764
794
  };
765
795
  var tables = {
766
796
  /**
767
797
  * - Ensures the scope attribute is used correctly on tables
768
- * - scope attribute should be used correctly ([url](https://dequeuniversity.com/rules/axe/4.4/scope-attr-valid?application=axeAPI))
798
+ * - scope attribute should be used correctly ([url](https://dequeuniversity.com/rules/axe/4.8/scope-attr-valid?application=axeAPI))
769
799
  */
770
800
  scopeAttrValid: "scope-attr-valid",
771
801
  /**
772
802
  * - Ensure the `<caption>` element does not contain the same text as the summary attribute
773
- * - tables should not have the same summary and caption ([url](https://dequeuniversity.com/rules/axe/4.4/table-duplicate-name?application=axeAPI))
803
+ * - tables should not have the same summary and caption ([url](https://dequeuniversity.com/rules/axe/4.8/table-duplicate-name?application=axeAPI))
774
804
  */
775
805
  tableDuplicateName: "table-duplicate-name",
776
806
  /**
777
807
  * - Ensure that tables with a caption use the `<caption>` element.
778
- * - Data or header cells must not be used to give caption to a data table. ([url](https://dequeuniversity.com/rules/axe/4.4/table-fake-caption?application=axeAPI))
808
+ * - Data or header cells must not be used to give caption to a data table. ([url](https://dequeuniversity.com/rules/axe/4.8/table-fake-caption?application=axeAPI))
779
809
  */
780
810
  tableFakeCaption: "table-fake-caption",
781
811
  /**
782
812
  * - Ensure that each non-empty data cell in a `<table>` larger than 3 by 3 has one or more table headers
783
- * - Non-empty `<td>` elements in larger `<table>` must have an associated table header ([url](https://dequeuniversity.com/rules/axe/4.4/td-has-header?application=axeAPI))
813
+ * - Non-empty `<td>` elements in larger `<table>` must have an associated table header ([url](https://dequeuniversity.com/rules/axe/4.8/td-has-header?application=axeAPI))
784
814
  */
785
815
  tdHasHeader: "td-has-header",
786
816
  /**
787
817
  * - Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table
788
- * - Table cells that use the headers attribute must only refer to cells in the same table ([url](https://dequeuniversity.com/rules/axe/4.4/td-headers-attr?application=axeAPI))
818
+ * - Table cells that use the headers attribute must only refer to cells in the same table ([url](https://dequeuniversity.com/rules/axe/4.8/td-headers-attr?application=axeAPI))
789
819
  */
790
820
  tdHeadersAttr: "td-headers-attr",
791
821
  /**
792
822
  * - Ensure that `<th>` elements and elements with role=columnheader/rowheader have data cells they describe
793
- * - Table headers in a data table must refer to data cells ([url](https://dequeuniversity.com/rules/axe/4.4/th-has-data-cells?application=axeAPI))
823
+ * - Table headers in a data table must refer to data cells ([url](https://dequeuniversity.com/rules/axe/4.8/th-has-data-cells?application=axeAPI))
794
824
  */
795
825
  thHasDataCells: "th-has-data-cells"
796
826
  };
@@ -804,8 +834,8 @@ var rules = {
804
834
  aria.ariaAllowedAttr,
805
835
  aria.ariaAllowedRole,
806
836
  aria.ariaHiddenBody,
807
- aria.ariaRoledescription,
808
837
  aria.ariaRoles,
838
+ aria.ariaDeprecatedRole,
809
839
  aria.presentationRoleConflict,
810
840
  forms.autocompleteValid,
811
841
  forms.formFieldMultipleLabels,
@@ -819,8 +849,6 @@ var rules = {
819
849
  nameRoleValue.ariaHiddenFocus,
820
850
  // Could not find error state
821
851
  nameRoleValue.emptyHeading,
822
- parsing.duplicateIdActive,
823
- parsing.duplicateIdAria,
824
852
  parsing.marquee,
825
853
  semantics.identicalLinksSamePurpose,
826
854
  // Could not find error state
@@ -848,6 +876,7 @@ var rules = {
848
876
  */
849
877
  requiresAttrs: [
850
878
  aria.ariaRequiredAttr,
879
+ aria.ariaProhibitedAttr,
851
880
  language.htmlHasLang,
852
881
  textAlternatives.areaAlt,
853
882
  textAlternatives.imageAlt,
@@ -865,7 +894,7 @@ var rules = {
865
894
  aria.ariaRequiredChildren,
866
895
  aria.ariaText,
867
896
  aria.ariaValidAttrValue,
868
- aria.emptyTableHeader,
897
+ nameRoleValue.emptyTableHeader,
869
898
  keyboard.frameFocusableContent,
870
899
  keyboard.skipLink,
871
900
  nameRoleValue.ariaHiddenFocus,
@@ -878,8 +907,7 @@ var rules = {
878
907
  textAlternatives.documentTitle,
879
908
  textAlternatives.frameTitleUnique,
880
909
  textAlternatives.frameTitle,
881
- textAlternatives.videoCaption,
882
- timeAndMedia.audioCaption
910
+ textAlternatives.videoCaption
883
911
  ],
884
912
  /**
885
913
  * These rules can be resolved by changing content in
@@ -925,18 +953,20 @@ var rules = {
925
953
  * These rules should not be enforced to all users of
926
954
  * the official Marko language server.
927
955
  */
928
- blacklist: [structure.frameTested, parsing.duplicateId],
956
+ blacklist: [structure.frameTested],
929
957
  /**
930
958
  * These are rules that cannot currently be validated, either
931
959
  * because of limitations with JSDom + axe-core or with the
932
960
  * current implementation of the language server.
933
961
  */
934
962
  cannotValidate: [
963
+ parsing.duplicateIdAria,
935
964
  keyboard.scrollableRegionFocusable,
936
965
  semantics.pAsHeading,
937
966
  structure.avoidInlineSpacing,
938
967
  structure.cssOrientationLock,
939
- structure.hiddenContent
968
+ structure.hiddenContent,
969
+ sensoryAndVisualCues.targetSize
940
970
  ]
941
971
  };
942
972
  var separated_rules_default = rules;
@@ -2834,24 +2864,31 @@ function docLocationAtTextSpan(doc, { start, length }) {
2834
2864
  end: doc.positionAt(start + length)
2835
2865
  };
2836
2866
  }
2867
+ function getTSConfigFile(fileName) {
2868
+ let configFile;
2869
+ const docFsDir = import_path7.default.dirname(fileName);
2870
+ const cache = import_language_tools16.Project.getCache(docFsDir);
2871
+ let configFileCache = cache.get(getTSConfigFile);
2872
+ if (configFileCache) {
2873
+ configFile = configFileCache.get(docFsDir);
2874
+ } else {
2875
+ configFileCache = /* @__PURE__ */ new Map();
2876
+ cache.set(getTSConfigFile, configFileCache);
2877
+ }
2878
+ if (!configFile) {
2879
+ configFile = import_tsserverlibrary.default.findConfigFile(fileName, import_tsserverlibrary.default.sys.fileExists, "tsconfig.json") || import_tsserverlibrary.default.findConfigFile(fileName, import_tsserverlibrary.default.sys.fileExists, "jsconfig.json");
2880
+ }
2881
+ configFileCache.set(docFsDir, configFile);
2882
+ return configFile;
2883
+ }
2837
2884
  function getTSProject(docFsPath) {
2838
2885
  var _a;
2839
2886
  let configFile;
2840
2887
  let markoScriptLang = import_language_tools16.ScriptLang.js;
2841
2888
  if (docFsPath) {
2842
- configFile = import_tsserverlibrary.default.findConfigFile(
2843
- docFsPath,
2844
- import_tsserverlibrary.default.sys.fileExists,
2845
- "tsconfig.json"
2846
- );
2847
- if (configFile) {
2889
+ configFile = getTSConfigFile(docFsPath);
2890
+ if (configFile == null ? void 0 : configFile.endsWith("tsconfig.json")) {
2848
2891
  markoScriptLang = import_language_tools16.ScriptLang.ts;
2849
- } else {
2850
- configFile = import_tsserverlibrary.default.findConfigFile(
2851
- docFsPath,
2852
- import_tsserverlibrary.default.sys.fileExists,
2853
- "jsconfig.json"
2854
- );
2855
2892
  }
2856
2893
  }
2857
2894
  const rootDir = configFile && import_path7.default.dirname(configFile) || process.cwd();
@@ -2938,8 +2975,12 @@ function getTSProject(docFsPath) {
2938
2975
  const result = new Set(potentialGlobalFiles);
2939
2976
  for (const doc of getAllOpen()) {
2940
2977
  const { scheme, fsPath } = import_vscode_uri6.URI.parse(doc.uri);
2941
- if (scheme === "file")
2942
- result.add(fsPath);
2978
+ if (scheme === "file") {
2979
+ const projectForFile = getTSProject(fsPath);
2980
+ if (projectForFile === tsProject) {
2981
+ result.add(fsPath);
2982
+ }
2983
+ }
2943
2984
  }
2944
2985
  return [...result];
2945
2986
  },