Библиотека aria-query предназначена для работы с спецификацией Accessible Rich Internet Applications (ARIA) в JavaScript. Она предоставляет структурированные данные о ролях, свойствах и состояниях ARIA, что позволяет создавать инструменты для валидации доступности интерфейсов и генерации вспомогательных подсказок для разработчиков.
Основой aria-query являются официальные спецификации ARIA, поддерживаемые W3C. Библиотека экспортирует несколько ключевых объектов:
roles — коллекция всех ARIA-ролей с
их характеристиками. Каждая роль описана через:
name: строковое название роли.requiredProps: массив обязательных свойств.superClass: массив родительских ролей, определяющих
наследование атрибутов.abstract: булево значение, определяющее, является ли
роль абстрактной.properties — набор всех
ARIA-свойств и состояний:
type: тип значения (string,
boolean, tristate и др.).values: допустимые значения, если они ограничены.defaultValue: значение по умолчанию, если оно
предусмотрено спецификацией.roles.keys() и
roles.get() — методы для получения списка всех
ролей и их деталей.
Спецификация ARIA постоянно обновляется, что требует синхронизации данных в aria-query. Основные изменения последних версий включают:
Новые роли:
rowgroup и
cell стали обязательными для сложных таблиц и сеток.Обновленные свойства:
aria-checked и aria-selected расширили
допустимые значения, добавив поддержку mixed состояния для
многоуровневых чекбоксов.aria-expanded и aria-pressed получили более
строгие типы данных и правила использования в сочетании с конкретными
ролями.Удаленные и устаревшие элементы:
deprecated, что позволяет инструментам
предупреждать разработчиков о их использовании.Использование aria-query позволяет динамически проверять актуальность ролей и свойств:
import { roles, ARIAPropertyMap } from 'aria-query';
// Получение информации о роли
const buttonRole = roles.get('button');
console.log(buttonRole.requiredProps); // ['aria-pressed'] если актуально
// Проверка доступности свойства для роли
const prop = ARIAPropertyMap.get('aria-checked');
console.log(prop.type); // 'tristate' в последней спецификации
Такой подход обеспечивает строгую типизацию и согласованность с текущими стандартами ARIA. Любые изменения в спецификации, например, добавление новых свойств или корректировка допустимых значений, автоматически отражаются в библиотеке через обновленные версии пакета.
Изменения спецификации напрямую влияют на алгоритмы проверки доступности:
aria-expanded,
aria-live, aria-busy).Многие инструменты линтинга и тестирования доступности полагаются на aria-query как источник правдивых данных:
axe-core,
jest-axe) получают актуальные значения атрибутов ARIA через
API библиотеки.Библиотека обеспечивает:
deprecated: true).Это позволяет постепенно внедрять новые стандарты, не ломая существующий код, и минимизировать ошибки при миграции интерфейсов на актуальные версии ARIA.
aria-query выполняет роль промежуточного слоя между спецификацией ARIA и инструментами разработки, обеспечивая:
Благодаря обновляемым наборам данных роли, свойства и состояния ARIA становятся полностью управляемыми через JavaScript, что упрощает интеграцию стандартов доступности в любые современные веб-приложения.